Kodierter Bitstrom Der Manchester-Code: Betagt und immer noch aktuell

Von Richard Oed

Dank ihrer Vorteile ist die Manchester-Kodierung seit Jahrzehnten in verschiedensten Bereichen im Einsatz. Aber wie funktioniert sie? Und wie generiert man einen Bitstrom und testet ihn? Moderne Werkzeuge und ein einfaches Skript machen das leicht.

Anbieter zum Thema

Kurvenverlauf: Der Manchester-Code ist seit Ende der 1940er-Jahre bekannt und wird nach wie vor eingesetzt.
Kurvenverlauf: Der Manchester-Code ist seit Ende der 1940er-Jahre bekannt und wird nach wie vor eingesetzt.
(Bild: Diligent)

Bereits Ende der 1940er-Jahre entwickelte die University of Manchester den später nach ihr benannten Code. Erstmals zur Anwendung kam er im Mark 1 Rechner der Universität, einem der weltweit ersten Computer mit Programmspeicher. Dort wurde er zum Speichern der Daten auf den Magnettrommeln eingesetzt.

Schnell gewann diese Kodiermethode als Modulationstechnik für eine kostengünstige und zuverlässige Datenübertragung per Funk an Popularität. So findet sie sich beispielsweise auf den 1977 gestarteten NASA-Raumsonden Voyager 1 und Voyager 2. Hier wird sie für Steuersignale benutzt, die aus mit 16 Bit pro Sekunde übertragenen, Manchester-kodierten Befehlen bestehen. Diese sind auf einen zweiphasigen Rechteck-Zwischenträger aufmoduliert, dessen Frequenz 512 Hz beträgt. Beide Sonden stehen bereits seit 44 Jahren im Einsatz und fliegen derzeit im interstellaren Medium.

Technisch gesehen ist der Manchester-Code ein selbsttaktender Binärcode, der das Taktsignal und die Daten eines synchronen Bitstromes in einem einzigen Signal kodiert. Im Gegensatz zu anderen Techniken verwendet die Manchester-Kodierung den Übergang von einem niedrigen zu einem hohen Spannungspegel oder von einem hohen zu einem niedrigen Pegel, um den Bitwert darzustellen, also nicht den Spannungspegel selbst. Anders ausgedrückt: Die Richtung des Übergangs bestimmt den Zustand eines Bits, nicht der Pegel.

Bildergalerie
Bildergalerie mit 5 Bildern

Das heißt: Für jedes einzelne Symbol (Bit) existiert mindestens ein Übergang. Alle zählenden Übergänge finden in der Mitte eines Bits statt und nicht zu Beginn. Auf diese Weise repräsentieren je eine positive und eine negative Halbbitperiode ein Symbol. Somit steht die Länge eines jeden Bits fest und der Manchester-Code wird damit selbsttaktend. Dies minimiert die Fehlerrate und optimiert die Zuverlässigkeit. Der Empfänger synchronisiert sich auf die Flanken des kodierten Signals.

Der Nachteil dabei ist, dass sich die Bandbreite bei gleichbleibendem Takt halbiert,.Denn durch die Übertragung von zwei Logikzuständen pro Bit sind zwei Taktzyklen notwendig.

Einfache Logik ermöglicht die Erzeugung

Der Manchester-Code wird aus einem NRZ-(Non-Return-to-Zero-)Datenstrom durch eine binäre XOR-(Exklusive-ODER-)Verknüpfung mit einem Taktsignal erzeugt, das die doppelte Frequenz des Bitstromes aufweist. Bei einer XOR-Verknüpfung mit dem Pegel ‚0‘ erfolgt ein Übergang von einem niedrigen zu einem hohen Spannungspegel. Dies repräsentiert eine logische „Null“. Wird ein Datenbit mit dem ‚1‘-Pegel verknüpft, kommt es zu einer Umkehrung und das Signal geht von einem hohen auf einen niedrigen Spannungspegel über. Dies entspricht dann einer logischen „Eins“. Neben den Nutzdaten kann der übertragene Bitstrom weitere Informationen wie Präambeln enthalten, beispielsweise Synchronisierungsimpulse oder die Signalisierung des verwendeten Kodierverfahrens.

Tabelle: Die Wahrheitstabelle für die Dekodierung nach IEEE 802.3 (oben) und G.E. Thomas (unten).
Tabelle: Die Wahrheitstabelle für die Dekodierung nach IEEE 802.3 (oben) und G.E. Thomas (unten).
(Bild: Diligent)

