Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Field Programmable Gate Array

Ein FPGA (Akronym für Field Programmable Gate Array) ist ein integrierter Schaltkreis (IC) der Digitaltechnik, in welchen eine logische Schaltung geladen …

Inhalt5 Abschnitte
  1. 1. Grundidee und Einsatz
  2. 2. Aufbau, Logik und zusätzliche Bausteine
  3. 3. Konfiguration und Entwicklungsablauf
  4. 4. Abgrenzung und typische Anwendungen
  5. 5. Vergleich mit Prozessoren und ASICs

Grundidee und Einsatz

Ein FPGA (Field Programmable Gate Array) ist ein integrierter Schaltkreis der Digitaltechnik, in den eine logische Schaltung geladen wird. Anders als bei der Softwareprogrammierung wird nicht nur ein zeitlicher Ablauf festgelegt: Eine Hardwarebeschreibungssprache beschreibt vor allem die gewünschte Schaltungsstruktur. Erzeugersoftware übersetzt sie in eine Konfigurationsdatei, die festlegt, wie die physischen Elemente im Chip verschaltet werden. Ohne Konfiguration hat der Baustein keine Funktion.

FPGAs sind eine Weiterentwicklung der PLDs und können von einfachen Synchronzählern und Glue Logic (Verbindungslogik zwischen Digitalbausteinen) über Speichercontroller und Mikroprozessoren bis zu Systems-on-a-Chip reichen. Sie werden besonders eingesetzt, wenn schnelle digitale Signalverarbeitung und nachträgliche Änderungen ohne Hardwaretausch wichtig sind. Weitere Einsatzfelder sind ASIC-Prototypen sowie Maintenance und Obsoleszenzmanagement: Nicht mehr lieferbare digitale Bausteine oder Mikrocontroller können ersetzt werden.

Neben digitalen FPGAs gibt es FPAAs (Field Programmable Analog Array). Sie enthalten vor allem programmier- und verschaltbare analoge Blöcke, insbesondere Filter und HF-Bauelemente.

Aufbau, Logik und zusätzliche Bausteine

Die Grundstruktur ist ein Feld aus Basisblöcken. Jeder besitzt üblicherweise eine programmierbare Lookup-Tabelle (LUT) und ein 1-Bit-Register, ein Flipflop. Eine LUT kann abhängig von ihrer Eingangszahl jede beliebige n-stellige Binärfunktion darstellen: Ihre Wahrheitstabelle wird in SRAM-Zellen gespeichert; die Eingangssignale bestimmen die gelesene Speicheradresse. Früher waren 4-Eingangs-LUTs verbreitet, neuere FPGAs verwenden teils LUTs mit bis zu 6 Eingängen.

Multiplexer in den Basisblöcken schaffen schnelle lokale Signalwege, etwa zum Einbinden oder Umgehen eines Flipflops. Für weiter entfernte Verbindungen gibt es zwischen den Blöcken ein Gitter aus Busstrukturen mit programmierbaren Kreuzungspunkten. So lassen sich Signale über den ganzen Chip verteilen.

Typische Zusatzkomponenten sind anpassbare Ein-/Ausgabe-Blöcke (IOB) für Standards wie TTL/CMOS, Serializer für Hochgeschwindigkeitsbusse und DDR-Schnittstellen sowie Taktgeneratoren. PLLs, DLLs und DFS erzeugen oder verschieben interne Takte; die Taktverteilung stellt sie chipweit synchron bereit. Häufig sind außerdem Block RAM und DSP-Blöcke vorhanden. DSP-Blöcke führen unter anderem Multiplikationen und Multiply-Accumulate-Operationen für digitale Filter und Faltungen effizient aus.

Leistungsfähige Bausteine können Hard-Cores, also fest integrierte Mikrocontroller, DDR-Speichercontroller, DDR-SDRAM im selben Gehäuse (Multi-Die) sowie Ethernet-, USB- und Speichercontroller enthalten. Daraus entstehen SoCs. Festverdrahtete Funktionen benötigen weniger Fläche, weniger Strom und sind schneller als dieselben Funktionen aus frei konfigurierbarer Logik. Manche FPGAs besitzen Flash-Speicher im Gehäuse für ihre Konfiguration.

Konfiguration und Entwicklungsablauf

Mehrfach programmierbare FPGAs speichern ihre Konfiguration beispielsweise in SRAM, EPROM, EEPROM oder Flash. Bei einmalig programmierbaren FPGAs verändert die Antifuse-Technologie Verbindungswege dauerhaft; sie bietet im Feld eine größere Sicherheit gegen äußere Störungen. SRAM-basierte FPGAs verlieren die Konfiguration beim Ausschalten. Deshalb lädt meist ein EPROM, ein Mikrocontroller oder ein anderer FPGA die Konfiguration beim Start. Teilbereiche können zunehmend auch im laufenden Betrieb umprogrammiert werden.

