FPGAs und programmierbare SoCs: Grundlagen und Vorteile

| Autor / Redakteur: Steve Carr * / Sebastian Gerstl

Ein LOGI-Board von Premier Farnell, dass Einplatinenrechner wie Raspberry Pi oder Beagle Board Black um die Flexibilität und den Funktionsumfang eines FPGAs erweitert. Dank ihrer Wiederprogrammierbarkeit und ihrer zunehmenden Komplexität lösen FPGAs und Programmierbare SoCs herkömmliche Prozessor- oder Mikrocontroller-basierte Systemlösungen zunehmend ab.
Ein LOGI-Board von Premier Farnell, dass Einplatinenrechner wie Raspberry Pi oder Beagle Board Black um die Flexibilität und den Funktionsumfang eines FPGAs erweitert. Dank ihrer Wiederprogrammierbarkeit und ihrer zunehmenden Komplexität lösen FPGAs und Programmierbare SoCs herkömmliche Prozessor- oder Mikrocontroller-basierte Systemlösungen zunehmend ab. (Bild: Premier Farnell)

Programmierbarkeit ist zu einem zentralen Begriff der Elektronikbranche geworden. Entwicklung von Embedded-Softwarelösungen macht mittlerweile einen Großteil der Budgets aus. Bausteine, die auf Hardware-Ebene konfigurierbar sind, erfreuen sich zunehmender Beliebtheit – und machen den Einsatz klassischer Prozessoren zunehmend überflüssig.

Field Programmable Gate Arrays (FPGAs) sind die Antwort der Branche auf maßgeschneiderte Schaltkreise (ICs) ohne die Entwicklungskosten, die normalerweise mit der Entwicklung eines ASIC einhergehen. Ihre Architektur unterstützt den Einsatz von anwendungsspezifischen digitalen Logiken, die eine wesentlich höhere Leistung erbringen können als ein Mikroprozessor mit der gleichen Aufgabe auf Software-Ebene.

Die Leistung gehört zu den zahlreichen Gründen dafür, warum FPGAs heutzutage so beliebt sind. Ihre Vorteile gehen aber noch viel weiter, weshalb sie sich für nahezu alle Anwendungsbereiche eignen.

Was ist ein FPGA?

Anders als herkömmliche integrierte Schaltkreise (ICs), bei denen ein Großteil der Funktionen festgelegt ist, ist ein FPGA ein vergleichsweise unbeschriebenes Blatt. Der Begriff „Gate Array“ bezieht sich auf die Logikgatter, die so konfiguriert werden können, dass sie digitale Schaltkreise wie Schaltungen, Addierer oder Multiplikatoren erzeugen. Diese lassen sich wiederum kombinieren, um noch komplexere digitale Funktionen zu erstellen. Zudem ist es möglich, einen umfassenden Mikrocontroller in einer FPGA-Struktur umzusetzen, wodurch sich Stückkosten und somit auch die Gesamtkosten eines Produkts reduzieren lassen.

Während die Anordnung von Gattern erklärt, was innerhalb eines FPGA passiert, nutzen die Bausteine in vielen Fällen Look-up-Tabellen, um die Ausgangsleistung eines Karnaugh-Diagramms nachzustellen. Dieses Diagramm dient zur übersichtlichen Darstellung und Vereinfachung Boolescher Funktionen. Die Anzahl der Elemente in einer Look-up-Tabelle (von Herstellern oftmals als LUT abgekürzt) bestimmt im Endeffekt, wie komplex die entsprechende Boolesche Funktion sein kann.

Heute verfügen Bausteine über Tausende LUTs. Glücklicherweise sind Entwickler jedoch nicht mehr für die Übersetzung von Logikausdrücken in der Look-up-Tabelle verantwortlich – das macht die Entwicklungsumgebung des Herstellers. Sie ist auch für die Konfiguration eines FPGA verantwortlich (aus Leistungssicht) und entscheidet, welche Funktion wo im Gerät untergebracht wird. Diese Planung, im Englischen auch „Floor Planning“ genannt, ist nicht nur für die Leistungsoptimierung wichtig, sondern trägt auch zur Maximierung der Auslastung eines Geräts bei. Aus diesem Grund wird die Technologie von FPGA-Herstellern wohl gehütet. Das Front-End-Design kann jedoch oftmals durch verschiedene Entwicklungsumgebungen von anderen Anbietern bearbeitet werden, was es Entwicklern ermöglicht, die Umgebung ihrer Wahl zu verwenden.

