Field-programmable gate array
![](http://upload.wikimedia.org/wikipedia/commons/3/37/Altera-StratixIIGX-FPGA.jpg)
A field-programmable gate array (a felhasználás helyén programozható logikai kapumátrix) olyan félvezető eszköz, amelyik "logikai blokk"-oknak nevezett programozható logikai (programmable logic) komponenseket és programozható összeköttetéseket tartalmaz.
Jellemzői
[szerkesztés]Az FPGA logikai blokkok úgy programozhatók, hogy azok olyan logikai kapuk funkcionalitásával rendelkezzenek, mint az ÉS (AND) és kizáró VAGY (XOR) kapuk, vagy akár olyan bonyolultabb funkcionalitással (kombinációs logika), mint egy dekóder vagy egy matematikai függvény megvalósítása. A legtöbb FPGA-ban a logikai blokkok memóriaelemeket is tartalmazhatnak, amelyek lehetnek egyszerű flipflopok, vagy akár teljes memóriablokkok.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/FPGA_cell_example.png/400px-FPGA_cell_example.png)
A programozható összeköttetések hierarchiája lehetővé teszi, hogy logikai blokkokat a rendszertervező által igényelt módon kapcsoljunk össze, egy egy-lapkás programozható breadboard-hoz hasonlóan. A logikai blokkokat és összeköttetéseiket a felhasználó vagy a tervező programozhatja, az FPGA legyártása után, hogy abban logikai függvényeket valósítson meg – ebből jön a neve: "a helyszínen programozható".
Az FPGAk általában lassabbak, mint alkalmazás-specifikus integrált áramkör (ASIC) megfelelőik, nem is tudnak olyan bonyolult tervezést kezelni, és nagyobb teljesítményt vesznek fel (bármilyen félvezetőgyártási technológia esetén). Előnyük viszont a rövidebb piacra kerülési idő, a helyszíni újraprogramozhatóság (például hibajavítás) és az alacsonyabb költség. A gyártók szállíthatnak olcsóbb, kevésbé flexibilis FPGA változatokat is, amelyek a tervezés lezárása után már nem módosíthatók (OTP – One Time Programmable, egyszer programozható logika). Ilyenkor a fejlesztést hagyományos FPGA-kon végzik, majd a végeredményt átviszik OTP-re
Az egyszerűbb tervezésre egy másik lehetőség a komplex programozható logikai eszközök (CPLDs) használata.
Története
[szerkesztés]Az FPGA történetének gyökerei az 1980-as évek elejének komplex programozható logikai eszközeihez (CPLDs) nyúlnak vissza. Egy Xilinx társalapító találta fel 1984-ben a helyszínen programozható logikai tömböt. A CPLDk és FPGAk viszonylag nagy számú programozható logikai elemet tartalmaznak. A CPLDk logikai kapusűrűsége néhány ezertől néhány tízezerig terjedő logikai kapuval ekvivalens, míg az FPGAk esetén ez a tartomány néhány tízezertől néhány millióig terjed.
A CPLDk és FPGAk között elsődlegesen architekturális különbség van. A CPLDk viszonylag korlátozott szerkezetűek, amelyek egy vagy több programozható szorzatösszeg logikai tömbből állnak, amelyek viszonylag kis számú órajelvezérelt regisztert (clocked register) hajtanak meg. Ez eredményezi a kisebb flexibilitást, előnye viszont a kiszámíthatóbb időkésés és a magasabb logikai/kapcsolat arány. Másrészt, az FPGAs architektúrákban az összekapcsolhatóság dominál. Ez sokkal flexibilisebbé teszi azokat (az ezekkel gyakorlatban megvalósítható tervezések nagysága szempontjából), de éppen ezért sokkal bonyolultabb is ezekre tervezni.
Egy másik lényeges különbség a CPLDk és FPGAk között, hogy a legtöbb FPGA-ban vannak magasabb szintű funkciók (mint például összeadók és szorzók) és beágyazott memóriák.
Egyes FPGAk rendelkeznek a részleges újrakonfigurálás képességével is, ami lehetővé teszi, hogy az eszköz egyik részét újraprogramozzuk, miközben másik részekben folytatódik a program futtatása.
Modern fejlesztések
[szerkesztés]Egy jelenlegi trend, hogy a durva-szerkezetű architektúrát egy lépéssel továbbfejlesszük olyan módon, hogy a hagyományos FPGAk logikai blokkjait és kapcsolódásait kombináljuk mikroprocesszorokkal és megfelelő perifériákkal, hogy egy teljes értékű "rendszer egy programozható lapkán" legyen belőle. Ilyen hibrid technológiákra jó példákat látunk a Xilinx Virtex-II PRO és Virtex-4 rendszerekben, amelyek egy vagy több PowerPC processzort tartalmaznak az FPGA logikai rendszerébe beágyazva. Egy másik ilyen eszköz az Atmel FPSLIC, amelyik egy AVR processzort használ az Atmel programozható logikai architektúrájával kombinálva.
Egy másik lehetséges megközelítés, hogy hard-macro processzorokat használnak arra, hogy olyan "soft" processzormagot hozzanak létre, amelyet at FPGA logikán belül valósítanak meg. (lásd "Soft processzorok", alább).
Mint fentebb említettük, sok modern FPGA rendelkezik azzal a képességgel, hogy "futási időben" programozható és hogy ez az újrakonfigurálható számítás vagy újrakonfigurálható rendszer ötletéhez vezetett – ezek olyan CPUk, amelyek átkonfigurálják magukat, hogy jobban alkalmazkodjanak az éppen végrehajtandó feladathoz. A Mitrionics virtuális processzora jó példa egy olyan újrakonfigurálható soft processzorra, amit FPGA-val implementáltak. Bár ez nem támogatja a futási idő alatti dinamikus újrakonfigurálást, de ehelyett alkalmazkodik egy bizonyos programhoz.
Emellett új, nem-FPGA architektúrák is elkezdtek terjedni. Az olyan szoftveresen konfigurálható mikroprocesszorok, mint a Stretch S5000, hibrid megközelítést használnak: egy processzormag tömböt és egy FPGA-szerű programozható magot szolgáltatnak ugyanazon a lapkán.
Szoftver processzorok
[szerkesztés]Sokféle szoftver mikroprocesszor mag van forgalomban, zárt és nyílt forrású egyaránt. Egy adott CPU architektúra esetén egy hardver (beágyazott) CPU mag működésben túlszárnyalja a megfelelő szoftver CPUt, (azaz, a programozható logikával implementált CPUt). A következő lista semmilyen szempontból sem tekinthető teljesnek.
Processzor | Fejlesztő | Forráskód | Támogatott busz | Megjegyzés | Project honlap |
---|---|---|---|---|---|
TSK3000 | Altium | WishBone | 32 bites RISC Módosított Harvard architektúra | Altium TSK3000[eredeti link] | |
TSK51x/52x | Altium | WishBone/80C51 | 8 bites 80C51 kompatibilis, túlszárnyalja a legtöbb 80C51 származékot | TSK51x[eredeti link] TSK52x[eredeti link] | |
TSK80 | Altium | Z80 bus | 8 bites, optimalizált Z80 utasításkészlettel kompatibilis | TSK80[eredeti link] | |
MicroBlaze | Xilinx | PLB, OPB, FSL, LMB | Xilinx MicroBlaze | ||
AEMB | Shawn Tan | Wishbone | MicroBlaze EDK 3.2 kompatibilis Verilog mag | AEMB | |
PicoBlaze | Xilinx | Xilinx PicoBlaze | |||
Nios, Nios II | Altera | Altera Nios II | |||
Mico32 | Lattice | LatticeMico32 | |||
OpenFire | Virginia Tech CCM Lab | OPB, FSL | Binárisan kompatibilis a MicroBlaze-zel | VT OpenFire | |
PacoBlaze | Pablo Bleyer | Kompatibilis a PicoBlaze processzorokkal | PacoBlaze |
Alkalmazások
[szerkesztés]Az FPGA alkalmazási területe egyre növekszik. Néhány jellemző terület: digitális jelfeldolgozás (DSP), szoftveres rádió, űrkutatási és katonasági rendszerek, ASIC prototípuskészítés, orvosi képalkotás, számítógépes látás, beszédfelismerés, kriptográfia, bioinformatika, számítógép hardver emuláció.
Az FPGA-k eredetileg a CPLD-k versenytársai voltak, azonos versenypályán, a NYÁKok összekötő logikája területén. Amint azonban méretük, képességeik és sebességük növekedett, mind több és nagyobb feladatot vettek át és elérték azt az állapotot, amikor némelyiket már egylapkás teljes rendszerként adják el.
Az FPGA-kat különösen gyakran használják olyan algoritmikus területeken, amelyeken jól használhatók az architektúrájuk által kínált masszív párhuzamosság. Az egyik ilyen terület kriptográfiai algoritmusokban a kódfeltörés, különösen a nyers erő módszerű támadások esetén.
Az FPGA-kat növekvő mértékben használják a hagyományos nagy teljesítményű számítási alkalmazásokban, ahol számítás (például FFT vagy konvolúció) java részét az FPGA végzi a mikroprocesszor helyett. Az FPGA-k alkalmazása ilyen jellegű számítási feladatokra újrakonfigurálható számítás néven ismert.
Az FPGA logikai erőforrásaiból eredő párhuzamosság jelentős számítási teljesítményt tesz lehetővé még 500 MHz alatti órajelsebesség esetén is. Például, az FPGA-k jelenlegi (2010-es) generációja több mint 2000 egyszeres pontosságú 48 bites egységet tud megvalósítani, amelyek mindegyike minden egyes órajelre képes egy eredményt kiszámítani. Az FPGA flexibilitása még nagyobb teljesítményt is lehetővé tesz, ha a párhuzamos aritmetikai egységek számának megnövelése kedvéért engedünk a számábrázolási formátum pontosságából és számábrázolási tartományából. Ez vezetett a feldolgozás egy új típusához (újrakonfigurálható számítás), amelyekben az időintenzív feladatokat a szoftver letölti az FPGA-ba.
Az FPGA-k felhasználását nagy teljesítményű számításokban jelenleg az korlátozza, hogy az FPGA-k tervezése sokkal bonyolultabb, mint a hagyományos szoftveré és extrém hosszúságú fejlesztési idők alatt valósítható meg a jelenlegi tervezőeszközökkel, ahol is 4-8 órát kell várni a forráskód legkisebb változása után is.