Bevezetés a Xilinx PLD-k és az ISE WebPACK alkalmazásába 4. kiadás (WebPACK 5.1i) Készítette: Farkas Szabolcs E-mail: szfarkas@chipcad.hu 2003. ChipCAD Elektronikai Disztribúció Kft. 1046 Budapest, Kiss Ern u. 3. Tel: 231 7000 Fax: 231 7011 www.chipcad.hu
Tartalomjegyzék Bevezetés...4 1 A programozható logikai eszközök ismertetése...5 1.1 Az ASIC áramkörök...5 1.2 Xilinx PLD-k csoportosítása...6 1.2.1 Xilinx CPLD-k...7 1.2.2 Xilinx FPGA-k...10 2 Az XPLA3 fejleszt Kit...15 2.1 Az XPLA3 fejleszt csomag...15 2.2 A CoolRunner XPLA3 CPLD család...17 2.2.1 Az XPLA3 architektúrája...18 2.2.2 Az XPLA3 Funkció Blokkja (FB)...19 2.2.3 Az XPLA3 Makrocellája (MC)...20 2.2.4 Az XPLA3 I/O cellája...21 2.3 Xilinx letölt kábel...22 3 Az ISE WebPACK fejleszt környezet gyakorlati bemutatása...23 3.1 WebPACK letöltése, telepítése és indítása...24 3.1.1 Letöltés...24 3.1.2 Telepítés...25 3.1.3 A ModelSim szimulátor üzembe helyezése...25 3.1.4 WebPACK indítása...27 3.2 Gyakorlati mintaáramkör tervezése WebPACK-el...27 3.2.1 Project Navigator, a WebPACK keretprogramja...27 3.2.1.1 Project Navigator - File menü...30 3.2.1.2 Project Navigator - Edit menü...31 3.2.1.3 Project Navigator - View menü...31 3.2.1.4 Project Navigator - Project menü...32 3.2.1.5 Project Navigator - Source menü...32 3.2.1.6 Project Navigator - Process menü...33 3.2.1.7 Project Navigator - Window menü...33 3.2.1.8 Project Navigator - Help menü...33 3.2.2 Megvalósítandó feladat leírása...34 3.2.3 A XPLA3_Bemutato projekt magas szint forráskódja...35 3.2.4 A tervezés fázisai...36 3.2.5 Új projekt készítése...38 3.2.6 Xilinx ECS, a WebPACK grafikus forrás szerkeszt je...39 3.2.6.1 Xilinx ECS - File menü...40 3.2.6.2 Xilinx ECS - Edit menü...41 3.2.6.3 Xilinx ECS - View menü...42 3.2.6.4 Xilinx ECS - Add menü...42 3.2.6.5 Xilinx ECS - Tools menü...43 3.2.6.6 Xilinx ECS - Window menü...43 3.2.6.7 Xilinx ECS - Help menü...44 3.2.6.8 Xilinx ECS - contr.sch blokk...44 3.2.6.9 Xilinx ECS - disp_sel.sch blokk...45 3.2.6.10 Xilinx ECS - enable.sch blokk...46 3.2.6.11 Xilinx ECS - lcd_drv.sch blokk...47 3.2.7 VHDL editor, a WebPACK szöveges forrás szerkeszt je...48 3.2.7.1 HDL editor - hex2led.vhd blokk...50 2
3.2.8 StateCAD(r), a WebPACK állapotgép szerkeszt je...51 3.2.8.1 StateCAD - cl8c.dia (cl8c.vhd) blokk...52 3.2.9 A teljes logikai hálózat összeállítása ECS-ben...54 3.3 További WebPACK funkciók és szolgáltatások...56 3.3.1 A projekt logikai szimulációja...56 3.3.2 A CPLD láb-kiosztásának meghatározása, Constraints fájl létrehozása...57 3.3.3 A projekt szintézise és implementálása...58 3.3.4 Betekintés az eszköz belsejébe a ChipViewer program által...58 3.3.5 Eszköz fogyasztásának analizálása XPower-el...59 3.3.6 Id zítések vizsgálata Timing Analyzer segítségével...59 3.3.7 Letölthet állomány generálása és az eszköz programozása...60 Mellékletek...60 1. számú melléket: Angol nyelv rövidítések...60 2. számú melléket: Az XPLA3_Bemutato projekt hardver szint blokkvázlata...62 3. számú melléket: AZ XPLA3_Bemutato projekt teljes.sch forrása...63 4. számú melléket: AZ XPLA3_Bemutato projekt contr.sch forrása...64 5. számú melléket: AZ XPLA3_Bemutato projekt disp_sel.sch forrása...65 6. számú melléket: AZ XPLA3_Bemutato projekt enable.sch forrása...66 7. számú melléket: AZ XPLA3_Bemutato projekt lcd_drv.sch forrása...67 8. számú melléket: AZ XPLA3_Bemutato projekt cl8c.dia forrása...68 9. számú melléket: Xilinx CPLD-k (XC9500) összefoglaló táblázata 1...69 10. számú melléket: Xilinx CPLD-k (CoolRunner) összefoglaló táblázata 2...70 11. számú melléket: Xilinx FPGA-k (Spartan) összefoglaló táblázata...71 12. számú melléket: Xilinx FPGA-k (Virtex) összefoglaló táblázata 1...73 13. számú melléket: Xilinx FPGA-k (Virtex) összefoglaló táblázata 2...75 14. számú melléket: A Xilinx ISE fejleszt rendszerek összehasonlító táblázata...77 3
Bevezetés Napjainkban egyre gyorsabb és rugalmasabb félvezet alkatrészek kerülnek forgalomba, melyeket számítógépes fejleszt i rendszer is támogat. A rugalmasság tekintetében a különböz programozható logikai eszközök (PLD Programmable Logic Device) tekinthet ek egyeduralkodóknak, hiszen bels méretük függvényében szinte bármilyen digitális hálózat megvalósítható bennük (egyszer logikai hálózatok, mikroprocesszor magok, perifériák, protokollok, stb). A programozható eszközökkel való fejlesztést segíti el a Xilinx cég legújabb ingyenes fejleszt rendszere a WebPACK, mellyel CPLD és FPGA eszközökre készíthetünk terveket. A PLD-k m ködését leíró bels logikai hálózat kialakítása során a felhasználónak csak a forráskódot kell definiálni, mely háromféleképpen lehetséges: grafikusan, el re gyártott illetve saját készítés alkatrészekkel, véges állapotszámú gép definiálásával, szöveges formában, hardverleíró nyelvek (Abel, Verilog,VHDL) segítségével. Lehet ség van az elkészült terv vagy részleteinek virtuális ellen rzésére a ModelSim beépített logikai szimulátor segítségével. A WebPACK automatikus elhelyez és huzalozó (Auto Place & Route) funkciójának köszönhet en az elkészített logikai hálózat megvalósításához szükséges épít elemek (Makrocellák, I/O Blokkok, stb) kiválasztását illetve azok összekötését a program teljesen önállóan végzi el. Így a felhasználónak a tervezéshez nem kell feltétlenül megismernie az alkatrész bels felépítését. A Xilinx PLD eszközök el nyös tulajdonságai közül érdemes kiemelni a nagy sebességet, a nagy alkalmazási rugalmasságot, a nagyszámú be/kimeneti portot és a fejleszt rendszer egyszer, de rendkívül hatékony kezelhet ségét. Az alábbi érdemek és az egyre csökken alkatrész árak figyelembe vételével látható, hogy a Xilinx PLD-k nemcsak az egyedi- és tesztáramkörök fejlesztésére, hanem a nagy sorozatú gyártásban is gazdaságosan alkalmazhatók, ezzel veszélyeztetve az ASIC áramkörök piacát. A következ oktatási anyag célja, hogy segítséget nyújtson a PLD eszközök felhasználásához szükséges alapszint ismeretek megszerzéséhez, különös tekintettel a Xilinx WebPACK tervez rendszerére. 4
1 A programozható logikai eszközök ismertetése 1.1 Az ASIC áramkörök A berendezéseket tervez mérnökök, hogy lépést tartsanak a piac növekv elvárásaival egyre olcsóbb, megbízhatóbb, kisebb fogyasztású- és méret készülékeket fejlesztenek ki. A félvezet gyárak is szembesültek ezekkel az igényekkel és megpróbáltak olyan megoldást találni, mely szorosabb együttm ködést eredményez a félvezet gyárak és a felhasználók között. Ennek eredményeként új fogalom született: az ASIC (Application Specified Integrated Circuit), az alkalmazás specifikált integrált áramkör. Az ASIC-eket csoportosíthatjuk a jelfeldolgozás módja (analóg és digitális), vagy gyártástechnológia szerint (bipoláris és MOS technológiával készült áramkörök). A legfontosabb a fejlesztés szempontjából történ csoportosítás (1.1. ábra), mely els sorban jól tükrözi a gyártó és a felhasználó közötti kapcsolatot. ASIC CUSTOM SEMI- CUSTOM STANDARD CELL FULL- CUSTOM PLD GATE- ARRAY SPLD CPLD FPGA ROM PLA PAL GAL 1.1. ábra Az ASIC áramkörök összefoglaló csoportosítását a teljesség kedvéért mutatjuk be, a továbbiakban csak a PLD-k részletesebb ismertetésére szorítkozunk. A felhasználó által programozható eszközöket magába foglaló nagy egységet szokás egyszer en PLD-knek nevezni. Az egyre korszer bb félvezet eszközök egyre bonyolultabb elektronikai készülékek építését tették lehet vé. Az egyik legjelent sebb ilyen eszköz a mikroprocesszor és a környezetét alkotó áramkörök. 5
A processzor gyártás melléktermékeként jelentek meg a felhasználó által programozható logikai eszközök, a PLD-k melyek kés bb egyre inkább önálló csoportot alkottak. A PLD-k fejl dését el segítette, hogy a berendezés fejlesztéssel foglalkozó szakemberek általában nem sorozatgyártású, hanem speciális berendezéseket terveznek. A PLD fogalma alatt olyan katalógusból kiválasztható félkész integrált logikai áramkör értend, amelynél a végs áramkör kialakítását -bizonyos keretek között- a felhasználó saját igényei szerint végzi el. Ezek az eszközök kiválóan alkalmazhatóak az egyedi és kis sorozatban gyártott készülékek számára, hiszen tetszés szerinti logikai (kombinációs, sorrendi) hálózat alakítható ki bennük. A PLD alkalmazása során a berendezés-tervez nek nem kell tartani a kapcsolatot a gyártóval, hiszen a tokozott áramkör programozását, égetését a programozó egység segítségével maga a felhasználó végzi el. A PLD további el nyei: fogyasztása alacsony önmagában megbízhatóbb, mint az általa kiváltott áramköri részlet bizonyos típusok tartalma titkosítható fejlesztési költségek rendkívül alacsonyak a PLD ára folyamatosan csökken a teljesítmény növekedése mellett az újraprogramozható típusok jól alkalmazhatóak a fejlesztések során. 1.2 Xilinx PLD-k csoportosítása A Xilinx cég a programozható logikák iparágának egyik legjelent sebb szerepl je. Xilinx PLD-k alatt különböz FLASH bázisú CPLD- és SRAM bázisú FPGA eszközöket értünk (1.2. ábra), melyek felhasználásuk során rendkívül nagy rugalmasságot biztosítanak. Xilinx PLD (Programmable Logic Device) FPGA (Field Programmable Gate Array) SRAM bázisú CPLD (Complex PLD) FLASH bázisú 1.2. ábra 6
A két eszközcsalád leginkább bels felépítésében különbözik egymástól. Programozásuk -mint minden manapság használatos PLD eszköznél- a gyártó által erre a célra kifejlesztett CAD programcsomag segítségével történik. Rendkívül rugalmas alkalmazhatóságuk által: alacsony fejlesztési költség, alapanyag takarékosság illetve kevesebb selejt, befektetett id illetve energia megtakarítás érhet el. Xilinx PLD-k néhány jellegzetessége A továbbfejlesztett kivezetés-rögzít (Pin-Locking) funkció az eszköz azon képessége, mellyel a felhasználó definiálhatja az eszköz lábkiosztását a tervezés ideje alatt, illetve lehet sége van annak utólagos változtatására is. Adott eszközcsaládon belül az azonos típusú és lábszámú tokozások kompatibilitása lehet vé teszi a kisebb l a nagyobb bonyolultságú eszközök felé való átjárást a logikai hálózat módosítása nélkül, ezzel elkerülve az áramköri lap költséges újratervezését. A Xilinx PLD-k a legkülönfélébb tokozásokban megtalálhatók: PLCC, PQFP, TQFP, VQFP, HQFP, CSP, BGA, FGA, stb. Lehet ségünk van peremfigyeléses vizsgálatok elvégzésére (Boundary Scan IEEE, 1149.1), mellyel tesztelhetjük az elkészült tervet, megvalósíthatunk vele különleges dolgokat is. Például ha, több ember tervez egy nagyobb áramkört, akkor a segítségével tesztelhetjük az elkészült részeket oly módon, hogy a még el nem készült részek ki- és bemeneteit egyszer en összekötjük, vagy a tesztelési eljárást megvalósító áramkörök segítségével a megfelel jeleket kapcsoljuk rájuk. Így az elkészült terveket ki lehet próbálni, le lehet tesztelni. Másik példa: ha valamelyik részegység nem m ködik megfelel en, akkor azt kizárhatjuk a jelfolyamból és a megfelel jeleket kapcsolhatjuk a következ fokozat bemenetére, így az tesztelhet vé válik; segítségével a hibakeresést is könnyebben elvégezhetjük. Az említett el nyök figyelembevételével az eszköz kiválóan alkalmas új projektek, kísérleti áramkörök készítésére, tesztelésére, de csökken áruk és újra konfigurálhatóságuk miatt egyre több készülékben is helyet kapnak. 1.2.1 Xilinx CPLD-k A 80-as évek második felében jelentek meg az összetett programozható logikai eszközök a CPLD-k (Complex Programmable Logic Device). Elnevezése is arra utal, hogy a hagyományos PLD-b l, annak logikai függvényorientált struktúráját továbbfejlesztve fejl dött ki. A CPLD-t több, azonos felépítés logikai egység, funkció blokk (Function Block - FB) építi fel, melyek megfelel programozásával valósítható meg a felhasználó által definiált kombinációs illetve sorrendi hálózat. A funkció blokkon belül található makrocellák (Macrocell - MC) az áramkör programozható alapelemének tekinthet k. A makrocellák száma az eszköz integráltságának mértékét meghatározó katalógusadat, mely a típusszámban is fel van tüntetve. 7
A CPLD-k egyszer sített felépítésében (1.3. ábra) jól megfigyelhet a kapcsolómátrix (Switch Matrix), a funkció blokkok, a bennük lév makrocellák és a peremen elhelyezked be/kimeneti blokkok (Input/Output Block - IOB) kapcsolata. Makrocellák Visszacsatoló utak B e/k im e n eti Blokk B e/k im e n eti Blokk MC0 MC1 M C X MC0 MC1 M C X Funkció Blokk Funkció Blokk Kapcsolómátrix Funkció Blokk Funkció Blokk MC0 MC1 M C X MC0 MC1 M C X B e/k im e n eti Blokk B e/k im e n eti Blokk 1.3. ábra A kapcsolómátrix a logikai blokkok bemenetéhez, az I/O blokkok bemenetei pedig a logikai blokk makrocelláinak kimenetéhez kapcsolódnak. A rugalmas programozhatóság érdekében az IOB-k és az MC-k ún. visszacsatoló útvonalakon (Feedback Paths) keresztül kapcsolatban vannak a kapcsolómátrixal. Xilinx CPLD-k néhány jellegzetessége Az eszközök programozása illetve újraprogramozása az ISP (In-System Programmable) technológiának köszönhet en az áramköri lapra történ beültetése után is (rendszeren belül) lehetséges egy szabványos -négy kivezetést használó (TCK, TDO, TDI, TMS)- JTAG protokollon keresztül. A Xilinx CPLD-k a legideálisabb útvonal kiválasztását biztosítják a kapcsolómátrix és a rugalmas funkció blokkok segítségével. A CPLD áramkörök CMOS FastFLASH technológiára épülnek. Bels FLASH típusú huzalozással rendelkeznek, így a programozást követ en a tápfeszültség elvétele után is meg rzik tartalmukat. A Xilinx CPLD-k több különböz adatvédelmi lehet ségekkel rendelkeznek. A beprogramozott adatok levédhet k az illetéktelen kiolvasás, törlés és programozás ellen. A kiolvasás védelmi bitet a felhasználó állítja be a programozás során. Ez a bit csak a teljes tartalom törlésével állítható alapállapotba. Az írásvédelmi bit alkalmazása megnövelt védelmet nyújt a véletlen törlés és újraprogramozás ellen. A Xilinx, CPLD eszközei adatbiztonságát 20 évig illetve 10000 (XPLA3 családnál 1000) programozás/törlés ciklusig garantálja. 8
Xilinx CPLD-k típusai Az XC9500-as család típusainak alapvet felépítése között alig vehet észre különbség. Mindhárom sorozat elemei 36-288 makrocellával (800-6400 használható kapu) és 34-192 I/O lábbal rendelkeznek, azonban az XL és XV típusok gyorsabb és rugalmasabb második generációs kapcsolómátrixxal (FastConnect II Switch Matrix) rendelkeznek, melynek köszönhet en funkció blokkjaiknak 36 helyett 54 bemenete van. Az XC9500 és XC9500XL valamint a CoolRunner XPLA3 típusok 0.35 mikronos, az XV sorozat elemei 0.25 mikronos, míg a legújabb CoolRunner-II család eszközei 0.18 mikronos fejlett CMOS gyártástechnológiával készülnek. Az XC9500/XL/XV típusoknál lehet ség van a makrocellák kisteljesítmény (Low Power - LP) üzemmódba állítására a fogyasztás minimalizálása érdekében. CoolRunner XPLA3 A Xilinx 1999-ben megvásárolta a Philipst l a CoolRunner CPLD család teljes gyártási és forgalmazási jogát, majd saját rendszerébe beintegrálva kihozta a legújabb technológiájú XPLA3 típusokat. A CoolRunner-ek legkiemelked bb tulajdonsága a hihetetlenül alacsony, 100µA alatti áramfelvétel, mely a Fast Zero Power (FZP TM ) technológiának köszönhet. M ködéséhez 3.3V-os tápfeszültséget igényel, azonban I/O portjai az 5V-os környezethez is jól illeszkednek. Az egyes típusok 32-512 makrocellával és 36-260 felhasználható I/O lábbal rendelkeznek. CoolRunner-II 2002-es évet a Xilinx egy új CPLD család, a CoolRunner-II piacra dobásával indította. A család jellemz tulajdonságai között szerepel az 1.8V-os tápfeszültség igény, az XPLA3 eszközöknél már megszokott 100µA alatti áramfelvétel és a hihetetlenül magas (303MHz) rendszer frekvencia. A sorozat elemei 32-512 makrocellával illetve tokozástól függ en 33-270 felhasználható I/O lábbal kerülnek kereskedelmi forgalomba. XC9500 A Xilinx CPLD-k standard típusának is tekinthetjük. Az XC9500-as család elemei alapvet en 5V-os TTL illetve CMOS rendszerekben m ködtethet k, de az I/O lábak konfigurálhatóak 3.3V-os jelek fogadására és kibocsátására. Az eszközben használható legnagyobb rendszer frekvencia 100MHz, és a lábtól lábig való minimális id késleltetés 5ns. XC9500XL Az XL típusok 3.3V-os tápfeszültséget igényelnek. A bemeneti pufferei teljes mértékben tolerálják az 5V-os bemen jeleket, a 3.3V-os kimeneti jelszint pedig az 5V-os rendszerekben logikai H szintnek felel meg, így az eszköz illeszt áramkör nélkül alkalmazható a TTL rendszerekben. Az I/O portok megfelel beállításával lehet ség van az eszköz 2.5V-os környezetben való m ködtetésére is. A lábtól lábig való minimális id késleltetés itt is 5ns, de a rendszer frekvencia már elérheti a 222MHz-et. 9
XC9500XV Az XV család, 3.5ns-os lábtól lábig való id késleltetése mellett 275MHz-es rendszer frekvencia érhet el. M ködéséhez 2.5V-os tápfeszültség szükséges, azonban bemeneti portjai a 3.3V-os jelszintet is fogadni tudják, kimenetei pedig a 2.5V-os illetve az 1.8V-os rendszereket egyaránt képesek meghajtani. A jöv CPLD-i Az elkövetkez néhány évben a CPLD eszközök robbanásszer fejl dése várható (1.4. ábra) a fogyasztói ár folyamatos csökkenése mellett. A jelenlegi XC9500-as és XPLA3 családokat a CoolRunner II és annak utódai (típusnevük még ismeretlen) fogják követni, melyek mindazokkal az el nyös tulajdonságokkal rendelkeznek majd, melyeket eddig csak külön-külön találhattunk meg az eszközökben (pl: nagy sebesség és kis fogyasztás). Az egyre fejlettebb gyártástechnológiának köszönhet en a chip méret mellett, a tápfeszültség és a jelkésleltetési id is fokozatosan csökken. fsys (MHz) 450 400 350 300 222 9500XL 3.3V 5ns tpd 0.35u XPLA3 3.3V 5ns tpd 0.25u 9500XV 2.5V 3.5ns tpd 0.18u Cool Runner II 1.8V 3.5ns tpd 0.15u XXX 1.5V 3ns tpd 0.12u XXX 1.2V 2.5ns tpd Alacsony fogyasztás + nagy teljesítmény Alacsony ár Alacsony fogyasztás 1999 2000 2001 2002 2003 2004 1.4. ábra 1.2.2 Xilinx FPGA-k A Xilinx cég 1985-ben mutatta be a PLD-k egyik új generációját, a világ els FPGA áramkörét. Az FPGA (Field Programmable Gate Array) áramkörök nagy elems r ség, a felhasználó által konfigurálható eszközök, melyek LCA (Logic Cell Array) néven is ismeretesek. A szerkezetét tekintve a kapumátrix áramkörök cellastruktúráját követi és segítségével nemcsak zárt, hanem összetett rendszerek is létrehozhatók. 10
A chipen több, azonos felépítés logikai struktúra, cella foglal helyet. A felhasználónak a kész logikai hálózat kialakításához mind a logikai cellákat, mind a cellák közötti összeköttetéseket konfigurálni kell (ezt a szoftver teljesen automatikusan elvégzi). A cellabázisú áramkörök konstrukciós alapkérdése a cella méretének megválasztása. Egyszer bb, kisebb összetettség cellák esetén a hálózat kialakításában nagyobb szerepe jut a cellák közötti összeköttetéseknek, míg az összetettebb cellákból önálló részhálózatok alakíthatók ki. Az elemi logikai cella összetettsége alapján a cellabázisú programozható áramkörök kis-, közepes-, és nagy összetettség ek lehetnek. Az FPGA-k típusválasztéka a CPLD-kel szemben sokkal b vebb és sokrét bb. Az egyes családok felépítése kisebb-nagyobb mértékben eltér egymástól, ezért az 1.5. ábrán egy teljesen leegyszer sített, általános felépítést mutatunk be a legfontosabb egységek jelölésével. Be-/Kimeneti Blokkok Logikai Blokkok Programozható összeköttetések 1.5. ábra Az FPGA-kat alapvet en három nagy egység építi fel: Konfigurálható logikai blokkok (Configurable Logic Block - CLB), Be- és kimeneti blokkok (Input/Output Block - IOB), Programozható összeköttetések (Programmable Interconnect). Konfigurálható logikai blokk - CLB (Spartan) Ez a konfigurálható logikai egység az áramkör központi alapeleme, melynek segítségével valósíthatjuk meg a logikai hálózatunkat. A CLB-k tartalmaznak flip-flopokat, független négybemenet funkciógenerátorokat és multiplexereket. A funkciógenerátorok elegend en rugalmasak, mivel a legtöbb logikai kapcsolatnak kevesebb, mint négy bemenete van. A fejleszt i rendszer képes különkülön használni a funkciógenerátorokat, így javul a CLB kihasználhatósága. Ha akarjuk, a CLB egyaránt 11
használható latch-ként és élvezérelt tárolóként. Be- és kimeneti blokkok IOB (Spartan) A chip szélein elhelyezked be- és kimeneti blokkok teremtik meg a kapcsolatot a tok kivezetései és a bels logika között. Mindegyik IOB definiálható bemenet vagy kimenet illetve kétirányú csatlakozásként is. Programozható összeköttetések (Programmable Interconnect) A programozható összeköttetések teszik lehet vé az egyes CLB-k és IOB-k megfelel összekapcsolását. Az összeköttetéseknek relatív hosszuk szerint három típusa létezik, az egyszer -, a dupla- és a hosszú vonalak. A függ leges és vízszintes vonalak keresztez désénél a konfigurációs memória (SRAM) által vezérelt tranzisztoros kapcsolómátrix végzi el a szükséges összeköttetéseket. A még fel nem programozott eszközben a kapcsolók szakadás állapotban vannak. A tervezés során az automatikus huzalozónak köszönhet en az összeköttetések kialakításával nem kell foglalkoznunk (hacsak nem akarunk önként beavatkozni). Programozás Az FPGA áramkörök esetében a konfiguráció (CLB-k, IOB-k és kötések állapotai) statikus RAM-ban (SRAM) tárolódik. A konfigurációs memória feltöltése történhet sorosan vagy párhuzamosan, illetve Master vagy Slave üzemmódban. Master üzemmódban az FPGA feltölti magát, azaz beolvassa a hozzákapcsolt PROM tartalmát. Slave üzemmódban egy küls eszköz ütemjele vezérli a beolvasást. Lehet ség van az eszköz JTAG porton keresztül történ konfigurálására és tesztelésére is. Ebben az esetben a letöltött anyag a tápfeszültség meglétéig marad meg az FPGA-ban. Összefoglalva: az FPGA-k olyan programozható logikai eszközök melyek SRAM-al rendelkeznek, így a tápfeszültség elvétele után elvesztik tartalmukat. Indításkor ún. Boot PROM-ból állnak fel, mely további lehet ségeket kínál az eszköz rugalmasságára nézve. 12
Xilinx FPGA-k csoportosítása Az FPGA eszközök öt nagy családba sorolhatóak: XC3000, XC4000, XC5200, Spartan Virtex. Felhasználásra az utóbbi kett a legideálisabb, mivel ezek a Xilinx legújabb FPGA-i. Spartan, Spartan-XL és Spartan-II A Spartan FPGA-k ideális választás azoknak, akik olcsón akarnak (viszonylag) nagy teljesítmény eszközhöz jutni. Tápfeszültség Sebességi osztály Max. I/O I/O szabványok Max. kapuszám Spartan 5V 4 205 3 40000 Spartan-XL 3.3V 5 224 5 40000 Spartan-II 2.5V 6 284 16 200000 Spartan-IIE 1.8V 6 514 19 600000 A Spartan-XL ugyan örökölte a Spartan család architektúráját és 0.35 µm-es gyártástechnológiáját, de néhány új dologban azért különbözik el dét l. Ilyen a gyorsabb konfiguráció, a sebesség növelését szolgáló dedikált carry logika, a hatékonyabb órajel-vezetékezés és a 3.3V-os m ködés melletti TTL kompatibilitás. A Spartan-II és Spartan-IIE családokat, el deikhez hasonlóan, a kis (spártai) költségigény és a nagy teljesítmény jellemzi. A hasonlóság itt véget is ér, hiszen felépítésükben a Virtex sorozat sajátosságai figyelhet k meg. Az elosztott (Distributed RAM) memória mellett új épít elemként megjelenik a Block RAM, melyek a CLB mez szélein függ legesen helyezkednek el. Az órajel, áramkörön belüli azonos késleltetési idejét a digitális DLL (Delay-Locked Loop) modulok biztosítják. A lapra integrált memória blokkok nemcsak a megszokott memória-alkalmazásokat segítik, hanem az el re definiált szoftver magok használatát is. Virtex, Virtex-E, Virtex-II és Virtex-II PRO A Virtex FPGA-k voltak az els k melyek egymillió rendszerkapuval rendelkeztek. Ez a szám azonban a Virtex-II megjelenése után már a nyolcmilliót is elérte. Els sorban videó-, DSP és kommunikációs alkalmazásokban használják leginkább, ahol -a nagyméret szoftver magok miattszükségszer a gigantikus bels méret, a nagyteljesítmény szorzó képesség, és a nagyszámú konfigurálható I/O port. A továbbfejlesztett SelectRAM technológia lehet vé teszi a különböz küls memória típusok (DDR-SDRAM, FCRAM, QDR SRAM, Sigma RAM) kezelését, melyek az eszköz logikai kapacitásának kiterjesztésére is használhatók tízmillió rendszerkapuig. A család legújabb generációja a Virtex-II PRO, mely alapvet en a Virtex-II technológiára épül, azonban architektúrájában teljesen új épít elemek is megtalálhatók. A hardveresen beágyazott IBM PowerPC 405 típusú RISC processzor magok 300MHz feletti órajellel is képesek dolgozni. Rocket I/O full-duplex adatátviteli csatornái maximálisan 3.125Gb/s sebességre képesek. Mind a tizenhat csatornát felhasználva 80Gb/s érhet el. 13
Sebességi osztály Max. I/O I/O Szabványok (Single+Diff.) Max. kapuszám Tápfeszültség Gyártástechnológia Virtex 2.5V 6 512 15 < 1 millió 0.22µ, 5 réteg Virtex-E 1.8V 8 804 19 < 4 millió 0.18µ, 6 réteg Virtex-II 1.5V 6 1108 19+8 8 millió 0.15µ, 8 réteg Virtex-II PRO 1.5V 7 1200 21+5 0.13µ, 9 réteg Xilinx Boot PROM eszközök XC18V00, XC17V00, XC17S00A, XC17S00 és XC17S00XL Az FPGA-k alkalmazásának nélkülözhetetlen kelléke a konfiguráció tárolását szolgáló PROM eszközök. A Xilinx PROM-ok alapvet en két nagy csoportba sorolhatók: Egyszer programozható (OTP), XC17-es sorozatok ƒ XC17V00 (Virtex sorozathoz), ƒ XC17S00A (Spartan II és Spartan IIE sorozatokhoz), ƒ XC17S00 (Spartan sorozathoz), ƒ XC17S00XL (Spartan sorozathoz) Újra programozható (Flash), XC18V00 sorozat els sorban a Virtex eszközökhöz. A Xilinx PROM eszközök alapvet en 3.3V-os tápfeszültséget igényelnek, kivéve a Spartan családhoz alkalmazható 17S00 sorozatot, mely 5V-os. A nemrég megjelent XC18V00-as sorozat több új szolgáltatással rendelkezik, melyek a korábbi típusokból még hiányoztak. Ezek az eszközök célrendszerben is programozhatók (ISP) a JTAG interfészén keresztül, egyszer párhuzamos letölt kábel segítségével. Az FPGA-ba nemcsak sorosan (bitesen), hanem párhuzamosan (bájtosan) is képes betölteni a konfigurációt. Ezzel a lehet séggel kb. nyolcszorosára növelhet az adatáramlás sebessége, mely els sorban a különösen nagy logikai s r ség Virtex eszközöknél nyújt nélkülözhetetlen segítséget. 14
2 Az XPLA3 fejleszt Kit 2.1 Az XPLA3 fejleszt csomag Az XPLA3 fejleszt csomag a CoolRunner XPLA3 CPLD család megismertetése mellett a kis fogyasztású rendszerek kifejlesztésében nyújt nélkülözhetetlen segítséget. Az XPLA3 eszközök beültetett állapotban közvetlenül a PC printer portjáról programozhatók a csomagban található párhuzamos letölt kábel (2.1. ábra) és a WebPACK fejleszt rendszer segítségével. A WebPACK beépített minta projekteket is tartalmaz, melyek megkönnyítik az eszközzel és a programmal való ismerkedést. Ilyen komplett minta projekt Watch, mely kifejezetten az XPLA3 fejleszt panelre készült. A projekt rövid angol nyelv leírása a forrás fájlok könyvtárában található readme.txt fájlban olvasható. 2.1. ábra Az egységcsomag tartalma: XPLA3 fejleszt panel JTAG letölt kábel, AC/DC adapter (opcionális), részletes leírás, ISE WebPACK CD ROM. Az XPLA3 fejleszt panel felépítése A panelon található egységek: 256 makrocellás, 3.3V-os XPLA3 CPLD kis fogyasztású 32768Hz-es oszcillátor 3.3V-os Burr-Brown stabilizátor két digites, 7 szegmenses LCD kijelz saját fejlesztés kialakítására alkalmas forrasztható NYÁK terület I/O lábakat kivezet tüskesorok JTAG interfész tápcsatlakozó 2.2. ábra Tápellátás 15
A panel tápellátását három különböz módon biztosíthatjuk a JP7 tüskesor megfelel jumperelése mellett: TP1 és TP3 (GND) forrasztható csatlakozókra stabilizált +3.3V-os egyenfeszültséget kapcsolva, TP2 és TP3 (GND) forrasztható csatlakozókra stabilizálatlan, maximálisan +10V-os feszültséget kapcsolva, J2 adapter csatlakozóra stabilizálatlan, maximálisan +10V-os feszültséget kapcsolva. Órajel források Az XPLA3 órajele két jelforrásból választható ki a JP5 tüskesor jumperelésével: Bels forrásból a panelon található alacsony fogyasztású 32768Hz-es oszcillátorból, Küls 50 ohm impedanciás kimenet négyszögjel generátorból. A fejleszt panel tömbvázlata XPLA3 Demo Board 2.3. ábra A fejleszt panel fogyasztása Az XPLA3 CPLD rendkívül alacsony fogyasztásának köszönhet a fejleszt panel 60µA-es áramfelvétele. Ezt a csekély energia igényt akár néhány gyümölcsb l létrehozott elem is képes kiszolgálni, amint azt a 2.4. ábrán is láthatjuk. 16
Az XPLA3 demo kártyához ajánlott fejleszt i 2.4. ábra környezet Az egységgel folytatott fejlesztések során kifejezetten ajánlott az ISE WebPACK program csomag használata, hiszen az összes Xilinx CPLD típust -így az XPLA3-at is- támogatja és teljesen ingyen hozzáférhet. Akik eddig Foundation fejleszt rendszert használtak azok is könnyen áttérhetnek a WebPACK-re, mivel a tervezés menete ugyanazt a logikai sort követi, csupán a kezel felületet kell megszokni. A Foundation-ban elkészített kapcsolási rajz alapú tervek WebPACK-b l is megnyithatók, ha arról netlistát generálunk majd exportáljuk VHDL forrásként. Az eredményül kapott forráskódokat ezután a WebPACK HDL editor-ban szerkeszthetjük tovább. 2.2 A CoolRunner XPLA3 CPLD család A CoolRunner XPLA3 CPLD családot kifejezetten a kis fogyasztású, hordozható elektronikai alkalmazásokra fejlesztették ki, melyek energiaellátása akkumulátorról vagy napelemr l történik. Ilyen hordozható készülékek például a telekommunikációs eszközök, a hordozható MP3 lejátszó, a PDA, a notebook, a kézi m szerek, stb. Az XPLA3 elnevezés az extended Programmable Logic Array angol szavakból származik és a továbbfejlesztett PLA-k harmadik generációját értjük alatta. Az XPLA3 család egyedülálló különlegessége a Fast Zero Power (FZP) technológia, mely kombinálja az alacsony fogyasztást és a nagy sebességet. Ennek köszönhet en 5ns-os lábtól-lábig késleltetést biztosít, miközben a nyugalmi áramfelvétele kevesebb, mint 100 A. A CoolRunner eszközök az egyedüli teljesen CMOS PLD-k, melyek két fontos gyártástechnológiát használnak: a CMOS folyamattechnológiát és a szabadalmaztatott teljes CMOS FZP tervezési technikát. A CoolRunner XPLA3 család teljes PLA struktúrát alkalmaz a logika kiosztására a funkció blokkon belül. A PLA maximális rugalmasságot és logikai s r séget biztosít a kiváló kivezetés-rögzít képességgel (Pin Locking) kiegészítve a lábtól-lábig késleltetés konstans értéken tartása mellett. Az XPLA3 CPLD-ket a Xilinx ISE 5.1 mellett a WebPACK és WebFITTER ingyenes fejleszt rendszerek is támogatják, melyek a szöveges (VHDL, ABEL, Verilog) és grafikus (Schematic) beviteli módot egyaránt lehet vé teszik. A tervezési folyamatok funkcionális és id beli szimulációjának elvégzésére a ModelSim szimulátort használhatjuk. A fejlesztések történhetnek személyi számítógép, Sparc és HP számítógépes környezetek segítségével. 17
Az XPLA3 család rendelkezik IEEE 1149.1 szabványú JTAG interfésszel. A JTAG protokol segítségével megvalósíthatjuk az eszköz rendszeren belüli (újra)programozását (ISP In-System Programmable) és a teljes kör peremfigyelést (Full Boudary Scan Test). Az eszköz konfigurálásához a Xilinx különböz programozó egységeit használhatjuk (Parallel Cabe III, Parallel Cabe IV, Multilinx, HW130). 2.2.1 Az XPLA3 architektúrája Az XPLA3 architektúráját (2.5. ábra) alapvet en háromféle egység építi fel: Funkció blokkok, Be/kimeneti cellák (I/O Cell) Alacsony fogyasztású kapcsolómátrix (Zero-power Interconnect Array - ZIA). A funkcióblokkok közötti kapcsolatot a ZIA biztosítja. Minden funkció blokk 16 makrocellával és 36 bemeneti vonallal rendelkezik melyek a ZIA-ra csatlakoznak. 2.5. ábra Az XPLA3 architektúrája nagyon hasonlít az általános CPLD architektúrához. Ami viszont különlegessé teszi az XPLA3 családot, az a funkció blokkokon belüli logikai allokáció és a product term-ekkel történ tervezési technikák. 18
2.2.2 Az XPLA3 Funkció Blokkja (FB) A funkció blokk felépítését a 2.6. ábra illusztrálja. Minden funkcióblokk tartalmaz egy PLA hálózatot a vezérl term-ek, az órajel term-ek és a logikai cellák megvalósítására. 2.6. ábra A PLA struktúra programozható AND és OR hálózatból áll, mely nagyobb rugalmasságot biztosít, mint a PAL struktúrát felépít programozható AND és fixen huzalozott OR hálózat. A 2.7. ábra a PLA és a PAL struktúrákat szemlélteti. 2.7. ábra A PLA mátrix bemenetei közvetlenül a ZIA-ra csatlakoznak. A 48 P-term-b l 8 helyi vezérl term (LCT[0:7] Local Control Term), melyek a makrocellák vezérl jeleiként is 19
használhatóak, mint aszinkron órajelek, törlés, beírás, kimenet engedélyezés. Minden funkció blokk tartalmaz 8 visszacsatoló NAND product term-et, melyek segítségével az eszköz logikai s r sége növelhet. Ezt a lehet séget a felhasználó szoftveresen állíthatja be. A logikai er források megnövelésére használhatók a nem felhasznált vezérl P-Term-ek és a visszacsatoló NAND P-Term-ek. A sebességkritikus logikák létrehozásához minden makrocella rendelkezik egy nagy sebesség P-Term vonallal. A változtatható funkciójú multiplexer (VFM Variable Function Multiplexer) (2.8. ábra) a logikai optimalizálás növelésére alkalmas azáltal, hogy két bemenet logikai funkciókat képes megvalósítani a makrocella el tt. 2.8. ábra Minden makrocella támogatja a kombinációs vagy sorrendi logikák létrehozását. A makrocellák regisztere (power on) inicializált állapotban aszinkron módon beírható és törölhet. A regisztert az órajel engedélyez bementén keresztül konfigurálhatjuk D vagy T típusúra. Amikor a makrocella regisztere latch-ként funkcionál az órajel bemenet latch engedélyez szerepet tölt be. 2.2.3 Az XPLA3 Makrocellája (MC) A CoolRunner XPLA3-ban használt makrocella architektúráját a 2.9. ábra mutatja. A makrocellák beírhatók és törölhet k power up módban. Minden markrocella regiszter konfigurálható D, T vagy latch flip-flopként, illetve áthidalható ha a makrocella kombinációs funkciót lát el. 20
2.9. ábra Minden egyes flip-flop a nyolc óralej forrás (négy bels, négy küls ) egyikének pozitív vagy negatív élére billen. A négy küls órajelb l kett úgynevezett globális szinkron órajelek (Global CLK), melyek közvetlenül az eszköz megfelel lábain vannak kivezetve. A küls órajelek között van egy többcélú (Universal CLK) órajel is. A CT[4:7] (Local Control Term) helyi vezérl termek egyénien konfigurált órajel bemenetek. A definiálásuk hasonló, mint amikor a funkció blokkon belül a 36 jelb l létrehozzuk a Product Term vagy Sum Term egyenleteket. A makrocellában van két multiplexer, melyek kimenetei a ZIA-ra csatlakoznak. Az egyik multiplexer a VFM vagy a regiszter kimenetét választja ki, a másik pedig a regiszter kimenetét vagy a makrocella I/O portját kapcsolja a ZIA-ra. Amikor az I/O lábat kimenetként használjuk a kimeneti puffer engedélyezett állapotba kerül. Ilyenkor a makrocella visszacsatoló útvonalát a makrocella-ban megvalósított logika visszacsatolására használhatjuk. Amikor az I/O lábat bemenetként használjuk, a kimeneti puffer harmadik állapotba (tri-state) kerül és a bemeneti jel az I/O visszacsatoló útvonalán keresztül a ZIA-ra csatlakozik. Ha a makrocella lábát regiszter bemenetként konfiguráljuk, a jel egy közvetlen útvonalon jut a regiszterre. Ezzel a megoldással a regiszter gyorsabb beállását érhetjük el. Ha a makrocellát latch-ként konfiguráljuk, a regiszter órajel bemenete latch engedélyez szerepet tölt be. A latch abban az esetben átlátszó, ha a latch engedélyez bemenetre H szint kerül. A regiszter órajel engedélyez (CLKEn) bemenetének nincs funkciója amikor a makrocella latch-ként funkcionál. 2.2.4 Az XPLA3 I/O cellája Az OE (Output Enable) kimenet engedélyez multiplexernek (2.10. ábra) nyolc lehetséges állapota van. 21
Az eszköz m ködése közben az I/O cellák tolerálják az 5V-os bemen jeleket is. Minden kimenet egymástól függetlenül beállítható alacsony (lassabb m ködés) illetve magas (gyorsabb m ködés) fogyasztású üzemmódba. Ez tulajdonképpen a jelváltozási sebesség (Slew Rate) vezérlése. 2.10. ábra 2.3 Xilinx letölt kábel A fejleszt környezetet kiegészíti a JTAG párhuzamos letölt kábel, mely a tervezési folyamat végs fázisában, az eszköz programozásakor kerül alkalmazásra. Valójában ez az egység biztosítja a kapcsolatot a számítógép párhuzamos portja és az eszköz négy programozó lába (TCK, TMS, TDI, TDO) között. Ezen a négy lábon keresztül jut el a tervezés eredményeként kapott JEDEC állomány a CPLD-be. A Xilinx CPLD programozó lábai TCK (Test Clock Output): Segéd órajel, mely a TDI és TDO lábakon lév soros adatok léptetésére szolgál. TMS (Test Mode Select): JTAG üzemmód engedélyezésére szolgáló soros bemeneti láb, mely a programozás alatt magas szinten van. TDI (Test Data Input): Adat bemenet láb, az utasítások és a teszt adatok számára. Az adat a TCK felfutó élére kerül beírásra. TDO (Test Data Output): adat kimenet láb, az utasítások és a teszt adatok számára. Az adat a TCK lefutó élére kerül beírásra. Ha a TDO lábon nincs aktív adatforgalom, akkor tri-state állapotba kerül. JTAG kábel Célrendszer 22
2.11. ábra Xilinx eszközök programozása a célrendszerben is lehetséges (ISP In-System Programmable) egy szabványos -négy kivezetést használó- JTAG protokollon keresztül, melyet az alábbi vázlat szemléltet. Az ISP programozás el nyei: lerövidíti a tervezési id t, növeli a terv kifinomításának hatékonyságát megóvja az eszköz fizikai épségét. 2.12. ábra 3 Az ISE WebPACK fejleszt környezet gyakorlati bemutatása Manapság már nemcsak az a kérdés, hogy egy PLD milyen maximális sebességgel és mekkora maximális kapuszámmal rendelkezik, hanem az is, hogyan hozhatunk létre benne egy tetsz leges logikai hálózatot. Ehhez elengedhetetlenül szükséges egy jó fejleszt környezet. A Xilinx PLD-k (FPGA, CPLD) fejlesztéséhez a Xilinx egy teljesen ingyenes, internetr l letölthet CAD tervez programot kínál, az ISE (Integrated Software Environment) WebPACK-et. Ezzel az önálló integrált fejleszt rendszerrel a Xilinx új útra lépett, hiszen mindenki számára elérhet vé tette a PLD-kkel való fejlesztést. Az új felhasználóknak így nem kell több százezer forintot kifizetni a Xilinx ISE 5-ért, hogy megismerkedjenek a PLD-k programozásával. A rendszerben integrálva megtalálhatók, a már megszokott tervez, szimuláló, fordító, analizáló, programozó és debugger funkciók. A WebPACK a legmodernebb Xilinx CPLD-ket és FPGA-kat is támogatja, mint pl. a CoolRunner 2, Spartan IIE, Virtex II PRO, stb, melyekhez a terveket tetszés szerint, elkészíthetjük Schematic-ban, VHDL-ben és Verilog-ban. A program további kellemes tulajdonsága, hogy a Foundation-ban elkészített tervek kis trükkel beolvashatóvá tehet k, megkönnyítve az átállást az új rendszerre. A WebPACK fejleszt környezet nem igényli más CAD-gyártók környezetét és rajzolóprogramját, tehát ideális választás azoknak, akik -beruházás nélkül- egy komplett megoldást szeretnének az elvi rajztól az eszköz implementálásáig. A továbbiakban az ISE WebPACK fejleszt rendszer alkalmazásához szükséges nélkülözhetetlen alapokat ismertetjük. A fent említett HDL nyelvek részletes ismertetésére az alábbi oktatási anyag keretében nincs lehet ség. A leírás alapvet en az XPLA3 Demo Board-on bemutatott egyszer, de látványos projekt megvalósításának lépéseit veszi át. Célunk hogy a lehet legegyszer bben, a fejleszt környezet minél szélesebb kör áttekintését mutassuk be. 23
3.1 WebPACK letöltése, telepítése és indítása 3.1.1 Letöltés Az ISE WebPACK letöltése a Xilinx Web oldaláról lehetséges. Lépések: 1. Látogassunk el a xilinx.com web oldalra. 2. Kattintsunk Support \ Download menüpontra. 3. A megjelen felsorolásból válasszuk ki a Webpack ISE-t. 4. Ha eddig még nem regisztráltattuk magunkat, a Free ISE WebPACK 5.1i ablakban kattintsunk a Register for ISE WebPACK ikonra. A megjelen párbeszédablakokat töltsük ki értelemszer en. Néhány perc múlva a Xilinx cég szöveges e-mailben visszajelzést küld a regisztráció elfogadásáról. Az e-mail tartalmazza az általunk megadott adatokat, felhasználói nevünket és jelszavunkat. 24
5. Kattintsunk a Free ISE WebPACK 5.1i ablak Download ISE WebPACK ikonjára és adjuk meg felhasználói nevünket és jelszavunkat. 6. A megjelen ISE WebPACK TM ablakban látható, hogy lehet ségünk van a fejleszt rendszer Web-en keresztüli telepítésére, illetve az installációs fájlok többféle opcióval történ letöltésére. Jelen esetben a teljes rendszer telepítéséhez szükséges összetev ket töltsük le: Els ként kattintsunk a Complete ISE WebPACK Softwarere -ISE WebPACK 5.1i letöltéséhez- majd adjuk meg a célmappát. Ezt követ en kattintsunk a Complete MXE Simulator-ra -a ModelSim XE II v5.6a letöltéséhezmajd ugyancsak adjuk meg a célmappát. 3.1.2 Telepítés A teljes ISE WebPACK rendszert a Xilinx WebPACK 5.1i és -küls logikai szimulátora- a ModelSim XE II v5.6a program csomagok alkotják. A fejleszt rendszer a következ operációs rendszereket támogatja: Windows 2000 SP2, Windows XP. A WebPACK telepítése, más Windows-os programokhoz hasonlóan teljesen automatikusan történik. A teljes rendszer telepít je 222MB, azonban az installált változat 620MB-ot foglal el a merevlemezen. A program futtatása alatt a számítógép igen sok számítási m veletet végez a fordítások, a forráskód generálások és az optimalizálások elvégzése során, ezért javasolt a minél nagyobb teljesítmény PC használata (Intell PII 300MHz processzor, 128MB RAM). A ISE WebPACK rendszer telepít programjai: A WebPACK_51_fcfull_i.exe elindításával a Xilinx WebPACK 5.1i-t telepíthetjük fel. A rendszer programjai a Start menü \ Xilinx ISE 5 mappából érhet k el: A MXE_5.6a_Full_installer.exe elindításával a ModelSim XE II v5.6a logikai szimulátor-t és hozzá tartozó Licensing Wizard programot telepíthetjük fel. A ModelSim installálását követ en a Xilinx web oldalára feljelentkezve igényelnünk kell a program használatához szükséges license fájlt. Megjegyzés: A program folyamatos fejlesztés alatt áll, így a verziószámok változhatnak a jegyzet megírása után! 3.1.3 A ModelSim szimulátor üzembe helyezése Lépések: 1. Válasszuk ki a Start menü \ Programok \ ModelSim XE II v5.6a \ Submit License Requestkövet en felcsatlakozunk az internetre és et. Ezt 25
betölt dik a ModelSim Xilinx Edition License Request Web oldal. 2. A web oldalon a három lehet ség közül válasszuk a Continue-t, mivel korábban már regisztráltattuk magunkat. 3. A megjelen kis ablakban adjuk meg a felhasználói nevünket és a jelszavunkat. 4. Következ lépésként egy rlap jelenik meg, mely a korábbi regisztráció során, az általunk megadott adatokat tartalmazza. Ha mindent rendben találunk, és nem akarunk változtatni az adatokon, kattintsunk a Submit-ra. Fontos, hogy az e-mail cím helyesen legyen megadva, mert erre a címre fogja a Xilinx kipostázni a license.dat fájlt. 5. A következ ablakban a license kérelmünk nyugtázását olvashatjuk. 6. Néhány perc múlva az általunk megadott e-mail címre levelet kapunk a Xilinx-t l, melyben csatolt fájlként megtaláljuk a license.dat fájlt. A levél néhány mondatban ismerteti a soron következ néhány lépés. 7. A license.dat fájlt másoljuk a c:\modeltech_xe_starter\win32xoem könyvtárba. 8. Indítsuk el a Start menü \ Programok \ ModelSim XE II v5.6a \ Licensing Wizard programot és a megjelen Model Technology License Wizard ablak alján kattintsunk a Continue gombra. 9. A megjelen License File Location ablakban a böngész segítségével adjuk meg a license fájl elérési útvonalát. 26
10. A következ ablakban kattintsunk a Yes-re, majd indítsuk újra a gépet a beállítások érvényesítése érdekében. 11. Az újraindítást követ en indítsuk el újból a Licensing Wizard-ot és lépjünk tovább a megjelen ablakokon. Ha sikeresen elfogadta a program a license fájlt, akkor az alábbi ablaknak kell megjelennie. Fontos: A Xilinx által kipostázott license fájl, az igénylést kezdeményez PC merevlemezmeghajtójának kötet címkéje alapján generálták, így az más számítógépen nem használható. 3.1.4 WebPACK indítása Miután elvégeztük a WebPACK és a ModelSim letöltését, telepítését és a license fájl beillesztését, a teljes rendszer készen áll a fejlesztés megkezdésére. Tervez munkánkat a Project Navigator elindításával kezdhetjük el. Ezt kétféleképpen tehetjük meg: Start menü \ Programok \ Xilinx ISE 5 \ Project Navigator, A Windows asztalon az itt látható Project Navigator ikonra kattintva. 3.2 Gyakorlati mintaáramkör tervezése WebPACK-el 3.2.1 Project Navigator, a WebPACK keretprogramja 27
A WebPACK rendszer különböz programjait (szerkeszt, szimulátor, fordító, programozó, stb.) és funkcióit a Project Navigator fogja össze. Innen közvetlenül elindíthatjuk a projekt elkészítéséhez szükséges programokat, illetve beállíthatjuk a projekt egyes opcióit. Az alábbi ábra a Project Navigator ablakát mutatja be, mely hat részb l áll. 1 3 2 4 6 1. Legfelül található a menüsor, mely szöveges és ikon formában is tartalmaz parancsokat. 2. Alatta balra helyezkedik el a Sources in Project, a terv forráskódjait összefoglaló ablak, melynek három megjelenési formája van. Ezek közül mi a Module View-t használjuk. Segítségével fa szerkezetben láthatjuk a projekt forrásainak hierarchiáját. A forráskódokra történ dupla kattintással közvetlenül elindíthatjuk azok szerkeszt programjait (ECS, VHDL editor, StateCAD). Az ECS Foundation-beli megfelel je a Schematic Editor. 3. Jobb oldalon található a HDL Editor, melyben a VHDL, ABEL és Verilog forráskódokat szerkeszthetjük. Ugyanebben az ablakban nézegethetjük a különböz összefoglaló riportokat és a HDL nyelvi segít jét a Language Templates-et is, melynek példái és nyelvi összefoglalói nélkülözhetetlen segítséget nyújtanak a tervezés során. 4. Balra lent található a Processes for Current Source, az aktuális forrást feldolgozó ablaka, melyb l programokat indíthatunk el, a tervezés során keletkez riport dokumentumokat nyithatunk meg és különböz beállításokat érhetünk el. Megfigyelhetjük, hogy a felette lev ablakban kiválasztott forrással milyen m veleteket végeztethetünk és milyen sorrendben. Az ablakban a lehetséges funkciók hierarchikusan csoportba szervezve öt nagy témakörbe sorolva találhatók meg. 5 28
Design Entry Utilities (Tervezési segédeszközök): a terv elkészítéséhez szükséges segédopciókat foglalja össze. A Create Schematic Symbol-al a kiválasztott forráskódhoz, grafikus felületen elhelyezhet szimbólumot rendelhetünk. A Launch ModelSim Simulator-al a projekt logikai szimulációját végezhetjük el. A Check Design Rules-al pedig a kiválasztott grafikus (schematic) forrást ellen rizhetjük le. User Constraints (Peremfeltételek): a Create Timing Constraints-al az eszköz id zítési feltételeit adhatjuk meg. Az Assign Package Pins és az Edit Constraints(Text)-el az eszköz lábkiosztását definiálhatjuk grafikus és szöveges felületen. Synthesize (HDL fordító): a szintézis eszközöket foglalja össze, dupla kattintással a forrás szintézisét indíthatjuk el. A View RTL Schematic segítségével a kiválasztott forrás netlistájából generált kapcsolási rajzot tekinthetjük meg. Az Analyze Hierarchy a kiválasztott forrás hierarchiáját vizsgálja. A Check Syntax a HDL források nyelvi ellen rzését végzi. Implement Design (Fizikai megvalósító): a terv implementálását végz programokat fogja össze, dupla kattintással a létfontosságú m veletek végeztethet k el. A Translate-el a kiválasztott forrás fordítását indíthatjuk el. A Fit alatt találjuk meg a ChipViewer programot, mellyel belenézhetünk az eszköz belsejébe. Grafikus felületen láthatjuk a kiválasztott I/O portok és makrocellák egymáshoz kapcsolódását. Ugyancsak a Fit alól indítható az XPower fogyasztásanalizáló program, melynek paraméterezésével el re meghatározhatjuk az eszköz által felvett teljesítményt. A Generate Timing-al riport fájlt generálhatunk, mely a különböz jelkésleltetéseket illetve a rendszerben használható legnagyobb órajel frekvenciát adja meg. Alatta található a Timing Analyzer program az id zítési feltételek szélesebb határok közötti paraméterezésére. Generate Programming File (Programozó fájl generáló): a céleszközbe letölthet forráskódot hozza létre. A Generate JTAG File-ra vagy a Configure Device (impact)-ra kattintva az impact-ot indíthatjuk el, mellyel kapcsolat kezdeményezhet a Xilinx eszköz és a PC között a letölt kábelen keresztül. A kétirányú kommunikáció létrejötte után lehet ségünk van az eszköz (újra)programozására vagy törlésére. Ha a logikai hálózat megtervezését követ en biztosra vesszük, hogy munkánk teljesen tökéletes nem szükséges lépésenként végigmenni a Processes for Current Source ablakban található programokon, hanem közvetlenül elindíthatjuk a fent említett impact-et, melynek hatására automatikusan generálódnak a programozáshoz szükséges fájlok. A Processes for Current Source ablak jelzései: Az elindított folyamatok elvégzésének sikerességér l grafikus illetve szöveges visszajelzést kapunk. Egy pipa jelzi, ha a kiválasztott m velet sikeresen végrehajtódott. A felkiáltó jel arra figyelmeztet bennünket, hogy valamit nem teljesen megfelel en tettünk vagy a logikai sorban bizonyos m veleteket átléptünk. Piros kereszt a súlyos hibára figyelmeztet. 29
A tervezést csak a hiba elhárítása után tudjuk folytatni, melyhez az alsó szöveges ablakban olvasható üzenetek nyújtanak segítséget. 5. Alul található a Console (kijelz pult), mely a projekt állapotának, naplózásának megtekintésére szolgál. A normál üzenetek megkülönböztet jelzés nélkül, a figyelmeztetések, a hibák indexel kerülnek kijelzésre. 6. legalsó sor a Státuszsor, mely információt ad a Project Navigator aktuálisan elvégzett m veleteir l. A következ kben vegyük sorra a Project Navigator menüsorának parancsait. 3.2.1.1 Project Navigator - File menü New Project (Új projekt): segítségével új projektet hozhatunk létre. Hatására egy ablak jelenik meg, melyben az alábbi jellemz ket kell megadni: a projekt nevét, a munkamappa útvonalát, a programozható logika családját és típusát (makrocellák száma, tokozás típusa) illetve a projekt szintézisének fajtáját. Open Project (Projekt megnyitása): meglév projektet nyithatunk meg. Open Example (Példa megnyitása): a WebPACK beépített minta projektjeit kínálja fel megnyitásra. Close Project (Projekt bezárása): az aktuálisan nyitva lev projektet bezárja. Save Project As (Projekt mentése másként): az aktuálisan megnyitott projektet elmenthetjük más néven a kiválasztott munkamappába. Csak a logikai hálózat konfigurációját tartalmazó forrás fájlokat menti el a kiválasztott munkamappába, az implementáció során generált fájlokat nem. New (Új lap létrehozása): segítségével új text fájlt hozhatunk létre, melyet a Project Navigator jobb ablakában szerkeszthetünk (balról az els ikon). Open (Megnyitás): bármilyen fájl szöveges formában történ megnyitására alkalmas, melyet ugyancsak a Project Navigator jobb ablakában szerkeszthetünk (balról a második ikon). Close (Bezárás): a Project Navigator jobb ablakában aktuálisan megnyitott dokumentumot zárja be. Save (Mentés): a Project Navigator jobb ablakában aktuálisan megnyitott dokumentumot menti el ugyanazon a néven (balról a harmadik ikon). Save As (Mentés másként): a Project Navigator jobb ablakában aktuálisan megnyitott dokumentumot menthetjük el más néven. Print (Nyomtatás): a Project Navigator jobb ablakában aktuálisan megnyitott dokumentumot nyomtathatjuk ki. Save All (Összes mentése): az aktuálisan megnyitott projekthez tartozó összes forrás fájlt menti el (balról a negyedik ikon). Recent Project (Legutolsó projektek): az utoljára használt projektek listáját kínálja fel megnyitásra. Recent Files (Legutolsó fájlok): az utoljára szerkesztett szöveges fájlok listáját kínálja fel megnyitásra. Exit (Kilépés): a változások elmentését felkínálva kilép a programból. 30
3.2.1.2 Project Navigator - Edit menü Undo (Visszavonás): az el z m veletet vonhatjuk vissza (balról a tizennyolcadik ikon). Redo (Ismét): a visszavonás parancs visszavonása. Cut (Kivágás): a kijelölt szövegrészt kimásolja a szerkeszt vágólapjára, a munkalapról pedig törli (balról a tizenötödik ikon). Copy (Másolás): a kijelölt szövegrészt kimásolja a szerkeszt vágólapjára, az eredeti meghagyása mellett (balról a tizenhatodik ikon). Paste (Beillesztés): a szerkeszt vágólapján lev objektumokat illeszti be a munkalapra (balról a tizenhetedik ikon) Go To (Ugorj oda): az aktuálisan megnyitott szöveges forrásban a kurzorral egy szóval el rébb-, hátrébb-, a dokumentum tetejére- vagy aljára-, illetve a megadott sorhoz ugorhatunk. Select (Kijelölés): az aktuálisan megnyitott szöveges forrásban a kurzor helyzetéhez képest különböz kijelöléseket végezhetünk; sor elejéig vagy végéig, dokumentum elejéig vagy végéig, az adott illetve a következ szó elejéig. Insert File (Fájl beillesztése): az aktuálisan megnyitott szöveges forrásba a kiválasztott fájl tartalmát szövegesen beilleszthetjük. Find (Keresés): az aktuálisan megnyitott szöveges forrásban az általunk megadott szövegrészre kereshetünk rá. Find Next (Következ keresése): az el bbi keres funkciót egészíti ki. A Find parancsnál megadott szövegrész további keresését végezhetjük el. Replace (Kicserélés): az aktuálisan megnyitott szöveges forrásban szövegrészeket cserélhetünk ki. Find In File (Keresés a fájlban): az aktuálisan megnyitott szöveges forrásban keresi a megadott szövegrészt. A keresés eredménye a képerny alsó szöveges ablakában olvasható (jobbról a hatodik ikon). Language Templates (Nyelvi minták): a HDL (VHDL, Verilog, ABEL) nyelvekhez nyújt segítséget. Egyszer bb feladatokra komplett megoldásokat kínál fel, illetve lehet séget ad saját HDL makrók készítésére is melyeket közvetlenül beilleszthetünk a saját projektünk HDL forrásába (jobbról az els ikon). Preferences (Beállítások): a Projekt Navigator különböz opcióit állíthatjuk itt be. 3.2.1.3 Project Navigator - View menü Els sorban a Project Navigator eszköztárainak, ablakainak megjelenítését illetve elrejtését állíthatjuk itt be. 31
3.2.1.4 Project Navigator - Project menü New Source (Új forrás): az aktuálisan megnyitott projekthez üres forrást rendelhetünk, mely lehet szimpla szöveges dokumentum, HDL-, Schematic-forrás, állapotgép diagram illetve a szimulációhoz szükséges grafikus vagy szöveges teszt hullámforma. Add Source (Forrás hozzáadása): az aktuálisan megnyitott projekthez egy másik projekt forrását rendelhetjük. Add Copy of Source (Forrás másolatának hozzáadása): ugyanaz, mint az el z parancs, viszont itt már a forrás fájl fizikailag is bemásolódik a projekt munkamappájába. Cleanup Project Files (Projekt fájlok kitakarítása): a projekt implementációja során létrejött adat fájlokat törölhetjük segítségével. Toggle Path (Útvonal választás): a projektet felépít források teljes hierarchiáját jeleníti meg. Archive (Archiválás): az aktuálisan megnyitott projekt forráskódjait összetömöríti egy *.zip kiterjesztés fájlba. Take Snapshot (Pillanatkép készítése): az aktuálisan megnyitott projekt forráskódjairól másolatot készít az adott pillanatban, és a snapshots mappában létrehozott (általunk megadott nev ) könyvtárba másolja. Lehet ség van megjegyzés hozzáf zésére, mely a Xcomsnp nev kiterjesztés nélküli fájlban tárolódik. Make Snapshot Current (Visszaállítás kiválasztott pillanatképb l): az elmentett pillanatképnek megfelel en módosítja a projekt forráskódjait, miközben az aktuális állapotot egy újabb pillanatképben elmenti. Apply Project Properties (Projekt tulajdonságok alkalmazása): a xilinx_webpack/data könyvtárban az xpf, npl, snp kiterjesztés fájlok megnyitását kínálja fel. 3.2.1.5 Project Navigator - Source menü Open (Megnyitás): a Sources in Project ablakban kijelölt forrást nyitja meg. Remove (Eltávolítás): forrásfájlt törölhetünk a projekt szerkezetéb l. A parancs mindig a Sources in Project ablakban kijelölt komponensre vonatkozik. Move to Library (Mozgatás könyvtárba): Funkciója 32
ismeretlen! Properties (Projekt tulajdonságok): a Project Properties ablakot hívhatjuk vele el, melyben módosíthatjuk az eszköz típusát, tokozását, sebességét és a tervezés során használt szintézis eszközt. 3.2.1.6 Project Navigator - Process menü Run (Folyamat futtatása): a forrás feldolgozóban kiválasztott folyamatot indítja el. Rerun (Folyamat újrafuttatása): a forrás feldolgozóban kiválasztott folyamatot újra elindítja miközben a létrejött fájlok felülírják a korábbiakat. Rerun All (Összes folyamat újrafuttatása): a forrásfeldolgozóban kijelölt folyamatig újra végrehajtja az összes m veletet, miközben a létrejött fájlok felülírják a korábbiakat. Stop (Folyamat leállítása): az aktuálisan végrehajtás alatt álló folyamatot állítja le. Open Without Updating (Megnyitás frissítés nélkül): Funkciója ismeretlen! Properties (Folyamat tulajdonságok): a forrásfeldolgozóból indítható m veletek (szintézis, implementáció, programozó fájl generálás) m ködési tulajdonságait állíthatjuk be vele. 3.2.1.7 Project Navigator - Window menü New Window (Új ablak): az aktuálisan megnyitott szöveges dokumentumot vagy forrást egy újabb ablakban is megnyitja. Cascade (Lépcs zetes elrendezés): a megnyitott szöveges dokumentumokat illetve forrásokat lépcs zetes formában elrendezi a képerny n úgy, hogy mindegyiknek látszik a fejléce. Tile Horizontally (Mozaikszer elrendezés vízszintesen): a megnyitott szöveges dokumentumok illetve források ablakait egymás alatt azonos méretben elhelyezi. Tile Vertically (Mozaikszer elrendezés függ legesen): a megnyitott szöveges dokumentumok illetve források ablakait egymás mellett azonos méretben elhelyezi. 3.2.1.8 Project Navigator - Help menü A Help menü segítséget nyújt a WebPACK rendszer használatához, illetve biztosítja az On-Line dokumentáció elérését, ha az telepítve van. Tartalmaz oktató részeket is, melyek egy-egy m velet elsajátítását könnyítik meg. Az ikonsorban az utolsó ikon a Help menühöz kapcsolódik, de 33
nincs a menürendszerben megfelel je. Az ikon kiválasztását követ en információkat kaphatunk az egérmutató alatt lev objektumról. 3.2.2 Megvalósítandó feladat leírása A WebPACK fejleszt rendszer opcióit egy minta projekt tervezési fázisain keresztül mutatjuk be, mely kifejezetten a korábban ismertetett XPLA3 demonstrációs panelre készült. A demo board-ot kiegészíti a CPLD lábait kivezet tüskesorokra illeszked feltét, mely egy LED sort és nyomógombokat tartalmaz. Az egységes hardver egy kétirányú futófényt illetve 34
egy fel/le számlálást demonstrál. Az egyes állapotok közötti léptetést a nyomógombok (aszinkron) illetve a rendszer leosztott órajele (szinkron) biztosítja. A bemutató panelen kétféle kijelz egység található, egy kétdigites hétszegmenses LCD kijelz és a feltéten lév nyolc darab piros LED. Bemeneti jelforrásként szolgál a panelon található 32768Hz-es oszcillátor és a feltéten lev öt nyomógomb. Az oszcillátor leosztott jelei szolgáltatják a rendszer órajeleit, a nyomógombok pedig engedélyez és vezérl szerepet látnak el. Az eszköz felprogramozását követ en az LCD-n 00 látható valamint a feltéten lev összes piros LED világít. A B1 (fels ) és B5 (alsó) nyomógombok megnyomásával engedélyezhetjük illetve letilthatjuk a kijelzést a kijelz n és a LED-soron külön-külön. A LED-sor egy nyolcbites állapotgép kimeneteinek állapotait jeleníti meg az órajel ütemében. A hétszegmenses LCD kijelz pedig egy nyolcbites bináris fel/le számláló kimeneteinek binárisról hétszegmensesre dekódolt eredményét jelzi ki. A B2 (bal) és B4 (jobb) nyomógombok által egyrészt az állapotgép és a számláló léptetésének irányát választhatjuk meg, másrészt manuálisan órajel impulzust szolgáltathatunk a léptetésükhöz. A létrehozott logikai hálózat intelligensnek mondható, mivel ha a B2 és B4 nyomógombok nem szolgáltatnak impulzust nyolc órajel cikluson keresztül a számlálónak és az állapotgépnek, az utolsó léptetési irányt alapul véve automatikusan elindul a folyamat az órajel ütemében. M ködés közben a B3 (középs ) gomb megnyomásával állíthatjuk alapállapotba az egységet. A letöltést követ en a B2 vagy B4 gomb els lenyomásáig a rendszer passzív állapotban marad. LED sor B1 B3 B4 B2 B5 Reset LED 3.1. ábra 3.2.3 A XPLA3_Bemutato projekt magas szint forráskódja A magas szint tervezés lényege, hogy a létrehozott logikai hálózat áttekinthet és érthet legyen. Esetünkben ezt úgy érhetjük el, hogy a projekt forráskódjaiban hierarchiát hozunk létre. Tehát a bonyolultabb terveket nem egyetlen munkafelületen valósítjuk meg 35
(még akkor sem ha elfér), hanem funkcionálisan szétdaraboljuk és az egyes részeket szimbolikus alkatrészekkel helyettesítjük. Végeredményként a forráskódok hierarchiájának tetején lesz egy modul szint grafikus (schematic) forrás, mely csak az alárendelt források szimbólumait, a be/kimeneti puffereket és markereket illetve azok huzalozását tartalmazza. A bemutatásra kerül XPLA3_Bemutato projekt felépítése is az említett hierarchikus rendszert követi. A forráskódok hierarchikus listáját a Project Navigator/Sources in Project ablakban tekinthetjük meg. A hierarchia tetején található teljes.sch forrás tartalmát az alábbi képerny ablak mutatja. (A forrást a bal egérgombbal történ dupla kattintással nyithatjuk meg.) Vizsgáljuk meg a projekt globális logikai tervét, melyet kés bb mi magunk fogunk elkészíteni. A teljes.sch forrást az alábbi elemek építik fel: Könyvtári alkatrészek és szimbólumok Saját készítés blokkok Egyszer és buszos vezetékek Azonosítók a vezetékek elnevezésére. 3.2.4 A tervezés fázisai 36
Miel tt hozzákezdenénk a munkánkhoz fontos, hogy a kit zött feladatot megfelel en értelmezzük és a tervezés menetét el re átgondoljuk. A tervezést l a programozásig való eljutást az alábbi folyamatábra (3.2. ábra) szemlélteti. Terv leírása magas szint nyelven Xilinx ECS, HDL Editor, StateCAD Fordítás, feldolgozás Synthesize Funkcionális szimuláció M odelsim Optim alizálás, leképezés Im plem ent Design JEDEC fájl generálás Generate Program ming File Program ozás, visszaolvasás, tesztelés im pact 3.2. ábra A felhasználót érint igazi tervez munka tulajdonképpen a terv magas szint nyelven való leírása. A magas szint nyelv esetünkben lehet grafikus felület vagy különböz hardver leíró nyelvek egyike illetve állapotgépnek megfelel diagramterv. A tervez teljesen szubjektíven döntheti el, hogy melyik megoldást választja. A WebPACK program lehet vé teszi a különböz megoldások vegyes alkalmazását is. Ez azért nagyon el nyös, mert egyes alkalmazások grafikusan-, mások pedig szövegesen oldhatók meg egyszer bben illetve áttekinthet bben. 37
3.2.5 Új projekt készítése A tervez munka els lépéseként létre kell hoznunk egy új projektet a Project Navigatorban. Kattintsunk a File menüben a New Project-re. Töltsük ki a megjelen New Project ablakot; adjuk meg a projekt nevét, elérési útvonalát, az eszköz típusát, az eszköz jellemz paramétereit (logikai s r ség, m ködési feszültség, tokozás, lábszám, sebesség) és a szintézis eszköz típusát. Az új projekt létrehozását követ en a forráskódok hozzáadásával folytathatjuk a tervezést. Mivel az elkészítend terv Schematic alapra épül, így els ként egy teljes.sch nev grafikus forrást rendeljünk a projekthez. Kattintsunk a Project menüben a New Source-ra. A megjelen New ablakban válasszuk ki a felsorolásból a Schematic-ot. Adjunk a forrásnak nevet (teljes) és kattintsunk a Tovább-ra majd a Befejezés-re. Ezt követ en automatikusan megnyílik a Xilinx ECS, a WebPACK grafikus szerkeszt je, melyben a logikai hálózat elkészítése kapcsolási rajz szinten lehetséges. Mivel a tervezést magas szinten végezzük, a teljes.sch forrás csak a projekt globális logikai összeállítását fogja tartalmazni, mely a tervezés végs fázisában -miután minden alárendelt blokk elkészült- kerül megrajzolásra. A következ kben ismerkedjünk meg a Xilinx ECS-vel, majd készítsük el a projekt grafikus forrásait. 38
3.2.6 Xilinx ECS, a WebPACK grafikus forrás szerkeszt je A Xilinx ECS (Engineering Capture System) a WebPACK grafikus szerkeszt je, mellyel *.sch kiterjesztés forráskódokat nyithatunk meg, illetve hozhatunk létre. A logikai hálózat tervezése kapcsolási rajz szinten történik, a szerkeszt alkatrész könyvtárában található kapuk, tárolók, számlálók, stb felhasználásával. Az alábbi ábra a grafikus szerkeszt ablakát mutatja be, mely négy részb l áll. 1 3 2 4 1. Legfelül található a menüsor, mely szöveges és ikon formában is tartalmaz parancsokat. 2. Alatta helyezkedik el a szerkeszt munkafelülete. 3. T le ballra található a Symbols fül alatt a munkafelületen elhelyezhet alkatrészek és szimbólumok kategóriáit illetve azok listáját megjelenít ablakok. Továbbá ugyancsak itt, de az Options fül alatt érhet k el az aktuálisan kiválasztott üzemmódhoz tartozó beállítások. 4. A képerny alján a státuszsor üzeneteit olvashatjuk. A továbbiakban nézzük meg, hogy a Xilinx ECS menüsorában milyen parancsok segítik a tervez munkát. 39
3.2.6.1 Xilinx ECS - File menü New (Új létrehozása): új munkalapot illetve szimbólumot hoz létre szerkesztés céljából (fels sorban, balról az els ikon). Open (Megnyitás): korábban elmentett *.sch kiterjesztés munkalapot vagy *.sym kiterjesztés szimbólum fájlt nyithatunk meg (fels sorban, balról a második ikon). Close (Bezárás): az aktuálisan megnyitott munkalapot zárja be, azonban a szerkeszt t megnyitva hagyja. Save (Mentés): a munkalap tartalmát menti el (fels sorban, balról a harmadik ikon). Save As (Mentés másként): a munkalap tartalmát menti el más néven a régi változat megtartása mellett. Save All (Összes mentése): az összes megnyitott munkalap tartalmát menti el (fels sorban, balról a negyedik ikon). Print (Nyomtatás): az aktuálisan megnyitott munkalap tartalmát nyomtatja ki. Természetesen lehet ség van a nyomtatási jellemz k beállítására (fels sorban, balról az ötödik ikon). Print Preview (Nyomtatási kép): az aktuálisan kiválasztott munkalap nyomtatási képét tekinthetjük meg. Print Setup (Nyomtatási beállítások): a nyomtatási jellemz ket állíthatjuk be. A beállítások elvégezhet ek a nyomtatás menüponton belül is, közvetlenül a nyomtatás el tt. Recent Schematics (Legutolsó munkalapok): az utoljára megnyitott munkalapok listáját kínálja fel megnyitásra. Recent Symbols (Legutolsó szimbólumok): az utoljára megnyitott szimbólumok listáját kínálja fel megnyitásra. Recent NGR Files (Legutolsó NGR fájlok): az utoljára megnyitott NGR fájlok listáját kínálja fel megnyitásra. Exit (Kilépés): a változások elmentését felkínálva kilép a Xilinx ECS-b l. 40
3.2.6.2 Xilinx ECS - Edit menü Undo (Visszavonás): az el z m veletet vonja vissza (fels sorban, balról a tizenegyedik ikon). Redo (Ismét): a visszavonás parancs visszavonása (fels sorban, balról a tizenegyedik ikon). Cut (Kivágás): a kijelölt objektumot kimásolja a szerkeszt vágólapjára, a munkalapról pedig törli (fels sorban, balról a nyolcadik ikon). Copy (Másolás): a kijelölt objektumot a szerkeszt vágólapjára másolja, az eredeti meghagyása mellett (fels sorban, balról a kilencedik ikon). Paste (Beillesztés): a szerkeszt vágólapjára kimásolt objektumokat illeszti be a munkalapra (fels sorban, balról a tizedik ikon). Delete (Törlés): a munkalapon kijelölt objektumokat törli. Symbol (Szimbólum): megnyitja a szimbólum szerkeszt t, mellyel a munkalapon kijelölt objektum külsejét szerkeszthetjük át. Update ObsoleteSymbols (Elavult szimbólum aktualizálása): az átszerkesztett szimbólumot érvényesíthetjük a megnyitott munkalapon. Rename Selected Bus (Kiválasztott busz átnevezése): a munkalapon a kiválasztott busz vonalat tetsz legesen átnevezhetjük úgy, hogy a hozzávezetések nevei automatikusan módosulnak. Rename Selected Net (Kiválasztott vezeték átnevezése): a munkalapon a kiválasztott vezetéket tetsz legesen átnevezhetjük úgy, hogy a vele megegyez azonosítóval rendelkez vezetékek nevei is automatikusan módosulnak. Mirror (Tükrözés): a munkalapon a kiválasztott objektumot vízszintesen tükrözi (alsó sorban, balról a tizenhatodik ikon). Rotate (Forgatás): a munkalapon a kiválasztott objektumot +90 fokkal elforgatja (alsó sorban, balról a tizenötödik ikon). Selected Object(s) (Objektum kiválasztás): az egér kurzort objektum kiválasztó üzemmódba (alapértelmezett nyíl) állítja. Select All (Mindent kijelöl): a munkalapon található összes objektumot kiválasztja. Unselect All (Kijelölés megszüntetése): a munkalapon a kiválasztott objektumokat kiválasztatlanná teszi. Find (Keresés): a munkalapon lév objektumokra név szerint rákereshetünk. Object Properties (Tulajdonságok): a kiválasztott munkalap méretét módosíthatjuk és rendelhetünk hozzá további munkafelületet. Így, akár több munkalapból is állhat egy schematic forrás. Preferences (Tulajdonságok): a Schematic Editor, a Symbol Editor és az RTL Viewer megjelenési és m ködési tulajdonságait állíthatjuk be. 41
3.2.6.3 Xilinx ECS - View menü Toolbars (Eszköztárak): segítségével beállíthatjuk, hogy az ikonsorban mely ikoncsoportok jelenjenek meg. Status Bar (Státusz sor): a státuszsor megjelenítésére és elrejtésére szolgál. Zoom (Nagyítás): a munkalap különböz nagyításának lehet ségét kínálja fel: teljes nézet, kicsinyítés egy léptékkel, nagyítás egy léptékkel, kijelölt terület- illetve objektum teljes képerny re nagyítása (fels sorban, balról a tizennegyedik-tizennyolcadik ikon). Pan (Eltolás): a munkalap képerny n való vízszintes illetve függ leges görgetésére szolgál, mely lehetséges a menüsorból, a billenty zetr l és az egér segítségével. Push Into Symbol or Return Calling Schematic (Szimbólumhoz tartozó forrás megnyitása): a munkalapon kijelölt -hierarchiával rendelkez - szimbólum schematic forrását nyitja meg egy új munkalapon (alsó sorban, balról a tizenhetedik ikon). Refresh (Frissítés): frissíti a megjelenítést, eltünteti a képerny n lév piszkokat, melyek pl. törlés után keletkeznek (fels sorban, balról a tizenkilencedik ikon). 3.2.6.4 Xilinx ECS - Add menü Wire (Huzalozás): egyszer és buszos vezetékek rajzolását teszi lehet vé, melyekkel összeköthet k a munkalapon lév szimbólumok kivezetései (alsó sorban, balról a második ikon). Net Name (Hálózat név): a hálózat vezetékeit nevezhetjük el vele. Az azonos nev vezetékek össze huzalozottnak tekinthet k (alsó sorban, balról a harmadik ikon). Bus Tap (Busz leágazások): ezekkel a hozzávezetésekkel ágaztathatunk le illetve csatlakoztathatunk fel jeleket a buszos vonalakra. Fontos az összekapcsolódó szimpla- és buszos vonalak megfelel elnevezése, címzése (alsó sorban, balról az ötödik ikon). I/O Marker (Be/Kimenet jelz k): segítségével a munkalapon lév hálózat be- és kimeneteire be/kimenet jelz szimbólumokat helyezhetünk el, melyeket tetszés szerint elnevezhetünk (alsó sorban, balról a hatodik ikon). Symbol (Szimbólum): a szerkeszt szimbólum könyvtárát jeleníti meg a képerny jobb oldalán (alsó sorban, balról a hetedik ikon). Instance Name (Hivatkozási név): a munkalapon lév szimbólumokhoz új hivatkozási nevet rendelhetünk (alsó sorban, balról a nyolcadik ikon). Arc (Körív): körív rajzolását teszi lehet vé (alsó sorban, balról a kilencedik ikon). Circle (Kör): kör rajzolását teszi lehet vé (alsó sorban, balról a tizedik ikon). Line (Vonal): vonal rajzolását teszi lehet vé (alsó sorban, balról a tizenegyedik ikon). 42
Rectangle (Négyszög): négyszög rajzolását teszi lehet vé (alsó sorban, balról a tizenkettedik ikon). Text (Szöveg): tetsz leges tartalmú és tulajdonságú szöveg elhelyezését teszi lehet vé a munkalapon (alsó sorban, balról a tizenharmadik ikon). 3.2.6.5 Xilinx ECS - Tools menü Check Schematic (Schematic forrás ellen rzése): az aktuálisan megnyitott schematic forrás ellen rzését végzi (alsó sorban, balról a tizennyolcadik ikon). Symbol Wizard (Szimbólum varázsló): az aktuálisan megnyitott munkalapon lév logikai hálózatból egy szimbólumot készít, melynek be és kimeneteit a hálózat IOMarker-ei alapján alakítja ki. Ezt követ en, az eddig lapnyi méret hálózat egyetlen szimbólum formájában elhelyezhet egy másik schematic forrásban, ezzel magasabb szintre emelve a tervezési módot. Create IOMarkers (Be/kimenet jelz k készítése): egy üres munkafelületen, az elkészítend hálózat be és kimenetinek egyszer és gyors elkészítését teszi lehet vé. Query (Lekérdezés): hatására egy ablak jelenik meg, mely információkat ad a kiválasztott objektum hivatkozási nevér l, szimbólum nevér l, be/kimeneteinek nevér l és azok más egységekhez való csatlakozásáról (alsó sorban, balról a tizennegyedik ikon). 3.2.6.6 Xilinx ECS - Window menü New (Új): az aktuálisan megnyitott munkalapot egy újabb ablakban is megnyitja, és aktívvá teszi (fels sorban, balról a huszadik ikon). Close (Bezárás): az aktuálisan megnyitott munkalapot bezárja (fels sorban, balról a huszonegyedik ikon). Close All (Összes bezárása): az összes megnyitva lev munkalapot bezárja, azonban a szerkeszt t nyitva hagyja. Next (Következ ): a megnyitott munkalapok közül a soron következ t teszi aktívvá. Previous (El z ): a megnyitott munkalapok közül a megel z t teszi aktívvá. Minimize All (Összes lekicsinyítése): Funkciója ismeretlen! Cascade (Lépcs zetes elrendezés): a megnyitott szöveges dokumentumokat illetve forrásokat lépcs zetes formában elrendezi a képerny n úgy, hogy mindegyiknek látszik a fejléce (fels sorban, balról a huszonhatodik ikon). Tile Horizontally (Mozaikszer elrendezés vízszintesen): a megnyitott szöveges dokumentumok illetve források ablakait egymás alatt azonos méretben elhelyezi (fels sorban, balról a huszonhetedik ikon). Tile Vertically (Mozaikszer elrendezés függ legesen): a megnyitott szöveges dokumentumok illetve források ablakait egymás mellett azonos méretben elhelyezi (fels sorban, balról a huszonnyolcadik ikon). Arrange Icons (Ikonok elrenedezése): Funkciója ismeretlen! 43
3.2.6.7 Xilinx ECS - Help menü Help Topics (Súgótémák): az ECS témaköreit jeleníti meg. Online Dokumentation: egy PDF dokumentumot nyit meg. About ECS: a Xilinx ECS névjegyét mutatja meg. Készítsük el a XPLA3_Bemutato projekt schematic (grafikus) forrásait, melyeket kés bb a teljes.sch lapon helyezünk el! 3.2.6.8 Xilinx ECS - contr.sch blokk A contr.sch blokk funkciója és forráskódja (4. számú melléklet): A demo board m ködését alapvet en ez a blokk határozza meg. A pergés mentesít n keresztül fogadja a B2, B4 nyomógombok által generált impulzusokat, melyeket feldolgoz majd továbbít egy nyolcbites bináris fel/le számláló órajel bemenetére. Ezekb l az impulzusokból határozza meg a számláló (fel vagy leszámlálási) üzemmódját is. A blokk további funkciója, hogy a számlálónak 2Hz-es órajelet biztosítson, ha a B2 és B4 gombokról négy másodpercen keresztül nem érkeznek impulzusok. A bekapcsolást és a resetelést követ en azonban nem indítja el a számlálást, hanem vár a B2 vagy B4 gomb els lenyomására. A blokk alapján létrehozott szimbólum: Az alábbi ábra a fenti blokk alapján generált szimbólumot mutatja, mely a továbbiakban önálló alkatrészként felhasználható egy másik schematic forrásban. A blokk azonosítói (szimbólum név, bemenetek-, kimenetek nevei) automatikusan, a schematic forrás alapján kerülnek elnevezésre. A szimbólum bemenetei (UP, DOWN, CLR, C) a bal oldalon, a kimenetei pedig (Q_UP, Q_C) a jobb oldalon találhatók. A blokk elkészítésének lépései: A Project Navigator-ban a projekthez adjunk hozzá egy contr nev schematic forrást: válasszuk ki a Project menüben a New Source-t, majd a forrás típusának jelöljük meg a Schematic-ot, nevéhez pedig contr -t írjunk be. Az ábra alapján egyenként válasszuk ki az alkatrészlistából a szükséges tárolókat, kapukat és számlálót, majd helyezzük el a lapon: az alkatrészlistában az egérrel válasszuk ki a megfelel alkatrészt és húzzuk a munkafelületre, majd a bal egérgomb megnyomásával helyezzük el a lapon. A megfelel helyekre rakjuk le a VCC (+táp) szimbólumokat, melyeket ugyancsak az alkatrészlistában találhatunk meg, és az alkatrészekhez hasonlóan helyezünk el. Az egyes alkatrészeket és VCC szimbólumokat huzalozzuk össze: az ikonsorból válasszuk ki az Add Wire ikont -így az egér vezetékrajzoló funkcióba vált-, majd az egér bal gombjával jelöljük ki a vezeték két végpontját. 44
Helyezzük el a blokk be- és kimeneti portjait: az alkatrészek megfelel lábaitól húzzunk vezetéket egy-egy küls ponthoz úgy, hogy a bal egérgombot csak a vezeték végpontján engedjük fel. Ezt követ en a vezetékek végpontjaihoz illesszünk I/O Marker-eket. Nevezzük el az I/O Marker-eket az ábra szerint: a bal egérgombbal kattintsunk kétszer a Marker-ra, majd adjuk meg a megfelel azonosítót, végül nyomjunk az OK-ra. Rendeljünk alkatrész küls t a létrehozott blokkhoz: a Tools menüben válasszuk ki a Symbol Wizard-ot. Ezt követ en megjelenik a Symbol Wizard ablak, melyben a Pin Name Source-nál jelöljük meg a Using Schematic-ot, a Shape-nél pedig a Rectangle-t., majd lépjünk tovább. A következ ablakban a létrehozandó blokk be és kimeneteit láthatjuk felsorolva, melyek automatikusan a schematic forrásból generálódtak. A m velet befejezéséhez lépjünk tovább az ablakokon, végül kattintsunk a Befejezésre. A következ három schematic blokk létrehozását a fentiek ismeretében már csak vázlatosan ismertetjük! 3.2.6.9 Xilinx ECS - disp_sel.sch blokk A disp_sel.sch blokk funkciója és forráskódja (5. számú melléklet): Az alábbi blokknak csupán annyi szerepe van, hogy a pergés mentesített B1 és B5 nyomógombok által szolgáltatott impulzusok számát a felére osztja le egy-egy D-tároló segítségével. Ennek megfelel en a nyomógombok lenyomásai által a blokk Q1 és Q2 kimenetén egymást követik az L és H szintek, melynek hatására a demo board-on lev kijelz egységek (LCD kijelz, LED-ek) aktív illetve passzív állapotba kerülnek. A blokk alapján létrehozott szimbólum: Bemenetek: I1, I2, CLR Kimenetek: Q1, Q2 A blokk elkészítésének lépései: A Project Navigator-ban a projekthez adjunk hozzá egy disp_sel nev schematic forrást. Az ábra alapján válasszuk ki az alkatrészlistából a szükséges tárolókat és invertereket, majd helyezzük el a lapon. Huzalozzuk össze az alkatrészeket. 45
Helyezzük el a blokk be- és kimeneti portjait (I/O Marker-eket), majd nevezzük el ket az ábra szerint. Rendeljünk alkatrész küls t a létrehozott blokkhoz. 3.2.6.10 Xilinx ECS - enable.sch blokk Az enable.sch blokk funkciója és forráskódja (6. számú melléklet): Az enable.sch blokk tulajdonképpen egy multiplexer, mely a cl8c.dia állapotgéppel megvalósított modul 8 bites kimenetét vagy fix H szinteket kapcsol a LED-ek katódjaira. Ennek megfelel en, ha a blokk EN engedélyez bemenetére L szint kerül az állapotgép kimeneteinek megfelel en világítanak a LED-ek. Az engedélyez bemenetre kapcsolt H szint esetén, pedig a LED-ek katódjaira H szint kerül, így egyetlen LED sem fog világítani. A blokk alapján létrehozott szimbólum: Bemenetek: EN, I(7:0) Kimenetek: Q(7:0) A blokk elkészítésének lépései: A Project Navigator-ban a projekthez adjunk hozzá egy enable nev schematic forrást. Az ábra alapján válasszuk ki az alkatrészlistából a szükséges multiplexereket és invertereket, majd helyezzük el a lapon. A megfelel helyre rakjuk le a VCC (+táp) szimbólumot. Rakjuk le a blokk nyolcbites be- és kimeneti buszos vonalát, lássuk el I/O Marker-ekkel és nevezzük el ket az ábra szerint: húzzunk két közönséges vezetéket az ábra szerint, majd helyezzünk el a bal oldali egyik végére egy bemeneti-, a jobb oldali egyik végére pedig egy kimeneti I/O Marker-t. A bal egérgombbal kattintsunk kétszer a bemeneti Marker-ra és nevezzük el I(7:0)-ra. Ugyanezt tegyük meg a kimeneti Marker-ral, de azt Q(7:0)-ra kereszteljük. Ezt követ en a szerkeszt szemmel láthatóan automatikusan megvastagítja a vezetéket, mellyel jelzi, hogy a vezetéket buszos vonallá alakította. A buszos vonalakat lássuk el hozzávezetésekkel: az ikonsorból az egérrel válasszuk ki az Add Bus Tap ikont, majd helyezzük el a hozzávezetéseket a buszos vonalakon (esetünkben nyolc-nyolc darabot). Huzalozzuk össze az alkatrészeket, a VCC szimbólumot és a buszos hozzávezetéseket az ábra szerint. 46
A multiplexerek összekötött S0 bemeneteib l húzzunk vezetéket, majd a végére helyezzünk el egy bemeneti Marker-t és nevezzük el EN -re. A multiplexer D0 bemenete és a buszos hozzávezetések közötti vezeték szakaszokat nevezzük el az ábra szerint: az ikonsorból az egérrel válasszuk ki az Add Net Name ikont, majd a The name to use szöveges mez ben adjuk meg a vezeték nevét, végül a bal egérgombbal kattintsunk a vezetékre. Az I(7:0) buszos vonalról lecsatlakozó vezetékeket I(0), I(1), I(7)-re, míg a Q(7:0) buszos vonalra felcsatlakozó vezetékeket Q(0), Q(1), Q(7)-re nevezzük el. A vezetékek elnevezését segítik a Keep Name szöveg mez ben található opciók. Rendeljünk alkatrész küls t a létrehozott blokkhoz. 3.2.6.11 Xilinx ECS - lcd_drv.sch blokk Az lcd_drv.sch blokk funkciója és forráskódja (7. számú melléklet): Az lcd_drv blokk a demo panelen található LCD kijelz meghajtását végzi. Az LCD-n akkor valósul meg a kijelzés, ha a BP (virtuális föld) láb és az egyes szegmensek lábai között potenciálkülönbség van. Mindegy melyik a pozitívabb illetve negatívabb, de egy adott állapotot csak rövid ideig lehet fenntartani. Kijelzéskor tehát a BP és a szegmensek lábai között lév feszültség irányát váltogatni kell 50-100Hz frekvenciával. A blokkban található Kizáró-NemVagy kapuk ezt a feladatot látják el. Az el ttük lev multiplexerek pedig az LCD kijelz egyszer letiltását illetve engedélyezését szolgálják. A blokk alapján létrehozott szimbólum: Bemenetek: I(6:0), C, EN, DP Kimenetek: Q(7:0) A blokk elkészítésének lépései: A Project Navigator-ban a projekthez adjunk hozzá egy lcd_drv nev schematic forrást. Az ábra alapján válasszuk ki az alkatrészlistából a szükséges multiplexereket és kizáró vagy kapukat, majd helyezzük el a lapon. A megfelel helyre rakjuk le a VCC (+táp) szimbólumot. Rakjuk le a blokk hétbites be- és nyolcbites kimeneti buszos vonalát, lássuk el I/O Marker-el és nevezzük el ket az ábra szerint. 47
A buszos vonalakat lássuk el hozzávezetésekkel. Huzalozzuk össze az alkatrészeket, a VCC szimbólumot és a buszos hozzávezetéseket az ábra szerint. A multiplexerek S0 bemenetét kössük össze, majd húzzunk bel le egy vezetéket, melynek szabad végére rakjunk le egy bemeneti Marker-t és nevezzük el EN -re. A kizáró-vagy kapuk szabad végét kössük össze, majd húzzunk bel le egy vezetéket, melynek szabad végére helyezzünk el egy bemeneti Marker-t és nevezzük el C -re. A multiplexer D0 bemenete és a buszos hozzávezetések közötti vezeték szakaszokat nevezzük el I(0), I(1), I(6)-ra, míg a kizáró-nemvagy kapuk kimenete és a buszos hozzávezetések közötti szakaszokat Q(0), Q(1), Q(7)-re. Rendeljünk alkatrész küls t a létrehozott blokkhoz. 3.2.7 VHDL editor, a WebPACK szöveges forrás szerkeszt je A VHDL hardverleíró nyelv kialakulása A 80-as években megjelen VLSI chipek lehet vé tették az egy áramkörbe integrálható feladatok bonyolultságának növelését, de ez a hagyományos tervezési módszerekkel nem volt megvalósítható. Ezért célul t ztek ki egy olyan szabványos hardverleíró nyelv létrehozását, mely egységbe fogja a tervezést és a dokumentálást, valamint támogatja az újrafelhasználhatóságot és a továbbfejleszthet séget. A VHDL (VHSIC Hardware Description Language) egy olyan általános hardver leíró nyelv, amely els sorban digitális áramkörök különböz absztrakciós szinteken történ, egységes leírására alkalmas. A nyelv els változata az Amerikai Egyesült Államok kormányának ösztönzésére 1981-ben jelent meg. A VHDL 1987 decembere óta nemzetközi szabvány (IEEE 1076), ami nagymértékben hozzájárul egyre szélesebb kör használatához. Kiemelked tulajdonsága, hogy technológia-független, így nem köt dik szorosan szimulátorhoz, és a tervez számára is rugalmas felhasználást tesz lehet vé. A tervez maga választhatja ki a tervezési módszert (pl. top-down vagy könyvtáralapú tervezés, stb.) és a tervezési technológiát (pl. szinkron vagy aszinkron áramkör, PLA vagy random logikai áramkör, stb.). A VHDL az áramköri technológiától is független, az áramköri technológia (pl. CMOS, nmos, GaAs, stb.) kiválasztása szintén a tervez feladata. Egy tetsz leges digitális áramkör VHDL nyelven leírt modelljét három egymástól független -mégis szétválaszthatatlan- modell alkotja: a viselkedési modell, a strukturális modell és az id zítési modell. A viselkedési modell egy rendszer vagy részrendszer funkcionális leírását tartalmazza. A viselkedési modell alapját a folyamatok (process-ek) alkotják, amelyek között az információt speciális globális változók, az ún. jelek (signal-ok) közvetítik. A folyamatok önmagukban szekvenciális, de egymáshoz képest konkurens programrészek. Egy folyamat m ködése bármikor felfüggeszthet, akár valamilyen feltétel bekövetkezéséig, akár végtelen hosszú ideig. A VHDL tehát konkurens programozási nyelv, ezért kifejezetten alkalmas igen nagy komplexitású digitális rendszerek viselkedésének leírására. A strukturális modell a rendszer hierarchikus felépítését, az egyes részrendszerek kapcsolódási struktúráját írja le. A részrendszerek közötti kapcsolatot -a viselkedési modellhez hasonlóan- itt is speciális globális változók, az ún. portok teremtik meg. A portok definiálása egyben irányított jelek definiálását is jelenti. A portok között az információáramlás általában egyirányú: az out porttól az in port felé történik. Speciális esetekben (inout portok) az információáramlás a portok között kétirányú is lehet. 48
Az id zítési modell azon alapul, hogy a modellezett rendszer a bemeneteire adott gerjesztésre meghatározott módon reagál, majd a gerjesztés további változásaira várakozik. A szimuláció során az egyes események id pontjai mindig szimulációs id pontok, tehát függetlenek a fizikai id t l. A szimulátor diszkrét id egységekben lépkedve dolgozza fel a szimulációs id pontokra ütemezett eseményeket, amelyeket egyrészt a gerjesztés, másrészt a modellezett rendszergerjesztésre adott válasza határoz meg. Esemény alatt egy jel értékének megváltozását értjük. Egy adott szimulációs id pontban az események feldolgozása egy vagy több ún. szimulációs ciklusban történik. A szimulációs ciklusnak két fázisa van. Az els fázisban azoknak a jeleknek az értéke változik meg, amelyek változása az adott szimulációs id pontra van el írva. A második fázisban lefutnak azok a folyamatok, amelyeket az els fázisban megváltozott jelek aktivizáltak. A folyamatok újabb jelek értékváltozásait írhatják el, így el fordulhat, hogy az adott szimulációs id pontban további szimulációs ciklusokat is végre kell hajtani. Egy szimulációs id pontban több szimulációs ciklus egymás utáni végrehajtásakor gondoskodni kell arról, hogy a ciklusok ne zérus id alatt fussanak le, mert különben a jelváltozások között nem biztosítható az ok-okozati viszony. Ezért minden szimulációs ciklushoz egy elméleti delta késleltetést rendelünk, ami a szimulációs id t nem befolyásolja. Egy adott szimulációs id pontban a szimulációs ciklusok addig ismétl dnek, amíg a folyamatokon végig nem gy r zik a kezdeti jelváltozások hatása. Ha az adott szimulációs id pontra nincs több jelváltozás el írva, akkor a szimulátor a következ szimulációs id pontra ütemezett eseményeket kezdi el feldolgozni. A WebPACK fejleszt rendszerben a VHDL (HDL) forráskódokat a Project Navigator szöveges szerkeszt ablakában készíthetjük el. Mivel a HDL editor a Project Navigator-ban kapott helyet, így a menüsor a rá vonatkozó parancsokat is tartalmazza, melyek korábban, a Project Navigator bemutatásakor kerültek ismertetésre. Az alábbi fejezetben csupán egy schematic forrásba beágyazható VHDL alapú blokk létrehozásával foglalkozunk, melynek forráslistája az alábbi képerny ablak jobb felén látható. 49
3.2.7.1 HDL editor - hex2led.vhd blokk A hex2led.vhd blokk funkciója és forráskódja: A hex2led.vhd blokk egy egyszer dekóder, mely a bemenetére érkez négybites bináris jelet a hétszegmenses LCD kijelz számára megjeleníthet formátumúra alakít. A forráslista két nagy részre bontható, melyet szaggatott vonallal jelöltünk: Az els rész a deklarációt tartalmazza, mely a be/kimeneti lábakat definiálja. A második részben a m ködést meghatározó függvények, egyszer hozzárendeléssel történ megadása látható. Az olyan sorok, melyek két köt jellel (--) kezd dnek, csupán magyarázó célt szolgálnak és a forrás m ködésére nincsenek hatással. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity HEX2LED is Port ( HEX : in std_logic_vector(3 downto 0); LED : out std_logic_vector(6 downto 0)); end HEX2LED; architecture Behavioral of HEX2LED is begin --HEX-to-seven-segment decoder -- segment encoding -- 0 -- --- -- 5 1 -- --- <- 6 -- 4 2 -- --- -- 3 with HEX SELect LED<= "1111001" when "0001", --1 "0100100" when "0010", --2 "0110000" when "0011", --3 "0011001" when "0100", --4 "0010010" when "0101", --5 "0000010" when "0110", --6 "1111000" when "0111", --7 "0000000" when "1000", --8 "0010000" when "1001", --9 "0001000" when "1010", --A "0000011" when "1011", --b "1000110" when "1100", --C "0100001" when "1101", --d "0000110" when "1110", --E "0001110" when "1111", --F "1000000" when others; --0 end Behavioral; 50
A blokk alapján létrehozott szimbólum: Bemenetek: HEX(3:0) Kimenetek: LED(6:0) A blokk elkészítésének lépései: A Project Navigator-ban a projekthez adjunk hozzá egy hex2led nev VHDL forrást: az eddigiekhez hasonlóan válasszuk ki a Project menüben a New Source-t. A megjelen New ablakban a listából jelöljük ki a VHDL Module-t és a fájl névhez írjuk be a forrás nevét (hex2led), majd kattintsunk a Tovább -ra. Definiáljuk a létrehozandó VHDL forrás be- és kimeneteit az automatikusan megjelen Define VHDL Source ablakban: a Port Name-hez írjuk be sorba a forrás be- és kimeneteinek neveit (HEX, LED). A Direction-nál állítsuk be az egyes portok funkcióját (HEX in, LED out). Az MSB és LSB megadásával a buszos kivezetések szélességét definiálhatjuk (HEX MSB=3; LSB=0, LED MSB=6; LSB=0). Ezt követ en kattintsunk a Tovább -ra, majd a New Source Information ablakban a Befejezés -re. Hozzuk létre a forrás m ködését leíró függvényeket a HDL szerkeszt nyelvi segít jének alkalmazásával: a portok definiálását követ en a szerkeszt automatikusan megnyitja az újonnan létrehozott hex2led.vhd szöveges forrást, melyben a deklarációs rész már ki van töltve. Nekünk csupán a m ködést leíró függvényeket kell megadnunk: válasszuk ki az Edit menüben a Language Templates-et, mely a szerkeszt ben egy újabb ablakot nyit meg. A két részre bontott ablak bal felében az egérrel kattintsunk a VHDL / Synthesis Templates / HEX2LED Converter mintaforrásra. Az ablak jobb felében megjelen forrás listát jelöljük ki (a kommentárokat nem szükséges kijelölni) és másoljuk a szerkeszt vágólapjára, majd illesszük be a saját (hex2led.vhd) forrásunkba. Rendeljünk alkatrész küls t a létrehozott VHDL forráshoz: mentsük el a munkánkat. A Project Navigator, Sources in Project ablakában válasszuk ki az imént létrehozott hex2led.vhd forrást majd a Processes for Current Source ablakban kattintsunk duplán a Create Schematic Symbol-ra. 3.2.8 StateCAD(r), a WebPACK állapotgép szerkeszt je A WebPACK, SateCAD szerkeszt jének segítségével lehet ségünk van véges állapotszámú gép (Finite State Machine - FSM) formájában megadni a források m ködését. 51
Az állapotgépek tulajdonképpen olyan diagrammok, melyekben az egyes szimbólumok az állapotokat illetve azok megváltozásának feltételeit és a be/kimeneteket jelölik. A WebPACK közvetlenül nem tudja értelmezni a StateCAD-ben elkészített forrást, így abból HDL (VHDL vagy ABEL) kódot kell generálni. Ezt követ en az eredményül kapott HDL forráshoz grafikus szimbólumot kell rendelni (ahogy a hex2led.vhd forrásnál tettük), hogy az a schematic forrásban elhelyezhet legyen. 3.2.8.1 StateCAD - cl8c.dia (cl8c.vhd) blokk A cl8c.dia blokk funkciója és forráskódja (8. számú melléklet): A cl8c.dia blokk, a demo panel feltétén lev nyolc darab LED körforgásszer felvillanását vezérli az órajel ütemében. A felvillanások irányát az UP bemenetre adott L vagy H szint határozza meg. A RESET bemenetre adott H szint hatására az állapotgép alapállapotba kerül, vagyis a blokk Q(7:0) kimenetei a nullás állapotnak (STATE0) megfelel jelekkel vezérlik a LED-ek katódjait az enable.sch blokkon keresztül. A m ködéshez szükséges órajel impulzusokat és az UP bemenet jelét a contr.sch blokk szolgáltatja. A blokk alapján létrehozott szimbólum: Bemenetek: CLK, RESET, UP Kimenetek: Q(7:0) A blokk elkészítésének lépései: A Project Navigator-ban a projekthez adjunk hozzá egy cl8c nev állapotgép diagram forrást: az eddigiekhez hasonlóan válasszuk ki a Project menüben a New Source-t. A megjelen New ablakban a listából jelöljük ki a State Diagram-ot és a fájl névhez írjuk be a forrás nevét (cl8c), majd kattintsunk a Tovább -ra. Az automatikusan megnyíló a StateCAD(r) szerkeszt ben hozzuk létre a cl8c.dia állapotgép vázát: o A fels ikonsorból válasszuk ki a Draw State Machine ikont. o A megjelen State Machine Wizard ablakban válasszuk ki az állapotgép 52
geometriai alakját és az állapotok számát (8db), majd lépjünk tovább. o A következ, Reset The State Machine ablakban adjuk meg az állapotgép resetelésének módját (Asynchronous), majd lépjünk tovább. o A következ, Setup Transitions ablakban az egymást követ állapotok megváltozási feltételeit állíthatjuk be: az Add Transitionsnél jelöljük meg a Next-et és a Previous-t, majd a Set condition to-nál az el bbihez!up-ot, az utóbbihoz UP-ot írjunk be. Ha ez megvan, kattintsunk a Finish-re és a létrehozott diagrammot helyezzük el a munkalapon. Hozzuk létre a munkalapon elhelyezet diagram nyolcbites buszos kimeneti vonalát, majd adjuk meg az egyes állapotokhoz tartozó kimeneti jeleket: kattintsunk duplán a diagram valamelyik állapot szimbólumára és a megjelen State Edit ablakban nyomjunk az Output Wizard gombra. A megjelen Logic Wizard ablakban hagyjuk meg az alapbeállításokat és a DOUT-nál adjuk meg a buszos kimenet nevét (Q), majd annak szélességét (8) és kattintsunk az OK-ra. Ezzel létrehoztuk a diagram Q nev nyolcbites buszos kimenetét. A State Edit ablakba visszalépve, az Output szövegdobozában töröljük ki az ott található definíciót (Q = 0;) és adjuk meg az adott állapotokhoz tartozó kimeneti jelet. State Name: STATE0 Outputs: Q = ^b11111110; State Name: STATE1 Outputs: Q = ^b11111101; State Name: STATE2 Outputs: Q = ^b11111011; State Name: STATE3 Outputs: Q = ^b11110111; State Name: STATE4 Outputs: Q = ^b11101111; State Name: STATE5 Outputs: Q = ^b11011111; State Name: STATE6 Outputs: Q = ^b10111111; State Name: STATE7 Outputs: Q = ^b01111111; Állítsuk be, hogy a szerkeszt milyen szempontok szerint optimalizálja a létrehozott állapotgépet: kattintsunk az Optimize ikonra, melynek hatására megjelenik Optimization Wizard ablak. Itt megtekinthetjük, hogy az alábbi folyamat milyen lépésekb l áll, a továbblépéshez kattintsunk a Next gombra, 53
majd a soron következ ablakokban értelemszer en válasszuk ki a megfelel opciókat. Két legfontosabb dolog, hogy céleszközként CPLD-t valamint a célforrásként VHDL-t válasszuk ki! A szerkeszt segítségével az állapotgép diagramból generáljunk VHDL kódot: kattintsunk a Generate HDL ikonra. Ezt követ en automatikusan elindul a folyamat, majd megjelenik egy Result nev ablak, mely tájékoztat a m velet sikerességér l. A Result ablak bezárása után egy újabb ablakban -megtekintés céljából- megjelenik a generált VHDL kód. A StateCAD(r) szerkeszt beépített szimulátorával, a StateBench(tm)-el szimuláljuk le, hogy megfelel en m ködik-e az állapotgép: kattintsunk a StateBench ikonra, melynek hatására a képerny alsó felében megjelenik a szimulátor, a fels felében pedig továbbra is látható marad az állapotgép. o Órajel biztosítása: a Cycle ikonra történ egymás utáni kattintásokkal biztosíthatjuk az állapotgép órajel impulzusait. Az órajel hatására az állapotgép egyik állapotból a másikba kerül. Ezt a folyamatot a szimulátor id diagramján illetve a képerny fels felén látható állapotgépen is figyelemmel kísérhetjük. o A független bemenetek állapotának váltogatása: esetünkben az UP portot tekintjük független bemenetnek, hiszen ez határozza meg az állapotgép körforgásának irányát. Az id diagramban kattintsunk duplán az UP-hoz tartozó jel elejére, melynek hatására az UP szintet vált ( L szintr l H szintre). A szimulációt folytatva megfigyelhetjük, hogy az UP bemenet szintváltozásának hatására az állapotgép körforgása megfordult. o Az állapotgép resetelése: a szimuláció alatt az állapotgépet legegyszer bben a Reset ikonra kattintva hozhatjuk alapállapotba. A reset jel hatására az állapotgép STATE0 állapotba ugrik. o A szimuláció újraindítása: a Restart ikonra kattintva a szimuláció újraindítását kezdeményezhetjük, ezzel azonban a meglév id diagramot töröljük. Adjuk hozzá a XPLA3_Bemutato projekthez a létrehozott cl8c.dia illetve az abból generált cl8c.vhd forrásokat: térjünk vissza a Project Navigator-ba és a Project menüben válasszuk ki az Add Copy of Source-t. A megjelen Add Existing Sources ablakban a projektünk könyvtárának tartalmát fogjuk látni, melyb l válasszuk ki a cl8c.dia fájlt és nyissuk meg. Ugyanezt tegyük meg a cl8c.vhd fájlal is. Ha ez megvan a Sources in Project ablakban látni fogjuk az újonnan bekerült forrásokat. Rendeljünk alkatrész küls t a cl8c.vhd forráshoz: ugyanúgy járjunk el, mint a hex2led.vhd blokk esetében. 3.2.9 A teljes logikai hálózat összeállítása ECS-ben Az alábbi fejezetben bemutatjuk, hogyan készítsük el a XPLA3_Bemutato projekt globális logikai hálózatát az általunk létrehozott blokkok segítségével a teljes.sch schematic forráson. A folyamat majdnem megegyezik a korábbi schematic források létrehozásának lépéseivel, így nem sok kiegészít magyarázatra van szükség. A teljes.sch forrás tartalma: 54
A forrás bemenetei (bal oldalon) és kimenetei (jobb oldalon), fentr l lefele haladva az alábbiak: Bemenetek: Kimenetek: B1 Fels nyomógombról érkez impulzusokat fogadja, melyek az LCD modul kijelzésének engedélyezését illetve letiltását szolgálják. B5 Alsó nyomógombról érkez impulzusokat fogadja, melyek az LED sor kijelzésének engedélyezését illetve letiltását szolgálják. B4 Jobb oldali nyomógombról érkez impulzusokat fogadja, melyek a nyolcbites fel/leszámlálót és az állapotgépet el re léptetik. B2 Bal oldali nyomógombról érkez impulzusokat fogadja, melyek a nyolcbites fel/leszámlálót és az állapotgépet hátra léptetik. B3 Középs nyomógombról érkez LCD_one(7:0) Az LCD kijelz egyes helyérték karakterének szegmenseire csatlakozik. LCD_ten(7:0) Az LCD kijelz tízes helyérték karakterének szegmenseire csatlakozik. LED(7:0) A nyolc egymás melletti LED katódjaira csatlakozik. LCD_GND A LCD kijelz virtuális föld (BP) lábára csatlakozik. 55
impulzusokat fogadja, melyek a teles logikai hálózat resetelését végzik. C Az oszcillátorból érkez 32768Hz-es négyszögjel impulzusokat fogadja, mely a rendszer alap órajele. A forrás elkészítésének lépései: Helyezzük el az alkatrészeket, a saját készítés blokkokat, a GND illetve VCC szimbólumokat a munkalapon az ábra szerinti elrendezésben. Huzalozzuk össze a lerakott elemeket és alakítsuk ki buszos vonalakat az ábra szerint. Rakjuk le az I/O Marker-eket a hálózat be és kimeneteire, majd nevezzük el ket az ábra szerint. Nevezzük el a vezetékeket az ábra szerint: az azonosítóval ellátott vezetékek egyik részét a buszos vonalak hozzávezetései (ezekr l már volt szó), másik részét pedig a virtuális csomópontok alkotják. A virtuális csomópontokat az azonos névre elnevezett vezetékek alkotják, melyek el nyösen alkalmazhatók a hálózat távoli pontjainak egyszer összekötésére. A hálózatunkban ilyen csomópontok az EN_LCD, EN_LED, FREQ(8). 3.3 További WebPACK funkciók és szolgáltatások 3.3.1 A projekt logikai szimulációja A XPLA3_Bemutato projekt szimulációja a ModelSim programmal lehetséges, mely közvetlenül a WebPACK Project Navigator-ból indítható el. A ModelSim használata kissé szokatlan, ugyanis a logikai hálózat szimulációjához el re létre kell hozni egy szöveges vagy grafikus Test Bench forrást, mely a bemeneti jelalakokat definiálja. A ModelSim ezekre a bemeneti jelalakokra generálja a kimenetek állapotát megjelenít id diagramot. A logikai szimuláció a projekt egészére illetve az azt felépít forrásokra külön-külön is elvégezhet. A contr.sch blokk szimulációjának lépései: Adjunk a projekthez egy sim nev Test Bench Waveform forrást, mely a Sources in Project ablakban sim.tbw fájlként jelenik meg a contr.sch forrás alá rendelve: válasszuk ki a Project menüben New Source-t, majd a megjelen New ablakban jelöljük ki a Test Bench Waveform-ot, a fájl névhez pedig sim -et írjunk, végül kattintsunk a Tovább-ra. Ezt követ en megjelenik a Select ablak, mely a projekt szimulálható forrásait kínálja fel. A felsorolásból válasszuk ki a contr nev forrást és kattintsuk a Tovább-ra, majd a Befejezés gombra. 56
Következ lépésként automatikusan elindul a WebPACK hullámforma készít je, a HDL Bencher(tm) és megnyílik az Initialize Timing ablaka, melyben tetszés szerint beállíthatjuk a rendszer órajelére vonatkozó opciókat: állítsuk be, hogy a rendszer órajelének a C bemenet legyen kitüntetve. Jelöljük meg a Single Clockot, mellette pedig válaszuk ki a C-t. Mivel a blokk C bemenetére a 32768Hz-es rendszer órajelb l származtatott 2Hz-es négyszög kerül, célszer a szimulációt is eszerint beállítani. Ennek megfelel en állítsuk be, hogy az órajel L és H szintjei 250ms-ként váltogassák egymást. Az összes többi beállítást hagyjuk meg alapértelmezettként, majd kattintsunk az OK-ra. Ezt követ en a HDL Bencher alsó ablakában a szimulálandó forrás VHDL modellje-, a fels ablakban pedig a forrás be és kimenetei illetve azok id diagramjai láthatók. A fels ablakban hozzuk létre a contr.sch forrás szimulációjához szükséges bemeneti jelformákat: látható, hogy a C bemenethez a Bencher automatikusan hozzárendelt egy 500ms periódusidej (2Hz) órajelet. Az egyes bemenetekhez tartozó id diagramok 500ms-os szakaszokból épülnek fel, melyek állapota (L vagy H) úgy állítható ha bal egérgombbal rájuk kattintunk. Hozzuk létre az egyes bemenetek id diagramjait az alábbi impulzus sorozatoknak megfelel en (türkizkékkel jelölt CLR, DOWN, UP portok): Mentsük el a munkánkat és térjünk vissza a Project Navigator-ba. A Sources in Project ablakban válasszuk ki az imént létrehozott sim.tbw fájlt, majd az alsó ablakban a ModelSim Simulator három szimulációs lehet ségéb l dupla kattintással indítsuk el a Generated Expected Simulation Results-ot. A ModelSim, a sim.tbw fájl alapján generálja a kimeneti jelalakokat, majd automatikusan a HDL Bencher ablakában meg is jeleníti (sárgával jelölt Q_C, Q_UP portok). 3.3.2 A CPLD láb-kiosztásának meghatározása, Constraints fájl létrehozása A Xilinx CPLD-k I/O lábait tetszés szerint konfigurálhatjuk bemenetként, kimenetként illetve kétirányú portként. A WebPACK-ben erre többféle lehet ség is kínálkozik, melyek közül mi a lábkiosztás szöveges constraints fájllal való megadását választottuk. A Project Navigator-ban adjunk egy Implementation Constraints File típusú forrást a projekthez (Project \ New Source parancs). A megjelen Select ablakban válasszuk ki, hogy mely forráshoz akarjuk a lábkiosztást rendelni (teljes) és lépjünk tovább, majd kattintsunk a befejezésre. A teljes.sch forrás alatt alárendelve létrejöv teljes.ucf constraints fájlt tegyük kiválasztottá az egérrel. A Processess for Current Source ablakban a User Constraints alól, dupla kattintással indítsuk el az Edit Constraints(Text)-et, majd a megjelen szöveges felületen írjuk be az alábbi definíciókat és mentsük el: NET C LOC=P128; NET B1 LOC=P132; NET B2 LOC=P134; NET B3 LOC=P136; NET B4 LOC=P138; NET B5 LOC=P140; 57
NET LCD_GND LOC=P83; NET LCD_one<0> LOC=P91; NET LCD_one<1> LOC=P90; NET LCD_one<2> LOC=P88; NET LCD_one<3> LOC=P87; NET LCD_one<4> LOC=P86; NET LCD_one<5> LOC=P92; NET LCD_one<6> LOC=P93; NET LCD_one<7> LOC=P84; NET LCD_ten<0> LOC=P80; NET LCD_ten<1> LOC=P79; NET LCD_ten<2> LOC=P78; NET LCD_ten<3> LOC=P77; NET LCD_ten<4> LOC=P75; NET LCD_ten<5> LOC=P81; NET LCD_ten<6> LOC=P82; NET LCD_ten<7> LOC=P74; NET LED<0> LOC=P110; NET LED<1> LOC=P112; NET LED<2> LOC=P114; NET LED<3> LOC=P116; NET LED<4> LOC=P66; NET LED<5> LOC=P68; NET LED<6> LOC=P70; NET LED<7> LOC=P72; 3.3.3 A projekt szintézise és implementálása A tervezés eddigi fázisaiban létrehoztuk a logikai hálózatot, különböz magas szint hardverleíró nyelvek segítségével, majd szoftveresen szimuláltuk a m ködését. Ebben a fázisban a szoftvernek a forrásokat fel kell dolgoznia az eszköz sajátosságait figyelembe. A Processes for Curent Source ablakban el ször kattintsunk duplán a Synthesizera, mely a projekt fordítását indítja el. Ha az el bbi folyamat sikeresen befejez dött, kattintsunk duplán az alatta lev Implement Design-ra, mely a fizikai leképezést végzi el a céleszközre optimalizálva. 3.3.4 Betekintés az eszköz belsejébe a ChipViewer program által A ChipViewer program segítségével betekintést nyerhetünk az eszköz belsejébe. Grafikus felületen láthatjuk a kiválasztott I/O portok és makrocellák egymáshoz kapcsolódását. A ChipViewer ablaka két részb l áll; bal oldalon az eszközben létrehozott 58
logikai hálózat által felhasznált funkció blokkok hierarchikus listája található, jobb oldalon pedig az eszköz látható, az I/O portjaival és makrocelláival együtt. Nézzük meg, hogy az egyes I/O portok, mely makrocellákra csatlakoznak: kattintsunk egy olyan I/O port-ra, melyet kék négyzet jelöl (így vannak jelölve a felhasznált portok). Nézzük meg, hogy az egyes makrocellák be és kimenetei, mely másik makrocellákra csatlakozik: az el bbihez hasonlóan kattintsunk olyan makrocellára, melyet sötét négyzet jelöl. A sötét négyzettel jelölt makrocellákra történ dupla kattintással lehet ségünk van, azok bels huzalozását is megnézni. 3.3.5 Eszköz fogyasztásának analizálása XPower-el Az XPower, a fogyasztás és a h mérséklet kritikus alkalmazások fejlesztésekor válik szükségszer vé. Ezek tipikusan azok a kézi, hordozható alkalmazások, melyek energiaellátását akkumulátor biztosítja. Az XPower segítségével, az általunk megadott paraméterek mellett el re meghatározhatjuk az eszköz fogyasztásának konkrét értékét. Az eszköz tápfeszültségét, m ködési h mérsékletét és az energiaforrás kapacitását a jobb fels ablakban, az egyes bemenetekre adott jelek frekvenciáját illetve a kimeneteket lezáró kapacitásokat a jobb alsó ablakban adhatjuk meg. A Processes for Curent Source ablakban kattintsunk duplán az Analyze Power(XPower)-re. Nyissuk meg a teljes.cxt fájlt. Az XPower ablakának bal oldalán a Data Views/Types alatt találhatjuk meg azokat a kiválasztható egységeket, melyeket jobb alsó ablakban paraméterezhetünk. Válasszuk ki az egyes egységeket és paraméterezzük ket tetsz legesen, majd figyeljük meg az eszköz fogyasztásának alakulását. 3.3.6 Id zítések vizsgálata Timing Analyzer segítségével A Timing Analyzer program alkalmazása a különösen nagy sebességet igényl alkalmazások tervezéséhez szükséges. Segítségével meghatározható az egyes bemeneti vonalak id késleltetése és a rendszerben használható legnagyobb frekvenciaérték. A Processes for Curent Source ablakban kattintsunk duplán az Analyze Post-Fit Static Timing(Timing Analyzer)-re. Az egérrel a fels ikonsorból válasszuk ki az Analyze against Timing Constraints-t, és a megjelen szöveges ablakban figyeljük meg az egyes jelútvonalakra vonatkozó id késleltetéseket. Megfigyelhet, hogy az eszköz normál I/O portjaihoz képest a kitüntetett órajel bemenetre csatlakoztatott jel mennyivel kisebb id késleltetéssel jut el a logikához. Az egérrel a fels ikonsorból válasszuk ki az Analyze against Auto Generated Design Constraints-t. A megjelen szöveges ablakban egy összegzést olvashatunk, melyb l megtudhatjuk mekkora frekvenciájú jelet képes feldolgozni az eszköz az adott esetben. 59
3.3.7 Letölthet állomány generálása és az eszköz programozása A CPLD programozásához a szoftvernek generálnia kell egy szabványos JEDEC fájlt, mely tartalmazza az eszközt felépít konfigurálható egységek (ZIA, PLA hálózat, Makrocella, Vezérl Term-ek, ) közötti összekötések állapotát. A Processes for Curent Source ablakban kattintsunk duplán a Generate Programming File-ra, mellyel a JEDEC fájl létrehozását kezdeményezhetjük. Ha a folyamat sikeresen befejez dött csatlakoztassuk a letölt kábel megfelel kivezetéseit a PC párhuzamos portjára illetve az eszköz programozó lábaira, majd adjunk a rendszerre tápfeszültséget. Ezt követ en kattintsunk duplán a Processes for Curent Source ablakban a Configure Device(iMpact)-ra. A megjelen Operation Mode Selection ablakban válasszuk a Configure Devices-t majd lépjünk tovább. Ezt követ en a Configure Devices ablakban jelöljük meg a Boudary-Scan Modeot, majd lépjünk tovább. Végül a Boudary-Scan Mode Selection ablakban válasszuk az automatikus csatlakozást és kattintsunk a befejezésre. Ennek hatására kapcsolat jön létre az eszköz és PC között a letölt kábelen keresztül. Az Assign New Configuration File ablakban keressük meg a projekt alapján generált JEDEC fájlt (teljes.jed) és nyissuk meg. Válasszuk ki az Operations menüb l az Erase-t, mellyel kitöröljük a CPLD tartalmát. A sikeres törlést követ en kattintsunk az Operations menüben a Program-ra, majd a megjelen Program Options ablakban OK-ra. A sikeres programozást a Programming Succeeded üzenet nyugtázza. Mellékletek 1. számú melléket: Angol nyelv rövidítések ABEL - Advanced Boolean Equation Language ASIC - Application Specified Integrated Circuit BGA - Ball Grid Array CAD - Computer Aided Design CLB - Configurable Logic Block CPLD - Complex Programmable Logic Device CSP - Chip Scale Packaging DCM - Digital Clock Managers DLL - Delay Locked Loop ECS - Engineering Capture System 60
61 EEPROM - Electrically Erasable Programmable Read Only Memory FB - Function Block FGA - Fine-Pitch Ball Grid Array FPGA - Field Programmable Gate Array FZP - Fast Zero Power GAL - Generic Array Logic GCK - Global Clock GSR - Global Set/Reset GTS - Global Output Anable HDL - Hardware Description Language HQFP High Heat Dissipation QFP IEEE - Institute of Electrical and Electronics Engineers IOB - Input/Output Block ISE - Integrated Software Environment ISP - In-System Programmable JTAG - Joint Test Action Group LCA - Logic Cell Array LP - Low Power MC - Macrocell OTP - One Time Programmable PLA - Programmable Logic Array PLCC - Plastic Leaded Chip Carrier PLD - Programmable Logic Device PQFP - Plastic Quad Flat Pack PROM - Programmable Read Only Memory SPLD - Simple Programmable Logic Device TCK - Test Clock Output TDI - Test Data Input TDO - Test Data Output TMS - Test Mode Select TQFP - Thin Quad Flat Pack VHDL - VHSIC Hardware Description Language VHSIC - Very High Speed Integrated Circuit VQFP - Very Thin Quad Flat Pack XST - Xilinx Synthesis Technology
2. számú melléket: Az XPLA3_Bemutato projekt hardver szint blokkvázlata B5 B4 B3 B2 B1 R R R R R R 32768Hz R R R R /&' 62 LED(4) LED(5) LED(6) LED(7) B5 B4 B3 B2 B1 LED(3) LED(2) LED(1) LED(0) LED(0) LCD_ten(0) LCD_ten(1) LCD_ten(2) LCD_ten(3) LCD_ten(4) LCD_ten(5) LCD_ten(6) LCD_ten(7) BP A2 B2 C2 D2 E2 F2 G2 DP2 BP A1 B1 C1 D1 E1 F1 G1 DP1 LCD_one(0) LCD_one(1) LCD_one(2) LCD_one(3) LCD_one(4) LCD_one(5) LCD_one(6) LCD_one(7) LED(1) LED(2) LED(3) +3.3V LED(7:0) LCD_one(6) LCD_one(5) LCD_one(0) LCD_one(1) LCD_one(2) LCD_one(3) LCD_one(4) LCD_one(7) LCD_GND LCD_ten(6) LCD_ten(5) LCD_ten(0) LCD_ten(1) LCD_ten(2) LCD_ten(3) LCD_ten(4) LCD_ten(7) LED(7:0) +3.3V LCD_one(7:0) LCD_ten(7:0) C VCC +3.3V P24 P50 P51 P58 P73 P76 P95 P115 P123 P130 P144 TCK TDI TDO TMS JTAG LED(4) LED(5) LED(6) LED(7) LED P89 P4 P104 P20 XCR3256XL-TQ144 P3 P17 P33 P52 P57 P59 P64 P85 P105 P124 P129 P135 GND R R R R A F G E D B C
63 3. számú melléket: AZ XPLA3_Bemutato projekt teljes.sch forrása
4. számú melléket: AZ XPLA3_Bemutato projekt contr.sch forrása 64
65 5. számú melléket: AZ XPLA3_Bemutato projekt disp_sel.sch forrása
6. számú melléket: AZ XPLA3_Bemutato projekt enable.sch forrása 66
67 7. számú melléket: AZ XPLA3_Bemutato projekt lcd_drv.sch forrása
8. számú melléket: AZ XPLA3_Bemutato projekt cl8c.dia forrása 68
9. számú melléket: Xilinx CPLD-k (XC9500) összefoglaló táblázata 1 Xilinx CPLD Product Table 1 XC9500 (5V) XC9500XL (3.3V) XC9500XV (2.5V) XC9536 XC9572 XC95108 XC95144 XC95216 XC95288 Max I/Os 34 72 108 133 166 192 34 72 117 192 34 72 117 192 Macrocells 36 72 108 144 216 288 36 72 144 288 36 72 144 288 t pd (ns) 5.0 7.5 7.5 10.0 10.0 10.0 5.0 5.0 5.0 6.0 3.5 4.0 4.0 5.0 f SYS (MHz) 100 83.3 83.3 83.3 66.7 66.7 178 178 178 208 278 250 250 222 PLCC Packages (PC) 44 34 34 34 34 34 34 84 69 69 PQFP Packages (PQ) 100 72 81 81 160 108 133 133 208 168 168 HQFP Packages (HQ) 208 166 168 VQFP Packages (VQ) 44 34 34 34 34 34 64 36 52 TQFP Packages (TQ) 100 72 81 81 69 81 72 81 144 117 117 117 117 Chip Scale Packages (CS) wire-bond chip-scale BGA (0.8 mm ball spacing) 48 34 36 38 36 38 144 117 117 280 192 192 BGA Packages (BG) wire-bond standard BGA (1.27 mm ball spacing) 256 192 352 166 192 FGBA Packages (FG) wire-bond Fineline BGA (1.0 mm ball spacing) 256 192 192 XC9536XL XC9572XL XC95144XL XC95288XL XC9536XV XC9572XV XC95144XV XC95288XV 69
10. számú melléket: Xilinx CPLD-k (CoolRunner) összefoglaló táblázata 2 Xilinx CPLD Product Table 2 CoolRunner XPLA3 (3.3V) CoolRunner-II (1.8V) XCR3032XL XCR3064XL XCR3128XL XCR3256XL XCR3384XL Max I/Os 36 68 108 164 220 260 33 64 100 184 240 270 Macrocells 32 64 128 256 384 512 32 64 128 256 384 512 t pd (ns) 5.0 6.0 6.0 7.5 7.5 7.5 3.5 4.0 4.5 5.0 6.0 6.0 f SYS (MHz) 200 145 145 140 127 127 303 270 244 222 204 204 PLCC Packages (PC) 44 36 36 33 33 PQFP Packages (PQ) 208 164 172 180 173 173 173 VQFP Packages (VQ) 44 36 36 33 33 100 68 84 64 80 80 TQFP Packages (TQ) 144 108 120 118 100 118 118 Chip Scale Packages (CS) wire-bond chip-scale BGA (0.8 mm ball spacing) 48 36 40 56 48 33 45 132 100 106 144 108 280 164 Chip Scale Packages (CP) wire-bond chip-scale BGA (0.5 mm ball spacing) 56 48 33 45 132 100 106 FGBA Packages (FG) wire-bond Fineline BGA (1.0 mm ball spacing) 324 220 260 240 270 FGA Packages (FT) wire-bond fine-pitch thin BGA (1.0 mm ball spacing) 256 164 212 212 184 212 212 XCR3512XL XC2C32 XC2C64 XC2C128 XC2C256 XC2C384 XC2C512 70
71 11. számú melléket: Xilinx FPGA-k (Spartan) összefoglaló táblázata
Xilinx Spartan FPGA Product Table Spartan/XL (5V/3.3V) Spartan-II (2.5V) Spartan-IIE (1.8V) XCS05/XL XCS10/XL XCS20/XL XC2S50E XC2S100E XC2S150E XC2S200E XC2S300E XC2S100 XC2S150 XC2S200 XC2S50E XC2S100E XC2S150E XC2S200E XC2S300E XC2S400E XC2S600E Max I/Os 77 112 160 192 224 86 132 176 196 260 284 182 202 265 289 329 410 514 Logic Cells 238 466 950 1368 1862 432 972 1728 2700 3888 5292 1728 2700 3888 5292 6912 10800 15552 Max Ram (bits) 3200 6272 12800 18432 25088 Block Ram (bits) 16K 24K 32K 40K 48K 56K 32K 40K 48K 56K 64K 160K 288K Distrib. Ram (bits) 6144 13824 24576 38400 55296 75264 24K 37K 54K 73K 96K 150K 216K I/O Standard 3 (5) 3 (5) 3 (5) 3 (5) 3 (5) 16 16 16 16 16 16 19 19 19 19 19 19 19 PLCC Packages (PC) 84 61 61 PQFP Packages (PQ) 208 160 169 169 132 140 140 140 140 146 146 146 146 146 240 192 193 VQFP Packages (VQ) 100 77 77 77 60 60 TQFP Packages (TQ) 144 112 113 113 86 92 92 92 102 102 Chip Scale Packages (CS) wire-bond chip-scale BGA (0.8 mm ball spacing) 144 112 113 86 92 280 192 224 BGA Packages (BG) wire-bond standard BGA (1.27 mm ball spacing) 256 192 205 FGBA Packages (FG) wire-bond Fineline BGA (1.0 mm ball spacing) 256 176 176 176 176 456 196 260 284 202 263 289 329 329 329 676 410 514 FGA Packages (FT) wire-bond fine-pitch thin BGA (1.0 mm ball spacing) 256 182 182 182 182 182 182 72
73 12. számú melléket: Xilinx FPGA-k (Virtex) összefoglaló táblázata 1
Xilinx Virtex FPGA Product Table 1 Virtex (2.5V) Virtex-E (1.8V) V-EM XCV50 XCV100 XCV150 XCV200 XCV300 XCV400 XCV600 XCV800 XCV1000 XCV50E XCV100E XCV200E XCV300E XCV400E XCV600E XCV1000E XCV1600E XCV2000E XCV2600E XCV3200E XCV405E XCV812E Max I/Os 180 180 260 284 316 404 512 512 512 176 196 284 316 404 512 660 724 804 804 804 404 556 Logic Cells 1728 2700 3888 5292 6912 10800 15552 21168 27648 1728 2700 5292 6912 10800 15552 27648 34992 43200 57132 73008 10800 21168 Block Ram (bits) 32.7K 40.9K 49.1K 57.3K 65.5K 81.9K 98.3K 114.6K 131K 65.5K 81.9K 114.6K 131K 163.8K 294.9K 393.2K 589.8K 655.3K 749.5K 851.9K 560K 1120K Distrib. Ram (bits) 24.5K 38.4K 55.2K 75.2K 98.3K 153.6K 221.1K 301K 393.2K 24.5K 38.4K 75.2K 98.3K 153.6K 221.1K 393.2K 497.6K 614.4K 812.5K 1038K 153K 301K I/O Standard 15 15 15 15 15 15 15 15 15 19 19 19 19 19 19 19 19 19 19 19 19 19 DLLs 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8 8 8 8 Speed Grades 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 6,7,8 PQFP Packages (PQ) 240 166 166 166 166 166 166 166 166 158 158 158 158 158 158 158 HQFP Packages (HQ) 240 166 166 166 166 166 166 166 166 158 158 158 158 158 158 158 TQFP Packages (TQ) 144 98 98 Chip Scale Packages (CS) wire-bond chip-scale BGA (0.8 mm ball spacing) 144 94 94 94 94 94 BGA Packages (BG) wire-bond standard BGA (1.27 mm ball spacing) 256 180 180 180 180 352 260 260 196 260 260 432 316 316 316 316 316 316 316 560 404 404 404 404 404 404 404 404 404 FGBA Packages (FG) wire-bond Fineline BGA (1.0 mm ball spacing) 256 176 176 176 176 176 176 176 176 456 260 284 312 284 312 676 404 444 444 404 444 404 680 512 512 512 512 512 512 512 860 660 660 660 900 512 660 700 556 1156 660 724 804 804 804 74
75 13. számú melléket: Xilinx FPGA-k (Virtex) összefoglaló táblázata 2
Xilinx Virtex FPGA Product Table 2 Virtex-II (1.5V) Virtex-II PRO (1.5V) XC2V40 XC2V80 XC2V250 XC2V500 XC2V1000 XC2V1500 XC2V2000 XC2V3000 XC2V4000 XC2V6000 XC2V8000 XC2VP2 XC2VP4 XC2VP7 XC2VP20 XC2VP30 XC2VP40 XC2VP50 XC2VP70 XC2VP100 XC2VP125 Max I/Os 88 120 200 264 432 528 624 720 912 1104 1108 204 348 396 564 692 804 852 996 1164 1200 Logic Cells 576 1152 3456 6912 11520 17280 24192 32256 51840 76032 104882 3168 6768 11088 20880 30816 43632 53136 74448 99216 125136 Block Ram (bits) 72K 144K 432K 576K 720K 864K 1008K 1728K 2160K 2592K 3024K 216K 504K 792K 1584K 2448K 3456K 4176K 5904K 7992K 10008K Distrib. Ram (bits) 8K 16K 48K 96K 160K 240K 336K 448K 720K 1056K 1456K 44K 94K 154K 290K 428K 606K 738K 1034K 1378K 1738K I/O Standard 19/8 19/8 19/8 19/8 19/8 19/8 19/8 19/8 19/8 19/8 19/8 21/5 21/5 21/5 21/5 21/5 21/5 21/5 21/5 21/5 21/5 PowerPC 0 1 1 2 2 2 2 2 2 4 Rocket I/O 4 4 8 8 8 12 16 20 20 24 18x18 Multipliers 4 8 24 32 40 48 56 96 120 144 168 12 28 44 88 136 192 232 328 444 556 DCMs 8 8 8 8 8 8 8 12 12 12 12 4 4 4 8 8 8 8 8 12 12 Speed Grades 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 4,5,6 5,6,7 5,6,7 5,6,7 5,6,7 5,6,7 5,6,7 5,6,7 5,6,7 5,6,7 5,6,7 Chip Scale Packages (CS) wire-bond chip-scale BGA (0.8 mm ball spacing) 144 88 92 92 BGA Packages (BG) wire-bond standard BGA (1.27 mm ball spacing) 575 328 392 408 728 456 516 FGBA Packages (FG) wire-bond Fineline BGA (1.0 mm ball spacing) 256 88 120 172 172 172 140 140 456 200 264 324 156 248 248 676 392 456 484 FFA Packages (FF) flip-chip fine-pitch BGA (1.0 mm ball spacing) 672 204 348 396 896 432 528 624 396 556 556 1152 720 824 824 824 564 692 692 692 1148 804 812 1517 912 1104 1108 804 852 964 1704 996 1040 1040 1696 1164 1200 BFA Packages (BF) flip-chip fine-pitch BGA (1.27 mm ball spacing) 957 624 684 684 684 684 76
77 14. számú melléket: A Xilinx ISE fejleszt rendszerek összehasonlító táblázata