Jste zde

Nebojte se FPGA

Díky programovatelným polím si každý může vyrobit vlastní zákaznický integrovaný obvod šitý přesně na míru dané aplikaci s minimálními náklady. Tento článek čtenáře seznámí s vlastnostmi a použitím těchto součástek.

Základní pojmy

Všechny programovatelné součástky se souhrnně označují PLD, což znamená Programmable Logic Device. Číslicové programovatelné součástky je možné podle vnitřní struktury rozdělit do tří skupin. První skupinu budu označovat klasické PLD, druhou komplexní PLD a do třetí skupiny patří obvody typu FPGA.

Klasické PLD

Obvody této kategorie jsou charakteristické vnitřní strukturou podle následujícího obrázku.

Každá vodorovná čára v programovatelné matici AND představuje vždy jedno součinové hradlo. Na vstupy každého hradla lze připojit "libovolnou" kombinaci vstupních signálů, zpětných vazeb a jejich negací. Počet vstupů každého součinového hradla je však omezen. Zapojení jednoho součinového hradla je znázorněno na následujícím obrázku.

Vlnovky na tomto obrázku představují programovatelné spínače. Jejich realizace závisí na výrobní technologii obvodu. Například u bipolárních obvodů se jednalo o jakousi pojistku, která se při programování obvodu "přepálila" proudovým impulsem. V technologii CMOS jsou spínače realizovány stejnými principy jako u pamětí PROM, EPROM nebo EEPROM. Složitější obvody z kategorie FPGA mívají často spínače řízeny statickou pamětí RAM.

Do kategorie klasických PLD je možné zařadit obvody následujících typů:

PAL Obvody typu PAL (Programmable Array Logic) mají strukturu podle výše uvedených obrázků. Některé starší typy neměly například výstupní registry, takže byly vhodné spíše pro kombinační logiku. Zástupci této kategorie jsou obvody PAL, GAL a PALCE.
PLA Obvody typu PLA (Programmable Logic Array) mají obecnější strukturu než PAL na horním obrázku. Mají totiž programovatelnou nejenom matici logických součinů, ale i následující matici logických součtů.

Komplexní PLD

Klasické obvody PLD mají velmi omezené prostředky, takže umožňují realizovat pouze jednodušší funkce. Proto výrobci začali sdružovat více takovýchto obvodů na jednom čipu spolu s nutnými prostředky pro propojení. Takovéto obvody se většinou označují jako CPLD což znamená Complex Programmable Logic Device. Typická struktura obvodu CPLD je znázorněna na následujícím obrázku.

Každý výrobce CPLD používá trochu jinou interní strukturu obvodů, ale většinou vychází z tohoto schématu. CPLD od různých výrobců se obvykle liší v provedení bloků vlastní programovatelné logiky i když většinou vychází z klasické struktury PAL.

Obvody FPGA

Obvody typu FPGA (Field Programmable Gate Array) mají z programovatelných obvodů nejobecnější strukturu a obsahují nejvíce logiky. Současné největší obvody FPGA obsahují až 6 milionů ekvivalentních hradel (typické dvouvstupové hradlo NAND). Typickou strukturu obvodu FPGA znázorňuje následující obrázek.

Bloky označené IOB (Input/Output Block) představují vstupně-výstupní obvody pro každý v-v pin FPGA. Tyto bloky obvykle obsahují registr, budič, multiplexer a ochranné obvody. Bloky LB (Logic Block) představují vlastní programovatelné logické bloky. Všechny bloky mohou být různě propojeny globální propojovací maticí. Nejpoužívanější struktura konfigurovatelného logického bloku je znázorněna na následujícím obrázku.

FPGA obvykle umožňují propojit některé signály logických bloků přímo se sousedním bez nutnosti využívat globální propojovací matici. Takovéto spoje mají mnohem menší zpoždění a umožňují tak realizovat například rychlé obvody šíření přenosu, což je nezbytné pro sčítačky nebo násobičky.
Kromě bloků znázorněných na předchozích obrázcích integrují výrobci do FPGA další prvky. Většina moderních FPGA obsahuje několik bloků rychlé synchronní statické paměti RAM. Velmi často obvody FPGA obsahují PLL (Phase Locked Loop) nebo DLL (Delay Locked Loop) pro obnovení charakteristik hodinového signálu, případně pro násobení nebo dělení jeho frekvence.
 
 

FPGA Xilinx