Das erstreckt sich sogar auf die Art und Weise, wie das Design eingegeben wird. Die Branche unterstützt zwei Sprachen, die speziell für die Entwicklung von Hardware konzipiert wurden; VHDL und Verilog. Hierbei handelt es sich um sogenannte Hardwarebeschreibungssprachen (HDLs), da diese die Logikfunktionen und deren Verbindungen buchstäblich so beschreiben, wie höhere Programmiersprachen es in der Software-Entwicklung tun. Eine der beliebtesten Sprachen aus dem Bereich der Software-Entwicklung, C++, wurde zu angepasst und erweitert, dass sie als HDL verwendet werden kann. Hier ist sie unter dem Namen SystemC bekannt. Anders als Softwaresprachen funktionieren HDLs zeitgleich; das heißt, die gesamte beschriebene Hardware läuft zur gleichen Zeit, unabhängig davon, wo sie im Verzeichnis auftaucht. Dieser gleichzeitige Betrieb gehört zu den wichtigsten Konzepten, die Entwickler für die Entwicklung von FPGAs (oder ASICs) verstehen müssen.

Ebenso wie auch HDLs können FPGAs mithilfe einer herkömmlichen Schaltungserfassung entwickelt werden. Aufgrund ihrer zunehmenden Komplexität und Kapazität ist es heutzutage oftmals jedoch praktikabler, komplexe FPGAs auf Makroebene mithilfe vorab entwickelter (und geprüfter) Funktionen innerhalb einer Entwicklungsumgebung aufzusetzen.

Führende Anbietern von FPGAs, darunter Xilinx und Intel (nach dessen Übernahme von Altera), bieten zu diesem Zweck ganze Bibliotheken an Logikblöcken (auch IP, Intellectual Property) an. Auch unabhängige Unternehmen entwickeln IP; in vielen Fällen handelt es sich hierbei um die gleiche IP wie sie ASIC-Entwickler in maßgeschneiderten Chipdesigns verwenden würden.

Zunehmende Flexibilität, geringere Designkomplexität

Programmierbare Logikbausteine gibt es bereits sehr mehreren Jahrzehnten. Mit der Zeit sind sie jedoch immer komplexer geworden. Ihr reguläres Aufbaumuster hat es der Halbleiterindustrie zudem ermöglicht, Innovationen voranzutreiben. Somit gehören FPGAs in der Regel zu den ersten um Handel erhältlichen ICs, die im Rahmen modernster Prozesse hergestellt werden.

Ihre grundsätzlich hohe Leistungsfähigkeit und kurzen Entwicklungszyklen (im Vergleich zu maßgeschneiderten ASICs) machen sie zu einer beliebten Lösung für Anwendungen, bei denen die Leistung im Vordergrund steht und der Wettbewerb groß ist, wie z. B. in der Telekommunikationsbranche. Aktuell integrieren immer mehr FPGA-Hersteller neben den üblichen konfigurierbaren Strukturen festgelegte Versionen. Das liefert Entwicklern die Flexibilität eines FPGA und den Komfort einer vorab konfigurierten Funktion, wodurch auch die Anzahl der möglichen Einsatzbereiche steigt.

Da FPGAs im Rahmen modernster Herstellungsprozesse gefertigt werden, bieten sich auch hier Vorteile. Dazu gehört natürlich eine höhere Transistordichte, jedoch auch eine geringere Leistungsfähigkeit. Schon früh wurden FPGAs für ihren relativ hohen Stromverbrauch im Vergleich zu Bausteinen mit festen Funktionen kritisiert; dies ließ sich jedoch nicht vermeiden, da für die gleiche Funktion typischerweise wesentlich mehr Transistoren eingesetzt werden mussten. Die Halbleiterindustrie hat sich jedoch darauf konzentriert, die Leistungsdichte in den Fertigungsprozessen zu reduzieren, um mehr Transistoren integrieren zu können. Das Ergebnis ist, dass FPGAs heute einen sehr geringen Stromverbrauch aufweisen können und somit für eine Vielzahl von Anwendungen in Frage kommen – sogar für batteriebetriebene Geräte.

So bieten die FPGAs der Produktreihe Spartan-7 von Xilinx 30 Prozent mehr Leistung als bisherige Generationen, verbrauchen dabei jedoch nur halb so viel Strom.

Die Vorteile programmierbarer Technologien wie FPGA oder SoC

Ein weiteres Beispiel für eine programmierbare Lösung ist die PSoC-Produktreihe von Cypress Semiconductor. Hierbei handelt es sich um hochgradig integrierte Bausteine, die ein wesentlich höheres Maß an Konfigurierbarkeit als andere programmierbare Bausteine bieten, da sie sich sowohl digital als auch analog konfigurieren lassen. Bei PSoCs handelt es sich nicht einfach nur um eine Anreihung von Logikbausteinen; mithilfe von Switched-Capacitor-Technologien können sie sogar analoge Funktionen nachahmen. Dazu kommen noch feste Funktionen und, zumindest im Falle der Produktreihe PSoC 6, duale Mikrocontroller-Prozessorkerne (ein ARM Cortex-M4 sowie ein ARM Cortex-M0+). Das PSoC 6 wird im Rahmen eines 40-nm-Prozesses gefertigt, wodurch es mehr Leistung bei einem besonders geringen Stromverbrauch erbringen kann.

