budapesti m szaki És gazdasÁgtudomÁnyi...

14
BME-MIT FPGA labor Digitális technika (VIMIAA01) Laborató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 Digit labor 7., 2014.08.18. (v1.0) BME-MIT FPGA 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ánt interfészekhez (vezérlő, adat és kijelzés interfészek) •A Lab7_1 feladatok specifikálása a funkcionális kó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

Upload: vanquynh

Post on 20-May-2018

215 views

Category:

Documents


0 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

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