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 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 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:位編碼