Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar
Szabó Tamás – Dr. Lovassy Rita - Tompos Péter
DIGITÁLIS TECHNIKA LABÓRATÓRIUMI ÚTMUTATÓ
3. kiadás
Mikroelektronikai és Technológia Intézet Budapest, 2014
-1-
Bevezetés Az Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar nappali tagozaton lévő hallgatói részére a Digitális technika II. laboratóriumon belül 3 db. számítógépes mérési gyakorlat áll rendelkezésre. Előtanulmányok: Digitális technika I és Digitális technika II. Egy-egy gyakorlat elvégzése 4 órás foglalkozást igényel. A gyakorlat digitális alapáramkörök működésének vizsgálatával foglalkozik, megismerve a SPARTAN 3S 500E típusú FPGA fejlesztőpanel (Digilent) belső felépítését, ill. az FPGA fejlesztés menetét. A nagybonyolultságú IC-k alkalmazása és a velük való tervezés számítógépek segítségével és egyre nagyobb tudású CAD (Computer Aided Design) rendszerekkel történik. Különösen nagy jelentősége van a programozható logikák elterjedésének, melyek segítségével jelentősen lerövidített tervezési ciklus nagymértékű anyagi megtakarítást jelent [Benesóczky Zoltán: Digitális tervezés funkcionális elemekkel és mikroprocesszorral, Műegyetemi Kiadó, 2008]. Felhasználó által specifikált, ill. programozható eszközöket az előkészítettségük alapján, az alábbi módon csoportosítják: • Egyedi tervezésű (Fully Custom) • Félig előkészített (Semi Custom), mely lehet: - Cella könyvtáras (Standard Cells) - Maszk programozott eszközök (Mask Programmable Gate Array) - Programozható logikák (FPGA- Field Programmable Devices) Felhasználó által programozható eszközöket bonyolultságuk és felépítésük szerint az alábbi csoportokra oszthatjuk: • Kisebb bonyolultságú eszközök (PROM-ok, bipoláris, ECL és CMOS technológia) • Programmable Logic Devices (PLD-k, AND-OR struktúra, főként CMOS technológia) PAL (AND mátrix programozható) PLA (AND és OR mátrix programozható) • Közepes és nagy bonyolultságú eszközök (CMOS technológia) CPLD (komplex PLD-k, egy eszközben több PLD áramkör) FPGA (Field Programmable Gate Array, egy eszközben rendkívül sok, viszonylag egyszerű logikai tömb, programozható összeköttetésekkel)
FPGA eszközök [Benesóczky Zoltán: mikroprocesszorral, Műegyetemi Kiadó, 2008].
Digitális
tervezés
funkcionális
elemekkel és
A nagy alkatrészsűrűség és programozhatóság miatt prototípustervezésre és kis sorozatú nagy bonyolultságú speciális logikák megvalósítására a legalkalmasabb eszköz. A chip felületén többnyire egyenletesen vannak elhelyezve a konfigurálható logikai blokkok (Configurable Logic Bloks – CLBs), és azok összeköttetését lehetővé tevő, hierarchikus huzalozási erőforrások. A PLD-khez képest egyszerűbbek és kisebbek a logikai cellák, így azokhoz hasonló bonyolultságú logika csak többszintű hálózattal építhető fel. A jelterjedési idők, maximális órajel frekvencia, órajel csúszás nagymértékben függnek a tervező rendszer minőségétől is. De, a hagyományos gate-array-khez képest alacsonyabb a kapusűrűségük, lassabbak és nagy sorozat esetén magasabb az áruk. Programozás szempontjából két technológia terjedt el: - egyszer programozható – antifuse - SRAM – a konfiguráció bármikor megváltoztatható -2-
FPGA –k elrendezései Az FPGA-kat geometriai elrendezésük alapján négy csoportra osztják: - Szimmetrikus tömb – a logikai blokkokat vízszintesen és függőlegesen elhelyezett huzalozással lehet összekötni.
1. ábra Aszimmetrikus vagy sor bázisú – a logikai blokkok sorokba vannak elrendezve, közöttük vízszintes és függőleges huzalozás található
2. ábra -
Hierarchikus PLD (CPLD) – a PLD jellegű logikai blokkokat globális huzalozási mező, a PLD blokkon belüli logikát pedig lokális huzalozás kapcsolja össze.
3. ábra -
Egyszintű (Sea of gate) – az elemi logikai erőforrások (tranzisztorok, kapuk) szinte egyenletesen helyezkednek el a chip felületén, közöttük minimális huzalozás található -3-
4. ábra Logikai erőforrások Az FPGA-k logikai erőforrásai általában azonos felépítésűek, viszonylag egyenletesen elosztva. Eltérő komplexitású blokkokból is építkezhetnek. A legkisebb bonyolultság a tranzisztor szint, a legnagyobb pedig a PLD-k konfigurálható logikai blokkjának felel meg. Alap építőelemek Az FPGA-k alap építőelemei többnyire a következők: - tranzisztor (tranzisztor tömbök) - NAND kapu - Multiplexer logika - Memória táblázat (Look Up Table)
5. ábra Huzalozási erőforrások Az FPGA-k huzalozása általában valamilyen hierarchikus elrendezést követ: - közvetlen huzalozás a szomszédos kapcsolatok létrehozására - huzalozás a lokális, ill. regionális kapcsolatok létrehozására - globális huzalozási erőforrások általános célra I/O cellák Az FPGA-k bemeneteire I/O cellákon keresztül kerül a bemenő jel, ill. ezen keresztül tartja a kapcsolatot a kimenettel. Tulajdonságaik: - választható direkt bementek, tárolt (regiszter vagy latch) bemenetek - sok esetben jelszint választási lehetőség van (TTL kompatibilis, CMOS kompatibilis) - programozható direkt kimenetek, regiszteres kimenetek, háromállapotú, open drain-es kimenet - kimeneti jelszint választási lehetőség - programozható slew rate korlátozási lehetőség -4-
XILINX FPGA családok Look up table logikára példa a XILINX FPGA család. Jellemzői: - kapcsolómátrixokkal összeköthető vízszintes és függőleges huzalozási szegmensekkel alakítható ki kapcsolat a távoli logikai blokkok között
-
-
6. ábra a szomszédos logikai blokkok direkt is összekapcsolhatók a gyors jelek számára vízszintes és függőleges ún. long line-ok biztosítják a kis jelkésleltetést a logikai blokkok SRAM (Look Up Table, LUT) alapúak, D flip-flopokkal kiegészítve (aszinkron set és reset lehetőséggel) Az I/O blokkok konfigurálhatók kombinációs vagy regiszteres bemenetként, kombinációs kimenetként, és a XC 3000 és XC 4000 családnál regiszteres kimenetként is programozható polaritással Szimmetrikus elrendezésű, egyenletesen elhelyezett logikai blokkok
XILINX SPARTAN-3E FPGA Alkotó elemei: - konfigurálható logikai blokk tömbök (Configurable Logical Blocks - CLBs) - I/O cellák - RAM egységek - 18x18-as multiplexerek - Digital Clock Manager (DCM) blokkok – feladata a jelkésleltetések kiküszöbölése, továbbá alkalmas az órajel frekvenciájának növelésére, ill. csökkentésére A Spartan-3E FPGA minden egyes CLB-je 4 részből áll, mindegyikük 16x1 RAM-os LUT-tal, melyek bármilyen 4 változós kombinációs logikai hálózat megvalósítására alkalmasak. A CLB mindegyik része két-két LUT és két-két D tárolót tartalmaz. Lásd a 7. ábra szerint.
-5-
7. ábra A gyakorlatok digitális alapáramkörök működésének vizsgálatával foglalkoznak, megismerve a SPARTAN 3S 500E típusú FPGA fejlesztőpanel (Digilent) belső felépítését, ill. az FPGA fejlesztés menetét. A Nexys-2 fejlesztőpanelen lévő Xilinx Spartan3E-500FG320 típusú FPGA jellemzői: 1.164 CLB-k, melyek 46 sort és 34 oszlopot tartalmaznak 4.656 szelet, mely összesen 9.312 LUT-t és flip-flopokat foglal magában 368.640 bites RAM Általában az FPGA-k felhasználási területe nagyobb, mint a CPLD-é, lásd az alábbi táblázat [R. E. Haskell, D. M. Hanna: Digital Design Using Digilent FPGA Boards, LBE Books, Rochester Hills, MI, 2009].
1. táblázat Köztudott, hogy az FPGA-k nem tartalmaznak „egyszerű” VAGY és ÉS kapukat. A táblázatban szereplő No. of Gates az FPGA RAM-jaiban elhelyezkedő LUT blokkok kapuira vonatkozik. Mindegyik rész 2-2 ÉS kaput és 2-2 XOR kaput tartalmaz, melyek az aritmetikai műveletek (összegzés és szorzás) elvégzését segítik. Figyelem: az FPGA-k milliós nagyságrendben tartalmaznak logikai kapukat és tízezres nagyságrendben flip-flopokat. Ezért, ez az eszköz nagy alkatrészsűrűség és programozhatóság miatt prototípustervezésre és kis sorozatú nagy bonyolultságú speciális logikák megvalósítására alkalmas. Javasolt hardware leíró nyelv a VHDL vagy a Verilog. VHSIC HDL, azaz Very High Speed Integrated Circuit Hardware Description Language.
-6-
Céljai: Rugalmas leírást nyújtson Minden szimulátorral ugyanazt az eredményt adja Technológia függetlenség Az FPGA alkalmazási területe egyre növekszik. Néhány jellemző terület: digitális jelfeldolgozás, űrkutatási és katonasági rendszerek, orvosi képalkotás, számítógépes látás, beszédfelismerés, kriptográfia, bioinformatika stb.
-7-
SPARTAN 3S 500E típusú FPGA fejlesztőpanel ismertetése A mérőpanel előlapján vannak elhelyezve mindazon elemek, melyek a betöltött program működtetéséhez illetve kijelzéséhez szükségesek: • • • •
8 db. kétállású kapcsoló (L és H szintek beállításához) 4 db. nyomógomb (alaphelyzetben: L szint generálásához) 10 db. LED (a vizsgálni kívánt belső állapotok kijelzéséhez) A plexi takarólap alatt 4 db. 7 szegmenses kijelző található
8. ábra A panel hátoldalán 9 + (1 GND) banánhüvely csatlakozók (I/O portokként használhatók), továbbá egy telep csatlakozó (nem használjuk), valamint egy tápfeszültség forrás választó háromállású tolókapcsoló (középső állás: kikapcsolt állapot) található.
9. ábra A panel baloldalán található mini USB –vel csatlakoztatható a számítógéphez. -8-
10. ábra
Használati útmutató • • •
A fejlesztőpanelt kapcsolja be és a mini USB kábel segítségével csatlakoztassa a számítógéphez. A számítógépen indítsa el a XILINX ISE DESIGN SUITE 14.7 fejlesztő programot. A szoftver és az FPGA honlapja: http://www.xilinx.com
11. ábra • •
Minden projekt saját külön könyvtárba kerül, amelyet a program automatikusan létrehoz. A projekteket a c:\Users\DigitLab\Documents\Xilinx\%Saját_teljes_név könyvtárba mentse, a név ékezet nélkül! Hozzon létre egy új projektet: New Project (A Top- level source type: Schematic legyen). Amennyiben a program indítása után automatikusan meg nyílik egy projekt a File - Close Project –el zárjuk be. A Projekt név első betűje csak az angol abc betűi közül lehet, továbbá tartalmazhat számot és néhány speciális karaktert (. - _).
-9-
12. ábra •
A Next gombra kattintás után megjelenő ablakban a rendelkezésünkre álló FPGA típus tulajdonságait állítja be.
13. ábra
- 10 -
•
A Next kiválasztása után megjelenő ablakban egy összefoglalót kap a projektről, ha minden adatot leellenőrzött és rendben talált, akkor: Finish.
14. ábra A következő lépésként hozza létre a forrás fájlt, Project – New Source… amely Schematic típusú. A File név első betűje csak az angol abc betűi közül lehet, továbbá tartalmazhat számot és néhány speciális karaktert (. - _)
15. ábra - 11 -
•
Ezt követően elkezdheti az elvi rajz szerkesztését a jobb oldali nagy fehér munkaterületen.
16. ábra •
•
Az elvi rajz szerkesztése a megfelelő szimbólumok kiválasztásából, (Symbols), azok helyre vonszolásából (kattint/húz), a kivezetések összekötéséből (Add Wire), I/O csatlakozási pontok (I/O Marker) hozzá adásából, esetleg bus hozzá adásából és ebben az esetben busz kivezetés hozzá adásából (Add Bus Tap) áll. A rajzterületen elhelyezett alkatrészek orientációját kétféleképpen is meg lehet változtatni. A Symbols ablakon, az alkatrész kijelölése után, az "Orientation" legördülő menüben adható meg a kívánt orientáció. Később, a rajzterületen elhelyezett alkatrész forgatásához először ki kell jelölni az elemet, majd a CTRL+Z és CTRL+R billentyű kombinációk használatával lehet elforgatni a kijelölt elemet.
17. ábra - 12 -
•
Az I/O markerek, a Bus Tap, a bufferek, a Bus és kivezetéseinek elhelyezése:
18. ábra Megjegyzés: Az alkatrész Bus kivezetésére kattintva közönséges vonalat kell húzni (Add Wire), és a program automatikusan bus vonalat (vastag vonal) húz. A Bus és kivezetéseinek editálása dupla klikkel történik, ekkor a megjelenő ablakban elnevezhetjük a bus-t vagy annak egy kivezetését (Value). Ezt követően Apply, majd Edit.
19. ábra
- 13 -
A megjelenő ablakban pozícionálhatja és elhelyezheti a nevét.
20. ábra
Hasznos kiegészítés: A program lehetővé teszi azt, hogy a projekt elvi rajzába saját alkatrészt definiáljon. Ez akkor hasznos, ha az áramkör működtetéséhez egy új (könyvtárban nem található) önálló elem szükséges, vagy esetleg egy meglévő részletei zavaróak. (Pl: egy számláló működtetéséhez szükséges egy órajel generátor, de ennek az elvi rajza zavarná a számláló elvi rajzának áttekinthetőségét). Saját alkatrész definiálása a megnyitott projektben: Project—New Source
21. ábra Next—Finish Ezt követően megjelenik egy új munkaterület, melyben megszerkesztheti (vagy bemásolhatja) a saját alkatrész elvi rajzát. - 14 -
Ezt mentse el, majd: Tools—Symbol Wizard
22. ábra Next A megjelenő ablakban beírhatja az alkatrésze kivezetéseinek nevét, típusát, elhelyezését.
23. ábra Next - 15 -
A következő ablakban a kivezetések és a feliratok méreteit állíthatja be:
24. ábra Next A következő ablakban megtekintheti az alkatrész szimbólumát, és ha rendben találta:
25. ábra Finish
26. ábra - 16 -
A megjelenő oldalon zárja be a munkaterületet és ezt követően megjelenik az új alkatrész, melyet a szokásos módon használhat. Ha szeretné a Symbols –ok közé elmenteni, akkor a Tools-Symbol Library Maneger menü pontot kell használni.
Ha megrajzolta az elvi rajzot, mentse el és jelölje ki a legfelső szintű fájlt és kattintson duplán a Floorplan Area /IO/Llogic (PlanAhead) Ezzel elindítja az *.ucf fájl generálását, amelyben az elvi rajzon elhelyezett I/O markereket az FPGA ténylegesen elérhető fizikai lábaihoz rendelheti.
27a. ábra Rövid várakozás után, ha hibátlanul dolgozott, megjelenik az alábbi ablak, melyben az FPGA pinjeit hozzá rendelheti a külső csatlakozó pontokhoz (kapcsolók, nyomó gombok, LED-ek, banánhüvelyek….stb). - 17 -
Amennyiben hiba illetve figyelmeztetés keletkezik, azt a megfelelő ablak aktiválásával tudja elolvasni.
27b. ábra
28 a. ábra
Ezután válassza ki a I/O Planning –ot illetve nyissa ki a + Scalar ports –ot.
- 18 -
28b. ábra
Megfogva a portot rá lehet húzni a megfelelő FPGA lábra, illetve a Site oszlopba a port mellé lehet írni vagy ki is lehet választani.
- 19 -
A külső csatlakozási pontokra kivezetett FPGA I/O portjainak kódjait az alábbi táblázatok tartalmazzák: Kapcsolók: Kapcsolók FPGA I/O sorszáma Portjainak kódja K1 L15 K2 K12 K3 L17 K4 M15 K5 K13 K6 L16 K7 M14 K8 M16 Nyomógombok: Nyomógombok FPGA I/O sorszáma Portjainak kódja N1 M13 N2 R18 N3 R15 N4 T17 LED-ek: LED-ek FPGA I/O sorszáma Portjainak kódja L1 J13 L2 M18 L3 N18 L4 P18 L5 K14 L6 K15 L7 J15 L8 J14 L9 G16 L10 J12 Banánhüvelyek: Banánhüvelyek FPGA I/O sorszáma Portjainak kódja C1 P17 C2 R16 C3 T18 C4 U18 C5 G15 C6 J16 C7 G13 C8 H16 C9 H15 C10 GND Belső 50MHz-es órajel: B8 Egymáshoz rendelés után mentse el az *. ucf fájlt és zárja be ezt az ablakot. - 20 -
A konfiguráció bitminta beállításához kattintson a Generate Programming File / Properties utasításra (jobb egérgomb):
29. ábra A megjelent ablakban állítsa be kiválasztott fájlok elkészítését:
30. ábra Majd indítsa el a program fájl (*.bit) elkészítését. (Generate Programming File dupla clikk).
- 21 -
31. ábra Ha hibátlanul dolgozott, a folyamat végén automatikus választ küld a program. A projekt könyvtárban megjelenik a *.bit kiterjesztésű programfájl. Az elkészült programot a következőképpen tudja az FPGA-b letölteni: Dupla klikk a Generate Target PROM/ACE File -n
32. ábra Utána: OK
- 22 -
33. ábra A Launch Wizard futtatása:
34. ábra Majd követi a képeken lévő lépeseket:
35. ábra
- 23 -
36. ábra Kiválasztja a generált bit kiterjesztésű fájlt:
37. ábra Majd követi az ábrákon lévő lépeseket:
38. ábra
39. ábra - 24 -
40. ábra A fájl a Program feliraton dupla klikkel töltődik le az FPGA-ba.
41. ábra
Mérések menete: -
-
ha van az adott méréshez házi feladat, azt otthon kell elkészíteni! az órán elkészített mindenegyes működő áramkört be kell mutatni a mérésvezetőnek! az órán elvégzett mérésekből a következő mérési alkalomra jegyzőkönyvet kell készíteni! a jegyzőkönyvnek tartalmaznia kell: a mérési pontot, a mérési feladatot, a kapcsolási rajzot, a mérési eredményeket, tapasztalatokat. a jegyzőkönyvet ajánlott számítógéppel készíteni, de elfogadjuk a kézzel készítetett is, de ebben az esetben a rajzokat vonalzó használatával kell el készíteni. a jegyzőkönyveket papíron kérjük leadni, elektronikus formában nem fogadjuk el. a jegyzőkönyv előlapja: http://mti.kvk.uni-obuda.hu/adat/tananyag/jegyzokonyv_elolap.pdf - 25 -