Zum Inhalt springen

8b10b-Code

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. Januar 2012 um 19:23 Uhr durch 217.111.95.80 (Diskussion) (Maximale Länge gleicher Bits). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der 8b10b-Code (auch 8b/10b-Code) ist ein Leitungscode in der Telekommunikationstechnik. Dabei werden 8 Bit Daten mit 10 Bit kodiert, sodass zum einen ein Gleichspannungsausgleich gewährleistet ist und zum anderen Taktrückgewinnung aus dem Datensignal möglich ist. Der erzeugte Datenstrom hat einen Overhead von 25 % gegenüber dem originalen. Ein ähnlicher, aber deutlich effizienterer Code ist der 64b66b-Code, welcher 64 Bits auf 66 Bits abbildet und daher nur ca. 3 % Overhead erzeugt.

Eigenschaften

Der 8b10b-Code benutzt zur Übertragung eines Bytes (= 8 Bit) ein Symbol mit 10 Bit Länge. Dabei werden folgende Eigenschaften erfüllt:

Gleichspannungsausgleich

Die Anzahl der Einsen pro Symbol unterscheidet sich maximal um zwei von der Anzahl der Nullen. Dies ergibt drei Typen von Symbolen:

  • neutrale (neutral disparity): gleiche Anzahl von „1“ und „0“, also fünfmal „1“ und fünfmal „0“
  • positive (positive disparity): sechsmal „1“ und viermal „0“
  • negative (negative disparity): viermal „1“ und sechsmal „0“

In einem Datenstrom treten damit „1“ und „0“ mit gleicher Wahrscheinlichkeit auf. Überträgt man nun eine „1“ als eine positive Spannung und eine „0“ als eine negative Spannung ist in dem Ausgangssignal somit kein Gleichspannungsanteil enthalten. Dieser Gleichspannungsausgleich erlaubt zum Beispiel eine kapazitive oder induktive Kopplung von Sender und Empfänger.

Maximale Länge gleicher Bits

Die maximale Länge gleicher Bits (maximum run length) ist bei reiner Datenübertragung auf fünf beschränkt, d. h. spätestens nach fünf Takten wechselt der Pegel. Dies ermöglicht eine einfache Taktrückgewinnung aus dem Datensignal. Wenn K-Wörter mit Daten gemischt werden kann es zu Folgen von sechs gleichen Bits kommen (z.B. K28.7 gefolgt von D.8 ergibt 001111 1000 000111 xxxx). Da K-Wörter jedoch typischerweise nur am Anfang oder Ende von Datenpaketen vorkommen, sind diese Fälle jedoch selten.

Disparity

Der 8B10B-Encoder verarbeitet neben den Daten auch noch die Disparity. Damit wird dem Encoder mitgeteilt, ob es ein Symbol mit positiver oder negativer Disparity erzeugen soll und welche Disparity ein nachfolgendes Symbol haben soll. Hat ein Symbol negative Disparity, muss das folgende Symbol mit positiver Disparity erzeugt werden. Hat das Symbol neutrale Disparity, wird die Disparity Information des vorherigen Symbols an das nachfolgende Symbol weiter geleitet. Damit wird sichergestellt, dass im gesamten Datenstrom jederzeit maximal eine 1 oder eine 0 zu viel ist und sich somit über ausreichend viele Symbole Gleichspannungsfreiheit einstellt. Folglich gibt es für jedes Eingangssymbol zwei mögliche Ausgangssymbole. Welches von beiden verwendet wird, hängt vom jeweiligen Vorgänger ab.

K-Wörter

Neben den zweimal 256 möglichen Datensymbolen gibt es noch zweimal 12 10-Bit-Codewörter, welche ebenso wie die Datenwörter maximal fünf gleiche aufeinanderfolgende Bits und insgesamt maximal sechs Einsen bzw. sechs Nullen enthalten. Diese Symbole nennt man K-Wörter, welche für Steuerungsfunktionen in übergeordneten Protokollschichten verwendet werden können. Drei dieser K-Wörter haben ein Bitmuster, das nicht über Symbolgrenzen hinweg entstehen kann. Das heißt, die letzten Bits eines Symboles zusammen mit den ersten Bits eines nachfolgenden Symboles können niemals das Bitmuster eines dieser drei speziellen K-Wörter ergeben. Das nutzt man in seriellen Datenstömen, um den Anfang und das Ende eines Symboles wieder zu erkennen. Diese 3 speziellen K-Wörter nennt man auch Komma-Wörter.

Fehlererkennung

Da von den 1024 möglichen Kombinationen, welche sich mit 10 Bit darstellen lassen, nicht alle gültige Codewörter sind, ergibt sich die Möglichkeit, einige Bitübertragungsfehler zu erkennen. Allerdings können durch einzelne Bitfehler auch andere gültige Codewörter entstehen, womit eine zuverlässige Erkennung oder gar Korrektur von Übertragungsfehlern unmöglich ist. Daher wird meist zusätzlich eine Prüfsumme zusammen mit den Daten übertragen, um Bitübertragungsfehler mit höherer Zuverlässigkeit zu erkennen.

Anwendungen

Der 8b10b-Code findet u. a. in folgenden Standards Verwendung:

Quellen

  1. http://www.cpri.info/spec.html Common Public Radio Interface
  2. http://www.obsai.org Open Base Station Architecture Initiative, siehe RP Specifications: RP3_Vx.x.pdf (Physical Layer)
  3. http://www.heise.de/ct/hotline/USB-2-0-an-USB-3-0-1128192.html
  4. http://www.itwissen.info/definition/lexikon/USB-3-0-Kabel-USB-3-0-cable.html USB3.0 Beschreibung