FPGA-Programmierung OpenCL – neuer Ansatz für die Programmierung von SoC-FPGAs

Margit Kuther

Anbieter zum Thema

Die Welten von CPUs und FPGAs verschmelzen beim Einsatz von SoC-FPGAs. Durch diese Kombination lassen sich Embedded-Systeme mit besonderen Anforderungen realisieren.

MCV: Das SoC-FPGA-Modul integriert für zusätzliche Funktionalität den Core in ein Referenzdesign.
MCV: Das SoC-FPGA-Modul integriert für zusätzliche Funktionalität den Core in ein Referenzdesign.
(Bild: Denx)

Seitdem OpenCL als Programmiersprache auch für FPGAs entdeckt wurde, haben klassische Software-Ingenieure neue Möglichkeiten zum Einsatz von SoC-FPGAs. FPGAs sind beliebte Arbeitstiere, wenn es gilt produktspezifische Funktionalität in der Elektronik abzubilden.

Sie bieten gerade dann die nötige Flexibilität zur Skalierung durch verschiedene Bausteinfamilien, wenn unterschiedliche Komplexitätsgrade gefragt sind. Die Implementierung zusätzlicher individueller Schnittstellen ist beispielsweise ebenso machbar, wie die Vorverarbeitung von Messdaten.

Die Vielzahl an verfügbaren, fertig entwickelten IP-Cores nehmen dem Entwickler in der Praxis bereits Arbeit ab und sind der Grundstock zur schnellen Projektumsetzung.

Durch den Einsatz der Open Computing Language (OpenCL) bei FPGAs gelingt es, die klassische Trennung von Hard- und Software-Ingenieuren zu überwinden und dem Vakuum der fehlenden FPGA-Entwickler entgegenzusteuern.

Die Softwerker rechnen bisher mit General-Purpose-CPUs, die allerdings bei bestimmen Aufgabenstellungen an ihre Leistungsgrenzen stoßen. Hardwerker implementieren ihren Lösungsansatz in der Hardware und können aufbauend auf ihrem spezifischen Know-how sehr leistungsstarke und Energie-effiziente Systeme realisieren.

MVC-Modul im Überblick

Das MCV-Modul bietet die Flexibilität der Cyclone V SoC FPGA-Familie von Altera. Grundlage ist ein ARM-basiertes Hard Processor System (HPS) aus Prozessor, Peripherie und Speicherschnittstellen mit FPGA-Funktionalität, das auf einem Kommunikations-Backbone aufbaut. Darüber hinaus sind auf dem Modul bereits PCI Express Gen2, Multiport Memory Controller und serielle, high-speed Transceiver integriert.

Für eine definierte Anzahl von Standardschnittstellen ist Mainline U-Boot und Linux verfügbar. DENX Software Engineering bietet darüber hinaus Entwicklungs-Support für zusätzliche Treiber. Der Linux-Spezialist vereinfacht die Linux-Programmierung durch sein Rootfile-System auf Basis des Embedded Linux Development Kits Version 5.6 (ELDK), so dass der Entwickler Out-of-the-Box mit der Programmierung verschiedenster Anwendungen starten kann.

• Altera Cyclone V SoC-FPGA

• Dual 800 MHz Cortex A9 Cores

• HPS-Peripherie

• 1 GByte DDR3-Speicher

• 256 Mbit Configuration Device

• 4GByte eMMC Memory

• Clock-Distribution

• Voreingestellte Konfiguration:

o Gigabit Ethernet

o UART

o CAN

o SPI

o I²C

o USB

o Zusätzliche Schnittstellen können optional implementiert werden, z.B. Display Controller oder weitere Gigabit Ethernet-Schnittstellen

o CAN, SPI, I²C,

o DSP Blöcke

• einfache 3,3V Versorgung

• Größe 74mm x 42mm

• 2 x Samtec Steckverbinder für den board-to-board Interconnect

OpenCL sorgt für die Beschleunigung nach Maß

OpenCL ist ein verbreiteter Standard, der auf die parallele Bearbeitung komplexer Berechnungen setzt. Nach der Entwicklung von OpenCL für Grafikkarten (GPU) ermöglichen es neuere Ansätze, diese Umgebung auch auf anderen CPU-Architekturen, wie beispielsweise Alteras SoC-FPGAs zu nutzen.

Die Rechnerinstanz, auf welcher der OpenCL-Code ausgeführt wird, wird als Accelerator bezeichnet. Die eigentlichen OpenCL-Operationen werden Kernel genannt und wurden ursprünglich in der Programmiersprache C erstellt.

OpenCL stellt verschiedene APIs zur Verfügung, um das System mit unterschiedlichen Programmiersprachen z.B. C, C++, Phyton, etc., verwenden zu können. Das OpenCL SDK von Altera unterstützt unter anderem die Cyclone-V-SoC-FPGA-Familie.

Bei dieser Technologie wird die Rechenarithmetik von der eigentlichen Zielhardware getrennt. Eine vorhandene OpenCL-Anpassung von IP-Core und BSP für die Zielhardware vorausgesetzt, muss für die Realisierung der gewünschten Funktionalität kein spezifisches Know-how über VHDL oder eine andere Synthesesprache vorhanden sein.

Artikelfiles und Artikellinks

(ID:43810469)

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung