Aktuální vydání

celé číslo

08

2024

Automatizace v potravinářství a farmacii

Měření a regulace průtoku, čerpadla

celé číslo

Programovatelná hradlová pole – FPGA

číslo 2/2006

Programovatelná hradlová pole – FPGA

Článek přináší základní informace o programovatelných hradlových polích (Field Programmable Gate Array – FPGA) jako o moderní technice, která si v poslední době našla cestu i do řídicích systémů. Stručně popisuje základní vlastnosti, architekturu, techniku programování a vnitřní organizaci FPGA a charakterizuje současnou nabídku těchto obvodů na trhu. Závěrem stručně uvádí do problematiky automatizovaného návrhu zapojení s FPGA.

1. Základní vlastnosti FPGA

Programovatelná hradlová pole, všeobecně známá pod zkratkou FPGA, představují jeden z nejvýznamnějších směrů vývoje integrovaných obvodů s velmi velkou hustotou integrace (VLSI). Programovatelná hradlová pole jsou obvody s pravidelnou strukturou logických buněk schopných realizovat jednoduché logické funkce. Volitelným propojením těchto buněk lze dosáhnout rozsáhlých komplexních funkcí, k jejichž realizaci by jinak bylo nutné použít mnoho různých obvodů.

Programovatelná hradlová pole jsou velmi populární konstrukční alternativou k zákaznickým integrovaným obvodům, tzv. ASIC (Application Specific Integration Circuit). Důvodem jsou nízké výrobní náklady z pohledu koncového uživatele, velký počet vyrobených kusů z pohledu výrobce, krátká doba návrhového cyklu, možnost opakovaného použití (v případě obvodů FPGA využívajících technologii SRAM) a v poslední době též možnost dynamicky, za běhu, měnit konfiguraci celého FPGA nebo jeho částí. Konstrukce s FPGA naproti tomu dosahují menší výkonnosti (ve smyslu maximální pracovní taktovací frekvence či příkonu) než konstrukce s ASIC a nevyplatí se je používat v produktech, jichž se má vyrábět více než asi 10 000 kusů.

Obr. 1.

Obr. 1. Realizace programovatelného přepínače v FPGA: a) antipojistka, b) buňka SRAM [1]

Hlavní výhodou výrobní technologie FPGA je to, že sleduje křivku výrobní technologie SRAM, která klesá směrem k nižším hodnotám detailu (feature size) rychleji než křivka technologie výroby procesorů. Tato skutečnost staví FPGA do čela vývoje technologie obvodů VLSI se vším, co to přináší. Nevítaným faktorem s vlivem na celý návrhový cyklus je dominance zpoždění signálů v propojovacích vodičích, jež se projevuje od úrovně integrace 500 nm níže [1].

Jedno FPGA lze použít pro implementaci různých uživatelských zapojení (obvodů). Koncept univerzálního předpřipraveného obvodu, s nímž bude možné realizovat mnoho různých úloh, je velmi populární, neboť je to nejefektivnější způsob snižování výrobních nákladů. Existují dva typy takových obvodů: hradlová pole programovatelná maskou (Mask Programmable Gate Array – MPGA) a programovatelná hradlová pole (FPGA). Programovatelná hradlová pole byla odvozena přímo z MPGA. Prázdné MPGA je standardní čip, který obsahuje jednoduché logické prvky (tranzistory, hradla) a propojovací vodiče, určené především pro rozvod napájení, umístěné v pravidelném vzoru na ploše čipu. Návrhář realizuje logický obvod v MPGA vytvořením masek kovových vrstev (metal layers) v posledním kroku výrobního procesu. To znamená, že koncový uživatel MPGA (návrhář) musí být součástí výrobního procesu. To na něj klade značné požadavky technické (schopnost dodržovat konstrukční pravidla a verifikovat navržené uspořádání) i ekonomické (dostatek finančních prostředků).

