BUDAPESTI M SZAKI ÉS GAZDASÁGTUDOMÁNYI...
Transcript of BUDAPESTI M SZAKI ÉS GAZDASÁGTUDOMÁNYI...
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
Digit labor 7., 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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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ósregiszterek, kivonó egység, komparátor (>, =, <)
Digit labor 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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, akimeneten 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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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
loadaexchaupdarstclk
Bo_reg
loadbexchb
rstclk
A B
SUBA‐B
A B
COMPA>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ósregiszterekspecifikációja
• Státusz jelek
Digit labor 7., 2014.08.18. (v1.0) 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 akövetkező állapot logika
– A következő állapot logikánál a specifikációban ügyelni kella teljes állapottér lefedésére (default ágak)
Digit labor 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 11
BME-MITFPGA labor
Lab7_1b feladat: GCD2 tervezése
A vezérlő állapotdiagramja Az adatstruktúra egységei
Digit labor 7., 2014.08.18. (v1.0) 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 B
SUBA‐B
A B
COMPA>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ósregiszterek és akivonó áramkörspecifikációja
• A státusz jeleknem változtak
Digit labor 7., 2014.08.18. (v1.0) 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 akövetkező állapot logika
– A következő állapot logikánál a specifikációban ügyelni kella teljes állapottér lefedésére (default ágak)
Digit labor 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 15
BME-MITFPGA labor
Lab7_1b feladat: GCD2 ellenőrzése
A 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 7., 2014.08.18. (v1.0) 16
BME-MITFPGA labor
Lab7_1c feladat: GCD3 tervezése
A vezérlő állapotdiagramja Az adatstruktúra egységei
Digit labor 7., 2014.08.18. (v1.0) 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 B
SUBA‐B
A B
COMPA>B A=B A<B
Ai Bi
agtb aeqb bgta
AoBo
B A
SUBA‐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 7., 2014.08.18. (v1.0) 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, hogytöbb logikai erőforrást használunk a kivonáshoz?
Digit labor 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 20
BME-MITFPGA labor
Lab7_1c feladat: GCD3 ellenőrzése
A 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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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 B
SUBA‐B
Ai Bi
agtb aeqb bgta
AoBo
B A
SUBA‐B
Ao Bo
A B
COMPA>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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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 7., 2014.08.18. (v1.0) 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 5., 2014.08.18. (v1.0) 26