Die Entwicklung hin zu festen Funktionen bedeutet, dass Entwickler programmierbare Bausteine nicht mehr einfach nur als ungebundene Gatter betrachten müssen. Stattdessen sollten sie sie als ein System mit festen Funktionen ansehen, die eng integriert sind und durch eine konfigurierbare Struktur ergänzt werden. Diese Bausteine lassen sich in der Regel mithilfe eines relativ einfachen „Drag-and-drop“-Vorgangs anpassen, was eine Reduzierung der Komplexität bedeutet.

In vielen Fällen scheint die gesteigerte Flexibilität bereits Grund genug zu sein, programmierbare Bausteine wie ein FPGA einer alternativen Lösung auf Systemebene vorzuziehen. Ihre Vorteile erstrecken sich jedoch über ihre Flexibilität hinaus auch auf ein hohes Maß an Kosteneffizienz und Leistungsfähigkeit.

Bisher wurden FPGAs meistens als Alternative zu maßgeschneiderten Lösungen, auch ASICs (Application Specific IC) genannt, gewählt. In dieser Hinsicht senken FPGAs einmalige Fixkosten (NRE, Non-Recurring Engineering Cost), die vor allem die Prüfungsphase eines Designs betreffen (welche im Falle von ASICs sehr lang ausfallen kann). Während ASICs wesentlich geringere Stückkosten als ein FPGA aufweisen, sprechen die hohen NRE (bei denen die Entwicklungsdauer bereits eingerechnet ist) aus finanzieller Sicht oftmals für FPGAs.

Im Vergleich mit standardmäßigen Logikbausteinen oder anwendungsspezifischen Standardbauteilen (ASSPs, Application Specific Standard Parts) sowie mit Mikrocontrollern und Digitalsignal-Prozessoren (DSPs) kann ein FPGA oftmals mehr Leistung erbringen. Wie bereits zuvor erklärt lässt sich Hardware wesentlich schneller umsetzen als Software, was vor allem darauf zurückzuführen ist, dass Hardware zeitgleich betrieben wird.

Dies lässt sich in einem FPGA ganz einfach durch Parallelität hochskalieren; der gleiche Funktionsblock kann innerhalb der FPGA-Struktur mehrfach wiederholt werden, sodass in sehr wenigen Taktzyklen viele Ergebnisse erzeugt werden können. Das wird vor allem in Anwendungen deutlich, die DSP-Funktionen erfordern; viele FPGAs verfügen heute über dedizierte DSP-Blöcke, die sich durch Parallelität innerhalb der Struktur anpassen lassen. Das gilt zum Beispiel auch für die Erstellung mehrerer hundert Multiply-Accumulate-Blöcke.

Viele (jedoch nicht alle) FPGAs werden beim Hochfahren durch einen (in der Regel externen) nicht volatilen Speicherbaustein konfiguriert, der den für die Konfiguration erforderlichen Bitstream enthält. Dies demonstriert einen weiteren Vorteil von FPGAs: Sie lassen sich auch nach Abschluss der Fertigung noch umprogrammieren. Heutzutage ist es üblich, Over-the-Air-Firmware-Updates für Mikrocontroller- oder Mikroprozessor-Software herauszugeben. Ebenso lohnt es sich, die Hardwarefunktionen eines FPGA „im Feld“ neu zu konfigurieren.

Auch das Thema Sicherheit während der Entwicklung wird für viele Hersteller immer wichtiger. Indem größere Bestandteile eines Systems in einen zentralen Baustein wie ein FPGA integriert werden, lässt sich auch die Designsicherheit erhöhen, während Stück- und Gesamtkosten gesenkt werden. Zudem sind FPGAs heute mit innovativen Sicherheitsfunktionen ausgestattet, um das IP von Kunden und die vom System verarbeiteten Daten zu schützen.

Fazit

Die Entwicklung von Elektronikprodukten ist eine Herausforderung. Der Trend hin zu mehr Konnektivität in allen Bereichen ist nur einer der Gründe dafür, warum Systeme immer komplexer werden. Lösungen auf Systemebene, wie z. B. FPGAs, können diese Komplexität erheblich senken, da sie einen flexiblen Designansatz auf hohen Abstraktionsstufen bieten.

FPGAs bieten heutzutage einige der Spitzenwerte in Sachen Leistung pro Watt, was sie zu einer idealen Lösungen für eine Vielzahl von Anwendungen macht. Noch nie war Flexibilität so effizient.

* Steve Carr ist Head of Global Marketing bei Premier Farnell

Kommentar zu diesem Artikel abgeben
Diese beiden Sätze sollte man sich speichern und in den einschlägigen FPGA-Foren in die Diskussion...  lesen
posted am 15.11.2017 um 13:45 von fpgaengineer


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45003991 / FPGA)