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++