Ó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: Digitális tervezés funkcionális elemekkel és mikroprocesszorral, Műegyetemi Kiadó, 2008]. 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) Huzalozási erőforrások 5. ábra 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 Next Finish 21. ábra 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 Next 22. ábra A megjelenő ablakban beírhatja az alkatrésze kivezetéseinek nevét, típusát, elhelyezését. Next 23. ábra - 15 -
A következő ablakban a kivezetések és a feliratok méreteit állíthatja be: Next 24. ábra A következő ablakban megtekintheti az alkatrész szimbólumát, és ha rendben találta: Finish 25. ábra 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 sorszáma FPGA I/O Portjainak kódja K1 L15 K2 K12 K3 L17 K4 M15 K5 K13 K6 L16 K7 M14 K8 M16 Nyomógombok: LED-ek: Nyomógombok sorszáma N1 N2 N3 N4 FPGA I/O Portjainak kódja M13 R18 R15 T17 Banánhüvelyek: LED-ek sorszáma L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 FPGA I/O Portjainak kódja J13 M18 N18 P18 K14 K15 J15 J14 G16 J12 Banánhüvelyek sorszáma C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 FPGA I/O Portjainak kódja P17 R16 T18 U18 G15 J16 G13 H16 H15 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 Utána: OK 32. ábra - 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 -