8b/10b

8b/10bはIBMが開発した高速シリアル転送方式である。10b/8bとも。8ビットのデータを10ビットのデータに変換して転送することから、こう呼ばれる。

シリアル・データの転送にはデータと、そのデータを拾うタイミングを作るクロックの存在が欠かせない。8b/10b方式はシリアル・データの中にクロックを埋め込むことで、データとクロックの転送を同じ配線で行うことが特徴である。

生のシリアル・データは、LowやHighの状態が長期間、或いは不定期に渡って続く可能性があるため、そこからクロックを取り出す事が出来ない。8b/10bでは、どのようなデータであっても、Low又はHigh状態の期間が4クロック以下になるように変換を行う。これによって、帯域の20%をロスする代わりに、データとクロックを同じ配線で同時に送受信する事が可能になる。

現在のシリアル転送方式の主流であり、イーサネット、ファイバーチャネル、IEEE 1394、PCI Express 2.0、Serial ATA、USB 3.0などがこの方式を採っている。PCI Express 3.0では128b/130bが採用されている。

変換方式 
8ビットのデータを HGF EDCBA の3ビット/5ビットに分け、それぞれを abcdei fghjの6ビット/4ビットに変換する。このビット変換に決まった法則はなく、完全なテーブルによる変換で行われ、シンボル Dxx.x と表記される。00h〜FFhの8ビットデータはD00.0〜D31.7のいずれかのシンボルで表現される。

さらに各シンボルは、+/-の2種類存在するものがある。+/-はディスパリティと呼ばれ、直前のランニング・ディスパリティ(RD)が+であれば次は-のシンボルを、逆にRDが-なら次は+のシンボルを送出する。"1"の数と"0"の数が同じであれば、RDの極性は継続される。この性質を用いて極性の違反を検出することにより、それ以前の送信データにエラーが含まれていることを検出できる。RDの初期値は-である。したがって最初に送出されるシンボルは"1"または"0"の数が5個のシンボルでRD-を継続するか、"1"が6個含まれるシンボルでRD+に反転させることから始まる。

以下に変換テーブルの一部を示す。

これらのシンボルはDコードと呼ばれ、文字通りデータを示すが、これ以外にKコードと呼ばれる制御用のシンボルも存在する。

同一のシンボルが長時間連続して送出されると、周期的な電気変動を誘発して、ボード上でノイズの発生源となる場合がある。これを防ぐためにPCI Expressでは、8ビットデータにスクランブリングを掛けてから8b/10b変換を行う方法が採用されている。つまり、シリアル伝送路上には、常にランダムなビットパターンが送出され続けることになる。

外部リンク 
Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code（米国特許庁）

通信工学
データ転送
伝送路符号