Manchester
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Die Manchester-Codierung ist ein Verfahren um einen Bitstrom mit beliebig verteilten Einsen und Nullen "gleichspannungsfrei" zu machen. Das bedeutet dass auch bei einer laufenden Folge von gleichen Pegeln im Ausgangssignal regelmäßig ein Wechsel stattfindet und das Verhältnis zw. HI und LOW immer 50:50 beträgt. Das Verfahren wird besonders zur Funkübertragung von Daten benutzt, da eine Funkstrecke nur regelmäßig wechselnde Pegel übertragen kann. Zusätzlicher Vorteil ist, dass aus dem Datensignal auch gleich ein Takt zurückgewonnen werden kann. Als Nachteil wäre die Verdoppelung der Datenrate zu nennen. Der Manchestercode entsteht, wenn man das Datensignal mit einem Takt XOR-verknüpft.
Beispielcode (Matlab/Octave)
Encoder:
function [encoded] = manchester_encode(source) encoded = []; for i=1:length(source) encoded(2*i - 1) = (source(i) == 1); encoded(2*i) = (source(i) == 0); end
Decoder:
function [decoded] = manchester_decode(coded) decoded = []; for i=1:(length(coded)/2) if coded(2*i - 1) == 0 && coded(2*i) == 1 decoded(i) = 0; else decoded(i) = 1; end end
Beispiel:
octave:22> manchester_encode([0 1 0 0 0 1 1 1]) ans = 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 octave:23> manchester_decode(ans) ans = 0 1 0 0 0 1 1 1
Weblinks
- Forum mit Codebeispiel
- Manchester-Code bei Wikipedia
- Application Note "Manchester Coding Basics" von Atmel