Die von Enclustra entwickelte FPGA-Manager IP-Lösung implementiert die gesamte Kommunikation zwischen einem Host-PC und einem FPGA.

Die von Enclustra entwickelte FPGA-Manager IP-Lösung implementiert die gesamte Kommunikation zwischen einem Host-PC und einem FPGA. (Bild: Enclustra)

Eck-Daten

Bei der FPGA-Manager IP-Lösung wird im FPGA ein IP-Core eingebaut, der mit einer mitgelieferten Software-Bibliothek auf Host-PC-Seite kommuniziert. Dadurch kann aus der Host-PC-Software einfach auf Register im FPGA zugegriffen werden. Es lassen sich auch Datenströme in beide Richtungen übertragen, ohne dass der Benutzer sich zum Beispiel um Protokolle kümmern muss.

FPGAs werden für immer mehr Produkte eingesetzt, deren Vorgänger-Generation noch mit Mikroprozessoren oder DSPs realisiert wurde. Beispiele dafür sind etwa Motorensteuerungen, Messgeräte und Software Defined Radio (SDR) Anwendungen. Der Einsatz der neuen Technologie bedeutet aber nicht nur die Verfügbarkeit von mehr Rechenleistung bei weniger Leistungsaufnahme, sondern auch, dass sich ganze Entwicklungsteams mit einer völlig neuen Technologie auseinandersetzen müssen. Zuletzt war das beim Umstieg von hauptsächlich analoger Elektronik zu mehrheitlich Mikroprozessor gestützten Systemen der Fall. Genau wie damals sind auch heute bei einem anstehenden Technologie-Wechsel grundlegende Änderungen an den Entwicklungsprozessen nötig, um die neuen Möglichkeiten effizient zu nutzen. Matlab-basiertes Prototyping stellt hier zwar nicht die einzig richtige „Patentlösung“ dar, sondern ist lediglich ein möglicher Ansatz, um FPGA-Systeme effizient und risikoarm zu entwickeln – doch dieser Ansatz hat sich bei der Firma Enclustra in diversen Projekten bereits als erfolgreich erwiesen.

Übliche Prototyping-Probleme in FPGA-Projekten

 Mikroprozessoren und DSPs arbeiten sequentiell und werden größtenteils in den meisten Applikationsspezialisten bekannten Programmiersprachen C/C++ programmiert. FPGAs arbeiten dagegen von Haus aus hochgradig parallel, die Designs werden meist in HDL (VHDL oder Verilog) beschrieben und darüber hinaus ist der Entwicklungs-Flow für FPGAs völlig anders als bei herkömmlicher Software. Diese Unterschiede führen zu erheblichen Problemen beim Prototyping/Debugging:

Zugänglichkeit. Während praktisch alle Applikationsspezialisten C/C++ genügend gut beherrschen um Änderungen schnell und effizient direkt auf der Hardware zu testen, kennen sich nur die wenigsten von ihnen auch mit der Implementierung von FPGA-Designs aus. Deshalb muss normalerweise für jede Änderung ein Implementationsspezialist hinzugezogen werden. Das kostet nicht nur wertvolle Zeit, sondern führt auch zum Risiko von Missverständnissen zwischen den beiden beteiligten Entwicklern.

  • Debugging-Möglichkeiten. Um ein Problem im Programmcode eines Prozessors aufzuspüren, kann dieser an beliebigen Stellen (Breakpoints) angehalten und der Source-Code Schritt für Schritt ausgeführt werden (Single Stepping), und auch der Zustand beliebiger Variablen kann jederzeit ausgelesen werden. All diese Möglichkeiten bieten FPGAs nicht. Natürlich kann man einen Logikanalysator ins FPGA-Design einbauen um Daten aufzuzeichnen; allerdings sind diese in Bezug auf die Speichertiefe oft sehr eingeschränkt. Erschwerend kommt hinzu, dass die aufgezeichneten Daten oftmals nicht einfach zu interpretieren sind, da mehrere Kanäle parallel verarbeitet werden oder nicht der gesamte Zustand der Schaltung auf einmal erfasst werden kann.
  • Agile Development. Embedded Software wird heute normalerweise agil entwickelt. Dafür sind schnell ausführbare, automatisierte Unit Tests sowie kurze Durchlaufzeiten von der Idee bis zum Test auf der Hardware unabdingbar. Der FPGA-Design-Flow ist diesen Ideen genau entgegengesetzt: Simulationen dauern eine lange Zeit, und selbst wenn eine Änderung schnell implementiert sein sollte, dauert das Kompilieren eines neuen FPGA-Bitstreams für Tests auf der Hardware oft mehrere Stunden.

 Je nach Gegebenheiten lassen sich einige dieser Probleme zum Beispiel durch die Generierung von VHDL-Code aus C/C++ oder Matlab/Simulink umgehen. Erfahrungen aus realen Projekten haben allerdings gezeigt, dass die Code-Generierung nur einen Teil der Probleme löst – und das auch nur, wenn dieser Ansatz überhaupt eingesetzt werden kann.

Vorteile von Matlab-basierten Prototypen

Vergleich von Modell und Implementation mit einem Matlab-basierten Prototyp.

Vergleich von Modell und Implementation mit einem Matlab-basierten Prototyp. Enclustra

