Suchen

IP-Cores Bildverarbeitung einfach auf einem FPGA implementieren

Autor / Redakteur: Dr. Holger Singpiel * / Sebastian Gerstl

Vor allem im Umfeld der Machine Vision sind Kameras aus heutiger Sicht nicht mehr wegzudenken. Die Anforderungen an solche Kameras werden zunehmend größer. Die grafische Programmierumgebung Embedded VisualApplets (eVA) macht es einfach, FPGAs auf unterschiedlichen Hardwareplattformen mit Bildverarbeitungs-Anwendungen auszustatten.

Firmen zum Thema

Implementierte eVA IP-Core Schnittstellen in einem FPGA:
Implementierte eVA IP-Core Schnittstellen in einem FPGA:
(Bild: Silicon2Image)

In der industriellen Bildverarbeiten sind die modernen Ansprüche an die Leistung von Kameras enorm gestiegen. Neben ständig wachsenden Datenmengen werden auch Echtzeitanforderungen an die Applikationen gestellt. Damit müssen die Kameras nicht mehr nur Bilder aufnehmen, sondern auch eine Bildvorverarbeitung gewährleisten.

Die Einbindung von eVA in eine mit einem FPGA ausgestattete Kamera ermöglicht es, die Hardware in kürzester Zeit beliebig oft mit einem echtzeitfähigen Bildverarbeitungsalgorithmus zu versehen und einen einmal erstellten Algorithmus in wenigen Schritten auf verschiedene Hardwaredesigns zu portieren.

Bildergalerie

FPGA-Programmierung mit VisualApplets

Durch die grafische Benutzeroberfläche ist eine FPGA-Programmierung auch Softwareentwicklern und Bildverarbeitungsspezialisten ohne VHDL-Kenntnisse zugänglich. Umfangreiche Sets hardware-basierter Operatoren erlauben die Abbildung komplexer Bildverarbeitungsaufgaben auf dem FPGA. Diese Operatoren lassen sich beliebig anordnen und miteinander verbinden, um einer konkreten Bildverarbeitungsaufgabe gerecht zu werden.

Zur Abbildung einer Echtzeit-Applikation können arithmetische und morphologische Operatoren (u. a. für die Pixelmanipulation), logische Operatoren (u. a. für die Objekt-Klassifizierung), Operatoren für komplexe Farbverarbeitungen, die statistische Analyse, logische Funktionen, Format-Konversionen sowie die Segmentierung und Objektklassifizierung genutzt werden. Ein weiterer Schwerpunkt ist die Umsetzung von Steueraufgaben auf Signalebene (z.B. Triggersteuerung).

Eine häufig auftretende Anforderung ist z. B. die 3D-Bildverarbeitung, bei der die Profildaten einer Lasertriangulation oder der Schwerpunkt direkt ermittelt werden müssen. Die Abbildung einer robusten Highspeed-Lasertriangulation zur Bestimmung des Schwerpunkts eines Objektes kann ist sehr einfach durch die Kombination verschiedener vordefinierter Operatoren (z. B MergePixel) möglich () und kann auf Baumer LX VisualApplets Kameras umgesetzt werden.

Embedded VisualApplets

Ursprünglich für die grafische Programmierung von FPGAs auf Framegrabbern entwickelt, erlaubt embedded VisualApplets die Nutzung des Programmierwerkzeugs auf beliebigen FPGA-basierten Hardware-Plattformen. Um einen mit VisualApplets erstellten Bildverarbeitungsalgorithmus auf eingebetteten Systemen nutzen zu können, wird ein IP Core als leere Blackbox in das FPGA-Design der Hardware-Plattform eingebunden.

In einem einmaligen Prozess erfolgt in wenigen Schritten die Implementierung von eVA beispielsweise in eine Kamera. Der Integrationsprozess erfordert im Wesentlichen die Definition der Schnittstellen des IP-Cores und dessen Integration in das FPGA-Gesamtdesign.

Die eVA IP-Core-Schnittstellen

Die Anbindung an die externen Hardwareressourcen, beispielsweise an Sensorschnittstellen und Speicherkontroller, erfolgt mittels Glue-Logic, wie auch in Bild 2 veranschaulicht. Mit eVA ist eine sehr flexible Zusammenstellung von beliebig skalierbaren, konfigurierbaren Schnittstellen möglich.