Der Entwicklungsablauf beginnt mit dem Schaltungsentwurf, danach folgen Simulation, Implementierung (Place and Route) und der Test im realen FPGA. Entwürfe entstehen grafisch als Schaltplan oder textuell in Hardwarebeschreibungssprachen, vor allem VHDL und Verilog. Sie beschreiben Strukturen und Abläufe einer Schaltung. Endliche Automaten können Ablaufsteuerungen darstellen. Es gibt auch Werkzeuge, die aus C/C++, Python, MATLAB, Java oder UML Registertransferebene-Entwürfe in VHDL oder Verilog erzeugen. SystemC dient laut Artikel vor allem der abstrakten Verhaltensmodellierung und schnellen Systemsimulation, nicht der Synthese.

Hersteller bieten parametrierbare IP-Cores an, zum Beispiel FIFOs, Prozessoren, serielle Schnittstellen, Ethernet-MAC-Layer, RAM-Controller und Parallel-IO. Diese liegen als Quellcode oder meist als verschlüsselte Netzliste vor und werden über Busse verbunden. Empfohlen wird synchrones Design: Alle Flipflops einer Takt-Domäne erhalten denselben Takt. Datenübernahme soll über Clock-Enable-Eingänge statt über geteilte Taktsignale (gated clocks) gesteuert werden, um Laufzeiteffekte zu vermeiden.

Bei der funktionalen Simulation prüft eine Testbench mit Daten und Betriebsfällen die logische Funktion, Verbindungen und Zeitpunkte von Registerzugriffen; ModelSim ist ein genanntes Beispiel. Nach der Synthese wird die Netzliste auf die Ressourcen des konkreten FPGAs abgebildet. Platzierungsanweisungen und Zeitvorgaben ermöglichen die statische Timing-Analyse. Dabei werden insbesondere Setzzeit (setup time) und Haltezeit (hold time) geprüft. Bei timing violations muss der Entwurf geändert und erneut synthetisiert werden. Abschließend entsteht eine Binärdatei, das programming file, zur Konfiguration; gegebenenfalls zusätzlich eine Datei für den Flash-Speicher.

Abgrenzung und typische Anwendungen

CPLDs (Complex Programmable Logic Devices) sind ebenfalls rekonfigurierbar, haben aber eine einfachere Struktur als FPGAs. Sie besitzen kein feinmaschiges Feld aus Logikblöcken und Flipflops, sondern vor allem eine konfigurierbare Schaltmatrix mit AND/OR-Verknüpfungen. Dadurch ist ihre Signaldurchlaufzeit vom Design unabhängig und konstant. Bei FPGAs lassen sich definierte maximale Laufzeiten durch timing constraints erreichen.

CPLDs besitzen vergleichsweise wenige Flipflops; Schieberegister, Zähler und Zustandsspeicher sind dort ineffizient. Weil meist jeder IO-Pin ein Flipflop hat, verfügen sie oft über viele IO-Pins und eignen sich bei einfachen Schaltungen mit hohem IO-Bedarf, etwa Glue Logic. Durch Flash-Zellen können CPLDs direkt nach dem Einschalten betriebsbereit sein. SRAM-FPGAs benötigen dagegen erst einen Ladezyklus, wobei es auch Flash-FPGAs gibt. CPLDs haben wegen ihres einfacheren, kleineren Aufbaus einen geringeren Stromverbrauch.

FPGAs werden etwa für Echtzeit-Algorithmen, digitale Filter, schnelle Fourier-Transformationen, Teile des Ethernet-MAC-Layers, Videokodierung, Verschlüsselung und Fehlerkorrektur verwendet. Sie sind besonders sinnvoll, wenn sich Algorithmen oder Protokolle rasch weiterentwickeln: Updates erlauben Fehlerbehebungen und Anpassungen ohne Änderung der FPGA-Hardware. Der Parallelrechner Copacobana besteht aus 120 FPGAs und dient zum Brechen kryptographischer Verfahren wie DES.

Digitale Speicheroszilloskope nutzen oft FPGAs, weil die Stückzahlen für ASICs zu gering sind und die parallele Verarbeitung mehrerer phasenverschoben abtastender A/D-Wandler erforderlich ist. FPGAs dienen außerdem häufig als Plattform, um den digitalen Teil eines ASICs zu verifizieren, da alleinige Simulationen bei komplexen Schaltungen zu zeitaufwändig wären. Weitere genannte Einsätze sind Reconfigurable Computing, Krypto-Mining und die MiSTer-Plattform zur Simulation älterer Computer, Konsolen und Arcade-Automaten.

Vergleich mit Prozessoren und ASICs

