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

8b/10b编码是1983年由IBM的 Al Widmer 与 Peter Franaszek 所提出,应用于ESCON,后来申请成专利。目前广受串列总线所采用。例如:IEEE 1394b、SATAPCI 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 编辑

5B/6B code
input RD = −1 RD = +1 input RD = −1 RD = +1
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 编辑

3b/4b code
input RD = −1 RD = +1 input RD = −1 RD = +1
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 是逗号(,)序列:

控制符号(Control symbols)
input RD = −1 RD = +1
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 编码的应用如下

数字音效 编辑

重要的应用面:

用于 audio 与 data CDs:

与 128b/13xb 相关技术 编辑

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

外部链接 编辑

Template:位编码