Et Field-Programmable Gate Array (ofte forkortet FPGA) er et integreret kredsløb, der kan programmeres efter fremstilling til at udføre forskellige digitale funktioner. I modsætning til en almindelig logisk gate, som har en fast funktion, leveres en FPGA uden en forudbestemt funktion; den programmeres (konfigureres) af designeren, så den opfører sig som det ønskede digitale kredsløb eller system.
Grundlæggende opbygning
En moderne FPGA består af en række byggeblokke, som kan forbindes frit efter konfiguration:
- Konfigurerbare logiske blokke (CLB) eller slices, som indeholder look-up tables (LUT) og flip-flops til at implementere kombineret og sekventiel logik.
- Bram/Block RAM – indbyggede hukommelser til data og buffers.
- DSP-blokke – specialiserede enheder til hurtige multiplikationer og signalbehandling.
- I/O-blokke – konfigurerbare porte til at kommunikere med eksternt udstyr (LVDS, TTL, CMOS osv.).
- Clocking-resourcer (PLL/PLL/clock managers) til at håndtere og fordele ur-signaler.
- Routing-netværk, der forbinder de enkelte blokke efter designets krav.
Konfiguration og hukommelsestyper
FPGA'er kan være baseret på forskellige konfigurationsmetoder:
- SRAM-baserede: Populære hos Xilinx/AMD. Konfigurationen er volatil, så FPGA'en har brug for en ekstern ikke-volatil hukommelse (f.eks. Flash eller EEPROM) til at indlæse bitfilen ved opstart.
- Flash-baserede: Indeholder ikke-volatil konfigurationshukommelse på chippen, hvilket gør dem hurtigere at starte og mindre afhængige af eksterne komponenter.
- Antifuse: Permanent programmering, ofte brugt i miljøer, hvor robusthed og sikkerhed er kritisk (fx rumfart og forsvar).
Konfigurationsdata kaldes typisk en bitfil eller bitstream. Den kan indlæses via forskellige grænseflader: JTAG, SPI, SD-kort eller dedikerede konfigurationsporte.
Udviklingsværktøjer og -flow
Udvikling for FPGA foregår typisk sådan:
- Skriv designet i et hardwarebeskrivelsessprog (HDL) som VHDL, Verilog eller nyere SystemVerilog. Højniveautilgange som HLS (High-Level Synthesis) lader dig også beskrive funktionalitet i C/C++.
- Simuler designet funktionelt for at verificere opførsel før syntese.
- Syntese – HDL-koden oversættes til en netliste af logiske elementer.
- Place and route – netlisten placeres i FPGA'ens fysiske ressourcer, og forbindelser etableres.
- Generér bitfil/bitstream og programmér FPGA'en (f.eks. via JTAG eller en programmeringsadapter).
- Verificér og debug i hardware – her kan indbyggede logiske analysetools (fx vendor-IP som ILA) og eksterne scopes bruges.
Store leverandører som Xilinx/AMD (Vivado), Intel/Altera (Quartus) og Microchip tilbyder omfattende IDE'er. Der findes også åbne værktøjer som Yosys, OpenROAD og andre i en voksende open-source økosystem.
IP-kerner, soft- og hard-processor
Producenter tilbyder ofte færdige IP-kerner (intellectual property) som Ethernet-controllere, PCIe-blokke, hukommelseskontrollere eller komplette processor-kerner. Man skelner typisk mellem:
- Hard-processor: En fysisk processorimplantat på silikonen (fx ARM-kerner i SoC-FPGA'er som Zynq), som giver høj ydeevne og lavere latenstid for softwareopgaver.
- Soft-processor: En CPU beskrevet i HDL (fx MicroBlaze, Nios II), som implementeres i FPGA-logik og er mere fleksibel men typisk langsommere.
Forskelle til andre teknologier
FPGA'er adskiller sig fra andre løsninger på flere måder:
- Vs. ASIC: FPGA'er er genprogrammerbare og har kortere udviklingstid og lavere NRE (non-recurring engineering) omkostninger, men er ofte dyrere per enhed og mindre energieffektive end en specialfremstillet ASIC ved stort volumen.
- Vs. mikrocontrollere/mikroprocessorer: MCU/CPU'er kører sekventiel software; FPGA'er udfører parallel logik og kan opnå høj gennemstrømning og lav jitter i realtidssystemer. FPGA'er kan dog køre software, hvis designeren implementerer en processor-arkitektur (hard eller soft).
- Vs. CPLD/andre PLD'er: FPGA'er har typisk flere ressourcer og større fleksibilitet, mens CPLD'er kan være enklere og bevare konfigurationen uden ekstern hukommelse.
Fordele og ulemper
- Fordele: Høj fleksibilitet, mulighed for parallel behandling, hurtig prototyping, kortere time-to-market, gode til signalbehandling, netværksudstyr, AI-acceleration og embedded systemer.
- Ulemper: Højere enhedsomkostning sammenlignet med masseproducerede ASIC'er, højere effektforbrug i nogle anvendelser, kompleks udviklingsproces og behov for specialiserede værktøjer. SRAM-baserede FPGA'er kræver desuden konfigurationshukommelse ved hver opstart.
Særlige emner og avancerede funktioner
- Partiel rekonfiguration: Nogle FPGA'er understøtter at rekonfigurere dele af designet mens resten fortsætter drift, hvilket giver fleksibilitet i ressourcestyring.
- Bitstream-sikkerhed: Kryptering og autentificering af konfigurationsbitstreams beskytter intellektuel ejendom og forhindrer uautoriseret omkonfiguration.
- Ydeevneoptimeringer: Brug af dedikerede DSP-blokke, BRAM og clock-domænestyring kan drastisk øge præstation i realtids- og signalbehandlingsopgaver.
Typiske anvendelser
FPGA'er anvendes bredt i områder som telekommunikation, netværk, datacentre (hardwareacceleration), industristyring, medicinsk udstyr, forsvar og rumfart, video- og billedbehandling samt forskning og uddannelse. De er særlig værdifulde, hvor krav om lav latenstid, parallel behandling eller hurtig iteration af hardwaredesign er vigtige.
Samlet set er FPGA'er kraftfulde og fleksible digitale byggeklodser, som lader ingeniører skræddersy hardwarefunktionalitet uden at fremstille specialiserede chips. Valget af FPGA-type og udviklingsmetode afhænger af krav til ydeevne, pris, robusthed og udviklingstid.

