Uživatel:Divisji2

Z HPM wiki
Přejít na: navigace, hledání

Jiří Diviš

FPGA

Obsah

Úvod

Field-Programmable Gate Array nebo-li FPGA je polovodičové programovací zařízení, které je díky své univerzálnosti schopné se adaptovat na nové standardy a technologie. Na FPGA je možné implementovat jakékoli logické funkce a umožňuje naprogramování a sestavení libovolné aplikace. Dnešní FPGA se skládají z různých kombinací konfigurovatelných pevně zasazených SRAM (Static Random Access Memory), vysokorychlostních transceiverů a logických bloků. FPGA obsahují programovatelné logické komponenty zvané logické elementy (LE) a hierarchii rekonfigurovatelných propojení, které umožňují LE fyzické zapojení do obvodu. Tyto LE je možné naprogramovat pro výkon komplexních kombinačních funkcí nebo jednoduchých logických operací jako je AND či XOR. Ve většině FGPA jsou také paměťové elementy, které je možné využít jako klopné obvody nebo je poskládat do komplexnějšího pamťového bloku.

Základní popis

Programovací pole založené na dvou nebo jedno-portových SRAM distrbují programovacími 10ti ns synchroními nebo asynchroními statickými paměťmi. Skládají se ze 64 bolků (rozložených do čtverce 8x8), disponují Cache logikou s možností částečné nebo celkové rekonfigurace bez ztráty dat. Rozpětí velikostí se pohybuje od 5000 do 50 000 použitelných bran při počtu I/O (Input/Output) od 128 do 384 ve standartním průmyslové provedení. Je možné je použít jako koprocesor pro vysokorychlostní aplikace implementováním různých kalkulací aritmetických funkcí. To zahrnuje FIR filtry (Finite Impulse Response), FFT (Fast Fourier Transform), konvoluce a DCT (Discrete-Cosine Transform), které jsou vyžadovany při video kompresi a dekompresi, enkrypci a další multimedální aplikace. Čtvercové pole 8x8 jednotlivých buněk je v přímém horizontálním, vertikálním a diagonálním cell-to-cell zapojení, což zajišťuje vysokou rychlost sady násobičů bez nutnosti použití žádných externích BUS zdrojů. Schopnosti Cashe umožňují implementaci velkého množství koeficientů a proměnných na malou plochu, což je velký pokrok v systémové rychlosti za nízkou cenu. Tyto Cashe jsou velmi adaptivní pro stavbu logických systémů. Při nutnosti přidání nových funkcí je možné je nahrát do stávající Cashe bez ztráty dat, které už jsou v Cashe uložené. Díky tomu je možné je využít jako rekonfigurovatelný koprocesor. Při použití FPGA je možné implementovat uživatelem nadefinovaná a následné automaticky vygenerovaná makra bez omezení rychlosti nebo funkčnosti výsledného zařízení. Tyto makra pak zajistí nejrychlejší a nejefektivnější návrh aplikace.

Buňka

Každá buňka obsahuje obvod (viz níže). Konfigurační bity pro jednotlivé MUXy a propustné brány jsou nezávislé a jsou možné všechny permutace programovatelných MUXů a propustných bran. Vn (V1-V5) je zapojeno na vertikální lokální BUS v rovinně n a Hn (H1-H5) je zapojeno na horizontálním lokálním BUSu v téže rovinně. Křížení lokál/lokál v rovinně n je dosaženo odbočením na propustné brány spojených s Vn a Hn. Ty to brány jsou otevřeny pro signály vedoucí z lokálního BUSu do buňky nebo obráceně. Signály, které vstupují do logické buňky jedním lokálním BUSem, mohou být přepnuty na jinou rovinu otevřením dvou propustných bran, což umožňuje signálům v BUSu přepínat mezi rovinyami a tím se zvyšuje směrovatelnost obvodu.

Vnitřní schéma

Cell.jpg

Buňka je vysoce konfigurovatelný logický blok se dvěma 3-vstupními LUTy (8x 1ROM), které mohou být zapojeny do jednoho 4-vstupního LUTu. To znamená, že jakákoli buňka může implementovat dvě funkce o tří vstupních proměnných nebo jednu se čtyřmi vstupními proměnnými. V každé buňce je zabudován D klopný obvod, 2-to-1 multiplexer a AND brána, která je důležitou částí každé buňky. Jednotlivé buňky jsou mezi sebou spojeny všemi směry (horizontálně, vertikálně i diagonálně) v případě zapojení cell-to-cell. Pokud je zapojení buňěk cell-to-bus, pak je každá buňka zapojena do obvodu pěti horizontálními a pěti vertikálními BUSy. V tomto případě není diagonální spojení jedntlivých buněk možné.


Zapojení v FPGA

BUScon.jpg

funkční módy jedné buňky

Syntetický mód

