Demonstrace programovatelných logických obvodů Ing Josef SLEZÁK Ústav radioelektroniky, FEKT, VUT v Brně Email: xsleza08@studfeecvutbrcz V tomto článku je popsán laboratorní přípravek určený pro seznámení se s programovatelnými logickými obvody FPGA a s programováním v jazyce VHDL Přípravek obsahuje šestimístný sedmisegmentový LED displej, blok LED diod pro zobrazování výstupních dat, blok přepínačů pro zadávání vstupních dat a konektor pro připojení externího zařízení Tyto periferie umožňují ověřit základní číslicové struktury, realizované pomocí VHDL jako jsou čítače, stavové automaty apod 1 Úvod Účelem této konstrukce bylo vytvořit pokusný přípravek obsahující obvod FPGA se základními periferiemi, pomocí něhož by se studenti v laboratorních cvičeních mohli seznámit s programováním obvodů FPGA a jazykem VHDL Na obr 1 je blokové schéma celého přípravku Dále následuje stručný popis jednotlivých částí přípravku Obr 1: Blokové schéma celého přípravku 44-1
Obvod FPGA Byl použit typ XC3S250E z řady Spartan-3E firmy Xilinx v pouzdru PQ208 Přípravek má sloužit pro ověření základních číslicových obvodů popsaných pomocí VHDL nicméně rozsah použitého FPGA umožňuje implementaci i rozsáhlejších struktur jako například micro blaze mikroprocesor Jedním z cílů konstrukce tohoto přípravku bylo také ověření konfigurace FPGA pomocí rozhranní SPI což řada Spartan-3E umožňuje Konfigurační paměti Při každém zapnutí přípravku je nutné načíst konfigurační data z externí paměti do obvodu FPGAV praxi postačuje pro konfiguraci obvodu FPGA pouze jedna konfigurační paměť Přípravek však obsahuje konfigurační paměti dvě První je standardní paměť XCF02 firmy Xilinx, propojená s obvodem FPGA pomocí rozhranní JTAG Druhá paměť je DB045 firmy Atmel, využívající rozhranní SPI Paměť SPI je osazena z důvodu ověření konfigurace obvodu FPGA pomocí rozhranní SPI Výhodou pamětí SPI oproti pamětem XCF je jejich nižší cena Výběr způsobu konfigurace obvodu FPGA a přepínání mezi pamětmi je řešeno pomocí propojek (jumperů) a je popsáno dále v části konfigurace FPGA Napájecí zdroj Obvod Spartan-3E pro svoji činnost vyžaduje tři hodnoty napájecích napětí Pro napájení jádra obvodu FPGA je to napětí V CCINT o velikosti 1,2V Dále napětí V CCAUX o hodnotě 2,5V pro napájení pomocných obvodů a poslední napětí V CCO o hodnotě 3,3V pro napájení vstupně výstupních obvodů Velikosti napětí V CCINT a V CCAUX nejsou volitelné (hodnoty viz výše) Velikost napětí V CCO je dána použitým IO standardem, zde LVCMOS33 Zdroje všech tří hodnot napětí jsou řešeny pomocí lineárních stabilizátorů a to LT1764 pro zdroj 1,2V, LT1086 pro zdroj 2,5V a LM1084 pro zdroj 3,3V Jelikož cílová aplikace (rozsah cílového programu) není známá, byly hodnoty maximálních proudových odběrů z jednotlivých zdrojů odhadnuty přibližně V praxi, při známém cílovém programu už pří návrhu HW by bylo možno hodnoty maximálních proudových odběrů jednotlivých zdrojů obvodu FPGA určit poměrně přesně např pomocí aplikace Xilinx Power Estimator Blok LED diod Pro zobrazování výstupních dat je možno využít 16 diod LED Každa osmice diod je buzena jedním obvodem 74HC540, který dodá potřebný budící proud pro LED diody LED displej Pro zobrazení číslicových údajů je možno využít šestimístný sedmisegmentový displej Displej pracuje v multiplexním režimu tzn pro zobrazování více číslic je nutno data pro jednotlivé číslice přepínat Rychlost přepínání je odvozena od taktovacího kmitočtu 1KHz, jež je v obvodu FPGA vyroben softwarovou úpravou taktovacího kmitočtu 1MHz, přiváděného do obvodu FPGA z externího oscilátoru 44-2
Konektor pro připojení externího zařízení Umožňuje k laboratornímu přípravku připojit libovolné zařízení rozšiřující možnosti použití přípravku Konektor obsahuje 56 pinů připojených k I/O vývodům obvodu Spartan- 3E, dále je možno z externího zařízení přivádět do obvodu taktovací kmitočty a rovněž je možno obvody na desce externího zařízení prostřednictvím konektoru napájet Externí zařízení může obsahovat např A/D a D/A převodník pro pokusy s číslicovým zpracováním signálů v obvodu FPGA nebo rozhraní Ethernet pro experimenty se síťovými aplikacemi Generátor signálu CLK Hodinový signál slouží k taktování operací obvodu FPGA Je použit oscilátor SG-51 nebo SG-531 Pro instalaci obvodu oscilátoru slouží patice DIL14, která svým zapojením umožňuje zasunout jak oscilátory v pouzdru DIL14 tak v pouzdru DIL8 Toto řešení umožňuje větší variabilitu při výběru oscilátoru V přípravku byl použit oscilátor o frekvenci 25 MHz Generování signálu CLK pomocí tlačítka Tento obvod může sloužit k ručnímu zadávání hodinového signálu Můžeme tak detailně sledovat chovaní systému implementovaného v FPGA při náběžné nebo sestupné hraně hodinového signálu Tlačítko je vybaveno obvodem ošetřujícím jeho zákmity 2 Konfigurace FPGA Funkce obvodu Spartan-3E je definována načtením konfiguračních dat do interní přeprogramovatelné napětí CMOS, obsažené v obvodu FPGA Do této interní paměti je možné konfigurační data načíst několika různými způsoby Obvod Spartan-3E těchto způsobů (konfiguračních módů) umožňuje šest Volba konfiguračního módu je prováděna pomocí pinů M0, M1, M2 vyvedených z obvodu FPGA Následuje stručný popis jednotlivých módů konfigurace Název módu Master serial SPI serial FLASH BPI Slave paralel Slave serial JTAG Stručný popis mód určený pro konfiguraci z pamětí Xilinx XCFxx konfigurace ze standardní sériové paměti pomocí rozhranní SPI Podporované typy jsou specifikovány v datasheetu k obvodu FPGA konfigurace ze standardní paralelní paměti paralelní zápis konfiguračních dat z procesoru nebo mikrokontroleru do obvodu FPGA sériový zápis konfiguračních dat z procesoru nebo mikrokontroleru do obvodu FPGA Mód umožňuje také konfiguraci několika FPGA z jednoho zdroje konfiguračních dat konfigurační data jsou do obvodu FPGA nahrány prostřednictvím rozhraní JTAG např z počítače PC (za použití vhodného interface např Xilinx paralel cable IV) Tab 1 44-3
napájení +5V lineární stabilizátory napájecího zdroje paměť AT 45DB041B paměť XCF02 JP1 nastavení konfiguračního pinu M2 (propojit piny 2 a 3 pro M2 = 1) JP2 nastavení konfiguračního pinu M1 (propojit piny 2 a 3 pro M1 = 1) JP3 nastavení konfiguračního pinu M0 (propojit piny 2 a 3 pro M0 = 1) JP4 nastavení konfiguračního pinu VS1 (propojit piny 2 a 3 pro VS1 = 1) JP5 propojení signálu CLK ke konfigurační paměti M25P20 JP6 volba zdroje signálu konfiguračních dat pro FPGA (pro paměť XCF02 propojit piny 1 a 2, pro paměť 45DB041B propojit piny 2 a 3) JP7 Write protect paměti 45DB041B (pro zamezení zápisu osadit propojku) JP8 nastavení konfiguračního pinu Hswap (pro Hswap = 0 osadit propojku) JP9 aktivace displeje (osadit propojku) JP10 aktivace diod Led9 Led 16 (osadit propojku) JP11 JP12 Obr 2: Popis rozložení prvků na desce přípravku aktivace diod Led1 Led 8 (osadit propojku) nastavení napájecího napětí oscilátoru (pro napájení 3,3V propojit piny 1 a 2, pro napájení 5V propojit piny 2 a 3) Tab 1: Popis propojek přípravku 44-4
Obr 2 obsahuje popis rozložení částí na desce přípravku a rozmístění propojek Popis propojek je uveden v tab 1 Napájení je přivedeno z externího zdroje +5V Postačí usměrněné vyfiltrované napětí Konektor JTAG J1 slouží pro programování konfigurační paměti 45DB041B Konektor JTAG J2 pro přístup k JTAG řetězci FPGA-paměť XCF což umožňuje nahrát konfigurační program přímo do obvodu FPGA nebo do paměti XCF Jako interface mezi těmito konektory a počítačem PC slouží Parallel Cable IV firmy Xilinx Přepínač RESET slouží pro znovunačtení konfiguračních dat do obvodu FPGA způsobem definovaným pomocí pinů M0, M1, M2 Ostatní části přípravku byly popsány již v úvodu 3 Programování přípravku Jak bylo zmíněno již výše, konfigurační data lze v tomto přípravku do FPGA nahrát třemi různými způsoby Dále budou tyto způsoby stručně popsány včetně nastavení nutných propojek Ve všech třech případech se pro nahrání konfiguračních dat z počítače PC využívá program Impact jež je součástí aplikace ISE firmy Xilinx - Pomocí JTAG přímo do FPGA obvodu Pomocí kabelu Xilinx Parallel Cable IV propojíme konektor JTAG J2 přípravku a počítač PC Žádné propojky není nutné na desce osazovat Přístup pomocí JTAG přímo do obvodu FPGA pracuje při jakémkoli nastaveném konfiguračním módu Při odpojení napájení dojde k vymazaní konfiguračních dat z obvodu FPGA a data je nutno znova nahrát Tento způsob konfigurace je vhodný např při ladění programu - Pomocí JTAG do XCF paměti Jako v předchozím případě propojíme pomocí kabelu Xilinx Paralel Cable IV konektor JTAG J2 přípravku a počítač PC Pro načítání konfiguračních dat z paměti XCF je nutné nastavit konfigurační mód na Master Serial (M0 = 1, M1 = 0, M2 = 0) Propojky JP1, JP2, JP3 tedy není nutno osazovat Propojením pinů 1 a 2 propojky JP6 zvolíme jako zdroj konfiguračních dat paměť XCF - Pomocí rozhranní SPI do paměti 45DB041B V tomto případě kabelem Xilinx Parallel Cable IV propojíme konektor JTAG J1 a počítač PC Pro načítání konfiguračních dat pomocí rozhranní SPI je nutno konfigurační mód nastavit na SPI serial FLASH (M0 = 1, M1 = 0, M2 = 1) Osadíme tedy propojku JP1 Propojením pinů 2 a 3 propojky JP6 zvolíme jako zdroj konfiguračních dat paměť 45DB041B Osazením propojky JP7 lze zakázat zápis to paměti 45DB41B Při zapnutí napájecího napětí trvá určitou dobu než je možné konfigurační data ze sériové paměti číst Pokud je tato doba delší než doba náběhu obvodu FPGA, pak se obvod FPGA pokouší číst konfigurační data v době kdy sériová paměť ještě není pro čtení připravena a konfigurace FPGA obvodu se proto nezdaří Obvod FPGA je proto vybaven zpožďovacím obvodem (RC člen), který po určitou dobu od zapnutí napájecího zdroje přidrží vývod PROG_B obvodu FPGA na nulovém potenciálu což způsobí zpoždění náběhu obvodu FPGA Obvod FPGA tak nabíhá v době kdy je sériová paměť již připravena pro čtení 44-5
4 Šablona pro snadnější implementaci konstrukcí do přípravku Číslicový systém lze popsat různými způsoby První způsob je popis pomocí kombinace schématického a textového zápisu Druhý způsob popis stejného systému čistě pomocí jazyku VHDL Každý způsob je výhodný pro jiné druhy číslicových systémů Na obr 3 je schéma šablony realizované pomocí kombinace schematického popisu a VHDL Tato šablona již obsahuje bloky pro multiplexní ovládání displeje nebo pro úpravu hodinových signálů Při psaní samotného programu se tímto programátor již nemusí zabývat Blok timing Blok dispdrv Blok aplikace Vstupním signálem je hodinový kmitočet o hodnotě přibližně 25MHz, který je vytvořen oscilátorem na desce laboratorního přípravku Výstupem bloku jsou hodinové kmitočty 1Khz a 1MHz Blok tedy slouží ke snížení frekvence hodinového signálu tak abychom se tím pak dále v cílové aplikaci nemuseli zabývat Blok slouží pro ovládání šestimístného LED displeje Vstupem je pouze datový signál o délce 24 bitů (6 x 4 bitů) Výstupem je osmibitový signál disp_segment, který budí jednotlivé segmenty číslic a šestibitový signál disp_num který budí katody jednotlivých číslic Z bloku timing je zde také přiveden hodinový signál 1KHz, podle něhož probíhá multiplexování displeje Slouží pro umístění VHDL kódu cílové aplikace Vstupem jsou všechny tři hodinového signály použité v přípravku, tzn 1KHz, 1MHz a 25MHz a dále data z přepínačů sw1 sw16 Výstupem jsou diody led1 led16 nebo signál disp_data pro zobrazení hodnoty na displeji Obr 3: Schéma šablony 44-6
5 Závěr V článku byl popsán přípravek pro práci s programovatelnými logickými obvody Deska plošných spojů byla navržena jako oboustranná pomocí programu Eagle Konstrukce byla vyrobena a ověřena Všechny části přípravku i všechny tři způsoby programovaní jsou funkční Pomocí laboratorního přípravku lze snadno demonstrovat funkce programovatelných logických obvodů a tím vhodně doplnit výuku předmětu zabývajícího těmito součástkami V přípravku byla ověřena možnost konfigurace obvodu FPGA pomocí levných sériových pamětí využívajících rozhranní SPI Literatura [1] KOLOUCH, J: Programovatelné logické obvody - přednášky Skripta FEKT VUT v Brně Brno: MJ Servis, 2002, 62 stran [2] KOLOUCH, J: Programovatelné logické obvody a návrh jejich aplikací v jazycích ABEL a VHDL počítačové cvičení Skripta FEKT VUT v Brně Brno : VUT v Brně, 2002 [3] KOLOUCH, J: Programovatelné logické obvody a jazyk ABEL pro popis jejich aplikací - přednášky Skripta FEKT VUT v BrněBrno : UREL FEI VUT v Brně, 1999, 36 stran [4] KOLOUCH, J: Impulsová a číslicová technika přednášky Skripta FEKT VUT v Brně Brno : VUTIUM, 2002, 117 stran [5] Xilinx Spartan-3E FPGA Family Data Sheet Dostupné na WWW: http://directxilinxcom/bvdocs/publications/ds312pdf [6] Xilinx Configuring Spartan-3E FPGAs with SPI Flash Memories Dostupné na WWW: http://wwwxilinxcom/bvdocs/appnotes/xapp445pdf [7] Xilinx Xilinx Parallel Cable IV, Data Sheet Dostupné na WWW: http://wwwxilinxcom/bvdocs/publications/ds097pdf 44-7