Ethernet AV-Bridging

Trotz permanenter Erhöhung der Bandbreite und Erweiterung des Standards um Quality-of-Service hat Ethernet heute noch immer mit der Problematik fehlender Echtzeitfähigkeit zu kämpfen. Vor allem zur Übertragung multimedialer Inhalte mit der Notwendigkeit möglichst synchroner Paketzustellung macht sich dieser Mangel unangenehm bemerkbar. Dies könnte sich nun ändern, denn mit der Standard-Erweiterung „AVB" (802.1BA) entsteht eine Möglichkeit zur deterministischen Zustellung von Paketen in einem lokalen Netzwerk. XMOS bietet dafür mit seinen Event-Driven Prozessoren eine moderne Implementierung.

Event-Driven Prozessor

XS1-G4_BlockDiagram_01_0.gifEthernet AVB mit seinen Substandards "Precision Time Protocol" (802.1AS), "Queuing & Forwarding" (802.1Qav) und "Reservation & Allocation" (802.1Qat) verlangt spezifische Erweiterungen der Media-Access-Controller, dazu die Unterstützung digitaler Medienaufzeichnung- und Wiedergabe. Zur Implementierung eignen sich ganz generell Prozessoren aus dem Embedded-Bereich, doch müssen sie in hohem Maße determinierbar, also echtzeitfähig sein, um den Anforderungen des synchronen Ethernets gerecht zu werden. Architekturen auf Basis von State-Machines auf der anderen Seite, implementierbar beispielsweise in FPGAs und CPLDs, erfüllen diese Forderung natürlich in idealer Weise, sind aber recht sperrig in der Formulierung der benötigten Funktionsblöcke als HDL-Code. Ideal also ist ein hoch deter-ministischer Prozessor mit der Möglichkeit zur Programmierung in gewohnter Hochsprache, wie er seit einiger Zeit von der Firma XMOS als „Event Driven Processor" (EDP) mit der sog. XCore-Achitektur angeboten wird.

Die Idee dahinter ist im Grunde recht einfach: Definiere so viele Funktionen wie möglich in Software, auch solche, die klassischerweise in Hardware realisiert sind und lasse dies auf einer Anordnung von Prozessorkernen ablaufen. Jeder Task belegt einen Thread und 8 davon laufen in exaktem Zyklus auf einem Core. Eine gegenseitige Beeinflussung ist ausgeschlossen und so lässt sich bei der Entwicklung exakt vorhersagen, wie lange eine bestimmte Aktion dauern wird. Dieses hohe Maß an Determinismus ist die zentrale Schlüsseleigenschaft der Chips und versetzt Entwickler in die Lage, nicht nur Systemprozesse wie Protokollstacks, sondern auch Hardwareschnittstellen in einer gemeinsamen Umgebung zu definieren. Dieser integrierte Hardware/Software Development-Flow basiert auf einem modifizierten C-Compiler namens XMOS-C (XC), letztlich eine C-Erweiterung, die den Zugriff und die Steuerung des Multi-Threadings und der I/O-Ressourcen ermöglicht.

Entwicklungsplattformen

XS1-G_DevelopmentSystem_0.jpgDie SW-Entwicklungsumgebung gegen Registrierung ist kostenlos von der XMOS-Webseite zu beziehen und zwar für den Einsatz in Windows-Umgebung ebenso wie für MAC- oder Linux-Betriebssysteme.  Einmal registriert, erhält man Zugang zu den Tools und Beispielprogrammen sowie zur Seite Xlinkers, der offiziellen XMOS Web-Community. Darin eine große Zahl an Projekten, Programmen sowie Code-Snippets aber auch Blogs mit Besprechung von Pro-blemen und Lösungen, die einem das Leben als Entwickler leichter machen.

Hardwareseitig bietet XMOS mehrere Evalu­ierungs-Boards auf Basis des XS1-G4 und dem neuen Single-Core-Device XS1-L1. Für die AVB-Implementierung nutzt XMOS das XS1-G, eine Break-Out-Box mit QVGA-LCD im schwarz glänzenden Gehäuse und Anmutung eines Modder-PCs, umfangreich ausgestattet mit LVDS-Schnittstellen, Audio-I/O und Ethernet, einen Slot für SD-Cards und die auf Pfosten-leisten herausgeführten XIO-Ports.

Im Auslieferungszustand sind bereits einige Bei­spielprogramme installiert, die Über ein On-Screen-Menü und der Tastatur gestartet werden können. Neben „Pong" und „Mandelbrot" gibt es auch einen Audio Frequenzanalyzer, der den Audio-Eingang des Evalsystems in Echtzeit analysiert und als Frequenzdarstellung auf den Bildschirm bringt.

Systemdesign

XMOS_AVBImplementation_BlockDiagram_01_0.gifDie Komponenten MAC, PTP und Audio-Interface benötigen in Summe 13 Threads und knapp 80 kByte Speicher. Mit einem Vorrat von 32 Threads und 256 kByte Speicher des XS1-G4-Prozessors bleiben also für Anwendungen mehr als 60% der Chip-Ressourcen, z.B. für Protokoll-implementierungen, zur Netzwerkkonfiguration, Anwenderschnittstellen, für Audio-Verarbei-tungsroutinen oder einfach für zusätzliche Audio-Streams. Die Aufteilung der Komponenten auf die 4 Kerne des Prozessors ist in der Abbildung rechts zu sehen. Einige zeitkritische Threads müssen auf einem gemeinsamen Core laufen, da die hier die kürzesten Link-Verzögerungen existieren.

XMOS_AVBKit_01_0.jpg

Demosystem

Mit der Ausstattung des AVB-Referenzsystems von XMOS lässt ich eine AVB-Wolke mit 4 Teil­nehmern aufbauen, wobei jede der Boxen als Talker oder Listener fungieren kann. Die notwendige Software ist auf einer SD-Karte in jeder Box enthalten und lässt sich über ein Menü auswählen, zur Auswahl stehen die Programme „AVB_T.XB" für den Einsatz als Talker und „AVB_L.XB" für den Listener. XMOS_AVBReferenceKit_Topography_01_0.gifAudiosignale werden über die Line-In Klinkenbuchsen in die Boxen eingespeist bzw. können über Line-Out an aktive Boxen ausge­geben werden. Am zentralen Ethernet Switch lässt sich über einen Repeating-Port der Daten-verkehr auf der Ethernet-Ebene verfolgen, z.B. mit einem Packet-Sniffer wie dem bekannten Wireshark. Die Boxen zeigen im Betrieb eine Frequenzdarstellung des eingespeisten bzw. übertragenen Audiosignals, im Thread-Diagramm als FFT & Buffer Komponente zu finden. Auch damit lässt sich sehr eindrucksvoll zeigen, dass sich Threads auf diesem Prozessor nicht gegenseitig beeinflussen und ihre Echtzeitfähigkeit auch unter Last beibehalten.