Digitális technika Laboratórium 6.

Hasonló dokumentumok
Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 4

Digitális technika (VIMIAA02) Laboratórium 4

Digitális technika (VIMIAA02) Laboratórium 5.5

Digitális technika (VIMIAA01) Laboratórium 4

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

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

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

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

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

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

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.

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

Digitális technika VIMIAA01 9. hét

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

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 (VIMIAA02) Laboratórium 2

Digitális technika (VIMIAA01) Laboratórium 2

Digitális technika (VIMIAA01) Laboratórium 2

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

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

Nyolcbites számláló mintaprojekt

Adatfeldolgozó rendszer tervezése funkcionális elemekkel

Digitális technika Xilinx ISE GUI használata

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

Újrakonfigurálható eszközök

Hardver leíró nyelvek (HDL)

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

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

6. hét: A sorrendi hálózatok elemei és tervezése

Megoldás Digitális technika I. (vimia102) 4. gyakorlat: Sorrendi hálózatok alapjai, állapot gráf, állapottábla

Digitális technika házi feladat III. Megoldások

Dr. Oniga István DIGITÁLIS TECHNIKA 8

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

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

Újrakonfigurálható eszközök

Összetett feladatok megoldása

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

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

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

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

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Szekvenciális hálózatok és automaták

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...

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

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

Digitális technika VIMIAA02 7. hét

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

DIGITÁLIS TECHNIKA feladatgyűjtemény

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

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

Digitális technika (VIMIAA01) Laboratórium 9

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

5. Hét Sorrendi hálózatok

A Memory Interface Generator (MIG) beállítása a Logsys Kintex-7 FPGA kártyához

Elektronikus dobókocka tervezési példa

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

Digitális technika (VIMIAA01) Laboratórium 9

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

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

D I G I T Á L I S T E C H N I K A Gyakorló feladatok 3.

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

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

Digitális technika VIMIAA02

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Digitális technika VIMIAA02

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

8.3. AZ ASIC TESZTELÉSE

LOGIKAI TERVEZÉS. Előadó: Dr. Oniga István

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

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

Bev Be e v z e e z t e ő t az ISE re r nds nds e z r e használatához

"Eseményekre imm/connection Server scriptek futtatása

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

1. Az adott kapcsolást rajzolja le a lehető legkevesebb elemmel, a legegyszerűbben. MEGOLDÁS:

Dr. Oniga István DIGITÁLIS TECHNIKA 9

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

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

Logikai áramkörök. Informatika alapjai-5 Logikai áramkörök 1/6

Digitális technika VIMIAA01 5. hét

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

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

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

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

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Programozási segédlet DS89C450 Fejlesztőpanelhez

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

Verilog HDL ismertető 2. hét : 1. hét dia

A LOGSYS rendszer ismertetése

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

Hobbi Elektronika. A digitális elektronika alapjai: Kombinációs logikai hálózatok 1. rész

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

14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

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

Verilog ismertető (Szántó Péter, BME MIT, )

4. hét: Ideális és valódi építőelemek. Steiner Henriette Egészségügyi mérnök

Átírás:

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika Laboratórium 6. BME MIT Fehér Béla Benesócky Zoltán Lab6_1: Mintakeresés ROM-ban A feladat egy 256x8-as ROM-ban megadott feltételeket kielégítő adat megkeresése. ISE indítása, projekt létrehozása. Előre megkapott forrásfájlok hozzáadása a projekthez. A Lab6_1x feladatok elvégzése (működés tesztelése letöltéssel, különféle forráskód módosítások, szimulációk, működés tesztelés).

