イーサネットの物理層(22)個別規格 1000BASE-X 8B/10B 符号化 / 8B10B 変換

8B/10B 符号化

10ビットデータに変換する際に、 1/0 連続数を制限し確実な信号反転を発生させることと 1/0 個数の差を制限制限範囲内に収める必要がある。1/0 連続数制限は、1/0 の連続数が 4 個以内に収まるコードを選択することで実現している(一部の制御コードが4を超える)。もう一つの課題である 1/0 個数差の制限については、理想的な個数差を 0 に制限することは 8B/10B 符号化ではできない。これを実現するためには 10 ビットよりさらに大きなシンボルが必要になる。そこで、1/0 個数累積差を一定範囲内に収める方法になっている。

ビット列の 1/0 の個数差をディスパリティ (disparity:不均衡性)、送信した全データのディスパリティ累計値をランニングディスパリティ( running disparity)と呼ぶ。8B/10B 符号化では、ランニングディスパリティを常に -1~ +1 の範囲に収まるように変換候補を選ぶ仕組みだ。

8B/10B 符号化では、 8ビットデータを HGF EDCBA の上位3ビットと下位5ビットに分割する。H が最上位ビット(MSB:Most Significant Bit)で、A が最下位ビット(LSB: Least Significant Bit)になる(図1)。上位3ビットを4ビットに変換する 3B/4B 変換と、 下位5ビットを6ビットに変換する 5B/6B 変換を組み合わせて 8B/10B 変換を実現している。上位3ビットをグループy、下位5ビットをグループx と呼び、8ビットデータを10ビット変換したデータコードは Dx.y と表記する。 00 hex ~ FF hex の 8 ビットデータは D00.0~D31.7 のいずれかのシンボルに変換される。 IDLE コードや区切りコードなどの制御コードは Kx.y と表記し、12個の制御コードがある。

図1 8ビットデータ分割
図1 8ビットデータ分割

8B/10B 符号化はシンプルなテーブル変換になっている。8ビットのテーブル変換では、 256 個の変換テーブルが必要になるが、3ビットと5ビットに分割することで40 個 (8+32)の変換テーブルで済む。

図2 の様に、8B/10B 符号化では上位3ビットの HGF は 4ビットの fghj に、下位5ビッ トの EDCBA は6ビットの abcdei に変換される。変換結果は abcdei fghj の配列になり、順序が入れ替わっているので注意が必要だ。ネットワークには矢印の順(abcdei fghj)で 送信される。a が先頭で j が末尾になる。この変換に規則性はなく完全なテーブル変換になっている。変換順序は、先ず下位5ビット(xグループ)が 5B/6B 変換テーブルで変換される。次に上位3ビット(yグループ)が 3B/4B 変換テーブルで変換される。

図2 8B/10B 符号化
図2 8B/10B 符号化

図2 の 5B/6B 変換テーブル(後半)の様に、6ビット符号化シンボルは +/- の2つが割り当てられている。緑色部分は +/- が同じコードでかつ「1」と「0」の数が同じになっている。 1/0 の差がないコードを「ニュートラルディスパリティ」と呼ぶ。ニュートラルディスパリティでは、 +/- に同じコードが配置される。これ以外の 1/0 の数に差があるコードを「非ニュートラルディスパリティ」と呼ぶ。非ニュートラルディスパリティでは、「1」の数が2つ多い「正」コードがー側に、「1」の数が2つ少ない「負」コードが+側に配置される。3B/4B 変換テーブルも基本構造は変わらないが一部に例外がある(黄色)。 +/- の2つのコードはランニングディスパリティの計算に使用する。

図2 は、D17.2(51 hex)を10ビットコードに変換した例だ。下位5ビットが「5B/6B 変 換テーブル(後半)」で6ビットに変換され、次に上位3ビットが「3B/4B 変換テーブル」で4ビットに変換される。これれを組み合わせて10ビットデータが作られる。何れの変換もニュートラルディスパリティのため、ランニングディスパリティの計算はまだ登場しない。

ランニングディスパリティ(RD)計算

RD 計算を変換開始時の RD が-1 の場合で説明する。

RD=-1 の場合

新たに8ビットデータを受け取ると、まず下位5ビットが「5B/6B 変換テーブル」で6 ビットに変換される。選択された「6ビット符号化シンボル」がニュートラルディスパリティの場合、「1」と「0」の数に差がないため「RD=-1」の状態は変化しない。

選択された「6ビット符号化シンボル」が非ニュートラルディスパリティの場合、「1」の数が2つ多い 「正」コードを選択する。RD に2が加算され「RD=+1」 (RD=-1+2=+1)に変化する。「負」コードを選択すると、RD=-3 となり制限範囲を超えることになる。

次に上位3ビットが「3B/4B 変換テーブル」で4ビットに変換される。選択された「4 ビット符号化シンボル」がニュートラルディスパリティの場合、RD は変化しない。

選択された「4ビット符号化シンボル」が非ニュートラルディスパリティの場合、 5B/6B 変換後の RD 値により動作が変わる。RD=-1 の場合、「正」コードを選択する。RD に2が加算され「RD=+1」(RD=-1+2=+1)に変化する。RD=+1 の場合、「負」コードを選択する。RD から2が減算され「RD=-1」(RD=+1-2=-1)に変化する。

つまり、RD の計算は計算結果が常に -1/+1 のいずれかになるため、直前の RD がマイナスの場合は「正」コードを選択し、RD がプラスの場合は「負」コードを選択する。図3 の例は RD=-1 の状態で始まる D16.4(90 hex)の変換例だ。初期値が RD=-1 のため、5B/6B 変換テーブルで「正」コードを選択し RD=+1 に変化する。次に 3B/4B変換テーブルでは「負」コードを選択し RD=-1 になる。 RD の初期値は「-1」で始まり表1 に従いディスパリティを選択するため、常に -1/+1 の何れかになる。

図3 ディスパリティ計算
図3 ディスパリティ計算
表1 RD 選択テーブル
表1 RD 選択テーブル

5B/6B 変換テーブルと 3B/4B 変換テーブルのシンボルコードの配列に違和感を持つ方がいるはずだ。「正」コードが符号化シンボル⊖に、「負」コードが符号化シンボル⊕に配置されている。これは、直前の RD がマイナスの場合は「シンボルコード ⊖」を選択し、直前の RD がプラスの場合は「シンボルコード⊕」を選択することで RD を計算することができるための仕掛けになっている。RD 計算結果が -1/+1 以外 ならば、エラーが発生していることになる。

B/10B 変換コードは、表2 ~表12 を参照いただきたい。

8B/10B 符号化後、10ビットパラレルデータをシリアル変換し NRZ 符号に変換する。NRZ 符号を基に光信号が作られる。

図4 NRZ 変換
図4 NRZ 変換
8B/10B 符号化特許

米国 IBM 社が開発した特許だ。当時は磁気テープやディスク装置などの記録装置向けに開発された。 1982年に特許を申請し1984年に特許を取得している( U.S Patent 4,486,739)。米国特許の有効期限は通常20年で、現在は権利期間が終了している。その後、ファイバーチャネル、SONET/SDH、ギガビットイーサネット(1000BASE-X)やIEEE1394 等で採用され、高速シリアルインタフェースの符号化方式の主流の一つだ。PCI Express 2.0 や USB 3.0 でも採用されている。一世代前の技術だが、8B/10B 符号化 特許の権利期間が終了したこともあり、FPGA 等でも広く使われている。

8B/10B 符号化技術は、コンピュータ文化と通信文化がクロスオーバーした技術の代表例だ。通信順序が一般的な通信とは逆向きに見える。これも2つの異なる文化が交わった結果ではないかと思う。この技術は様々な特許侵害問題を引き起こした特許でもある。当時の半導体ベンダーや機器ベンダーとの間で特許問題が起きたとの噂があった。

8B10B 変換テーブル

表2 3B/4B 変換テーブル
表2 3B/4B 変換テーブル
表3 5B/6B 変換テーブル
表4 8B/10B 変換テーブル(Kコード)
表4 8B/10B 変換テーブル(Kコード)
表5 8B/10B 変換テーブル(Dコード)1/8
表5 8B/10B 変換テーブル(Dコード)1/8
表6 8B/10B 変換テーブル(Dコード)2/8
表6 8B/10B 変換テーブル(Dコード)2/8
表7 8B/10B 変換テーブル(Dコード)3/8
表7 8B/10B 変換テーブル(Dコード)3/8
表8 8B/10B 変換テーブル(Dコード)4/8
表8 8B/10B 変換テーブル(Dコード)4/8
表9 8B/10B 変換テーブル(Dコード)5/8
表9 8B/10B 変換テーブル(Dコード)5/8
表10 8B/10B 変換テーブル(Dコード)6/8
表10 8B/10B 変換テーブル(Dコード)6/8
表11 8B/10B 変換テーブル(Dコード)7/8
表11 8B/10B 変換テーブル(Dコード)7/8
表12 8B/10B 変換テーブル(Dコード)8/8
表12 8B/10B 変換テーブル(Dコード)8/8

イーサネットの物理層

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。