GigE-Core-Evaluierungskit

Gigabit-Ethernet in der Bildverarbeitung

01.10.2008 | Autor / Redakteur: Matthias Schaffland* /

Mit der zunehmenden Verbreitung von Gigabit-Ethernet und dem damit verbundenen Preisrutsch für entsprechende Netzwerkkomponenten, wurde diese Technik auch als Datenübertragungsmedium für die industrielle Bildverarbeitung interessant. Um die Bandbreite dieses Kommunikationsmediums voll auszunutzen, sind jedoch oftmals hardwarebasierte Netzwerk-Engines erforderlich.

Der FPGA-Core der Firma Feith Sensor to Image bildet die Grundlage eines leistungsfähigen Gigabit-Ethernet-basierten Gerätedesigns und ist nicht auf Kommunikationsmodule anderer Hersteller angewiesen. Bei Komponenten, v.a. Kameras, für die industrielle Bildverarbeitung hat sich der Standard GigE Vision weitestgehend durchgesetzt. Dieser beschreibt das UDP-basierte Übertragungsprotokoll mit dem Daten, im Allgemeinen Bilder und Nachrichten, von der Kamera zum PC oder Konfigurations- und Kommandodaten, z.B. zum Einstellen der Belichtungszeit, zur Kamera geschickt werden. Um die Erstellung von Gigabit-Ethernet-fähigen Geräten zu erleichtern, entwickelte Feith Sensor to Image eine FPGA-basierte Lösung, die diesen Standard implementiert.

Bild 1: Bildverarbeitung über Gigabit-Ethernet mithilfe des GigE-Cores von Feith
Bild 1: Bildverarbeitung über Gigabit-Ethernet mithilfe des GigE-Cores von Feith

Diese Lösung besteht aus einem oder mehreren IP-Cores, die auf den Xilinx-FPGAs vom Typ Spartan-3x, Virtex-4 und Virtex-5 lauffähig sind. Gerade durch die Unterstützung der preisgünstigen Spartan-Chips ist es möglich, kostengünstige Kommunikationsmodule zu entwerfen. Das Blockschaltbild zeigt den grundsätzlichen Aufbau eines Systems unter Verwendung des GigE-Cores (Bild 1). Als Framework dient ein VHDL Top-Level-Design, das die Schnittstelle zur Hardware herstellt, also zu den Anschlüssen des FPGAs und den daran angeschlossenen Komponenten wie Speicher, Flash, EEPROM, der Datenquelle (z.B. Bildsensor) und der Netzwerkschnittstelle (Ethernet-PHY). Außerdem werden zudem die benötigten Cores instantiiert.

Diese Cores bestehen aus einem frei anpassbaren Video-Modul (video_in) als Interface zur Datenquelle, einem Memory-Controller zur Pufferung der Daten. Des Weiteren wird hier die Packet-Resend-Funktion realisiert, die Datenpakete auf Anforderung nochmals sendet, wenn diese nicht in der empfangenden Applikation angekommen sind. Die GigE-Engine übernimmt die Paketierung und den Ethernet-basierten Teil. Falls im FPGA keine festverdrahtete Ethernet-MAC-Einheit enthalten ist, muss diese auch als Core eingebunden werden. Zusätzlich ist ein MicroBlaze-basiertes CPU-Modul integriert, das die weniger zeitkritischen Teile des GigE-Vision-Protokolls übernimmt (Control Channel und Message Channel). Dabei werden die vom Standard vorgegebenen Funktionen über eine Bibliothek eingebunden, der Rest der Software kann angepasst werden, z.B. um den Zugriff auf eigene Register zu realisieren.

Filtertreiber vermeidet Flaschenhals

Normalerweise werden die Bilddaten (z.B. einer GigE-Kamera) zur weiteren Verarbeitung an einen PC übertragen. Da der Netzwerk-Stack aber dort komplett in Software gehalten wird, verbraucht die Abarbeitung der Gig-Pakete bei hoher Datenrate viel Rechenzeit, sodass hier ein Flaschenhals entsteht und die volle GigE-Bandbreite von etwa 120 MByte/s nicht erreicht wird. Um dies zu Vermeiden, gibt es das Konzept des Filtertreibers. Dabei werden die Netzwerkpakete betriebssystemseitig sehr frühzeitig analysiert, bevor die Protokollebenen des Netzwerktreibers durchlaufen werden. Falls dabei Datenpakete eines GigE-Vision Devices gefunden werden, können diese unter Umgehung des TCP/IP-Netzwerkstacks direkt in den Hauptspeicher des PCs geschrieben werden, andere Pakete bleiben unberührt.

Dies schafft eine deutliche Entlastung und führt zu einem Datendurchsatz, der in der Größenordnung von etwas über 100 MByte/s liegt. Des Weiteren ist eine Software erforderlich, die standardkonform mit dem Gerät kommuniziert. Diese kann selbst programmiert werden oder man greift auf bewährte Pakete führender Hersteller zurück. Sowohl der Filtertreiber als auch der zum Bildverarbeitungspaket Common Vision Blox gehörende Image Manager werden in Kooperation mit der Firma Stemmer Imaging angeboten. Dies beinhaltet ein SDK, mit dem es möglich ist, die Transport- und Kommunikationsschicht effektiv in eigene Software zu integrieren.

Ergänzendes zum Thema
 

GigE-Core oder Eigenprogrammierung und Zukauf?

Bild 2: CameraLink zum GigE-Modul
Bild 2: CameraLink zum GigE-Modul

Wie sieht nun eine mögliche Vorgehensweise aus, wenn man im ersten Schritt die Technik und die bereits zur Verfügung stehenden Mittel kennen lernen und testen will, um dann im zweiten Schritt ein eigenes Gerät entwerfen zu können? Am einfachsten ist der Einsatz des GigE-Core-Evaluierungskits (Aufmacherbild). Dieses Kit besteht aus dem Referenzdesign einer kompletten Kamera, der Spartan-3E-basierten GigE-Kommunikationshardware und einem Kameramodul (Bild 2) sowie der zugehörigen FPGA Load.

Diese wiederum besteht aus den oben erwähnten Komponenten, die aber teilweise laufzeitbeschränkt sind. Funktionell gibt es keine Einschränkungen. Da diese Komponeten komplett implementiert und teilweise angepasst werden können, ist es damit möglich, den gesamten Designflow durchzuspielen. Auf Softwareseite wird eine Lizenz des Image Managers mitgeliefert, was zuerst das Finden der Kamera sowie die Datenübertragung abdeckt. Im zweiten Schritt dient es als Basis für eigene Software. Falls auftretende Fragen nicht mit der Dokumentation geklärt werden können, ist weitergehender Support ebenfalls enthalten.

*Matthias Schaffland ist im Projektmanagement und technischen Vertrieb bei Feith Sensor to Image, Schongau, tätig.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 262269 / PLDs & Tools)