Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


FPGA sind oft größer u. teurer als Microcontroller
Mit den Begriff FPGA (Field Programmable Gate Arrays) bezeichnet man komplexe programmierbare Logikbauelemente, deren Architektur auf einer vergleichsweise kleinen Basiszelle beruht. Bei FPGAs wird die Implementierung von logischen Funktionen hauptsächlich durch die Programmierung der Verbindungsleitungen zwischen den Logikblock erreicht.


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 rekonfiguriert werden.

Je nach Komplexität und Größe unterscheidet man 3 Gruppen:

- klein, nur einache Funktionen: PAL bzw. GAL, meistens einmal programmierbar oder Flash

- mittlere Größe: CPLD , meistens auf Flash Basis

- groß  : eigentliche FPGAs auf SRAM Basis.

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 grosszü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.

Nachteile von FPGAs

Der Hauptnachteil von FPGAs ist der relativ hohe Stromverbauch. Auch sind FPGAs im Vergleich zur µCs oft relativ teuer (oft über 10 EUR). Zum FPGA kommt dann oft noch ein Speicher für die Konfiguration. Außerdem werden FPGAs meist nur im TQFP oder BGA Gehäuse angeboten, was löten per Hand stark erschwert bzw. im Fall von BGA sogar unmöglich macht.

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