C-zu-FPGA-Synthese:

FPGAs mit C füttern

19. September 2012, 9:30 Uhr | Joachim Kroll

FPGAs sind eine ideale Möglichkeit, rechenintensive Algorithmen durch Hardware zu beschleunigen. Doch die spezielle Programmierung mit VHDL schreckt viele ab. Ein Tool, das C-Code für den FPGA umwandelt, senkt die Eintrittshürde.

Diesen Artikel anhören

Der Impulse CoDeveloper ist ein Entwicklungswerkzeug, das C-Code in Hardware-beschleunigte FPGA-Routinen umsetzt (Bild 1). Das lohnt sich besonders für Anwendungen der Bild- und Video-Bearbeitung, der digitalen Signalverarbeitung sowie für Datenkomprimierung und -verschlüsselung. Der CoDeveloper verarbeitet ANSI-C-Code und enthält einen Software-zu-Hardware-Compiler, einen „Parallel Opti-mizer“ und sog. „Platform Support -Packages“ für FPGAs von Xilinx und -Altera.

passend zum Thema

Impulse wandelt ANSI-C-Code in FPGA-Code
Impulse wandelt ANSI-C-Code in FPGA-Code für Altera- und Xilinx-Bausteine um
© evision systems

Mit Impulse C lassen sich C-Algorithmen in FPGA-Hardware konvertieren - oft nur innerhalb weniger Stunden, verspricht der Hersteller. Impulse C vereinfacht das Profiling und Debugging der Algorithmen, so dass sich leistungskritische Codesegmente identifizieren und optimieren lassen.

Profiling bedeutet: Der Code wird zur Laufzeit analysiert und es werden Statistiken erzeugt, die zeigen, welche Codesegmente z.B. besonders häufig ablaufen. Mit einem Parallelisierungs-Optimizer von Im-pulse können verschiedene Szenarien ausprobiert werden, so dass die Systemleistung schrittweise verbessert wird. Dabei können z.B. nur einfache Hardware-Prozesse für die Abarbeitung im FPGA-Modul erzeugt werden. Oder es wird eine Hardware-beschleunigte Peripherie-Einheit auf dem FPGA erzeugt. Und schließlich gibt es noch die Möglichkeit, den Code auf Haupt- und Coprozessor/FPGA zu verteilen.

Hierbei wird stets derselbe C-Code von Impulse C verarbeitet, nur die Einstellungen für Hardware- und Software-Targets sind unterschiedlich. FPGAs sind durch die ihnen innewohnende Parallelität schneller als hochgetaktete Universal-Prozessoren. Mit Impulse C kann diese Parallelität in vergleichsweise einfacher Weise evaluiert und erschlossen werden - sowohl auf der Ebene des Gesamtsystems als auch auf Befehlsebene. Für letztes bietet der Impulse-C-Compiler Optimierungen wie „operator scheduling“, das Auflösen von Schleifen und Pipelining. Wenn die C-Debugging-Werkzeuge nicht ausreichen oder das Projekt umfangreich getestet werden soll, bietet Impulse mit dem CoValidator ein Testwerkzeug an, das neben der Erzeugung von Testfällen auch eine VHDL-Simulation durchführt.

Die Umsetzung eines Projekts vollzieht sich in sieben Schritten:

  • Quellcode erstellen wie immer.
  • Analyse des Laufzeitverhaltens und Aufteilen des Algorithmus zwischen Prozessor und FPGA.
  • Verifikation und Debugging mit Standard-C-Werkzeugen. Der Impulse Application Monitor hilft bei der Analyse des parallelen Datenflusses.
  • Compilieren und Optimieren mit grafischen Tools. Kritische Code-Abschnitte werden parallelisiert oder mit Pipelines verarbeitet.
  • Automatische Erzeugung von FPGA-Hardware mit der präferierten FPGA-Plattform.
  • Automatische Erzeugung von Interfaces zwischen Host und FPGA.
  • Auswahl einer FPGA-Plattform. Die Impulse-C-Tools sind plattformneutral und unterstützen viele FPGAs.

Die Produkte von Impulse werden in Deutschland von eVision Systems vertrieben.


Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu eVision Systems GmbH

Weitere Artikel zu Entwicklungswerkzeuge