Manchester

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

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