Applikations-Know-how ins FPGA bringen

FGPA-Prototypen in MATLAB entwickeln – Teil 1

| Autor / Redakteur: basierend auf Unterlagen von Enclustra / Sebastian Gerstl

(Bild: enclustra)

FPGAs bieten bedeutend mehr Rechenpower, sind aber weniger zugänglich als in C/C++ programmierbare Mikro- oder Signal- prozessoren. MATLAB-basiertes Prototyping bietet einen Ausweg.

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. Ihr Einsatz 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 Enclustra GmbH in diversen Projekten bereits als erfolgreich erwiesen.

Übliche Prototyping-Probleme in FPGA-Projekten

Mikroprozessoren und DSPs arbeiten sequentiell und werden größtenteils in den bekannten Programmiersprachen C/C++ programmiert. FPGAs arbeiten dagegen von Haus aus hochgradig parallel, die Designs werden meist in HDL (VHDL oder Verilog) beschrieben. Darüber hinaus ist der Entwicklungs-Flow für FPGAs völlig anders als bei herkömmlicher Software. Die 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 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 Logik-Analyzer 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 z.B. durch die Generierung von VHDL-Code aus C/C++ oder MATLAB/Simulink umgehen. Erfahrungen aus realen Projekten haben aber 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

Bild 2: MATLAB-basierte FPGA-Prototypen lassen sich einfach aus MATLAB-Skripts ansprechen
Bild 2: MATLAB-basierte FPGA-Prototypen lassen sich einfach aus MATLAB-Skripts ansprechen (Bild: 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 ohne spezielle FPGA Kenntnisse möglich sein.

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 gewöhnlich auch Skripts geschrieben, um die Performance des Algorithmus zu analysieren und Parameter für verschiedene Anwendungsfälle zu berechnen. Hier wäre es natürlich von Vorteil, mit MATLAB direkt Messungen auf der realen Hardware durchführen zu können.

Ein MATLAB-basierter Prototyp kann in der Tat direkt aus MATLAB-Skripts angesprochen werden. Dadurch erhält der Applikationsspezialist direkten Zugriff auf die tatsächliche FPGA-Implementation des Algorithmus, kann sich aber weiter in der ihm gut bekannten Welt von MATLAB bewegen. Gleichzeitig kann er die bereits während der initialen Entwicklung des Algorithmus geschriebenen Analysefunktionen einfach auf Daten anwenden, die von der realen Hardware aufgezeichnet wurden. Dies gilt ebenso für die Berechnung von Parametern (z.B. 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.

Ergänzendes zum Thema
 
FPGA-Manager – die Verbindung zwischen MATLAB und FPGA

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 selbständig und effizient arbeiten.

Dank 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 (siehe Info-Box oben) und Simulink Real-Time.

In diesem Beitrag ging es in der Hauptsache darum, einen kompletten Prototyp aus MATLAB heraus zu bedienen. Lesen Sie im zweiten Teil des Artikels, wie MATLAB-basierte Prototypen für effizientes Debugging und schnell ausführbare Regression-Tests verwendet werden können.

FPGA-Prototypen in MATLAB entwickeln – Teil 2

Applikations-Know-how ins FPGA bringen

FPGA-Prototypen in MATLAB entwickeln – Teil 2

02.02.17 - FPGAs bieten ein erstaunliches „Mehr“ an Rechenpower. Der hier vorliegende zweite Teil befasst sich mit zusätzlichen Möglichkeiten, die MATLAB-basierte Prototypen bieten. lesen

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

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