Ein Field Programmable Gate Array (FPGA) ist ein integrierter Schaltkreis (IC) der Digitaltechnik, in den eine logische Schaltung programmiert werden kann. Die englische Bezeichnung kann übersetzt werden als: im Feld (also vor Ort, beim Kunden) programmierbare (Logik-)Gatter-Anordnung.
Anders als bei der Programmierung von Computern oder Steuerungen bezieht sich hier der Begriff Programm nur in zweiter Linie auf die Vorgabe zeitlicher Abläufe im Baustein, sondern vor allem auf die Definition von dessen Funktionsstruktur. Durch die Programmierung der Verschaltung der vorgegebenen Elemente wird die Funktionsweise einzelner Blöcke im FPGA und deren Verschaltung untereinander festgelegt. Man spricht daher auch von der Konfiguration eines FPGA.
Unterschiede und Gegenüberstellung -> CPLD zu FPGA. |
Erstellt wird die Konfiguration eines FPGAs meist mittels einer Hardwarebeschreibungssprache, dies sind primär VHDL oder Verilog, welche die gesamte Funktion der Schaltung in Form von Strukturen und Abläufen beschreibt. Ein sogenanntes Synthesewerkzeug erstellt dann aus diesen Daten für einen gewünschten Baustein eine spezifische Netzliste unter Nutzung der in diesem Baustein verfügbaren Ressourcen. Zuvor wird im Rahmen des Entwicklungsprozesses die Hardwarebeschreibung mittels Simulationswerkzeugen in ihrem Verhalten simuliert und optimiert. Ein hierfür bekanntes Werkzeug ist ModelSIM.