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 ddurchfü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.
Es 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.