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 5 Fehér Béla Raikovich Tamás, Fejér Attila BME MIT
Lab5_1 feladat: regiszterek A feladat a több bites multifunkciós regiszterek vizsgálata ISE elindítása, projekt létrehozása Lab5_1.v forrásfájl mintakeret specifikálása clk, rst, mosi, miso LOGSYS GUI vezérlőjelek sw[7:0], ld[7:0] adat interfészek 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 Lab5_1 feladatok specifikálása a funkcionális kódrészletekkel: REG8E, SHR8E, SHRL8 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 1
Lab5_1a feladat: 8 bites regiszter 8 bites regiszter funkció tervezése Az általános célú adatregiszter elemi D FF-okból épül fel, a bitvektorok tárolására, bármely méretben Az összes FF közös, szinkron órajel vezérlést kap, azonos élre működnek Az egyéb vezérlőjelek is (RST, LOAD), közösek minden bitre Az előző héten a regisztert elemi DFF-ok példányosításával hoztuk létre. A továbbiakban mindig adott méretű bitvektort használunk. 2
Lab5_1a feladat: 8 bites regiszter A kívánt működést egy always blokkban specifikáljuk az érzékenységi lista: @(posedge clk) A vezérlőjelek feltételes hatását a prioritás szerinti sorrendben írjuk fel A q[7:0] változó típusa: reg (az interfész listában) Az értékadás jele <= begin end is lehet 3
Lab5_1b feladat: 8 bites shiftregiszter Shiftregiszter funkció tervezése A shiftregiszter is elemi D FF-okból épül fel Az összes FF közös, szinkron órajel vezérlést kap, azonos élre működnek, működésük vezérlése is közös A LOAD töltés jel prioritása nagyobb Az EN engedélyezi a léptetést, ami egyirányú, jobbra léptet Lényegében egy 2:1 MUX d[i] <= EN? d[i+1] : d[i]; i=0..7 Az MSB pozícióban a belépő bit d[8] = 0 4
Lab5_1b feladat: 8 bites shiftregiszter A kívánt működést egy always blokkban specifikáljuk az érzékenységi lista: @(posedge clk) A vezérlőjelek feltételes hatását a prioritás szerinti sorrendben írjuk fel A q[7:0] változó típusa reg (az interfész listában) Az értékadás jele <= begin end is lehet 5
Lab5_1c: kétirányú shiftregiszter Kétirányú shiftregiszter funkció tervezése Ez a shiftregiszter is D FF-okból épül fel, kiegészítve egy 3 bemenetű MUX funkcióval Az összes FF közös, szinkron órajel vezérlést kap, azonos élre működnek A LOAD jel prioritása nagyobb A DIR vezérli a léptetést, nincs külön engedélyezés, töltés után azonnal indul az adott irányba Ez kisebb ügyességet igényel a LOGSYS GUI kezelésénél, de beállíthatók látványos működési módok. 6
Lab5_1c: kétirányú shiftregiszter A kívánt működést egy always blokkban specifikáljuk az érzékenységi lista: @(posedge clk) A vezérlőjelek feltételes hatását a prioritás szerinti sorrendben írjuk fel A q[7:0 ] változó típusa: reg (az interfész listában) Értékadás jele <= begin end is lehet 7
Lab5_1 feladat: szimuláció, ellenőrzés Válasszuk valamelyik shiftregiszterfunkciót a feladatból az egyszerű regisztert a Lab4-ben vizsgáltuk Készítsük el a modult Ellenőrizzük szimulációval 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 8
Lab5_2 feladat: SHR számlálók KIMARAD A számlálók alapvető sorrendi hálózatok Állapotdiagramjuk ciklikus, önmagában záródó Típus Állapotszám n bitre Adatforma gyűrűs számláló n k-az-n-ből Johnson számláló 2n k db 0, (n-k) db 1 LFSR (lineárisan visszacsatolt SHR) maximum 2 n -1 bináris bináris számláló 2 n bináris dekadikus számláló 10 n/4, ha 4 n BCD A shiftregiszteres számlálók kimaradnak, minta diák a sorozat végén találhatók 9
Lab5_3 feladat: bináris számlálók A bináris számlálók sok alkalmazásban használhatók, időzítési, vezérlési, ütemezési, mérési feladatokra Üzemmódjai: szinkron törlés, szinkron töltés, engedélyezés, számlálási irány előírása Gyakran rendelkeznek mindkét számolási irányhoz végérték jelzéssel (TC, Terminal Count) A bináris számlálóknál a kaszkádosítás nem annyira fontos elem, mert a szintézis során a szükséges méretű egységet tervezzük meg, de ha szükséges, akkor a végérték jelzésen és engedélyezésen keresztül megoldható (lásd 16 bites példa) A számlálók modulus csökkentése akár a törlés, akár a töltés funkción keresztül kialakítható, mikor melyik illeszkedik jobban a feladat igényeihez A 8 bites egység interfészei: CLK, RST, LOAD, EN, DIR, D[7:0], Q[7:0] és TC 10
Lab5_3 feladat: bináris számlálók A feladat a bináris számlálók vizsgálata ISE elindítása, projekt létrehozása Lab5_3.v forrásfájl mintakeret specifikálása clk, rst, mosi, miso LOGSYS GUI vezérlőjelek bt[3:0], sw[7:0], ld[7:0] adat interfészek 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 Lab5_3 feladat specifikálása a funkcionális kódrészletekkel: BINCNT8 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 11
Lab5_3 feladat: bináris számlálók Multifunkciós regiszter aritmetikai segédáramkörrel Törlés, töltés és engedélyezés a felfelé és lefelé számoláshoz Végérték jelzés az irány szerint A szimuláció eredménye 12
Lab5_3 feladat: bináris számlálók A Lab5_3 feladat interfészlistája és belső jelei BINCNT8 beépítése egy példányban BCNT_LSB néven Kijelzés közvetlenül LED-eken 13
Lab5_3 feladat: szimuláció, ellenőrzés Készítsük el a modult Ellenőrizzük szimulációval néhány tesztvektorral Építsük be a 8 bites számlálót Generáljuk a konfigurációs adatfájlt Letöltés után ellenőrizzük a működést Először lassú órajellel (5Hz) alapfunkciók Utána gyors órajellel (250Hz) EN = 010 pulzusokkal A tapasztalatokat jegyezzük fel a Laboratórium 5. hét eredmények kérdőíven 14
SHR számlálók KIMARAD! A feladat a több bites shiftregiszter alapú számlálók vizsgálata ISE elindítása, projekt létrehozása Lab5_2.v forrásfájl mintakeret specifikálása clk, rst, mosi, miso LOGSYS GUI vezérlőjelek sw[7:0], ld[7:0] adat interfészek 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 Lab5_2a feladatok specifikálása a funkcionális kódrészletekkel: RING8, JHNS8,LFSR8 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
A gyűrűs számláló KIMARAD! Jobbra léptető regiszter, visszacsatolással Hasonlít az SHR8E modulhoz. Mi a különbség? A szimuláció eredménye 16
A Johnson számláló KIMARAD! Jobbra léptető regiszter, invertált visszacsatolással Hasonlít az előző modulhoz. Mi a különbség? A szimuláció eredménye 17
Az LFSR számláló KIMARAD! Lineárisan (XOR kapukkal) visszacsatolt shiftregiszter Érdekes áramkör, érdemes utána olvasni A szimuláció eredménye 18