56
Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001 Budapesti Műszaki és Gazdaságtudományi Egyetem A Verilog HDL áttekintése Nagy Gergely, Horváth Péter Elektronikus Eszközök Tanszéke 2014. augusztus 18. Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 1 / 56

A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Budapesti Műszaki és Gazdaságtudományi Egyetem

A Verilog HDL áttekintése

Nagy Gergely, Horváth Péter

Elektronikus Eszközök Tanszéke

2014. augusztus 18.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 1 / 56

Page 2: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Bevezetés

Bevezetés

A Verilog egy hardver leíró nyelv, azaz elektronikus rendszerekszöveges reprezentációja.

Lehetőséget biztosít:digitális architektúrák gyors kipróbálására, verifikációjára,időzítések, protokollok tesztjére,digitális szintézisre, vagyis tényleges áramkör készülautomatizáltan a programkódból.

A Verilog elterjedten használt az iparbanASIC,FPGA

tervezésben egyaránt.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 2 / 56

Page 3: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A nyelv története

A nyelv története

A nyelvet az 1980-as években fejlesztette ki a Gateway DesignAutomation cég.1990-ben a GDA-t felvásárolta a Cadence Design Systems ésnyilvánossá tette a Verilogot.Sokáig nem szabványosították, de az iparban gyorsan elterjedt ésde facto szabvánnyá vált.Az első szabvány 1995-ben készült el: IEEE 1364.A szabvány 2001-ben frissült, fontos, a tervezést kényelmesebbétevő kiegészítesek kerültek bele.Ma az Accelera nevű non-profit cég kezeli a nyelv fejlesztését.Az elmúlt évtizedben több változata is elkészült:

SystemVerilog: rendszertervezésre specializált verzió,Verilog AMS: analóg-digitális, vegyes jelű rendszerek (mixed-signal)leírására alkalmas.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 3 / 56

Page 4: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Az RTL szint

Az RTL szint I.

A nyelv kifejlesztésének az oka az volt, hogy a 80-as évekretúlságosan bonyolulttá váltak a digitális rendszerek a manuálistervezéshez.

El kellett rugaszkodni az áramköri szinttől ahhoz, hogyátláthatóak maradjanak a tervek.

Olyan szint kellett, ami

a technikai (technológia, kapcsolás) részletekkel nem törődik,

ugyanakkor nem túl absztrakt ahhoz, hogy hardverre lehessenautomatikusan fordítani.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 4 / 56

Page 5: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Az RTL szint

Az RTL szint II.

A megoldás a Register Transfer Level (RTL) lett, amelyen:

regisztereket definiálunk,

leírjuk rajtuk végzett műveleteket

és a köztük lévő adatutakat.

RTL szinten lehetőség van

folytonos értékadásra: a kimeneti jelek folyamatosan követik abemenetek változását – ezzel kombinációs logikák írhatóak le,

időzített értékadásra: a kimenetek bizonyos események (fel/lefutóél, értékváltozás) hatására frissülnek – így sorrendi hálózatok jönneklétre.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 5 / 56

Page 6: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A Verilog nyelv további szintjei

A Verilog nyelv további szintjei

A Verilog tartalmaz magas szintű nyelvi szerkezeteket, amelyekjellemzően nem a tervezést, hanem a tesztelést támogatják –segítségükkel hatékonyan lehet tesztkörnyezeteket létrehozni.

A Verilog alkalmas továbbá áramkörök strukturális leírására is,amely kapuszintű leírást jelent.

Ilyen a kimenete a szintézer programoknak, amelyek egyRTL-szintű leírást konkrét logikai kapcsolásra fordítanak le.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 6 / 56

Page 7: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Megjegyzések

Megjegyzések

