Contact our team
+49 7243/2167-24 info@vision-components.com

Mit High Speed in neue IBV-Dimensionen

FPGA-Programmierung für Embedded-Vision-Systeme

Chart comparing data processing in ARM and FPGA.

Mit der Nutzung des FPGA-Moduls im Zynq SoC für Bild­­verarbeitungs­­aufgaben kann die Ge­schwin­dig­keit von Embedded-Vision-Systemen erheblich ge­steigert werden. Die Programmierung erfordert ein hohes Maß an Erfahrung, an erster Stelle steht je­doch, abzuwägen, ob eine Im­ple­men­tier­ung sinn­voll ist. Neben diesem Know-how bietet Bild­­­ver­ar­bei­tungs­­­ex­per­te Vision Components für seine Z-Kameras auch die Programmierung für spezielle Inspektions­­aufgaben an, um bis zu zwanzigfache Leistungs­­steigerungen zu erreichen.

Bisher wurden FPGA-Module bei Vision Components für interne System­­aufgaben ein­gesetzt – dass sich die FPGA-Optimierung für Bild­­verarbeitungs­­routinen auch für Anwender nach­weis­lich lohnt, zeigt ein aktueller Anwendung­s­fall. Für eine 3D-Oberflächen­­inspektion wurde ein leistungs­­starkes und sehr kompaktes Vision-System mit einer 3D-Abtast­­rate 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 Leistungs­aufnahme 3 W nicht überschreiten durfte, musste das System zudem äußerst kompakt und effizient sein. 

Für die Anwendung kam also nur ein Embedded-System infrage. Mit einer herkömmlichen Lösung konnte die gewünschte Auswerte­ge­schwindigkeit allerdings nicht erreicht werden, Vision Components schlug deshalb eine Lösung mit FPGA-Pro­gram­mier­ung vor. Erste Tests ergaben schnell, dass die Gesamt­­auswerte­­geschwindigkeit dadurch enorm gesteigert werden konnte. Die Erwartungen des Kunden wurden um ganze 20% übertroffen. Tatsächlich konnte in diesem Fall die Auswertung um den Faktor 12 beschleunigt werden, in anderen Fällen sorgt die Nutzung des FPGA sogar für noch größere Leistungs­­steigerungen um den Faktor 20.

FPGA arbeitet mit: ZYNQ-Modul macht's möglich

Möglich sind solche Leistungs­steigerungen durch die Ver­lagerung ausgewählter Funktionen vom Multi-Core ARM-Prozessor des Zynq-Moduls der Z-Kameras in das integrierte FPGA. Noch während das auf­genommene Bild zum Prozessor übertragen wird, beginnt das FPGA-Modul bereits mit der Ver­arbeitung, so dass die ersten Prüf­aufgaben ab­geschlossen sind, wenn das Bild schließlich zur Bearbeitung durch den ARM-Prozessor in den Speicher gelangt.

Diese parallele Ver­arbeitung der Bild­daten reduziert die Gesamt­verarbeitungs­zeit erheblich –nämlich um genau die Zeit­spanne, die die gleiche Funktion im ARM-Prozessor benötigt hätte. Um diese Art der FPGA-Nutzung anbieten zu können, hat VC seine Z-Kameras mit dem ZYNQ SoC Modul von Xilinx aus­gestattet, das eine freie Programmierung er­laubt. Erst damit ist die effiziente Nutzung des FPGA für Auswerte­­aufgaben überhaupt möglich.

VC nano Z series: Board camera and cameras with standard or IP67 case with ARM/FPGA.
Die VC Z-Serie mit ZYNC SoC Modul von Xilinx macht die freie Programmierung des FPGA-Moduls für Auswerteaufgaben möglich.

Volle Nutzung der Sensor Bandbreite

Der augenfälligste Vorteil solch einer Nutzung des FPGA für die Bild­auswertung ist die Ausführung der Aufgabe exakt in Pixel­takt. Dadurch kann die gesamte Band­breite der Sensoren voll ausgenutzt werden. In Anwendungen ohne FPGA-Nutzung ist dies oft nicht möglich, da die Software natürlich ebenfalls Zeit benötigt und dadurch die Prozess­geschwindigkeit verlangsamt. Wird der FPGA aber für die Bild­verarbeitung mit­genutzt, kann die Applikation in un­gebremster Geschwindigkeit ausgeführt werden.

Eine FPGA-Programmierung bietet überall da große Vorteile, wo wenig Einbauraum vorhanden ist oder eine geringe Leistungsaufnahme und hohe Geschwindigkeiten erforderlich sind. Sie glänzt zudem mit kurzen Implementierungszeiten, wenn man wie wir über die richtigen Tools und vorgefertigten FPGA-Module verfügt. Wir haben die FPGA-Programmierung bereits für verschiedenste Embedded-Vision-Systeme in diversen Kundenanwendungen erfolgreich eingesetzt. Da wir über einen großen Erfahrungsschatz im Bereich FPGA verfügen, können wir unsere Kunden umfassend beraten und ihnen die effizientesten Einsatzmöglichkeiten empfehlen.

Jan-Erik Schmitt Geschäftsführer Vertrieb von Vision Components

Die Stärken des FPGA kennen