Da es zwei mögliche Taktphasen gibt, existieren auch zwei verschiedene anerkannte Konventionen für die Manchester-Kodierung: In der ursprünglichen, nach G. E. Thomas benannten Implementation entspricht eine fallende Flanke einer logischen „Eins“ (High) und eine steigende Flanke einer logischen „Null“ (Low). Die Definition, wie sie bei den 10 MBit/s Versionen der IEEE 802.3 Ethernet- und IEEE 802.4 Token-Bus-Normen zum Einsatz kommt, benutzt eine steigende Flanke, um eine logische ‚1‘ (High) darzustellen, und eine fallende Flanke, um eine logische ‚0‘ (Low) abzubilden. Die links gezeigte Tabelle fasst die beiden Versionen zusammen.

Zur weiteren Verwirrung trägt die Namensvielfalt bei. Aufgrund der Zweiphasigkeit des zur Erzeugung des Codes verwendeten Taktsignals wird der Manchester-Code manchmal Zweiphasencode (Biphase-Code) genannt (die Version nach G. E. Thomas heißt dann Biphase-L), Phasenkodierung oder auch Diphase-Code. Die Bezeichnung Manchester II bezieht sich auf die Umsetzung nach G. E. Thomas.

Schließlich gibt es noch den differenziellen Manchester-Code (DMC), der eine Kombination aus dem Manchester-Code und einem NRZI-(non-return-to-zero-inverted-)Code ist. Dieser Code verwendet Übergange in der Mitte des Bits wie der Manchester-Code, aber die Richtung des Übergangs verändert sich mit jeder ‚1‘ im Datenstrom. DMC wird durch eine XOR-Verknüpfung eines NRZI-codierten Bitstromes mit einem Taktsignal generiert.

Vorteile der Manchester-Kodierung

Einer der größten Vorteile des Manchester-Codes ist, dass er einige der Probleme des NRZ-Codes vermeidet. Bei diesem wird während jeder Bitperiode eine logische ‚1‘ durch einen High-Pegel dargestellt, und eine logische ‚0‘ durch einen Low-Pegel. Folgen nun eine Reihe von Einsen oder Nullen aufeinander, kann dies zum Verlust der Synchronisation zwischen Sender und Empfänger führen, da kein eindeutiger Bittakt mehr existiert. Ein gängiger Lösungsansatz hierfür ist die Übertragung eines separaten Taktsignals oder das Verwenden eines unabhängigen Taktes am Empfänger.

Ein weiteres Problem des NRZ-Verfahrens ist das Phänomen, das die Literatur als Gleichstromwanderung (DC Wander) bezeichnet. Da Übertragungsleitungen in der Regel wechselstromgekoppelt sind, führt eine lange Reihe logischer Einsen zu einem gleichstromähnlichen Verhalten des Signals. Eine Wechselstromkopplung kann dies nicht richtig reproduzieren, was zu einer Verschlechterung der Amplitude und schließlich Bitfehlern beim Empfänger führt. Der Manchester-Code vermeidet dieses Problem, indem er für jedes Bit mindestens einen Pegelübergang vorsieht, wodurch die Leitung jedes Mal neu „aufgeladen“ wird.

Der Manchester-Code besitzt weitere Vorteile. Da der Takt in den Datenstrom kodiert ist, wird kein extra Taktsignal notwendig. Dies macht den Manchester-Code ideal für Anwendungen, die eine galvanische Trennung zwischen Sender und Empfänger erfordern, da ein einziger Kanal für die Kommunikation ausreicht. Daher ist er für Übertragungen mittels Funk, RFID oder Nahfeldkommunikation (NFC) gut geeignet. Und obwohl nominell zwei Taktzyklen zur Übertragung eines Bits nötig sind, ist die Bandbreite im Vergleich zu Return-to-Zero-(RZ-)und NRZ-Codes relativ hoch. Dies ist darauf zurückzuführen, dass der zeitliche Ablauf aufgrund des Pegelwechsels in der Mitte des Bits weniger eingeschränkt ist. Zudem sind Leistungsaufnahme und Fehlerwahrscheinlichkeit sehr niedrig.

Anwendungsmöglichkeiten des Manchester-Code in der Industrie

Ein Nachteil des Manchester-Codes ist, dass die Datenrate nur halb so hoch ist wie bei einem nicht codierten Signal, sobald die mögliche Bandbreite, beispielsweise durch die Taktfrequenz eines Embedded Systems, begrenzt ist. Daher ist eine Anwendung nur in Applikationen sinnvoll, bei denen die Bandbreite keine Rolle spielt. Ein weiteres Problem ist, dass bei höheren Datenraten einige frequenzbedingte Komplikationen auftreten können, die den Code für eine Hochgeschwindigkeitskommunikation ungeeignet machen.

