2007/44 – 29.10.2007
Demonstrace programovatelných logických obvodů Ing. Josef SLEZÁK Ústav radioelektroniky, FEKT, VUT v Brně Email:
[email protected] 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
2007/44 – 29.10.2007 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 FPGA.V 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í VCCINT o velikosti 1,2V. Dále napětí VCCAUX o hodnotě 2,5V pro napájení pomocných obvodů a poslední napětí VCCO o hodnotě 3,3V pro napájení vstupně výstupních obvodů. Velikosti napětí VCCINT a VCCAUX nejsou volitelné (hodnoty viz. výše). Velikost napětí VCCO 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
2007/44 – 29.10.2007 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 Spartan3E, 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
2007/44 – 29.10.2007
napájení +5V
lineární stabilizátory napájecího zdroje
paměť AT 45DB041B paměť XCF02
Obr. 2: Popis rozložení prvků na desce přípravku JP1 JP2 JP3 JP4 JP5 JP6 JP7 JP8 JP9 JP10 JP11 JP12
nastavení konfiguračního pinu M2 (propojit piny 2 a 3 pro M2 = 1) nastavení konfiguračního pinu M1 (propojit piny 2 a 3 pro M1 = 1) nastavení konfiguračního pinu M0 (propojit piny 2 a 3 pro M0 = 1) nastavení konfiguračního pinu VS1 (propojit piny 2 a 3 pro VS1 = 1) propojení signálu CLK ke konfigurační paměti M25P20 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) Write protect paměti 45DB041B (pro zamezení zápisu osadit propojku) nastavení konfiguračního pinu Hswap (pro Hswap = 0 osadit propojku) aktivace displeje (osadit propojku) aktivace diod Led9 – Led 16 (osadit propojku) 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
2007/44 – 29.10.2007
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
2007/44 – 29.10.2007
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 –
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 dispdrv –
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.
Blok aplikace –
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
2007/44 – 29.10.2007
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://direct.xilinx.com/bvdocs/publications/ds312.pdf [6] Xilinx. Configuring Spartan-3E FPGAs with SPI Flash Memories Dostupné na WWW: http://www.xilinx.com/bvdocs/appnotes/xapp445.pdf [7] Xilinx. Xilinx Parallel Cable IV, Data Sheet Dostupné na WWW: http://www.xilinx.com/bvdocs/publications/ds097.pdf
44-7