Die technologischen Fortschritte bei der Aufnahme, Verarbeitung und Speicherung großer Datenvolumen für Digital-Video ermöglichen immer leistungsfähigere Kamera-basierte Systeme, und sie treiben auch die Entwicklung von Smarter Vision-Systemen mit eingebetteter Analytik immer weiter voran. Diese neuen Geräte-Generationen erweitern bestehende Applikationen wie militärische Überwachungs- und Sicherheitssysteme, automatische Inspektions- und Verkehrsleitsysteme, medizinische Bildverarbeitung, Fahrerassistenzsysteme und vieles andere mehr. Steigende Erwartungen der End-User und intensive Entwickleraktivitäten erhöhen den Druck zur Lieferung von Systemen mit einer größeren Anzahl von Video-Eingängen bei kleineren Abmessungen. Das soll die Bauteilekosten senken und den kompakteren Aufbau bei geringerem Leistungsverbrauch ermöglichen, um die Systemeffizienz und die Portabilität weiter zu verbessern.

Auf einen Blick

Im Hinblick auf mehr Kanäle, gesteigerte Performanz, kompaktere Baugröße und geringerer Stromverbrauch hat A2e Technologies einen H.264-Codierer und Encoder/Decoder-Kerne in den Xilinx Zynq 7000 All-programmable SoC integriert. Diese Kerne haben eine kleine Grundfläche, brauchen wenig Strom und ermöglichen die Skalierung auf eine größere Zahl von Videokanälen mit einem oder mehreren SoCs des Typs Zynq 7000.

Die wachsende Nachfrage nach einer immer größeren Zahl von Eingangskanälen erkennt man am besten an aktuellen militärischen Überwachungssystemen in Patroullienfahrzeugen oder unbemannten Flugkörpern. Sie enthalten oft mehr als zehn Kameras, um detaillierte Informationen für strategische Zwecke oder als Evidenzen zu erfassen. Einige dieser höchst komplexen und fortschrittlichen Sicherheits- und Überwachungsanlagen erfordern von ihren Video-Subsystemen die Verarbeitung von mehr als 100 Kamera-Feeds.

Andererseits haben Anlagen wie fliegende Wetterstationen meist nur eine geringe Anzahl von Kameras. Dafür verlangen sie extrem niedrigen Leistungsverbrauch und äußerst kompakten Aufbau, um engste Raumbedingungen und lange Batterielebensdauer zu erfüllen.

Geringe Latenzen bei der Signalverarbeitung gehören zu den weiteren Schlüsseleigenschaften solcher Videosysteme, insbesondere in der Steuerungstechnik oder in Medizingeräten, etwa in der Arthroskopie. Hier werden sehr geringe Latenzen gefordert: von typisch 10 bis 30 ms von dem Zeitpunkt, an dem der Sensor das Videosignal zur Compression-Engine sendet, und dem Erscheinen des decodierten Signals auf dem Bildschirm. Das soll das angemessene Ansprechverhalten des Geräts sicherstellen.

Neue Design-Methoden

Die eingeführten Entwicklungsprozeduren zur Erstellung eingebetteter Videosysteme basieren entweder auf einem standardmäßigen Videoprozessor-IC (ASSP), oder sie realisieren das System mit diskretem Prozessor und kundenspezifschem FPGA. Das Verfahren mit ASSP erlaubt den Aufbau von Systemen mit kleiner Grundfläche. Es ist jedoch relativ unflexibel und schwierig in der Skalierung auf eine größere Zahl von Eingangskanälen. Systeme auf der Basis eines diskreten Prozessors hingegen erfordern mehr Komponenten, einschließlich DDR- und Flash-Banks. Das bedingt einen signifikant größeren Footprint. Leider erschweren beide Varianten den Entwicklern das Erreichen der geforderten niedrigen Latenzzeit, wie sie für Echtzeit-Steuerungen unumgänglich ist. Also ist eine andere Lösung gefordert, wenn man die Marktanforderungen nach mehr Kanälen, gesteigerter Performanz, kompakter Baugröße und geringerem Stromerbrauch erfüllen will.

Im Hinblick auf diese Anforderungen hat A2e Technologies einen High-performance H.264-Codierer und Encoder/Decoder-Kerne implementiert, die den integrierten ARM Dual-Core Cortex-A9 MPCore-Prozessor und die FPGA-Struktur des Xilinx Zynq 7000 All-programmable SoC (System-on-Chip) verwenden. Diese Kerne haben eine kleine Grundfläche, brauchen wenig Strom und erlauben die Skalierung auf eine größere Zahl von Videokanälen mit einem oder mehreren SoCs vom Typ Zynq 7000.

