FPGA – Feldprogrammierbares Gate-Array: Definition, Aufbau & Anwendungen

FPGA erklärt: Definition, Aufbau & Anwendungen — wie rekonfigurierbare Gate-Arrays arbeiten, Unterschiede zu CPUs, Konfiguration per VHDL/Verilog und typische Einsatzgebiete.

Autor: Leandro Alegsa

Ein feldprogrammierbares Gate-Array (kurz FPGA) ist eine integrierte Schaltung, mit der sich digitale Logikschaltungen nachträglich konfigurieren und damit rekonfigurieren lassen. Anders als feste Logikgatter oder ASICs hat ein FPGA bei der Herstellung keine fest programmierte Funktion—seine Schaltung entsteht erst durch das Aufspielen einer Konfiguration (Bitstream).

Aufbau und Architektur

Moderne FPGAs bestehen aus mehreren wiederkehrenden Bausteinen und spezialisierten Komponenten:

  • LUTs (Lookup Tables): Implementieren beliebige Combinational-Logic-Funktionen.
  • Flip‑Flops / Register: Speichern Zustände und ermöglichen synchronisierte Logik.
  • CLBs / Logic Blocks: Gruppen aus LUTs, Registern und lokaler Routing-Logik.
  • Routing-Matrix: Verbindet die Logikblöcke über programmierbare Switches.
  • Block RAM / BRAM und verteilte RAMs: On‑Chip-Speicher für Daten und FIFO‑Puffer.
  • DSP‑Slices: Harte Hardwareblöcke für Multiplikation, MACs und Signalverarbeitung.
  • On‑Chip-Clock-Management (PLL, MMCM): Erzeugung und Distribution stabiler Taktsignale.
  • SerDes/Transceiver: Hochgeschwindigkeits-Schnittstellen für PCIe, Ethernet, USB, Serial‑Links usw.
  • I/O‑Blöcke: Konfigurierbare Ein-/Ausgangspins mit verschiedenen Spannungsstandards.

Konfiguration und Speicher

Die meisten FPGAs benutzen volatile SRAM‑Zellen zur Speicherung ihrer Konfiguration; das heißt, die Konfiguration geht beim Abschalten der Versorgung verloren. Typische Vorgehensweisen zur Initialisierung sind:

  • Lesen des Bitstreams aus einem externen Flash-Speicher (z. B. SPI NOR) beim Boot.
  • Konfiguration über JTAG oder USB‑Programmer während Entwicklung und Debug.
  • Einbetten eines kleinen Bootloaders oder MCU, der die Konfiguration lädt.

Es gibt auch nicht‑volatile FPGA‑Typen (Flash‑basierte oder Antifuse‑FPGAs), die ihre Konfiguration ohne externen Speicher behalten—wichtig z. B. in sicherheitskritischen oder extremen Umgebungen.

Design‑Workflow und Werkzeuge

Der typische Entwicklungsablauf umfasst:

  • Beschreibung der Schaltung in einer Hardware Description Language (HDL) wie VHDL oder Verilog (auch SystemVerilog).
  • Optional: High-Level-Synthese (HLS) aus C/C++ für bestimmte Anwendungen.
  • Simulation (funktional und timingbezogen) zur Verifikation des Designs.
  • Synthese: Übersetzung der HDL‑Beschreibung in verfügbare FPGA‑Logikressourcen.
  • Place & Route (Ort und Weg): Positionierung der Logikblöcke und Routing der Verbindungen.
  • Erzeugung des Bitstreams und Programmierung des FPGAs.

Hersteller bieten Entwicklungsumgebungen (z. B. Vivado, Quartus) und IP‑Kataloge an; zusätzlich existieren Drittwerkzeuge, Open‑Source‑Toolchains und SDKs für Embedded‑Entwicklung.

Cores, Hard‑ und Soft‑Prozessoren

