Die 8B/10B-Codierung ist ein Blockcode, der jeweils acht Datenbits auf zehn Codesymbole abbildet. Entwickelt wurde sie 1983 von Al Widmer und Peter Franaszek bei IBM. Sie garantiert Gleichspannungsfreiheit und ausreichend viele Signalwechsel und wird unter anderem in Gigabit Ethernet, Fibre Channel und PCIe eingesetzt.
Wie 8B/10B funktioniert
Jedes 8-Bit-Datenwort wird in zwei Teile zerlegt: drei Bits werden auf vier Symbole codiert (3B/4B) und fünf Bits auf sechs Symbole (5B/6B). Aus 256 Datenwörtern plus 12 Steuerzeichen entstehen so 268 gültige 10-Bit-Codesymbole aus 1024 möglichen. Der Encoder führt eine Running Disparity (laufende Differenz zwischen Einsen und Nullen): Nach jedem Codewort wird geprüft, ob zu viele Einsen oder Nullen gesendet wurden, und bei Bedarf das alternative Codewort mit umgekehrter Polarität gewählt. So bleibt der Gleichspannungsanteil über längere Zeit ausgeglichen.
Eigenschaften
- 20 % Overhead: Aus 1 Gbit/s Datentempo werden 1,25 GBaud auf der Leitung.
- Taktrückgewinnung: Die Codewörter begrenzen die maximale Folge gleicher Bits auf fünf, sodass der Empfänger immer genügend Signalwechsel für den Takt findet.
- Fehlererkennung: Ungültige Codesymbole oder eine verletzte Disparität deuten auf Übertragungsfehler hin (die Kanalcodierung wie Fehlerkorrektur leistet sie aber nicht).
- Abgrenzung: 8B/10B ist der größere Bruder der 4B5B-Codierung aus Fast Ethernet (dort kombiniert mit MLT-3); beide gehören zur Leitungscodierung.
Wo 8B/10B verwendet wird
Typische Einsatzgebiete sind 1000BASE-X (Gigabit Ethernet über Glasfaser oder Kupfer), Fibre Channel (1–4 GFC), PCIe 1.0/2.0, SATA 1.0/2.0 und USB 3.0. Bei 10-Gigabit-Ethernet und PCIe 3.0 übernehmen effizientere Codes wie 64B/66B und 128B/130B die Aufgabe.
Verwandte Grundlagen: NRZ-Codierung, PAM-Codierung.