Obr. 2.

Obr. 2. Programovatelné přepínače řízené buňkou SRAM: a) přenosový tranzistor, b) multiplexor, c) třístavový oddělovač (buffer)

Programovatelná hradlová pole odstraňují uvedené problémy tím, že uživatel není součástí výrobního procesu. Cenou, kterou za to platí, je větší složitost obvodu, který musí oproti MPGA navíc obsahovat paměť pro uložení konfigurace FPGA, logické obvody a programovatelné přepínače. To vše je však bohatě kompenzováno pružností FPGA při jeho použití a velkými výrobními sériemi, umožněnými tímto konceptem, z čehož mají užitek výrobce i uživatel.

2. Architektura FPGA

Architektura FPGA je určena výběrem technologie programování, strukturou logických bloků, jejich rozmístěním a strukturou propojovacích vodičů. Následující text je zobecněním existujících principů používaných hlavními výrobci FPGA. Zejména byly analyzovány obvody XC4000, XC6200, Spartan/Spartan-2/Spartan-3 a Virtex/VirtexII/Virtex4 od firmy Xilinx, Flex10K, Cyclone/CycloneII a Stratix/StratixII od firmy Altera, 54SX od firmy Actel a AT40K/AT94K od firmy Atmel. Pro stručnost je v textu dále uvedeno pouze souhrnné značení obvodů typu FPGA bez konkrétní generace (tj. např. skupiny Spartan, Spartan-2 a Spartan-3 jsou souhrnně označovány jako Spartan).

3. Programování FPGA

Technika programování používaná v FPGA je založena na programovatelném přepínači, který je obvykle tvořen buď tzv. antipojistkou nebo buňkou SRAM.

Obr. 3.

Obr. 3. Obecné ostrůvkové uspořádání FPGA (zjednodušený Xilinx Spartan)

Antipojistka (QuickLogic ViaLink, Actel Programmable Interconnect Element) je vytvořena křížením dvou kovových vrstev vyplněných amorfním křemíkem (obr. 1a). Projde-li křížením proud větší než 17 mA, křemík změní svoji strukturu a stane se vodivým. Antipojistka se vyznačuje trvalým naprogramováním, malým odporem přechodu, malými rozměry a úplnou testovatelností při výrobě nebo v programátoru. Její nevýhodou je, že je naprogramována jednou provždy. Naopak potenciální výhodou tohoto způsobu je, že výsledný obvod neobsahuje paměť se souborem konfiguračních bitů (configuration bitstream), což je důležité z hlediska obrany proti tzv. zpětnému inženýrství.

Programovací buňka založená na technice SRAM (obr. 1b) se skládá ze šesti tranzistorů, tvořících statickou paměťovou buňku, která řídí programovatelný spínač, následně konfigurující funkci logického bloku nebo topologii propojovacích vodičů (obr. 2). Tato metoda se vyznačuje možností opakovatelného konfigurování FPGA, v některých případech dokonce za chodu [2]. Funkci buňky lze plně ověřit při výrobě FPGA.

Programovací buňka SRAM má mnohem větší rozměry než antipojistka, nicméně, jak již bylo uvedeno, technologie výroby FPGA sleduje technologii výroby SRAM. Jelikož při ztrátě napájecího napětí se u této metody ztrácí informace o konfiguraci, musejí být tato FPGA doplněna trvalou, na dodávce energie nezávislou pamětí obsahující soubor konfiguračních bitů, který se použije při zapnutí obvodu nebo při obnovování jeho činnosti po výpadku energie.

Obr. 4.

Obr. 4. Základní logický element

Důvody, proč se nyní při konstrukci FPGA dává přednost obvodům založeným na technologii SRAM, jsou možnost upgradovat je u zákazníka a potenciál rekonfigurace. Oba tyto důvody vedou k nízkým výrobním nákladům: první umožňuje výrobci uvést nový produkt na trh ještě před dokončením jeho testování, druhý dovoluje v navrhovaném obvodu použít větší počet logických bloků, než jaký je k dispozici ve vlastním FPGA, použít zapojení, které se samo za běhu modifikuje, a používat samoopravné techniky při poškození logických bloků.

