8b/10b

8b/10b编码把8比特的子元转换成10比特的子元。目的是以便在串行传输中达到直流平衡（DC Balance），明晰边界，并提供足够的状态改变来利于时钟恢复。目标是至少在20比特“1”的个数与“0”的个数的差距不超过2个，并且没有连续的5个“1”或“0”。

8b/10b编码是1983年由IBM的 Al Widmer 与 Peter Franaszek 所提出，应用于ESCON，后来申请成专利。目前广受串列总线所采用。例如：IEEE 1394b、SATA、PCI Express、Infini-band、Fiber Channel、RapidIO等总线，都是采用8b/10b编码。2008年推出的USB 3.0规格书亦明言采用了8b/10b编码。

8b/10b编码的提出即是因应光纤的传输技术，8b/10b技术是将8个位元经过某种映射的机制转化为10个位元的字码，分两个部位分别进行映射的处理，分别是 5B/6B 与 3B/4B 的处理，另外“D.a.b”是资料码（D即是Data），“K.a.b”指控制码（K即是Key），a与b表示输入的原始资料。

## 工作原理

8b/10b编码输出位元数目总共是10个位元，但只有“+2”“+0”“-2”三种组合。其中“+2”是指4个位元0，与6个位元1；“+0”是指5个位元“0”，与5个位元“1”；“-2”是指6个位元“0”，与4个位元“1”，利用这种“不均等性— Disparity”的特性而具有强大的直流平衡（DC Balance）功能，可使得发送的“0”、“1”数量保持一致，连续的“1”或“0”基本上不超过5位。

(Disparity = number of "1" - number of "0")

### 编码表

8b/10b编码将一组8位元资料分成两组，一组3位元，一组5位元，经过编码后形成一组4位元和一组6位元，故送发时是一组10位元的资料，解码时再将10位元的资料变换得到8位元资料。编码过程中低位5位元的资料会进行5B/6B编码，高位3位元的资料则进行3B/4B编码。

例如一组8位元的资料是 10110101：

首先，分成两组 101 与 10101

a=10101（21） b=101（5），符号为 D21.5，在下表中的位序为HGFEDCBA，a（EDCBA）经过5B/6B编码为abcdei，b（HGF）经过3B/4B编码为fghj。

RD = Running Disparity.

Previous RD｜Disparity of 6 or 4 Bit Code｜Disparity chosen｜Next RD

−1｜0｜0｜−1

−1｜±2｜+2｜+1

+1｜0｜0｜+1

+1｜±2｜−2｜−1

#### 5b/6b

input｜input

EDCBA｜abcdei｜EDCBA｜abcdei

D.00｜00000｜100111｜011000｜D.16｜10000｜011011｜100100

D.01｜00001｜011101｜100010｜D.17｜10001｜100011

D.02｜00010｜101101｜010010｜D.18｜10010｜010011

D.03｜00011｜110001｜D.19｜10011｜110010

D.04｜00100｜110101｜001010｜D.20｜10100｜001011

D.05｜00101｜101001｜D.21｜10101｜101010

D.06｜00110｜011001｜D.22｜10110｜011010

D.07｜00111｜111000｜000111｜D.23 †｜10111｜111010｜000101

D.08｜01000｜111001｜000110｜D.24｜11000｜110011｜001100

D.09｜01001｜100101｜D.25｜11001｜100110

D.10｜01010｜010101｜D.26｜11010｜010110

D.11｜01011｜110100｜D.27 †｜11011｜110110｜001001

D.12｜01100｜001101｜D.28｜11100｜001110

D.13｜01101｜101100｜D.29 †｜11101｜101110｜010001

D.14｜01110｜011100｜D.30 †｜11110｜011110｜100001

D.15｜01111｜010111｜101000｜D.31｜11111｜101011｜010100

K.28｜11100｜001111｜110000

† Same code is used for K.x.7

#### 3b/4b

input｜input

HGF｜fghj｜HGF｜fghj

D.x.0｜000｜1011｜0100｜K.x.0｜000｜1011｜0100

D.x.1｜001｜1001｜K.x.1 ‡｜001｜0110｜1001

D.x.2｜010｜0101｜K.x.2 ‡｜010｜1010｜0101

D.x.3｜011｜1100｜0011｜K.x.3｜011｜1100｜0011

D.x.4｜100｜1101｜0010｜K.x.4｜100｜1101｜0010

D.x.5｜101｜1010｜K.x.5 ‡｜101｜0101｜1010

D.x.6｜110｜0110｜K.x.6 ‡｜110｜1001｜0110

D.x.P7 †｜111｜1110｜0001

D.x.A7 †｜111｜0111｜1000｜K.x.7 † ‡｜111｜0111｜1000

#### Control symbols

5b/6b 与 3b/4b 表可能导致下列 12 控制符号（control symbols）允许被发送，K.28.1， K.28.5， K.28.7 是逗号序列：

input

HGF EDCBA｜abcdei fghj｜abcdei fghj

K.28.0｜000 11100｜001111 0100｜110000 1011

K.28.1 †｜001 11100｜001111 1001｜110000 0110

K.28.2 ｜010 11100｜001111 0101｜110000 1010

K.28.3 ｜011 11100｜001111 0011｜110000 1100

K.28.4 ｜100 11100｜001111 0010｜110000 1101

K.28.5 †｜101 11100｜001111 1010｜110000 0101

K.28.6 ｜110 11100｜001111 0110｜110000 1001

K.28.7 ‡｜111 11100｜001111 1000｜110000 0111

K.23.7 ｜111 10111｜111010 1000｜000101 0111

K.27.7 ｜111 11011｜110110 1000｜001001 0111

K.29.7 ｜111 11101｜101110 1000｜010001 0111

K.30.7 ｜111 11110｜011110 1000｜100001 0111

## 与 8b/10b 相关技术

目前IBM的专利已过期，此方案已成为大众化的技术。

8B/10B 编码的应用如下

- PCI Express 1.0/2.0
- IEEE 1394b
- Serial ATA
- SAS
- SSA
- Gigabit Ethernet
- 光纤通道
- InfiniBand
- XAUI
- Serial RapidIO
- DVI和HDMI（最小化传输差分讯号）
- DVB Asynchronous Serial Interface（ASI）
- DisplayPort Main Link
- HyperTransport
- Common Public Radio Interface（CPRI）
- USB 3.0

### 数位音效

重要的应用面:

- Digital Audio Tape
- Digital Compact Cassette (DCC).

用于 audio 与 data CDs:

- Compact Disc Eight-to-Fourteen Modulation

## 与 128b/13xb 相关技术

128b/13xb编码的应用如下：

- PCI Express 3.0/4.0（128b/130b）
- USB 3.1 Gen2（128b/132b）
- SAS 4
- DisplayPort 2.0
- NVLink

## 外部链接

- Original paper by Franaszek and Widmer.
- （于2002年6月30日失效）