Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

2009 november 1 Verilog Digital System Design Copyright Z. Navabi, 2006 Verilog Digital System Design Z. Navabi, McGraw-Hill, 2005 2. Fejezet Register.

Hasonló előadás


Az előadások a következő témára: "2009 november 1 Verilog Digital System Design Copyright Z. Navabi, 2006 Verilog Digital System Design Z. Navabi, McGraw-Hill, 2005 2. Fejezet Register."— Előadás másolata:

1 2009 november 1 Verilog Digital System Design Copyright Z. Navabi, 2006 Verilog Digital System Design Z. Navabi, McGraw-Hill, 2005 2. Fejezet Register Transfer szintű tervezés Verilog nyelven Fordította és kiegészítette: Végh János

2 2009 november 2 Verilog Digital System Design Copyright Z. Navabi, 2006 Register Transfer szintű tervezés Verilog nyelven 2.1 RT szintű tervezés 2.1.1 Vezérlés/adat felosztás 2.1.2 Adat partíció 2.1.3 Vezérlés partíció 2.2 A Verilog elemei 2.2.1 Hardver modulok 2.2.2 Primitív példányok 2.2.3 Értékadó utasítások 2.2.4 Feltételek kifejezések 2.2.5 Procedurális blokkok 2.2.6 Modul példányok készítése

3 2009 november 3 Verilog Digital System Design Copyright Z. Navabi, 2006 Register Transfer szintű tervezés Verilog nyelven 2.3 Komponens leírása a Verilogban 2.3.1 Adat komponensek 2.3.2 Vezérlők 2.4 Testbench-ek 2.4.1 Egy egyszerű tesztelő 2.4.2 Taszkok és függvények 2.5 Összefoglalás

4 2009 november 4 Verilog Digital System Design Copyright Z. Navabi, 2006 RT szintű tervezés  RT szintű tervezés:  A terv magas szintű leírásának elkészítése  Felosztás  Architektúra készítése  Busz megtervezése  Az architektúra különböző komponenseinek implementálása  Az RT szintű tervezés lépései:  Vezérlés/Adat felosztás  Adat partíció tervezése  Vezérlési partíció tervezése

5 2009 november 5 Verilog Digital System Design Copyright Z. Navabi, 2006 RT szintű tervezés RT szintű tervezés Vezérlés/adat felosztás AdatpartícióVezérléspartíció

6 2009 november 6 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlés/adat felosztás Vezérlés/adat felosztás

7 2009 november 7 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlés/adat felosztás

8 2009 november 8 Verilog Digital System Design Copyright Z. Navabi, 2006 Adat rész RT szintű tervezés Vezérlés/adat felosztás Data Part VezérléspartícióAdatpartíció

9 2009 november 9 Verilog Digital System Design Copyright Z. Navabi, 2006 Adat partíció

10 2009 november 10 Verilog Digital System Design Copyright Z. Navabi, 2006 Adat partíció module DataPath (DataInput, DataOutput, Flags, Opcodes, ControlSignals); input [15:0] DataInputs; output [15:0] DataOutputs; output Flags,...; output Opcodes,...; input ControlSignals,...; // instantiation of data components //... // interconnection of data components // bussing specification endmodule  Adatút modul : Az adat rész bemenő jelei, amelyeket az adat komponensek és a buszok fogadnak Vezérlő jelek: Az adat rész bemenő jelei, amelyeket az adat komponensek és a buszok fogadnak Kimenő jelek: a vezérlő részhez mennek, ezek lesznek az adatok jelző- és állapotbitjei Busz vezérlőjelek: Ezek választják ki az adatok forrását és az egyik adatkomponenstől a másikhoz vezető huzalt

11 2009 november 11 Verilog Digital System Design Copyright Z. Navabi, 2006 Adat partíció module DataComponent (DataIn, DataOut, ControlSignals); input [7:0] DataIn; output [7:0] DataOut; input ControlSignals; // Depending on ControlSignals // Operate on DataIn and // Produce DataOut endmodule  Az adatkomponens Verilog kódjának részlete Adat komponens: Azt mutatja, hogy a komponens hogyan használja bemenő jeleit, hogy különböző műveleteket végezzen bemenő adatain