Viele FPGAs enthalten feste, nicht rekonfigurierbare Komponenten (sogenannte hard cores) wie ARM‑Kerne, PCIe-Controller oder Ethernet‑MACs. Alternativ lassen sich soft cores (prozessorembeddable IPs wie MicroBlaze oder Nios II) vollständig in der FPGA‑Logik implementieren. Kombinationen aus Hard‑SoC (z. B. ARM + FPGA‑Fabric) und rekonfigurierbarer Logik sind besonders für Embedded‑ und SoC‑Anwendungen beliebt.

Anwendungen

FPGAs werden in vielen Bereichen eingesetzt, z. B.:

  • Prototyping und Emulation von ASIC‑Designs.
  • Hardware‑Beschleunigung (ML/AI‑Inference, Finanzalgorithmen, Big‑Data‑Streaming).
  • Software‑defined Radio (SDR), Telekommunikation und Hochgeschwindigkeits‑Netzwerke.
  • Signal‑ und Bildverarbeitung, medizinische Geräte.
  • Industrieautomation, Robotik, Automotive (ADAS‑Funktionen).
  • Raumfahrt und Militär (radiation‑hardened Varianten).

Vor‑ und Nachteile

  • Vorteile:
    • Hohe Flexibilität und Nachprogrammierbarkeit.
    • Kurze Time‑to‑Market und gute Eignung für Prototypen.
    • Parallele Verarbeitung und niedrige Latenzen bei Hardwarebeschleunigung.
    • Verfügbarkeit spezialisierter IP‑Cores (Kommunikation, Speicher, Prozessoren).
  • Nachteile:
    • Höherer Stückpreis im Vergleich zu reinen Logik‑ASICs bei großen Stückzahlen.
    • SRAM‑basierte FPGAs sind volatil und benötigen Boot‑Speicher.
    • Komplexe Toolchain und Lernkurve (HDL, Timing‑Constraints, Power‑Optimierung).

Sicherheit und Zuverlässigkeit

Wichtige Aspekte sind Bitstream‑Verschlüsselung, Authentifizierung, Schutz gegen Reverse‑Engineering und Fault‑Tolerance‑Maßnahmen (Triple‑Modular‑Redundancy, EDAC bei On‑Chip‑RAMs). In sicherheitskritischen Umgebungen werden außerdem rad‑hard FPGAs oder redundante Architekturen eingesetzt.

Tipps zum Einstieg

  • Beginnen Sie mit einer Einsteiger‑FPGA‑Entwicklungsplatine (Eval‑Board), die USB‑JTAG, LEDs, Schalter und gängige Schnittstellen bietet.
  • Lernen Sie zuerst die Grundlagen von VHDL oder Verilog und führen Sie einfache Projekte (Blinklicht, Zähler, UART) durch.
  • Verwenden Sie Simulationstools, bevor Sie auf die Hardware übertragen—das spart Zeit beim Debugging.
  • Studieren Sie Datenblätter und Referenzdesigns des gewählten FPGA‑Herstellers.
  • Nutzen Sie Community‑Ressourcen, Foren und Tutorials (z. B. Hersteller‑Documentation, Open‑Source‑Projekte).

FPGA‑Technologie vereint Flexibilität und Leistung und bleibt in vielen Bereichen eine Schlüsselkomponente für moderne Elektronik‑ und Systemdesigns. Die Wahl des richtigen FPGA‑Typs, das Verständnis des Toolflows und ein strukturierter Lernansatz sind entscheidend für erfolgreiche Projekte.

Zoom


Interne Struktur

