Adatfeldolgozó rendszer tervezése funkcionális elemekkel

Hasonló dokumentumok
SZORGALMI FELADAT. 17. Oktober

Összetett feladatok megoldása

Digitális technika (VIMIAA02) Laboratórium 4

Digitális technika (VIMIAA02) Laboratórium 4

Digitális technika (VIMIAA01) Laboratórium 4

Véges állapotú gépek (FSM) tervezése

Véges állapotú gépek (FSM) tervezése

Véges állapotú gépek (FSM) tervezése

Nyolcbites számláló mintaprojekt

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

Digitális technika (VIMIAA02) Laboratórium 5.5

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

Számlálók, adatfeldolgozó egységek

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

Ellenőrző mérés mintafeladatok Mérés laboratórium 1., 2011 őszi félév

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Mérési jegyzőkönyv. az ötödik méréshez

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

Karakteres LCD kijelző használata MiniRISC processzoron

Digitális technika VIMIAA hét

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

Perifériák hozzáadása a rendszerhez

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg. Olvasható aláírás:...minta VIZSGA...

Az interrupt Benesóczky Zoltán 2004

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Programozási segédlet DS89C450 Fejlesztőpanelhez

Az MSP430 mikrovezérlők digitális I/O programozása

2008. október 9. Verzió

Digitális technika Laboratórium 6.

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

8X22 GPS SOLAR HASZNÁLATI ÚTMUTATÓ

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

Ütem Lámpafázisok A számláló értéke ütemmerker 1 P 0 M1 2 P 1 M2 3 P S 2 M3 4 Z 3 M4 5 Z 4 M5 6 Z 5 M6 7 Z 6 M7 8 S 7 M8

HASZNÁLATI ÚTMUTATÓ. GPS* SOLAR óra. A világ mind a 39 időzónáját felismeri.

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

A mikroprocesszor felépítése és működése

3.6. HAGYOMÁNYOS SZEKVENCIÁLIS FUNKCIONÁLIS EGYSÉGEK

Újrakonfigurálható eszközök

Digitális technika VIMIAA01 6. hét Fehér Béla BME MIT

Digitális technika (VIMIAA02) Laboratórium 2

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Digitális technika VIMIAA02

Digitális technika VIMIAA02

10. Digitális tároló áramkörök

Digitális technika VIMIAA01 5. hét

PLC Versenyfeladat. XIV. Országos Irányítástechnikai Programozó Verseny Budapest, március Összeállította az EvoPro Kft.

LOGSYS EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL június 16. Verzió 1.

A/D és D/A konverterek vezérlése számítógéppel

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

e 120 KÁRTYÁS KÖZPONTI ZÁR VEZÉRLŐ KÉSZÜLÉK (K-CARD)

EPS-1-60 és EPS HASZNÁLATI ÚTMUTATÓ

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

Digitális technika VIMIAA01 5. hét Fehér Béla BME MIT

Digitális technika VIMIAA02 7. hét Fehér Béla BME MIT

Digitális technika VIMIAA02 7. hét

Újrakonfigurálható eszközök

EB134 Komplex digitális áramkörök vizsgálata

7.hét: A sorrendi hálózatok elemei II.

KÜLÖNLEGES SZENZOROK. Típus F10-C20/C30/C50 F10-C25/C35/C55. NPN nyitott kollektoros kimenetek (2 db) max. 50 ma terhelhetõség

Újrakonfigurálható eszközök

Digitális rendszerek. Mikroarchitektúra szintje

The modular mitmót system. DPY kijelző kártya C API

micron s e c u r i t y p r o d u c t s EzeProx proximity kártyaolvasó és kódbillentyűzet

Beágyazott és Ambiens Rendszerek Laboratórium BMEVIMIA350. Mérési feladatok az 1., 2. és 3. mérési alkalomhoz

A fealdatot két részre osztjuk: adatstruktúrára és vezérlőre

Digitális technika VIMIAA02 6. EA

Digitális technika VIMIAA02 6. EA Fehér Béla BME MIT

PAL és GAL áramkörök. Programozható logikai áramkörök. Előadó: Nagy István

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

A LÉGKONDICIONÁLÓ TÁVIRÁNYÍTÓJA HASZNÁLATI ÚTMUTATÓ

PERREKUP DxxTx - HDK10 Rekuperátor vezérlő Használati Utasítás

LÉPCSŐHÁZI AUTOMATÁK W LÉPCSŐHÁZI AUTOMATA TIMON W SCHRACK INFO W FUNKCIÓK W MŰSZAKI ADATOK

8x53 GPS Solar HASZNÁLATI ÚTMUTATÓ

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

Digitális technika (VIMIAA01) Laboratórium 2

