Original-URL des Artikels: https://www.golem.de/news/fpga-prozessor-marke-eigenbau-1603-119809.html    Veröffentlicht: 22.03.2016 12:05    Kurz-URL: https://glm.io/119809

FPGA

Prozessor Marke Eigenbau

Heute kann man vieles selbst herstellen: Brillengestelle mit dem 3D-Drucker oder die Raumüberwachung mit Arduino und Co. Doch lassen sich auch Prozessoren mit selbst entwickelten Software-Algorithmen versehen? Dafür kann ein Field Programmable Gate Array (FPGA) die Lösung sein.

Nur manchen bekannt ist der Minimig, ein Amiga-Nachbau ohne Original-Bauteile, der alle Chips inklusive CPU auf einem FPGA (Field Programmable Gate Array) unterbringt - und so klassische Spiele wieder aufleben lässt. Doch spätestens seit Intel durch den Kauf von Altera für 16,7 Milliarden US-Dollar in den FPGA-Markt eingestiegen ist, sollte klar sein, dass diese Technik weit mehr bietet als ein paar Pixel aus den 80er und 90er Jahren.

Was ist ein FPGA?

Ein FPGA ist ein Chip, dessen Funktionsweise durch den Benutzer festgelegt werden kann. Von einem einfachen Zählmechanismus oder einer LED-Steuerung bis hin zu einem Mikroprozessor ist alles denkbar. Erreicht wird dies durch definierte Logikblöcke, die flexibel miteinander verbunden werden können. Dies kann beliebig oft wiederholt werden, da ein FPGA seine Informationen spätestens nach dem Ausschalten wieder verliert.

Neben der Flexibilität haben FPGAs aber noch weitere Vorteile: Sie verbrauchen wenig Strom und sind schnell, denn sie sind Meister im parallelen Ausführen von Funktionen. Auch sind ihre Wartung und die Anpassung an Kundenwünsche recht einfach, weil der FPGA beim Nutzer noch umprogrammiert werden kann, ohne dass Hardware getauscht werden muss.

Der Nachteil ist natürlich, dass man dem FPGA erst einmal das Laufen beibringen muss. Denn es gibt kein Betriebssystem oder einen Treiber, die dem Chip erklären, wie er über den HDMI-Ausgang ein paar bunte Bilder auf den Monitor bringt. FPGAs gibt es von verschiedenen Herstellern, wobei Xilinx und Altera den größten Marktanteil haben. Daneben gibt es zum Beispiel Lattice und Actel.

Wo werden FPGAs eingesetzt?

Wer FPGAs nutzt, braucht keinen Dienstleister oder eine Chipfabrik, um seine Ideen in Hardware umzusetzen. Auch der Entwurfprozess verläuft schnell, schließlich hält man in der Regel seine fertige Lösung eher in der Hand, als das erste Testmuster von der Chipfabrik geliefert werden könnte. Das macht FPGAs preislich bei kleineren bis mittelgroßen Projekten interessant. Sie finden sich unter anderem in vielen medizinischen Geräten wie Ultraschall, CRT oder Röntgen-Apparaten, aber auch in der Rückfahrkamera vom Auto, in Alarmanlagen, Robotersteuerungen und Smart-Home-Anwendungen.

Eine Alternative zum Einsatz eines FPGA ist ein ASIC, eine anwendungsspezifische integrierte Schaltung (englisch: Application-specific integrated Circuit). Wie der Name sagt, lässt sich ein ASIC ebenso auf die Lösung einer Aufgabe zuschneiden wie ein FPGA. Allerdings kann ein ASIC nach seiner Herstellung nicht mehr angepasst werden. ASICs sind so schnell wie FPGAs und auch stromsparend und haben als weiteren Vorteil geringere Herstellungskosten. Auf der anderen Seite haben sie hohe Fixkosten vor Beginn der Produktion, etwa für die Entwicklung und Herstellung einer Fotomaske.