Je důležitý pro návrh ve VHDL nebo Verilog. Tyto nástroje pracují při velkém množství náhodných logických funkcí na jejich výstupu. 4-vstupní LUT dává efektivní náhodné logické optimalizace bez prodlev spojených s většími LUT strukturami. Výstup takové buňky může být ve formě registru, třístavový nebo zpětnou vazbou poslán zpět do jádra buňky.

Synth.jpg

Aritmetický mód

Používá se v mnoha návrzích. Jedna buňka je schopná implementovat jednobitovou sčítačku (2-vstupní sčítačka s Carry in a Carry out). Výstup buňky v tomto módu může být třístavový nebo zpětnovazební.

Arith.jpg

Zesilovací mód

Je využíván pro efektivní návrh sady zesilovačů. Takováto sada obsahuje zesilovače pracující ve vícebitových systémech. Každý zesilovač představuje sčítačku s AND bránou.

Mplier.jpg

Čítací mód

Cítače jsou základem pro téměř všechyn digitální aplikace. Jsou založeny na stavových strojích, časovacích řetězců a hodinových děliček. Čítač je v podstatě sčítačka, kde vstup představuje zárověň výstup předchozího stavu. Jednobitový čítač může být implementován v jedné buňce a jeho výstup je opět ve formě registru, třístavový nebo zpětnovazební.

Count.jpg

Třístavový (MUX) mód

Třístavový mód je využíván hlavně v telekomunikačních aplikacích, kde je potřeba data směrovat více než jednou možnou cestou. Jeho výstupu je nejčastěji ve třech stavech.

Mux.jpg

Symetrická sada buněk

Srdcem architektury FPGA je sada identických buněk, která je souvislá od jednoho konce ke druhému kromě BUS opakovačů, které jsou umístěny vždy po čtyřech buňákch. V každém křížení jednotlivých opakovačů je umístěna RAM, ke které vede přístup ze sousedních BUSů. Tyto RAM mouhou být konfigurované buď jako dvou nebo jedno-portové paměti se synchronní nebo asynchronní činností.

FPGAarray.jpg

Síť BUSů

Každá rovina BUSů má 3 BUS zdroje, jeden lokální BUS a dva expresní, které jsou spojeny přes opakovače. Každý opakovač má spojení ke dvěma sousedním lokálním a expresním segmentům. Každý lokální BUS segment překlenuje čtyři buňky a spojuje následný opakovač. Expresní BUS segmety pak překlenují osm buněk a přeskakují opakovač. Opakovače obnovují signál a mohou spojit jakékoli BUSy na stejné ploše BUSů.

BUSnet.jpg

RAM

Stanislav Zdvihal: RAM

Dvou portové 32x4 RAM bloky jsou rozprostřené po celém FPGA. 4bitový vstupní Data BUS je spojen se čtyřmi horizontálními lokálními BUSy, které vedou přes čtyři sektory řad. 4bitový výstupní Data BUS je pak spojen se čtyřmi horizontálními BUSy, které vedou přes čtyři sektory ve stejném sloupci. 5bitový výstupní Address BUS je zapojen na pět verikálních expresních BUSů ve stejném sloupci. Ain a Aout (input/output address) mění pozice v horizontálně vyrovnaných RAM blocích. RAM bloky, které jsou nejvíce nalevo v celém obvodu, je Aout umístěn na levé straně bloku a Ain na pravé. RAM bloky úplně vpravo mají Ain na levé straně bloku a Aout chybí. Tím pádem je možná tyto RAM bloky konfigurovat jen jako jednoportové a mohou být využity pouze pro jednoportové paměti. Tyto bloky pak Ain mají funkci READ/WRITE address portu a Din je obousměrný datový port.

Jeden RAM blok

R A M.jpg

Čtení a zápis těchto dvouportových RAM jsou na sobě navzájem nezávislé. Čtení je kompletně asynchronní. Pracuje na základě elektronických závor, které při načtené logické 1 pouští data zkrz a při logické 0 jsou data zadržena. Tyto závory se používají pro synchronizaci Write Address, Wrtie Enable Not a Din signály pro synchronní RAM. Každý bit dvouportové RAM je zárověň transparentní elektronická závora. První elektronická závora a paměťová závora dohromady tvoří klopný obvod. Pokud je část bytu (např. bit = 7) adresována, v LOAD je logická 1 a na WEN je logická nula, pak data proudí obvodem. Jestliže jsou všechny parametry obráceně, pak jsou data zadržena. V obvodu jsou dva hodinové MUXy kontrolované společené jedněmi hodinami. Nastavují hodiny pro synchronní RAM v případě, že jsou ve stavu logické 1 (signál CLOCK) nebo asynchronní RAM v případě, že jsou ve stavu logické 0 (signál "1"). Signál CLOCK je brán z hodinového signálu, který je hned vedle a hned nad RAM blokem. Zápisem jakékoli hodnoty do RAM clear byte během konfigurace vymaže dosavadní data uložená v RAM.