4. Organizace FPGA

4.1 Celkové uspořádání
Všechna FPGA vykazují společné vlastnosti: jsou kombinací univerzálních logických bloků a propojovacích vodičů.

Logické bloky mohou v FPGA realizovat různé logické funkce. Jejich granularita sahá od jednoduchých aritmeticko-logických jednotek (ALU, např. Elixent DSP-PGAs) až po jednoduchá logická hradla (Xilinx XC6200). Běžně je ale logický blok tvořen kombinací dvou vyhledávacích tabulek, každé se čtyřmi vstupy, a klopných obvodů typu D (Xilinx XC4000, Spartan, Virtex, Altera Cyclone, Stratix).

Propojovací vodiče mají u všech vyráběných obvodů v podstatě stejný charakter. Tvoří je několik vrstev, připomínajících kovové vrstvy klasických ASIC, které se liší rozpětím základního prvku vodiče.

Obr. 5.

Obr. 5. Konfigurovatelný logický blok s vyhledávacími tabulkami (zjednodušený Xilinx Spartan)

Prvky uvnitř ostrůvkového (island-style) provedení FPGA jsou často organizovány jako dvourozměrná matice logických bloků s propojovacími vodiči probíhajícími v kanálech mezi logickými bloky (obr. 3). Dalšími možnými uspořádáními jsou tzv. řádková (row-based) architektura s logickými bloky organizovanými v řádcích a propojovacími vodiči probíhajícími v kanálech mezi dvěma řádky (podobně jako u tzv. technologie standardních buněk používané při realizaci ASIC) a hierarchická architektura, kde několik logických bloků tvoří s lokální propojovací strukturou jedno pole logických bloků, které používá stejné propojovací vodiče k připojení na obecnou propojovací strukturu (např. Altera Flex10K, Stratix).

4.2 Logické bloky
Logický blok je tvořen funkčními jednotkami, které vykonávají funkci zadanou návrhářem, a konfiguračními prvky (multiplexory), jež dohromady spojují funkční jednotky podle informace o konfiguraci nahrané do FPGA. Analýza současných FPGA od různých výrobců ukazuje, že výpočetní síla jejich logických bloků je stejná. Základním stavebním prvkem logických bloků je tzv. logický element (LE). Ten se skládá z jedné čtyřvstupové vyhledávací tabulky (Lookup Table – LUT) a k ní připojitelného klopného obvodu typu D (obr. 4). Typickým příkladem logického bloku je blok z obvodů řady Spartan a Virtex od firmy Xilinx, který používá dvě vyhledávací tabulky a dva klopné obvody typu D (obr. 5).

S tímto logickým blokem lze realizovat jednoduché kombinační a sekvenční obvody nebo může být použit druhotným způsobem jako přenosový prvek pro propojovací síť. V některých FPGA se používá také hierarchické členění logických elementů (Altera Cyclone, Stratix).

Jiný způsob realizace víceúčelového funkčního bloku nabízí použití multiplexorů (MUX) místo vyhledávacích tabulek (obr. 6).

Ačkoliv jsou multiplexory a vyhledávací tabulky ekvivalentní (umožňují implementovat libovolnou logickou funkci, přestože tabulky jsou mocnější než multiplexory), vyžadují použití odlišných optimalizačních technik při návrhu.

Obr. 6.

Obr. 6. Konfigurovatelný logický blok s multiplexory (zjednodušený A54SX)

