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 kapcsolója által definiált logikai szinteket fogadja, megfelelő logikai kapukkal (ÉS, NEM-ÉS, VAGY, NEM-VAGY, KIZÁRÓ-VAGY, KIZÁRÓ-NEM-VAGY) feldolgozza ezeket a jeleket, majd a feldolgozás eredményétől függően bekapcsolja a hat LED közül a megfelelőket. 1
10.1. ÚJ PROJEKT LÉTREHOZÁSA A
2
A
3
10.2. FELADAT DEFINIÁLÁSA Ezt a feladatot legkönnyebben kapcsolási rajzzal tudjuk megadni. Az alábbi rajzon pontosan definiálva vannak a bemenetek, a kimenetek és a logikai összefüggések. A szintézer természetesen nem pont így fogja létrehozni az áramkört az FPGA eszközben, mivel ott a kombinációs logikát LUT-okkal valósítják meg (nem állnak rendelkezésre minden féle logikai kapuk, de a működés ennek a rajznak fog megfelelni. 4
A
5
10.3. TERV HDL LEÍRÁSA A terv leírása egy Verilog modul hozzáadásával kezdődik. A Project → New Source menüponttal kapjuk az alábbi ablakot. Itt kiválasztjuk a megfelelő fájl típust, nevet adunk neki és megadjuk a mentési útvonalat.
6
A
7
Az ISE szoftver megkönnyíti a hardvernyelvi leírás elkészítését azzal, hogy táblázatosan bekéri a tervezendő modul bemeneteit és kimeneteit. Ez történik az alábbi (második) ablakban:
8
A
9
A táblázat alapján létrejön az alábbi leírás. Ez még nem tartalmaz semmilyen funkcionalitást, csak definiálja a bemeneteket és a kimeneteket a megfelelő szintaxis szerint. module Gates(input a, input b, output and_, output nand_, output or_, output nor_, output xor_, output xnor_ ); endmodule 10
A funkcionalitást a tervezőnek kell hozzáadni. Ez esetben adatfolyam szintű hozzárendelésekkel tesszük ezt meg: module simple_gates (input wire a, input wire b, output wire and_, output wire nand_, output wire nor_, output wire or_, output wire xnor_, output wire xor_) ; assign and_ = b & a; assign nand_ = ~(b & a); assign or_ = b | a; assign nor_ = ~(b | a); assign xor_ = b ^ a; assign xnor_ = ~(b ^ a); endmodule 11
10.4. FELHASZNÁLÓI MEGKÖTÉSEK BEÁLLÍTÁSA A leírásban szereplő bemeneteket (a,b) és kimeneteket (and_, nand_, or_, nor_, xor_, xnor_) az FPGA eszköz megfelelő kivezetetéseihez kell kötni, ahhoz, hogy a kiválasztott két kapcsolóval tudjuk megadni a két bemenetet és a kiválasztott LED-ek gyulladjanak ki a megfelelő logikai kombinációknál. 12
A Xilinx ISE tervezői szoftverben a PlanAhead modul szolgál a megkötések beállítására. A modult a Tools →Plan Ahead → I/O Pin Planning (Plan Ahead) – Pre-Synthesis... menüponttal indítjuk. A teljes programfelület az alábbi ábrán látható:
13
A
14
Az alul elhelyezkedő I/O ports ablakban kell elvégezni a beállításokat. A bemenetek és a kimenetek már ismertek a Verilog fájl alapján, ezeket a PlanAhead automatikusan beolvassa a Name oszlopba. A tervező feladata, hogy a Site oszlopban megadja az FPGA eszköz megfelelő kivezetésének nevét. Hogy az egyes kapcsolók, ill. LED-ek melyik kivezetésre vannak kötve, azt a Basys2 fejlesztőlap dokumentációjából (Basys2_sch.pdf) olvashatjuk ki. 15
A könnyebb eligazodás végett a fejlesztőlapon az egyes perifériaelemek mellé odaírták a vele kapcsolatban levő FPGA kivezetés nevét. Az alábbi képen például látható, hogy az LD0 jelölésű LED az FPGA eszköz M5 jelzésű kivezetésétől kapja a vezérlést, az SW0 kapcsoló pedig a P11 kivezetésre van kötve.
16
A
17
A beállítások végeredményeként a PlanAhead modul generál egy .ucf (user constrain file – felhasználói megkötések) kiterjesztésű fájlt. A jelen esetre a fájl tartalma a következő: NET "a" LOC = P11; NET "a" IOSTANDARD = LVCMOS33; NET "b" LOC = L3; NET "b" IOSTANDARD = LVCMOS33; NET "and_" LOC = M5; NET "and_" IOSTANDARD = LVCMOS33; 18
10.5. LOGIKAI SZINTÉZIS A szintézert a Processes ablak Synthesize – XST gombjára kattintva indítjuk el. A szintézis eredményét a Design Summary ablakban ellenőrizhetjük. Jelen esetben mindössze hat LUT került felhasználásra a rendelkezésre álló 4896 közül, tekintettel a hat logikai függvény megvalósítására. A szintézist követően el kell indítani az implementálást, majd a programozási fájl generálását. 19
10.6. HARDVERES PROGRAMOZÁS ÉS A MŰKÖDÉS ELLENŐRZÉSE Először is a Basys2 lapot USB kábellel összekötjük a fejlesztésre használt számítógéppel, majd a lapon levő kapcsolóval (SW8) táp alá helyezzük. Ezt követően beindítjuk az Adept programot és az ábrán látható ablakban kiválasztjuk a Basys2 fejlesztőlapot mint céleszközt (jobb felső sarok). A programozási fájlt a Browse gombra kattintva keressük elő és adjuk meg. 20
A
21
A programozást követően az SW0 és SW1 kapcsolókat különböző állásokba hozva ellenőrizhetjük, hogy a megfelelő LED gyullad-e ki az adott logikai függvény igazságtáblázatától függően.
22