A következőkben áttekintjük a nyelv alapvető szintaktikai szabályait.A megjegyzések nagyon fontos részei a kódnak,elengedhetetlenek a kód későbbi megértéséhez.Hardver leírásakor sokszor jóval tömörebb, nehezebbenvisszafejthető kódrészletek keletkeznek, mint a hagyományosprogramozás során, ezért a megjegyzéseknek nagyon jelentősszerepük van a tervezésben.A megjegyzések szintaktikája megegyezik a C++ nyelvmegjegyzéseiével:

// Egysoros megjegyz és/*

Tö bbsorosmegjegyz és.

*/

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 7 / 56

Page 8: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Számkonstansok

Számkonstansok

Számkonstansok szintaktikája<bitek száma>’<számrendszer><számkonstans>

A számok megadása jelzi, hogyhardver leíró nyelvvel vandolgunk:

meg kell adni a bitek számát,amin ábrázoljuk a konstanst (ezopcionális, de általábanmegadjuk),jelezni kell a számrendszert,amiben a konstanst leírjuk – eztegy betű jelzi.

Számrendszerek betűkonstansaikettes bnyolcas otizes dtizenhatos h

Példa:6’ b101011 4’d3 ’o72

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 8 / 56

Page 9: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Változók értékkészlete

Változók értékkészlete

Egy numerikus érték négyféle értéke0: nulla, logikai HAMIS1: egy, logikai IGAZx: nem ismert, (don’t care) értékz: nagy impedanciás érték

A nem ismert érték azt jelzi, hogy az adott bit nem kapott mégértéket az eszköz működésének kezdete óta – ezzel lehet szimulálniazt, hogy állapottal rendelkező eszközeink bekapcsolás utáni állapotabizonytalan, reset jelre van szükség, hogy kezdeti értéket kapjanak.A nagy impedanciás érték segítégével lehet buszok több forrásbóltörténő meghajtását leírni.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 9 / 56

Page 10: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Vezetékek

Vezetékek I.

A wire kulcsszó segítségével definiálhatunk vezetékeket, amelyeksegítségével az áramköri egységeink összekötését valósíthatjuk meg.A vezetékek nem képesek önmaguktól jelet szolgáltatni és nincsmemóriájuk.Ebből következően kétféleképpen használhatóak:

1 egyik végükön egy modul/regiszter kimenetéhez kell, hogykapcsolódjanak, ami meghajtja őket,

2 állandó meghajtást kell előírni rájuk ún. folyamatos értékadással.Egyszerű, egybites vezetékeket az alábbi módon definiálhatunk:

wire carry , sum , enable ;

A C nyelvhez hasonlóan típus változónév {, változónév}; alakban.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 10 / 56

Page 11: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Vezetékek

Vezetékek II.

Több bitből álló vezetékeket – buszokat, az alábbi módonadhatunk meg:

wire [7:0] address , data;

Mind az address, mind a data nyolcbites vezetékek!Azért kell két számmal megadni a méretet, mert ezzel azt ismegmondjuk, hogy milyen sorrendben vegyük figyelembe a biteket,amikor a számértéküket előállítjuk.

Több bites változók bitjeinek sorrendje[ MSB : LSB ]

Ez azt jelenti, hogy ha az address vezeték 8’b00000001 értéketkap, az 1-nek felel meg, ha 8’b10000000 értéket, az 128-nak.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 11 / 56

Page 12: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Vezetékek

Vezetékek III.

A többites vezetékek bitszinten hivatkozhatóak az [] operátorsegítségével.

Egy adott bit elérése:address [2]

Több bit elérése:data [6:2]

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 12 / 56

Page 13: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A regiszterek

A regiszterek

A regiszterek a Verilog nyelvben az egyszerű adattároló elemek(flip-flopok, latchek) absztrakciói.Segítségükkel lehet állapottal rendelkező működéstmegfogalmazni, sorrendi hálózatokat leírni.Regiszterek értékadását mindig eseményhez (pl. felfutó él) kellkötni.

Definiálásuk lényegében azonos a veztékekével, de a kulcsszó: reg.reg outputValid ;reg [31:0] counter ;

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 13 / 56

