Ein FPGA (Field Programmable Gate Array) ist ein integrierter Schaltkreis, dessen digitale Schaltung erst nach der Fertigung geladen wird. Statt einer festen Funktion besitzt er ein Feld aus konfigurierbaren Logikbausteinen, die per Bitstream zu nahezu beliebigen Schaltungen verbunden werden.
Aufbau: LUTs, Flipflops und Routing
Das Herz eines FPGAs bilden Lookup-Tables (LUTs) und Flipflops, die in Slice-Blöcken zusammengefasst sind. Eine LUT kann eine beliebige Wahrheitstabelle mit wenigen Eingängen realisieren. Hinzu kommen Block-RAM für Speicher, DSP-Slices für Multiplikation und Addition sowie programmierbare Routing-Leitungen und I/O-Bänke, die alle Blöcke verbinden.
Konfiguration per Bitstream
Die gewünschte Schaltung wird in einer Hardware-Beschreibungssprache wie VHDL oder Verilog entworfen, synthetisiert und zu einem Bitstream übersetzt. Diesen Bitstream lädt der FPGA beim Start aus einem externen Speicher (etwa SPI-Flash). Da die Konfiguration flüchtig sein kann, ist im Gegensatz zum CPLD eine Boot-Phase nötig.
Anwendungen
- Prototyping und Emulation vor der ASIC-Fertigung
- Netzwerk- und Paketverarbeitung mit geringer Latenz
- Signalverarbeitung und DSP-Aufgaben in Echtzeit
- KI-Beschleunigung mit anpassbarer Datenpfad-Hardware
FPGA im Vergleich zu CPLD und ASIC
Gegenüber einem CPLD bietet der FPGA deutlich mehr Logikressourcen und Speicher, benötigt aber eine externe Konfiguration und hat weniger vorhersagbare Laufzeiten. Ein ASIC erreicht höhere Leistung und geringere Stückkosten, ist aber nur mit hohen Einmalkosten fertigbar. Wer Flexibilität und schnelle Anpassung braucht, wählt den FPGA.