Jelikož již delší dobu používám výhradně FPGA této firmy, rád bych vás s nimi seznámil. Účelem tohoto článku není dělat reklamu jedné firmě, ale FPGA jiných firem jako je například Altera, Atmel nebo Actel neznám natolik abych mohl napsat objektivní srovnání.
Jednotlivé typové řady programovatelných hradlových polí Xilinx jsou porovnány v následující tabulce. Tabulka neobsahuje typy, které se již v dnešní době nevyrábí.

 
Typ Vccint
[V]
Vccio
[V]
Počet
logických
buněk
Syst. hradel
[tis.]
Distrib. RAM
[kbit]
Bloková RAM
[kbit]
Pouzdra Podpora v systému WebPACK Pozn.
XC4000XL/XLA 3,3 3,3 466 - 7448 10 - 200 6 - 98 - PLCC
QFP
BGA
NE -
XC4000XV 2,5 3,3 12312 - 20102 100 - 500 162 - 265 - QFP
BGA
NE -
Spartan-XL 3,3 3,3 238 - 1862 5 - 40 3 - 25 - PLCC
QFP
BGA
NE Architektura typu XC4000
Spartan-II 2,5 2,5 - 3,3 432 - 5292 15 - 200 6 - 74 16 - 56 QFP
BGA
ANO Architektura typu Virtex
Spartan-IIE 1,8 1,8 - 3,3 1728 - 6912 50 - 300 24 - 96 32 - 64 QFP
BGA
ANO Rychlejší verze Spartan-II
Virtex 2,5 2,5 - 3,3 1728 - 27648 50 - 1000 24 - 384 32 - 128 QFP
BGA
NE -
Virtex-E 1,8 1,8 - 3,3 1728 - 73008 50 - 3200 24 - 1014 64 - 832 QFP
BGA
Max. 300 tis. hradel Rychlejší verze Virtex
Virtex-II 1,5 1,5 - 3,3 576 - 104882 40 - 8000 8 - 1456 72 - 3024 BGA Max. 300 tis. hradel Násobičky 18x18 bitů

Všechny FPGA Xilinx používají konfiguraci pomocí statické paměti RAM. To znamená, že po připojení napájení je nutné vždy nahrát znovu konfiguraci. Výhodou tohoto řešení je téměř nekonečná reprogramovatelnost FPGA a také rychlost. Konfigurační propojky pracující na principu paměti RAM jsou totiž rychlejší než přepínače na principu např. EEPROM.
Při porovnávání údajů z tabulky je třeba vzít v úvahu následující skutečnosti:

  • Počet systémových hradel je zavádějící. Toto číslo vyjadřuje kompletní rozsah interní logiky včetně konfiguračních prostředků, blokových pamětí apod. Mnohem důležitější údaj je počet logických buněk. Interní struktura logické buňky je vždy schématicky znázorněna v katalogu.
  • Distribuovaná paměť RAM je tvořena multiplexery logických buněk. Při jejím použití se připravujeme o využitelné prostředky pro ostatní logiku. Obvykle může být tato paměť využita jako dvouportová nebo klasická jednoportová synchronní RAM nebo jako ROM.
  • Bloková paměť RAM je tvořena skutečnými bloky synchronní statické RAM. Bloky mají dvojnásobné adresové i datové sběrnice, takže je lze využít i jako dvouportovou paměť.

Pro využití obvodů FPGA v našich podmínkách je důležitý i údaj o podpoře ve vývojovém systému WebPACK. Firma Xilinx totiž nabízí svůj vývojový systém ISE v několika verzích. Cena roční licence na plný systém se pohybuje v tisících dolarů. Jako alternativu však Xilinx nabízí ISE WebPACK, který lze zdarma stáhnout z webových stránek firmy. Tento systém však samozřejmě nepodporuje všechny typové řady FPGA. Více se budu vývojovému systému věnovat dále.

Spartan-II

Pro běžné použití se mi v současné době jeví nejvýhodnější programovatelná hradlová pole typu Spartan-II a Spartan-IIE. Tyto typy jsou totiž plně podporovány vývojovým prostředím ISE WebPACK a využívají pokročilou architekturu obvodů řady Virtex. Ve srovnání s obvody Virtex-E a Virtex-II jsou však FPGA Spartan-II mnohem levnější. Počet využitelných hradel je dostatečně velký i pro poměrně rozsáhlé návrhy. Například kompletní řadič VGA v grafickém režimu nezabere ani 1% využitelné logiky největšího obvodu Spartan-II s 200 tisíci systémovými hradly.
Interní struktura nejmenšího obvodu Spartan-II XC2S15 je znázorněna na následujícím obrázku. Ostatní obvody této řady se liší pouze počtem jednotlivých bloků.