funkcionális elemek regiszter latch számláló shiftregiszter multiplexer dekóder komparátor összeadó ALU BCD/7szegmenses dekóder stb...

Digitális rendszerek. Digitális logika szintje

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

ISE makró (saját alkatrész) készítése

eco1 egymotoros vezérlés

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

1. Kombinációs hálózatok mérési gyakorlatai

Beachside FAMILY. Kombinált Infraszauna HASZNÁLATI ÚTMUTATÓ

SIOUX-RELÉ. Sioux relé modul telepítési leírás Szerkesztés MACIE0191

Digitális technika VIMIAA02 9. hét

Átírás:

Adatfeldolgozó rendszer tervezése funkcionális elemekkel F1. Tervezzünk egy adatbányász egységet, amely egy 256x8 bites ROM adattároló memóriában megkeresi a megadott keresési feltételnek megfelelő legelső (legkisebb címen elhelyezkedő) adatot. A keresés egy nyomógomb lenyomására indul. A feladat befejezését a ready kimenetre kapcsolt LED jelzi. Amennyiben a keresés sikeres volt, azaz talált a feltételnek megfelelő adatot, akkor a find kimenetre kapcsolt LED is bekapcsol. A megtalált adat címe és a megtalálta adat jelenjen meg két 8 bites kimeneten hexadecimális formában. Ezek a kimenetek a keresés alatt tetszőleges értékűek lehetnek. F1.a Legyen a keresési feltétel a következő: Találjuk meg egy 8 bites adatbemeneten megadott értékkel megegyező adatot! Tervezzük meg a feltétel kiértékelő logikát és definiáljunk egy cond_log.v Verilog modult, ami a feladatot képes elvégezni és az ok kimeneten jelzi, ha a feltétel teljesült! Az ilyen adatkeresési feladatokban a feltétel logika kialakítása mindig az egyéni, speciális előírásoktól függ. A modul általános interfészei az alábbi ábra szerintiek. Jelen esetben két 8 bites adat egyenlőségét kell csak vizsgálnunk, tehát erre a legcélszerűbb a Verilog == operátorát használnunk. A modul forráskódja: F1.b Tervezzük meg a 256x8 bites ROM memória címzését vezérlő áramkört. Milyen funkcionális elemet érdemes választani a 0x00 0xFF címtartomány végig pásztázására? Soroljuk fel, milyen vezérlőjelekkel, kimenetekkel kell rendelkeznie a feladat ellátásához? Az első cím beállításához használjuk a clear törlő jelet, az utolsó cím megcímzésekor jelezzen a mem_end jellel! Írjuk fel a Verilog kódot! A 256x8 bites ROM memóriát egy 8 bites bináris felfelé számlálóval címezzük. Ezt a keresés indításakor töröljük a clear jellel, értéke 0x00 lesz, ezután egyenként számol, amíg a feltétel logika az ok jellel nem jelzi, hogy talált, illetve amíg el nem ér a memória utolsó adatáig. Ezt a mem_end jellel jelzi. A működést mindkét jelzés le fogja állítani, aminek határásra a clear vezérlőjel újra 0x00-ra törlai a számlálót.

F1.c Definiáljuk a 256x8 bites ROM memóriát a Verilog HDL tervezési nyelven. Adjuk meg a ROM feltöltését biztosító adatfájl tartalmát, használatai módját. A ROM egy lehetséges specifikációját az alábbi kódrésztlet tartalmazza. Természetesen lehetséges az egyszerű assign data = ROM[addr]; előírás is. A rom_data256.txt fájl tartalma minden címen a cím értékét reprezentáló karaktersorozat, 00-tól FFig. Tetszőleges más tartalom is előírható, fontos, hogy minden címhez legyen előírt adat! F1.d A manuálisan működtetett nyomógomb használata a választott órajel sebességétől függően speciális figyelmet érdemel! Elemezzük a lehetséges problémákat és említsük meg a megoldási lehetőséget! Az indítójelet nevezzük start jelnek! A nyomógombok manuális használata nem egyszerű. Az egyszerű mechanikus nyomógombok gyakran mutatják a pergés (egy lenyomásra több be-ki-be kapcsolás) jelenségét, ami esetleg gyors órajelnél többszörös indítást is okozhat. Hasonlóan, a kézi működtetés miatt, gyors órajelnél, a feladat elvégzése után, a nyomógombot még aktívnak találva esetleg újraindulhat. Ennek elkerülésére a 4. heti gyakorlaton megismert felfutó él detektorhoz hasonló modult R_EdgeSense_FSM.v használjuk az 1 órajel periódus széles start pulzus előállítására. Ennek részleteit most nem tárgyaljuk, a feladat forráskódjában megtekinthető. F1.e Utolsó lépésként rajzoljuk fel a vezérlő állapot diagramját! A bemeneti jelek: start, kimeneti jelek: ready, find, a rendszer vezérlő jelek: cl, a keresés állapotjelei: ok és mem_end. A teljes rendszer vezérlését egy önálló vezérlőegység biztosítja. Ez a vezérlő egység egy Moore típusú FSM, amelynek bemeneti, feltétel, vezérlő és kimeneti jelei a fentiek szerintiek. A vezérlő állapotdiagramja a következő:

