Deutliche CPU-Entlastung

Deutliche CPU-Entlastung

FPGA basierte Smart-Kameras als IPC-Ersatz

Bildverarbeitungsvorgänge in Vision-Applikationen beanspruchen oft immense Ressourcen der CPU. Eine Steigerung der Performance ist deshalb bei beengten Platzverhältnissen oft eine große Herausforderung. FPGAs können diesem Problem mit deutlicher Effizienzsteigerungen begegnen. Welche Bildverarbeitungsvorgänge sind für FPGAs aber prädestiniert, wie genau unterscheidet sich die Performance zwischen CPU und FPGA im laufenden Betrieb und wie sollte eine Build-in-Lösung zur FPGA Bildvorverarbeitung aufgebaut sein?
Auch wenn sich konventionelle Machine-Vision-Lösungen bislang auf hoch performante CPUs verlassen haben, um die erforderliche Geschwindigkeit und Qualität der Bildverarbeitungsapplikationen zu erreichen, tendieren die leistungsfähigen Prozessoren dazu, sowohl teurer zu sein als auch größere und komplexere Systeme zu erfordern. Für IPC-basierte Lösungen werden deshalb oft Stand-Alone Industrie-PCs verwendet und die externen Kameras über externe oder eingebettete Framegrabber angebunden. Eine Alternative hierzu sind Smart-Kameras. Hier sind alle Vision-Komponenten in einer einzigen Small Form Factor Unit integriert. Ein Nachteil ist jedoch, dass konventionelle Smart-Kameras oft einen Low-Power Single-Core Atom Prozessor nutzen, um die erzeugte Wärme zu reduzieren und den Bedarf nach einer aktiven Lüftung zu beseitigen. Grafikaufwendigere Applikationen, die große Datenmengen verarbeiten, bauen aber auf einer starken CPU-Leistung auf. Inhärente Konflikte können jedoch die Folge sein. Diese tauchen immer dann auf, wenn die Anforderung nach hoher Leistung zugleich auf die Anforderung nach geringer Größe und/oder geringen Kosten stößt, denn eine intensive Datenverarbeitung erfordert auch immer eine teurere CPU, die zudem auch noch mehr Wärme erzeugt und somit auch ein größeres und auch leistungsfähigeres System zur Wärmeabführung benötigt. Deshalb war es schon immer eine der größten Herausforderungen, Systeme zu entwickeln, die die konträren Anforderungen einer kleineren Größe bei großer Leistung optimal ausbalancieren. Durch den Einsatz von FPGAs kann man diese Herausforderungen bewältigen.

Vorteile von FPGA

FPGAs sind umprogrammierbare Schaltungen, die eine parallele Computing-Architektur verwenden, die aus mehreren konfigurierbaren Logikblöcken (CLBs), festen Funktionslogikblöcken und einem integrierten RAM bestehen. Bei FPGAs werden die Rechenaufgaben mithilfe einer Konfigurationsdatei entwickelt, die vorgibt, wie die Komponenten miteinander verbunden sind. Über vorgefertigte Logikblöcke und programmierbare Routing-Ressourcen können die FPGAs konfiguriert werden. So lassen sich benutzerdefinierte Hardware-Funktionen implementieren; zeitaufwendige und komplizierte PCB Herstellungsprozesse für kundenspezifische ASIC-Design sind nicht erforderlich. Da FPGAs sich vollständig rekonfigurieren lassen, können sie jedes Mal, wenn ihre Datei neu kompiliert wird, um eine neue Schaltungskonfiguration vorzuschreiben, eine andere funktionelle Identität übernehmen. FPGAs verbinden zudem das Beste aus zwei Welten: Sie liefern eine Hardware-basierte Geschwindigkeit und Zuverlässigkeit und behalten dennoch zugleich auch eine hohe flexibel programmierbare Anwendungsflexibilität bei. Dadurch kombinieren sie das Beste von ASICs und Prozessor-basierten Systemen und sind deshalb in vielen Industriebereichen sehr beliebt. Bei der Halbleiterverarbeitung werden FPGAs oft für das Produkt-Prototyping eingesetzt, um Ideen und Funktionen zu testen und zu überprüfen – und das ohne die Kosten und Schwierigkeiten eines kompletten Chipherstellungsprozesses. Der vollständig parallele Aufbau von FPGAs erlaubt es, jede unabhängige Verarbeitungsaufgabe einem speziellen Bereich des Chips zuzuordnen. Das geschieht mittels Verarbeitungsoperationen in einem Bereich, der von anderen Logikblöcken isoliert wird, so dass die Leistung dieses Bereiches nicht beeinflusst wird, wenn weitere Verarbeitungsaufgaben hinzugefügt werden. Folglich können FPGAs mehrere Aufgaben gleichzeitig verwalten und das bei maximalen Verarbeitungsgeschwindigkeiten, was FPGAs für die Implementierung einer datenintensiven Verarbeitung von parallelen Algorithmen prädestiniert. Weitere Vorteile von FPGA sind…

  • • Gesteigerte Leistung: Die Parallelität von Hardware ermöglicht es FPGAs, die CPUs hinsichtlich der Verarbeitung bestimmter Algorithmen (besonders diejenigen mit paralleler Beschaffenheit) mit mehr als tausendfacher Geschwindigkeit zu übertreffen. Im Gegensatz zu FPGAs berechnen CPUs der Reihe nach, teilen Algorithmen in sequentielle Operationen auf und begrenzen die Ausführung auf jeweils einen Vorgang.
  • • Schnellere Time-to-Market: Die Umprogrammierbarkeit von FPGAs erlaubt es, Ideen und Funktionen auf der Hardware zu testen und zu überprüfen – und dies ohne die Zeit, Kosten und Schwierigkeiten, die bei einem kompletten Chipherstellungsprozess zustande kämen. Änderungen können innerhalb von Stunden anstatt Wochen umgesetzt (oder auch verworfen) und getestet werden.
  • • Kostensenkung: Im Vergleich zu den einmaligen Engineering Kosten für benutzerdefinierte ASICs sind FPGAs sehr kosteneffizient und das nicht nur für das Produkt-Prototyping, sondern auch für System-Upgrades und Erweiterungen. Inkrementelle Änderungen an FPGA-Designs zur Erweiterung und/oder Verbesserung der Funktionalität können einfach und günstig umgesetzt werden, ohne das Hardwaredesign ändern zu müssen. Da FPGAs außerdem auch im laufenden Betrieb beim Kunden im Feld aufrüstbar sind, bieten sie in der Regel auch eine längere Lebensdauer mit verringerten langfristigen Systemwartungs- bzw. Systemaustauschkosten.