Das Hauptziel von Matlab-basierten Prototypen ist es, den Applikationsspezialisten so weit wie möglich von der FPGA-Implementierung abzuschirmen. Die Prototypen sollen dieses Ziel einerseits dadurch erreichen, dass sie Änderungen schnell und einfach testen können, bevor der Aufwand der tatsächlichen Implementation in Angriff genommen wird. Andererseits sollen auch Messungen mit der tatsächlichen Hardware einfach und ohne spezielle FPGA-Kenntnisse möglich sein.

Matlab-basierte FPGA-Prototypen lassen sich einfach aus Matlab-Skripts ansprechen.

Matlab-basierte FPGA-Prototypen lassen sich einfach aus Matlab-Skripts ansprechen. Enclustra

In den Bereichen Regelungstechnik und Signalverarbeitung hat sich Matlab als Quasi-Standard für die Entwicklung von Algorithmen etabliert. Die meisten Algorithmen werden in Matlab optimiert und analysiert, bevor sie implementiert werden. Dies gilt unabhängig davon, ob die tatsächliche Implementation von Hand oder über Code-Generierung geschieht. Neben dem Algorithmus selbst werden dabei normalerweise auch Skripts geschrieben, um die Performanz des Algorithmus zu analysieren und Parameter für verschiedene Anwendungsfälle zu berechnen. An dieser Stelle wäre es natürlich von Vorteil, mit Matlab direkt Messungen auf der realen Hardware durchführen zu können.

Dies ist tatsächlich möglich – ein Matlab-basierter Prototyp kann direkt aus Matlab-Skripts angesprochen werden. Dadurch erhält der Applikationsspezialist direkten Zugriff auf die tatsächliche FPGA-Implementation des Algorithmus, kann sich aber weiterhin in der ihm gut bekannten Welt von Matlab bewegen. Gleichzeitig kann er auch die bereits während der initialen Entwicklung des Algorithmus geschriebenen Analysefunktionen einfach auf Daten anwenden, die von der realen Hardware aufgezeichnet wurden. Dies gilt ebenfalls für die Berechnung von Parametern (zum Beispiel Filter-Koeffizienten) für verschiedene Anwendungsfälle. Alle bereits in Matlab simulierten Testfälle lassen sich also auch auf der Hardware ausführen, und die Ergebnisse mit realen aufgezeichneten Daten lassen sich einfach mit Simulationen vergleichen.

FPGA-Spezialisten sind jedoch nach wie vor nötig, wenn tatsächlich eine Änderung am Algorithmus vorgenommen werden muss. Genau wie bei Mikrocontrollern und C/C++ kann der Applikationsspezialist aber wie gewohnt für die Optimierung von Parametern oder ausführliches Testen selbstständig und effizient arbeiten.

Everything FPGA

Enclustra ist ein innovatives und erfolgreiches FPGA-Design-Unternehmen. Mit dem FPGA Design Center erbringt es Dienstleistungen im gesamten Spektrum der FPGA-basierten Systementwicklung, von Highspeed-Hardware über HDL-Firmware bis zu Embedded-Software, von der Spezifikation über die Implementation bis zur Prototypenproduktion. Mit dem FPGA Solution Center entwickelt und vertreibt Enclustra hochintegrierte FPGA-Module sowie FPGA-optimierte IP-Cores. Mit der Spezialisierung auf die zukunftsträchtige FPGA-Technologie und breitem Anwendungswissen kann das Unternehmen in vielen Bereichen mit minimalem Aufwand optimale Lösungen bieten.

Durch die bestehenden Lösungen für die Kommunikation zwischen Matlab und einer FPGA-Implementation lassen sich Matlab-basierte Prototypen also mit minimalem Zusatzaufwand realisieren. Zwei Beispiele für bereits bestehende Lösungen sind etwa der FPGA-Manager von Enclustra und Simulink Real-Time.

FPGA-Manager – die universelle Verbindung zwischen Matlab und FPGA

Die von Enclustra entwickelte FPGA-Manager IP-Lösung implementiert die gesamte Kommunikation zwischen einem Host-PC und einem FPGA. Dazu wird im FPGA ein IP-Core eingebaut, der mit einer mitgelieferten Software Library auf Host-PC-Seite kommuniziert. Dadurch kann aus der Host-PC-Software einfach auf Register im FPGA zugegriffen werden. Darüber hinaus können auch Datenströme (zum Beispiel Video-Streams) in beide Richtungen übertragen werden, ohne dass der Benutzer sich um Protokolle oder andere Low-Level-Spezifikationen kümmern muss. FPGA-Manager unterstützt dabei verschiedene Schnittstellen (PCIe, Ethernet, USB), Programmiersprachen (C, C++, C#, Matlab), Betriebssysteme (Windows, Linux) und FPGA-Hersteller (Xilinx, Intel/Altera). Dadurch ist diese Kommunikationslösung flexibel genug, um in den meisten Anwendungen eingesetzt werden zu können. Der Aufwand für eine Verbindung zwischen Host-PC und FPGA fällt dadurch minimal aus.

Zusammenfassung FPGA-Systeme

In diesem Artikel ging es in der Hauptsache darum, einen kompletten Prototyp aus Matlab heraus zu bedienen. Der zweite Teil des Artikels (elektronik industrie 4-2017) zeigt, wie Matlab-basierte Prototypen für effizientes Debugging und schnell ausführbare Regression-Tests verwendet werden können.

 

Oliver Bründler

FPGA Design Ingenieur und Projektleiter bei der Enclustra GmbH, Zürich

(jj)

Sie möchten gerne weiterlesen?

Unternehmen

Enclustra GmbH FPGA Solutions

Räffelstrasse 28
8045 Zürich
Switzerland