Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Méréstechnika és Információs Rendszerek Tanszék Mérnök informatikus szak Alapképzés
DIGITÁLIS TECHNIKA (VIMIAA01) FELKÉSZÜLÉSI SEGÉDLET A LABORATÓRIUMI GYAKORLATOKHOZ
2014. december 1. Verzió 1.6
http://www.mit.bme.hu/oktatas /targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
Tartalomjegyzék A laboratóriumi gyakorlatok általános jellemzői .............................................................................................. 1 1
Laboratóriumi gyakorlat 1. hét ................................................................................................................ 2 1.1 Első lépések (Lab1_1 feladat) .............................................................................................................. 2 1.1.1 Egyszerű jelátvezetés (Lab1_1a feladat)...................................................................................... 3 1.1.2 Kettes komplemens képzés (Lab1_1b feladat) ............................................................................ 3 1.1.3 Aritmetikai műveletek (Lab1_1c feladat) .................................................................................... 3 1.2
2
Hétszegmenses kijelzés (Lab1_2 feladat) Csak érdeklődöknek! ............................................................. 3
Laboratóriumi gyakorlat 2. hét ................................................................................................................ 5 2.1 Kombinációs függvények (Lab2_1 feladat) ........................................................................................... 5 2.1.1 Elemi függvények (Lab2_1a feladat) ........................................................................................... 5 2.1.2 BCD kód ellenőrzése (Lab2_1b feladat) ....................................................................................... 6 2.1.3 Oszthatóság jelzése 3-ra vagy 5-re (Lab2_1c feladat) .................................................................. 6 2.2
3
Hierarchikus tervezés (Lab2_2 feladat) Csak érdeklődőknek!................................................................ 6
Laboratóriumi gyakorlat 3. hét ................................................................................................................ 8 3.1 Kombinációs funkcionális egységek (Lab3_1 feladat) ........................................................................... 9 3.1.1 Dekóder (Lab3_1a feladat) ......................................................................................................... 9 3.1.2 Enkóder (Lab3_1b feladat) Csak érdeklődőknek! ........................................................................ 9 3.1.3 Prioritás enkóder (Lab3_1c feladat) ............................................................................................ 9 3.1.4 Multiplexer (Lab3_1d feladat) .................................................................................................... 9 3.2
Kétdigites hétszegmenses kijelzés (Lab3_2 feladat) .............................................................................. 9
2015. szeptember 1. (v2.0)
i
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
A laboratóriumi gyakorlatok általános jellemzői A félév során a Digitális technika tárgy oktatásának laboratóriumi gyakorlatain egy valódi, ipari minőségű (és komplexitású) fejlesztési környezetet fogunk használni, kiegészítve egy kifejezetten oktatási célra készített demonstrációs kártyával és a hozzá tartozó alkalmazásokkal. A tárgy témakörét jelentő digitális rendszerek fizikai megvalósításának alapja a laboratóriumban egy korszerű félvezető technológia eszköz, a felhasználó által programozható logikai áramkör (FPGA, Field Programmable Gate Array) lesz. Az eszköz használata hagyományos, úgynevezett kapcsolási rajz szintű tervezéssel is lehetséges, de a tárgyban mi a programozási nyelvekhez hasonló szintaktikájú Verilog hardver leíró nyelvet (Verilog HDL) fogjuk használni. A Verilog HDL szintaktikáját fokozatosan, az újabb elemeket hétről-hétre bevezetve ismertetjük majd, először csak a legszükségesebb részhalmazt használva. A tervezői környezet ismertetésénél már az első héten megmutatjuk a projektlétrehozás, funkcionális tesztelés (szimuláció) és a programozói/konfigurációs fájl generálás lépéseit. Ezek a lépések kezdetben talán túl soknak tűnnek, de reményeink szerint könnyen elsajátíthatók és a féléves anyag elsajátítása közben készségszinten alkalmazhatók lesznek. A Xilinx ISE 14.6 tervezői rendszer a laborgépeken elérhető, továbbá a WebPACK nevű verziója bárhol szabadon telepíthető, bár kissé helyigényes (> 10 GiB). A letöltéshez, telepítéshez a tárgy honlapján találhatók információk, továbbá közvetlenül a gyártó honlapján is elérhető minden részlet. Az ISE tervezői környezet használatát a tárgy oktatása szempontjából szükséges minimumra korlátozva a Xilinx ISE 14.6 használata című diasorozat ismerteti. Első használat előtt érdemes átnézni, az első heti laboratórium ennek ismertetésével kezdődik. A diasorozat a legegyszerűbb lépéseket mutatja be, de a későbbiekben is ugyanezeket fogjuk használni, fokozatosan kiegészítve újabb és újabb részletekkel. Az elkészített programozói fájlokat a LOGSYS Spartan-3E FPGA kártya segítségével fogjuk ellenőrizni. A kártya ismertetése megtalálható a tárgy honlapján elérhető linkek segítségével. A kártya használatával a tárgy ismeretanyagának minden fontos részlete bemutatható és a félév során végig ezt fogjuk használni. Néhány esetben külső modullal is kiegészítjük, hogy még inkább erősítsük a laboratóriumi feladatok gyakorlati alkalmazásokhoz kötését. A kártyához kifejlesztett LOGSYS GUI és a félév második felében használandó MiniRISC IDE olyan PC-s alkalmazások, amelyek a digitális hardver, illetve a félév második felében a mikroprocesszoros vezérlőn realizált gépközeli szoftver jellegű feladatok fejlesztését kényelmes környezetben biztosítják. Az eszközök ismertetéséhez a tárgy honlapon linkek találhatók. A laboratóriumi gyakorlatok leírása rövid, 2 oldalas feladatismertetőben történik. Az adott hétre vonatkozó laboratóriumi ismertetőt a laboratóriumi foglalkozás előtt el kell olvasni, ennek hiánya a laboratóriumi tervezési feladatok sikeres elvégzését nagyban hátráltatja. A laboratóriumi tervezési feladatok célja a tárgy ismeretanyagának gyakorlati példákkal segített elsajátítása. A tervezési feladatokat a felkészülést segítő diasorozatok ismertetik, ezeket is előzetesen el kell olvasni. A laboratóriumi feladatok részletei a tárgy számonkéréseiben (zárthelyi, illetve vizsgakérdésekben) is előfordulnak a későbbiekben. A laboratóriumban a hallgatók 2 fős csoportokban végzik munkájukat. Bízunk benne, hogy a csoportok mindkét tagja aktívan be tud kapcsolódni a feladatok megoldásába és a félév során tudnak végig közösen dolgozni. A laboratóriumi aktivitásra vonatkozó pontszám közös a csoport tagjai számára. Minden laboratóriumi alkalommal maximum 1 pont szerezhető. Célunk ezzel pusztán az ösztönzés, ha valaki nem tudna egy-egy feladatot elvégezni, az nem jelent semmi komoly hátrányt. Persze a sikerélmény sajnos elmarad és szerintünk a jól végzett munka örömét nem pótolja semmi. A tapasztalatokat jegyezzék fel az adott heti Laboratórium eredmények kérdőíveken.
2015. szeptember 1. (v2.0)
1
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
1 Laboratóriumi gyakorlat 1. hét Az első héten a tervező rendszer és a laboratóriumi eszközök, környezet megismerése a cél.
1.1 Első lépések (Lab1_1 feladat) A Lab1_1 feladat három részletből áll. Mindhárom részfeladat ugyanazon interfészeket használja, tehát könnyen kezelhető egyetlen projektkörnyezetben. A feladatok egyszerűek, a Verilog HDL nyelv legszűkebb eszközkészletének ismeretét igénylik, és digitális technikai előképzettség nélkül is végrehajthatók. A használt nyelvi eszközöket az alábbi táblázat foglalja össze (Verilog HDL ismertetető diasorozat 1-15. dia). kulcsszavak megjegyzések jelzése bitvektorok kezelése operátorok
module, endmodule, input, output, wire, signed, assign // egyedi jelek, tartományok, konstansok +, -, *, ~ (bitenkénti negálás)
Mindhárom részfeladat általános felépítése a következő: •
Bemeneti változók: a kártya 8 bites DIP kapcsolójának jelei (sw[7:0])
•
Kimeneti változók: a kártya 8 bites LED kijelzője (ld[7:0])
•
A feladat funkcionális modellje: egy egyszerű leképezés, azaz Kimenet = f(Bemenet)
A feladat grafikus modellje az 1-1. ábrán látható. Az ábrán két verzióban rajzoltuk fel a modellt, először a jeleket egyedi bitenként rajzolva, másodszor bitvektor változóként használva. Az ábrázolási módok használata, a koncepcionális modell, mindig attól függ, melyik módszer illeszkedik jobban a feladathoz.
1-1. ábra: A Lab1_1 feladat grafikus modellje.
Az 1-1. ábra központi blokkja a tulajdonképpeni tervezési egység. A tervezési egységet egy Verilog modulban realizáljuk, amint azt az alábbi példa ismerteti. Az adott részfeladat funkcionalitását a modul törzsben specifikált működési előírások adják meg.
module Lab1_1( input [7:0] sw, output [7:0] ld ); //Ide jön a funkciót leíró HDL kód endmodule
2015. szeptember 1. (v2.0)
2
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
1.1.1 Egyszerű jelátvezetés (Lab1_1a feladat) Az első demonstrációs feladatban a „logika” 8 darab közvetlen vezetéket jelent (SW[i] → LD[i], i = 0…7), tehát nincs komplikált funkcionalitása. Az egyszerű értékadás (átmásolás) eredményeképpen az egyes kapcsolókkal tudjuk a LED-ek állapotát vezérelni. A feladat célja az első mintaprojektben a XILINX ISE 14.6 tervezői környezet használatának megismerése, a Xilinx ISim szimulátor elindítása és interaktív módban néhány tesztvektor hatásának ellenőrzése. Ezután a technológiai feldolgozás, implementáció végén, a programozói fájl generálásának befejezésekor a LOGSYS GUI elindítása, a letöltés végrehajtása és a LOGSYS Spartan-3E FPGA kártyán a működés ellenőrzése.
1.1.2 Kettes komplemens képzés (Lab1_1b feladat) A második feladat kapcsolódik az előadáson és a gyakorlaton megismert, egyik legfontosabb számábrázolási formátum, a kettes komplemens kód tulajdonságainak, jellemzőinek megismeréséhez. A bemeneti változót 8 bites bináris értékként alkalmazzuk, és az ismert részműveletekkel állítjuk elő ennek 8 biten ábrázolt kettes komplemensét.
1.1.3 Aritmetikai műveletek (Lab1_1c feladat) A harmadik feladatban a bemeneti 8 bites változóból résztartomány kijelöléssel 2 db 4 bites változót képezünk (a[3:0] és b[3:0]). Ezeket a változókat használjuk a Verilog HDL aritmetikai operátorainak tesztelésére, előjel nélküli és előjeles kódolást is alkalmazva. A fontosabb aritmetikai operátorok: + (összeadás), - (kivonás), * (szorzás), / (osztás), % (modulus) és ** (hatványozás). Az összeadás, kivonás és szorzás operátorokhoz képes a rendszer automatikusan hardvert generálni. Az osztás, a modulus és a hatványozás operátorok jobboldali operandusa nem lehet tetszőleges, csak 2 hatvány szerinti konstans, ezért ezeket most nem vizsgáljuk. Az eredményeket a 8 bites LED kijelzőn (ld[7:0]) jelenítjük meg, a szükséges konverziót a rendszer az adatok típusa szerint elvégzi, ha szükséges.
1.2 Hétszegmenses kijelzés (Lab1_2 feladat) Csak érdeklődöknek! Az első heti laboratóriumi gyakorlat utolsó feladata a hétszegmenses kijelző működtetése. Mivel még nem tudunk automatikus kapcsolgatást létrehozni, ezért csak statikusan, egy-egy digitet manuálisan kiválasztva tesztelhetünk, a nyomógombok használatával. Ez a feladat egy új projekt létrehozását igényli a sokkal bővebb interfészlista miatt. A többdigites kijelzés interfészeinek minimalizálása érdekében a kijelző világító szegmensei úgynevezett sor-oszlop kiválasztással, mátrixszerű elrendezésben kapcsolhatók be. Azaz a közösen vezérelt szegmenskép csak azon a digit pozíción válik láthatóvá, amelyhez tartozó kiválasztó jelet is aktiváljuk. (Mivel a LOGSYS Spartan-3E FPGA kártyán ráadásul a hétszegmenses kijelző és az 5x7 pontmátrix kijelző közös szegmensvezetékeket használ, a pontmátrix kijelző zavaró működését is meg kell szüntetnünk az oszlopkiválasztó jelek inaktív értékre állításával.) A hétszegmenses kijelzők egyszerűségüknél fogva elsősorban numerikus kijelzésre szolgálnak, de bizonyos esetekben, a felhasználói intelligenciát is figyelembe véve, alkalmasak karakteres üzenetek megjelenítésére is. A Lab1_2 feladat ezekre is mutat példát, melynek alapján megállapítható, hogy direkt esetben karakterenként 7 bit szükséges a kijelzéshez. A 3. héten látni fogjuk, hogy numerikus kijelzéshez egy bináris/hexa→hétszegmenses leképezéssel, indirekt módon akár 4 bit/számjegy is elegendő lehet.
2015. szeptember 1. (v2.0)
3
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
Műszaki informatika BSc képzés
Digitális technika BMEVIMIAA01
Laboratórium 1. hét eredmények Laborkurzus kódja:
Mérőcsoport száma:
Dátum:
Hallgatók neve:
NEPTUN kódja:
Digit kódja:
Mérésvezető neve:
Mérésvezető neve:
Eredmény:
Lab1_1a feladat: • A feladat elkészült, működött?
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Hány tesztvektort használtak?....................................................................................................
Lab1_1b feladat: • A kettes komplemens képző működött?
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Melyik az a 2 db 8 bites érték, melynek kettes komplemense önmaga:………………………………….
Lab1_1c feladat: • A választott adattípus:
előjeles
előjel nélküli
+ (ADD)
- (SUB)
•
A választott művelet:
•
A digit kódjaik számjegyeit páronként felhasználva (két első jegy, két második, stb.) a választott paraméterek szerint végezze el a 6 db aritmetikai műveletet és írja le az eredményeket! 1: …………………………………………………
* (MUL)
2:………………….………………………………….
Lab1_2 feladat: Csak érdeklődőknek! • A feladat elkészült, működött:
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Írják le az előírt kijelzési képekhez tartozó 8 bites szegmenskódokat: 2014: 2:………………….. 0:………………….. 1:………………….. 4:……………………… FPGA: F:………………….. P:………………….. G:………………….. A:……………………… 26°C:
2:………………….. 6:………………….. °:………………….. C:………………………
2015. szeptember 1. (v2.0)
4
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
2 Laboratóriumi gyakorlat 2. hét A laboratórium az előadáson megismert legegyszerűbb módszerek alapján a kombinációs logikai függvények szokásos specifikációs lehetőségeit tekinti át és bemutatja a realizációs technikákat. Néhány elemi függvény felírása után a feladatokban a gyakorlaton elemzett két példa realizációjára kerül sor. Ezen utóbbi esetekben felírjuk a diszjunktív normál alakhoz tartozó, mintermek használatával kifejezett logikai egyenleteket, származtatjuk a legegyszerűbb kifejezéseket (amennyiben lehetséges az egyszerűsítés) és rámutatunk a több kimenetű logika esetén kihasználható együttes minimalizációs lehetőségekre is. A következő feladat egy egyszerű funkcionális egység, az egybites teljes összeadó (FADD) tervezése és alkalmazása több bites összeadók felépítésére. Az elemi modul elkészítése a logikai összefüggések alapján történhet, a több bites egység létrehozása már egyszerű „strukturális építkezés”, azaz az összeadás műveletre vonatkozó egyszerű lineáris kaszkádosítási szabály használata. Mindegyik feladathoz elkészítjük az ellenőrzéshez szükséges szimulációs tesztkörnyezetet is és teszteljük a funkciók helyes végrehajtását. A korlátozott számú bemeneti változószámok (4, illetve 8) miatt mindegyik esetben teljes körű, kimerítő tesztelést végzünk, az összeadó esetében algoritmikus tesztvektor generálást alkalmazva és a kiértékelést támogató referencia értéket használva. A megtervezett logikai áramkörök működését a LOGSYS Spartan-3E FPGA kártyán ellenőrizzük. A 2. laboratórium során a Verilog HDL nyelvi ismereteinket bővítjük a kétváltozós bitszintű logikai operátorok (&, |, ^, ~) és ezek negáltjainak (~&, ~|, ~^) használatával, egyedi és vektorváltozókon értelmezve. Alkalmazzuk az úgynevezett redukciós logikai operátorokat is, melyek egyetlen több bites vektorváltozó saját bitjei között értelmezett műveletek. Bevezetjük az aritmetikai összehasonlítás operátort (egyenlő, nagyobb és kisebb), amely sok esetben kifejezőbb olvasási képet ad a függvények felírásakor, értelmezésekor. A szimuláció hatékonyabbá tétele érdekében megmutatjuk az algoritmikusan generált tesztvektorok használatát a lineáris időtengelyen történő felsorolással szemben. Bevezetjük a válaszjel programozott monitorozását és ez alapján egy „H” hibajel generálását, amennyiben eltérés lenne tapasztalható. Nagymennyiségű tesztvektor használata esetén ezek a lépések nagyon hasznosak.
2.1 Kombinációs függvények (Lab2_1 feladat) A Lab2_1 feladat során a kombinációs függvények 4 változós verzióit realizáljuk. A bemeneti változók a 8 bites DIP kapcsoló alsó bitjei, a kimeneteket a 8 bites LED kijelző alsó 4 bitjére kötjük. A feladat megoldása során az első héten megismert módon létrehozzuk az új projektet (Lab2_1 néven), létrehozzuk az új Verilog forrásfájlt, a projekthez hozzáadjuk az interfész specifikációt tartalmazó UCF fájlt és beállítjuk a szükséges kivezetések aktivitását.
2.1.1 Elemi függvények (Lab2_1a feladat) Az első feladat szerepe az elemi 4 változós függvények bemutatása. A beállított 4 bemeneti változó segítségével specifikáljuk az ÉS (AND), a VAGY (OR), a XOR és a NOR függvényeket. Ezen elemi függvények realizációja segít a logikai operátorok használatának gyakorlásában. Mivel a bemeneti változónk automatikusan egy több bites vektorváltozó, a logikai függvények specifikálása történhet az úgynevezett redukciós operátorokkal is. A logikai függvények különböző realizációi (kapcsolási rajz, egyenlet, igazságtáblázat és Karnaugh tábla) ellenőrizhetők a fejlesztőrendszer eszközeit használva. A funkcionális működést a szimuláció során alkalmazott 16 tesztvektor segítségével ellenőrizhetjük.
2015. szeptember 1. (v2.0)
5
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
2.1.2 BCD kód ellenőrzése (Lab2_1b feladat) A második feladatban a bemeneti 4 bites kód ellenőrzését végezzük el az érvénytelen BCD kód detektálása érdekében. A logikai feladat kettős. Először meg kell határoznunk, melyek azok a kódok, amelyek nem felelnek meg az érvényes BCD kód feltételnek, ennek jelzéséhez ki kell fejlesztenünk a hibajelző „error” függvényt. Majd a második lépésben ennek használatával a kijelzőn a „minden LED világít” hibajelzést kell kiadnunk, ha a kód nem felel meg a BCD előírásnak. A 4 bites bemeneti kódok 16 lehetséges kombinációt (mintermet) fednek le, ebből 6 nem érvényes BCD kód. Az „error” jelzés logikai függvénye ezen mintermek esetén aktív. Adjuk meg a függvényt a legegyszerűbb alakban is. Sajnos ez már nem fejezi ki közvetlenül a jelentését, sokkal kifejezőbb az aritmetikai összehasonlítással megadott forma. Az önálló „error” függvény legegyszerűbb formáját felhasználva a teljes kijelzéshez tartozó 4 vezérlő függvény származtatható: LD[i ]=SW[i] | error; (i = 0…3). Figyelembe véve az eredeti kijelzési funkciót, hogyan alakul az egyes LED-eket vezérlő logika?
2.1.3 Oszthatóság jelzése 3-ra vagy 5-re (Lab2_1c feladat) A harmadik feladat a 4 bites bemeneti kódból a 3-mal vagy 5-tel maradék nélkül osztható értékek kijelzése. A kiértékelés alapján a függvény 8 mintermje aktív. Egyszerűsítési lehetőség nincs. A negált függvény is ugyanilyen komplexitású. Azonban alaposabb vizsgálattal bizonyos szimmetriatulajdonság felfedezhető! Ez vezet az elemi XOR függvény alkalmazhatóságának felismeréséhez! (Hosszas levezetés, algebrai átalakítások után is eljuthatunk ide.)
2.2 Hierarchikus tervezés (Lab2_2 feladat) Csak érdeklődőknek! Az utolsó feladat a hierarchikus tervezést mutatja be. Összetett feladatoknál, vagy ha bizonyos alapfunkciók többször ismétlődnek, érdemes a terv bizonyos részeit almodulokba szervezni. Ezáltal könnyen újrahasznosítható, tehát több példányban beépíthető egységeink lesznek. A 2.2 feladatban ezt egy négybites összeadó kialakításán keresztül mutatjuk be. Először tervezünk egy egybites teljes összeadót (FADD) a bináris összeadás ismert logikai függvényei alapján, majd ebből a kívánt adatszélességnek megfelelően 4 db-ot lineáris kaszkádosítással, az átvitel jel láncba fűzésével összekapcsolunk és felépítünk egy négybites összeadót. Hangsúlyozni kell, hogy ez valóban azt jelenti, hogy az alapelemet 4 példányban beépítjük, minden bitpozícióban ugyanaz a típusú modul működik, ugyanazon működési elv szerint, csak éppen más helyiértékű biteken végzi el a bináris összeadást. Ezt a fajta újrafelhasználást példányosításnak nevezzük, mert a logika több példányban beépül. Egy négybites összeadó négyszer annyi logikai erőforrást igényel (ebben a struktúrában), mint egy egybites összeadó. Az ellenőrzésnél először az elemi, egybites FADD összeadót szimuláljuk. A 3 bemeneti változóból adódó 8 db tesztvektor teljes lefedést biztosít! A tesztelés előkészítésekor ügyeljünk a tesztkörnyezet hozzáadásakor a társításra, azaz hogy melyik tervfájlt kívánjuk tesztelni (az FADD.v esetén). A négybites összeadó 2 ∙ 4 + 1 = 9 bemeneti változója miatt 29 = 512 tesztvektorral lenne teljesen ellenőrizhető. Mivel a mi tervünkben a ci bemenet a lánc elején konstans 0, ezért 256 tesztvektor elegendő. A 256 tesztvektort érdemes ciklusban, algoritmikusan generálni és az ellenőrzést is egy referencia értékkel automatizálni. Természetesen a teljes funkcionális tesztelés biztosítható kevesebb tesztvektorral is, ha kihasználjuk a kaszkád felépítés tulajdonságát. A hatékony tesztelés, a legkevesebb számú, de még teljes tesztelést biztosító tesztvektor készlet meghatározása egy külön szakmai terület.
2015. szeptember 1. (v2.0)
6
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
Műszaki informatika BSc képzés
Digitális technika BMEVIMIAA01
Laboratórium 2. hét eredmények Laborkurzus kódja:
Mérőcsoport száma:
Dátum:
Hallgatók neve:
NEPTUN kódja:
Digit kódja:
Mérésvezető neve:
Mérésvezető neve:
Eredmény:
Lab2_1a feladat: • A feladat elkészült, működött?
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Melyik függvény használható egy bitvektor nulla értékének tesztelésére? ……………………………
Lab2_1b feladat: • Mi volt az error logikai függvényének a legegyszerűbb alakja? ……………………………………………… •
Aritmetikai megközelítéssel hogyan írható fel az error jel? ……………………………………………………
Lab2_1c feladat: • A 3-mal vagy 5-tel oszthatóságot tesztelő függvényben hány minterm aktív? ………………………. •
A bitképeket vizsgálva milyen közös tulajdonságot láthatunk? ……………………………………………..
•
Melyik az az alap függvény, ami éppen ezt a tulajdonságot fejezi ki? …………………………………….
Lab2_2 feladat: Csak érdeklődőknek! • A feladat elkészült, működött:
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Az FADD modul használatával elkészült 4 bites összeadó előjeles négybites bemenetek esetén képes-e a művelet helyes elvégzésére vagy sem? Válaszát indokolja! ………………………………………………………………………………………………………………………………………………
2015. szeptember 1. (v2.0)
7
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
3 Laboratóriumi gyakorlat 3. hét A laboratóriumi gyakorlat az előadáson megismert fontosabb kombinációs funkcionális logikai egységeket tekinti át, ismerteti szabványos belső felépítésüket. Ezek az egységek a dekóder/demultiplexer, enkóder, prioritás enkóder és multiplexer. Ezek a legalapvetőbb logikai funkciók, amelyek segítségével nagyon sok feladatot (könyvtári szabvány méretű modulokat használva) átláthatóan, az adatfolyam struktúrát érthetően, öndokumentáló módon realizálva oldhatunk meg. Ekkor természetesen lemondunk az abszolút minimális erőforrásigény érvényesítéséről. Ezeknek az áramköröknek lényege a bináris kód és az 1-az-N-ből kód közötti átalakítás, ami persze a logikai függvények teljes igazságtáblás reprezentációjára, a bemeneti kombinációk és a mintermek kapcsolatára vezethető vissza. Igen sok esetben ezek a „teljes” függvényreprezentációk az esetleg nem teljes kihasználtság ellenére a legkedvezőbb, könnyen tesztelhető megoldásokra vezetnek. Néhány feladat pedig automatikusan igényli ezeknek a szabványos funkcionális elemeknek a használatát. Hangsúlyozandó ezen elemek szabványos, könyvtári jellegét, mindegyiket önálló modulban realizáltuk. A választott méret 3-ból 8-ba, illetve 8-ból 3-ba, a LOGSYS Spartan-3E FPGA kártyán könnyen elérhető felhasználói interfészjelek (kapcsolók és LED-ek) adott száma miatt. A fentiekben említett szabványos kombinációs funkcionális elemek jellemzően bináris fa struktúrában bővíthetők, azaz a kisebb méretű eszközökből, a speciális engedélyező bemeneteket használva nagyobb méretű, azonos funkciójú egységek képezhetők. (Emlékezzünk vissza az egy bites teljes összeadóra, amit lineárisan lehetett bővíteni!) Tehát az 1:2 vagy 2:4 típusú dekóderekből könnyen készíthetünk 2:4 ill. 4:16 méretű dekódereket, illetve 2:1 ill. 4:1 multiplexerekből 4:1 vagy 16:1 multiplexereket. Ezeket a bővítési szabályokat érdemes ismernünk, bár a HDL alapú tervezéssel jelentőségük természetesen csökkent, hiszen a nyelvi specifikációban extrém eseteket kivéve azonnal a szükséges méretű elemet definiáljuk. Fontos tulajdonság a funkcionális egységekhez rendelhető engedélyezhetőség. Ez azt jelenti, hogy az egység kimenetei egy kiegészítő, az alapfunkcióhoz nem tartozó bemenettel, az engedélyező bemenettel teljesen kikapcsolhatók, inaktív állapotba helyezhetők. Ez a belső felépítés komplexitását esetleg kissé növeli (jellemzőn plusz egy bemenet az ÉS kapukon), de jelentősen javítja az egységek használhatóságát, flexibilitását. Az egyes speciális funkcionális egységek engedélyezhetőségének a továbbiakban még fontos jelentősége lesz. A Verilog nyelvi eszközök közül megismerünk egy fontos szerkezetet, az always blokk néven ismert viselkedési leírást. Ez a nyelvi elem egy zárt egységként értelmezhető, amelynek működését az abban található utasítások sorozata határozza meg. A blokkban előírt aktivitások akkor hajtódnak végre, ha az úgynevezett érzékenységi listában lévő események közül valamelyik bekövetkezik, ez kombinációs hálózatoknál jellemzően bármelyik bemenet megváltozását jelenti. Ennek kifejezési módja az @(*) jelölés. Ezután a blokk végrehajtási folyamata az utasítások sorról sorra történő kiértékelésével, a blokk feladatainak teljes végrehajtásával végződik és azonnal kész újabb indulásra, amint újabb esemény ezt kiváltja. Megismerjük a közömbös, Don’t Care (x) logikai érték alkalmazását, mind a bemeneti kombinációk specifikációjában, mind a tesztvektorok tömör megadási módjánál. Igen hasznos lehetőség a feladatok jó áttekinthetőségéhez, az egyszerűsített, logikus specifikáció megadáshoz. A szimulációkban eddig lineáris időtengely mellett, egyszerű felsorolással, ill. ciklikus tesztvektor generálással dolgoztunk. Ezek az aktivitások jellemzően egy bizonyos idő után befejeződnek. A laborgyakorlat során megismerjük a folyamatos, a szimuláció teljes ideje alatt fennmaradó aktivitás
2015. szeptember 1. (v2.0)
8
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
egyszerű előírhatóságát, ami a későbbiekben fontos rendszerjelek, pl. az órajel előállítását teszi lehetővé.
3.1 Kombinációs funkcionális egységek (Lab3_1 feladat) A feladat a tipikus egységek realizálására koncentrál. Egyrészt bemutatja őket, ezáltal segítve megismerésüket, tulajdonságaik memorizálását, másrészt ismerteti a különböző lehetséges specifikációs módszereiket. Ez igaz a dekóder, multiplexer és a más hasonló eszközökre. A nyelvi leírás alapján az egységek különböző módon képzelhetők el, de a végleges technológiai megoldás (egy adott környezetben és tervezői előírások mellett, mint sebesség, erőforrásigény, stb.) jellemzően ugyanazt a hálózatot eredményezik. Ennek ellenére érdemes legalább megismerni ezeket a stílusokat, hiszen a más forrásokból kapott korábban megírt specifikációk értelmezése is sok esetben szükséges képesség. A dekóder/demultiplexer ugyanannak az áramköri modulnak két lehetséges elnevezése. Az enkóder és a prioritás enkóder azonban eltérő funkciók, az utóbbi lényegesen több területen használható és egyúttal realizálni képes a normál enkóder feladatát is. A szimulációs tesztvektor készlet mérete a bemenetek számával esetleg ugrásszerűen megnőhet. Ha vannak ismereteink a realizációs részletekről, akkor sokszor elkerülhető a teljes tesztvektor készlet használatának szükségessége, alkalmazhatunk kevesebb tesztvektort, sőt kihasználhatjuk a funkcionális tesztelésnél a bemenetek tetszőleges értékkel („x”, Don’t Care) történő vezérlését is.
3.1.1 Dekóder (Lab3_1a feladat) A dekóder funkció specifikálására több lehetőség is választható. Egy specifikációs stílust alkalmazva tervezze meg a modult, ellenőrizze szimulációval és a demonstrációs kártyán működés közben.
3.1.2 Enkóder (Lab3_1b feladat) Csak érdeklődőknek! Az enkóder funkció specifikálása viszonylag egyértelmű. Gondot jelent az érvénytelen bemeneti állapotok kezelése és jelzése a kimeneten. A realizációs logika meglehetősen bonyolult. Gondolja át a megoldási lehetőségeket, tegyen javaslatot az érvénytelen bemeneti érték fennállását kijelző logikára. A feladatot nem kell realizálni, de a minta fáljokat érdemes áttekinteni.
3.1.3 Prioritás enkóder (Lab3_1c feladat) A prioritás enkóder egy nagyon hasznos funkció. Tervezze meg a modult és ellenőrizze a működését.
3.1.4 Multiplexer (Lab3_1d feladat) A multiplexer a legfontosabb alapelem. Egy specifikációs stílust alkalmazva tervezze meg a modult, ellenőrizze szimulációval és az demonstrációs kártyán működés közben.
3.2 Kétdigites hétszegmenses kijelzés (Lab3_2 feladat) A feladat során megismerjük az időmultiplex vezérlést egy kétdigites kijelzőt realizálva. Megtervezzük a hétszegmenses kijelzőhöz használható HEX7SEG hexadecimális kódkonvertert, egy multiplexerrel az órajel ütemében választunk a számjegyek közül, miközben a kijelző alsó 2 digitjét ugyanebben az ütemben váltogatjuk. A vezérlő órajel frekvenciáját széles határok közt változtatva (10 Hz – 8 MHz) megvizsgáljuk ennek hatását a „felhasználói élményre”.
2015. szeptember 1. (v2.0)
9
http://www.mit.bme.hu/oktatas/targyak/vimiaa01
Digitális technika (VIMIAA01)
Laboratórium segédlet
Műszaki informatika BSc képzés
Digitális technika BMEVIMIAA01
Laboratórium 3. hét eredmények Laborkurzus kódja:
Mérőcsoport száma:
Dátum:
Hallgatók neve:
NEPTUN kódja:
Digit kódja:
Mérésvezető neve:
Mérésvezető neve:
Eredmény:
Lab3_1a feladat: • A dekóder elkészült, működött?
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Melyik stílus szerint specifikálta? Miért ezt választotta? ………………………………………………………..
Lab3_1b feladat: Csak érdeklődőknek! • Mi a fő probléma a funkció megtervezésekor? ……………………………………………………………………… Lab3_1c feladat: • Mi az előnye a prioritás enkódernek a normál enkóderhez képest? ……………………………………………………………………………………………………………………………………………….. •
Miért előnyös a Don’t Care (x) használata a bemeneti feltételek megadásánál? ………………………………………………………………………………………………………………………………………………..
Lab3_1d feladat: • Mi a multiplexer szerepe az adatutak kezelésénél? ……………………………………………………………………………………………………………………………………………….. •
Mit jelent a buszmultiplexer elnevezés? ………………………………………………………………………………………………………………………………………………..
Lab3_2 feladat: • A feladat elkészült, működött:
Igen
Nem
Ha nem, miért?.................................................................................................................... •
Mit tapasztalt a kétdigites kijelző különböző frekvenciájú vezérlésénél? Frekvencia
1 Hz
10 Hz
100 Hz
1 kHz
10 kHz
100 kHz
1 MHz
8 Mhz
Kijelzés minősége Szöveges értékelés: ……………………………………………………………………………………………………………….. Mi a minimálisan elfogadható kapcsolási frekvencia értéke? ………………………………………………….
2015. szeptember 1. (v2.0)
10
http://www.mit.bme.hu/oktatas/targyak/vimiaa01