Page 14: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Operátorok

Operátorok I.

Lényegében azonosak a C nyelv operátoraival, de vannakkülönbségek.A bitsorozatokat előjel nélküli egészként kezeli.

Aritmetikai operátorokUnáris operátorok: +, - (előjelek)Bináris operátorok: +, -, *, /, % (maradékképzés)

Relációs operátorok<, <=, >, >=, == (egyenlő), ! = (nem egyenlő)

Logikai operátorok! (tagadás), && (és), || (vagy)<feltétel> ? <ha igaz> : <ha hamis> (feltételes operátor)

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 14 / 56

Page 15: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Operátorok

Operátorok II.

Bitszintű operátorok~ (invertálás)& (bitszintű és), | (bitszintű vagy)^ (kizáró vagy – xor)~^, ^~ (kizáró nem-vagy – xnor)<<, >> (bitléptető operátorok – shift)

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 15 / 56

Page 16: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Operátorok

Operátorok III.

Redukciós operátorok&, |, ^, ~& (nem-és), ~| (nem-vagy), ~^, ^~

A redukciós operátorok segítségével egy n hosszú bitsorozatraelvégezhetünk egy bitszintű logikai műveletet úgy, hogy előállegy n-bementű logikai kapu, aminek a bemenetére rákerül a sorozat,a kimenete pedig egy bit.Például egy sorozat összeéselése:

reg [7:0] data;reg a;...a = &data;

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 16 / 56

Page 17: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Operátorok

Operátorok IV.

Bitösszefűző operátor{<bitsorozat>, <bitsorozat>, ...}

A bitösszefűző operátor segítségével egymástól független bitek,bitsorozatok fűzhetőek össze egy, közösen kezelt busszá.

reg [7:0] data , address ;reg [7:0] a;...a = {data [3 ,2] , address [7 ,3] , data [1]};

Ha ugyanazt a bitsorozatot többször szeretnénk szerepeltetniegymás mellett az összefűzésben, arra van egy rövidített írásmód:

a = {5{ isValid }};

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 17 / 56

Page 18: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Operátorok

Operátorok V.

A bitösszefűző operátor felhasználható például a forgatás (rotálás)műveletének megvalósítására, vagyis a bitek olyan eltolására, amikora kitolt bit visszakerül a túloldalon.

reg [7:0] regiszter ;...regiszter = { regiszter [6:0] , regiszter [7]}; // balra forgat ás

Hasonlóképpen felhasználható Johnson-számláló készítésére.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 18 / 56

Page 19: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Értékadás Verilogban

Az értékadás a programozásban az a művelet, amikor egy változóértékét megváltoztatjuk.

Verilogban a fizikai valóság pontosabb modellezése érdekébenháromféle értékadás létezik – nem mindegy például, hogyvezetéknek vagy regiszternek adunk értéket:

1 folyamatos értékadás: vezetéknek,2 procedurális értékadás: regiszternek

(a) blokkoló procedurális értékadás,(b) nem-blokkoló procedurális értékadás.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 19 / 56

Page 20: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Folyamatos értékadás

Folyamatos értékadásassign <változnév> = <kifejezés>

Az értékadás jobb oldalán lévő értékek bármelyike ismegváltozik, azonnal frissül a jobb oldal is a kifejezésnekmegfelelően.Ez a logikai kapuk működését modellezi.

wire a, b, c;

assign a = b & c;

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 20 / 56

Page 21: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Procedurális értékadás I.

Procedurális értékadás kizárólag eseményvezérelten történhet.Ez azt jelenti, hogy egy olyan blokkban kell elhelyezni, amelyesemények hatására aktivizálódik.

Verilogban két ilyen blokk létezik:

1 initial: a szimuláció elején, egyszer fut le, és többször nem,

2 always: a fejében megadott feltétel teljesülésekor mindig lefut.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 21 / 56

Page 22: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Procedurális értékadás II.