12 2009 november 12 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlés rész RT szintű tervezés Vezérlés/adat felosztás Adatpartíció Control Part Vezérléspartíció

13 2009 november 13 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlés partíció Egy vagy több állapotgépből áll, amelyek az áramkör állapotát tárolják. Döntéseket hoz arról, hogy mikor és milyen vezérlőjeleket bocsát ki, az állapottól függően.

14 2009 november 14 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlés partíció module ControlUnit (Flags, Opcodes, ExternalControls, ControlSignals); input Flags,...; input Opcodes,...; input ExternalControls,...; output ControlSignals; // Based on inputs decide : // What control signals to issue, // and what next state to take endmodule  Egy vezérlő blokkvázlata Fogadja az adat partícióból származó vezérlőjeleket

15 2009 november 15 Verilog Digital System Design Copyright Z. Navabi, 2006 A Verilog elemei  Csak a Verilog alapelemeit tárgyaljuk, amelyekkel egy hardver modult már le tudunk írni.

16 2009 november 16 Verilog Digital System Design Copyright Z. Navabi, 2006 A Verilog elemei Hardver modulok Modulpéldányok Primitív példányokÉrtékadóutasítások Feltételeskifejezés Procedurális blokkok

17 2009 november 17 Verilog Digital System Design Copyright Z. Navabi, 2006 Hardver modulok Hardver modulok

18 2009 november 18 Verilog Digital System Design Copyright Z. Navabi, 2006 Hardver modulok module module-name List of ports; Declarations... Functional specification of module...endmodule  Modul specifikáció module kulcsszó module : A Verilog fő komponense endmodule kulcsszó Itt deklaráljuk a változókat, vezetékeket és a modul paramétereit.

19 2009 november 19 Verilog Digital System Design Copyright Z. Navabi, 2006 Hardver modulok  A Verilogban egy modult többféleképpen is leírhatunk.  Különböző absztrakciós szintű leírásoknak vagy a modul különböző részletességű funkcionalitásának felelhet meg.  Egy modul különböző leírásainak nem kell pontosan ugyanúgy viselkedni és az sem követelmény, hogy valamennyi leírás helyesen írjon le egy viselkedésmódot.  Megtárgyaljuk a Verilog hardver modul leírására szolgáló alapvető konstrukcióit.  Bemutatunk egy rövid példát és néhány egyenértékű módot, amivel a Verilog le tudja írni.

20 2009 november 20 Verilog Digital System Design Copyright Z. Navabi, 2006 Primitive Instantiations Primitív példányok

21 2009 november 21 Verilog Digital System Design Copyright Z. Navabi, 2006 Primitív példányok  Egy alap logikai kapukat tartalmazó multiplexer A logikai kapuk is ún. primitívek

22 2009 november 22 Verilog Digital System Design Copyright Z. Navabi, 2006 Primitív példányok module MultiplexerA (input a, b, s, output w); wire a_sel, b_sel, s_bar; not U1 (s_bar, s); and U2 (a_sel, a, s_bar); and U3 (b_sel, b, s); or U4 (w, a_sel, b_sel); endmodule  Példánykészítés primitívekből Példánykészítés primitívekből

23 2009 november 23 Verilog Digital System Design Copyright Z. Navabi, 2006 Értékadó utasítások Értékadóutasítások

24 2009 november 24 Verilog Digital System Design Copyright Z. Navabi, 2006 Értékadó utasítások module MultiplexerB (input a, b, s, output w); assign w = (a & ~s) | (b & s); endmodule  Értékadó utasítás és logikai kifejezés w olyamatosan megkapja a jobb oldali kifejezés értékét w f olyamatosan megkapja a jobb oldali kifejezés értékét Logikai kifejezést használunk a logika leírására

25 2009 november 25 Verilog Digital System Design Copyright Z. Navabi, 2006 Feltételes kifejezés Feltételeskifejezés

