Die VC Z-Serie mit ZYNC-SoC-Modul von Xilinx macht die freie Programmierung des FPGA-Moduls für Auswerteaufgaben möglich.

Die VC Z-Serie mit ZYNC-SoC-Modul von Xilinx macht die freie Programmierung des FPGA-Moduls für Auswerteaufgaben möglich. Vision Components

Vision Components setzt FPGA-Module schon länger ein, bislang jedoch überwiegend für interne Systemaufgaben. Dass sich eine FPGA-Implementierung der Bildverarbeitungsroutinen nachweislich lohnt, zeigt ein Anwendungsfall: Für eine 3D-Oberflächeninspektion wurde ein leistungsstarkes und kompaktes Vision-System mit einer 3D-Abtastrate von 30 Hz gesucht. Da für das Gehäuse nicht mehr als 8 x 2 x 14 cm Platz zur Verfügung stand und auch die Leistungsaufnahme auf 3 W begrenzt war, musste das System äußerst kompakt und effizient sein. Es kam also nur ein Embedded-System infrage.
Mit einer herkömmlichen Lösung ließ sich die notwendige Auswertegeschwindigkeit allerdings nicht erreichen. Vision Components schlug deshalb eine kombinierte Lösung mit FPGA vor. Erste Tests zeigten, dass dies die Gesamtauswertegeschwindigkeit deutlich steigert. Tatsächlich konnte in diesem Fall die Auswertung um den Faktor 12 beschleunigt werden gegenüber einer reinen Software-Lösung. Die ambitionierte Zielmarke von 30 Hz wurde sogar um 20 % übertroffen. In anderen Fällen sorgt der FPGA für Geschwindigkeitssteigerungen um den Faktor 20.

Aufgabenteilung entsprechend der Qualifikation

Möglich sind solche Leistungssteigerungen durch die Verlagerung ausgewählter Funktionen vom Multi-Core AR.

M-Prozessor des Zynq-Moduls der Z-Kameras in dessen FPGA. Der Vorteil: die aufgenommenen Bilddaten werden auf dem Weg in den Speicher im FPGA-Modul verarbeitet. Daher sind die ersten Schritte der Datenverarbeitung schon abgeschlossen, wenn das Bild schließlich zur weiteren Bearbeitung durch den ARM-Prozessor in dessen Speicher gelangt. Die parallele Verarbeitung der Bilddaten reduziert die Gesamtverarbeitungszeit – exakt um die Zeitspanne, die die gleiche Funktion im ARM-Prozessor benötigen würde.

Der Zeitgewinn resultiert aus der parallelen Bearbeitung einzelner Funktionen in FPGA.

Der Zeitgewinn resultiert aus der parallelen Bearbeitung einzelner Funktionen in FPGA. Vision Components

Aufgrund der parallelen Bildauswertung im Pixeltakt lässt sich die gesamte Bandbreite des Bildsensors nutzen. In Anwendungen ohne FPGA-Nutzung ist dies oft nicht möglich, da die Software natürlich ebenfalls Zeit benötigt und dadurch die Prozessgeschwindigkeit verlangsamt

Die Stärken und Schwächen des FPGA kennen

Allerdings bearbeitet ein FPGA nicht jede Funktion schneller als ein klassischer Prozessor. Die Praxis zeigt, dass FPGAs manche Funktionen sogar langsamer ausführen. Es gilt also abzuwägen, für welche Bildverarbeitungs-Funktionen ein FPGA die Leistung steigert. Beispielsweise für die Farbkonvertierung, Kantendetektion oder Pattern Matching.
Um eine Idee oder ein Konzept auf den FPGA zu bringen, braucht es spezielle Kenntnisse. Denn die Funktionen der Bausteine und ihre Verschaltung untereinander lassen sich variabel gestalten, um die Funktionsweise einzelner Blöcke festzulegen und bei Bedarf anzupassen. Hier kann viel Speed auf der Strecke bleiben.
Die Schaltungsstrukturen werden wiederum mithilfe einer Hardwarebeschreibungssprache (VHDL) konfiguriert, mit der Anwender in der Regel nicht vertraut sind.
Vision Components unterstützt daher nicht nur bei der Entscheidung, ob die FPGA-Programmierung sinnvoll ist, sondern übernimmt auch deren Implementierung. Zuvor können Anwender in einer PC-basierten Simulationsumgebung eigene Tests durchführen. Mit dem Tool lassen sich alle Funktionen, die im FPGA laufen sollen, 1:1 testen und debuggen. Dies vereinfacht die Fehlersuche und verkürzt die Entwicklungszeit.

Tool Chain für die FPGA-Programmierung steht

Die Kombination aus ARM-Prozessor und FPGA-Programmierung erlaubt deutliche Leistungssteigerungen für IBV-Anwendungen.

Die Kombination aus ARM-Prozessor und FPGA-Programmierung erlaubt deutliche Leistungssteigerungen für IBV-Anwendungen. Vision Components, Xilinx

Das eingesetzte Xilinx-Tool Vivado HLS ermöglicht Nutzern, den FPGA in den Sprachen C/C++ zu programmieren. Die Software ist zudem auf die VC-Z-Kameras und deren Softwarebibliothek VCLib zugeschnitten. Letztere enthält Funktionen (in C-Code), die bereits für eine effiziente FPGA-Ausnutzung ausgelegt sind. Mit der Bibliothek können Anwender auch vorgefertigte Basispakete wie die Farbverarbeitung, unterschiedliche Filterroutinen und Pattern Matching nutzen. Die Softwarebibliothek stellt alle notwendigen Bildverarbeitungsfunktionen für die industrielle Anwendung zur Verfügung, die variabel sowohl im ARM-Prozessor als auch im FPGA-Modul eingesetzt werden können – je nachdem, wo sie von größerem Nutzen sind, um für die jeweilige Applikation die bestmögliche Leistung zu erzielen.

FPGA im Einsatz – Kaum Platz und trotzdem schnell

Dass die FPGA-Programmierung auf kleinem Raum punktet, belegen zwei Anwendungen: In einer Interferometrieanwendung wurde ein extrem kleines BV-System benötigt. Die engen Platzverhältnisse setzen wiederum eine geringe Leistungsaufnahme voraus. Außerdem benötigte die gewünschte Flexibilität bei der Bedienung und Kommunikation eine hohe Rechenleistung. Daher führte kein Weg an einer Kombination aus FPGA und Multi-Core ARM vorbei.

764iee0216_Anlauf_barcode_lesen_collage_300

Vision Components

Für eine andere Applikation in der Nahrungsmittellogistik, bei der Barcodes ausgelesen werden, bot sich die FPGA-Programmierung im Verbund mit den VC-Kameras ebenfalls an. Dort war prozessbedingt eine hohe Bildrate von 220 fps bei hoher Band- beziehungsweise Objektgeschwindigkeit von 2 m/s nötig. Außerdem stand nur ein kleines Sichtfenster von 20 mm zur Verfügung. Um trotz des beengten Bauraums alle EAN-13-Barcodes im Bild sicher detektieren und auslesen zu können, erwies sich eine kombinierte ARM/FPGA-Programmierung als ideale Lösung.

Embedded World 2016 – Halle 1 Stand 111