Az initial blokkban található értékadások a szimuláció soránegyszer, a legelején futnak le.Ez a kezdeti értékadások, az inicializáció modellezésének azeszköze.Nem szintetizálható szerkezet (power-on reset nem írható elő Verilognyelven1).Késleltetések felhasználásával a tesztkörnyezetben a gerjesztőjelsorozatok leírására használható.

initialbegin

... // érté kadá sokend

1FPGA-kban van erre lehetőségNagy Gergely, Horváth Péter A Verilog HDL áttekintése 22 / 56

Page 23: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Procedurális értékadás III.

Az always blokk nevéhez hűen folyamatosan fut.Amennyiben nem adunk meg feltételt, akkor a benne lévőértékadások folyamatosan kiértékelődnek – ebben az esetbenazonban a benne szereplő regisztereket vezetékként kezeli aszimulátor (!)

Az always blokk érzékenyítése jelváltozásokraalways @(<események VAGY kapcsolata>)

Egy esemény: posedge clk, negedge enable

Vagy kapcsolat: posedge isValid or posedge reset

always @( posedge clk)begin

... // érté kad á sokend

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 23 / 56

Page 24: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Procedurális értékadás IV.

Procedurális értékadás tehát csak initial vagy érzékenyítettalways blokkban szerepelhet.Két fajtája van:

1 blokkoló értékadás: az egymás alatt lévő értékadások a megadássorrendjében, egymás után hajtódnak végre,

2 nem-blokkoló értékadás: az egymás alatt értékadásokpárhuzamosan, egyidőben hajtódnak végre.

Procedurális értékadás operátorai1 Blokkoló: =

2 Nem-blokkoló <=

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 24 / 56

Page 25: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Értékadások

Procedurális értékadás V.

Például egy szinkron számláló működését az alábbi kódrészlet írja le:

reg [7:0] counter ;

always @( posedge clk)begin

counter = counter + 1;end

A fenti kódrészlet hatására a counter regiszter értéke az órajelminden felfutó élére megnő eggyel.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 25 / 56

Page 26: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Feltételes elágazások Verilogban

Az if szerkezet

Az if szerkezet felépítése és használata megegyezik más nyelvekhasonló szerkezeteiével.Alkalmazási területe az always és initial blokkokon belülifelételek megfogalmazása.

Az if szerkezetif (<kifejezése>) <utasítás(blokk)>else if (<kifejezése>) <utasítás(blokk)>else <utasítás(blokk)>

Az utasításblokk utasítások sorozata, amelyet a begin és endkulcsszavak fognak közre.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 26 / 56

Page 27: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Feltételes elágazások Verilogban

A case szerkezet I.

A case is megfelel a más nyelvek switch illetve caseszerkezeteinek.Egy adott kifejezés értékei szerint ágazik el oly módon, hogy afelsorolt értékek közül kiválasztja az aktuálisan érvényeset ésazt az ágat hajtja végre.Ha az aktuális érték nem szerepel a felsorolásban, akkor a defaultérték fut le.

case (<kifejezés>)<érték_1>: <utasítás(blokk)_1>;<érték_2>: <utasítás(blokk)_2>;...<érték_n>: <utasítás(blokk)_n>;default: <alapértelmezés szerinti utasítás(blokk)>;

endcase

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 27 / 56

Page 28: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Feltételes elágazások Verilogban

A case szerkezet II.

Ha don’t care illetve nagy impedanciás értékeket is szerepeltetniszeretnénk az ágakban, akkor speciális case szerkezeteket kellhasználni:

casez: a z értékek feldolgozása,casex: a z és x értékek feldolgozása.

Az if-hez hasonlóan, case is csak initial vagy always blokkbanszerepelhet.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 28 / 56

Page 29: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A késleltetett végrehajtás

A késleltetett végrehajtás I.

Késleltetések jelölés Verilogban#<késleltetés> <utasítás>