Der Encoder-Kern lässt sich als Modul direkt in ein Kamera-Subsystem integrieren. Er akzeptiert Raw-Video von einem CMOS-Sensor, verarbeitet diese Videodaten und komprimiert sie zur Ausgabe an das Client-System. Der Zynq 7000 SoC integriert Peripheriesysteme im Industriestandard sowie Flash-Controller und Multi-Port DRAM-Controller. Außerdem ermöglicht er die Implementierung des Encoder/Decoders mit nur einem externen DRAM-Bereich. Die enge Kopplung zwischen Speicher und Prozessor-Subsystem ergibt eine hohe interne Bandbreite, die man mit diskreten Prozessor- und Speicherkomponenten nur schwierig realisieren kann.

Bild 1: Architektur einer dualen 1080p30 H.264 Compression Engine.

Bild 1: Architektur einer dualen 1080p30 H.264 Compression Engine.A2e Technologies/Xilinx

Ein signifikanter Vorteil der programmierbaren SoC FPGA-Struktur ist die Flexibilität zur Kundenspezifizierung in der Anzahl der geforderten Eingänge und der Unterstützung nicht standardisierter Videoformate. Zur Verarbeitung zahlreicher Video-Stream-Eingänge lässt sich der Baustein mit mehreren H.264-Kernen konfigurieren. Bild 1 zeigt die Architektur einer dualen 1080p30 H.264 Compression Engine. Die Flexibilität dieser Methodik ermöglicht die Implementierung einer großen Anzahl von Kanälen bei gleichzeitiger Einhaltung des geforderten Durchsatzes. Das unterscheidet sie von der Vorgehensweise des Einsatzes von ASSPs. Viele der Standard-ICs bieten nur zwei Eingänge. Der Entwickler muss dabei also mehrere Kanäle auf einen Eingang multiplexen, was die daraus resultierende Architektur schnell in der Bandbreite begrenzt.

H.264-Kerne für FPGAs sind seit geraumer Zeit von mehreren Herstellern lieferbar. Doch keiner ist schnell oder klein genug, um 1080p30-Videosignale zu konvertieren und in Bausteine mit kleiner Grundfläche zu integrieren. Die Festlegung auf einen voll programmierbaren SoC hat es A2e ermöglicht, mit einem Micro-Footprint H.264-Kern diese Begrenzungen zu überwinden. Ein einzelner Kern kann mehrere Videoströme codieren und decodieren, und zwar mit Auflösungen von 720p HD bis zu 4K Ultra HD (UHD), mit Bildwechselraten zwischen 15 und 60 fps. Weitere Vorteile ergeben sich aus dem vereinfachten Hardware-Design und der leichteren Eingabe von OSD- (On-Screen-Display) Daten. Darüber hinaus kann man diese Kerne zum effektiven Management der System-Latenz einsetzen, und damit die Anforderungen von Echtzeitsteuerungen erfüllen.

Sicheres und vereinfachtes OSD

In vielen Geräten ist die Überlagerung des Video-Streams mit Graphiken oder Daten ein reguläres Erfordernis, etwa für Zeitstempel oder GPS-Koordinaten. In Applikationen wie einer Video-Überwachung kann es von Bedeutung sein, dass diese OSD-Daten immun gegen Manipulationen sind. Dies lässt sich effektiv durch das Hinzufügen der OSD-Information vor der Videokompression erreichen.

Lagermäßíg lieferbare Video-SoCs sind allerdings meist so ausgelegt, dass sie die OSD-Informationen als Paketdaten in die bereits decodierten Videosignale einfügen. Dies bietet weniger Sicherheit. Außerdem kompliziert es das Design, weil man die OSD-Information entweder als Metadaten senden oder den Prozessorkern zum Timing der Videosignale nutzen muss, und die OSD-Daten im Video-Puffer ablegt.

Realisiert man den Codierer in einem FPGA, lassen sich die OSD-Daten vor dem Komprimieren hinzufügen, indem man einfach einen entsprechenden IP-Block einfügt. Ganz ähnlich können, falls erforderlich, noch weitere Verarbeitungsstufen, etwa die Korrektur von Fischaugenobjektiven, vor der Compression-Engine eingefügt werden.