Bekapcsolás vagy alaphelyzet beállítás (RST) után indítójelre várakozik, kimenetei kikapcsoltak, a címszámláló törölt állapotban van, IDLE állapotban várakozik. A nyomógomb megnyomásával generált start jelzésre átlép WORK állapotba, ahol folyamatosan dolgozik, azaz minden órajelre kiadja az aktuális címet, kiolvasva ezzel a ROM-ban ott tárolt adatot, amit összehasonlít a feltétel szerint a kapcsolókon beállított értékkel. Amennyiben nincs találat és még nem végzett, azaz sem ok, sem mem_end nem aktív, akkor a cím inkrementálásával folytatja a munkát a WORK állapotban. Ha megérkezik az ok jel, azaz találat van, akkor átlép HIT állapotba, ahol kiadja mindkét aktív kimenetét (ready és find), törli a címszámlálót és vár újabb indításra. Ha megérkezik a mem_end jel, ok nélkül, azaz nincs találat, akkor átlép MISS állapotba és csak a ready kimenetét aktíválja, a find nulla marad. Ekkor is törli a címszámlálót és vár újabb indításra. Mivel a WORK állapot kivételével minden állapotban a címszámláló törölt állapotban van, ezért a feladatban megkívánt kijelzés érdekében a sikeres találat címét és adatát egy-egy 8 bites kimeneti regiszterbe el kell tárolni. A beírásra két lehetőség van: 1. Az ok jel használata, tehát ha van találat, az engedélyezi a beírást. Ekkor működés közben a kijelzők mindig nullát mutatnak, csak találat esetén íródik be a helyes eredmény. 2. A clear jel negáltja, azaz amíg nulla, tehát a teljes WORK állapotban, addíg engedélyezzük a beírást, ami által folyamatosan megjelenik/láthatjuk az működést, majd megáll a működés. A projekthez tartozó forrásfájlok a trágyhonlapon elérhetők. SZORGALMI FELADAT F2. Tervezzen egy statikus aszinkron SRAM memóriainterfész áramkört a kártyán található 128Ki*8 bites memóriához! Az áramkör legyen képes az írási és olvasási műveletek végrehajtására 8 bites adatok esetén! A működéshez használja fel a 16MHz-es rendszer órajelet!

F2.a Első lépésként tegyen javaslatot a tervezendő áramkör interfészének kialakítására. A belső interfészjelek: mem_din[7:0], mem_dout[7:0], mem_addr[16:0], mem_wr, mem_rd, clk16m, rst. A külső interfész jelek az SRAM interfészjeleivel azonosak: A[16:0], DIO[7:0], WEn, OEn, CSn. Az adatinterfészek eltérő módon csatlakoznak az áramkörön belül és az áramkörön kívül. A külső interfészt egyértelműen meghatározzák az SRAM memória áramkör jelei. Itt az adatbusz kétirányú, azaz be-/kimenet típusú. A vezérlőjelek pedig negált logika szerint működnek. A belső interfész kialakításánál nem használunk HiZ állapotú jeleket, ezért szétválasztott mem_din és mem_dout adatbuszok vannak. (Az alábbi szimbólumon mem_din és rdy jelei áramkörön belüli jelek, csak a kimeneti jellegük miatt kerültek a szimbólum jobb oldalára) F2.b Tervezze meg az SRAM memóriainterfész áramkör cím és adatkezelő hálózatát.