Kizárólag szimulációs célokra lehetőség van Verilogban akésleltetések jelölésére.A késleltetést a a szimulációs időlépés egységeiben, egészértékekkel kell megadni.Ezek használatakor érdemes úgy megválasztani a szimulációsidőlépést, hogy az jóval kisebb legyen, mint a rendszerben lévőleggyorsabb órajel periódusideje.A tipikus szintaktika fenn látható, de használható a következőírásmód is:

always @( posedge clk) a = #2 b;

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 29 / 56

Page 30: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A késleltetett végrehajtás

A késleltetett végrehajtás II.

A késleltetés alkalmazásával lehet létrehozni a tesztkörnyezetbennégyszögjeleket:

initialbegin

clk = 1’b0;end

alwaysbegin

#5 clk = ~clk;end

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 30 / 56

Page 31: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

A hierarchikus tervezés egysége: a module

Egy komplex rendszer tervezésekor részegységeket hozunklétre, amelyeket összekapcsolhatunk.A rendszerek felépítése többszintű és hierarchikus, azaz arészegységek más részegységeket tartalmazhatnak.

Verilogban a részegységeket module-nak hívjuk.

A modul olyan egység, aminektetszőleges számú és méretű bemenete,tetszőleges számú és meretű kimenete

lehet és amelyből tetszőleges számú példányt hozhatunk létre aHDL kódban.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 31 / 56

Page 32: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

A modulok definiálása I.

Modulok definiálásamodule <név>(<portlista>);...endmodule

A modulokat a module kulcsszóval vezetjük be, egyedi nevetadunk nekik és felsoroljuk a portjaik nevét.Figyeljük meg, hogy a modulfejet megadó sort pontosvessző zárja!A modulok definíciójának a végét az endmodule kulcsszó jelzi.A modulok elején fel kell sorolni a portjaikat az input illetveoutput kulcsszavak segítségével.A portok alapértelmezett típusa a vezeték. Ha egy kimenetetregiszterként szeretnénk megadni, azt külön sorban, aregiszterek megadásának szintaktikájával kell megtenni.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 32 / 56

Page 33: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

A modulok definiálása II.

Például egy egyszerű számláló modul definíciója az alábbi módonnézhet ki:

module my_counter (clock , reset , q);input clock ;input reset ;output [7:0] q;reg [7:0] q;...

endmodule ;

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 33 / 56

Page 34: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

Modulok példányosítása I.

Modulok példányosítása<modulenév> <példánynév>(<portlista>);

Egy modulból tetszőleges számú példány létrehozható.A példányosításkor egy egyedi nevet kell adnunk a példánynakés meg kell adni, hogy a portjai milyen külsővezetékekhez/regiszterekhez kapcsolódnak.A bekötés úgy történik, hogy a példányhoz kapcsolódó jeleketpontosabban abban a sorban írjuk a portlistájába, amilyensorrendben az egyes portjaihoz szeretnénk kötni őket.

reg clock_1 , counter_reset ;wire [7:0] counter ;my_counter mc1(clock_1 , counter_reset , counter );

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 34 / 56

Page 35: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

Modulok példányosítása II.

Modulok példányosítása – explicit párosítás<modulenév> <példánynév>(.<portnév>(kapcsolat), ...);

Létezik egy alternatív megadása is az összeköttetéseknek: ilyenkormegadjuk a modul portjának a nevét, amihez kapcsolódniszeretnénk és a jelet is, amelyet rákötünk.Ez olyankor hasznos, amikor nagyon sok portja van egy modulnak ésnagyon nehéz lenne utólag megmondani, hogy egy adott jel melyikportra kapcsolódik.Ilyenkor a portok deklarálási sorrendje nem számít.

reg clock_1 , counter_reset ;wire [7:0] counter ;my_counter mc1 (. reset ( counter_reset ), . clock ( clock_1 ),

.q( counter ));

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 35 / 56

Page 36: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

A modulok összeköttetései