Kunden profitieren von dieser Expertise. Bei der FPGA-Programmierung ist nämlich schnell festzustellen, dass Funktion nicht gleich Funktion ist. In der Praxis zeigt sich, dass manche Funktionen im FPGA sogar langsamer ausgeführt werden als im ARM. Eine FPGA-Nutzung ist dann natürlich nicht sinnvoll, da die Gesamt­leistung sich verschlechtert. Es gilt also abzuwägen, für welche Funktionen die FPGA-Nutzung nützlich und leistungs­steigernd ist. VC erleichtert Kunden die Entscheidung pro FPGA deshalb mit einem umfassenden Dienstleistungs­angebot und übernimmt auch die Implementierung. Anwender können in einer Simulations­umgebung auf dem PC Tests durchführen. So können alle Funktionen, die auf den FPGA programmiert werden, bereits im Vorfeld eins zu eins getestet und nötigenfalls debuggt werden. Dadurch vereinfacht sich die Fehlersuche enorm und die Entwicklungszeit verkürzt sich deutlich.

Tool Chain für die einfache FPGA-Programmierung

Um eine Idee oder ein Konzept auf den FPGA zu bringen, sind Spezialkenntnisse erforderlich. Die Umsetzung erfordert ein hohes Maß an Erfahrung und Fachwissen. Die Funktion der Bausteine und ihre Verschaltung untereinander lässt sich variabel gestalten, um die Funktionsweise einzelner Blöcke festzulegen. Funktionen oder Funktions­op­ti­mier­ung­en können so immer neu konfiguriert werden. Die Schaltungsstrukturen werden dabei mithilfe einer Hardware­beschreibungs­sprache konfiguriert, mit der Anwender in der Regel aber nicht vertraut sind. Vision Components bietet seinen Kunden daher nicht nur die erforderliche Expertise um zu ent­­schei­den, wann die FPGA-Programmierung sinnvoll ist, sondern auch eine Möglichkeit, in einem ver­trau­ten Programmier­umfeld selbst FPGA-Code zu programmieren.

Das hierfür eingesetzte Xilinx-Tool Vivado HLS erlaubt es Nutzern, den FPGA in den Sprachen C oder C++ zu programmieren. Der enorme Vorteil dieses Tools besteht darin, dass die Software sich vor der ersten Verwendung umfangreich auf dem PC testen, simulieren und debuggen lässt. Die Ver­wen­dung von Vivado HLS ist zudem optimal auf die VC-Z-Kameras und die VCLib-Softwarebibliothek zugeschnitten. Darin enthalten sind in C pro­gram­mier­te Funktionen, die bereits für eine effiziente FPGA-Ausnutzung modifiziert bzw. erstellt wurden. Mit der firmen­eigenen VCLib können VC-Kunden außerdem auf vor­gefertigte Basis­pakete wie z.B. Farb­verarbeitung, unterschiedliche Filter­routinen, Pattern Matching und vieles mehr zurückgreifen.

Die Softwarebibliothek umfasst den gesammelten Erfahrungsschatz aus über 30 Jahren und erlaubt es, Code für FPGA schnell und effektiv zu kompilieren bzw. zu übersetzen. Mit ihr stehen alle notwendigen Bild­ver­ar­bei­tungs­funk­ti­on­en 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-Wissen für Anwender

Vision Components unterstützt interessierte Anwender beim Einstieg in das Thema FPGA-Programmierung auch mit Weiterbildungsangeboten. An jedem ersten Mittwoch im Monat vermittelt das Unternehmen in einem kostenlosen Einführungsseminar grundlegendes FPGA-Know-how und gibt Einblicke in die Anwendung der Ent­wick­lungs­um­ge­bung. Teilnehmer können hier zum Beispiel das Ent­wick­lungs­tool Vivado HLS zur FPGA-Pro­gram­mier­ung in C-Sprache testen und sich mit dem Programmierprozess vertraut machen.

Wenig Platz und trotzdem schnell? Kein Problem! Wo die FPGA-Programmierung punktet

Dass die FPGA-Programmierung besonders auf kleinstem Raum eine hervorragende Lösungs­möglichkeit darstellt, konnte Vision Components u.a. in den folgenden zwei Kunden­anwendungen verdeutlichen:

In einer Interferometrie­anwendung wurde ein extrem kleines intelligentes System für die Bild­ver­ar­bei­tung benötigt, da kaum Raum für die Installation vorhanden war. Um auf so engem Raum eine Über­hitzung zu vermeiden, musste das Bild­ver­ar­bei­tungs­­sys­tem zudem über eine äußerst geringe Leistungs­aufnahme verfügen. Für die An­wen­dung kam also nur ein intelligentes System in Frage. Um außerdem für die höchst aufwändige Aufgabe die nötige Rechen­leistung zu erzielen und die gewünschte Flexibilität der Prozesse in GUI und Kommunikation zu erreichen, führte nur die Kom­bi­na­ti­on aus FPGA und Multi-Core ARM – also die VC Z-Kameras – zum gewünschten Ergebnis. 

Für eine andere Applikation in der Nahrungsmittel­logistik, bei der Barcodes ausgelesen werden müssen, bot sich ebenfalls die FPGA-Pro­gram­mier­ung im Verbund mit den extrem kleinen VC-Kameras an. Dort war prozess­bedingt eine extrem hohe Bild­­rate bei einer sehr schnellen Band- und Objekt­geschwindigkeit von 2 m pro Sekunde nötig. Es stand außerdem nur ein sehr kleines Sichtfenster von 20 mm zur Verfügung. Um trotz kleinstem Bauraum alle EAN-13-Barcodes im Bild sicher detektieren und auslesen zu können, erwies eine FPGA-Programmierung sich auch hier als ideale Lösung.

Artikel herunterladen - pdf - 548.15 KB
Download