budapesti m g e v i k m i r t digitális technika (vimiaa01...
TRANSCRIPT
BME-MITFPGA labor
Digitális technika (VIMIAA01)Laboratórium 7
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEMVILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR
MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK
Fehér BélaRaikovich Tamás, Fejér Attila
BME MIT
7Digit labor ., 2014.08.18. (v1.0)
BME-MITFPGA labor
Lab7_1 feladat: GCD (lnko) számítása
A feladat két 8 bites pozitív szám legnagyobb közös osztójának(lnko, angol rövidítéssel GCD)meghatározása• ISE elindítása, projekt létrehozása• Lab7_1.v forrásfájl mintakeret specifikálása
– clk, rst, mosi, miso LOGSYS GUI vezérlőjelek– bt[1:0], sw[7:0], adat interfészek– clk16M, seg_n[7:0], dig_n[3:0], col_n[4:0] kijelzés
• LOGSYS_SP3E.UCF fájl hozzáadása és adaptálása a kívántinterfészekhez (vezérlő, adat és kijelzés interfészek)
• A Lab7_1 feladatok specifikálása a funkcionáliskódrészletekkel: GCD1, GCD2 vagy GCD3
• 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 ., 2014.08.18. (v1.0)7 1
BME-MITFPGA labor
Lab7_1 feladat: GCD (lnko) számítása
• Egy számpár legnagyobb közös osztóját keressük• GCD(a,b) Euklideszi algoritmus → maradékos osztás
– a = b*q1 + r1, r1 = a % b– b = r1*q2 +r2, r2 = b % r1– r1 = r2*q3 +r3 r3 = r1 % r2– …., ahol |b|>r1>r2…>=0 ahol % a Verilog mod op.– A GCD az utolsó nem nulla maradék– Jó algoritmus, viszonylag gyorsan konvergál
• DE: A Verilog HDL % operátor nem szintetizálható– Tervezzünk egy osztó modult? Lehet, de nem könnyű.
Digit labor ., 2014.08.18. (v1.0)7 2
BME-MITFPGA labor
Lab7_1 feladat: GCD (lnko) számítása
• Egyszerűsítsük az algoritmust szintetizálható műveletre – GCD(a,b) = GCD(a-b, b), ha a > b Művelet: a-b → a– GCD(a,b) = GCD(a, b-a), ha b > a Művelet: b-a → b– Leállás adott lépés után, ha ao = bo, ez a GCD(a,b)
• Ez már szintetizálható, egyszerűen tervezhető, de többiterációt igényel, a végrehajtás hosszabb ideig tart– Különösen relatív prímeknél
• A tervezést az adatstruktúra hálózat és az ehhezszükséges vezérlőegység szétválasztásával kezdjük– Adatstruktúra: bemenet, kimenet, multifunkciós
regiszterek, kivonó egység, komparátor (>, =, <)
Digit labor ., 2014.08.18. (v1.0)7 3
BME-MITFPGA labor
Lab7_1 feladat: GCD (lnko) számítása
Több lehetséges adatstruktúra verzió (és ennekmegfelelően algoritmus végrehajtás lehetséges)• 1. verzió: Ha a > b nem teljesül, írjuk át egymásba a
regiszterek tartalmát, ezután már a > b és kivonás után akülönbséget írjuk az a regiszterbe. Amikor a = b, leállás.
• 2. verzió: Ha a > b, elvégezzük a kivonást és akülönbséget írjuk az a regiszterbe. Ha a < b, felcseréljükaz operandusokat a kivonó bemenetén (RSUB), és akülönbséget a b regiszterbe írjuk. Amikor a = b, leállás.
• 3. verzió: Két azonos felépítésű egységet tervezünk,mindkettő képes minden ütemben kivonást végezni asaját tartalma és a másik regiszter tartalma között. Csakazt az eredményt tároljuk, ahol a nagyobb operandusvolt. Amikor a = b, leállás.
Digit labor ., 2014.08.18. (v1.0)7 4
BME-MITFPGA labor
Lab7_1 feladat: GCD tervezése
• Vezérlőegység (jellemzően Moore típusú FSM)• A GCD számító egység működésének általános
specifikációja:– Bekapcsolás vagy RST után alapállapot, a kimenet 0– Indítás a START pulzusra. Működési lépések:
• Bemeneti operandusok betöltése• Operandusok összehasonlítása• Amíg a ≠ b, a szükséges művelet végrehajtása, iterációban, a
kimeneten a regisztertartalmak elérhetők
– Ha a = b, akkor a READY pulzus kiadása, visszatérés azalapállapotba és leállás
Digit labor ., 2014.08.18. (v1.0)7 5
BME-MITFPGA labor
Lab7_1 feladat: GCD tervezése• A teljes egység blokkdiagramja
• A vezérlőjelek (verziótól függően kellenek):– Operandus regiszterek töltése a bemenetről: loada, loadb– Operandus regiszterek tartalmának cseréje: excha, exchb– Fordított kivonás operandus cseréje: rsub– Operandus regiszterek frissítése az iteráció során: upda, updb
• Státuszjelek a regiszterek tartalma alapján: agtb, bgta, aeqb
Digit labor ., 2014.08.18. (v1.0)7 6
ai
GCDadatstruktúra
GCDvezérlő
rst rstvezérlés
státusz
GCD
clk rst START
READY
bi
ao bo
BME-MITFPGA labor
Lab7_1a feladat: GCD1 tervezése
A vezérlő állapotdiagramja Az adatstruktúra egységei
Digit labor ., 2014.08.18. (v1.0)7 7
IDLE
START=0
INIT
TEST
READY
EXCH
ASUBB
START=1
loada=1loadb=1
READY=1
bgta=1
agtb=1
excha=1exchb=1
upda=1
aeqb=1
Ao_reg
loadaexchaupda
rstclk
Bo_reg
loadbexchb
rstclk
A BSUBA-B
A BCOMP
A>B A=B A<B
Ao
Ai Bi
Bo agtb aeqb bgta
Ao Bo
diff
BME-MITFPGA labor
Lab7_1a feladat: GCD1 tervezése
• A GCD1.v forráskód részletei: adatstruktúra • Multifunkciós
regiszterekspecifikációja
• Státusz jelek
Digit labor ., 2014.08.18. (v1.0)7 8
BME-MITFPGA labor
Lab7_1a feladat: GCD1 tervezése• A GCD1.v forráskód részletei: vezérlőegység• A 3 bites állapotregiszter, a választott állapotkódok és a
következő állapot logika– A következő állapot logikánál a specifikációban ügyelni kell
a teljes állapottér lefedésére (default ágak)
Digit labor ., 2014.08.18. (v1.0)7 9
BME-MITFPGA labor
Lab7_1a feladat: GCD1 tervezése
A GCD1.v forráskód részletei: kimeneti logika • A Moore vezérlőnél a kimeneti jelek csak az
állapotkódtól függenek. Ez egy korrekt megoldás,áttekinthető digitális rendszer.
• Sajnos ennek következtében gyakran szükség lehetönálló (extra) állapotokra (pl. az INIT „csak betölt”)
• A vezérlőjeleket az adatstruktúra szerint leltáraztuk,ezért vannak azonos, redundánsnak tűnő jelek
Digit labor ., 2014.08.18. (v1.0)7 10
BME-MITFPGA labor
Lab7_1a feladat: GCD1 ellenőrzése
A működés lefolyása, jól látható az• INIT-TEST-SUB-TEST-EXCH-TEST-SUB-…-TEST-READY
jellegű állapotsorozat és a hozzá tartozó változások• Első futás (ai=65, bi=52) 14 órajel GCD(65,52)=13
Digit labor ., 2014.08.18. (v1.0)7 11
BME-MITFPGA labor
Lab7_1b feladat: GCD2 tervezése
A vezérlő állapotdiagramja Az adatstruktúra egységei
Digit labor ., 2014.08.18. (v1.0)7 12
IDLE
START=0
INIT
TEST
READY
RSUB
SUB
START=1
loada=1loadb=1
READY=1
bgta=1
agtb=1
updb=1rsub=1
upda=1
aeqb=1
Ao_reg
loadaupda
rstclk
Bo_reg
loadbupdb
rstclk
A BSUBA-B
A BCOMP
A>B A=B A<B
Ao
Ai Bi
Bo agtb aeqb bgta
Ao Bo
MUX EXCH
rsub
X Y
diff
BME-MITFPGA labor
Lab7_1b feladat: GCD2 tervezése
• A GCD2.v forráskód részletei: adatstruktúra • A multifunkciós
regiszterek és akivonó áramkörspecifikációja
• A státusz jeleknem változtak
Digit labor ., 2014.08.18. (v1.0)7 13
BME-MITFPGA labor
Lab7_1b feladat: GCD2 tervezése• A GCD2.v forráskód részletei: vezérlőegység• A 3 bites állapotregiszter, a választott állapotkódok és a
következő állapot logika– A következő állapot logikánál a specifikációban ügyelni kell
a teljes állapottér lefedésére (default ágak)
Digit labor ., 2014.08.18. (v1.0)7 14
BME-MITFPGA labor
Lab7_1b feladat: GCD2 tervezése
A GCD2.v forráskód részletei: kimeneti logika • A Moore vezérlőnél a kimeneti jelek csak az
állapotkódtól függenek. Ez egy korrekt megoldás,áttekinthető digitális rendszer.
• Sajnos ennek következtében gyakran szükség lehetönálló (extra) állapotokra (pl. az INIT „csak betölt”)
• A vezérlőjeleket az adatstruktúra szerint leltáraztuk,ezért vannak azonos, redundánsnak tűnő jelek
Digit labor ., 2014.08.18. (v1.0)7 15
BME-MITFPGA labor
Lab7_1b feladat: GCD2 ellenőrzéseA működés lefolyása, jól látható az• INIT-TEST-SUB-TEST-RSUB-TEST-RSUB-…-TEST-READY
jellegű állapotsorozat és a hozzá tartozó változások• Első futás (ai=65, bi=52) 12 órajel GCD(65,52)=13
Digit labor ., 2014.08.18. (v1.0)7 16
BME-MITFPGA labor
Lab7_1c feladat: GCD3 tervezése
A vezérlő állapotdiagramja Az adatstruktúra egységei
Digit labor ., 2014.08.18. (v1.0)7 17
IDLE
START=0
INIT
TEST
READY
RSUB
SUB
START=1
loada=1loadb=1
READY=1
bgta=1
agtb=1
upda=1
aeqb=1
updb=1
Ao_reg
loadaupda
rstclk
Bo_reg
loadbupdb
rstclk
A BSUBA-B
A BCOMP
A>B A=B A<B
Ai Bi
agtb aeqb bgta
AoBo
B ASUBA-B
Ao Bo
BME-MITFPGA labor
Lab7_1c feladat: GCD3 tervezése
• A GCD3.v forráskód részletei: adatstruktúra • A multifunkciós regiszterek tulajdonképpen egy-egy
törölhető, tölthető és kivonás művelettel rendelkező akkumulátor egységet alkotnak, teljesen szimmetrikus felépítés
• A státusz jeleknem változtak
Digit labor ., 2014.08.18. (v1.0)7 18
BME-MITFPGA labor
Lab7_1c feladat: GCD3 tervezése• A GCD3.v forráskód részletei: vezérlőegység• A 3 bites állapotregiszter, a választott állapotkódok és a
következő állapot logika– Ez teljesen azonos a GCD2-vel. Mi az előnye, hogy
több logikai erőforrást használunk a kivonáshoz?
Digit labor ., 2014.08.18. (v1.0)7 19
BME-MITFPGA labor
Lab7_1c feladat: GCD3 tervezése
A GCD3.v forráskód részletei: kimeneti logika • A Moore vezérlőnél a kimeneti jelek csak az
állapotkódtól függenek. Ez egy korrekt megoldás,áttekinthető digitális rendszer.
• Sajnos ennek következtében gyakran szükség lehetönálló (extra) állapotokra (pl. az INIT „csak betölt”)
• A vezérlőjeleket az adatstruktúra szerint leltáraztuk,ezért vannak azonos, redundánsnak tűnő jelek
Digit labor ., 2014.08.18. (v1.0)7 20
BME-MITFPGA labor
Lab7_1c feladat: GCD3 ellenőrzéseA működés lefolyása, jól látható az• INIT-TEST-SUB-TEST-RSUB-TEST-RSUB-…-TEST-READY
állapotsorozaton (ugyanaz, mint GCD2)• Első futás (ai=65, bi=52) 12 órajel GCD(65,52)=13
Digit labor ., 2014.08.18. (v1.0)7 21
BME-MITFPGA labor
Lab7_1d feladat: GCD3 Mealy vezérlővel
Mealy típusú vezérlőnél a bemeneti vezérlés és astátuszjelek közvetlenül hatnak a kimeneti vezérlőjelekre.Ez gyakran jelentős állapotszám csökkenéshez vezet.
A vezérlő állapotdiagramja Az adatstruktúra egységei
Digit labor ., 2014.08.18. (v1.0)7 22
IDLE
START=0
RUN
START=1 /loada=1loadb=1
agtb=1 /upda=1
aeqb=1 / READY=1
bgta=1 /updb=1
Ao_reg
loadaupda
rstclk
Bo_reg
loadbupdb
rstclk
A BSUBA-B
Ai Bi
agtb aeqb bgta
AoBo
B ASUBA-B
Ao Bo
A BCOMP
A>B A=B A<B
BME-MITFPGA labor
Lab7_1d feladat: GCD3 Mealy vezérlővel
• Az adatstruktúra ugyanaz, mint az előző verzióban• A multifunkciós regiszterek tulajdonképpen egy-egy
törölhető, tölthető és kivonás művelettel rendelkező akkumulátor egységet alkotnak, teljesen szimmetrikus felépítés
• A státusz jeleknem változtak
Digit labor ., 2014.08.18. (v1.0)7 23
BME-MITFPGA labor
Lab7_1d feladat: GCD3 Mealy vezérlővel
• A GCD3_Mealy.v forráskód vezérlőegysége• 1 bites állapotregiszter, IDLE és RUN állapotok
– IDLE állapotban a START juthat érvényre– RUN állapotban az adatstruktúra státusz jelei
Digit labor ., 2014.08.18. (v1.0)7 24
BME-MITFPGA labor
A működés lefolyása jól látható az• IDLE-RUN-RUN-RUN-RUN-IDLE állapotsorozaton• Ebből az utolsó RUN már a READY jelzéssel egyidejű• Futásidő (ai=65, bi=52) 6 órajel, GCD(65,52)=13
Digit labor ., 2014.08.18. (v1.0)7 25
Lab7_1d feladat: GCD3 Mealy ellenőrzése
BME-MITFPGA labor
Lab7_1 feladat: szimuláció, ellenőrzés
• Válasszuk valamelyik GCD alkalmazás specifikusprocesszort a feladatból
• 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• A tapasztalatokat jegyezzük fel a Laboratórium 7.
hét eredmények kérdőíven
Digit labor ., 2014.08.18. (v1.0)5 26