Uživatel:Divisji2

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

Jiří Diviš

Obsah

FPGA

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

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

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

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.

R A M.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