26 2009 november 26 Verilog Digital System Design Copyright Z. Navabi, 2006 Feltételes kifejezés module MultiplexerC (input a, b, s, output w); assign w = s ? b : a; endmodule  Értékadó utasítás és feltételes operátor Akkor használjuk, amikor egy unit által végzett művelet túl bonyolult, nem írható le logikai kifejezésekkel Nagyon hatékony komplex funkcionalitás leírására Jól használható egy viselkedés nagyon kompakt leírására

27 2009 november 27 Verilog Digital System Design Copyright Z. Navabi, 2006 Procedurális blokkok Procedurális blokkok

28 2009 november 28 Verilog Digital System Design Copyright Z. Navabi, 2006 Procedurális blokkok module MultiplexerD (input a, b, s, output w); reg w; always @(a, b, s) begin if (s) w = b; else w = a; endendmodule  Procedurális utasítás alwaysutasítás if-elseutasítás Akkor használjuk, amikor egy egység túl bonyolult ahhoz, hogy logikai vagy feltételes kifejezéssel írjuk le Érzékenységi lista

29 2009 november 29 Verilog Digital System Design Copyright Z. Navabi, 2006 Module példánykészítés Modul példányok

30 2009 november 30 Verilog Digital System Design Copyright Z. Navabi, 2006 Modul példányok module ANDOR (input i1, i2, i3, i4, output y); assign y = (i1 & i2) | (i3 & i4); endmodule// module MultiplexerE (input a, b, s, output w); wire s_bar; not U1 (s_bar, s); ANDOR U2 (a, s_bar, s, b, w); endmodule  Modul példányok Definiáljuk az ANDOR modult ANDOR modul példányt készítünk

31 2009 november 31 Verilog Digital System Design Copyright Z. Navabi, 2006 Modul példányok  Multiplexer készítés ANDOR használatával

32 2009 november 32 Verilog Digital System Design Copyright Z. Navabi, 2006 Komponens leírás Verilog nyelven Komponensleírás AdatkomponensVezérlők

33 2009 november 33 Verilog Digital System Design Copyright Z. Navabi, 2006 Adat komponensek Adat komponensek

34 2009 november 34 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop Számláló Teljes összeadó Shift-regiszter ALU Adat komponensek

35 2009 november 35 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop Számláló Teljes összeadó Shift-regiszter ALUMultiplexer Multiplexer

36 2009 november 36 Verilog Digital System Design Copyright Z. Navabi, 2006 Multiplexer `timescale 1ns/100ps module Mux8 (input sel, input [7:0] data1, data0, output [7:0] bus1); output [7:0] bus1); assign #6 bus1 = sel ? data1 : data0; endmodule  Oktálil 2-t az 1-re MUX A 8-bites data0 vagy data1 bemenetet választja ki, a sel bemenetétől függően. Definiál egy 1 ns egységet és egy 100 ps pontosságot. Egy 6-ns késleltetést adunk meg a bus1– hez tartozó valamennyi értékre

37 2009 november 37 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop Számláló Teljes összeadó Shift-regiszter ALUFlip-Flop Flip-Flop

38 2009 november 38 Verilog Digital System Design Copyright Z. Navabi, 2006 Flip-Flop `timescale 1ns/100ps module Flop (reset, din, clk, qout); input reset, din, clk; output qout; reg qout; always @(negedge clk) begin if (reset) qout <= #8 1'b0; else qout <= #8 din; endendmodule  Flipflop leírás Szinkron reset bemenet Egy reg jel képes megtartani értékét az órajel élek között Az adat partícióban flipflopokat használunk jelzőbitként és adattárolásra 8-ns késleltetés Nem-blokkoló értékadás Szoftver-szerű eljárás kódolási stílus A flipflop a clk bemenet lefutó élére aktiválódik A törzs always utasítása a clk lefutó élére hajtódik végre

39 2009 november 39 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop Counter Teljes összeadó Shift-Regiszter ALUSzámláló Számláló