Lab6_1: A feladat specifikációja A részletes feladat specifikáció Tervezzünk olyan hardvert, amely egy 256x8 bites ROM adatai között megkeresi a megadott feltételt kielégítő legkisebb címen elhelyezkedő adatot. Az adat keresése egy nyomógomb lenyomására indul. A feladat befejezését a ready kimenetére kapcsolt LED jelzi. A találatot, a find kimenetére kapcsolt LED-en mutassa. A megtalált adat címe és a megtalált adat jelenjen meg a kimeneteken. A feltétel: az adat megegyezik egy kapcsolókon megadható adattal. A cím és az adat keresés közben tetszőleges értékű lehet. Lab6_1: A feladat algoritmusa A keresés algoritmusa: Egyesével címezzük végig a ROM-ot a legkisebb címtől kezdve (0x00). Minden címnél ellenőrizzük a feltétel teljesülését. A feltétel teljesülése esetén tároljuk el az adatot és a címet. Találat esetén vagy ha a memóriát végigcímeztük, állítsuk le a működést és jelezzük ki az eredményt (cím, adat, ready, find).

Lab6_1: Megoldás a változat Az a megoldás változat funkcionális blokkvázlatát mutatja az alábbi ábra. Lab6_1: Megoldás a változat Alaphelyzet rst-re, a 9 bites címszámlálóba betöltődik 0x100, q[8] = mem_end =1, ezért a számláló letiltódik (NOR kapu). A ready jelzést a JK flip-flop tiltja (rst-re törlődik). Indulás bt[0] 0->1-re. Fefutó él érzékelő a start impulzussal törli a számlálót. A ready jelzést a JK ff engedélyezi. A mem_end megszűnik, a számláló engedélyeződik és elkezd számolni. A feltétel figyelő jelez, ha a feltétel teljesül (find=1).

Lab6_1: Megoldás a változat Ha nincs megfelelő adat, a számláló értéke a memória végigcímzése után eléri a 0x100-at (q[8]=mem_end=1) Találat (find) vagy mem_end esetén a számláló letiltódik, find + mem_end jelzi a keresés végét (ready). A find jelzés esetén a számláló a megtalált adat címét tartalmazza, ezért a ROM kimenetén a megtalált adat van. Lab6_1: Megoldás b változat A b megoldás változat funkcionális blokkvázlatát mutatja az alábbi ábra.

Lab6_1: Megoldás b változat A feladatot két részre osztottuk. Az blokkvázlaton adatstruktúrának nevezett rész nagyon hasonlít az előző megoldásra, fő különbséget a címet és adatot mintavételező engedélyező regiszterek jelentik. Az adatstruktúra alkalmas a feladat megoldására, ha megfelelő vezérlő jeleket kap. Ezt végzi el a vezérlő, mely az adatsruktúrából jövő jelek (start, ok, mem_end) függvényében adja a vezérlő és egyes kimeneti jel(ek)et (cl, ready, find). Lab6_1: Megoldás b változat Tervezzük meg, a vezérlés algoritmusát! 1. Az rst után törölni kell a számlálót cl=1, ready= find=0. 2. A start hatására meg kell szüntetni a törlést és várni, amíg ok vagy mem_end jön (cl=ready=find=0). Ettől kezdve a regiszterekbe folyamatosan beíródik a cím és az adat, mivel n_stop=/cl=1.

Lab6_1: Megoldás b változat 3. Az ok jelzés után tiltani kell a regiszterekbe való átírást (n_stop =0, cl=1). Így ott a megtalált adat és címe eltárolódik, továbbá find=ready=1 és törlődik a számláló is. Innen start jelzésre a 2.-ban kell folytatni. 4. A mem_end után hasonló, mint előbb (cl=1), de find=0, ready=1. Innen start jelzésre a 2.-ban kell folytatni. Lab6_1: Megoldás b változat Az előzőek alapján felrajzolható a vezérlő állapot gráfja, mely Moore modell szerint működik. A kimeneteket megfigyelve a cl, find, ready jelhármas minden állapotban különböző értékű, az állapotok kódolására is alkalmas. Így a kimenetet maga az állapot regiszter adja, nincs szükség kimeneti kombinációs hálózatra. A kód ugyan egy bittel hosszabb a szükségesnél, de ez FPGA-nál nem gond (regiszter intenzív architektúra).

