Anzeige

Entscheidungshilfe

CPU oder FPGA für die Bildverarbeitung?

Da immer mehr Bildverarbeitungssysteme mit der neuesten Generation von Multicore-CPUs und leistungsstarken FPGAs ausgestattet sind, ist es wichtig, sich mit den Vor- und Nachteilen beider Verarbeitungselemente auseinanderzusetzen. Dabei geht es nicht nur um die passenden Algorithmen für das jeweilige Zielsystem, sondern auch um die am besten geeigneten Verarbeitungsarchitekturen.

Bild: National Instruments Germany GmbHBild: National Instruments Germany GmbH
Bild 1 | Aufgrund der hohen inhärenten Parallelität von FPGAs bieten diese teilweise deutliche Leistungssteigerungen gegenüber CPUs.

Bevor es um die Auswahl der Algorithmen geht, sollte zunächst die am besten geeignete Verarbeitungsarchitektur für die jeweilige Anwendung ermittelt werden. Bei einem heterogenen Bildverarbeitungssystem mit CPU und FPGA kommen zwei Verarbeitungsmöglichkeiten in Frage: Co-Processing oder Inline-Verarbeitung. Beim FPGA-basierten Co-Processing teilen sich FPGA und CPU die Verarbeitungslast. Diese Architektur findet sich in der Regel bei Systemen mit GigE-Vision- und USB3-Vision-Kameras, da deren Erfassungslogik einfacher mit einer CPU implementiert werden kann. Das Bild wird zunächst mit der CPU erfasst und dann per direktem Speicherzugriff (Direct Memory Access, DMA) an den FPGA übertragen, auf dem anschließend Operationen wie Filterung oder das Entfernen von Farbebenen durchgeführt werden. Für weitere Verfahren wie z.B. OCR oder Musterabgleiche kann das Bild wieder zurück an die CPU gesendet werden. In manchen Fällen lassen sich auch alle Verarbeitungsschritte auf dem FPGA durchführen und nur die Ergebnisse an die CPU rückübertragen. Damit stehen mehr CPU-Ressourcen für andere Vorgänge wie Bewegungssteuerung, Netzwerkkommunikation und Bildanzeige zur Verfügung. Bei der FPGA-basierten Inline-Verarbeitung wird die Kameraschnittstelle dagegen direkt mit den FPGA-Pins verbunden, sodass die Bildelemente auf unmittelbarem Weg von der Kamera auf den FPGA übertragen werden. Diese Architektur kommt hauptsächlich bei Systemen mit Camera-Link-Kameras zum Einsatz, da die Erfassungslogik für diesen Kameratyp am einfachsten über die digitalen Schaltungen des FPGAs implementiert werden kann. Die Architektur bietet zwei Vorteile: Zu einem wird bei der Inline-Variante, ähnlich dem Co-Processing, ein Teil der Verarbeitungslast von der CPU auf den FPGA verlagert, indem einige Vorverarbeitungsfunktionen auf dem FPGA ablaufen. So lassen sich beispielsweise Filter- und Schwellenwertverfahren auf dem FPGA durchführen, bevor die Bildelemente weiter an die CPU gesendet werden. Da auf diese Weise nur Bildelemente aus relevanten Bereichen übertragen werden, muss die CPU weniger Daten verarbeiten, was den Gesamtdurchsatz des Systems erhöht. Zum anderen lassen sich auch Hochgeschwindigkeitssteuerungen und -regelungen direkt auf dem FPGA durchführen, ohne dafür die CPU in Anspruch zu nehmen. FPGAs eignen sich besonders gut für Steuer- und Regelanwendungen, da sie sehr schnelle und hochgradig deterministische Zykluszeiten ermöglichen. Ein Beispiel hierfür ist die Hochgeschwindigkeitssortierung, bei welcher der FPGA Impulse an einen Aktor sendet, der Teile auf einem Förderband dann entsprechend sortiert bzw. auswirft.

National Instruments Germany GmbH

Dieser Artikel erschien in inVISION 2 2018 - 16.04.18.
Für weitere Artikel besuchen Sie www.invision-news.de