ECK-Daten

FPGAs bieten ein erstaunliches „Mehr“ an Rechenpower. Dieser Artikel beschreibt einen möglichen Weg zu effizienten Entwicklungsprozessen mit der neuen Technologie. Die hier beschriebenen Beispiele zeigen deutlich, dass Matlab-basierte Prototypen nicht nur die einfache Analyse eines kompletten FPGA-Designs ermöglichen, sondern auch dabei helfen, Applikationsspezialisten früher und direkter in den Entwicklungsprozess einzubeziehen. Das Risiko für Fehler, die lange Zeit unentdeckt bleiben und dadurch am Ende des Projektes hohe Kosten verursachen, kann so drastisch reduziert werden und die Erfahrung zeigt, dass die ständige Mitarbeit der Applikationsspezialisten auch zu qualitativ besseren Endergebnissen führt.

Bild 1: Frühzeitiger Test einzelner Schaltungsteile des FPGA durch Matlab-basierte Prototypen.

Bild 1: Frühzeitiger Test einzelner Schaltungsteile des FPGA durch Matlab-basierte Prototypen. Enclustra

Um den ersten Teil dieses Artikels noch einmal zusammenzufassen: Matlab-basierte Prototypen für FPGA-Systeme lassen sich über Funktionen direkt aus Matlab-Skripts heraus ansprechen und sind dadurch auch für Applikationsspezialisten leicht zugänglich, die über kein FPGA-Know-how verfügen. Darüber hinaus können alle Funktionalitäten von Matlab genutzt werden, um Parameter und Koeffizienten zu berechnen sowie die aufgezeichneten Daten auszuwerten (siehe elektronik industrie 3-2017, Seiten 32 bis 34). Um die Schnittstelle zwischen Matlab und FPGA zu realisieren, empfiehlt es sich, bereits bestehende Lösungen wie etwa FPGA-Manager von Enclustra oder Simulink Real-Time von Mathworks zu nutzen, da dadurch der Zusatzaufwand für einen Matlab-basierten Prototyp minimal gehalten werden kann.

Matlab-basierte Prototypen können aber nicht nur genutzt werden, um das FPGA-System als Ganzes zu analysieren und Parameter zu optimieren. Vielmehr helfen sie dabei, Entwicklungs-, Debugging- und Qualitätssicherungs-Prozesse effizienter zu gestalten und den Applikationsspezialisten direkt, ohne Umweg über einen FPGA-Implementationsspezialisten, in diese Prozesse einzubeziehen.

Frühzeitige Tests von einzelnen Schaltungsteilen

 Problematisch ist bei vielen FPGA-Systemen, dass kaum sinnvolle Daten aufgezeichnet werden können, bevor das Gesamtsystem fertig entwickelt ist. Selbst wenn diese Möglichkeit besteht, entpuppt sich die Aufzeichnung und Auswertung der Daten oft als relativ aufwendig und unhandlich. Ein Testlauf umfasst normalerweise das Berechnen neuer Parameter in Matlab, das Exportieren der Parameter in eine Test-Applikation, die mit dem FPGA kommuniziert (üblicherweise werden hierzu Text-Files benutzt), das Importieren der aufgezeichneten Daten in Matlab (auch hier oft über Text-Files) und letztendlich die Analyse. Dieser Vorgang ist nicht nur zeitaufwendig, sondern auch fehleranfällig, da Text-Files nur allzu leicht vertauscht werden können.

Ein Matlab-basierter Prototyp ermöglicht es dagegen, einzelne Schaltungsteile nach und nach auf dem FPGA in Betrieb zu nehmen und die noch nicht implementierten Teile der Verarbeitung direkt in Matlab auszuführen. Dadurch lassen sich Auswirkungen von implementationsbedingten Änderungen (zum Beispiel Quantisierung) auf das Gesamtsystem einfach und schnell analysieren und auftretende Probleme können frühzeitig erkannt und behoben werden. Dadurch reduziert sich das Risiko für eine lange und aufwendige Fehlersuche am Ende des Projektes. Da der Prototyp direkt aus Matlab angesprochen wird, können auch alle Parameter wie beispielsweise Filter-Koeffizienten einfach in Matlab berechnet werden. Die so eingesparte Zeit kann für mehr Testläufe und damit eine bessere Testabdeckung verwendet werden.

