Loading AI tools
来自维基百科,自由的百科全书
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 |
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
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 |
5b/6b 與 3b/4b 表可能導致下列 12 控制符號(control symbols)允許被發送,K.28.1, K.28.5, K.28.7 是逗号(,)序列:
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 |
目前IBM的專利已過期,此方案已成為大眾化的技術。
8B/10B 編碼的應用如下
重要的應用面:
用於 audio 與 data CDs:
128b/13xb編碼的應用如下:
Template:位编码