Als weitere Alternative kann man sich auch eine CPU oder GPU denken. Beide verfügen über einen festen Satz von Befehlen und werden über Software-Programme angesprochen. Sie sind also relativ flexibel und können zur Laufzeit angepasst werden. Bei der Hardware selbst muss das genommen werden, was die Hersteller anbieten - eigene Konfigurationen sind nicht möglich. Eine CPU arbeitet die Befehle nacheinander ab, während eine GPU parallel arbeitet. Die GPU erreicht dadurch eine Geschwindigkeit, die mit der eines FPGA vergleichbar ist, jedoch liegt der Stromverbrauch viel höher. Dies gilt auch für die CPU.



Wie kommen die Ideen auf den Chip?



Wie erwähnt machen die definierten Logikblöcke es einfacher, die eigenen Ideen auf den Chip zu bringen. Aber wer befürchtet, Nullen und Einsen persönlich durch die mitunter Zehntausenden Logikblöcke eines FPGA schubsen zu müssen, kann beruhigt sein: Es gibt Programmiersprachen, die dies erheblich vereinfachen. Allerdings spricht man in diesem besonderen Fall von einer Hardware-Beschreibungssprache (HDL, Hardware Description Language). Denn man entwirft ja kein Programm, sondern das Verhalten einer logischen Schaltung.

Wie so oft in der IT gibt es genau zwei HDLs, die um die Marktführerschaft konkurrieren. Die eine ist Verilog, die in ihrer Struktur an C erinnert und in den USA sehr verbreitet ist. Die Europäer bevorzugen hingegen VHDL, weshalb man für diese Sprache eher Tutorials in deutscher Sprache bekommt. Dem FPGA ist die Sprache egal, da er nach dem Synthetisieren (analog zum Kompilieren) das gleiche Ergebnis erhält.

Entwicklungsumgebungen gibt es von Xilinx und Altera in einer einfachen Variante zum Download. Beide beherrschen den Umgang mit Verilog und VHDL. Benutzer von Altera-FPGAs wählen die Quartus Prime Lite Edition. Bei Xilinx heißt die Software Vivado HL WebPACK Edition. Man muss sich jedoch bei Xilinx registrieren, um eine Lizenz zu erhalten. Beide Entwicklungsumgebungen gibt es für Windows und Linux, Mac-Benutzer müssen sich mit Bootcamp behelfen.

Um sein Programm auf den FPGA zu bringen, gibt es verschiedene Möglichkeiten. Die gängigste ist die Verbindung des PC mit dem Entwicklerboard über einen JTAG-Programmer, worüber der FPGA direkt angesprochen wird. Aber auch Varianten, in denen das Programm über eine Micro-SD-Karte geladen werden kann, sind üblich. In fertigen Implementierungen wie etwa einem medizinischen Gerät übernimmt in der Regel ein EPROM die Programmierung des FPGA, da dieser bei jedem Abschalten zurückgesetzt wird.

Gibt es vorgefertigte Funktionen?

Es gibt Funktionen, die bei einem FPGA immer wieder benötigt werden, etwa solche für Laufwerke oder Netzwerkkommunikation. Damit sie nicht jedes Mal neu angelegt werden müssen, gibt es das Prinzip des Design Reuse oder auch IP (Intellectual Property).

Von den Herstellern werden einige grundlegende Funktionen im FPGA angelegt, die bei Bedarf verwendet werden können. Man spricht von IP-Cores, die noch einmal in Soft- und Hard-Cores unterschieden werden. Wenn eine Funktion als Soft-Core zur Verfügung steht, bedeutet das, dass sie verändert und angepasst werden kann, es gibt praktisch keinen Unterschied zu den eigenen Funktionen. Eine Hard-Core-IP lässt sich nicht verändern, da sie als Hardwarelösung implementiert ist und mit dem programmierbaren Teil des FPGA kommuniziert.

