Einführung in die FPGA-Entwicklung
Das FPGA
Die Abkürzung FPGA steht für „Field Programmable Gate Array“. „Gate Array“ steht dabei für Benutzerspezifische Schaltung, auch ASIC abgekürzt. Es handelt sich also um einen Baustein, der das macht, was sich der Benutzer wünscht (so er ihn richtig programmieren kann) und erst im Betrieb konfiguriert wird.
In der Praxis bedeutet das, dass ein FPGA nach dem Einschalten noch ohne Funktion ist. Durch einen angeschlossenen oder auf dem Chip enthaltenen Flash-Speicher lädt das FPGA erst nach dem Einschalten die Konfigurationsdaten und wird dadurch konfiguriert. Die Konfigurationsdaten können natürlich auch durch einen entsprechenden Boot-Prozess über einen externen Prozessor von einem Filesystem kommen, was sie noch einmal flexibler macht.
Wenn mich ein Laie fragt, was ein FPGA ist und womit ich eigentlich mein Geld verdiene versuche ich das folgendermaßen zu erklären: Ein FPGA ist wie ein Gehirn von einem Neugeborenen, voller Komplexität, aber noch ohne seine zukünftige Funktionalität. In einem Gehirn müssen sich erst noch die einzelnen Zellen auf sinnvolle Weise miteinander verbinden um eine Funktionalität herzustellen. Ähnlich ist es in einem FPGA, ein FPGA hat ein hohes Potential durch die vielen möglichen Logik-Funktionen. Aber nur durch die Verbindung der einzelnen Funktionen und durch deren Programmierung wird aus dem Ganzen ein funktionales Element, welches man dann gerne auf eine Platine lötet damit es dort seinen Dienst leisten wird.
Prinzipieller Aufbau
Ein FPGA besteht aus einem zweidimensionalen Feld von Logik-Zellen, Verbindungsmatritzen, IO-Zellen und weiterer dedizierter Hardware auf die später eingegangen wird.
Anwendungsgebiet
In einem FPGA werden normalerweise komplexe getaktete Schaltungen realisiert. Dabei kann es sich z.B. um einen Prozessorkern mit dessen Peripherie handeln der so käuflich nicht zu erwerben ist.
FPGAs werden eingesetzt, um Systeme mit möglichst wenig Komponenten aufzubauen. Ergänzt werden die FPGAs z.B. durch hochintegrierte Speicher, Analog- und Leistungselektronik welche sich allein mit der Technik der FPGAs nicht realisieren lassen.
Programmierung
Um getaktete Schaltungen zu programmieren wird eine RTL verwendet.
Getaktete Schaltung bedeutet, dass normalerweise Register-Ausgänge logisch miteinander verknüpft werden und das Ergebnis dieser Verknüpfung Register-Eingängen zugeführt werden. Es werden also Werte von Registern zu Registern übermittelt.
RTL bedeutet Register Transfer Language. Dabei handelt es sich um Programmiersprachen welche einen Syntax zur Verfügung stellen in der genau diese Register Übergänge beschreiben werden können. VHDL und Verilog sind solche Sprachen.
Entsprechende Synthesewerkzeuge erlauben es, aus dem Code ein Abbild für das FPGA zu erzeugen, welches die im Code beschriebene Funktionalität im FPGA realisiert.
Weiter zu: Aufbau eines FPGAs