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 (VIMIAA01) Laboratórium 4 Fehér Béla Raikovich Tamás, Fejér Attila BME MIT BME-MIT Digit labor 4., 2014.08.18. (v1.0)
FPGA labor
Lab4_1 feladat: elemi SR tárolók A feladat az elemi aszinkron SR vizsgálata • ISE elindítása, projekt létrehozása • Lab4_1.v forrásfájl mintakeret specifikálása – bt[1:0], ld[1:0] (nagyon egyszerű projekt…) • LOGSYS_SP3E.UCF fájl hozzáadása és adaptálása a kívánt interfészekhez (bt és ld 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 BME-MIT Digit labor 4., 2014.08.18. (v1.0)
1
FPGA labor
Lab4_1 feladat SR Latch tervezése • A legegyszerűbb állapot tároló → visszacsatolás ! • Vizsgált verziók: – SET prioritás Q = S | (~R & Q); Q_n = ~Q; – RESET prioritás Q = ~R & (S | Q); Q_n = ~Q; – Hagyományos, szimmetrikus NOR kapu Q = ~(R | Q_n); Q_n = ~(S | Q); – Hagyományos, szimmetrikus NAND kapu (0 aktív vezérlés) Q = ~(S & Q_n); Q_n = ~(R & Q); • Működés ellenőrzése szimulációval – Speciális, késleltetett értékadás a hatások elemzéséhez (a generált logikára nincs hatása) BME-MIT Digit labor 4., 2014.08.18. (v1.0)
2
FPGA labor
Lab4_1a feladat: SET prioritás Q = S | (~R & Q); Q_n = ~Q;
• • • •
Figyeljük meg a működést és az időzítési viszonyokat S=1, R=1 után 10 ns múlva Q=1 (SET prioritás) Q=1 után 10 ns múlva Q_n=0 Stabil állapot 20 ns múlva
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
3
FPGA labor
Lab4_1b feladat: RESET prioritás
CSAK ÉRDEKLŐDŐKNEK!
Q = ~R& (S | Q);
• • • •
Q_n = ~Q;
Figyeljük meg a működést és az időzítési viszonyokat S=1, R=1 után 10 ns múlva Q=0 (RESET prioritás) Q=0 után 10 ns múlva Q_n=1 Stabil állapot 20 ns múlva
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
4
FPGA labor
Lab4_1c : SR NOR kapuval KIMARAD! Q = ~(R | Q_n);
Q_n = ~(S | Q);
CSAK ÉRDEKLŐDŐKNEK!
• Figyeljük meg a működést és az időzítési viszonyokat • S=1, R=1 után 10 ns múlva Q=0 és Q_n=0 ????????? • DE mi látható SR=11→00 után?
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
5
FPGA labor
Lab4_1d: SR NAND kapuval KIMARAD! Q = ~(S & Q_n);
• • • •
CSAK ÉRDEKLŐDŐKNEK! Q_n = ~(R & Q);
Figyeljük meg a működést és az időzítési viszonyokat S=0, R=0 után 10 ns múlva Q=1 és Q_n=1 ????????? DE mi látható SR=00→11 után? (ugyanazok a tesztvektorok)
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
6
FPGA labor
Lab4_1e : Müller C elem
CSAK ÉRDEKLŐDŐKNEK!
• Egy érdekes 2 bemenetű aszinkron egység • A visszacsatolással beállítható hiszterézisen alapul – Bekapcsol, ha mindkét bemenet aktív (A és B) – Tart, amíg még legalább egy bemenete aktív (A vagy B)
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
7
FPGA labor
Lab4_1 feladat A SET prioritásos SR Latch specifikáció alapján készítse el az SR_Latch.v Verilog modult • Bemenetei: S, R; kimenete: Q, Q_n; • Hozza létre a modul mintakeret fájlt és egészítse ki a választott stílusú leírással! • Készítse el a modul tesztkörnyezetét SR_Latch_TF.v és tesztelje a funkcionalitást! • Ha hibamentes, akkor építse be a Lab4_1.v „top module” fájlba, a következő megfeleltetéssel: – S ↔ BT[1], R ↔ BT[0], Q ↔ LD[1], Q_n ↔ LD[0] BME-MIT Digit labor 4., 2014.08.18. (v1.0)
8
FPGA labor
Lab4_1 feladat Az SR_Latch modul beépítése SR néven
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
9
FPGA labor
Lab4_1 feladat: szimuláció, ellenőrzés • Ellenőrizzük szimulációval a választott SR latch típust különböző állapotokra és vezérlésekre • Generáljuk a konfigurációs adatfájlt • Letöltés után ellenőrizzük a működést • A tapasztalatokat jegyezzük fel a Laboratórium 4. hét eredmények kérdőíven
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
10
FPGA labor
Lab4_2 feladat: 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ő élvá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, S, CE) egyedi időzítési előírását (tsu, th) az órajel aktív éléhez képest kell betartani BME-MIT Digit labor 4., 2014.08.18. (v1.0)
11
FPGA labor
Lab4_2 feladat: 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 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
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
12
FPGA labor
Lab4_2 feladat: D flip-flop • Generáljuk a konfigurációs adatfájlt • 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 • A tapasztalatokat jegyezzük fel a Laboratórium 4. hét eredmények kérdőíven BME-MIT Digit labor 4., 2014.08.18. (v1.0)
13
FPGA labor
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
BME-MIT
Digit labor 4., 2014.08.18. (v1.0)
14
FPGA labor
Lab4_3 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_3.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_3 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 BME-MIT Digit labor 4., 2014.08.18. (v1.0)
15
FPGA labor
Lab4_3 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
INIT/0
BLINK=1
BLINK=1
ON/1
OFF/0 BLINK=0
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
16
FPGA labor
Lab4_3 feladat: LED villogtatás A tervezés következő lépése: állapotminimalizálás • Észrevehetően 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 BLINK=0
OFF/0
BLINK=1
ON/1
BLINK értékétől függetlenül visszalép BME-MIT Digit labor 4., 2014.08.18. (v1.0)
17
FPGA labor
Lab4_3 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 BME-MIT Digit labor 4., 2014.08.18. (v1.0)
18
FPGA labor
Lab4_3 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
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
19
FPGA labor
Lab4_3 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 • A tapasztalatokat jegyezzük fel a Laboratórium 4. hét eredmények kérdőíven
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
20
FPGA labor
Lab4_3 feladat: BLINK ellenőrzése • A működést a LOGSYS GUI vezérlőjelekkel teszteljük • Ezen 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
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
21
FPGA labor
Lab4_4 feladat: bitminta generátor A feladat egyszerű véges állapotú gép (FSM) tervezése • ISE elindítása, projekt létrehozása • Lab4_4.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_4 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 BME-MIT Digit labor 4., 2014.08.18. (v1.0)
22
FPGA labor
Lab4_4a 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 BME-MIT Digit labor 4., 2014.08.18. (v1.0)
23
FPGA labor
Lab4_4a 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
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
24
FPGA labor
Lab4_4a 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 • A tapasztalatokat jegyezzük fel a Laboratórium 4. hét eredmények kérdőíven BME-MIT Digit labor 4., 2014.08.18. (v1.0)
25
FPGA labor
Lab4_4b 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
INP=1
B/1
C/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 BME-MIT Digit labor 4., 2014.08.18. (v1.0)
26
FPGA labor
Lab4_4b 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
BME-MIT Digit labor 4., 2014.08.18. (v1.0)
27
FPGA labor
Lab4_4b 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 • A tapasztalatokat jegyezzük fel a Laboratórium 4. hét eredmények kérdőíven BME-MIT Digit labor 4., 2014.08.18. (v1.0)
28
FPGA labor