Einen FPGA-Chip als Co-Prozessor zu nutzen, um ausgewählte Bildverarbeitungsalgorithmen (z.B. Tabellenlesen) zu implementieren, kann zur Entlastung der CPU beitragen und so Ressourcen freistellen, mit denen man andere Operationen durchführen kann. Bilddaten können zudem zwischen FPGA und CPU gestreamt werden, um gemeinsam Aufgaben abzuarbeiten und so die Gesamtleistung des Vision Systems beträchtlich zu steigern.

Leistungsvergleich CPU – FPGA

Wie Tabelle 2 zeigt, dauert eine CPU-basierte Operation 4,5ms und verwendet vier Prozent der Verarbeitungsressourcen für ein häufig verwendetes Dienstprogramm zur Bildverarbeitung, um einen LUT Algorithmus auf ein 2MP Bild anzuwenden. Ein FPGA hingegen führt diese Aufgabe in 0,025ms aus, ohne jegliche CPU-Ressourcen zu verbrauchen, d.h. eine 100.000-fache Erhöhung der Geschwindigkeit. Wenn zudem Funktionen zur Shading-Korrektur durchgeführt werden, braucht die CPU mit Bildverarbeitungssoftware 1,3ms und zwei Prozent der CPU Ressourcen, um die Verarbeitungsaufgabe abzuschließen, während der FPGA nur 25ns braucht und keine CPU-Leistung in Anspruch nimmt. Trotz der offensichtlichen Vorteile hinsichtlich Kosten, Flexibilität und Leistung sind FPGAs in Vision Systemen bisher nicht so weit verbreitet. Ein Hauptgrund sind Schwierigkeiten bei der Programmierung. Wenige Programmierer sind mit den sehr hardwarenahen Sprachen, wie VHDL oder Verilog, vertraut, die für FPGAs verwendet werden und dadurch entsteht ein Hindernis für eine breite Entwicklung und Nutzung. Mit dem Aufkommen neuer Interface-Produkte und Design-Tools gewinnen FPGAs jedoch neue Marktimpulse.

Smart-Kameras mit FPGA

Die Smart-Kamera Neon 1040 enthält z.B. eine eingebettete Bildvorverarbeitung auf Basis eines FPGAs sowie eine C++ Programmierumgebung. Sie schafft damit die Anforderung ab, andere Sprachkenntnisse haben zu müssen, um von den FPGA-Vorteilen profitieren zu können. Durch die Vorinstallation ausgewählter Funktionen zur Bildvorverarbeitung – inklusive LUT, Shading-Korrektur und Region of Interest (ROI) Fähigkeit – nutzt sie einen FPGA als Co-Prozessor, um die CPU zu entlasten. Der FPGA verbindet sich mit dem Bildsensor Device (Kamera), vorverarbeitet die eingehenden Rohbilder und leitet die vorverarbeiteten Daten zur komplexeren Bildanalyse an die CPU. Dementsprechend übertrifft die Smart-Kamera ihre konventionellen Pendants hinsichtlich Leistung und Geschwindigkeit erheblich. Um die Nutzung noch weiter zu vereinfachen, stehen auch komfortable APIs zur Verfügung, die es erlauben, FPGA-Funktionen mit C++ in der Visual Studio Umgebung von Microsoft zu kompilieren.

Themen:

| Fachartikel

Ausgabe:

inVISION 3 2016
ADLINK Technology GmbH

Das könnte Sie auch Interessieren