Programovatelné logické obvody

Programovatelné součástky a zejména hradlová pole jsou velmi důležité prvky dnešní elektroniky. Díky nim si kdokoli může vytvořit vlastní zákaznický integrovaný obvod přizpůsobený konkrétní aplikaci s minimálními náklady. Když ale člověk sleduje české odborné časopisy (jak papírové tak i elektronické), vypadá to jako by nejpokročilejší používané číslicové obvody byly osmibitové mikrokontroléry. Přitom využití programovatelných logických obvodů by bylo často mnohem výhodnější a efektivnější. Z tohoto důvodu bych čtenáře rád seznámil se základními vlastnostmi a použitím těchto součástek.

Základní pojmy

Všechny číslicové 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.

Struktura obvodu typu PAL

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.

Součinové hradlo v PAL

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.

Struktura obvodu typu CPLD

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.

Struktura obvodu typu FPGA

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.

Struktura CLB

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. Nejnovější hradlová pole často obsahují bloky vhodné pro vytváření složitých systémů pro číslicové zpracování signálů jako jsou například hardwarové násobičky nebo dokonce mikroprocesory.

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ě. Bohužel však programovatelné obvody ostatních firem jako je například Altera, Atmel, Actel nebo Lattice 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í nebo je výrobce označuje jako zastaralé a nedoporučuje je pro nové konstrukce.

Typ Vccint
[V]
Vccio
[V]
Počet
logických
buněk
Syst. hradel
[tis.]
Distrib. RAM
[kbit]
Bloková RAM
[kbit]
Pouzdra WebPACK
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
Spartan-II 2,5 2,5 - 3,3 432 - 5292 15 - 200 6 - 74 16 - 56 QFP
BGA
ANO
Spartan-IIE 1,8 1,8 - 3,3 1728 - 15552 50 - 600 24 - 216 32 - 288 QFP
BGA
Max.
XC2S300E
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.
XCV300E
Virtex-II 1,5 1,5 - 3,3 576 - 104882 40 - 8000 8 - 1456 72 - 3024 BGA Max.
XC2V250
Virtex-II Pro 1,5 1,2 - 3,3 1408 - 22592 - 44 - 706 216 - 3888 BGA Pouze
XC2VP2

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 založené na principu například EEPROM.

V tabulce nejsou uvedeny další důležité vlastnosti jako jsou například vestavěné paralelní násobičky 18x18 bitů u řad Virtex-II a Virtex-II Pro. Řada Virtex-II Pro je určena především pro použití v takzvaných konfigurovatelných systémech na čipu (configurable systems on a chip - CSoC), protože kromě vlastní programovatelné logiky a pamětí obsahuje až čtyři 32-bitové RISC procesory PowerPC. Jedinou součástkou této řady bez procesoru je XC2VP2.

Při porovnávání údajů z tabulky je třeba vzít v úvahu následující skutečnosti:

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.

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ů.

Struktura Spartan-II

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

Vnitřní logická struktura jednotlivých vstupně-výstupních buněk je schématicky znázorněna na následujícím obrázku.

Vstupně-výstupní blok

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). U výstupů je navíc konfigurovatelná rychlost přeběhu, čímž se dá významně ovlivnit spotřeba.

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.

Struktura řezu

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, které jsou rovnoměrně rozmístěny v ploše čipu.

Bloková RAM

Každý blok může být nakonfigurován do režimu 4K×1 až 256×16. Paměť může být využita jako dvoubránová nebo klasické jednobránová. Obsah paměti je možné nadefinovat 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.

ISE WebPACK

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:

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:

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ů.

FPGA-evb-S2

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. 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 a nejrychlejšího obvodu této řady XC2S200-6PQ208 se při jednotkovém množství pohybuje kolem $35.

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
jenda76 _AT_ seznam.cz

Odkazy

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