Zvláštním případem logického bloku je vstupní a výstupní blok (blok I/O), který zprostředkovává spojení vnitřku FPGA s okolním světem (deskou plošných spojů). Jeho hlavním úkolem je přizpůsobit signály různým napěťovým standardům a obnovit časování signálů (např. řízené zpoždění signálu či různá prahová napětí u obvodů Xilinx Virtex). Tyto bloky obvykle obsahují několik oddělovacích zesilovačů (buffer) a klopných obvodů, takže se připojený vývod pouzdra může chovat jako kombi nační, hradlovaný nebo registrovaný vstup nebo výstup.

4.3 Propojovací prvky

4.3.1 Požadavky na propojovací prvky
Ačkoliv se zdá, že přímý vliv na kvalitu FPGA mají pouze logické bloky, vyvolávají během implementace obvodu mnohem více problémů propojovací prvky. To je způsobeno dvěma protichůdnými požadavky. Z hlediska použití FPGA jsou žádány co nejflexibilnější propojovací prvky, což znamená segmentované vodiče jednotné délky a velký počet konfiguračních přepínačů. Ovšem každý přepínač zavádí do spoje určité hodnoty odporu, kapacity a také zpoždění signálu [1]. Propojení signálové sítě v architektuře FPGA s mnoha programovatelnými přepínači vede k tomu, že signálové sítě obsahují mnoho těchto přepínačů, v nichž se signály významně zpožďují. Řešením je používat několik typů propojovacích vodičů s omezenou možností propojení.

4.3.2 Propojovací vodiče
Propojovací vodiče většinou tvoří hierarchii stanovenou podle rozpětí jejich základních segmentů a jejich počtu, což spolu úzce souvisí (obr. 7). Nejvíce je vodičů jednoduché délky (single length lines), které umožňují přímo propojit dva sousední bloky, dále následují vodiče dvojité délky (double length lines) s rozpětím dvou sloupců nebo řádků logických bloků a dlouhé vodiče (long lines), které obsáhnou celý sloupec nebo řádek matice logických bloků (terminologie byla převzata od firmy Xilinx). Poslední dobou se opět zavádějí tzv. přímé vodiče (direct lines), které přímo propojují dva konkrétní sousední logické bloky.

Obr. 7.

Obr. 7. Propojovací vodiče

Typ propojovacího vodiče určuje jeho použití. Vodiče jednoduché délky jsou vhodné pro krátké spoje, vodiče dvojité délky se používají pro rozsáhlejší zapojení nebo pro časově kritické signály, dlouhé vodiče se používají pro realizaci třístavových sběrnic, pro distribuci globálních signálů nebo pro signály s velmi kritickým časováním. Přímé vodiče jsou vhodné pro rychlé přenosy mezi dvěmi sousedními bloky, s nimiž se lze setkat zejména u pravidelných výpočetních struktur, jako jsou např. systolická pole nebo celulární automaty.

Zvláštní kategorií propojovacích vodičů jsou globální rozvody, které zaručují stejný čas příchodu signálu (zero skew) po celé ploše čipu.

4.3.3 Programovatelné přepínače
Programovatelné přepínače jsou buď programovatelné připojovací body (Programmable Interconnection Point – PIP) používané k připojení vstupů a výstupů logických bloků k propojovacím vodičům, nebo propojovací body matice přepínačů (Switching Matrix Interconnection Point – SMIP), jejichž prostřednictvím se dohromady spojují jednotlivé segmenty propojovacích vodičů a tvoří propojení signálové sítě. K sobě navzájem koncepčně přináležející SMIP se sdružují v maticích přepínačů umístěných v křížení horizontálních a vertikálních kanálů (v případě ostrůvkových FPGA).

Obr. 8.

Obr. 8. Typické architektury matic přepínačů: a) disjunktní, b) univerzální, c) Wiltonova (ukázána jsou možná propojení pro spodní vodič č. 1 a horní vodič č. 7)