Vnitřní schéma

RAMlogic.jpg

Hodinové schéma

FPGA disponuje osmi globálními hoinovými BUSy (GCK1 - GCK8). Každý hodinový BUS je připojen ke globálním hodinovým svorkám. Jakékoli hodiny, použité v návrhu, by měly používat globální hodiny kdekoli je to možné. To lze zajistit použitím přiřazujících svorek k uzamknutí globálních hodin na definované pozice. Dále jsou v FPGA čtyři rychlé hodiny (FCK1 - FCK4) rozložené po párech vždy na okraji sloupce bloku. Každý sloupec má sloupcový a sektorový hodinový MUX. Sloupcový je vždy na vrchu sloupce a sektorový MUX je umístěn vždy na každé čtyři buňky. Sektorové hodiny mají invertující nebo neinvertující výstup. Mohou však také nabývat hodnoty "0" použitím sektorového MUXu pro minimalizaci spotřeby výkonu v sektorech, kde hodiny nejsou. Hodiny mohou být vytaženy ze sloupocových hodiny nebo ze 4. úrovně expresního BUSu. Sloupcový MUX nejvíce vlevo má dva dodatečné vstupy pro rychlé hodiny (FCK1 a FCK2), které jsou určeny výhradně pro I/O. Sloupcový MUX nejvíce vpravo má pak vstupy FCK3 a FCK4 pro stejné účely. Hodinový systém je navržen pro efektivní využití vícero hodin s nízkým hodinovým zkosením.

Clock.jpg

Set/Reset

Schéma Set/Reset je v podstatě stejné jako hodinové schéma, jen zde je pouze jeden globální reset. Specializovaný globální Set/Reset BUS může být řízen jakýmkoli uživatelským I/O kromě GCK a FCK. Automatické zařazení nástroje vybere resetovou síť s nejvíce kontakty v návrhu pro indikaci globálního resetu. Další resety jsou použity sítí expresních BUSů. Globální Set/Reset je distribuován do každého sloupce v FPGA. Podbně jako sektorový hodinový MUX je zde sektorový Set/Reset MUX na každé čtyři buňky. Pro Set/Reset sektorových sloupců je použita 5. úroveň expresního BUSu. Je však také možné použít globální Set/Reset použitím sektorového Set/Reset MUXu. Tento MUX pak zajišťuje invertovaný nebo neinvertovaný Set/Reset. Funkce Set/Reset vstupu registru je determinována bitovou konfigurací v každé buňce. Tento vstup je přednastaven na aktivní logickou 0. "Setování" nebo "resetování" registru je aynchronní.

Set Reset.jpg

Struktura I/O

FPGA disponuje třemi druhy I/O. Jsou zde Primární I/O, Sekundární I/O a Rohové I/O. Všechny okrajové buňky až na rohové mají přístup k jednomu Primárnímu I/O a ke dvěma sekundárním I/O.

Primární I/O

Každá logická buňka na okraji FPGA má přímé ortogonální spojení k Primární I/O buňce. Primární I/O je přímo propojeno k jeho přilehlému jádru buňky. Je také zapojeno do opakovačů, které jsou hned nad a pod přilehlou buňkou. Dále je Primární I/O zapojeno do BUS sítě nejbližších tří krajních buňek. Tím je tvořeno velmi výkonné uspořádání, které zajišťuje buňky s vysokorychlostním přístupem k I/O přes lokální a expresní BUSy.

PriIO.jpg

Sekundární I/O

Každá logická buňka na okraji FPGA má přímé diagonální spojení k Sekundární I/O buňce. Sekundární I/O spojuje diagonální vstupy do horní a spodní buňky a je spojeno s opakovačem. Dále je káždé Sekundární I/O zapojeno do sítě BUSů dvou nejbližších krajních buňek, což stejně jako v předchozím případě tvoří velmi výkonné uspořádání, které zajišťuje buňky s vysokorychlostním přístupem k I/O přes lokální a expresní BUSy.

SecIO.jpg

Rohové I/O

Logické buňky v rohu FPGA mají přímé spojení k pěti samostaným I/O (2x Primární I/O, 2x Sekundární I/O a jedno Rohové I/O). Tyto Rohové I/O představují speciální Sekundární I/O a jsou přístupné buď z rohové logické buňky nebo u horizontální a vertikální sítě BUSů vedoucích podél krajů obvodu. Při zahrnutí Rohových I/O má FPGA s nxn buňkami vždy 8n I/O.

CorIO.jpg

Zdroje

http://www.atmel.com/dyn/products/product_docs.asp?category_id=172&family_id=623&subfamily_id=710&part_id=2058

http://www.altera.com/products/fpga.html

http://www.actel.com/techdocs/default.aspx

http://www.invea.cz/fpga-reseni

http://amber.feld.cvut.cz/fpga/prednasky/FPGA_navrh/fpga_navrh.html

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje