Kleiner und billiger Entwurf einer FPGA-HD-SDI-Image-Engine

Eine Image-Engine kann in verschiedensten Anwendungen der Bildverarbeitung benutzt werden, zum Beispiel für Broadcast-Systeme, Kontrollräume und Bild-in-Bild Applikationen (PiP = Picture in Picture). Mit einer FPGA-basierten Lösung sollten die Materialliste (BOM) sowie die benötigte Leiterplattenfläche reduziert werden.

Als Entwurfsziel wurde eine neue Multi-View-Image-Engine mit HD-SDI-Schnittstellen, DDR3-Speicher und einer Steuerungsschnittstelle für einen einfachen Zugriff über einen Internetbrowser definiert. Mit der neuen Image-Engine (IE) können die Videodaten von bis zu 16 HD-SDI-Eingängen auf 4 HD-SDI-Videoausgänge dargestellt werden. Dabei kann jeder Videoausgang frei konfiguriert werden, es ist z.B. möglich, an einem Ausgang alle 16 Eingangsströme darzustellen. Die Hardware unterstützt die benötigten Skalierungsfunktionen sowie die Synchronisation der Videosignale.

Im FPGA werden alle wichtigen Systemfunktionen wie Skalieren, HD-SDI-Decodieren/Codieren, Serialisieren/De-Serialisieren (SERDES), Multiplexen und Steuerung implementiert, deshalb ist die Auswahl des richtigen FPGAs eine wichtige Grundsatzentscheidung. Der erste Prototyp wurde mit vier FPGAs aufgebaut und hat einige gravierende Nachteile: eingeschränktes Multiplexen, hoher Synchronisationsaufwand zwischen den FPGAs, geringe Speicherbandbreite (DDR2) und keine Verfügbarkeit von SERDES-Kanälen.

Im neuen Systemdesign sollten diese Nachteile beseitigt und gleichzeitig die Materialliste (BOM) sowie die benötigte Leiterplattenfläche deutlich reduziert werden. Verschiedene FPGA-Hersteller kamen in die engere Auswahl.

Nach strengen Auswahlkriterien stand fest, dass das Lattice ECP3-150 (Bild 1) die beste Wahl ist, und zwar aus folgenden Gründen:

  • Eine ausreichende Anzahl von SERDES-Kanälen (16 HD-SDI-Eingänge können platziert werden).
  • Die Logikkomplexität von 149 LUTs ist ausreichend und erlaubt Erweiterungen.
  • Erste Abschätzungen ergaben eine Ausnutzung von 80 bis 90 % der verfügbaren Logik.
  • Eine geringe Leistungsaufnahme des FPGAs.
  • Der Lattice-Baustein ECP3-150 ist bereits am Markt eingeführt und verfügbar.
  • Preislich entspricht das Lattice ECP3-150 den Projektvorgaben.

Bild 2 zeigt den Aufbau einer FPGA-Karte mit dem Lattice ECP3-150. Das Gesamtsystem (Bild 3) kann bis zu vier FPGA-Karten aufnehmen und erlaubt damit dem Anwender, 16 HD-SDI-Videoeingänge im Vollausbau auf 16 HD-SDI-Videoausgänge zu schalten.

Evaluation der Design-Software

Zum Zeitpunkt der Entscheidungsfindung wurde bei Lattice die neue Design-Software Lattice Diamond eingeführt. Somit musste zwischen folgenden Optionen ausgewählt werden: Die neue Software-Umgebung Lattice Diamond 1.0 oder die alte, aber bewährte Lattice ispLEVER 8.1 SP1.

Die neue Diamond-Software bietet einige neue Leistungsmerkmale und Vorteile wie eine ansprechende verbesserte Benutzeroberfläche (GUI), Stabilität und neue Leistungsmerkmale wie Strategien, Übersetzen mehrerer Entwurfsansätze („run time management“) und Verwaltung mehrerer Entwurfsdateien (z.B. mehrere Entities, eine davon aktiv).

Nach den ersten Erfahrungen mit der Designumgebung Lattice Diamond konnte folgendes Fazit gezogen werden:

  • Die Benutzeroberfläche ist gelungen und einfach in der Handhabung.
  • Die Methodologie ist nachvollziehbar und transparent.
  • Leistungsmerkmale wie Strategien und die Unterstützung mehrere Dateien bieten Vorteile gegenüber vergleichbarer Software.
  • Existierende VHDL-Module können problemlos in die neue Design-Software eingebunden werden (einige wenige bausteinbezogene Instanzen mussten ausgetauscht werden und die Inhalte der Block-RAMs mussten gemäß der Lattice-Konvention portiert werden).

Des Weiteren mussten für diverse Funktionsblöcke Entscheidungen zwischen IP-Core und generischem VHDL gefällt werden. Für den HD-SDI-Encoder/Decoder wurde aus Gründen der Flexibilität auf das existierende generische VHDL-Modul zurückgegriffen. Die SERDES- und LVDS-Funktionen wurden mittels des Lattice-IP-Generators (IPexpress, Bild 4) erstellt. Mit wenigen Mausklicks konnten in IPexpress die jeweils benötigten IP-Cores erstellt werden. Als Ausgabe lieferte IPexpress VHDL-Instanzen, welche problemlos ins Kundenprojekt integriert werden konnten.

Die Implementierung eines funktionierenden DDR3-Controllers erschien weit komplexer. Mehrere abgestimmte Takte und Kontrollsignale werden benötigt, und gleichzeitig muss der Anwender anspruchsvolle Zeitvorgaben erfüllen.

Umgehend war klar, dass sich solch ein VHDL-Modul nicht in einigen Wochen entwickeln lässt. Also hat man sich nach erfolgreicher Evaluierung für den Lattice-DDR3-IP-Core entschieden.

Der IP beinhaltet die Schnittstelle zum DDR3-Speicher (Takt, Daten, Kontrollsignale) und erfüllt die Anforderungen der Speicherhersteller. Die FPGA-interne synchrone Benutzerschnittstelle wurde möglichst einfach gehalten und kann bei 200 MHz betrieben werden. Der Anwender braucht sich somit nicht um die hochfrequenten DDR3-Signale (800 Mbit/s) und die strengen Zeitanforderungen zu kümmern. Damit konnte die DDR3-Schnittstelle innerhalb weniger Tage in Betrieb genommen werden. Bild 5 zeigt den Aufbau des FPGA.