40 2009 november 40 Verilog Digital System Design Copyright Z. Navabi, 2006 Számláló `timescale 1ns/100ps module Counter4 (input reset, clk, output [3:0] count); output [3:0] count); reg [3:0] count; always @(negedge clk) begin always @(negedge clk) begin if (reset) count <= #3 4'b00_00; if (reset) count <= #3 4'b00_00; else count <= #5 count + 1; else count <= #5 count + 1; end endendmodule  Számláló Verilog kódja Az adat partícióban a számlálókat adattárolásra, memória elérésre vagy sorok és veremtárolók ábrázolására használjuk Egy 4-bites modulo-16 számláló Konstans definíció 4-bites regiszter Amikor count eléri a 1111 értéket, a következő felvett érték 10000

41 2009 november 41 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop SzámlálóFull-Adder Shift-Regiszter ALU Teljes összeadó

42 2009 november 42 Verilog Digital System Design Copyright Z. Navabi, 2006 Teljes összeadó `timescale 1ns/100ps module fulladder (input a, b, cin, output sum, cout); assign #5 sum = a ^ b ^ cin; assign #3 cout = (a & b)|(a & cin)|(b & cin); endmodule  Teljes összeadó Verilog kódja Az adat partícióban teljes összeadókat használunk Carry-Chain összeadók építésére Kombinációs áramkör Minden változás 5 ns után történik Minden változás 3 ns után történik Minden kimenet egységes késleltetése: tPLH és tPHL

43 2009 november 43 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop Számláló Teljes összeadó Shift-RegisterALU Shift-Regiszter

44 2009 november 44 Verilog Digital System Design Copyright Z. Navabi, 2006 Shift-Regiszter `timescale 1ns/100ps module ShiftRegister8 (input sl, sr, clk, input [7:0] ParIn, input [1:0] m, output reg [7:0] ParOut); input [1:0] m, output reg [7:0] ParOut); always @(negedge clk) begin case (m) case (m) 0: ParOut <= ParOut; 0: ParOut <= ParOut; 1: ParOut <= {sl, ParOut [7:1]}; 1: ParOut <= {sl, ParOut [7:1]}; 2: ParOut <= {ParOut [6:0], sr}; 2: ParOut <= {ParOut [6:0], sr}; 3: ParOut <= ParIn; 3: ParOut <= ParIn; default: ParOut <= 8'bX; default: ParOut <= 8'bX; endcase endcaseendendmodule 8-bites univerzális shift regiszter Az m[1:0] bemenetek két bites számot képeznek m=0 : semmit sem csinál m=3 : a párhuzamos bemenő regiszter tartalmát tölti a regiszterbe m=1,2: balra és jobbra léptet Case utasítás 4 alternatívával és alapértelmezett értékkel

45 2009 november 45 Verilog Digital System Design Copyright Z. Navabi, 2006 Shift-Regiszter (folytatás) `timescale 1ns/100ps module ShiftRegister8 (input sl, sr, clk, input [7:0] ParIn, input [1:0] m, output reg [7:0] ParOut); input [1:0] m, output reg [7:0] ParOut); always @(negedge clk) begin case (m) case (m) 0: ParOut <= ParOut; 0: ParOut <= ParOut; 1: ParOut <= {sl, ParOut [7:1]}; 1: ParOut <= {sl, ParOut [7:1]}; 2: ParOut <= {ParOut [6:0], sr}; 2: ParOut <= {ParOut [6:0], sr}; 3: ParOut <= ParIn; 3: ParOut <= ParIn; default: ParOut <= 8'bX; default: ParOut <= 8'bX; endcase endcaseendendmodule Jobbra léptetés: Az sl értékét a ParOut bal oldalához csatoljuk Balra léptetjük ParOut értékét

46 2009 november 46 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Kapcsolódások MultiplexerFlip-Flop Számláló Teljes összeadó Shift-Regiszter ALUALU ALU

