8b/10b

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

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

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

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

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

変換方式

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

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

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

Name 8bit currentRD- currentRD+
D00.0 00h 100111 0100 011000 1011
D01.0 01h 011101 0100 100010 1011
D02.0 02h 101101 0100 010010 1011
D03.0 03h 110001 1011 110001 0100
D04.0 04h 110101 0100 001010 1011
D05.0 05h 101001 1011 101001 0100
D30.7 FEh 011110 0001 100001 1110
D31.7 FFh 101011 0001 010100 1110


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

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

外部リンク