A modulok bemenete csak olyan pontra kapcsolódhat, amelyfolyamatosan meg van hajtva, tehát mindig kap érvényesértéket:

egy vezeték/busz, amely szerepel egy folytonos értékadás bal oldalán,egy regiszter, amely egy procedurális értékadásban szerepel a baloldalon.A modul bemenete belül csak vezeték lehet.

A modulok kimenetét a moduloknak meg kell hajtania – teháta modulon belül:

folyamatos értékadással hajtott vezetéknek,procedurális értékadással leírt regiszternek kell lenniük.

A modulok kimenetéhez vezetékek csatlakoznak, amelyeket amodul hajt meg.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 36 / 56

Page 37: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

Paraméterek I.

A modulok paraméterezhetőek – megadhatunk konstansokat,amelyekkel beállíthatóak a modul méretei.A paramétereket a modulokban definiáljuk a parameterkulcsszóval és itt alapértelmezett értéket is kapnak.Egy modulpéldánynak megváltoztatható a paramétere adefparam kulcsszóval.

module parMod (a, q);parameter width = 4;input [ width - 1 : 0] a;output q;assign q = &a;

endmodule

module test;...parMod pm(A, q);defparam pm. width = 8;...

endmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 37 / 56

Page 38: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

A hierarchikus tervezés egysége: a module

Paraméterek II.

Létezik egy alternatív szintaktika a paraméter példányosításkorimegadására:

module parMod (a, q);parameter width = 4;input [ width - 1 : 0] a;output q;assign q = &a;

endmodule

module test;...parMod #(8) pm(A, q);...

endmodule

Több paraméter esetén a deklarációjuk sorrendjében, vesszővelelválasztva kell őket felsorolni.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 38 / 56

Page 39: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Kombinációs logikák I.

Kombinációs logikát a legegyszerűbb a logikai függvényévelmegadni, ugyanakkor nagyon összetett áramkörök esetén afüggvények nagyon elbonyolódnak.

module kombinacios (a,b,c,q);input a;input b;input c;output q;assign q = ~(a & b & c) | ~(a & ~c);

endmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 39 / 56

Page 40: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Kombinációs logikák II.

Ha egy always blokkban érzékenységi listájában felsoroljuk abenne lévő kifejezések jobb oldalain szereplő összes változót ésaz eseményt nem élváltáshoz, hanem minden értékváltáshozkötjük, akkor kombinációs logikát kapunk.A második feltétel szintaktikailag azt jelenti, hogy nem szerepelnek aposedge illetve negedge kulcsszavak.Ez a leírás azért kényelmes, mert használhatjuk az if, illetve caseszerkezeteket, amelyekkel áttekinthetőbbé válik a leírás.

module kombinacios (a,b,c,q);input a, b, c;output q;reg q;always @(a or b or c)begin

if (b == 1’b1) q = a & ~c;else q = 1’b0;

endendmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 40 / 56

Page 41: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Kombinációs logikák III.

module kombinacios (a,b,c,q);input a, b, c;output q;reg q;always @(a or b or c)begin

if (b == 1’b1) q = a & ~c;else q = 1’b0;

endendmodule

Az előző kódrészletben még két fontos részlet van:

a kimenet regiszter típusú – ez kötelező egy procedurálisértékadásnál, de ettől kombinációs logika szintetizálódik,

az if illetve case szerkezeteket teljesen ki kell fejteni, tehát kellelse, illetve default ág.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 41 / 56

Page 42: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Multiplexerek megvalósítása

A multiplexerek olyan digitális áramkörök, amelyek azadatbemenetükre érkező n bitből egyet másolnak a kimenetükre acímbemenetük alapján.A case szerkezet ideális multiplexerek leírására.

module multiplexer (q, data , select );output q;input [3:0] data;input [1:0] select ;reg q;always @( select or data)begin

case ( select )2’b00: q = data [0];2’b01: q = data [1];2’b10: q = data [2];2’b11: q = data [3];