47 2009 november 47 Verilog Digital System Design Copyright Z. Navabi, 2006 ALU `timescale 1ns/100ps module ALU8 (input [7:0] left, right, input [1:0] mode, input [1:0] mode, output reg [7:0] ALUout); output reg [7:0] ALUout); always @(left, right, mode) begin always @(left, right, mode) begin case (mode) case (mode) 0: ALUout = left + right; 0: ALUout = left + right; 1: ALUout = left - right; 1: ALUout = left - right; 2: ALUout = left & right; 2: ALUout = left & right; 3: ALUout = left | right; 3: ALUout = left | right; default: ALUout = 8'bX; default: ALUout = 8'bX; endcase endcaseendendmodule  Egy 8-bites ALU 2-bites mode bemenet választja ki a 4 funkció egyikét ÖsszeadásKivonásANDOR

48 2009 november 48 Verilog Digital System Design Copyright Z. Navabi, 2006 ALU (folytatás) `timescale 1ns/100ps module ALU8 (input [7:0] left, right, input [1:0] mode, input [1:0] mode, output reg [7:0] ALUout); output reg [7:0] ALUout); always @(left, right, mode) begin always @(left, right, mode) begin case (mode) case (mode) 0: ALUout = left + right; 0: ALUout = left + right; 1: ALUout = left - right; 1: ALUout = left - right; 2: ALUout = left & right; 2: ALUout = left & right; 3: ALUout = left | right; 3: ALUout = left | right; default: ALUout = 8'bX; default: ALUout = 8'bX; endcase endcaseendendmodule  Egy 8-bites ALU ALUout deklarációja output és reg: mivel a procedurális blokkban értéket kap Blokkoló értékadások A default lehetőség csupa X-et tesz ALUOut-ba, ha a mode nem csupa 1-et és 0-t tartalmaz

49 2009 november 49 Verilog Digital System Design Copyright Z. Navabi, 2006Adatkomponensek Interconnection s MultiplexerFlip-Flop Számláló Teljes összeadó Shift-Regiszter ALUKapcsolódások Kapcsolódások

50 2009 november 50 Verilog Digital System Design Copyright Z. Navabi, 2006 Kapcsolódások  MUX8 és ALU elemeket használó részleges hardver A részleges hardver például Mux8 és ALU elemből áll

51 2009 november 51 Verilog Digital System Design Copyright Z. Navabi, 2006 Kapcsolódások ALU8 U1 (.left(Inbus),.right(ABinput),.mode(function),.ALUout(Outbus) );.mode(function),.ALUout(Outbus) ); Mux8 U2 (.sel(select_source),.data1(Aside),.data0(Bside),.bus1 (ABinput));  Verilog példa-kód a részleges hardverre Példánykészítés ALU8 és MUX8 elemekből U1 és U2 : Példány nevek Zárójelek veszik körül a modul példányokat

52 2009 november 52 Verilog Digital System Design Copyright Z. Navabi, 2006 Kapcsolódások ALU8 U1 ( Inbus, ABinput, function, Outbus ); Mux8 U2 ( select_source, Aside, Bside, ABinput );  Rendezett port kapcsolatok A port kapcsolódás egy másik formája A komponens példány aktuális portjai ki vannak zárva A helyi jelek listája ugyanolyan sorrendben van, mint a kapcsolódó portok

53 2009 november 53 Verilog Digital System Design Copyright Z. Navabi, 2006 VezérlőkKomponensleírás AdatkomponensekControllers Vezérlők

54 2009 november 54 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlők  Vezérlő vázlat

55 2009 november 55 Verilog Digital System Design Copyright Z. Navabi, 2006 Vezérlők  Vezérlő:  Az adat partícióhoz van huzalozva és az adatáramlást vezérli.  A vezérlő bemenetei határozzák meg annak következő állapotát és kimeneteit.  Monitorozza a bemeneteket és döntést hoz arról, hogy mikor és milyen jelek hatására assertáljon.  A megfelelő állapotokba való kapcsolással tárolja az áramkör történetét.  Két példa illusztrálja a Verilog használatát állapotgépek leírására:  Szinkronizáló  Minta felismerő

56 2009 november 56 Verilog Digital System Design Copyright Z. Navabi, 2006 VezérlőkVezérlők SzinkronizálóMintakereső

57 2009 november 57 Verilog Digital System Design Copyright Z. Navabi, 2006 Szinkronizáló Vezérlők SynthesizerMintafelismerő

58 2009 november 58 Verilog Digital System Design Copyright Z. Navabi, 2006 Szinkronizáló  adata szinkronizálása