Obvod obsahuje vstupně-výstupní buňky (I/O CELLs), konfigurovatelné logické bloky (CLBs), blokovou paměť RAM (BLOCK RAM) a bloky DLL (Delay Locked Loop), které slouží pro rekonstrukci a případné násobení či dělení vnějších taktovacích signálů.

Vstupně-výstupní buňky

Struktura jednotlivých v-v buněk je schématicky znázorněna na následujícím obrázku.

Vstupně-výstupní buňka může pracovat v jednom ze šestnácti režimů jako jsou například LVCMOS, HSTTL, STTL, GTL a další. Všechny tři registry mohou být řízeny hranou (flip-flop) nebo úrovní (latch).

Logické buňky

Základním stavebním prvkem konfigurovatelného logického bloku (CLB) je logická buňka (Logic Cell - LC). Logická buňka obsahuje čtyřvstupový funkční generátor, rychlou logiku přenosu a paměťový element. Každý konfigurovatelný logický blok (CLB) obvodů řady Spartan-II obsahuje čtyři logické buňky (LC) uspořádané do dvou shodných řezů (slice). Kromě čtyř logických buněk obsahuje CLB ještě logiku, která umožňuje kombinovat funkční generátory a tak bylo možné vytvořit logickou funkci pěti nebo šesti proměnných. Schéma jednoho řezu (dvě logické buňky) je znázorněno na následujícím obrázku.

Funkční generátory jsou tvořeny takzvanými look-up tables (LUT), což jsou vpodstatě konfigurovatelné paměti ROM se čtyřbitovou adresovou a jednobitovou datovou sběrnicí. Tyto bloky mohou být využity nejen pro generování kombinačních logických funkcí, ale i jako synchronní paměť RAM 16x1 bit. LUT může pracovat také jako šestnáctibitový posuvný registr.

Bloková RAM

Pro paměťově náročnější návrhy obsahují obvody řady Spartan-II blokovou paměť. Ta je rozdělena do bloků po čtyřech kilobitech. Tyto bloky jsou rovnoměrně rozmístěny v ploše čipu.

 

Každý blok může být nakonfigurován do režimu 4Kx1 až 256x16. Paměť může být využita jako dvouportová nebo jednoportová. Obsah paměti je možné definovat již při návrhu, takže je možné využít blokovou RAM i jako paměť typu ROM.

Vývojové prostředky

Software

Pro vývoj aplikací s FPGA existuje několik návrhových systémů. Pro vývoj je nutné použít minimálně dvou nástrojů. Prvním je nástroj pro syntézu, který převede většinou textový popis návrhu v některém HDL jazyce na netlist využívající obecné logické bloky. Druhý nástroj zajistí konverzi obecného netlistu na netlist využívající prostředky konkrétního FPGA a zajistí jejich "optimální" rozmístění a propojení. Nástroje pro rozmístění a propojení obvykle nabízejí pouze výrobci programovatelných hradlových polí. Prostředky pro syntézu nabízejí i jiné firmy.
Pokud chce člověk začít pracovat s obvody FPGA musí si tedy obstarat základní programové vybavení od výrobce obvodů a případně další software od třetí strany. Kromě nástrojů pro syntézu je velmi výhodné používat ještě simulátor, čímž se může předejít chybám již v průběhu návrhu. Ceny vývojových prostředků jsou však velmi vysoké (ceny licencí na jeden rok se obvykle pohybují od 1000 do 2000 dolarů). Firma Xilinx nabízí pro FPGA s menší hustotou logiky mnohem levnější alternativu. Vývojový systém ISE WebPACK je totiž zadarmo.
Tento vývojový systém pro FPGA firmy Xilinx je omezenou verzí jejich kompletního systému. Omezení se však týká pouze velikosti hradlových polí pro které je možno prostředí použít. Navíc neobsahuje některé rozšířené součásti jako například plnohodnotný editor výsledného propojení. WebPACK je i přesto plně funkční a plnohodnotný návrhový systém. Kromě vlastního prostředí WebPACK je možné zdarma získat i omezenou verzi HDL simulátoru ModelSim XE, což je verze s předkompilovanými knihovnami primitiv pro FPGA Xilinx. Omezení simulátoru spočívá ve zpomalení jeho funkce pro velké návrhy. Simulátor je tedy opět plně funkční, pouze doba simulace složitého návrhu je několikanásobná oproti plné verzi.