Die eingebüßte Flexibilität wird durch einen Geschwindigkeitsvorteil kompensiert. Ein Beispiel hierfür sind die neuen FPGAs mit dem Zusatz SoC (System on a Chip). Hier findet sich ein ganzer Cortex-A9 Dual-Core-Prozessor von ARM mit auf dem FPGA. Es gibt auch Drittanbieter für IP-Cores, die gegen Bezahlung gewünschte Funktionen liefern. Freie Implementierungen findet man auf Opencores.org. Diese Seite bietet auch einen guten Überblick darüber, was mit FPGAs alles möglich ist.



Worauf sollte man als Einsteiger achten?



Die Leistung des ausgewählten FPGAs spielt keine so große Rolle, viel wichtiger ist, dass man ausreichend Dokumentationen und Hilfe in Foren findet. Daher ist es keine schlechte Idee, sich für ein Modell der beiden großen Hersteller Xilinx oder Altera zu entscheiden. Studenten sollten an ihrer Hochschule nachfragen, welcher Hersteller favorisiert wird, denn die Entwicklungsumgebungen unterscheiden sich durchaus.

Auch wenn die anfänglichen Projekte oft erst einmal darin bestehen, LEDs zum Leuchten zu bringen, lohnt sich bei etwas fortgeschrittenen Projekten ein Blick auf die Ausstattung des Entwicklerboards. Bei preiswerten Modellen muss man schon für den Anschluss der LEDs zum Steckbrett greifen; das macht den Weg zum eigenen Mikrocontroller beschwerlich. Damit das Entwickeln und Testen Spaß macht, sollte zumindest die Möglichkeit vorhanden sein, einen Bildschirm anschließen zu können. Auch für Eingabemöglichkeiten sollte gesorgt sein. Vor dem Kauf sollte klar sein, wie die Schaltungen auf den FPGA übertragen werden sollen (Stichwort JTAG), denn ein zusätzlicher Programmer kann den Preis schnell nach oben treiben.

Zu guter Letzt sollte das gewünschte Board natürlich auch verfügbar sein. Die Chancen dafür sind größer, wenn das Board mit einem aktuellen FPGA ausgestattet ist. Für den Anfang sind hier der Zynq-7010 von Xilinx und der Altera Cyclone V oder IV interessant. Im Internet sind einige Verkäufer zu finden, die eine deutsche Niederlassung und Webseite haben, aber aus den USA versenden, was dennoch manchmal erstaunlich schnell gehen kann. Eine große Vergleichsliste gibt es bei Mikrocontroller.net. Beim Direktversand aus dem Ausland besteht natürlich die Gefahr, dass das mitgelieferte Netzteil nicht in deutsche Steckdosen passt, dann hilft ein Adapter.





Welche Entwicklerboards sind zu empfehlen?



Um die Suche nach einem geeigneten Board abzukürzen, findet sich hier eine Übersicht über interessante Modelle, die auch bei wachsenden Anforderungen noch genug Reserven haben.

Altera-Entwicklerboards

DE0-Nano-SoC-Kit (ca. 124 Euro)

Das DE0-Nano-SoC-Kit von Terasic ist ein Klassiker in Neuauflage. Es bietet einen Altera Cyclone V FPGA in Verbindung mit einem 925-MHz-Dual-Core-Cortex-A9 von ARM, einem GByte DDR3-SDRAM und genügend Elemente für erste Experimente (acht LEDs, zwei Druckschalter, vier Schiebeschalter). Außerdem gibt es die Möglichkeit, Arduino Shields zu verwenden (Uno-R3-kompatibel). Wegen des Cortex-A9 kann auch Linux auf dem Board ausgeführt werden.



DE0-Nano (ca. 103 Euro)

Für etwas weniger Geld gibt es den Vorgänger mit einem Cyclone IV. Er hat ebenfalls acht LEDs, zwei Druckschalter und vier Schieberegler, aber kein ARM und keine Arduino Shields.

Waveshare OpenEP2C5-C Package B (ca. 127 Euro)

