budapesti m g e v i k m i r t digitális technika (vimiaa01...

27
BME-MIT FPGA labor Digitális technika (VIMIAA01) L aboratórium 7 BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Fehér Béla Raikovich Tamás, Fejér Attila BME MIT 7 Digit labor ., 2014.08.18. (v1.0)

Upload: vantruc

Post on 20-May-2018

213 views

Category:

Documents


1 download

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