Polní programovatelné hradlové pole (zkratka FPGA – Field-Programmable Gate Array) je integrovaný obvod určený k vytváření rekonfigurovatelných digitálních logických obvodů. Na rozdíl od pevně daných logických hradel nebo standardních integrovaných obvodů má FPGA po výrobě nedefinovanou funkci a teprve po nahrání konfigurace vykonává konkrétní digitální návrh. Proto se FPGA používají tam, kde je potřeba flexibilita, rychlé prototypování nebo vysoký paralelismus výpočtů.
Definice a základní princip
FPGA patří do širší kategorie programovatelných logických zařízení (PLD). Základní myšlenka je, že návrhář vytvoří popis hardwaru (např. v jazyce VHDL nebo Verilog), tento popis se přeloží do konfiguračních dat (bitstream) a tato data nakonfigurují vnitřní prvky FPGA tak, aby spolu vytvořily požadovaný digitální obvod.
Architektura FPGA – hlavní stavební bloky
Typické FPGA obsahuje několik druhů pevně integrovaných prvků, které spolu tvoří flexibilní platformu:
- Logické bloky (CLB / Logic Cells / Logic Elements) – obsahují LUT (lookup table), které realizují logické funkce, a flip‑flopy pro ukládání stavů.
- Bloky paměti (BRAM) – vestavěné paměti RAM pro ukládání dat, FIFO apod.
- DSP bloky – specializované výpočetní jednotky pro rychlé násobení a akumulaci (efektivní v signálovém zpracování).
- IO bloky – rozhraní pro připojení k vnějším signálům, s možností přizpůsobit napěťové hladiny a rychlost.
- Rychlé transceivery – pro vysokorychlostní sériové rozhraní (PCIe, Ethernet, serial links).
- Hodiny a PLL/MMCM – generátory a rozdělovače hodinových signálů.
Konfigurace a typy paměti
Mnoho moderních FPGA (zejména SRAM‑based) je po vypnutí napájení volatile, tedy nepamatuje si konfiguraci. Proto se konfigurace ukládá do externí nebo interní nevolatilní paměti (flash, SPI‑EEPROM) a při startu se konfigurační data nahrají do FPGA. Existují ale i FPGA s vestavěnou nevolatilní konfigurací (např. některé flash‑based či antifuse FPGA), které konfiguraci uchovají i bez externího čipu.
Konfigurace lze do FPGA nahrát několika způsoby:
- přes JTAG (běžné pro vývoj a programování),
- přes rozhraní SPI / Quad‑SPI z externí flash paměti při bootu,
- z SD karty nebo jiného bootovacího média,
- přímým zápisem z hostitelského zařízení (např. USB programátor).
Vývojní proces a nástroje
Standardní vývojní postup pro FPGA zahrnuje tyto kroky:
- popis návrhu v HDL (nejčastěji VHDL nebo Verilog),
- synthése – překlad HDL do sítě logických prvků (LUT, FF) a vytvoření netlistu,
- implementace (place & route) – umístění prvků na fyzické zdroje FPGA a propojení tras,
- časování (timing analysis) – ověření, že signály stihnou přechody při daných frekvencích,
- generování bitstreamu – vytvoření souboru pro konfiguraci FPGA,
- programování FPGA a testování v cílovém systému.
Výrobci FPGA (např. Xilinx/AMD, Intel/Altera, Microchip/Actel) poskytují proprietární nástroje (Vivado, Quartus, Libero atd.). Vedle nich existují nástroje třetích stran, open‑source projekty a technologie jako HLS (High-Level Synthesis), které umožňují generovat hardware z vyšších jazyků (C/C++), nebo použití frameworků jako OpenCL pro akceleraci.
Porovnání s mikroprocesory a CPLD
FPGA nejsou primárně určena ke spouštění software – samotné FPGA bez konfigurace „nic nespouští“. Je-li však do FPGA implementována procesorová architektura (hard‑core nebo soft‑core), může tento procesor spouštět software stejně jako běžný mikroprocesor.
Některé rozdíly:
- Paralelismus: FPGA umožňuje zcela paralelní realizaci logiky, zatímco CPU vykonává instrukce sekvenčně (i když s vícejádrovými a SIMD technikami).
- Flexibilita: FPGA lze rekonfigurovat a implementovat libovolnou logiku; CPLD mají jednodušší architekturu a menší kapacitu.
- Výkon pro specifické úlohy: pro úlohy typu signálové zpracování, DSP a šifrování často FPGA překonávají CPU/GPU díky paralelismu a specializovaným blokům.
Výhody a nevýhody
- Výhody
- Vysoký paralelismus a možnost hardwarové akcelerace algoritmů.
- Rychlé prototypování a možnost aktualizace funkce bez změny HW.
- Integrace různých rozhraní a specializovaných bloků v jednom čipu.
- Nevýhody
- Vyšší cena a spotřeba než u velmi jednoduchých PLD nebo u ASIC při velkých sériích (ASIC může být při masové výrobě levnější).
- Složitější návrhový proces a potřeba zvládnout časování a signálovou integritu.
- U většiny FPGA potřeba externí nevolatilní paměti pro ukládání konfigurace (u SRAM‑based typů).
Typické použití
FPGA se uplatní v široké škále aplikací:
- rychlé síťové prvky (switches, smart NICs),
- zpracování signálu a obrazu (radary, SDR – software‑defined radio),
- akcelerace výpočtů (datová centra, strojové učení),
- řízení průmyslových systémů a robotiky,
- obrana a kosmonautika (radiation‑hard verze),
- prototypování a emulace ASIC před výrobou.
Pokročilé možnosti
Moderní FPGA nabízejí i pokročilé funkce:
- Partial reconfiguration – částečná rekonfigurace části FPGA za běhu bez přerušení ostatních funkcí.
- Bitstream encryption – ochrana návrhu šifrováním bitstreamu proti kopírování.
- Hard‑core procesory integrované přímo v křemíku (např. ARM jádra v SoC FPGA) pro kombinaci softwaru a hardwaru na jednom čipu.
- Design reuse / IP cores – výrobci a třetí strany poskytují osvědčené bloky (Ethernet řadiče, PCIe, procesorové jádra atd.), které zrychlují vývoj.
Jak začít s FPGA
Pro začátečníky doporučuji:
- pořízení levného vývojového kitu od renomovaného výrobce,
- studium základů VHDL/Verilog a jednoduchých příkladů (blikání LED, počítadlo, UART),
- seznámení se s nástroji výrobce (synthèse → implementace → programování přes JTAG/USB),
- využití online tutoriálů a komunit (fóra, příklady na GitHubu).
FPGA jsou silným prostředkem pro návrh vysoce výkonných, flexibilních a často jedinečných elektronických řešení. Správným výběrem typu FPGA, znalostí návrhových nástrojů a postupným učením se lze rychle přesunout od jednoduchých projektů k náročným aplikacím v průmyslu i výzkumu.