Lab6_1: Megoldás b változat Az állapotgráf verilog kódjának részletei: Állalpot kódok megadása: Állapotregiszter: Lab6_1: Megoldás b változat A következő állapot kódját előállító kombinációs hálózat és a Moore jellegű kimenetek előállítása.

Lab6_1: Választás a két változatból Az a változat: Nem tartalmaz külön vezérlőt. A vezérlő jeleket az adatstruktúrában előálló jelek felhasználásával állítjuk elő, megfelelő kiegészítő logikákkal. Hátránya, hogy bonyolult feladatoknál nehezen áttekinthetővé válik a terv, későbbi kisebb módosítása is nehézkes. Előnye, hogy sokszor egyszerűbb a teljes logika. Lab6_1: Választás a két változatból A b változat Az adatstruktúra megtervezése és a vezérlés specifikálása után a vezérlő szisztematikusan tervezhető, ezért bonyolultabb esetben célszerűbb. A vezérlőt az időzítési szempontból (sebesség) kedvezőbb Moore típusú automatával valósítjuk meg. Emiatt az a verzióhoz képest késleltető regiszterek beépítésére is szükség van. (Itt a ROM címet és adatot kellett késleltetni.)

Lab6_1: Választás a két változatból A késleltetők azért kellenek, mert a bejövő feltétel jelekre adott vezérlési válasz egy órajelet késik az a változathoz ill. Mealy jellegű vezérlőhöz képest. Bár az a változat egyszerűbb, a b változatból többet tanulhatunk, ezért ezt valósítjuk meg a gyakorlaton. (Megjegyezzük, hogy sebesség szempontjából az volna a legjobb, ha a ROM és a feltétel logika közé is regisztert tennénk. Azonban ekkor további késleltető regiszterekkel kellene bonyolítani a tervet, ezért ettől eltekintettünk.) Lab6_1a feladat: Project létrehozás, kipróbálás Az első feladat a project létrehozása a megkapott file-okból és kipróbálása a tesztkártyán ellenőrzés céljából. Project létrehozása Lab6 néven. A feladathoz kapott előkészített verilog file-ok hozzáadása a projekthez (Add Source.). Konfigurációs file generálása. Konfigurációs file letöltése a Logsys alkalmazás segítségével. Kipróbálás.

Lab6_1a feladat: Project létrehozás, kipróbálás A kipróbálás előtt nézzük meg a ROM adatait tartalmazó rom_data256 file-t, válasszunk ki belőle egy adatot és jegyezzük le az adatot és a címét. Az eredeti file minden címen magát a címet tartalmazza adatként, kivéve a 0x44-et, mert ott 0x88 található. A hardver az LDC-ről (Logsys Developement Cable) kapja az órajelet (clk). Ezért a működtetéshez is szükséges a Logsys alkalmazás, tehát a letöltés után ne zárjuk be. Lab6_1a feladat: Project létrehozás, kipróbálás A Logsys-alkalmazásal állíthatjuk be a kívánt órajel frekvenciát (Control box, Hz beállítása, set nyomógomb, clk checkbox). Az órajel frekvenciát 10Hz-nél ne állítsuk nagyobbra, ha követni akarjuk a kijelzést. A fejlesztői kártya DIPSW7-0 kapcsolóin állítsuk be a keresni kívánt 8 bites adatot binárisan, majd a BTN0 megnyomására indul a működés.

Lab6_1a feladat: Project létrehozás, kipróbálás A 7 szegmenses kijelző bal oldali 2 számjegye mutatja az aktuális ROM címet, a jobb oldali pedig az adatot, LD0 LED a ready-t, LD1 LED a find-ot, LD7- LD5 a vezérlő állapotkódját. find ready state ROM cím adat BTN0 bemenő adat Lab6_1b feladat ROM verziók szimulációja Az eredeti feladat 256x8-as ROM-ot specifikál, de kétféle megvalósítás bemutatásához, célszerűbb egy 16x8-as ROM. Ezért a keresőt megvalósító PatternSearcher modulban feltételes fordítást valósítunk meg generate és if alkalmazásával: A ROM_ADDR paraméter értéke alapján választ, hogy mely kódrészletet kell implementálni.