endcaseend

endmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 42 / 56

Page 43: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Multiplexelt adatutak kialakítása

A multiplexerek egyik fontos feladata az, hogy műveletvégzőegységek többszörözését megelőzzék úgy, hogy több adatutatis ugyanarra az egységre kapcsolnak.Az alábbi kódban például csak egy összeadó példányosodik.

module Muxadd (q, select , a, b, c, d);output [2:0] q;input select ;input [2:0] a;input [2:0] b;input [2:0] c;input [2:0] d;

assign q = ( select == 0) ? a + b : c + d;endmodule ;

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 43 / 56

Page 44: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Demultiplexerek megvalósítása

A demultiplexerek pontosan a multiplexere ellentétei: az egybitesadatbemenetét az n bites kimenetének arra a bitjére másolja,amit a kiválasztó bemenete megad.

Kiválasztó (chip enable) logikák megvalósítására szokták használni.

A megvalósításhoz egyszerűen a biteltoló operátorra van szükség.

module demultiplexer (in , select , out );input in;input [2:0] select ;output [7:0] out;assign out = in << select ;

endmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 44 / 56

Page 45: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Dekóder megvalósítása

A dekóder az n-bites bemenete bináris értékének megfelelő bitetállítja 1-be a 2n bites kimenetén.

module dekoder (data , code );output [3:0] data;input [1:0] code;reg [3:0] data;always @(code)begin

case (code)2’b00: data = 4’ b0001 ;2’b01: data = 4’ b0010 ;2’b10: data = 4’ b0100 ;2’b11: data = 4’ b1000 ;

endcaseend

endmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 45 / 56

Page 46: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Enkóder megvalósítása I.

Az enkóder 2n bemenetén egyszerre egy darab egyes lehet. Az ennekmegfelelő bináris érték jelenik meg az n-bites kimenetén.

Gondot jelent az, hogy a bemeneten lehet hibás érték.

Kétféle megoldás lehetséges:

1 hiba bit: ha nem megfelelő a bemenet, akkor ez 1-be billen,

2 prioritásos enkóder: az egyeseket prioritás szerint tekinti, ígyminden bemenethez tartozik értelmes kimenet.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 46 / 56

Page 47: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Kombinációs logikák tervezése

Enkóder megvalósítása II.

module prioritasos_encoder (code , valid , data );output [1:0] code;input [3:0] data;reg [1:0] code;always @(data)begin

casex (data)4’ b1xxx : code = 2’b11;4’ b01xx : code = 2’b10;4’ b001x : code = 2’b01;4’ b0001 : code = 2’b00;default : code = 2’bxx;

endcaseend

endmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 47 / 56

Page 48: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Sorrendi hálózatok tervezésének alapjai

Egy egyszerű számláló

Az alábbi számláló egy egyszerű szinkron hálózat, amelyben mindenaz óra felfutó élére történik.

module szamlalo (q, clk , reset );input clk;input reset ;output [3:0] q;reg [3:0] q;

always @( posedge clk) beginif ( reset == 1’b1) q = 4’b0;else q = q + 1;

endendmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 48 / 56

Page 49: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Sorrendi hálózatok tervezésének alapjai

Aszinkron reset

Sokszor a reset funkciót aszinkronná teszik, azaz a reset bemenetaz órajeltől független, megérkezésekor rögtön alaphelyzetbeállítja az áramkört.Ez úgy érhető el, ha az always blokkot érzékenyítjük a resetbemenetre is.

module szamlalo (q, clk , reset );input clk;input reset ;output [3:0] q;reg [3:0] q;

always @( posedge clk or posedge reset ) beginif ( reset == 1’b1) q = 4’b0;else q = q + 1;

endendmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 49 / 56

Page 50: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Teszkörnyezet készítése

Tesztkörnyezet készítése I.

A teszkörnyezet is egy modul, amit az különböztet meg atöbbitől, hogy nincsenek portjai.

Az ilyen modult a szimulátorok fel szokták ismerni legmagasabbhierchia-szintű modulként, kézzel csak olyankor kell megadni, hatöbb ilyen is van a rendszerben.

A felépítése általában a következő:

1 A tesztelendő modulok példányosítása és összekötése.

2 A tesztszekvenciák leírása egy initial blokkban.

3 A periodikus jelek előállítása always blokkokban.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 50 / 56

Page 51: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Teszkörnyezet készítése

Tesztkörnyezet készítése II.

module testbench ;reg input_1 , input_2 ...reg clk;// modul példá nyokinitial

beginclk = 0;// tesztjelek$finish ;

endalwaysbegin

#1 clk = ~clk;end

endmodule

A $finish; a szimuláció végét jelzi – erre csak bizonyostesztkörnyezetekben van szükség, különben azok – a periodikus jelekmiatt – örökké futnának.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 51 / 56

Page 52: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Bevezetés

A Verilog 2001 újításai

A nyelvet megújították 2001-ben.

Szintaktikai egyszerűsítéseket és elvi újdonságokat is adtak hozzá.

Az új szabvány mára nagyon széles körben támogatott, de mindigérdemes ellenőrizni, hogy a munkakörnyezetünk ismeri-e.

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 52 / 56

Page 53: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Egyszerűbb portlista

Egyszerűbb portlista

A portok megadása egyszerűbb és átláthatóbb lett: nem kell kétrészletben megadni a portokat – minden információ a modulokfejébe került.

module szamlalo ( output reg [3:0] q, input clk , input reset );always @( posedge clk or posedge reset )begin

if ( reset ) q = 4’ b0000 ;else q = q + 1;

endendmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 53 / 56

Page 54: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Nevesített paraméterlista

Nevesített paraméterlista

Amikor példányosításkor megadjuk egy modul paramétereinek azértékét, lehetőség van a paraméternevek és értékeikösszepárosítására a portlistához hasonlóan:

parMod #(. param1 (2) , . param2 (1)) pm(a, b, c, q);

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 54 / 56

Page 55: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Skálázható modulok

Skálázható modulok I.Előfordul, hogy egy modulból sokat kell példányosítani szabályoselrendezésben, vagy hogy egy bizonyos feltétel teljesüléseesetén más modult kell példányosítani, mint a nemteljesülésekor.

Ilyenkor hasznos, hogy lehetőség van ciklusban illetve feltételeselágazásban példányosítani modulokat.

module onebit ( input a, input b, output q);assign q = a & b;

endmodule

module eightbit ( input [7:0] a, input [7:0] b, output [7:0] q);genvar i;generate

for (i = 0; i < 8; i = i + 1)begin : eightbit_bits

onebit a(a[i], b[i], q[i]);end

endgenerateendmodule

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 55 / 56

Page 56: A Verilog HDL áttekintésemazsola.iit.uni-miskolc.hu/~bartok3/proglogprog/VHDL... · 2020. 2. 12. · Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés

Bevezetés A nyelv típusai és vezérlési szerkezetei Modulok Verilogban Tervezés Verilogban Verilog 2001

Skálázható modulok

Skálázható modulok II.module eightbit ( input [7:0] a, input [7:0] b, output [7:0] q);

genvar i;generate

for (i = 0; i < 8; i = i + 1)begin : eightbit_bits

onebit a(a[i], b[i], q[i]);end

endgenerateendmodule

A generálás segédváltozóját (i) a generáló blokkon kívül kelldeklarálni.A generáló blokkot a generate és endgenerate kulcsszavak fogjákközre.A generáló blokk begin-je után egy címkét kell elhelyezni, ami azegyes generált elemek egyedi eléréséhez szükséges.Az egyes elemek elérése például:

eightbit_bits [2].a

Nagy Gergely, Horváth Péter A Verilog HDL áttekintése 56 / 56