Hardver leíró nyelvek (HDL)

Hasonló dokumentumok
Verilog HDL ismertető 2. hét : 1. hét dia

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Verilog HDL ismertető 4. hét : hét dia

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

Dr. Oniga István DIGITÁLIS TECHNIKA 8

A Verilog HDL áttekintése

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

Újrakonfigurálható eszközök

Verilog HDL ismertető

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Verilog ismertető (Szántó Péter, BME MIT, )

12. NYOMÓGOMBOK ÉS KAPCSOLÓK PERGÉSMENTESÍTÉSE A FEJLESZTŐLAPON

Egyszerű RISC CPU tervezése

Újrakonfigurálható eszközök

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

FPGA & Verilog ismertetı. BME Méréstechnika és Információs Rendszerek Tanszék

Aszinkron sorrendi hálózatok

Digitális technika (VIMIAA02) Laboratórium 4

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

A C programozási nyelv I. Bevezetés

14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

Digitális technika (VIMIAA02) Laboratórium 4

Mérési jegyzőkönyv. az ötödik méréshez

6. hét: A sorrendi hálózatok elemei és tervezése

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

Szoftvertervezés és -fejlesztés I.

Újrakonfigurálható eszközök

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

A C programozási nyelv I. Bevezetés

Szántó Péter BME Méréstechnika és Információs Rendszerek Tanszék, FPGA Labor

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

Digitális technika (VIMIAA02) Laboratórium 2

Digitális technika (VIMIAA01) Laboratórium 4

Verilog HDL ismertető

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

LOGIKAI TERVEZÉS PROGRAMOZHATÓ. Elő Előadó: Dr. Oniga István

Komputeralgebra Rendszerek

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

Mintavételes szabályozás mikrovezérlő segítségével

Webprogramozás szakkör

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Kifejezések. Kozsik Tamás. December 11, 2016

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Hazárdjelenségek a kombinációs hálózatokban

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Készítette: Nagy Tibor István

Java II. I A Java programozási nyelv alapelemei

A Picoblaze Core implementálása FPGA-ba

Újrakonfigurálható eszközök

III. Alapfogalmak és tervezési módszertan SystemC-ben

Digitális technika VIMIAA hét

Programozási nyelvek 6. előadás

Végh János Bevezetés a Verilog hardver leíró nyelvbe INCK??? előadási segédlet

Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Elektronikus dobókocka tervezési példa

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Digitális technika VIMIAA hét

Áramkörök elmélete és számítása Elektromos és biológiai áramkörök. 3. heti gyakorlat anyaga. Összeállította:

Újrakonfigurálható eszközök

S z á m í t ó g é p e s a l a p i s m e r e t e k

A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA A LOGIKAI SZINTÉZISBEN

Java programozási nyelv

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

2. Fejezet : Számrendszerek

A fealdatot két részre osztjuk: adatstruktúrára és vezérlőre

Digitális technika (VIMIAA01) Laboratórium 2

Gépészmérnöki és Informatikai Kar Automatizálási és Kommunikáció- Technológiai Tanszék

Digitális technika (VIMIAA01) Laboratórium 2

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

Beágyazott és Ambiens Rendszerek Laboratórium BMEVIMIA350. Mérési feladatok az 1., 2. és 3. mérési alkalomhoz

30.B 30.B. Szekvenciális hálózatok (aszinkron és szinkron hálózatok)

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

Digitális elektronika gyakorlat

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Szkriptnyelvek. 1. UNIX shell

Dr. Oniga István DIGITÁLIS TECHNIKA 4

Előadó: Nagy István (A65)

Átírás:

Hardver leíró nyelvek (HDL) Benesóczky Zoltán 2004 A jegyzetet a szerzıi jog védi. Azt a BME hallgatói használhatják, nyomtathatják tanulás céljából. Minden egyéb felhasználáshoz a szerzı belegyezése szükséges.