Lab6_1b feladat ROM verziók szimulációja ROM readmemh-val feltöltött tömbbel megvalósítva: Az adatokat egy text fileban kell megadni, hexadecimális formában, minden adatot új sorban. Pontosan annyi adatot kell megadni a file-ban, amekkora a tömb mérete, egyébként hibajelzést kapunk. Minden adat változtatás után újra kell fordítani a forrást. Lab6_1b feladat ROM verziók szimulációja Kódrészlet ROM első verziójának szimulációjából: Sok az adat, nem célszerű a felsorolásos értékadás. Algoritmikusan, for ciklussal generáljuk a címet.

Lab6_1b feladat ROM verziók szimulációja A szimuláció indítása Design ablakban ROM16x8_TF kiválasztása. Process ablakban Simulate.., megfelelő nagyítás után látható az eredmény. A jel értékek megjelenítésének számrendszerét célszerű átállítani hexadecimálisra (jel, bal egér gomb, radix ). A szimuláció eredményét a rom_data16.txt file alapján tudjuk ellenőrizni. Lab6_1b feladat ROM verziók szimulációja A ROM másik verziója kikommentezve található a ROM16x8 file-ban (át kell kommentezni). Itt always(*), case(addr) szerkezetben szereplő értékadásokkal valósul meg a ROM, mint egy 8 kimenetű kombinációs hálózat igazságtáblája. Sok adat esetén célszerűtlen. Kevés adat esetén kényelmes a szerkesztése. A szimuláció eredménye:

Lab6_1c feladat: Felfutó él figyelő és szimulációja A felfutó él figyelő modul a bemeneti jelének 0-1 átmenete után egy órajel hosszú impulzust ad ki. Egy közismert megvalósítása: (Elve: régebbi minta 0 és újabb minta 1) Itt más módon készítjük el. (Ez a 01 állapot alatti 0 bemenetet nem figyeli.) Állapotgáffal specifikáljuk, engedélyező bemenete is van (de nem fogjuk használni), majd úgy kódolunk, hogy a kimenetet közvetlenül egy flip-flop adja. A 2 bites állapotkód kisebb bitje maga a kimenet. Lab6_1c feladat: Felfutó él figyelő és szimulációja A felfutó él figyelő kódja a már ismert megoldású állapotgép megvalósítás. A kimenetét out = (state == s1)- el adtuk meg, de a szintézer program rájön az out = state[0] megoldásra, ezt az RTL (Register Transfer Language) kapcsolási rajzon nézhetjük meg.

Lab6_1c feladat: Felfutó él figyelő és szimulációja RTL kapcsolási rajz megnézése: Top modul kiválasztása. Synthesize XST/View RTL schematic. Felugró ablakban Start with the explorer wizard. PatternSearcher modul kibontása. R_edgeSense_FSM modul kiválasztás. Hozzáadás a megnézendőkhöz (Add). Create Schematic, zoom, klikkeléssel a hierarchiában lemenni a kapcsolásig. Lab6_1c feladat: Felfutó él figyelő és szimulációja Az RTL kapcsolási rajz: Jól láthatóan egy flip-flop adja a kimenetet. RTL szinten egy kapuval bonyolultabb, mint a jól ismert kapcsolás. Időzítési szempontból optimálisabb.

Lab6_1c feladat: Felfutó él figyelő és szimulációja Az él figyelő szimulációs file-jának részlete: Az órajelet folyamatosan adjuk Az rst megszüntetése után 2 felfutó élet generálunk A szimuláción látható, hogy az input felfutó élet követő órajel felfutó élétől a következő órajel felfutásig tart a kimenet. Lab6_1d feladat: A mintakereső vizsgálta A PatternSearcher modulban vannak összekapcsolva az egyes részmodulok példányai. Az egyes modulokat az azonos nevű wire típusú változók kötik össze, ez hasonló, mint a blokkvázlat jelvezetékei. A modul hierarchiája 2 szintű.