59 2009 november 59 Verilog Digital System Design Copyright Z. Navabi, 2006 Szinkronizáló `timescale 1ns/100ps module Synchronizer (input clk, adata, output reg synched); output reg synched); always @(posedge clk) if (adata == 0) synched <= 0; else synched <= 1; endmodule  Egy egyszerű szinkronizáló áramkör Ha az órajel felfutó élénél adata értéke 1, synched értéke 1 lesz és legalább egy órajel periódusra 1 értékű marad

60 2009 november 60 Verilog Digital System Design Copyright Z. Navabi, 2006 MintafelismerésVezérlők Szinkronizáló SequenceDetector Minta felismerő

61 2009 november 61 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés  Állapotgép leírása Az a bemenetén az 110 mintát keresi Amikor a mintát megtalálja, a w kimenet 1 értékűvé válik és legalább egy órajel idejére 1 is marad

62 2009 november 62 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés  Mintafelismerő állapotgép Kezdeti állapot Az állapotok neve: s0, s1, s2, s3 Az az állapot, amikor az 110 mintát felismertük. Az s3 állapot eléréséhez legalább 3 órajel periódus szükséges Mintafelismerő Moore állapotgép

63 2009 november 63 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés module Detector110 (input a, clk, reset, output w); parameter [1:0] s0=2'b00, s1=2'b01, s2=2'b10, s3=2'b11; reg [1:0] current; always @(posedge clk) begin if (reset) current = s0; if (reset) current = s0; else else case (current) case (current) s0: if (a) current <= s1; else current <= s0; s0: if (a) current <= s1; else current <= s0; s1: if (a) current <= s2; else current <= s0; s1: if (a) current <= s2; else current <= s0; s2: if (a) current <= s2; else current <= s3; s2: if (a) current <= s2; else current <= s3; s3: if (a) current <= s1; else current <= s0; s3: if (a) current <= s1; else current <= s0; endcase endcaseend assign w = (current == s3) ? 1 : 0; endmodule  Az 110 mintafelismerő Verilog kódja

64 2009 november 64 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés module Detector110 (input a, clk, reset, output w); parameter [1:0] s0=2'b00, s1=2'b01, s2=2'b10, s3=2'b11; reg [1:0] current; always @(posedge clk) begin if (reset) current = s0; if (reset) current = s0; else else......................................................  A 110 mintafelismerő Verilog kódja Az állapotgép viselkedési leírása A paraméter deklaráció definiálja az s0, s1, s2, s3 konstansokat Egy 2-bites regiszter

65 2009 november 65 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés...................................................... always @(posedge clk) begin if (reset) current = s0; if (reset) current = s0; else else case (current) case (current) s0: if (a) current <= s1; else current <= s0; s0: if (a) current <= s1; else current <= s0; s1: if (a) current <= s2; else current <= s0; s1: if (a) current <= s2; else current <= s0; s2: if (a) current <= s2; else current <= s3; s2: if (a) current <= s2; else current <= s3; s3: if (a) current <= s1; else current <= s0; s3: if (a) current <= s1; else current <= s0; endcase endcaseend  Az 110 mintafelismerő Verilog kódja Egy if-else utasítás vizsgálja a reset feltételt Ha nem 1 értékű a reset A 4 case lehetőség mindegyike az állapotgép egy állapotának felel meg

66 2009 november 66 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés  Állapot átmenetek a megfelelő Verilog kóddal

67 2009 november 67 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés end........................................................ assign w = (current == s3) ? 1 : 0; endmodule  Az 110 mintafelismerő Verilog kódja 1 –be állítja a w kimenet értékét, amikor az állapotgép eléri az s3 állapotot Az always blokkon kívül: Kombinációs áramkör

68 2009 november 68 Verilog Digital System Design Copyright Z. Navabi, 2006 Testbench-ek Egy egyszerű tesztelő Taszkok ésfüggvények

69 2009 november 69 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő Testbench-ek A Simple Tester Taszkok ésfüggvények Egy egyszerű tesztelő

70 2009 november 70 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő `timescale 1ns/100ps module Detector110Tester; reg aa, clock, rst; wire ww; Detector110 UUT (aa, clock, rst, ww); initial begin initial begin aa = 0; clock = 0; rst = 1; end initial repeat (44) #7 clock = ~clock; initial repeat (15) #23 aa = ~aa; initial begin #31 rst = 1; #23 rst = 0; end always @(ww) if (ww == 1) $display ("A 1 was detected on w at time = %t", $time); endmodule  A Detector110 tesztbench-e

