Engineering, Embedded Systems, FPGA Seit Ende 2005 arbeite ich fest bei der Hitron GmbH und habe nun auch mein MAS Mikroelektronik abgeschlossen.
In meinem Studium zum MAS habe ich mich oft mit FPGAs befasst und sie schätzen gelernt.

Was sind eigentlich FPGAs

Ein FPGA (Field Programmable Gate Array) ist eine programmierbare Logik. Sozusagen sehr viele Logikbausteine und Latches, welche noch nicht verbunden sind unter einander und deren Verbindungen sich programmieren lassen.

(-)

Ein früher Vorläufer der FPGAs sind die PALs.
Diese hatten oft je eine AND- und eine OR-Struktur hintereinander sowie Latches am Ausgang, welche man aber überspringen konnte.
Bei den Logikstrukturen und dem Ausgang konnte man einige Verbindungen wählen.
Bei diesen Bausteinen wurden die notwendigen Verbindungen anhand des Datenblattes "von Hand" ermittelt und dann mittels einer scriptartigen Sprache in ein Binäres File umgewandelt, welches dann mit einem Eprom-Brenner in das PAL gebrannt wurde.
Da die Programmierung meisst aus einer Art "Sicherungen" bestand, hatte man pro Baustein nur eine einzige Chance. Funktionierte er dann nicht wie erwartet, musste man ihn wegwerfen.

(-)

FPGAs enthalten ein tausendfaches der Logik dieser PALs. Das direkte bestimmen der Verbindungen wäre somit absolut aussichtslos. Auch sind sie nicht mehr so detailiert offen gelegt, wie damals bei den PALs.
FPGAs lassen sich heute mit leistungsfähigen Tools wie beispielsweise Quartus II mittels einer "Programmiersprache" wie VHDL programmieren. Diese Sprache stellt viel mehr zur Verfügung als nur das AND und OR der damaligen PALs.
Der grosse Vorteil dieser Methode besteht darin, dass die Logik dadurch abstrahiert wird, so dass der Programmierer ein grosses Stück weit Hardware-unabhängig wird. Passt ein Design nicht mehr in einen Baustein, so kann man in der Regel mit wenig oder gar ohne Anpassungen den Quellcode für einen anderen Baustein kompilieren.

(-)

Bevor das Design in den Baustein programmiert wird, kann es simuliert werden.
Mittels einer Testbench, einer Testsoftware, welche die Umgebung des Designs simuliert, werden die relevanten Situationen nachgebildet. Die Reaktionen des Designs auf diese Situationen können dadurch ermittelt und auch getestet werden.

(-)

Heutige FPGAs haben meisst soviel Logik zur Verfügung, dass ohne weiteres mit einem Teil davon ein ganzer (Softcore-)Prozessor realisiert werden kann. So lassen sich äusserts flexible und leistungsfähige Designs damit realisieren, da ein Teil davon auch "normale" Software verarbeiten kann. Die Fähigkeiten dieses Prozessors können dann ganz spezifisch auf die zu bewältigende Aufgabe getrimmt werden, insbesondere können gewisse Aufgaben "in Hardware" erledigt werden, was zu sehr effizienten Lösungen führt.
Auch die Kombination mit einem externen Prozessor kann sinnvoll sein, vorallem wenn dieser spezielle Funktionen wie A/D- und D/A-Wandler mitbringt, welche kaum in FPGAs zu finden sind.

(-)

Diese FPGAs werden, wie es der Name bereits sagt, erst "im Feld", also beispielsweise beim Aufstarten des Gerätes, programmiert.
Dies eröffnet natürlich neue Möglichkeiten: Die Programmierung lässt sich nachträglich updaten und damit lässt sich sozusagen die Hardware nachträglich noch anpassen. Da die Programmierung von aussen her erfolgt, birgt dies aber auch Gefahren, da damit die Programmierung sozusagen offen liegt und von jedermann kopiert werden könnte.
In vielen Designs muss daher auch die Problematik des Kopierschutzes beachtet werden, wozu oft CPLDs benutzt werden.
Teilweise enthalten grössere CPLDs auch bereits Mechanismen, um die Programmierung verschlüsselt durchführen zu können.

(-)

Die CPLDs sind die kleinen Brüder der FPGAs. Sie enthalten bereits das Flash zur Programmierung und lassen sich in der Regel gegen das Auslesen schützen. So lassen sie sich wie "normale" Logikbausteine ohne Startphase benutzen und eignen sich unter anderem gut als Kopierschutz von FPGAs. Dazu wird sowohl eine Verschlüsselung im CPLD, wie auch im FPGA realisiert, welche vom Code her identisch sein können. Diese zwei Verschlüsselungen lässt man miteinander kommunizieren. Da das CPLD nicht ausgelesen und damit auch nicht kopiert werden kann, würde dieser Teil der Verschlüsselung bei einer Raubkopie des Gerätes fehlen, was vom FPGA festgestellt werden könnte.
Das FPGA lässt sich zwar anhand des Codes, welcher einprogrammiert wird kopieren, jedoch kann seine Funktion anhand dieses Codes nicht festgestellt werden. Weigert sich dieses also beim Fehlen des Kopierschutzes weiter zu arbeiten, wird es für den Raubkopierer wertlos.

(-)