Főmenü megnyitása

Módosítások

nincs szerkesztési összefoglaló
[[Fájl:Altera-StratixIIGX-FPGA.jpg|bélyegkép|300px|Egy [[Altera]] Stratix II GX FPGA.]]
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 eszköz|programozható logikai]] (programmable logic) komponenseket és programozható összeköttetéseket tartalmaz.
olyan [[félvezető]] eszköz, amelyik "logikai blokk"-oknak nevezett [[programozható logikai eszköz|programozható logikai]] (programmable logic) komponenseket és programozható összeköttetéseket tartalmaz.
 
== Jellemzői ==
Az FPGA logikai blokkok úgy programozhatók, hogy azok olyan [[logikai kapu]]k funkcionalitásával rendelkezzenek, mint az [[logikai kapu#Logikai kapu-típusok|ÉS]] ([[AND]]) és [[logikai kapu#Logikai kapu-típusok|kizáró VAGY]] ([[Logikai kapu|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ű [[Flip-flop (elektronika)|flip-flopok]], vagy akár teljes memóriablokkok.
Az FPGA logikai blokkok úgy programozhatók, hogy azok olyan [[logikai kapu]]k funkcionalitásával
rendelkezzenek, mint az [[logikai kapu#Logikai kapu-típusok|ÉS]] ([[AND]]) és
[[logikai kapu#Logikai kapu-típusok|kizáró VAGY]] ([[Logikai kapu|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ű [[Flip-flop (elektronika)|flip-flopok]], vagy akár teljes memóriablokkok.
 
[[Image:FPGA cell example.png||400px|thumb|center|Egy logikai cella vázlata (LUT: logikai függvénygenerátor v. igazságtábla, ''lookup table'', FA: teljes összeadó, ''full adder'', DFF: D-típusú flip-flop)]]
 
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ó]]".
– ebből jön a neve: "[[a helyszínen programozható]]".
 
Az FPGAk általában lassúbbak, 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
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.
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.
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]] [[processzor regiszter|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.
[[processzor regiszter|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.
hogy az eszköz egyik részét újraprogramozzuk, miközben másik részekben folytatódik a program futtatása.
 
== Modern fejlesztések ==
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.
"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 [[Atmel AVR|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 processzor]]okat 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 [[CPU]]k, amelyek átkonfigurálják magukat, hogy jobban alkalmazkodjanak az éppen végrehajtandó feladathoz. A [[Mitrionics]] [[virtuális processzor]]a 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.
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 [[CPU]]k, amelyek átkonfigurálják magukat, hogy jobban alkalmazkodjanak az éppen végrehajtandó feladathoz. A [[Mitrionics]] [[virtuális processzor]]a 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ó [[cPU|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.
szolgáltatnak ugyanazon a lapkán.
 
== Szoftver processzorok ==
[[digitális jelfeldolgozás]] ([[DSP]]), [[szoftveres rádió]], [[űrkutatás]]i és [[hadsereg|katonasági]] rendszerek, [[alkalmazás-specifikus integrált áramkör|ASIC]] prototípuskészítés, [[orvosi képalkotás]], [[számítógépes látás]], [[beszédfelismerés]], [[kriptográfia]], [[bioinformatika]], [[emulátor|számítógép hardver emuláció]].
 
Az FPGA-k eredetileg a [[CPLD]]-k versenytársai voltak, azonos versenypályán, a [[Nyomtatott áramköri lap|NYÁKok]] [[összekötő logika|ö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 rendszer|egylapkás teljes rendszerként]] adják el.
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ás]]i alkalmazásokban, ahol számítás (például [[Fourier-transzformáció#Gyors_Fourier-transzformáció|FFT]] vagy [[konvolúció]]) javarészét az FPGA végzi a [[CPU|mikroprocesszor]] helyett. Az FPGA-k alkalmazása ilyen jellegű számítási feladatokra [[újrakonfigurálható számítás]] néven ismert.
[[Fourier-transzformáció#Gyors_Fourier-transzformáció|FFT]] vagy [[konvolúció]]) javarészét az FPGA végzi a [[CPU|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.
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 (programozás)|forráskód]] legkisebb változása után is.
ahol is 4-8 órát kell várni a [[Forráskód (programozás)|forráskód]] legkisebb változása után is.
 
== Külső hivatkozások ==
69 449

szerkesztés