Inhaltsverzeichnis
Verschiedene Typen
Es gibt zwei verschiedene Typen von FPGAs:
- Rekonfigurierbare FPGAs
- Für diese FPGAs verwendet man Speichertechnologien wie SRAM. Ihr Nachteil ist, dass sie flüchtig sind, d.h. dass die Programmierung nur solange im Baustein ist, wie Strom durch ihn fliesst. Wird die Stromzufuhr unterbrochen, so muss der Baustein neu konfiguriert werden bzw. seine Konfiguration neu eingelesen werden.
- Nicht-rekonfigurierbare FPGAs
- Diese können nur einmal programmiert werden und behalten die Programmierung für immer. Dies wird meist dadurch erreicht, dass die Leitungen im Baustein physikalisch zerstört bzw. erstellt werden. Solche Bausteine basieren meist auf der Antifuse Technologie.
FLASH-Bausteine vereinigen die Vorteile beider Technologien; sie sind nicht flüchtig und sie können sehr schnell rekonfiguriert werden.
Aufbau eines FPGA
Logikblock
Ein FPGA besteht aus sehr vielen kleinen logischen Einheiten, den sogenannten Logic Blocks. In diesen kleinen logischen Einheiten befinden sich einfache logische Schaltungen, die meist konfiguriert werden können. Diese kleinen Logikeinheiten werden bei der Implementierung von logischen Funktionen miteinander verknüpft.
Granularität
Unter der Granularität eines FPGAs versteht man die Grösse seiner Logikblöcke. Ein FPGA wird als feinkörnig bezeichnet, wenn die Logikblöcke eher klein sind. Sie enthalten nur wenig Logik und haben nur wenige Ein− und Ausgänge. Feinkörnige FPGAs können die Logikblöcke effizienter nutzen, allerdings sind viele Verbindungen nötig, um grössere Funktionen zu realisieren. Ein grobkörniger FPGA hat grosse Logikblöcke. Bei grösseren Funktionen bringt das zwar Geschwindigkeitsvorteile, allerdings leidet die Ausnutzung der Fläche darunter.
Um die Bausteine untereinander vergleichbar zu machen, geben viele Hersteller eine Gatteräquivalente bei ihren Bausteinen an. Dabei entspricht eine Einheit einen NAND mit zwei Eingängen. Allerdings lassen sich Bausteine verschiedener Hersteller nur sehr bedingt so vergleichen, da einige Hersteller sehr grösszügig bei der Angabe der Anzahl der Gatteräquivalente sind.
Aufbau der Logikblöcke
Grundsätzlich kann man zwischen drei verschieden Konzepten beim Aufbau der Logikblöcke unterscheiden:
Lookup Tabels
Diese Technik wird bei FPGAs verwendet, die auf SRAM basieren. Der Speicher wird so beschrieben, dass es zu jeder Eingangkombination der entsprechende Wert einer Logikfunktion ausgegeben wird.
Multiplexer
Diese Technologie wird bei Antifuse FPGAs verwendet. Mit einen einfachen 1−Bit Multiplexer lassen sich leicht Funktionen wie AND, OR, NOT realisieren.
Sea of Gates
Im Moment verwendet diese Technologie nur der Hersteller GateField. Bei diesen Konzept besteht ein Logikblock aus maximal 8 Transistoren, die über programmierbare Leitungen verbunden werden und so eine Funktion realisieren.
Verbindungsarchitektur
Besonders bei den Logikblöcken mit feiner Granularität spielt die Verdrahtung eine sehr wichtige Rolle, da bereits einfache logische Funktionen auf mehrere Logikblöcke aufgeteilt werden müssen. Ist die Anzahl der Leitungen zu klein, so können nicht alle Basiszellen angeschlossen werden. Wenn man zu viele Leitungen hat, können zwar alle Basiszellen genutzt werden, aber es muss sehr viel Fläche für die Verdrahtung aufgewendet werden. Dies macht ausserdem den Baustein unnötig teuer.
Programmierung von FPGAs
Dazu muss man sich nochmal verdeutlichen, was man unter "Programmierbarer Logik" versteht. Unter programmierbarer Logik versteht man Bausteine, die zwar von ihren physikalischen Eigenschaften von vornherein festgelegt sind, jedoch von den Entwicklern an ihre jeweiligen Bedürfnisse angepasst werden können. Bei der Entwicklung und Programmierung von Logikbausteinen geht man ähnlich wie bei der Softwareentwicklung vor. Man beginnt mit dem Design, indem man schematische Darstellungen oder Tabellen erstellt. Diese werden in eine Quellcode-Datei umgewandelt, welche wiederum von einem Compiler auf Syntaxfehler überprüft werden. Erkennt der Compiler Fehler, ändert man lediglich den Quellcode und kompiliert ihn neu. Jetzt kann der Chip programmiert werden. Daraufhin erfolgt wiederum eine Testphase, die wiederum Änderungen im Quellcode nach sich ziehen kann. Arbeitet der Chip korrekt, wird er eingebaut und dient evtl. als Vorlage für Masken.
Was ist der Vorteil von FPGAs
FPGAs schließen die Lücke von Standardbausteinen wie Mikroprozessoren auf der einen und ASICs auf der andere Seite. Der Vorteil von Mikroprozessoren liegt in der preiswerten Massenproduktion und der Entwickler kann den Baustein softwaresteitig programmieren.
Mikroprozessoren eignen sich nicht für unverzögerte parallele Berechnungen. Hierfür wurden bislang ASICs herangezogen. Darunter versteht man anwendungsspezifische, integrierte Schaltungen, die für jede Anwendung speziell entwickelt werden müssen. Da diese jedoch von großen Halbleiterherstellern gefertigt werden müssen, rentieren sich nur große Stückzahlen und die Entwicklungszeit für einen Prototypen kann bis zu 18 Monaten dauern. Also sind Standardbausteine für kleine Serien kostengünstig einzusetzen, während sich ASICs nur für große Serien eignen. FPGAs schließen genau diese Lücke, da einerseits der physikalische Aufbau immer der gleiche ist (günstige Massenproduktion) andererseits kann der Entwickler die Bausteine genau auf seine Bedürfnisse abstimmen, indem er eine Konfiguration in den FPGA lädt. Dies kann er beliebig oft wiederholen. Nachdem die Konfiguration feststeht, ist auch das Zeitverhalten berechenbar, man kann demnach auch zeitkritische Anwendungen realisieren. Auch ist das Laden der Konfiguration in den Baustein relativ schnell. Bei aktuellen gebräuchlichen FPGAs dauert die Konfiguration ca. 10-250 ms. Die genaue Dauer ist dabei von der Länge des Bitstreams und der maximalen Taktrate, mit welcher der Bitstream eingeschrieben werden kann, abhängig.
Quellen/Literatur
- Wannemacher, Markus "das FPGA−Kochbuch"
- FPGA, Markus Stanczyk
- Matthias Fuchs, Geschichte der FPGA
- Oldfield, Dorf : Field-Programmable Gate Arays; John Wiley & Sons, 1995
Weblinks
- http://www-li5.ti.uni-mannheim.de/research/fpga-processors FPGA Seiten der Uni Mannheim
- http://www.fpga4fun.com/ Projekte und Hintergrund Informationen auf englisch