Eingrenzung von Fehlerquellen

Gerade in der sehr Matlab-lastigen Domäne der Signalverarbeitung sind Fehler nicht immer einfach erkennbar. Der FPGA-Implementationsspezialist kann zwar wohl Daten an diversen Stellen innerhalb des FPGAs aufzeichnen, aber ob diese korrekt sind oder vielleicht in einem bestimmten Frequenzbereich zu viel Rauschen aufweisen, ist für ihn ohne Hilfe des zuständigen Applikationsspezialisten nicht erkennbar. Der Applikationsspezialist hingegen kann üblicherweise kaum selbstständig direkt auf interne Signale zugreifen.

FPGA-basierte Prototypen ermöglichen es dem Applikationsspezialisten hingegen, mit minimalem Zusatzaufwand Zugriff auf diverse interne Signale zu geben. So kann er die Fehlerquelle relativ schnell eingrenzen. Als sehr angenehm erweist sich dabei der direkte Zugriff auf die umfassenden Analysefunktionen von Matlab, da diese dabei helfen können zu entscheiden, ob ein Signal sich wie erwartet verhält. Der FPGA-Spezialist wird zur exakten Lokalisierung und Behebung des Fehlers zwar nach wie vor benötigt, allerdings nur noch für einen sehr kleinen und klar eingegrenzten Teil der Schaltung.

Schnelle FPGA-Regression-Tests

Bei der Entwicklung von Embedded Software werden Unit Tests normalerweise auf Desktop-PCs ausgeführt, da diese über mehr Rechenleistung verfügen. So laufen die Tests normalerweise sogar schneller ab als die reale Implementation auf dem Zielprozessor. Im Gegensatz dazu laufen Simulationen von FPGA-Designs um ein vielfaches langsamer ab als die reale Implementation. Die Simulation von einigen Millisekunden kann unter Umständen Stunden in Anspruch nehmen, was beispielsweise die sinnvolle Ausführung von Test-Suiten vor jedem Release unmöglich macht.

Bild 2: Eingrenzung von Fehlerquellen durch den Applikationsspezialisten mit Matlab-basierten Prototypen.

Bild 2: Eingrenzung von Fehlerquellen durch den Applikationsspezialisten mit Matlab-basierten Prototypen. Enclustra

Auch hier können Matlab-basierte Prototypen Abhilfe schaffen: In Matlab erzeugte und schon während des Algorithmus-Designs verwendete Daten können einfach an das FPGA übertragen und die Resultate aufgezeichnet werden. Die aufgezeichneten Daten können dann mit den Resultaten der Matlab-Simulation verglichen werden, um zu überprüfen, ob die Performance im erwarteten Bereich liegt.

Dass die tatsächliche Implementierung des Algorithmus anstelle einer Simulation verwendet wird, führt neben den Vorteilen in Bezug auf die Geschwindigkeit auch dazu, dass mögliche Synthese-Fehler oder andere in der Simulation nicht abgebildete Effekte ebenfalls mit getestet werden.

Bild 3: Regression-Test-Setup für Matlab-basierte Prototypen.

Bild 3: Regression-Test-Setup für Matlab-basierte Prototypen. Enclustra

FPGA-Implementierung – Make or Buy?

Da FPGAs in immer mehr Anwendungsbereiche vordringen, sind viele Entwickler gezwungen, sich mit der Materie auseinanderzusetzen. Eine Auslagerung der FPGA-Implementierung an einen Dienstleister wird oft als schwierig betrachtet, da dieser zwar vertieftes Wissen im Bereich FPGA hat, aber oftmals kaum Applikations-Know-how mitbringt. Dank Matlab-basierten Prototypen können Kunden (Applikationsspezialisten) und Dienstleister (Implementationsspezialisten) auch in dieser Situation effizient und risikoarm zusammenarbeiten. So wird Outsourcing in vielen Bereichen realistisch und effizient, was den Umstieg auf die neue Technologie deutlich vereinfacht.