Hvad er FPGA (Field-Programmable Gate Array)? Definition og forklaring

Lær hvad en FPGA (Field‑Programmable Gate Array) er — funktion, programmering, forskel fra mikrocontroller, HDL (VHDL/Verilog) og praktiske anvendelser i rekonfigurerbare digitale kredsløb.

Forfatter: Leandro Alegsa

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.

Zoom


Intern struktur

FPGA'er er generelt bygget på programmerbare logikelementer og programmerbare forbindelser. En af logikelementernes byggesten er en programmerbar opslagstabel (LUT). En LUT kan programmeres til at udstede en hvilken som helst værdi på baggrund af indgangsværdier. På denne måde kan en LUT programmeres til at være en hvilken som helst type logik med det samme antal ind- og udgange. F.eks. kan en LUT med 2 indgange og 1 udgang programmeres til at emulere logikken i en AND, OR, NAND, NOR, XOR osv. med 2 indgange. Udgangen af denne LUT kan enten gemmes ved hjælp af et register eller forbindes med indgangen til andre LUT'er. Ved hjælp af en programmerbar mux kan FPGA'en programmeres til at vælge det registrerede eller ikke-registrerede output. Denne kombination af en LUT, et register og en mux er den generelle struktur for et logisk element.

Til at forbinde disse logiske elementer sammen anvendes pass-transistorer. Transistorerne kan programmeres til enten at forbinde et signal eller ej, hvilket giver FPGA'en mulighed for at forbinde logiske elementer meget specifikt. Hvis f.eks. udgangen af et logikelement skal tilføre indgangen til et andet logikelement, kan pass-transistoren programmeres til at forbinde disse to ledninger sammen og matche den specificerede logik. Mellem logikelementerne og pass-transistorerne kan en compiler tage en hardwarebeskrivelse fra en HDL, skabe logikken for logikelementerne og forbinde dem sammen ved hjælp af pass-transistorerne.

Spørgsmål og svar

Spørgsmål: Hvad er et FPGA (field-programmable gate array)?


A: En FPGA (field-programmable gate array) er en elektronisk komponent, der anvendes til at opbygge rekonfigurerbare digitale kredsløb. Den har en udefineret funktion på fremstillingstidspunktet og skal programmeres eller rekonfigureres, før den kan bruges i et kredsløb.

Spørgsmål: Hvordan adskiller en FPGA sig fra en logisk gate?


Svar: En FPGA adskiller sig fra en logisk gate, fordi en logisk gate har en fast funktion, mens en FPGA har en udefineret funktion på fremstillingstidspunktet.

Spørgsmål: Hvilken type integreret kredsløb er en FPGA?


Svar: En FPGA er et integreret kredsløb i kategorien programmerbare logiske enheder eller PLD'er.

Spørgsmål: Hvilke ulemper er der ved at bruge FPGA'er i forhold til andre PLD'er?


A: En ulempe ved at bruge FPGA'er i forhold til andre PLD'er er, at de ikke husker deres design, når strømmen afbrydes, så de har brug for en separat konfigurationshukommelseschip, som indeholder designet. De er også dyrere end andre typer PLD'er.

Spørgsmål: Hvordan programmerer man en FPGA?


A: For at programmere en FPGA bruger ingeniører ingeniørerne teknisk software til Windows eller Linux til at udvikle design skrevet i hardware beskrivelsessprog som VHDL og Verilog. Softwaren oversætter derefter denne kode til de logikelementer, der er tilgængelige på de valgte FGPA'er, og placerer dem med place and route-processer, som skaber en bitfil, der kan programmeres enten i konfigurationshukommelsen eller direkte i selve FGPA'en med en USB-programmør, der er tilsluttet dens JTAG-port.

Spørgsmål: Er mikroprocessorer og mikrocontrollere magen til FGPA'er?


A: Nej, mikroprocessorer og mikrocontrollere er forskellige fra FGPA'er, fordi de i deres grundform ikke kan køre software; kun når de får en konfiguration, der indeholder processorarkitektur, har de denne evne.


Søge
AlegsaOnline.com - 2020 / 2025 - License CC3