Einführung in die FPGA-beschleunigte Verarbeitung

Einführung in die FPGA-beschleunigte Verarbeitung
 Einführung in die FPGA-beschleunigte Verarbeitung
TECH-TIPP
W E R T V O L L E I N F O R M AT I O N E N V O N U N S E R E N E X P E R T E N
FPGA-BESCHLEUNIGUNG
Was ist ein FPGA?
Ein FPGA (Field Programmable Gate Array) ist ein integrierter Schaltkreis, der aus logischen Blöcken, I/O-Zellen und einem elektrischen
Verbindungsnetzwerk besteht. Dadurch kann der Chip neu konfiguriert werden, um die Eingänge und Ausgänge mit den logischen
Blöcken auf verschiedenste Weise zu verbinden. Die ursprüngliche
Fähigkeit eines logischen Blockes besteht darin, eine einfache logische Operation auszuführen, wie zum Beispiel UND oder XOR. In
der Regel bietet er eine gewisse Speichermöglichkeit, sei es ein
einfacher Flipflop oder auch ein komplexerer Speicherblock. Die
logischen Blöcke wurden zu logischen Funktionsblöcken weiterentwickelt, die Look-Up-Tabellen zum Umschalten der aktuellen
Funktion und zur Durchführung bestimmter Aufgaben wie arithmetischer Operationen verwenden. Doch das ist nur ein Teil dessen,
was moderne FPGAs leisten können: Die derzeitigen FPGAs sind im
Begriff, die Grenze der aktuellen System-on-Chip-Technik zu überschreiten. Die eigentliche Stärke von FPGAs liegt jedoch nach wie
vor in den logischen Blöcken, die so verknüpft werden können, dass
eine hochgradig parallelisierte Verarbeitung unter Echtzeitbedingungen stattfinden kann.
Wo werden FPGAs in der industriellen Bildverarbeitung eingesetzt?
FPGAs werden selten erwähnt, existieren jedoch in vielen Komponenten, die in der industriellen Bildverarbeitung zum Einsatz kommen. Häufig findet man sie im hinteren Teil einer Kamera, wo sie
dazu dienen, die vom Sensor übermittelten Daten in aussagekräftigere Daten zu konvertieren, bevor sie an die Kamera weitergeleitet
werden. Als Beispiel hierfür gelten die neuen CVC GigE-Kameras
von STEMMER IMAGING. Sie verwenden ein Sony FCB-Kameramodul (das Modul selbst enthält Mikrocontroller und einen FPGA).
Die Sony-Modulschnittstelle mit FPGA übernimmt das LVDS-Signal
von der Kamera und konvertiert es in einen über Gigabit Ethernet
zu übermittelnden Datenstrom. Der FPGA-Core übernimmt nicht
nur die Datenkonvertierung, sondern beinhaltet auch eine Speichersteuerung für wiederholtes Senden der Datenpakete. Der FPGA
führt den GigE Packet Composer aus und integriert eine virtuelle
CPU, die in diesem Fall für zeitunkritische Prozesse wie die Kamerasteuerung verwendet wird.
Ein zweiter Bereich, in dem FPGAs stark zum Einsatz kommen, sind
die Bilderfassungskarten. Auch hier dienen sie häufig zur Datenkonvertierung und zur Bildkontrastverstärkung. Die Xcelera-Bilderfassungskarten von Teledyne DALSA verfügen in der Regel über
mehrere unterschiedliche Firmwares, die zur Ausführung verschiedener Funktionen geladen werden können. Bei diesen Funktionen
IMAGING IS OUR PASSION
kann es sich zum Beispiel um eine Bayer-RGB-Konvertierung handeln oder um Verfahren zur Kontrastverbesserung wie die Flat-FieldKorrektur.
Einen erweiterten Einsatz von FPGAs in Bilderfassungskarten zeigt
die microEnable-Serie von Silicon Software. Die Architektur dieser
Karten verwendet mehrere FPGAs: Einen zur Steuerung der Datenerfassung und -übertragung zur Bereitstellung virtueller serieller
Anschlüsse zur Kommunikation mit der Kamera und ein bis zwei
weitere FPGAs, die vom Anwender mit Hilfe eines grafischen Design-Werkzeugs programmiert werden können, zur Durchführung
zeitkritischer, komplexer Operationen mit hoher Bandbreite wie
Sobel-Filterung, einfache JPEG-Kompression, High-Speed-Datenkonvertierung, Blob-Analyse oder Laser-Triangulation, aber auch
zur Steuersignalverarbeitung.
Einführung in die FPGA-beschleunigte Verarbeitung
Geschwindigkeitsvergleich
Es ist schwierig, die Leistung einer CPU mit der eines FPGA zu vergleichen. Für die Leistungsbeurteilung einer CPU zählt gewöhnlich
die Dauer und Geschwindigkeit bei der Ausführung von Funktionen, während die FPGA-Leistung durch den Datendurchsatz bestimmt wird. Moderne CPUs laufen im GHz-Bereich; Eine moderne
CPU kann beispielsweise über vier Kerne mit einigen GHz verfügen.
Was die Taktrate anbetrifft, ist ein FPGA mit nur wenigen MHz vergleichsweise langsam. Der Unterschied scheint enorm zu sein und
manch einer mag sich fragen, ob ein FPGA überhaupt die erforderliche Geschwindigkeit bringen kann, um von Nutzen zu sein. Genau
hier setzt der Vorteil der Parallelverarbeitung im FPGA ein.
Die Taktfrequenz des FPGA interessiert uns weniger als die Datenmenge, die er verarbeiten kann. Betrachten wir dieses Bild als
Beispiel für den Datenfluss, so können wir erkennen, dass die Taktfrequenz nur einen Teil der Gleichung darstellt. Die Daten werden
in den FPGA aufgenommen, aufgeteilt und parallel verarbeitet. Sie
werden dabei mit Hilfe verschiedener Funktionen aus logischen
Blöcken verarbeitet. In diesem skizzierten Beispiel sind sechs solcher Funktionen angedeutet. Anschließend werden die verarbeiteten Daten vom FPGA über PCI-Express ausgegeben. All dies geschieht in Echtzeit, also in einer vorgegebenen Zeitspanne mit
minimalem Jitter.
Diese Daten werden im Beispiel in acht parallele Prozesse aufgeteilt, so dass die Datenrate bei einer Taktfrequenz von 62 MHz nun
bei 496 MOPS (Million operations per second) liegt. Anschließend
durchlaufen die Daten die verschiedenen Verarbeitungsprozesse.
Die Rate beträgt hier nunmehr 2480 MOPS. Abschließend wird die
parallele Verarbeitung beendet und die weitere Übertragung entsprechend durchgeführt. Bei Bildverarbeitungs-Anwendungen, bei
denen diese Datenverarbeitung auf einer Bilderfassungskarte stattfindet, läuft der ganze Vorgang in Echtzeit ab, ohne CPU-Overhead,
so dass die CPU parallel andere Funktionen ausführen kann.
w w w. st e m m e r- i mag i n g .c o m
Einführung in die FPGA-beschleunigte Verarbeitung
Welche Funktionen kann ein FPGA gut ausführen und welche nicht?
Manche Funktionen können von einem FPGA sehr effizient ausgeführt werden. Es gibt jedoch Bereiche, für die FPGAs weniger gut
geeignet sind. Die große Stärke der FPGAs liegt in der linearen Verarbeitung, in der Verarbeitung von Funktionen in einem Datenstrom, ohne zu wissen, wie die restlichen Daten aussehen. Dazu
gehören Farb-Transformationen und Matrixfilter, Hochpass- und
Tiefpassfilter, Sobel, Erosion oder Dilatation, also jeder Vorgang, der
in einem kleinen Bildbereich ausgeführt werden kann. Dies kann
sehr nützlich sein, um hohe Datenraten zu erreichen. Wenn zum
Beispiel ein lokal adaptiver Schwellenwert auf ein Bild anzuwenden
ist, ist dies mit Hilfe eines FPGA sehr einfach möglich. Außerdem
hat dies den Vorteil, dass weniger Arbeitsabläufe auf die CPU entfallen.
dass Algorithmen, die direkten Zugriff auf alle Daten eines gesamten Bildes benötigen, nur schwer umsetzbar sind: Dies gilt beispielsweise für das Drehen eines Bildes um einen großen Winkel
oder aber auch für Funktionen, die stark iterative Operationen erfordern.
Der Funktionsumfang im Bereich der Bildverarbeitung ist groß und
viele der dort durchzuführenden Aufgaben lassen sich in FPGAs abbilden. Entsprechende Algorithmen bis hin zu einer Bildsegmentierung beziehungsweise Bildkompression können somit bereits in
der Hardware implementiert sein. Dies ist insbesondere bei erhöhten Datenraten sinnvoll.
Weniger effizient sind FPGAs für Operationen, die ganze Bilder umwandeln. Im Vergleich zu CPUs haben FPGAs aufgrund ihrer parallelen Architektur nur begrenzten Speicherzugriff. Dies hat zur Folge,
Wie hoch ist der Entwicklungsaufwand einer FPGA-Programmierung?
Die hohe Verarbeitungsleistung der FPGAs und die ständig zunehmende Datenrate moderner Kameras können zahlreiche Aufgabenstellungen aus der Bildverarbeitung lösen. Um die Komplexität der
FPGA-Programmierung zu bewältigen, eignen sich Produkte wie
VisualApplets von Silicon Software, einer graphischen Benutzeroberfläche zur vereinfachten, GUI-basierten FPGA-Programmierung
auf den Bilderfassungskarten der microEnable-Serie. VisualApplets
bietet dabei Operatoren von der Bildakquisition von CameraLink
beziehungsweise GigE über die Bildvorverarbeitung bis hin zur
Blob-Analyse oder JPEG-Kompression an und stellt zudem ebenso
eine Simulationsumgebung zu Verfügung. Damit lassen sich
Bildvorverarbeitungsaufgaben schnell, effektiv und lösungsorientiert umsetzen.
Allgemein werden zur FPGA-Programmierung Hardware-Beschreibungssprachen wie VHDL und Verilog genutzt, welche erhebliche
Vorkenntnisse verlangen und über einen anschließenden Synthesevorgang eine im FPGA lauffähige Netzliste erstellen. Die Entwicklungszeit ist dadurch oft erheblich.
Für OEM-Nutzer bietet STEMMER IMAGING einen GigE Vision-kompatiblen IP-Core für Xilinx- und Altera-FPGAs zum schnellen Einstieg in FPGA-basierte Systeme mit GigE-Schnittstelle.
IMAGING IS OUR PASSION
Einführung in die FPGA-beschleunigte Verarbeitung
Die wesentlichen Unterschiede zwischen FPGA, CPU, GPU und DSP
Datenverarbeitung ist nicht nur mit FPGAs und CPUs möglich.
Heutzutage werden ebenso Grafikprozessoren (GPU) eingesetzt,
die einen Teil der Verarbeitungsaufgaben übernehmen, um ebenso
die CPU zu entlasten.
Eine weitere Methode zur Datenverarbeitung in Echtzeit stellen digitale Signalprozessoren (DSP) dar. Nachfolgend finden Sie einen
kurzen Überblick zu den Unterschieden zwischen den Verarbeitungsarchitekturen.
FPGA-VERARBEITUNG
CPU-VERARBEITUNG
GPU-VERARBEITUNG
DSP-VERARBEITUNG
Massive Parallelverarbeitung
Sequentielle Verarbeitung
Massive Multicores
Limitierte Parallelverarbeitung
Hardware-seitige Implementierung
Software-seitige Implementierung
Software-seitige Implementierung
Software-seitige Implementierung proprietär
Extrem schnelle Ausführung, GPIO,
Echtzeitverarbeitung
Ausführung nicht deterministisch,
viele Abhängigkeiten
Schnelle Ausführung,
Datentransfer nötig
Ausführung schnell in bestimmten
Bereichen, limitiert in anderen
Kapazität begrenzt durch Größe
Nahezu unbegrenzte Operatorzahl
im Programm
Abhängig vom GPU-Chip, limitiert
Begrenzt auf Anwendungsbereich
Extrem stark bei
bestimmten Operationen
Extrem vielseitig
Extrem stark bei
bestimmten Operationen
Nur bestimmte Operationen effektiv
Entwicklungswerkzeug minimiert
den Aufwand
Sehr leichte Programmierung mit
Sprachen wie C++
Programmierung mit
Bildverarbeitungs-Bibliotheken
proprietäre Entwicklungsumgebung
Tools zum Debuggen/ Simulieren
vorhanden
Große Auswahl an Debugging-Tools
Einige Tools zum Debuggen vorhanden
Einige Tools zum Debuggen vorhanden
Fazit
Natürlich hat jede Architektur eine durch den jeweiligen Anwendungsfall bestimmte Daseinsberechtigung. Somit machen die
besonderen Fähigkeiten den FPGA für entsprechende Aufgaben
zweifelsohne zu einem wertvollen Instrument in der industriellen
Bildverarbeitung.
TT-FPGA1-08/2011 ∙ Technische Änderungen und Fehler vorbehalten.
Der Einsatz von FPGAs zum Aufbereiten von Daten ist in der Bildverarbeitung weit verbreitet und wird in der Regel vom Anwender
nicht bemerkt. Wenn sie bei Vorverarbeitungsprozessen zur Umsetzung herangezogen werden, sind sie in der Lage, die CPU zu entlasten und extrem hohe Bandbreiten in Echtzeit zu bewältigen.
Autoren:
William Clifford & Björn Rudde, STEMMER IMAGING
WWW.STEMMER-IMAG I NG.COM
•
I MAG I N G I S O U R PAS S I O N
D E UTS C H L A N D
G R O S S B R ITA N N I E N
FRANKREICH
SCHWEIZ
Telefon: +49 89 80902-0
[email protected]
Telefon: +44 1252 780000
[email protected]
Telefon: +33 1 45069560
[email protected]
Telefon: +41 55 415 90 90
[email protected]
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement