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

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
Hatékonyságvizsgálat, dokumentálás
A számítógép felépítése
BIOS A BIOS mozaikszó, a Basic Input/Output System rövidítése, magyar fordításban alapvető ki- és bemeneti rendszerként szokták emlegetni.
Ismétlés. Ismétlés: Adatbázisok megnyitása: OPEN DATABASE adatbázis_név OPEN DATABASE ”adatbázis_név elérési útvonallal” Adattábla megnyitása: USE tábla_név.
Sorrendi (szekvenciális)hálózatok tervezése
Az integrált áramkörök (IC-k) tervezése
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Slide title 70 pt CAPITALS Slide subtitle minimum 30 pt HDL mindset & RTL coding style László Lajkó.
Állapotgépek (state machines)
Az integrált áramkörök méréstechnikája
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
A hardver és a személyi számítógép konfigurációja
Logika Érettségi követelmények:
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Mérés és adatgyűjtés Kincses Zoltán, Mingesz Róbert, Vadai Gergely 10. Óra MA-DAQ – Műszer vezérlése November 12., 15. v
Adatbázis alapú rendszerek
Virtuális méréstechnika MA-DAQ műszer vezérlése 1 Mingesz Róbert V
DS1620 és FPGA segítségével
Prototípus készítés Verilog nyelven VGA – PROM számláló Készítette: Fazekas Gergő,
A Neumann-elvű számítógép jellemzői:
Mikroszámítógépek I 8085 processzor.
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Operációs rendszerek gyakorlat sed, awk parancsok.
Vizuális és web programozás II.
Egy egyszerű gép vázlata
Egy harmadik generációs gép (az IBM 360) felépítése
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
FPGA & Verilog ismertető
Magas szintű hardware szintézis
Klasszikus Programozás a FoxPro-ban
Mikrokontroller (MCU, mikroC)
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Operátorok Értékadások
Integrált áramkörök tesztelése (minőségellenőrzés)
MIKROELEKTRONIKA, VIEEA306
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke 2. zárthelyi megoldásai december 2.
Hernyák Zoltán Programozási Nyelvek II.
A PLC programozási nyelvek bemutatása
Egy első generációs gép (az IAS) felépítése
CUDA C/C++ programozás
A Visual Basic nyelvi elemei
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Programozás, programtervezés
A 2. géptermi beszámoló VBA anyagának összefoglalása
ifin811/ea1 C Programozás: Hardver alapok áttekintése
PÁRHUZAMOS ARCHITEKTÚRÁK – 13 INFORMÁCIÓFELDOLGOZÓ HÁLÓZATOK TUDÁS ALAPÚ MODELLEZÉSE Németh Gábor.
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Az 5,6,7 laborok VBA anyagának összefoglalása
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Hőmérséklet mérése Makan Gergely, Mellár János, Mingesz Róbert V március 23.
1 TÁROLÓ ÁRAMKÖRÖK TAKÁCS BÉLA Mi történik, ha két invertert az alábbi módon összekapcsolunk? Ki1/Be2 Ki2/be A kapcsolásnak.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
1 A számítógépek felépítése jellemzői, működése. 2 A számítógép feladata Az adatok Bevitele Tárolása Feldolgozása Kivitele (eredmény megjelenítése)
Neumann elvű számítógép. Neumann János ► Neumann János december 28-án Budapesten született ► 1930-ban emigrált az USA-ba.
Sz&p prof.
Programozási alapok.
Szekvenciális hálózatok
Programozás C# -ban Elágazások.
Bevezetés a programozásba Algoritmikus gondolkodás
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
PLC PROGRAMOZÁS Bemutató gyakorlat
Grosz Imre f. doc. Sorrendi áramkörök
Algoritmus készítés.
Előadás másolata:

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

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

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 Adat komponensek Vezérlők 2.4 Testbench-ek Egy egyszerű tesztelő Taszkok és függvények 2.5 Összefoglalás

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

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ó

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

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

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ó

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

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

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

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ó

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.

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

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.

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

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

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.

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.

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

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

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

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

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

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

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

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

2009 november 28 Verilog Digital System Design Copyright Z. Navabi, 2006 Procedurális blokkok module MultiplexerD (input a, b, s, output w); reg w; 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

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

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

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

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

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

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

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

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

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

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; 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

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ó

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; clk) begin 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

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ó

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

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

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); 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

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); 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

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

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); right, mode) begin 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

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); right, mode) begin 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

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

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

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

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

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

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

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ő

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

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

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

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); 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

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

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

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

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; 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

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; 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

2009 november 65 Verilog Digital System Design Copyright Z. Navabi, 2006 Mintafelismerés 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

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

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

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

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ő

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 if (ww == 1) $display ("A 1 was detected on w at time = %t", $time); endmodule  A Detector110 tesztbench-e

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

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

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

2009 november 74 Verilog Digital System Design Copyright Z. Navabi, 2006 Egy egyszerű tesztelő 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

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

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

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.