8b/10b
出典: フリー百科事典『ウィキペディア(Wikipedia)』
8b/10bはIBMが開発した高速シリアル転送方式である。10b/8bとも。8bitのパラレルデータを10bitのシリアル・データとして転送することから、こう呼ばれる。
シリアル・データの転送にはデータと、そのデータを拾うタイミングを作るクロックの存在が欠かせない。8b/10b方式はシリアル・データの中にクロックを埋め込むことで、データとクロックの転送を1本の信号で行うことが特徴である。
また、データからクロックを取り出す際、00hという8bitデータは電気的信号レベルとしてはLow状態が8T間続き、FFhではHigh状態が続くため、うまくクロックを取り出すことが出来ない。このため、8bitを10bitに冗長化し、4クロック時間以上Low状態またはHigh状態とならないよう、変換を行ってからデータを送出する。
現在のシリアル転送方式の主流であり、Ethernet、Fibre Channel、IEEE1394、PCI Expressなどもこの方式を採っている。
[編集] 変換方式
8bitのデータを HGF EDCBA の3bit/5bitに分け、それぞれに1bitを付加して abcdei fghjの6bit/4bitに変換する。このbit変換に決まった法則はなく、完全なテーブルによる変換で行われ、シンボル Dxx.x と表記される。6bit側は32個のビットパタンを持ち、4bit側は8個のビットパタンを持つ。従って00h~FFhの8bitデータはD00.0~D31.7のいずれかのシンボルで表現される。
さらに各シンボルは、+/-の2種類存在し、トータル512個のシンボルが存在する。+/-はランニング・ディスパリティ(RD)と呼ばれ、直前のシンボルのRDが+であれば次は-のシンボルを、逆にRDが-なら次は+のシンボルを送出する。これも1または0を連続させない仕組みの一環である。
以下に変換テーブルの一部を示す。
Name | 8bit | RD- | RD+ |
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では、8bitデータにスクランブリングを掛けてから8b/10b変換を行う方法が採用されている。つまり、シリアル伝送路上には、常にランダムなビットパタンが送出され続けることになる。