Architektura matic přepínačů určuje, jak lze mezi sebou spojovat segmenty vodičů ležící v sousedních kanálech. Setkat se lze např. s architekturou disjunktní, univerzální nebo Wiltonovou (obr. 8). Nejčastěji se vyskytuje disjunktní architektura, v níž lze propojit pouze sousední segmenty náležející do téže kategorie (pořadové číslo vodiče v kanálu), takže propojovací vodiče jsou rozděleny do několika domén, které mezi sebou nelze propojit. Univerzální architektura zmenšuje počet těchto domén zavedením diagonálních přepínačů. Wiltonova architektura, která dále zmenšuje počet domén, je odvozena od univerzální matice, v níž jsou diagonální spoje posunuty o jeden vodič.

5. Současná nabídka FPGA

V současnosti FPGA vyrábějí zejména firmy Actel, Altera, Atmel, Lattice a Xilinx. Zde se soustředíme na dvě z nich, na firmy Altera a Xilinx. Oba výrobci nabízejí jak obvody zohledňující nízkou cenu řešení (Altera Cyclone/CycloneII, Xilinx Spartan-2/Spartan-3), tak obvody s velkou výkonností pro technicky náročné úlohy (Altera APEX/Excalibur/Stratix/StratixII, Xilinx Virtex2/Virtex2pro/Virtex4). Na obr. 9 je přehled současných FPGA podle rozpětí počtu logických elementů dostupných v jednotlivých obvodech. Klasifikaci založenou pouze na počtu logických elementů je nutné brát pouze orientačně, neboť moderní FPGA obsahují též mnoho specializovaných bloků, např. distribuovanou či blokovou paměť, bloky pro podporu číslicového zpracování signálu (Digital Signal Processing – DSP), jako jsou násobičky, filtry apod., a procesorová jádra (PowerPC, ARM). Zmíněné prvky je při výběru vhodného obvodu rovněž třeba vzít v úvahu.

6. Automatizace návrhu systémů s FPGA

Současná FPGA jsou velmi komplexní zařízení s miliony ekvivalentních hradel. Návrh obvodů, které jsou na FPGA založeny, se tudíž neobejde bez specializovaných vývojových nástrojů. Proces návrhu je sám o sobě velmi složitý, neboť vstupní specifikace požadovaného obvodu musí před tím, než je k dispozici řetězec bitů pro zkonfigurování FPGA, projít množstvím transformací.

Obr. 9.

Obr. 9. Počet použitelných logických elementů v současných FPGA

FPGA jsou obvykle navrhována takto (obr. 10): po specifikování požadavků na budoucí systém, návrhu architektury a dekompozici funkcí návrhář popíše navrhovaný obvod v některém z jazyků pro popis hardwaru (obvykle VHDL nebo Verilog), a to nejdříve prostřednictvím popisu chování (behaviorální úroveň), který dále slouží jako referenční model budoucího obvodu pro účely simulace jeho funkcí. Tento popis chování je postupně převáděn na popis struktury na úrovni přesunů mezi registry (Register Transfer Level – RTL) a v jednotlivých krocích je prováděna simulace kontrolující, zda popis na této úrovni stále odpovídá původnímu popisu chování (často používaným nástrojem pro logickou simulaci je Mentor Graphics ModelSim). Jakmile je k dispozici úplný popis na úrovni RTL, je možné jej zpracovat jedním z nástrojů provádějících syntézu (např. Synplicity Synplify nebo Mentor Graphics Precision Synthesis). Výsledkem je soubor nebo soubory s popisem zapojení obvodu ve formátu EDIF, které se dále zpracovávají ve vývojových nástrojích umožňujících v FPGA fyzicky vytvořit strukturu s požadovaným chováním. Jelikož tyto nástroje musí pracovat s citlivými technologickými údaji o cílových FPGA, dodává každý výrobce pro svoje FPGA vlastní vývojový nástroj (např. firma Xilinx dodává nástroj ISE/Foundation, firma Altera nástroj Quartus, firma Atmel nástroj System Designer/Figaro). Po úspěšném překladu navržené struktury do FPGA je pomocí zpětně anotovaného popisu v jazyce VHDL uskutečněna fyzická simulace zapojení, při níž se kontrolují činnost zapojení (v porovnání s výchozím popisem jeho chování) a dodržení časování signálů podle vstupní specifikace obvodu.

