BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 4 Fehér Béla Raikovich Tamás, Fejér Attila BME MIT
Lab4_1 feladat: Regiszter és D flip-flop A feladat a regiszter és D flip-flop működésének vizsgálata ISE elindítása, projekt létrehozása Lab4_1.v forrásfájl mintakeret specifikálása sw[7:0], ld[7:0] adat be- és kimenetek clk, rst, mosi, vezérlőjelek a LOGSYS GUI alkalmazásból LOGSYS_SP3E.UCF fájl hozzáadása és adaptálása a kívánt interfészekhez (sw, ld, clk, rst, mosi interfészek, ) A Lab4_1 feladatok specifikálása a funkcionális kódrészletekkel Funkcionális kód ellenőrzése szimulációval Konfigurációs fájl generálása, letöltése és a működés tesztelése a kártyán Digit labor 4., 2014.08.18. (v1.0) 1
Lab4_1 feladat: Regiszter és D flip-flop D flip-flop használata A legáltalánosabban használt flip-flop A több bites regiszterek alap építőeleme A CLK órajel (vagy lefutó) élére mintavételez és ezt a következő felfutó él váltásig tartja A D flip-flop-ot mindig viselkedési leírással specifikáljuk always @(posedge clk) típusú érzékenységi lista A rendszer a technológiai környezet megfelelő elemét példányosítja Minden vezérlőjel (D, R, CE) egyedi időzítési előírását (t su, t h ) az órajel aktív éléhez képest kell betartani 2
Lab4_1 feladat: Regiszter és D flip-flop always @ (posedge clk) blokkal Figyeljük meg a működést és az időzítési viszonyokat A CLK élénél ha a RESET nem aktív és a CE engedélyezett, akkor mintát vesz D-ből és ezt tartja a kimeneten a következő eseményig Tehát a legalább 1 órajel hosszú pulzusokból biztosan mintát vesz. Ellenőrizzük szimulációval! 3
Lab4_1 feladat: Regiszter és D flip-flop A feladatban a REG8R resetelhető 8 bites regiszter belső struktúrájának hangsúlyozására az egységet 8 db D_FF beépítésével építjük fel. A későbbiekben ennél tömörebb specifikációt alkalmazunk A REG8R egységet pedig egy befoglaló Lab4_1.v top_level keretbe foglaljuk, a következő interfész összerendeléssel: sw[7:0] D[7:0], clk clk, rst rst, MOSI load, Q[7:0] ld[7:0]. Generáljuk a konfigurációs adatfájlt 4
Lab4_1 feladat: Regiszter és D flip-flop Letöltés után ellenőrizzük a működést Órajel: LOGSYS GUI BitBang I/O Órajel 1-100Hz, vagy pulzusonként, ill. élenként ( ) Szinkron RST pulzus vagy konstans High-Low érték MOSI soros kim. MISO soros bem. Részletekért lásd a dokumentációt Egyszerű használati tippek a következő dián 5
Lab4_1 feladat: Regiszter és D flip-flop Javaslat a BitBang I/O használatára Folytonos 10Hz órajelet adjunk ki Sync RST 3 pulzusig aktív MOSI Data out legyen 010 minta A MOSI pulzus megjelenésekor a élre a regiszter mintát vesz a bemenetből, tehát SW LD 6
Sorrendi hálózatok, FSM vezérlők Az egyszerű sorrendi hálózatok, véges állapotú gépek (FSM) a leggyakrabban használt digitális egységek vezérlők, mintagenerátorok, mintafelismerők tervezésére Az FSM lényegében közvetlen digitális áramköri megvalósítása az állapotdiagramban felrajzolt működésnek, ennek megfelelően kis számú állapot és bemeneti/kimeneti jel esetén szinte tetszőleges működést (több utas egylépéses, közvetlen állapotátmenetek) képes realizálni A következő feladatokban egyszerű FSM-ek példáin (LED villogtatás, a 110 bitminta generálása) mutatjuk be a flexibilitást és tervezési lehetőségeket Az egységek interfészei: CLK, RST, MOSI, MISO (LOGSYS GUI jelek, vezérelhetők) Esetleg LED-ek a működés demonstrálására 7
Lab4_2 feladat: LED villogtatás A feladat az egyszerű sorrendi hálózat tervezési lépéseinek megismerése ISE elindítása, projekt létrehozása Lab4_2.v forrásfájl mintakeret specifikálása clk, rst LOGSYS GUI vezérlőjelek mosi, miso LOGSYS GUI soros adat interfész jelek ld[7:0] esetleges kijelzés LOGSYS_SP3E.UCF fájl hozzáadása és adaptálása a kívánt interfészekhez (vezérlő és adat interfészek) A Lab4_2 feladat specifikálása a funkcionális kódrészletekkel: BLINK sorrendi hálózat, mint önálló modul elkészítése Funkcionális kód ellenőrzése szimulációval Konfigurációs fájl generálása, letöltése és a működés tesztelése a kártyán 8
Lab4_2 feladat: LED villogtatás A BLINK sorrendi hálózat specifikációja RST hatására alaphelyzetben vár, kimenete 0 Ha a BLINK bemeneti jel 1-be vált, akkor a kimenet aktív lesz és folyamatosan 1-0-1-0 sorozatot ad ki az órajel ütemében A BLINK jel kikapcsolására újra alaphelyzetbe áll és vár Előzetes állapotdiagram a szöveges specifikáció alapján: 3 állapot: INIT, ON, OFF BLINK=0 BLINK=1 BLINK=1 INIT/0 ON/1 OFF/0 9 BLINK=0
Lab4_2 feladat: LED villogtatás A tervezés következő lépése: állapotminimalizálás Észrevehetően az INIT és OFF állapotok ekvivalensek: Azonos kimenetet adnak Azonos bemenetre azonos (vagy ekvivalens) állapotba lépnek Tehát összevonhatók: legyen a megmaradó állapot az OFF A maradó 2 állapot 1 biten kódolható: OFF -> 0, ON -> 1 OFF/0 BLINK=0 BLINK=1 ON/1 BLINK értékétől függetlenül visszalép 10
Lab4_2 feladat: LED villogtatás A végleges specifikáció megadása Verilog HDL nyelven Állapotregiszter műveletek Állapotregiszter definiálása (1 bit) Állapotkódok felsorolása Kezdeti RST állapot előírása CLK élre következő állapot Állapot átmeneti logika Az állapotdiagram szerint Feltételes vagy közvetlen Kimeneti logika Moore modell, az állapot alapján 11
Lab4_2 feladat: BLINK ellenőrzése A vezérlők működése egyszerűen szimulálható, de gyakran nehezen értékelhető a hullámforma alapján A BLINK_TF.v minta tesztkörnyezetet kiegészítjük A folyamatos órajel generátorral És bevezetünk egy state_label szimulációs változót ASCII karakteres állapot információk kiíratásához 12
Lab4_2 feladat: BLINK ellenőrzése A hullámforma ablakban a state_label[23:0] változóra az ASCII kijelzést állítjuk be A szimuláció eredménye néhány tesztvektorral Generáljuk a konfigurációs adatfájlt Letöltés után ellenőrizzük a működést 13
Lab4_2 feladat: BLINK ellenőrzése A működést a LOGSYS GUI vezérlőjelekkel teszteljük A jeleket BitBang módban adjuk ki Az órajel léptethető, futtatható Küldhető RST jel A MOSI jel (= BLINK) lehet: Statikus High-Low Vagy adott bitminta és Send Ezek az elsődleges interfészjelek megfigyelhetőek 14
Lab4_3 feladat: bitminta generátor A feladat egyszerű véges állapotú gép (FSM) tervezése ISE elindítása, projekt létrehozása Lab4_3.v forrásfájl mintakeret specifikálása clk, rst, mosi, miso LOGSYS GUI vezérlőjelek LOGSYS_SP3E.UCF fájl hozzáadása és adaptálása a kívánt interfészekhez (vezérlő és adat interfészek) A Lab4_3 feladat specifikálása a funkcionális kódrészletekkel: FSM_CNT Funkcionális kód ellenőrzése szimulációval Konfigurációs fájl generálása, letöltése és a működés tesztelése a kártyán 15
Lab4_3a feladat: bitminta generátor Tervezzünk egy vezérlőegységet (FSM) ami a RST pulzus után periódikusan a 011011011011011 sorozatot adja ki (az INP bemeneti jeltől függetlenül) A vezérlő állapotdiagramja: A/0 B/1 C/1 3 állapot (A, B, C), kezdőállapot az A állapot Minden állapotátmenet feltétel nélkül, az órajel ütemében történik 1 kimenet jel (OUT), az A állapotban 0 értékű, a B, és C állapotokban 1 értékű Moore modell 16
Lab4_3a feladat: bitminta generátor Az állapotregiszter minimális mérete: 2 bit Állapotkódolás: A = 00, B = 01, C =10 (lehetne más is) Az állapotregiszter és az állapot átmeneti logika 17
Lab4_3a feladat: bitminta generátor A kimeneti logika A szimuláció eredménye Generáljuk a konfigurációs adatfájlt Letöltés után ellenőrizzük a működést 18
Lab4_3b feladat: bitminta generátor Módosítsuk úgy a vezérlőegységet (FSM), hogy csak az INP pulzus hatására adja ki a 011 3 bites mintát. Amennyiben INP folyamatosan 1, akkor működése legyen azonos a korábbi FSM-mel. A túl gyakori pulzusokat elveszítheti. A módosított vezérlő állapotdiagramja: INP=0 A/0 B/1 C/1 INP=1 Továbbra is 3 állapot (A, B, C), kezdőállapot az A állapot Az első állapotátmenet feltételes, a többi feltétel nélküli, de mindegyik az órajel ütemében történik 1 kimenet jel (OUT), az A állapotban 0 értékű, a B, és C állapotokban 1 értékű Moore modell 19
Lab4_3b feladat: bitminta generátor Az állapotregiszter minimális mérete: 2 bit Állapotkódolás: A = 00, B = 01, C =10 (lehetne más is) Az állapotregiszter és az új állapotátmeneti logika 20
Lab4_3b feladat: bitminta generátor A kimeneti logika A szimuláció eredménye Generáljuk a konfigurációs adatfájlt Letöltés után ellenőrizzük a működést 21