Video-Controller

Bei Videowänden erfolgt das Streaming von Videos in der Regel über einen Videocontroller, der einen Videostream von Standard-Schnittstellen wie HDMI oder DisplayPort in einen Bildspeicher puffert und von dort über Ethernet an die Videowand sendet.

Für einen solchen Videocontroller haben wir die Systementwicklung auf SoC-Ebene übernommen, einschließlich FPGA-Design, Embedded Linux, Linux-Treiber und einer Userspace-Anwendung für Steuerung und Diagnose.

Weitere Zulieferer lieferten die Hardware und eine Bibliothek sowie ein grafisches, Qt-basiertes Embedded-Konfigurationstool. Unsere Software nutzt die Bibliothek und verbindet sich mit dem Konfigurationstool, sodass eine nahtlose Integration und Steuerung der Videoausgabe möglich ist.

Unsere Leistungen

Systemarchitektur

  • Konzeption der integrierten SoC-Gesamtlösung (Hardware, FPGA, Linux, Userspace).

FPGA / VHDL-Design

  • Multi-Kanal AXI-Master DMA-Engine mit Lastenausgleich und Kanal-Mapper.
  • Optimierter DDR-Memory-Controller (EMIF) für maximale Speicherdatenraten für zeitgleiches Schreiben und Lesen back-to-back.
  • Display-Port-Video-Eingänge/-Ausgänge mit Pixel-Barrel-Shifter (Farbtiefen-Kompression), Video-Splitter für Videovorschau und Video-Test-Pattern-Generator (TPG)
  • 16-Kanal-Netzwerk-Routing mit Stream-Controllern, UDP-Encodern und Layer-4 Paketfiltern.

Embedded-Firmware & Softcore

  • Instanziierung des NIOS II Softcore-Prozessors und Hardware-Anbindung.
  • Anpassung der Bitec-DisplayPort-Firmware-Beispiele an kundenspezifische Anforderungen.

Linux / Treiberentwicklung

  • Linux-BSP für die Kundenhardware
  • Kernel-Treiber für das DMA-Management und die AXI-Lite-Systemkonfiguration.
  • Framebuffer-Treiber für X11 und die Linux-Konsole zur GUI-Videoausgabe.
  • Integration von 16 FPGA-Ethernetkanälen in das Linux-Netzwerk-Subsystem.
  • Video for Linux (V4L)-Treiber zur direkten Einspeisung der FPGA-Videovorschau.
  • Portierung der ursprünglichen NIOS II-Firmware in einen nativen Linux-Treiber.

Softwareentwicklung & Tools

Erstellung modularer C++/Qt-Userspace-Anwendungen für die statische Systemkonfiguration und Echtzeit-Laufzeitdiagnose.

Technologien

Hardware

  • DDR4-Speicher über Intel EMIF
  • DisplayPort ipCore von Bitec
  • SoM: Arria 10-SoM von Dreamchip

Software

  • Embedded-Linux
  • Embedded-Linux-Treiber
  • Linux v4l und Framebuffer
  • Devicetree
  • Linux-Kernel
  • Linux-Treiber
  • U-Boot Bootloader
  • AXI-Lite, AXI-DMA

Programmiersprachen

  • C/C++
  • VHDL
  • TCL
  • Python

Schnittstellen

  • SPI, UART
  • 1G-Ethernet
  • 10G-Ethernet
  • DisplayPort
  • USB
  • RGMII

Tools

Softwareentwicklung

  • KDevelop – C/C++-Entwicklungsumgebung für Linux-Treiber und Linux-Userspace-Programme
  • Yocto – Erstellung der Embedded-Linux-Images
  • NIOS II Embedded Design Suite – C/C++-Entwicklungsumgebung für den NIOS II Softcore-Prozessor

FPGA-Design

  • Quartus (Intel/Altera) – FPGA-Synthese
  • TimeQuest (Intel/Altera) – FPGA-Timing-Analyse
  • SignalTap Logic Analyzer – Echtzeit-Analyse der FPGA-Logik
  • GHDL – FPGA-Simulation
  • ModelSim – FPGA-Simulation

Revision- und Projektmanagement

  • Git – Versionsverwaltung von Quellcode
  • GitLab – Projektorganisation, Ticket- und Versionsverwaltung

Dokumentation

  • Doxygen – Quellcode-Dokumentation für VHDL und C/C++