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:位编码