FPGAs sind im Allgemeinen auf programmierbaren Logikelementen und programmierbaren Verbindungen aufgebaut. Ein Baustein von Logikelementen ist eine programmierbare Lookup-Tabelle (LUT). Eine LUT kann so programmiert werden, dass sie jeden beliebigen Wert mit vorgegebenen Eingangswerten ausgibt. Auf diese Weise kann eine LUT so programmiert werden, dass sie eine beliebige Art von Logik mit der gleichen Anzahl von Ein- und Ausgängen darstellt. Zum Beispiel kann eine LUT mit 2 Eingängen und 1 Ausgang so programmiert werden, dass sie die Logik einer LUT mit 2 Eingängen UND, ODER, NAND, NOR, XOR usw. emuliert. Der Ausgang dieser LUT kann entweder über ein Register gespeichert oder mit dem Eingang anderer LUTs verbunden werden. Mit Hilfe eines programmierbaren Mux kann der FPGA so programmiert werden, dass er den registrierten oder nicht registrierten Ausgang wählt. Diese Kombination aus einer LUT, einem Register und einem Mux ist die allgemeine Struktur eines Logikelements.

Um diese Logikelemente miteinander zu verbinden, werden Pass-Transistoren verwendet. Der Transistor kann so programmiert werden, dass er entweder ein Signal verbindet oder nicht, wodurch der FPGA die Möglichkeit erhält, sehr spezifisch logische Elemente miteinander zu verbinden. Wenn zum Beispiel der Ausgang eines Logikelements den Eingang eines anderen Logikelements speist, kann der Pass-Transistor so programmiert werden, dass er diese beiden Drähte miteinander verbindet und der spezifizierten Logik entspricht. Zwischen den Logikelementen und den Pass-Transistoren kann ein Compiler eine Hardware-Beschreibung aus einer HDL entnehmen, die Logik für die Logikelemente erstellen und sie mit Hilfe der Pass-Transistoren miteinander verbinden.

Fragen und Antworten

F: Was ist ein feldprogrammierbares Gate-Array (FPGA)?


A: Ein Field-Programmable Gate Array (FPGA) ist ein elektronisches Bauteil, das zum Aufbau rekonfigurierbarer digitaler Schaltungen verwendet wird. Zum Zeitpunkt der Herstellung hat es eine undefinierte Funktion und muss programmiert oder rekonfiguriert werden, bevor es in einer Schaltung verwendet werden kann.

F: Wie unterscheidet sich ein FPGA von einem Logikgatter?


A: Ein FPGA unterscheidet sich von einem Logikgatter, weil ein Logikgatter eine feste Funktion hat, während ein FPGA zum Zeitpunkt der Herstellung eine undefinierte Funktion hat.

F: Welche Art von integriertem Schaltkreis ist ein FPGA?


A: Ein FPGA ist ein integrierter Schaltkreis aus der Kategorie der programmierbaren Logikbausteine oder PLDs.

F: Welche Nachteile hat die Verwendung von FPGAs im Vergleich zu anderen PLDs?


A: Ein Nachteil von FPGAs im Vergleich zu anderen PLDs ist, dass sie sich ihr Design nicht merken, wenn die Stromversorgung unterbrochen wird, so dass sie einen separaten Konfigurationsspeicherchip benötigen, der das Design speichert. Außerdem sind sie teurer als andere Arten von PLDs.

F: Wie programmiert man ein FPGA?


A: Um ein FPGA zu programmieren, verwenden Ingenieure Entwicklungssoftware für Windows oder Linux, um Designs zu entwickeln, die in Hardwarebeschreibungssprachen wie VHDL und Verilog geschrieben sind. Die Software übersetzt diesen Code dann in die Logikelemente, die auf den ausgewählten FGPAs verfügbar sind, und positioniert sie mit Place-and-Route-Prozessen, wodurch eine Bitdatei erstellt wird, die entweder in den Konfigurationsspeicher oder direkt in den FGPA selbst mit einem an seinen JTAG-Anschluss angeschlossenen USB-Programmiergerät programmiert werden kann.

F: Sind Mikroprozessoren und Mikrocontroller mit FGPAs vergleichbar?


A: Nein, Mikroprozessoren und Mikrocontroller unterscheiden sich von FGPAs, weil sie in ihrer Grundform keine Software ausführen können; nur wenn sie eine Konfiguration erhalten, die eine Prozessorarchitektur enthält, haben sie diese Fähigkeit.


Suche in der Enzyklopädie
AlegsaOnline.com - 2020 / 2025 - License CC3