Field Programmable Gate Array
Ein feldprogrammierbares Gate-Array (oft mit FPGA abgekürzt) ist eine elektronische Komponente, die zum Aufbau rekonfigurierbarer digitaler Schaltungen verwendet wird. Das bedeutet, dass sich ein FPGA von einem Logikgatter unterscheidet, da ein Logikgatter eine feste Funktion hat. Im Gegensatz dazu hat ein FPGA zum Zeitpunkt der Herstellung eine undefinierte Funktion. Bevor das FPGA in einer Schaltung verwendet werden kann, muss es programmiert, d. h. rekonfiguriert werden.
FPGAs sind integrierte Schaltungen in der Kategorie der programmierbaren Logikbausteine oder PLDs. FPGAs sind die leistungsfähigsten, flexibelsten und auch die teuersten unter den PLD-Typen. Ein Nachteil von FPGAs im Vergleich zu anderen PLDs ist, dass sie sich nicht an ihr Design erinnern, wenn der Strom abgeschaltet wird. Ein FPGA benötigt daher einen separaten Konfigurationsspeicherchip, der das FPGA-Design aufnimmt. Wenn die Stromversorgung an das FPGA zurückgegeben wird, liest ein fester Teil des FPGAs die Konfiguration aus dem Konfigurationsspeicherchip. Nachdem das FPGA konfiguriert ist, ist es in der Lage, die Funktion auszuführen, die ihm durch das Design gegeben wurde.
Ein FPGA unterscheidet sich von einem Mikroprozessor oder Mikrocontroller. Ein FPGA ist in seiner Grundform nicht in der Lage, Software auszuführen. Erst wenn der FPGA eine Konfiguration erhält, die eine Prozessorarchitektur enthält, ist er in der Lage, Software auszuführen.
FPGA-Hersteller bieten Engineering-Software für Windows und manchmal auch Linux an, um Designs für FPGAs zu entwickeln. Das Design wird üblicherweise in von Menschen lesbaren Computerdateien geschrieben, die als Hardware Description Language (HDL) bezeichnet werden. Die bekanntesten sind VHDL und Verilog. Hardware-Beschreibungssprachen sind stark mit Programmiersprachen vergleichbar. Aber die Absicht von HDLs ist es, digitale Logikschaltungen zu entwerfen, während Programmiersprachen Software entwerfen.
Die FPGA-Engineering-Software muss den abstrakten HDL-Code in die im ausgewählten FPGA verfügbaren Logikelemente übersetzen. Dies wird Logiksynthese genannt. Dann wird ein Prozess von Ort und Weg durchgeführt, um die Logikelemente im FPGA zu positionieren. Das Ergebnis ist eine Bitdatei, die in das FPGA oder den Konfigurationsspeicher programmiert werden kann. Dies geschieht normalerweise mit einem USB-Programmiergerät, das an den JTAG-Port des FPGAs angeschlossen ist.
Da es sich bei dem FPGA um eine integrierte Schaltung handelt, kann ein FPGA-Hersteller entscheiden, weitere häufig verwendete integrierte Schaltungskomponenten hinzuzufügen. Diese festen Teile werden Cores genannt. Dies sind z.B. Ethernet-Controller oder sogar eine komplette Prozessor-Architektur. Für verschiedene Marktsegmente wie Verteidigung, Medizin, Kommunikation und Robotik versucht der FPGA-Hersteller, den wertvollsten Satz dieser zusätzlichen Cores hinzuzufügen.
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.