Zum Inhalt springen

8b10b-Code

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. Mai 2020 um 15:41 Uhr durch 2003:c3:6729:2d00:8d93:a69c:f67d:9a5f (Diskussion) (Fehlererkennung). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der 8b10b-Code (auch 8b/10b-Code) ist ein 1983 von Albert Xavier Widmer und Peter Franaszek entwickelter Leitungscode in der Telekommunikationstechnik. Es werden 8 Informations-Bit durch 10 Leitungs-Bit kodiert. Es wird ein vollständiger Gleichspannungsausgleich gewährleistet, weiterhin kann der Takt und die Symbolgrenzen einfach rückgewonnen werden. Die Signalrate erhöht sich um 25 Prozent. Ein ähnlich aufgebauter Code ist der 16b18b-Code (auch Albert Xavier Widmer) mit nur 12,5 Prozent Overhead.

Andere, deutlich effizientere Codes sind der 64b66b-Code mit 3 Prozent Overhead, welcher 64 Bit auf 66 Bit abbildet, und der 128b130b-Code mit nur 1,5 Prozent Overhead. Allerdings gewährleisten diese Codes Eigenschaften (wie Gleichspannungsfreiheit, Wiederholrate gleicher Pegel, Symbolgrenzenerkennung) nur noch im statistischen Mittel.

Eigenschaften

Der 8b10b-Code benutzt zur Übertragung eines Oktetts ein 10 Bit langes Codewort. Dabei werden folgende Eigenschaften erfüllt:

Gleichspannungs­ausgleich

Die Anzahl der Einsen pro Codewort unterscheidet sich maximal um zwei von der Anzahl der Nullen. Dies ergibt drei Typen von Codewörtern:

  • 252 neutrale (neutral disparity): gleiche Anzahl von „1“ und „0“, also fünfmal „1“ und fünfmal „0“
  • 210 positive (positive disparity): sechsmal „1“ und viermal „0“
  • 210 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 +U und eine „0“ als eine negative Spannung −U, so hat das kodierte Signal (bei gegebener Datenrate) eine untere Grenzfrequenz, d. h., über eine längere Bitfolge mittelt sich die Spannung heraus, so dass das Signal keinen Gleichspannungsanteil enthält. Dieser Gleichspannungsausgleich erlaubt zum Beispiel eine kapazitive oder induktive Kopplung von Sender und Empfänger.

Maximale Anzahl gleicher Pegel

Bei reiner Datenübertragung ist durch das Design der Kodierung die Anzahl gleicher Pegel auf der Leitung (maximum run length) auf max. 5 Takte begrenzt, spätestens nach 5 Takten erfolgt ein Pegelwechsel. Drei Steuerworte (die keine Nutzdaten 0...255 darstellen) enthalten absichtlich 6 Takte ohne Pegelwechsel (genannt Kommas) an einer bestimmten Stelle innerhalb der 10 übertragenen Pegel pro Datenwort. Dies ermöglicht eine einfache Rückgewinnung der 8b10b-Symbolgrenzen. Die Taktrückgewinnung selbst stellt durch die häufigen Pegelwechsel sehr geringe Anforderungen.

Disparity

Der 8b10b-Encoder hat als Eingangsgröße neben dem zu kodieren Datenwort (D.00.0 bis D31.7 für Datenwort 0...255, 12 weitere Steuerwort) noch die vorausgegangene Disparity als Eingangsgröße. Daraus berechnen sich die 10 Leitungsbit sowie die folgende Disparity, die für die Kodierung des folgenden Datenworts benutzt wird.

voraus-
gegangene
Disparity
Disparity des Codeworts und
(folgende Disparity)
−1 ±0 +1
−1 Nein
🛇
Ja
→ (−1)
Ja
↑ (+1)
+1 Ja
↓ (−1)
Ja
→ (+1)
Nein
🛇

Es wird dafür gesorgt, dass die Disparity nur die Werte −1 oder +1 annehmen kann.

K-Wörter

Neben 256 möglicher Datenworte können 12 mögliche Steuerworte übertragen werden. Diese Steuerworte nennt man K-Wörter. Sie sind für Steuerungsfunktionen in übergeordneten Protokollschichten notwendig. Drei dieser K-Wörter haben ein Bitmuster, das nicht über Codewortgrenzen hinweg entstehen kann. Das heißt, die letzten Bit eines Codewortes zusammen mit den ersten Bit eines nachfolgenden Codewortes können niemals das Bitmuster eines dieser drei speziellen K-Wörter ergeben. Das nutzt man in seriellen Datenströmen, um den Anfang und das Ende eines Codewortes zu erkennen. Diese drei speziellen K-Wörter nennt man auch Komma-Wörter.

Fehlererkennung

Da von den durch 10 Bits möglichen darstellbaren 1024 Kombinationen nicht alle genutzt werden und außerdem strenge Auswahlregeln zu beachten sind, können einzelne Bitfehler mit einer gewissen Wahrscheinlichkeit (ca. 75 Prozent) detektiert werden. Es können allerdings auch gültige falsche Datenworte entstehen. Für gesicherte Übertragungen sind daher zusätzliche Prüfsummen oder eine Vorwärtsfehlerkorrektur erforderlich.

Anwendungen

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

Die Hoch-Zeit des 8b10b-Codes waren die Jahre 2007 bis 2013. In Neuentwicklungen sind diese den Scambling-Codes (64b66b bis 512b514b) und auch deren Nachfolgern (integrierte Fehlerkorrektur, Mehrpegel-Kodierungen) gewichen.

Siehe auch

Einzelnachweise

  1. SAS Protocol Layer - 4 (SPL-4) draft 08b. INCITS, 18. Juli 2016, abgerufen am 21. Juli 2016.
  2. http://www.cpri.info/spec.html CPRI Common Public Radio Interface
  3. http://www.obsai.com Open Base Station Architecture Initiative, siehe RP Specifications: RP3_Vx.x.pdf (Physical Layer)
  4. https://www.heise.de/ct/hotline/USB-2-0-ausgebremst-325842.html
  5. USB3.0 Beschreibung auf itwissen.info (Memento vom 27. Februar 2009 im Internet Archive)