Minimierung der Latenz

Um Latenzwerte im Bereich 10 bis 30 ms zu erreichen, wie in Steuerungsapplikationen erforderlich, muss man sowohl die Performanz der Codierer, wie die der Decodier-Subsysteme gleichermaßen in Betracht ziehen. Der Zeitraum vom Senden der Daten aus dem Sensor bis zum Erscheinen des decodierten Bildes auf dem Bildschirm – auch als Glas-zu-Glas-Latenz bezeichnet  – ergibt sich aus der Summe der Zeitaufwandes der Videoverarbeitung (einschließlich aller Algorithmen wie Fischaugenkorrektur), der Zeit zum Auffüllen des Frame-Buffers, der Dauer der Videokompression, etwaigen Verzögerungen durch die Software infolge des Paket-Transports und von Netzwerkverzögerungen plus der Zeit bis zum Empfang der Pakete und der Video-Decodierung.

Erwähnt sei noch, dass viele Systeme trotz des Einsatzes eines kundenspezifischen Hardware-basierten Codierers einen standardmäßigen, PC-basierten Media Player wie VLC zum Decodieren der Videosignale verwenden. Diese Media Player haben meist große Pufferverzögerungen, die 500 bis 1000 ms betragen können. Zu einer wirklichen Kontrolle und Minimierung der Latenz sollte das System beides, Codierung und Decodierung, Hardware-basiert durchführen. Außerdem sollte man strikt darauf achten, dass die Minimierung der von den Puffern, Netzwerk-Stacks, Streaming-Servern und Klienten eingeführten Verzögerungen beide Seiten – Codierer und Decodierer – erfasst.

Um eine Reihe unterschiedlicher Applikationen einschließlich Echtzeitsteuerungen zu bewältigen, nutzt A2e sein Know-how im Bereich H.264 zur Produktion von Nur-Codierern und von Codierer/Decodierer-Kernen. A2e baut außerdem spezielle Versionen dieser Kerne mit niedriger Latenz, sowie einen entsprechenden RTSP- (Real-Time Streaming Protocol) Server. Der 1080p30 Nur-Codierer verwendet 10.000 Look-up-Tabellen (LUT), was etwa 25 Prozent einer Zynq Z7020 FPGA-Struktur entspricht. Der Codierer/Decodierer verwendet 11.000 LUTs. Der Codierer mit niedriger Latenz puffert lediglich 16 Videozeilen, bevor er mit der Kompression beginnt. Für einen 1080p30 Video-Stream ist die Latenz geringer als 500 µs, und einen 480p30 Video-Stream weniger als 1 ms. Somit ermöglicht dieser Codierer den Aufbau von Systemen mit geringer und vorher bestimmbarer Latenz.

Bild 2: Video-Subsystem mit Low-latency Coder/Decoder und Low-latency RTSP-Server von A2e, implementiert in einem Zynq 7000 SoC.

Bild 2: Video-Subsystem mit Low-latency Coder/Decoder und Low-latency RTSP-Server von A2e, implementiert in einem Zynq 7000 SoC.A2e Technologies/Xilinx

Der RTSP-Server mit niedriger Latenz unterscheidet sich von einem Standard RTSP-Server in zweifacher Hinsicht. Erstens ist er vom Forwarding-Pfad hinreichend weit entfernt, er bewahrt jedoch die Real-Time Control Protocol- (RTCP) Statistik. Im asynchronen Modus aktualisiert er den Kernel Driver mit den Änderungen der Destination-IP oder MAC-Adresse. Zweitens fügt der Kernel Driver die notwendigen Header auf der Basis der Information vom RTSP-Server hinzu und injiziert das Paket direkt in den Netzwerk-Treiber zur sofortigen Weiterleitung. Alles das eliminiert den Zeitaufwand zur Ausführung eines „Memory Copy To“ oder vom User-Raum.

Bild 2 zeigt ein vollständiges, auf H.264-IP basierendes Video-Subsystem. Es besteht aus dem Low-latency Coder/Decoder und Low-latency RTSP-Server von A2e, alle implementiert in einem Zynq 7000 SoC. Das System realisiert eine Latenz von insgesamt weniger als 50 ms. Dabei ermöglicht es den Aufbau auf einer kleinen Leiterplatte mit stark vereinfachtem Hardware-Design.