Hardver leíró nyelvek (HDL) nyelvek: ABEL, VHDL, VERILOG stb. HW leírása kapcsolási rajz HDL szintézis konfigurációs file programozó hardver PLD CPLD FPGA tesztminta leírása HDL grafikus tesztminta tervezõ szimuláció idõdiagram stb. Szimuláció szimulált teszminta generátor tesztminta sorozat szimulált hardver kimeneti jelek megjelenítés (grafikus, táblázatos..) 2

Verilog Az alábbiakban a Verilog nyelv alapjaiba próbáljuk bevezetni az olvasót. A változók A leírásban használt változók emlékezet nélküli és tároló változók lehetnek. emlékezet nélküli változó: wire A; Pl. modulok összekötésére használjuk. Modul kimenete és bemente is lehet ilyen tipusú. tároló tipusú változó: reg B; Értékét megtartja, amíg újabb értékadás nem történik. Modulnak csak a kimenete lehet ilyen tipusú. Egyéb emlékezet nélküli és tároló jellegő változók is léteznek. A változók több bitesek (vektor változók) is lehetnek. wire [3:0] X; // 4 bites változó reg [7:0] Y; // 8 bites 3

A modul Alapegység a modul. Ha HW leírására használjuk, akkor ez egy funkcionális elemhez hasonló, a bemeneti és kimenetei között a leírásnak megfelelıen viselkedı logikát ír le. A szimulációhoz leírhat teszminta generáló egységet is. module modulnév (bemeneti_változó1, bemeneti_változó2,...kimeneti_változó1... ) // komment input bementi_változó1; input bementi_változó2;... output kimeneti_változó1; reg regiszter_tipusú_változó; // emlékezı változó wire huzal_tipusú_változó; // nem emlékezı változó.. A modul törzse (a modul törzsében írjuk le annak viselkedését endmodule 4

Primitívek A nyelvbe be vannak építve elemi modulok (primitívek). Ezek a logikai alapelemeket reprezentálják. (and, nand, or, nor stb.) Modulok összekapcsolása (hierarchikus leírás) Az egyes modulok más modulokat is tartalmazhatnak, tetszıleges mélységben. in1 in2 in3 module1_a in1 module1 in2 in1 in2 out module1_b module1 out X1 X2 module2_a in1 module2 in2 out module3 Y1 module2_b in1 module2 in2 out out module module1(in1,in2,out)... endmodule module module2(in1,in2,out)... endmodule module module3(in1,in2,out)... endmodule 5

module module3(in1,in2,in3, out)... wire X1; wire X2; wire Y1; module1 module1_a(in1,in3, X1); module1 module1_b(in1,in2, X2); module2 module2_a(x1, X2, Y1); module2 module2_b(y1, in3, out); endmodule A module1, module2 tartalmazza egy-egy modul mőködésének leírását. A module1_a, module1_b a module1 egy-egy példánya (a module1 leírása szerint viselkedı modulok, melyeket a nevükkel különböztetünk meg egymástól). A modulra való hivatkozáskor a nem használt paraméterek,,-vel elhagyhatók. (Pl. több kimenető modul esetén a nem használt kimenet esetén használjuk.) A modulok mőködésének leírása A modulok mőködését többféle módon le lehet írni. explicit struktúrális leírás implicit struktúrális leírás procedurális leírás 6

Explicit struktúrális leírás A struktúrális leírás azt adja meg, hogy hogyan kapcsolódnak össze az elıre definiált modulok egymással. Az öszekapcsolandó modulok primitívek és tetszıleges modulok lehetnek. Az alábbi példa a kapcsolási rajzzal adott f1 függvény expl. struktúrélis leírását mutatja be. A B A B C A y2 y4 y1 y3 y5 module KH(A, B, C, f1) input A, B, C; output f1; wire y1, y2, y3, y4; and (y1, A, B); not (y2, A); and (y3, y2, C); not (y4, B); and (y5, y4, A); or (f1, y1, y3, y4); endmodule f1 7