Der chinesische Hersteller Waveshare ist häufig bei Amazon und Ebay zu finden. Er bietet ganze Baukästen, bei denen zusätzliche Module einfach angesteckt werden. Die verbauten FPGAs sind schon etwas betagter, aber immer noch für den Einstieg zu gebrauchen. Im hier beispielhaft genannten Paket befindet sich ein Cyclone II. Da der Inhalt der Pakete zu variieren scheint, muss genau die Beschreibung studiert werden, was enthalten ist. Denn drei Displays bringen zum Beispiel nicht viel, wenn kein JTAG-Modul dabei ist.

MiST (ca. 200 Euro)

Trotz des auf Deutsch merkwürdig anmutenden Namens ist der mit einem Cyclone EP3C25 bestückte MiST eine Erwähnung wert. Ursprünglich entworfen, um als Basis für einen Amiga- und Atari-ST-Nachbau zu dienen, hat sich schnell eine Fangemeinde gebildet und die Anzahl der vorhandenen Cores, Wikis und Tutorials in die Höhe getrieben. Geliefert wird der MiST in einem Gehäuse, das Zugriff auf die Anschlüsse (hervorzuheben sind VGA und Joystick) gewährt.

Xilinx-Entwicklerboards

Trenz Electronic TE0726 Zynq "ZynqBerry" (ca. 117 Euro)

Dieses Board eines deutschen Herstellers mit dem Formfaktor eines Raspberry Pi 2 hat einen Zynq 7010 mit 128 MByte DDR3L-RAM und vier USB-Ports, 100 MBit Ethernet RJ45, einen Micro-SD-Kartenslot und eine 3.5-mm-Audio-Buchse. Ein Bildschirm lässt sich über HDMI anschließen. Der Zynq 7010 bietet ebenfalls einen Cortex-A9 Prozessor von ARM.



Trenz Electronic TE0723 Zynq "Arduzynq" (ca. 105 Euro)

Ebenfalls von Trenz Electronic stammt der Arduzynq, der für Arduino-Entwickler interessant ist. Er bietet auch einen Xilinx Zynq-7010 und den dazugehörigen Cortex-A9-Dual-Core von ARM. Die Anschlussmöglichkeiten sind nicht so vielfältig wie beim ZynqBerry, dafür ist er Arduino-kompatibel.



Waveshare XILINX Spartan-3E (ca. 83 Euro)

Dieses Modell ist die Xilinx-Variante von Waveshare. Auch hier werden verschiedene Pakete mit unterschiedlichen Inhalten angeboten. Der FPGA ist hier ein Spartan-3E.



Was wird in Zukunft mit FPGAs möglich sein?



Mit dem Kauf von Altera hat Intel sicher einen wichtigen Schritt getan, um seine Prozessoren noch weiter ausbauen zu können. Auch wenn die ersten Modelle einen eher nüchternen Eindruck machen, ließ sich schon erkennen, was CUDA aufgrund der parallelen Verarbeitung leisten kann und welchen Leistungsschub das bedeutet - sofern die Software damit umgehen kann.

Bis dahin ist sicher noch ein wenig Zeit, in der die ARM-FPGA-Kombinationen bereits einen Ausblick und Entwicklern die Möglichkeit geben, sich für die Zukunft zu rüsten. Doch auch Bastler finden dank der gefallenen Preise und der besseren Verfügbarkeit von FPGAs neue Wege, um ihre Projekte zu bereichern.  (bsc)


Verwandte Artikel:
Aaeon UP Core Plus: Entwickler-Platine koppelt Intel Atom mit AI-Hardware   
(28.02.2018, https://glm.io/133045 )
AMDs Embedded-Pläne: Ein bisschen Wunschdenken, ein bisschen Wirklichkeit   
(23.02.2018, https://glm.io/132925 )
Zynq Ultra Scale Plus: Xilinx lässt erste 16-nm-Chips fertigen   
(03.07.2015, https://glm.io/115030 )
Broadwell-EP: Intel zeigt Xeon E5 mit Arria-FPGA auf einem Package   
(15.03.2016, https://glm.io/119772 )
Ryzen V1000 und Epyc 3000: AMD bringt Zen-Architektur für den Embedded-Markt   
(21.02.2018, https://glm.io/132876 )

© 1997–2020 Golem.de, https://www.golem.de/