Programmierbare Logik Java statt HDL

FPGAs entwickeln sich zunehmend zu einer Alternative für CLPDs, ASICs oder Mikrocontrollern. Doch noch schrecken Softwareentwickler zurück, wegen der komplizierten Hardware-Beschreibungssprache (HDL) für die FPGA-Konfiguration. Dabei gibt es eine Lösung, die ohne HDL auskommt.

von Marc Hankmann, freier Journalist.

Kamen FPGAs früher lediglich als Glue Logic zum Einsatz, hat ihre rasante Weiterentwicklung dazu geführt, dass sie heute in vielen Bereichen der Digitaltechnik vorkommen – vor allem dort, wo schnelle Signalverarbeitung und flexible Schaltungen gefragt sind. So finden sich FPGAs im Rahmen der Echtzeitverarbeitung in einer Vielzahl von Algorithmen – von einfachen bis hin zu sehr komplexen. Sie erhöhen die Effizienz einer Programmierung, wenn zum Beispiel für einen konkreten Fall, etwa für kryptografische Berechnungen, eine Hardwarebeschleunigung generiert werden oder eine Schnittstelle unabhängig von einer CPU bestimmte Tasks ausführen soll. Hier zeigen sich die Vorteile von FPGAs gegenüber einem Mikrocontroller. So eignen sich diese integrierten Schaltkreise beispielsweise für Systeme, in denen spontan mehrere Schnittstellen wie GPIOs, SPI oder CAN-Bus zur Verfügung stehen müssen. Darüber hinaus verarbeiten FPGAs Informationen parallel, während ein Mikrocontroller Programme sequenziell abarbeitet und dadurch die Leistungsfähigkeit einer Anwendung einschränkt.

Im Vergleich zu ASICs bieten FPGAs mehr Flexibilität, denn sie lassen sich ohne größeren Zeit- und Kostenaufwand neu konfigurieren und damit auf dem aktuellen Stand der Technik halten. Die Eigenschaft des geringeren Designrisikos spielt insbesondere im Zusammenhang mit Kommunikationsprotokollen eine große Rolle, deren Spezifikationen sich mit der Zeit ändern können. Darüber hinaus verfügen FPGAs über die notwendigen Funktionen, um in kürzester Zeit Prototypen zu erstellen und zu testen. Auf diese Weise wird der Entwicklungs- und Fertigungsprozess von Produkten verkürzt, was sich positiv auf die Time-to-Market auswirkt. Des Weiteren verwenden Raspberry Pi-Nutzer FPGA-Module, um den Single-Board-Computer mit weiteren Schnittstellen auszurüsten. Insgesamt lässt sich festhalten, dass sich FPGA-Module speziell als Universaladapter eignen, um Hardware nach den eigenen individuellen Vorgaben zu konfigurieren.

Komplexes HDL vs. »easyCores«

Um ein FPGA zu konfigurieren, wird eine Hardware-Beschreibungssprache (Hardware Description Language, HDL) wie Verilog in den USA oder das in Europa weit verbreitete VHDL verwendet. Derartige HDLs führen Befehle nicht sequenziell Zeile für Zeile aus, wie es Softwareentwickler von anderen Programmiersprachen gewohnt sind. Eine Hardware-Beschreibungssprache ähnelt vielmehr einem Schaltplan, durch den mehrere Befehle gleichzeitig ausgeführt werden. Dadurch nimmt im Vergleich zu einer sequenziell strukturierten Programmiersprache die Komplexität zu, weshalb viele Softwareentwickler den mühevollen Einstieg in eine solche Sprache meiden. Hinzu kommt, dass die Gesamtkosten für FPGAs ab einer bestimmten Stückzahl über denen von ASICs liegen. Zwar fallen die Kosten für die Entwicklung bis hin zur Fertigung für einen ASIC höher aus als bei einem FPGA, jedoch lohnen sich letztere nur bei benutzerdefinierten Hardwarefunktionen für eine vergleichsweise geringe Anzahl von Systemen.

Eine Lösung zur Nutzung von FPGAs ohne jedwede Kenntnisse einer HDL hat os-cillation mit dem Steckmodul easyFPGA präsentiert (Bild). Der Softwareentwickler führt eine zusätzliche Abstraktionsebene ein, mit der sich aus der Hochsprache Java zuvor definierte Komponenten nutzen lassen. Diese Komponenten nennt das Unternehmen »easyCores«, die sich über Java frei zusammensetzen lassen. Aus einer solchen FPGA-Definitionsklasse wird VHDL generiert und an das Synthesewerkzeug übergeben. Zum easyFPGA-Modul gehört ein SDK (Software Development Kit), in dem neben GPIO die Komponenten Frequenzteiler, 8- und 16-bit-PWM, MIDI und die Schnittstellen SPI, UART und I²C integriert sind. Die Integration eines CAN-Bus-Ports ist über ein CAN-Wrapper möglich. Das Unternehmen hat das SDK auf Open-Source-Basis entwickelt, sodass jeder Anwender auf das Kit zugreifen und eigene easyCores hinzufügen kann.

Das easyFPGA-Board basiert auf einem »Spartan 6 XC6SLX9« von Xilinx und bietet über die standardmäßigen 2,54-mm-Stiftleisten insgesamt 72 GPIOs. Der generierte Code wird direkt über eine USB-2.0-Schnittstelle ins Steckmodul geladen. Dadurch entfällt die Nutzung eines externen Programmieradapters. Zusätzlich dient die USB-Schnittstelle zur Stromversorgung des Moduls (alternativ auch über einen Hohlstecker). Um nicht bei jedem Hochfahren des Moduls die Konfiguration neu zu laden, hat das easyFPGA einen nichtflüchtigen Speicher, der beim Hochfahren automatisch die zuletzt bekannte Hardwarekonfiguration bereitstellt.