A Field-Programmable Gate Array (gyakran rövidítve FPGA) egy olyan rekonfigurálható integrált áramkör, amelyet digitális logikai funkciók megvalósítására használnak. Ellentétben egy egyszerű logikai kapuval vagy rögzített funkciójú áramkörrel, az FPGA funkcionalitása nem gyártáskor dől el: a felhasználó a kész eszköz konfigurálásával határozza meg, hogy milyen logikai áramköröket valósít meg benne. Ez lehetővé teszi nagyfokú rugalmasságot és újraprogramozhatóságot.
Működés és konfiguráció
Az FPGA-k központi gondolata, hogy sok kis, általában programozható logikai egységből állnak össze, amelyeket összekötő útvonalak (routing) hálózata köt össze. Az eszköz működéséhez először egy konfigurációs fájlt (bitfájlt) kell betölteni az FPGA-ba. Sok FPGA SRAM-alapú, ami azt jelenti, hogy a konfigurációt egy külön, nem felejtő (non-volatile) memóriából töltik be a tápfeszültség bekapcsolásakor; más típusok (például flash vagy antifuse) nem igényelnek külön külső konfigurációs memóriát, mert maguk az FPGA cellái nem felejtőként tárolják a beállítást.
Alapvető építőelemek
- LUT (Look-Up Table): kis táblázat, amely egy adott bemenetre kimenetet szolgáltat – gyakorlatilag univerzális logikai kapu.
- Flip-flop / regiszter: szinkron tárolóelem a soros/futásállapotokhoz.
- CLB/Logic Block: LUT-okból és regiszterekből összeálló egység.
- Belső routing hálózat: a logikai blokkok összekötésére szolgál.
- BRAM (blokkmemória): beépített RAM memóriablokkok, amelyek nagyobb adatmennyiség lokális tárolására szolgálnak.
- DSP slice: speciális egységek, amelyek gyors szorzásra, MAC (Multiply–Accumulate) műveletekre vannak optimalizálva—hasznos jelek és számításgyorsításhoz.
- Órajelek és PLL/MMCM: órajelkezelő egységek (fázis-szinkronizálás, osztás, szorzás).
- I/O blokkok: külső jelekhez való illesztés (támogatott szabványok: LVCMOS, LVDS stb.).
Tervezési folyamat
Az FPGA-fejlesztés tipikus lépései:
- Feladat definiálása — mit kell az FPGA-nak megvalósítania?
- Tervezés HDL-ben — a digitális áramkörök leírása hardverleíró nyelvekkel, leggyakrabban VHDL, Verilog vagy SystemVerilog.
- Szintézis — a HDL-kód átalakítása a cél FPGA logikai építőelemeire (LUT-ok, regiszterek stb.).
- Place & Route (elhelyezés és útvonalvezetés) — a logikai elemek FPGA-n belüli fizikailag optimális elhelyezése és összekötése.
- Időzítési elemzés és optimalizálás (timing closure) — biztosítani kell, hogy a jelek késleltetése megfeleljen az órajelek követelményeinek.
- Bitfájl generálása és betöltése — a végső bináris konfigurációs fájl (bitstream) programozható az FPGA-ba vagy a konfigurációs memóriába (pl. JTAG, USB-programozó vagy boot flash).
Konfigurációs módok, biztonság és részleges újraprogramozás
Az FPGA-k lehetnek volatilis (SRAM-alapú), ilyenkor szerver vagy flash tárolja a bitfájlt a bekapcsolás előtti betöltéshez, illetve léteznek non-volatile megoldások (on-chip flash, antifuse). Sok modern FPGA támogatja a részleges újraprogramozást, ami lehetővé teszi, hogy a rendszer működés közben, csak egy részt cseréljen anélkül, hogy az egész eszközt újraindítanák. A bitstreamek gyakran titkosíthatók a jogosulatlan másolás és visszafejtés ellen (bitstream encryption).
FPGA vs. mikroprocesszor/mikrokontroller
Az FPGA alapvetően nem egy processzor: nem "futtat" szoftvert a megszokott értelemben, hanem hardware-szintű logikát valósít meg. Természetesen lehetséges processzormagok (soft core) implementálása HDL-ben az FPGA-n (például MicroBlaze, Nios II vagy RISC-V soft core-ok), illetve sok FPGA tartalmaz beépített ("hard") processzormagot is, ami egy teljes rendszert (SoC) képes ellátni.
Gyakori alkalmazások
- Kommunikációs rendszerek (magas sebességű interfészek, protokollvezérlők).
- Jelfeldolgozás, szoftveres radio (SDR), video- és képfeldolgozás.
- Gyorsító hardverek (hardware acceleratorok) például AI/ML, kriptográfia, adatbázis-gyorsítás.
- Prototipizálás és ASIC-verifikáció — gyorsan kipróbálható egy hardverterv működése.
- Ipari vezérlés, robotika, orvosi eszközök, katonai és űripari alkalmazások.
Előnyök és hátrányok
- Előnyök: nagy rugalmasság, újraprogramozhatóság, párhuzamos működés, alkalmas speciális számítások gyorsítására.
- Hátrányok: általában drágább egységárban az egyszerű mikrokontrollerekhez képest, az SRAM-alapú FPGA-k volatilisak, és a fejlesztéshez speciális eszközök és ismeretek szükségesek; magasabb fogyasztás bizonyos alkalmazásoknál.
Gyártók és fejlesztői eszközök
Néhány ismert FPGA-gyártó: AMD Xilinx (korábbi Xilinx), Intel (korábban Altera), Lattice, Microchip/Microsemi. Minden gyártó saját fejlesztőszoftverrel rendelkezik, például Xilinx Vivado, Intel Quartus, Lattice Diamond. Emellett léteznek nyílt forráskódú eszközök is, mint a Yosys (szintézis), nextpnr (place & route), GHDL (VHDL szimuláció), amelyek egyre használhatóbb alternatívát kínálnak bizonyos eszközökhöz.
Fejlesztés, hibakeresés és tesztelés
A fejlesztés során fontos eszközök: szimulátorok az HDL-kód ellenőrzéséhez, logikai analizátorok és beágyazott hibakeresők (például a Xilinx ILA – Integrated Logic Analyzer) a futó design belső jeleinek megfigyelésére, JTAG az eszköz programozásához és debugolásához. A időzítési problémák megoldása gyakran iteratív folyamat, amely során constraints (például SDC fájlokban megadott időzítési korlátok) használatával finomhangolják a tervezést.
Tippek kezdőknek
- Kezdj egyszerű példákkal: LED villogtatás vagy egyszerű logikai műveletek HDL-ben.
- Tanulj meg egy HDL-t (VHDL vagy Verilog) és a hozzá tartozó szimulációs eszközöket.
- Használj fejlesztői kitet (FPGA dev board), amelyek tartalmaznak USB-programozást, LED-eket, kapcsolókat és néhány interfészt a kísérletezéshez.
- Ismerkedj meg a szintézis és a place & route fogalmával, valamint az időzítési követelményekkel.
Összefoglalva: az FPGA-k rendkívül sokoldalú és erős eszközök digitális rendszerek tervezéséhez. Megfelelő ismeretekkel és eszközökkel lehetővé teszik testreszabott, nagy teljesítményű hardver- és szoftver-hybrid megoldások létrehozását.