Při překladu požadované logické struktury do FPGA se uplatňují dvě hlavní optimalizační kritéria: použít co možná nejmenší množství prvků FPGA (logických bloků a propojovacích vodičů) a zároveň dosáhnout co možná největší pracovní taktovací frekvence (další možná optimalizační kritéria jsou spotřeba obvodu a rovnoměrné rozložení zdrojů ztrátového tepla v součástce).

Obr. 10.

Obr. 10. Proces návrhu obvodu na bázi FPGA

Funkci nástroje pro fyzickou realizaci požadované struktury v FPGA lze popsat takto: jeho mapovač načte logický popis obvodu ve formátu EDIF a vyhledává v něm takové shluky logických prvků, které lze přímo nalézt v cílovém FPGA (typicky struktury prvků v logických blocích). Výsledkem je sada shluků odpovídající logickým blokům uvnitř FPGA, která je předána rozmísťovači. Ten přiřadí každému shluku konkrétní pozici v rámci matice bloků FPGA. Globální propojovač načrtne propojení signálových sítí, tj. stanoví pro každou síť kanály, kterými má daná síť vést, a tuto informaci předá detailnímu propojovači, který sítím přiřadí v rámci kanálů konkrétní segmenty vodičů a propojovací body. Nakonec je informace o použití jednotlivých prvků FPGA předána k vygenerování souboru konfiguračních bitů, který je dále použit ke zkonfigurování FPGA podle zadaného účelu.

Přirozený tok informace v procesu vývoje na obr. 10 je shora dolů. To znesnadňuje, zvlášť v prvních krocích procesu, správný odhad optimalizačních kritérií, jako jsou např. kritické signálové cesty a jejich zpoždění, neboť konkrétní hodnoty zpoždění jsou určeny budoucím propojením prvků FPGA. Tyto problémy řeší nástroje pro fyzickou syntézu jako, např. Synplicity Amplify, Synplicity Synplify Premier nebo Xilinx ISE 8.1.

Poděkování
Článek vznikl za podpory Grantové agentury České republiky v rámci projektu číslo 102/04/2137.

Literatura:
[1] SHERWANI, N.: Algorithms for VLSI Physical Design Automation. Kluwer, 1999.
[2] BETZ, V. – ROSE, J. – MARQUARDT, A.: Architecture and CAD for Deep-Submicron FPGAs. Kluwer, 1999.

Odkazy na internet:
http://www.actel.com
http://www.altera.com
http://www.atmel.com
http://www.elixent.com
http://www.xilinx.com

Ing. Martin Daněk, Ph.D.,
Ústav teorie informace a automatizace Akademie věd ČR
(danek@utia.cas.cz)

Ing. Martin Daněk, Ph.D., absolvoval inženýrské studium v oboru výpočetní technika a informatika na Fakultě elektrotechnické ČVUT v Praze v roce 1997. Na téže fakultě absolvoval doktorské studium a v roce 2004 obhájil disertační práci na téma fyzický návrh pro obvody FPGA s ohledem na kritická signálová zpoždění. V současnosti pracuje jako výzkumný pracovník v Oddělení zpracování signálu v Ústavu teorie informace a automatizace AV ČR a též jako odborný asistent na katedře počítačů Fakulty elektrotechnické ČVUT v Praze. Je autorem mnoha výzkumných publikací z oblasti obvodů FPGA, uveřejněných na mezinárodních konferencích, a členem programového výboru konference Field-Programmable Logic and Applications, jediné evropské konference z oblasti obvodů FPGA.