Lab6_1d feladat: A mintakereső vizsgálta A PatternSearcher modul példányosított almoduljai: Lab6_1d feladat: A mintakereső vizsgálta A címregiszternél a 4 bites cím esetén a felső 4 bitbe 0-át töltő példány generálódik le (generate, if). Az adat, címregiszter és számláló modulja paraméterezhető. #(parameter név = default value) az interfész előtt biztosítja, hogy a paraméter példányosításnál értéket kaphasson és az felhasználható a modulban. Példányosítás: modul_név példány_név #(.paraméter_név(érték)) (interfész definíciók)

Lab6_1d feladat: A mintakereső vizsgálta A modul definícó: A példány (adatregiszter): Ahogy a verilog kódból látható, a regiszter szinkron törölhető és engedélyezhető. Lab6_1d feladat: A mintakereső vizsgálta A címszámláló is paraméterezhető. Erre nem csak a regiszternél, hanem a terminal count (tc) megvalósításánál is figyelni kell. Több lehetőségünk is van, mivel a számláló bináris, a tc = &q is jó. Most ezt másképp adjuk meg. tc = q == (2**BITS_NUMBER)-1-et alkalmaztuk.

Lab6_1d feladat: A mintakereső vizsgálta A legfelső szinten a PatternSearcher modul az előző gyakorlatokból ismert LIP_4digit kijelző modullal van összekötve, így a teljes terv hierarchiája 3 szintű. Lab6_1d feladat: A mintakereső vizsgálta Szimuláció Szimulálni nem a top modult célszerű, mert a kijelző működése most nem érdekes. Ezért a PatternSearcher modult szimuláljuk, tehát a PatternSearcher_TF-et kell kiválasztani, majd Simulate.. és zoom. Ez a látvány fogad minket:.

Lab6_1d feladat: A mintakereső vizsgálta Az informatívabb megjelenítés érdekében célszerű a kijelzést kicsit átalakítani A jelnevet megfogva új helyre lehet húzni (clk, rst a tetején jobb) A busz jellegű jeleket a baloldali háromszögre kattintva ki lehet bontani, hogy egyedi jelekként látszanak Új buszt lehet létrehozni (kattintás a legutolsó létező jel alá, bal egér gomb, new virtual bus) Új és másolandó busz kibontása a háromszögre kattintva, majd a megfelelő jelet áthúzni az új helyre. Lab6_1d feladat: A mintakereső vizsgálta A jelek átnevezhetők (névre 2x kattintás után) A hullámforma ablakban nem látható jelek is hozzádhatók (Instances and Processes ablakban a modult kibontani, a megfelelő kiválasztása után bal egérgomb, Add to Wave Window)

Lab6_1d feladat: A mintakereső vizsgálta A szimulácó eredménye, ha talált: Figyelje meg következő jelek viszonyát: start és state, a state és counter, a counter és addr_r, a data és data_r, az ok és find továbbá a vezérlő állapotváltásait (state)! Lab6_1d feladat: A mintakereső vizsgálta A szimulácó eredménye, ha nem talált: Figyelje meg az tc és ready viszonyát továbbá a vezérlő állapotváltásait!

Lab6_1e feladat: A feltétel figyelő módosítása A keresési feltétel az eredeti feladatban a ROM adat és a kapcsolókon beállítható adat egyezését írja elő. Módosítsa a specifikációt saját elképzelése szerint, majd eszerint a feltétel logikát és a tesztelő file-t, továbbá végezze el a szimulációt, végül próbálja ki a konfigurációs file letöltése után a tesztpanalen! A forrás file-ban két példát adtunk a feltétel módosítására (kikommentezett rész).