71 2009 november 71 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő `timescale 1ns/100ps module Detector110Tester; reg aa, clock, rst; wire ww; Detector110 UUT (aa, clock, rst, ww);...........................................................................  A Detector110 tesztbench-e A module kulcsszóval kezdődik A többi leírástól eltérően, nincs be- és kimenet A bemeneteket reg-ként deklaráljuk A Detector110 modul példány készítése A kimeneteket wire-ként deklaráljuk

72 2009 november 72 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő.................................................... initial begin aa = 0; clock = 0; rst = 1; end initial repeat (44) #7 clock = ~clock; initial repeat (15) #23 aa = ~aa; initial begin #31 rst = 1; #23 rst = 0; end  A Detector110 tesztbench-e Az initial utasítás állítja elő a bemenetekhez kapcsolt változókba az értékeket. Egy initial utasítás: szekvenciális utasítás, ami egyszer fut le és az utolsó utasítás után megáll Valamennyi initial blokk 0 időnél indul és konkurrens módon fut

73 2009 november 73 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő.................................................... initial begin aa = 0; clock = 0; rst = 1; end initial repeat (44) #7 clock = ~clock; initial repeat (15) #23 aa = ~aa; initial begin #31 rst = 1; #23 rst = 0; end  A Detector110 tesztbench-e A bemenő jelek inicializálására 44 alkalommal ismétli a clock órajel komplementálását 7 ns késleltetéssel, periodikus jelet generálva a clock-on Az aa szintén periodikus jelet generál, de eltérő frekvenciával Vár 31 ns-ot, mielőtt 1 értéket adna az rst-nek

74 2009 november 74 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő.................................................... always @(ww) if (ww == 1) $display ("A 1 was detected on w at time = %t", $time); endmodule  A Detector110 tesztbench-e Bejelenti azokat az időpontokat, amikor a ww változó 1 értéket vesz fel Az always blokk akkor ébred fel, amikor ww megváltozik Ez a megjegyzés a szimulációs környezet „console” vagy „transcript” ablakában jelenik meg Egy Verilog rendszer taszk

75 2009 november 75 Verilog Digital System Design Copyright Z. Navabi, 2006 Taszkok és függvények Tesztbench-ek Egy egyszerű tesztelőTasksAndFunctions Taszkok és függvények

76 2009 november 76 Verilog Digital System Design Copyright Z. Navabi, 2006 Taszkok és függvények  Verilog taszkok és függvények:  Rendszer taszkok bemeneti, kimeneti, kijelzési és időzítési feladatokra  Felhasználó által definiált taszkok és függvények  Taszkok:  A Verilog modulon belüli almodult ábrázol  A task kulcsszóval kezdődik  A törzse csak olyan szekvenciális utasításokat tartalmazhat, mint az if-else és case  Függvények:  Hardver entitások megfeleltetésére használható  Strukturált kód írására használható  Alkalmazásai: logikai függvények ábrázolása, adat és kód konverzió, be- és kimeneti formátumozás

77 2009 november 77 Verilog Digital System Design Copyright Z. Navabi, 2006 Összefoglalás  Ebben a fejezetben bemutattuk:  A Verilog áttekintését és hogy a nyelv hogyan használható tervezésre és RT szintű leírás tesztelésére  Az RT szintű tervezés komponenseit  Olyan kis példákat, amelyek ilyen komponenseket illusztrálnak, és ezzel egyidejűleg a hardver modulok Verilog kódját  Hogyan fejleszthetünk tesztbench-et Verilogban  Az ebben a részben megadott leírások mind szintetizálhatók és egy- az-egyben van hardver megfelelőjük.


Letölteni ppt "2009 november 1 Verilog Digital System Design Copyright Z. Navabi, 2006 Verilog Digital System Design Z. Navabi, McGraw-Hill, 2005 2. Fejezet Register."

Hasonló előadás


Google Hirdetések