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.