27.05.2014

Heterogene Datenverarbeitung

Die heterogene Datenverarbeitung hat sich schon seit längerer Zeit unter den Embedded-Designern etabliert. Meist kombinieren sie dazu Mikroprozessoren und FPGAs innerhalb eines Systems. Ursprünglich dienten FPGAs hauptsächlich als Schnittstellenlogik, die Verarbeitungssysteme, Peripheriegeräte und I/O miteinander verbanden. Mit der Optimierung der FPGA-Technologie wuchs auch der FPGA-Markt, der in einigen Embedded-Systemen seitdem eine größere und zentralere Rolle spielt.

Autor: Michael Hofmann, National Instruments Germany GmbH.


Bild 1: Blockdiagramm des Zynq-7000 All programmable SoC von Xilinx mit einem Dual-Core-Prozessor Cortex-A9 von ARM, der in einem FPGA integriert ist.
Bild: National Instruments Germany GmbH

Anbieter von FPGAs begannen vor nahezu zehn Jahren, sogenannte Hardcores physikalisch direkt an den FPGA gekoppelte Mikrocontroller und Mikroprozessor, einzuführen. Heutzutage werden häufiger Softcores verwendet, das heißt, der Prozesser wird als IP im FPGA abgebildet und liegt dort als vorsynthetisierte Netzliste vor. Der aktuelle Trend im Bereich heterogene Datenverarbeitung ist die Integration des Prozessors und des FPGA-Subsystems in ein einzelnes SoC (System-on-Chip). Prozessor- und softwarezentrierte Entwicklerteams benötigen neue Werkzeuge, um die Vorteile beider Systeme auf den komplexen SoCs zu nutzen.

Rekonfigurierbare I/O-Architekturen

Systementwickler begrüßen die Kombination aus Prozessor und FPGA für Embedded-Systeme aufgrund der großen Flexibilität, die sie in einer einfachen Designvorlage bietet. Grundsätzlich arbeiten Prozessor und FPGA zusammen, um die Schwächen zu beheben, die jedes Element für sich genommen aufweist. Der Prozessor im System bietet eine Vielzahl von Standardperipherieschnittstellen: Ethernet, seriell, USB, CAN, SPI, Speicher u.v.m. In einem rein prozessorgestützten Ansatz wird die anwendungsspezifische I/O typischerweise über eine oder mehrere pheriphere Schnittstellen verbunden, z.B. SPI oder USB. Software für den Prozessor zu entwickeln wird vom Großteil der Software-Ingenieure, die Standardwerkzeuge, Entwicklungssprachen und Betriebssysteme einsetzen, verstanden und umgesetzt. Sobald ein Prozessor ausgewählt wurde, stehen die möglichen I/O-Schnittstellen fest und das System wird hinsichtlich des Einsatzbereichs unflexibel. Einen FPGA zwischen dem Prozessor und beliebigen anwendungsspezifischen I/O zu platzieren, erhöht die Flexibilität und die Verarbeitungskapazität des Gesamtsystems. Durch die Integration des FPGAs erhält man eine rekonfigurierbare I/O-Architektur (RIO), die als Co-Processing Engine, Inline-Signalprozessor oder als Steuer- und Regelsystem mit extrem niedriger Latenz fungieren kann. Da FPGAs rekonfigurierbar sind, bieten sie einen Mechanismus für Hardware-Upgrades und Produktdifferenzierungen. Dies wiederum erhöht die Produktlebensdauer in einem Umfeld sich stets weiterentwickelnder Schnittstellen und Standards. Trotz der vielen Vorteile einer standardisierten Hardwaretopologie von Prozessor und FPGA bringt diese Kombination viele Herausforderungen mit sich. Dazu zählt zum einen die zusätzliche Leistungsaufnahme des FPGA-Zielsystems, zum anderen Integrationsgröße, -kosten und -komplexität eines separaten FPGAs im PCB-Design. Aber es zählt auch die Herausforderung bei der Programmierung, die im Gegensatz zur Softwareentwicklung auf Prozessoren Wissen über das digitale Hardwaredesign voraussetzt. Anbieter von FPGAs befassen sich direkt mit vielen dieser Herausforderungen. Aufgrund der Erhöhung des Kostendrucks, welcher mit benutzerdefinierten SoCs und der Möglichkeit einhergeht, mehr Funktionen in ASICs zu integrieren, entwickelten Anbieter von FPGAs allgemeine, prozessorfokussierte SoCs mit programmierbarer Logik. Diese können benutzerspezifisch angepasst werden, um spezielle Anwendungsanforderungen zu erfüllen. Das Zynq All-Programmable SoC von Xilinx integriert einen Prozessor Cortex-A9 von ARM mit FPGA-Logik. Das Programmable System-on-Chip (PSoC) von Cypress Semiconductor und das Customizable SoC (cSoC) von Microsemi SmartFusion integrieren Verarbeitungseinheiten des Cortex-M3 von ARM mit programmierbarer Logik sowie programmierbaren analogen Schnittstellen. Altera gab eine Serie von SoC-FPGA-Geräten bekannt, die auf Cortex-A9-Prozessoren von ARM mit einem FPGA basieren. Diese Produkte reduzieren Größe, Kosten und den Aufwand bei der Einbindung eines FPGAs in ein Embedded-System, was möglicherweise zu einem Standard der programmierbaren Logik in einer Vielzahl von Anwendungen führt. Außerdem kann eine Reihe von SoC-FPGA-Geräten bei verschiedenen Leistungsniveaus hunderte benutzerdefinierte ASICs ersetzen, was eine beachtliche Größenkostenersparnis zur Folge hat.

Voraussetzungen für den Erfolg