Ein FPGA kann je nach Konfiguration viele digitale Funktionen vollständig parallel verarbeiten. Datenflüsse können daher an Bandbreite und Informationstiefe angepasst werden: Schnelle Signale lassen sich mit mehreren identischen Blöcken parallel, langsamere Signale zyklisch mit einem Block verarbeiten. Externe Prozessoren arbeiten dagegen komplexe, verschachtelte Programme mit wenig Hardware meist sequentiell ab. Für jede FPGA-Operation müsste eigene Hardware synthetisiert werden; Logikressourcen sind begrenzt. Deshalb können soft-core CPUs in FPGA-Designs eingebunden werden, die klassisch in C programmiert werden. Manche FPGAs enthalten fest integrierte CPU-Kerne, etwa ARM-Cortex-Architekturen oder in der PolarFire-Familie RISC-V-Kerne.

Laut Artikel können aktuelle FPGAs bei 500 MHz gleichzeitig zehntausende Festkommaadditionen bis 48 Bit und tausende Festkommamultiplikationen bis 18 × 25 Bit ausführen. Bei Aufgaben mit Festkommaarithmetik ist damit eine um Faktor 2 bis 3 höhere Verarbeitungsleistung bei deutlich geringerer Leistungsaufnahme möglich.

Gegenüber ASICs haben FPGAs geringere Entwicklungskosten, sind für Prototypen und Kleinserien kostengünstig, schneller implementierbar und rekonfigurierbar. Unterschiedliche Hardware-Designs können dynamisch geladen werden; Fehler und Erweiterungen sind später möglich. Flexible IO-Standards und ein geringeres Designrisiko sind weitere Vorteile.

Nachteile sind ab mittleren Stückzahlen ein höherer Stückpreis, geringere Taktraten und Logikdichte sowie höherer Leistungsbedarf für dieselbe Logikmenge. Verfügbare FPGAs erreichen laut Artikel bis 1,5 GHz, typisch 20–500 MHz; digitale ASICs bieten mehr als 3 GHz. Ein FPGA benötigt etwa die zehnfache Fläche eines ASIC gleicher Technologie. SRAM-basierte FPGAs sind empfindlicher gegen Teilchenstrahlung und elektromagnetische Wellen und müssen nach jeder Spannungsunterbrechung neu geladen werden; der Vorgang kann bis zu einigen Sekunden dauern und erfordert ohne integrierten Flash zusätzliche Komponenten.

Weiterlesen

Akronym Akronyme, die aus Initialen zusammengesetzt sind und ausbuchstabiert werden und mit Endbetonung ausgesprochen werden, wie WM · Akronyme, die aus Initialen … Integrierter Schaltkreis Integrierter Schaltkreis. auf dünnen, meist wenige Millimeter großen Plättchen aus Halbleiter-Material aufgebrachte elektronische Schaltung. Artikel … Digitaltechnik Die Digitaltechnik bezeichnet in der technischen Informatik und der Elektronik digitale Schaltungen, in denen Signale digital verarbeitet, d. h. mit … Logikgatter Ein Logikgatter, auch nur Gatter (englisch (logic) gate) ist eine Anordnung (heutzutage praktisch immer eine elektronische Schaltung) zur Realisierung einer … Computer Ein Computer (englisch; deutsche Aussprache [kɔmˈpjuːtɐ]) oder Rechner ist ein Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Mikrocontroller Ein Mikrocontroller ist damit ein „Ein-Chip-Computersystem“ und bringt alle notwendigen Bausteine für einen kleinen Computer mit sich. Eine MCU unterscheidet … Hardwarebeschreibungssprache Eine Hardwarebeschreibungssprache (englisch Hardware Description Language, HDL) ist eine formale Sprache, mit der Operationen von integrierten Schaltungen … Mikroprozessor Ein Mikroprozessor (µP oder uP) ist ein als integrierter Schaltkreis (IC) ausgeführter Computerprozessor. Typische Beispiele von Mikroprozessoren sind die … Anwendungsspezifische integrierte Schaltung Eine anwendungsspezifische integrierte Schaltung (englisch application-specific integrated circuit, ASIC, auch Custom Chip) ist ein integrierter Schaltkreis … Lookup-Tabelle Lookup-Tabellen (LUT) bzw. Umsetzungstabellen werden in der Informatik und in der Digitaltechnik verwendet, um Informationen statisch zu definieren und … Flipflop Ein Flipflop (auch Flip-Flop), oft auch bistabile Kippstufe oder bistabiles Kippglied genannt, ist eine elektronische Schaltung, die zwei stabile Zustände … Wahrheitstabelle Die Wahrheitstabelle wird genutzt, um Wahrheitswertefunktionen beziehungsweise boolesche Funktionen darzustellen oder zu definieren und um einfache …