2011-04-07

FPGA

Flexibles Hardware-Design mit FPGA!


Vor kurzem habe ich mich mit der "Entwicklung eines DVB-C Basisband Generators" auf Basis eines sogenannten Field Programmable Gate Arrays (kurz: FPGA) beschäftigt und muss sagen, dass es schon erstaunlich ist wie flexibel sich diese Wunderwerke der Technik programmieren lassen. Während mir im Gegensatz dazu ein Mikrocontroller die Entwicklung eines nur seriell ablaufenden Algorithmus ermöglicht und ich im Grunde genommen dem Aufbau des von mir erworbenen Mikrocontrollers ausgesetzt bin, kann ich mit einem FPGA beliebig viele (bzw. entsprechend der vorhandenen Gatteranzahl) parallele Operationen ausführen und habe somit einen beliebig großen Spielraum.


Bei einem FPGA handelt es sich um eine Aneinderreihung reiner Logikgatter, deren Zusammenhang von vornherein noch undefiniert bleibt. Mittels einer Hardwarebeschreibungssprache (VHDL, Verilog u.a.) lässt sich die interne Funktionsweise des FPGAs definieren. Im Grunde genommen ist die Handhabung ähnlich wie bei der C-Programmierung eines Mikrocontrollers. Man verwendet eine Entwicklungsumgebung, die einen Compiler für eine diverse Anzahl an FPGAs eines Herstellers und codiert den Algorithmus in einem Editor, was im Grunde genommen einer Art Bitshifting gleichkommt. Was am FPGA von vornherein angeschlossen sein sollte, ist jedoch ein Quarzoszillator der dem FPGA eine bestimmte Taktfrequenz vorgibt. Auf diesen aufbauend können über sogenannte PLLs (Phase Locked Loops) Takte festgelegt werden mit denen der Algorithmus schaltet.
Eine weitere Besonderheit ist auch, dass die Peripherie des FPGAs frei bestimmbar ist. Man kann also (natürlich unter der Voraussetzung einer geeigneten A/D-Wandlung) an einer beliebigen Stelle des FPGAs analoge Signale hineingeben oder ausgeben. Alles fällt am Ende auf die Codierung und Definition in der HDL ab.
Den einzigen Nachteil bringen FPGAs jedoch in der Speicherung des HDL-Codes mit sich. In der Regel wird nämlich der auf den FPGA geladene Code nach Abschaltung der Spannungsversorgung gelöscht und die Logikgatter fallen wieder in ihren Default-Zustand. Somit wäre es auch empfehlenswert, wenn vorher an einen speicherbaren Flash- oder EEPROM-Baustein gedacht wird. Einige Hersteller (wie Actel) bieten jedoch FPGAs an, die in ihrer Architektur bereits einen integriert haben.

Wer gerne mal in die Materie schlüpfen möchte, dem empfehle ich wärmstens sich nach einem günstigen Entwicklungskit der Hersteller Xilinx, Actel oder Altera umzugucken. Es wäre jedoch zu empfehlen sich vorab zu informieren für welche FPGAs die kostenlosen SDKs der Hersteller geeignet sind bevor man sein wertvolles Geld für ein Board verpulvert, welches sich am Ende nicht oder nur über eine teure Lizenz kompilieren lässt. Ansonsten verweise ich gerne auf fpga4fun, dort finden sich einige gute Einstiegsinformationen zum besseren Verständnis sowie eine gute weiterführende Linksammlung zum Erlernen einer Hardwarebeschreibungssprache und zum dementsprechenden FPGA-Markt.

Keine Kommentare:

Kommentar veröffentlichen