Ein in den FPGA programmierter Prozessor beseitigt (nahezu) alle Probleme, die ein eigenständiger Prozessor sowie ein separater FPGA mit sich bringen. Die letzte Schwierigkeit im Entwicklungsprozess stellt die Programmierung der zwei Subsysteme dar. Digitalen Hardwareentwicklern gefällt der Gebrauch des Wortes 'Programmierung' im Zusammenhang mit dem FPGA-Subsystem nicht, da ein FPGA nicht einfach programmiert wird. Beim FPGA-Subsystem handelt es sich um einen elektronischen Schaltkreis, der als Hardwarekomponente entwickelt wird. Normalerweise sind dazu Hardwarebeschreibungssprachen (HDLs) wie VHDL oder Verilog notwendig, um die Vorteile eines FPGAs zu nutzen. Teams, die FPGAs bereits in der Vergangenheit eingesetzt haben, verfügen daher über HDL-Kenntnisse. Enwicklerteams jedoch, die die Vorteile eines SoC mit FPGA nutzen wollen, stehen vor einer neuen Herausforderung. Es gibt eine große Zahl von Systementwicklern, die Prozessorprogrammiersprachen wie C/C++ sehr gut beherrschen. HDL-Experten repräsentieren im Vergleich zu Softwareentwicklern nur einen kleinen Teil der Gesamtheit aller Ingenieure von Embedded-Systemen. Führungskräfte sind für die Zusammenstellung eines abgestimmten Teams verantwortlich, das aus Softwareentwicklern sowie Entwicklern digitaler Hardware besteht und gemeinsam daran arbeitet, das volle Potenzial der heterogenen Architektur auf dem Prozessor und der FPGA-SoC-Architektur zu realisieren. Falls programmierbare Logikwerkzeuge nicht weiterentwickelt werden, um besser den Fähigkeiten der Entwickler von Embedded-Software zu entsprechen, werden FPGAs sowie SoCs mit FPGAs weiterhin nur die Nischen bedienen können, die von FPGAs derzeit geprägt werden. Für eine maximale Anpassung dieser SoCs investieren FPGA-Anbieter massiv in Werkzeuge und Partner, um die Entwicklungspraktiken zwischen Prozessoren und FPGAs besser aufeinander abzustimmen. High-Level-Synthesewerkzeuge wie das LabView FPGA Module, Vivado HLS oder SystemC verkleinern die Lücke in der Programmcode-Entwicklung zwischen Software- und digitalem Bereich. 2003 veröffentlichte National Instruments ein Plug-in-Modul für LabView, das auf FPGA-basierte Hardeware abzielt, die FPGAs von Xilinx beinhaltet. Das LabView FPGA Module setzt im Hintergrund Compile-Werkzeuge von Xilinx zur Synthetisierung von LabView-Code in ein FPGA-Bitfile ein. Somit verwenden Entwickler die gleiche Entwicklungsumgebung/-sprache für alle programmierbaren Ziele im heterogenen Verarbeitungssystem, das heißt, die gleiche Sprache wird benutzt, um Logik für Prozessoren und FPGAs zu verwenden. Die Programmierumgebung abstrahiert die Entwicklung von Prozessor sowie FPGA-Logik zu einer Sprache. Mit der Systemdesignsoftware kann ein einziger Systementwickler die Bereiche der Software- und FPGA-Entwicklung bewältigen, die normalerweise zwei oder mehr Ingenieure erfordern. Ein Algorithmus, der einmal geschrieben wurde, kann zwischen Prozessor- und FPGA-Subsystemen zur Optimierung der Systemtopologie hin- und hergeschoben werden. Die Kombination aus Prozessor, FPGA und anwendungsspezifischer I/O hat die LabView RIO Architecture definiert. Das All Programmable SoC Zynq-7000 spiegelt diese Architektur wider. Derzeit wird daran gearbeitet, Zynq mit LabView und zukünftige Produkte, die auf Zynq-Technologie basieren, zu unterstützen.

Auf das Wesentliche konzentrieren

Bei traditionellen Ansätzen ist die Integration von I/Os in einen FPGA häufig ein zeitaufwändiger Prozess. Viele HLS-Werkzeuge können nicht die gesamte HDL-Toolchain, mit der Entwickler digitaler Hardware vertraut sind, ersetzen. Dies liegt daran, dass die I/O-Schnittstellen des FPGAs zur realen Welt weiterhin mit HDL implementiert werden müssen. Aussagen des HDL-Entwicklerteams implizieren, dass die I/O-Integration häufig über 70% der Entwicklungszeit beansprucht, während nur 30% oder weniger für das Hinzufügen eines differenzierenden Wertes durch Steueralgorithmen oder Signalverarbeitung aufgebracht werden. Die LabView RIO Architecture kombiniert die LabView-Programmiersprache mit einer Plattform handelsüblicher FPGA-basierter Hardware, um die für die Entwicklung und Integration von I/O benötigte Zeit zu verkürzen. Beispielsweise werden die gesamte Low-Level-SPI-Kommunikation mit einem A/D-Wandler, die Kalibrierung sowie die Konvertierung zu Festkommadaten automatisch implementiert, wenn I/O-Module der C-Serie gemeinsam mit der Hardware CompactRIO verwendet werden. LabView implementiert und abstrahiert die Details der Low-Level-I/O-Integration automatisch, da die Entwicklerteams LabView mit einem Bewusstsein für alle Systemkomponenten ausstatten. Kleinere Entwicklerteams empfinden die nahtlose Integration von Software und FPGA-basierter Hardware als befreiend, da sie sich nicht mehr mit den Details der benutzerdefinierten Entwicklung auseinandersetzen müssen.

Anzeige