Es überwiegen jedoch die die Vorteile, und so wird der Manchester-Code in verschiedensten Applikationen wie Video, Pulskodemodulation (PCM) und in Kommunikationsstandards genutzt. Neben der erwähnten Befehlsschnittstelle der Voyager-Raumsonden gibt es weitere Einsatzgebiete: Das von Philips entwickelte RC-5-Protokoll benutzt ihn für die Übertragung von Infrarot-Fernbedienungssignalen in Verbraucheranwendungen. Die DALI-(Digital-Addressable-Lighting-Interface)-Norm setzt ihn für die bidirektionale Kommunikation zwischen Lichtsteuergeräten ein. In der Automobilbranche verwendet die Schnittstelle 5 (PSI 5) die Manchester-Kodierung, zum Beispiel für Airbag-Sensoren in Autos. In der Industrie findet sie in der Norm Profibus PA zur Überwachung von Messgeräten in Prozessautomatisierungssystemen Anwendung.

So erzeugen Sie ein Manchester-kodiertes Signal

Wie generiert man aber einen solchen Bitstrom? Für schnelle Tests ist die kostenlose Multi-Instrumenten-Software WaveForms von Digilent eine gute Wahl. Sie verbindet sich nahtlos mit den Oszilloskopen Analog Discovery 2 und Analog Discovery Pro von Digilent, die auch als Logikanalysatoren, Mustergeneratoren oder zur Stromversorgung einsetzbar sind.

Das Softwarepaket unterstützt die Betriebssysteme Windows, macOS und Linux und verfügt über zwölf Instrumente: Oszilloskop, Funktionsgenerator, Stromversorgung, Voltmeter, Datenlogger, Logikanalysator, Patterngenerator, statische E/A-Schnittstellen, Spektrum-, Netzwerk-, Impedanz- und Protokollanalysator. Auf diese Weise können Ingenieure viele Mixed-Domain-Signale erfassen, aufzeichnen, analysieren und dokumentieren, aber auch erzeugen. Ferner enthält die WaveForms-Anwendung einen Skript-Editor, der eine Programmierung der Instrumente in JavaScript ermöglicht. Zudem kann sie Textdateien einzulesen, in denen benutzerdefinierte Signalformen als durch Kommas getrennte Werte abgelegt sind (CSV-Dateien).

Flowchart: Ablaufdiagramm für ein Skript zur Umwandlung von Strings.
Flowchart: Ablaufdiagramm für ein Skript zur Umwandlung von Strings.
(Bild: Diligent)

Dazu ein Beispiel: Mithilfe eines Python-Skripts wollen wir eine solche Datei mit einem Manchester-kodierten Bitstrom erstellen. Der Pattern-Generator von WaveForms gibt diesen dann auf einem der digitalen Ein-/Ausgabe-Ports des Analog Discovery Pro aus. Der Logikanalysator von WaveForms liest das Signal anschließend über einen der digitalen Eingänge zurück (in WaveForms können mehrere Instrumente gleichzeitig aktiv sein) und dekodiert ihn.

Zunächst schreiben wir das Skript. Als Erstes lesen wir den Eingangsstring ein und konvertieren ihn in das Binärformat. Dann invertieren wir, falls erforderlich, die Reihenfolge der Oktette und verdoppeln jedes Bit. Der nächste Schritt besteht darin, dass wir ein Datenarray für das Taktsignal generieren und danach den Manchester-Code aus dem Bitstrom-Array und dem Taktsignal-Array durch eine XOR-Verknüpfung erzeugen. Das Bild auf der linken Seite zeigt das Ablaufdiagramm für dieses Skript.

Bevor nun der Pattern-Generator starten kann, müssen wir in WaveForms noch einige Einstellungen vornehmen: Die Verbindung zum Analog Discovery Pro herstellen, den E/A-Port auswählen, dessen Ausgang auf Push/Pull sowie den Typ auf „Custom“ einstellen. Nach dem Importieren der CSV-Datei können wir den Pattern-Generator dann im Auto-Modus ausführen.

Dekodierung eines per Manchester-Code generierten Signals

Um zu überprüfen, ob alles einwandfrei funktioniert, fügen wir dem Logikanalysator von WaveForms einen Manchester-Kanal hinzu. Die Parameter müssen dabei dieselben sein, die wir auch für das Python-Skript verwendet haben, ebenso die Frequenz des Bitstromes. Das erste Bit verwenden wir als Trigger und in der Folge gibt der Logikanalysator das Signal als Signalform und im ASCII-Format aus (vgl. Bild unten).

Der von der WaveForms-Software dekodierte Bitstrom.
Der von der WaveForms-Software dekodierte Bitstrom.
(Bild: Diligent)

Obwohl der Manchester-Code bereits recht alt ist, findet er in der Industrie immer noch seine Anhänger. Die Erzeugung eines kodierten Bitstromes erfordert dabei nicht mehr wie früher die Verwendung diskreter Logik für die XOR-Verknüpfung von Takt und Daten. Sie erfolgt jetzt bequem in Software. Die Verifikation eines solchen Systems ist einfach, wenn Entwickler aktuelle Werkzeuge wie das Analog Discovery Pro Oszilloskop von Digilent und die in der WaveForms-Software integrierten Instrumente Logikanalysator und Patterngenerator einsetzen. //SG

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:48093000)