Die Schnittstellen des eVA IP-Core sind im Einzelnen:

  • Clock: ein Zweiphasen-Takt-System mit einfacher und doppelter Taktfrequenz
  • Slave IF: Register-Slave für die Übertragung der Laufzeit-Parameter
  • GPI, GPO: General Purpose Signal I/O zum Austausch von Signalen mit dem IP-Core, wie Trigger- oder Kontrollsignale
  • ImgIn: Schnittstellen für das Eingangs-Streaming der Bilddaten
  • ImgOut: Schnittstellen für das Ausgangs-Streaming der Bilddaten
  • MemWr/Rd: Schnittstellen zu externen Speicherbausteinen.

Die Integration von embedded VisualApplets


eVA Integration bedeutet neben der Erstellung eines beliebig befüllbaren embedded IP-Cores auch die Erzeugung eines plattform-spezifischen Plug-ins für das Programmierwerkzeug VisualApplets. Dieses Plug-in enthält neben der IP-Core-Blackbox alle Informationen zum FPGA der Hardware-Plattform, die für die Erstellung eines FPGA-Konfigurationsbitstream notwendig sind. Die benötigten Dateien werden in einem automatisierten Workflow (siehe Bild 3) erstellt. Die Einbindung erfolgt in den folgenden Hauptschritten:

Bildergalerie
  • 1. Spezifikation der Hardwareplattform durch Plattformhersteller (Informationen zum verwendeten FPGA, zu Logikressourcen, I/O Anforderungen etc.)
  • 2. Automatische Erzeugung der IP-Core-Blackbox (VHDL) sowie einer VHDL-Testbench für Simulationszwecke durch das Tool eVA Designer.
  • 3. Integration der erzeugten Blackbox des eVA IP-Cores in das VHDL Design des FPGAs der Hardwareplattform. Abschließend erfolgen die Generierung einer Netzliste des FPGA-Gesamtdesigns und die Erstellung einer Constraints-Datei.
  • 4. Automatische Erzeugung des Plug-ins für VisualApplets auf Basis der vorher erzeugten FPGA-Netzliste und Constraints-Datei.

Programmierung der neuen Hardwareplattform

Nach der Integration steht ein Plug-in für VisualApplets zur Verfügung. Das Plug-in wird als Installer erzeugt, welcher an die VisualApplets Anwender verteilt werden kann.

Nach Installation des Plug-ins ist die neue Hardware-Plattform mit VisualApplets programmierbar.

Nun kann ein neuer Bildverarbeitungsalgorithmus direkt für die spezifische Hardware in VisualApplets erstellt werden, oder man portiert ein bereits vorhandenes VisualApplets Design auf die neue Hardware. Inkompatible Schnittstellenmodule werden bei einer Portierung als Dummy-Blöcke dargestellt und können dann einfach durch Operatoren der plattform-spezifischen Bibliothek ersetzt werden. Auf diese Weise können beliebig viele Plattformen über VisualApplets programmierbar gemacht werden.

Parametrierung zur Laufzeit

Für den Zugriff auf die Parameter des Bildverarbeitungsalgorithmus während der Laufzeit stehen verschiedene automatisch erzeugte designspezifische Dateien zur Verfügung

HAP-Datei. Während der Synthese des Applets wird eine Datei (*.hap) erzeugt, die alle notwendigen Informationen für den Zugriff auf die Parameter enthält. Über API Zugriffe der dazugehörigen Laufzeitumgebung können auf die Applet-Parameter zugegriffen werden.

GenICam XML Code für GenICam API. Bei Anbindung der Zielplattform über eine GenICam-kompatible Schnittstelle erfolgt die nahtlose Einbindung der Parameter in die Software durch einen automatisch generierten GenICam XML Code.

Generischer C API code. VisualApplets kann portablen ANSI-C Code für den Zugriff auf die Parameter während der Laufzeit erzeugen. Schreib- und Lesezugriff auf den eVA IP-Core Register Slave (Slave IF) werden über Callback-Funktionen realisiert, die bei der Initialisierung der Software übergeben werden. Die Parameter können über ihre Namen adressiert werden.

* Dr. Holger Singpiel ist Produktmanager der Silicon Software GmbH

(ID:44073872)