A memória vezérlő WR és RD bemenetei a működést indító parancsjelek. A bármelyik megjelenése esetén a 17 bites mem_addr címet regiszterben tárolja és majd ezt fogja használni az írás ill. olvasás művelet során. Az írási mem_dout adatot is regiszterben tárolja. A belső adatbusz szétválasztott, külön din és dout vezetékeket használ. A din a bemeneti adatbusz, amely az olvasott adatot fogadja, folyamatosan kapja a külső kétirányú dio vonalak értékét. Ezt a dio kétirányú külső adatbuszt, amely közvetlenül az SRAM memória I/O adatvonalaira csatlakozik csak ÍRÁS esetén hajtja meg a memória vezérlő, minden más esetben a vonalakat elengedi, a kimenetek HiZ állapotban vannak. Az SRAM mindhárom vezérlőjele negált értelmezésű, ennek figyelembe vételét a kimeneti pontoknál történő invertálással biztosítjuk. A kimeneti cím a mem_adr_reg tartalma, ezt csak egy beérkező új parancs esetén módosítjuk (és reset esetén sem állítjuk, értéke közömbös). F2.c Tervezze meg az SRAM memóriainterfész áramkör vezérlő egységét. Az állapotvezérlő megtervezése előtt röviden ismerjük meg az SRAM memória működését. Az olvasás folyamatának időzítését a következő ábra mutatja. A cím kiadása után, ha a CSn és az OEn alacsony (a WEn magas értéke mellett), akkor elindul az olvasás, és a memóriára jellemző leghosszabb időzítés (max {t AA, t CO, t OE }) után az adatkimeneti vonalak tartalmazzák az érvényes kiolvasott adatot. A használt memória időzítései a 10ns nagyságrendben vannak, tehát a 16MHz-es órajel 62,5ns periódusú órajele bőven elegendő időt hagy a működésre. Az olvasás végén a vezérlőjelek visszakapcsolhatók az inaktív állapotukba.

Az írási ciklus időzítése is hasonló, de abban az esetben 3 jól elkülöníthető fázist be kell tartanunk: Az írás előkészítése, az írás végrehajtása és az írás lezárása. Az írás előkészítését az jelenti, hogy kiadjuk az érvényes címet, inaktív állapotban hagyjuk az OEn jelet, aktiváljuk CSn vezérlést és esetleg kiadjuk a beírandó adatot. Ha a cím már elegendő ideje stabil, aktiválhatjuk a WEn beíró pulzust, melynek van egy minimális szélessége. Mivel mi most a 16MHz-es órajellel ütemezünk, minden időzítési adat teljesül. A WEn kikapcsolása lezárja az írást, de az adatot és a címet még egy rövid tartási időre stabilan kell tartanunk. Ez nálunk egy újabb órajel ciklust jelent. Ezért az írás folyamatát 3 fázisban, 3 órajel ciklus alatt hajtjuk végre. Az SRAM memóriavezérlő működését egy magasszintű állapotgépen ismertetjük. Ez abban különbözik az egyszerű állapotdiagramoktól, hogy nem csak bitváltozói vannak, hanem több bites adatokat reprezentáló értékei is lehetnek. Jelen esetben a memória cím, a memória olvasott adata és a memóriába írandó adat. természetesen teljesen tartalmazza a vezérlőjelek kiadásának időbeli sorrendjét is. A magas szintű állapotdiagram alapján a működés és a Verilog HDL FSM kód megérthető. A diagramban a belső, ponált értékű memóriavezérlő jeleket (CS,WE,OE) tüntettük fel!

Az SRAM vezérlő működéséről a szimulációs diagram az alábbi ábrán látható. A bekapcsolás után a külső adatbusz HiZ állapotú (kék szín), a címvonalak nem rendelkeznek konkrét értékkel, mert csak az első parancs után töltődik a címregiszter. Amint megérkezik a WR parancs, az állapotgép átkapcsol a WR1 állapotba. Kiadja a címvonalakra címet, az adatvonalakat kimeneti módba kapcsolja és kiadja az írási adatot, továbbá aktiválja a CSn memória kiválasztó jelet. Egy órajel ütem múlva, ami előkészítési időként van beállítva, aktiválja a WEn memória írásvezérlő jelet, ez alatt a cím és az adat stabil, nem változik. Amikor deaktiválja a WEn írásvezérlő jelet, akkor a beírás megtörtént, de még egy órajelig fenntartja a cím, adat és CSn vezérlést, ez szolgál a tartási idő teljesítésére. Eközben kiadja a RDY jelet,

ami jelzi, hogy majd képes lesz újabb parancsot fogadni. Az órajel végén visszalép az IDLE állapotba és minden aktív memória vezérlőjelet kikapcsol. Az olvasás egyszerűbb, mivel az egy nem destruktív művelet. Amint észlelte a parancsot (RD =1) kiadja az olvasási címet, aktiválja a CSn és OEn vezérlőjeleket, jelezve, hogy olvasási művelet van (WEn =1, inaktív). Az egy órajel ciklus időzítés elegendő, a memória 10ns alatt kiadja az olvasott adatot. Ez megjelenik a belső mem_din buszon, ahonnan az olvasást indító egység átveheti. Ezzel egy időben kiadja a RDY jelet, ami jelzi, hogy majd újabb parancsot lesz képes fogadni. Az órajel végén visszalép az IDLE állapotba és minden aktív memória vezérlőjelet kikapcsol. Az írásnál mem_addr = 17 h01234, mem_dout =8 hab, az olvasásnál mem_addr = 17 h04567, az olvasott adat mem_din = 8 hfb.