Implicit struktúrális leírás Kombinációs elemekbıl felépülı logikát ír le. Jóval tömörebben írja le mint az explicit megadás. Az elıbbi példa kombinációs hálózatának implicit srtuktúrális leírására az assign folytonos értékadó utasítás használható. wire f1; assign f1= A&B ~A&C A&~B; Az assign azonban aszinkron sorrendi hálózatot is leírhat. assign Q = S ~R&Q; Az assign több bites ún. vektor változókat is kezel. wire [3:0] X1, X2, Y; assign Y = X1 X2; // bitenkénti VAGY kapcsolat A vektor változóknál tartomány is kijelölhetı. wire [7:0] A; wire [2:0] B; assign B = A[6:4]; Az értékadásnál a bitek számának meg kell egyezni az egyenlıség két oldalán. 8

Változók összkapcsolhatók a {}-jelekkel egy több bites egységgé, amelyeknek így egyszerre értéket lehet adni egy másik ugyanennyi bites kifejezés alapján. wire [1:0] C; wire [2:0] D; wire [4:0] E assign {C, D} = E; 9

Procedurális leírás Ezel a fajta leírással az egység viselkedést adjuk meg, nem a struktúráját. A viselkedést utasítások sorozata adja meg. always @(eseményvezérlı kifejezés) begin utasítás_1 utasítás_2 utasítás_n end A fel és lefutó él eseményekhez külön jelölés tartozik, felfutó él: posedge változó lefutó él: negedge változó Az eseményvezérlı kifejezés alakja: változó1 or változó2 or... or posedge változó_i or... or negedge változó_j... Ha nincs eseménylista, az folytonos eseményt jelöl. Ha az eseményvezérlı kifejezésben váltzó neve szerepel, akkor az eseményt ennek bármely megváltozása, ill. a posedge vagy negedge-vel kijelölt megváltozása jelenti. 10

A begin end közötti rész akkor értékelıdik ki, amikor az eseménylistában felsorolt valamely esemény bekövetkezik. Az utasítások a leírásuk sorrendjében értékelıdnek ki, de a kiértékelés eredménye az esemény hatására okoz változást. Értékadó utasítások A változók értékadásánál használjuk. Blokkoló értékadás, procedurális leírásban blokkolja a további utasítások kiértékelését: A = B; Nem blokkoló értékadás: A<=B; Feltételes elágazó utasítások if (feltétel) utasítás; if (feltétel) utasítás; else utasítás; if (feltétel) else utasítás; if (feltétel) utasítás;..else utasítás; 11

Ha több utasítást kell végrehajtani az egyes ágakon, akkor azokat begin end közé kell tenni. if (feltétel) begin utasítás; utasítás; end Többutas elágazás megvalósítása: case case (kifejezés) konstans1: utasítás; konstans2: utasítás; konstans3: utasítás; default: utasítás; endcase feltételes operátor: változó = feltétel? igaz_eset : hamis_eset 12

Operátorok Különféle kifejezésekben használható mőveleteket jelölnek ki. {} csoportosítás + - * / aritmetikai mőveletek % maradékképzés > >= < <= relációs operátorok! && ==!= logikai negálás, és, vagy, egyenlı, nem egyenlı ~ & ^ ~^ bitenkénti negálás, és, vagy, antivalencia és eqvivalencia & ~& ~ ^ ~^ redukáló mőveletek, változók bitjei között &(1101)=0 (1101)=1 << >> logikai shift mővelet?: feltételes kifejezés jel = feltétel? igaz érték : hamis érték ; Számok megadása A szintaxis: bit_szám számrendszer számjegyek A számrendszer 'b bináris, 'o oktális, 'd decimális, 'h hexadecimális lehet. Pl. a 12 megadása 4 biten hexadecimálisan: 4 hc a 12 megadása 6 biten binárisan: 6 b001100 Konstansok definiálása parameter konstans_név = 4 b1001; 13