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 2 Fehér Béla Raikovich Tamás, Fejér Attila Digit labor 2., 2014.08.11. (v1.0) BME MIT Kombinációs hálózatok Lab2_1 feladat: 4 változós logikai függvények tervezése Elemi függvények: ÉS, VAGY, XOR, NOR BCD kód ellenőrzése Oszthatóság ellenőrzése 3 ra vagy 5 re Lab2_2 feladat: hierarchikus tervezés bemutatása 1 bites teljes összeadó realizálása FADD modul Ebből 4 bites összeadó kialakítása kaszkádosítással, azaz 1 bites egységek láncbakapcsolásával Működés ellenőrzése összehasonlítással, referenciaként a Verilog + operátorát felhasználva Hiba esetén a H karakter kiírása a kijelzőre Digit labor 2., 2014.08.11. (v1.0) 1
Lab2_1a feladat: egyszerű függvények Az AND, OR, XOR és NOR függvények realizálása Bemeneti változók: DIP kapcsoló alsó 4 bitje Kimenet: alsó 4 LED, mégpedig a következőképen LD[0] ÉS LD[2] XOR LD[1] VAGY LD[3] NOR A függvények realizálása kétfajta felírással A kapcsoló bitjeit egyedi jeleknek tekintve A kapcsoló jeleit vektorváltozóként tekintve, a Verilog redukciós logikai operátorait használva Függvényreprezentációk elemzése az ISE szintézer technológiai szintű kapcsolási rajza alapján Szimulátor használata a tesztvektorokat ciklussal generálva Digit labor 2., 2014.08.11. (v1.0) 2 Lab2_1a feladat: projekt létrehozása Előző heti munka alapján a Xilinx ISE 14.6 használata diasorozatban ismertetett módon ISE elindítása, új projekt létrehozása Lab2_1.v forrásfájl mintakeret specifikálása LOGSYS_SP3E.UCF fájl másolatának hozzáadása és adaptálása a kívánt interfészekhez A Lab2_1a feladat specifikálása a funkcionális kódrészletekkel Funkcionális kód ellenőrzése szimulációval Konfiguráció generálás, letöltés, működés tesztelése a kártyán Digit labor 2., 2014.08.11. (v1.0) 3
Lab2_1a feladat Egybites változókként használva a bemeneti jeleket Ugyanez redukciós operátorokkal vektorváltozóra Nézzük meg a grafikus kapcsolásokat is (RTL + Tech.) A technológiai nézetben a LUT ra: SCH+EQ+TT+KM Digit labor 2., 2014.08.11. (v1.0) 4 Lab2_1a feladat: szimuláció Átkapcsolás szimulációs módba Új forrás: Lab2_1_TF Verilog Test Fixture hozzáadása Az automatikus kódrészletet most nem mutatjuk A tesztvektorok generálhatók lineáris kóddal vagy egy for ciklusban, az i ciklusváltozó használatával Négyváltozós függvények Max. 16 kombináció Teljes lefedést ad Digit labor 2., 2014.08.11. (v1.0) 5
Lab2_1a feladat: ellenőrzés A szimuláció eredménye LD[0] ÉS, LD[1] VAGY, LD[2] XOR, LD[3] NOR Generáljuk a specifikációhoz tartozó konfigurációs adatfájlt Letöltés után ellenőrizzük a működést A Laboratórium 2. hét eredmények kérdőíven jegyezzük fel a tapasztalatokat Digit labor 2., 2014.08.11. (v1.0) 6 Lab2_1b feladat Érvénytelen BCD kód detektálása Ha SW[3:0] nem BCD, akkor mind a 4 LED világít, egyébként az érvényes bemeneti kód jelenjen meg A 4 bites bemeneti kód 6 esetben nem felel meg Tehát 6 minterm detektálása a feladat Felírható lenne másképpen is, a szintézer majd egyszerűsíti Digit labor 2., 2014.08.11. (v1.0) 7
Lab2_1b feladat Felírhatjuk egyszerűbb formában is Vagy aritmetikai feltételként Bármelyiket is választjuk, a teljes megoldás ilyen lesz Digit labor 2., 2014.08.11. (v1.0) 8 A legtömörebb felírási mód Lab2_1b feladat Itt az error jel meg sem jelenik explicit módon A szintézer persze minden bitre a lehető legegyszerűbb logikát generálja ld[3] = sw[3]; //1 vált. ld[2] = sw[2] sw[3] & sw[1]; //3 vált. ld[1] = sw[1] sw[3] & sw[2]; //3 vált. ld[0] = sw[0] sw[3] & sw[2] sw[3] & sw[1]; //4 vált. Nézzük meg View Technology Schematic Digit labor 2., 2014.08.11. (v1.0) 9
Lab2_1b feladat: szimuláció, ellenőrzés Váltsunk át szimulációs módra A szimulációhoz a korábban már használt Lab2_1_TF.v Verilog Test Fixture már készen van, a 4 bites bemenethez 16 kombinációt generál Generáljuk a specifikációhoz tartozó konfigurációt Letöltés után ellenőrizzük a működést A Laboratórium 2. hét eredmények kérdőíven jegyezzük fel a tapasztalatokat Digit labor 2., 2014.08.11. (v1.0) 10 Lab2_1c feladat 4 bites érték 3 mal vagy öttel oszthatóságának jelzése Ez sajnos semmilyen módon nem egyszerűsíthető, nincsenek összevonható mintermek Esetleg felírhatjuk aritmetikai formában, de így sem tűnik egyszerűbbnek Digit labor 2., 2014.08.11. (v1.0) 11
Lab2_1c feladat A komplexitás ijesztőnek látszik ViewRTL Schematic 8 db AND4, 1 db OR8 View Technology Schematic 1 db LUT????????? Alaposabban megvizsgálva észrevehetünk valamit Digit labor 2., 2014.08.11. (v1.0) 12 Lab2_1c feladat: szimuláció, ellenőrzés Váltsunk át szimulációs módra A szimulációhoz a korábban már használt Lab2_1_TF.v Verilog Test Fixture már készen van Anégyfajtaleírása4LED en azonosan működik Generáljuk a specifikációhoz tartozó konfigurációt Letöltés után ellenőrizzük a működést A Laboratórium 2. hét eredmények kérdőíven jegyezzük fel a tapasztalatokat Digit labor 2., 2014.08.11. (v1.0) 13
Lab2_2 feladat Csak érdeklődőknek! 4 bites összeadó 4 db 1 bites FADD modulból Elvégzendő feladatok 1: adatfolyam elemek Definiálunk 2 db 4 bites előjel nélküli változót a[3:0] és b[3:0] néven, ezek az SW alsó és felső 4 4bitjét reprezentálják Definiálunk 2 db 4 bites eredmény változót sum[3:0] és ref[3:0] néven, ez utóbbi a teszteléshez kell majd Asum és ref értékeket a LED ekre is kiírjuk (4 4bit) Definiálunk egy h hiba bitet, ez jelzi, ha esetleg sum ref előfordulna valamilyen tesztvektor esetén Digit labor 2., 2014.08.11. (v1.0) 14 Lab2_2 feladat: specifikáció Elvégzendő feladatok 2: kijelzés A hiba kijelzés a 7 szegmenses kijelző legkisebb helyiértékű pozícióján egy H karaktert ír ki, ha a h hiba flag jelezne Ehhez a seg_n[7:0] vonalakra a H karakter szegmenskódját tesszük, negált értelmezéssel Adig_n[3:0] vonalak közül a felső három bit inaktív, alegalsóa h jelet kapja (bekapcsolja a kijelző digitet, ha hiba van) Gondoskodunk a col_n[4:0] jelek kikapcsolásáról Digit labor 2., 2014.08.11. (v1.0) 15
Lab2_2 feladat: projekt létrehozása Új projekt létrehozása Lab2_2 néven Lab2_2.v forrásfájl keret specifikálása Bemenetek: sw[7:0] Kimenetek: ld[7:0], seg_n[7:0], dig_n[3:0], col_n[4:0] Az _n aktív alacsony vezérlést jelent ( 0 aktív) LOGSYS_SP3E.UCF fájl hozzáadása és adaptálása (a fenti jelcsoportok aktiválása a fájlban) A Lab2_2 feladat forráskódjának specifikálása a részfunkciók fokozatos beírásával FADD.v egybites összeadó létrehozása Hierarchikus tervfelépítés kialakítása az FADD modul használatával Digit labor 2., 2014.08.11. (v1.0) 16 A Lab2_2 feladat lényegi része Egybites teljes összeadó (FADD) létrehozása Új Verilog forrás modul, FADD.v definiálása Interfészek: 1 bites a, b, ci bemenetek és s, co kimenetek Az FADD modul funkcionalitása az előadásról ismert, az s és a co logikai függvények felírhatók Többféle megoldás létezik, használjuk a legismertebb formát a[3] b[3] a[2] b[2] a[1] b[1] a[0] b[0] C[0] a b ci a b ci a b ci a b ci FADD (ADD3) FADD (ADD2) FADD (ADD1) FADD (ADD0) co s co s co s co s C[4] sum[3] C[3] sum[2] C[2] sum[1] C[1] sum[0] Digit labor 2., 2014.08.11. (v1.0) 17
A Lab2_2 feladat lényegi része Az FADD.v egység tesztelése szimulációval A teljes projekten belül most csak az FADD.v modult ellenőrizzük, mert egyszerűbb tesztelni az 1 bites alapegységet, mint a teljes 4 bites blokkot Xilinx ISE átkapcsolása szimulációs módba Új Verilog Test Fixture forrás létrehozása FADD_TF.v néven Az FADD_TF.v társítása az FADD.v tervezési egységhez (azaz nem a Lab2_2.v top level modulhoz) Digit labor 2., 2014.08.11. (v1.0) 18 A Lab2_2 feladat lényegi része Az ISE szimulációs módban két független jövőbeni szimulációs feladat látszik Az FADD_TF környezet és benne az FADD.v, mint uut A Lab2_2.v tervezési egység, amihez még nincs létrehozva a Verilog Test Fixture A továbbiakban az FADD_TF.v környezet kialakítására koncentrálunk, a teljes Lab2_2 projekt szimulációjára a már tesztelt FADD.v 4 példányos beépítése után kerül sor Digit labor 2., 2014.08.11. (v1.0) 19
A Lab2_2 feladat lényegi része Az FADD_TF kialakítása Az automatikusan generált rész Az általunk beírt tesztvektorok A 3 db 1 bites változó 8 db tesztvektort jelent Minden esetet tesztelünk, teljes, kimerítő tesztelés Digit labor 2., 2014.08.11. (v1.0) 20 A Lab2_2 feladat lényegi része A szimuláció indítása Design ablakban FADD_TF kiválasztása Process ablakban Simulate Isim elindul, és megfelelő Zoom után látható az eredmény 8 tesztvektor, 8 eredmény Digit labor 2., 2014.08.11. (v1.0) 21
A Lab2_2 feladat lényegi része A hullámforma ablak optimalizálása (popupmenü) Definiáljunk New Virtual Bus buszokat Csoportosítsuk vektorba a jeleket Az a, b, ci bemenetekből hozzuk létre a BEMENETEK buszt Az s és co kimenetekből hozzuk létre a KIMENETEK buszt Ez utóbbinál a jelek eltérő súlyúak: 2 1 co + 2 0 s=2co+s,eztabusz értékkijelzésénél, ha nem bináris számrendszert használunk, figyelembe kell venni (Reverse Bit Order, ha kell) KIMENETEK értéke = BEMENETEK 1 es bitjeinek száma Az FADD megszámolja a bemeneti 1 es biteket Digit labor 2., 2014.08.11. (v1.0) 22 A Lab2_2 terv teljes felépítése Az ellenőrzött FADD.v egybites teljes összeadó használata Könyvtári modulok beépítésének szabálya (lásd TF uut) típusnév példánynév(port jel társítás lista); FADD.v portjai: a, b és ci bemenetek; s és co kimenetek Kódminta a 4 db FADD példány beépítésére Példánynév bitpozíció szerint (tetszőleges is lehetne) A port jel társítás formátuma:.port_neve(jel neve), A vektorváltozók bitjei megfelelő sorrendben. Digit labor 2., 2014.08.11. (v1.0) 23
Lab2_2 feladat: FADD példányosítás Az ellenőrzött modul beépítése 4 példányban, lineáris kaszkádosítással Az a[3:0], b[3:0] és sum[3:0] jelek használata értelemszerű Az átviteljelek c[4:0] lánca adja a kaszkádosítást c[4] ADD3 c[3] ADD2 c[2] ADD1 c[1] ADD0 0 Az első ci konstans 0, az utolsó co nem lesz bekötve sehova Digit labor 2., 2014.08.11. (v1.0) 24 Lab2_2 feladat: teljes projekt A 4 FADD modul beépítésével a projekt hierarchia az implementációs nézetben a következő Lab2_2 top module 4 db FADD modul És a LOGSYS_SP3E.UCF fájl Mentés, szintaktikai ellenőrzés, hibák javítása A teljes projekt ellenőrzése szimulációval Kérdés: SUM = REF? (azaz a saját összeadó azonos eredményt ad e a beépített, hiteles operátorral) Digit labor 2., 2014.08.11. (v1.0) 25
A Lab2_2 terv teljes szimulációja Új Verilog Test Fixture létrehozása Lab2_2_TF Ezt most a LAB2_2.v top module hoz társítjuk Szimulációs módban így a projekt struktúra a következő A Lab2_2_TF alatt az uut ateljes Lab2_2.v tervet magába foglalja Ennek a tervnek a teljes szimulációját érdemes már ciklusban leírni (256 darab tesztvektor) Digit labor 2., 2014.08.11. (v1.0) 26 A Lab2_2 terv teljes szimulációja A Lab2_2_TF.v tartalma Általános, automatikus kód Az algoritmikus tesztvektor generálás Futtatásnál Lab2_2_TF kiválasztás és Simulate Digit labor 2., 2014.08.11. (v1.0) 27
A Lab2_2 terv teljes szimulációja A szimuláció eredményéhez (256+1)*100ns = 25,6us futásidő szükséges: N * Run 1us A belső részletesebb jeleket is hozzáadva ( szükséges az új jelek értékeinek kijelzéséhez) a, b, sum és ref hexa értékek A carry lánc bináris kijelzésű h = 0 mutatja, hogy nincs hiba Digit labor 2., 2014.08.11. (v1.0) 28 Restart Lab2_2 feladat: hibainjektálás Beépítettünk egy HIBÁT (véletlenül ) ADD2.ci bemenet c[1] lett c[2] helyett Láthatóan általában a LED eken sum = ref De ahol a dig_n[0] = h jel aktív, ott valóban sum ref Digit labor 2., 2014.08.11. (v1.0) 29
Lab2_2 feladat: ellenőrzés Generáljuk a specifikációhoz tartozó konfigurációs adatfájlt Letöltés után ellenőrizzük a működést A Laboratórium 2. hét eredmények kérdőíven válaszoljuk meg a Lab2_2 feladathoz tartozó kérdéseket Digit labor 2., 2014.08.11. (v1.0) 30