Vývojové prostředí ISE WebPACK včetně simulátoru ModelSim XE je možno stáhnout zde. Jedinou podmínkou pro stažení je nutnost zaregistrovat se. Tím si vytvoříte uživatelský účet a získáte přístup ke stáhnutelným souborům. Soubory jsou poměrně velké (desítky MB), takže pokud jste připojeni přes modem, může se download poněkud protáhnout.
Systém WebPACK umožňuje zadání návrhu v některém z HDL jazyků Verilog nebo VHDL, případně i pomocí schématu. Prostředí podporuje následující obvody Xilinx:

  • FPGA Spartan-II
  • FPGA Spartan-IIE
  • FPGA Virtex-E (max. XV300E)
  • FPGA Virtex-II (max. X2V250)
  • CPLD CoolRunner2
  • CPLD XC9500/XL/XV
  • CPLD CoolRunner XPLA3

Součástí systému je i nástroj pro konfiguraci FPGA a CPLD z počítače přes JTAG rozhraní, editor stavových diagramů a FloorPlanner pro manuální úpravy fyzického rozmístění bloků v FPGA.

Hardware

Pro bližší seznámení s programovatelnými hradlovými poli je výhodné použít již hotovou vývojovou desku. Na trhu jich je několik a jejich ceny se pohybují řádově od $200. Pokud nechcete za desku utratit tolik peněz, ale přesto byste pro začátek použili ověřenou funkční desku, můžete si sami vyrobit, příp. nechat vyrobit vývojovou desku podle zveřejněné open-source dokumentace. Takovou deskou je například FPGA-evb-S2, jejíž bližší popis následuje.

FPGA-evb-S2

Jedná se o open-source vývojovou desku pro FPGA Xilinx Spartan-II. Umožňuje použít libovolný obvod z této řady v pouzdru PQFP-208. Díky použitému typu obvodu lze pro vývoj aplikací využít prostředí ISE WebPACK, takže odpadají další finanční náklady na vývojový systém.
Plně osazená deska obsahuje:

  • FPGA Xilinx Spartan-II XC2S200-6PQ208
  • Patici pro konfigurační PROM XC17S200A
  • Programovatelný krystalový oscilátor 20-120 MHz
  • Dva 80-pinové konektory pro rozšíření
  • Rozhraní PS/2 pro klávesnici nebo myš
  • Výstup na VGA monitor
  • Čtyřnásobný DIP přepínač
  • Čtyři tlačítka
  • Osm LED
  • Konfigurační konektor

Deska může být napájena stejnosměrným nebo střídavým napětím v rozsahu 7-15 V. Karta byla vyvíjena s ohledem na co nejnižší cenu, takže základem je pouze dvouvrstvá deska plošných spojů. Dalším kritériem při vývoji byla snadná rozšiřitelnost, takže vlastní karta obsahuje pouze základní periferie. Libovolné periferie mohou být připojeny pomocí dvou 80-pinových konektorů.

Pro konfiguraci FPGA z osobního počítače je potřeba ještě konfigurační kabel. Ten obsahuje pouze jednoduché budiče sběrnice a připojuje se k paralelnímu portu počítače. Konfigurační software zajišťuje simulaci rozhraní JTAG.
Kompletní vývojovou dokumentaci můžete najít na domovské stránce projektu http://fpga.f2g.net. Na těchto stránkách najdete kompletní schémata karty i konfiguračního kabelu, náhledy plošných spojů a technologické soubory ve formátech Gerber a Excellon pro výrobu plošných spojů. Na stránkách najdete zároveň padesátistránkový manuál v angličtině. Českou dokumentaci s největší pravděpodobností psát nebudu. Manuál obsahuje detailní popis hardware karty a ukázkových aplikací. Kompletní projekty těchto aplikací si můžete opět stáhnout ze stránek projektu. V současné době jsou ve zveřejnitelné formě hotové tři jednoduché projekty ilustrující použití základních periferií na desce.

Závěr

Účelem tohoto článku bylo seznámit čtenáře s programovatelnými logickými obvody a to především s FPGA Xilinx Spartan-II. Obvody této řady mají totiž opravdu velké možnosti při stále ještě velice slušné ceně. Například cena největšího obvodu této řady XC2S200-6PQ208 se při jednotkovém množství pohybuje kolem $38.

 

Doufám, že článek přesvědčil čtenáře o tom, že se není třeba obvodů FPGA obávat. Jde jenom o to začít je ve svých konstrukcích používat. Jedna z možností jak začít je stáhnout si z internetu WebPACK a vyrobit si, nebo si nechat vyrobit levnou vývojovou desku FPGA-evb-S2.

Ing. Jan Pech
j.pech@ieee.org

DOWNLOAD & Odkazy

  1. http://www.xilinx.com
  2. http://fpga.f2g.net (zde najdete další zajímavé odkazy týkající se FPGA)
Hodnocení článku: