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日失效）