| ファイバーチャネル | |
|---|---|
| レイヤー4. プロトコルマッピング | |
| LUNマスキング | |
| レイヤー3. 共通サービス | |
| レイヤー2. ネットワーク | |
| ファイバーチャネルファブリック ファイバーチャネルゾーニング 登録状態変更通知 | |
| レイヤー1. データリンク | |
| 8b/10bエンコーディング | |
| レイヤー0. 物理 |
電気通信分野において、8b /10bは、8ビットワードを10ビットシンボルにマッピングすることでDCバランスと境界付きディスパリティを実現し、同時に十分な状態変化を提供して合理的なクロックリカバリを可能にする伝送路符号である。これは、少なくとも20ビットの文字列における1と0のカウント差が2以下であり、連続する1または0の数が5つ以下であることを意味する。これにより、信号転送に必要なチャネルの帯域幅の下限に対する要求が低減される。[1]
8b/10bコードは、様々な性能パラメータに焦点を当てて様々な方法で実装できます。例えば、K. OdakaがDATデジタルオーディオレコーダー用に設計した実装があります。[2] Kees Schouhamer ImminkはDCCオーディオレコーダー用に8b/10bコードを設計しました。[3] IBMの実装は、1983年にAl WidmerとPeter Franaszekによって説明されました。[4] [5]
IBMの実装
方式名が示すように、8ビットのデータは、シンボルまたは文字と呼ばれる10ビットのエンティティとして送信されます。データの下位5ビットは6ビットのグループ(5b/6b部分)にエンコードされ、上位3ビットは4ビットのグループ(3b/4b部分)にエンコードされます。これらのコードグループは連結され、10ビットのシンボルを形成し、回線上で送信されます。データシンボルは、多くの場合Dxyと呼ばれます。ここで、xは0~31、yは0~7の範囲です。8b/10bエンコードを使用する規格では、データシンボルの代わりに送信できる最大12個の特殊シンボル(または制御文字)も定義されています。これらは、フレームの開始、フレームの終了、リンクアイドル、スキップ、および同様のリンクレベルの状態を示すためによく使用されます。10ビットシンボルの配置を定義するには、少なくとも1つの特殊シンボル(つまり「カンマ」シンボル)を使用する必要があります。これらは Kxy と呼ばれ、Dxy シンボルとは異なるエンコードを持っています。
8b/10bエンコーディングでは、8ビットワードを10ビットシンボルでエンコードするため、1024(10ビット、2 10 )個のシンボルの一部を除外することで、連続する5ビットのランレングス制限を保証し、0と1のカウント差が2以下になるようにすることができます。256個の8ビットワードの一部は、2つの異なる方法でエンコードできます。これらの代替エンコーディングを使用することで、シリアルデータストリームにおける長期的なDCバランスを実現できます。これにより、データストリームをハイパス特性を持つチャネル(例えば、イーサネットのトランス結合型シールドなしツイストペアや、自動ゲイン制御機能を備えた光受信機など)を介して送信できます。
エンコーディングテーブルとバイトエンコーディング
以下の表では、各入力バイト( と表記HGF EDCBA)について、A は最下位ビット(LSB)、Hは最上位ビット(MSB)を表します。出力にはiとjの2つの追加ビットが追加されます。これらのビットはLSBからMSBの順に、 a、 b、 c、 d、 e、i、 f、 g、 h、jと続きます。つまり、5b/6bコードの後に3b/4bコードが続きます。これにより、カンマ記号内の特殊ビットシーケンスの一意性が保証されます。
送信される 0 ビットと 1 ビットの数に対するストリームへの残余影響はランニング ディスパリティ( RD ) として維持され、スルーの影響は後続のシンボルのエンコードの選択によってバランスが取られます。
5b/6bコードはペア・ディスパリティ・コードであり、3b/4bコードも同様です。6ビットまたは4ビットの各コードワードは、0と1の数が同数(ディスパリティ0)であるか、0が1より2つ多い(それぞれ0が4つ、1が2つ、または0が3つ、1が1つ)か、0が1より2つ少ない、という2つの形式のいずれかになります。6ビットまたは4ビットのコードで、非ゼロ・ディスパリティ(1の数から0の数を引いた値、つまり-2または+2)が使用される場合、正または負のディスパリティ・エンコーディングの選択は、ランニング・ディスパリティを切り替えるものである必要があります。言い換えれば、非ゼロ・ディスパリティ・コードは交互に使用されます。
ランニング格差
8b/10b符号化はDCフリーです。つまり、伝送される1と0の長期的な比率は正確に50%です。これを実現するために、伝送される1の数と0の数の差は常に±2に制限され、各シンボルの末尾では+1または-1になります。この差はランニング・ディスパリティ(RD)と呼ばれます。
この方式では、ランニング・ディスパリティ+1と-1の2つの状態のみを必要とし、-1から始まる。[6]
1と0の数が等しくない5b/6bおよび3b/4bコードには、送信に使用できるビットパターンが2つあります。1つは「1」ビットを2つ多く含み、もう1つはすべてのビットを反転して0を2つ多く含みます。信号の現在のランニング・ディスパリティに応じて、エンコード・エンジンは、与えられたデータに対して、2つの可能な6ビットまたは4ビットのシーケンスのどちらを送信するかを選択します。当然のことながら、6ビットまたは4ビットのコードに1と0の数が等しい場合、サブブロックD.07 (00111) とDx3 (011) を除き、ディスパリティは変わらないため、どちらを選択するかは選択の余地がありません。どちらの場合もディスパリティは変わりませんが、D.07に遭遇した際にRDが正であれば000111が使用され、負であれば111000が使用されます。同様に、Dx3 に遭遇した際に RD が正であれば 0011 が使用され、負であれば 1100 が使用されます。これは以下の表に正確に反映されていますが、1 と 0 の数が等しく、それぞれ 2 つのエンコーディングが可能なサブブロックはこれら 2 つだけであるため、さらに言及する価値があります。
| 以前の RD |
コードワードの不一致 |
選択された格差 |
次の RD |
|---|---|---|---|
| −1 | 0 | 0 | −1 |
| −1 | ±2 | +2 | +1 |
| +1 | 0 | 0 | +1 |
| +1 | ±2 | −2 | −1 |
5b/6b コード (abcdei)
| 入力 | RD = −1 | RD = +1 | 入力 | RD = −1 | RD = +1 | ||||
|---|---|---|---|---|---|---|---|---|---|
| コード | EDCBA | a b c d e i | コード | EDCBA | a b c d e i | ||||
| 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 | K.23.7記号にも使用される | |
| 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 | K.27.7記号にも使用される | ||
| D.12 | 01100 | 001101 | D.28 | 11100 | 001110 | ||||
| D.13 | 01101 | 101100 | D.29 † | 11101 | 101110 | 010001 | K.29.7記号にも使用される | ||
| D.14 | 01110 | 011100 | D.30 † | 11110 | 011110 | 100001 | K.30.7記号にも使用される | ||
| D.15 | 01111 | 010111 | 101000 | D.31 | 11111 | 101011 | 010100 | ||
| 使用されていない | 1111 00 | 0000 11 | K.28 ‡ | 11100 | 00 1111 | 11 0000 | K.28.xシンボル専用 | ||
† Kx7の5b/6bコードにも使用される
‡ K.28.yの5b/6bコード専用
3b/4b コード (fghj)
| 入力 | RD = −1 | RD = +1 | 入力 | RD = −1 | RD = +1 | |||
|---|---|---|---|---|---|---|---|---|
| コード | HGF | f g h j | コード | HGF | f g h j | |||
| Dx0 | 000 | 1011 | 0100 | Kx0 | 000 | 1011 | 0100 | |
| Dx1 | 001 | 1001 | Kx1 ‡ | 001 | 0 110 | 1 001 | ||
| DX2 | 010 | 0101 | Kx2 | 010 | 1010 | 0101 | ||
| DX3 | 011 | 1100 | 0011 | Kx3 | 011 | 1100 | 0011 | |
| DX4 | 100 | 1101 | 0010 | Kx4 | 100 | 1101 | 0010 | |
| Dx5 | 101 | 1010 | Kx5 ‡ | 101 | 0 101 | 1010 | ||
| Dx6 | 110 | 0110 | Kx6 | 110 | 1001 | 0110 | ||
| DxP7 † | 111 | 1110 | 0001 | Kx7 ‡ | 111 | 0 111 | 1000 | |
| DxA7 † | 0111 | 1000 | ||||||
† Dx7の場合、先行する5b/6bコードと組み合わせた際に5つの連続した0または1を回避するため、プライマリ(DxP7)またはオルタネート(DxA7)エンコードを選択する必要があります。同期の
問題を回避するため、コンマシンボルでは5つの同一ビットのシーケンスが使用されます。DxA7
は、
- RD = −1のとき:x = 17、18、20の場合、
- RD = +1 の場合: x = 11、13、14。
x = 23、x = 27、x = 29、x = 30の場合 、制御シンボルKx7に使用される3b/4bコード部分はDxA7のものと同じです。
他のDxA7コードは、カンマシーケンスの不整合が発生する可能性があるため、使用できません。
‡ K.28.1、K.28.5、およびK.28.7のみが、5つの0または1のビットシーケンスを含むコンマシンボルを生成します。
シンボルの形式は11 0000 0 1xxまたは00 1111 1 0xxです。
制御記号
8b/10b内の制御シンボルは、有効なビットシーケンス(1または0が6つ以下)である10bシンボルですが、対応する8bデータバイトはありません。これらは低レベルの制御機能に使用されます。例えば、ファイバーチャネルでは、K28.5はループアービトレーション、フィルワード、リンクリセットなどの機能を実行する4バイトシーケンス(「オーダードセット」と呼ばれる)の先頭で使用されます。
5b/6b および 3b/4b テーブルの結果、次の 12 個の制御シンボルを送信できます。
| 入力 | RD = −1 | RD = +1 | |||
|---|---|---|---|---|---|
| シンボル | 12月 | ヘックス | HGF EDCBA | abcdei fghj | abcdei fghj |
| K.28.0 | 28 | 1C | 000 11100 | 001111 0100 | 110000 1011 |
| K.28.1 † | 60 | 3C | 001 11100 | 00 1111 1 001 | 11 0000 0 110 |
| K.28.2 | 92 | 5C | 010 11100 | 001111 0101 | 110000 1010 |
| K.28.3 | 124 | 7C | 011 11100 | 001111 0011 | 110000 1100 |
| K.28.4 | 156 | 9C | 100 11100 | 001111 0010 | 110000 1101 |
| K.28.5 † | 188 | 紀元前 | 101 11100 | 00 1111 1 010 | 11 0000 0 101 |
| K.28.6 | 220 | DC | 110 11100 | 001111 0110 | 110000 1001 |
| K.28.7 ‡ | 252 | FC | 111 11100 | 00 1111 1 000 | 11 0000 0 111 |
| K.23.7 | 247 | F7 | 111 10111 | 111010 1000 | 000101 0111 |
| K.27.7 | 251 | フェイスブック | 111 11011 | 110110 1000 | 001001 0111 |
| K.29.7 | 253 | FD | 111 11101 | 101110 1000 | 010001 0111 |
| K.30.7 | 254 | FE | 111 11110 | 011110 1000 | 100001 0111 |
† 制御シンボルのうち、K.28.1、K.28.5、およびK.28.7は「カンマシンボル」です。カンマシンボルは同期(ビットストリーム内の8b/10bコードのアライメントの検出)に使用されます。K.28.7を使用しない場合、00 11111 0または11 00000 1という固有のカンマシーケンスは、通常のコードの組み合わせ内のどのビット位置にも誤って出現することはありません。
‡ K.28.7 を実際のコーディングで許容する場合、† で示唆されているよりも複雑な同期パターンの定義を使用する必要があります。K.28.7 と他の複数のコードを組み合わせると、2 つのコードが重なり合った誤った位置ずれのコンマ記号が形成されるためです。複数の K.28.7 コードのシーケンスは、検出できない位置ずれのコンマ記号を生成するため、いかなる場合でも許容されません。
K.28.7 は、データ ストリーム内の単一ビット エラーの結果として発生しない唯一のコンマ シンボルです。
D31.1のエンコード例
| 入力 | RD = −1 | RD = +1 | |||
|---|---|---|---|---|---|
| コード | 12月 | ヘックス | HGF EDCBA | abcdei fghj | abcdei fghj |
| D31.1 | 63 | 3階 | 001 11111 | 101011 1001 | 010100 1001 |
8b/10bを使用するテクノロジー
前述の IBM の特許の期限が切れた後、この方式はさらに普及し、いくつかの通信技術の DC フリー回線コードとして選ばれました。
8b/10b エンコーディングが適用される領域は次のとおりです。
- オーロラ
- カメラシリアルインターフェース
- CoaXPress
- 共通公衆無線インターフェース(CPRI)
- DVB 非同期シリアルインターフェース(ASI)
- DVIおよびHDMIビデオ アイランド (遷移最小差動信号)
- ディスプレイポート1.x
- ESCON(エンタープライズシステム接続)
- ファイバーチャネル
- ギガビット イーサネット(ツイストペアベースの1000BASE-Tを除く)
- IEEE 1394b(FireWireなど)
- インフィニバンド
- JESD204B
- OBSAI RP3インターフェース
- PCI Express 1.x および 2.x
- シリアルラピッドIO
- SD UHS-II
- シリアルATA
- SAS 1.x、2.x、3.x
- SSA
- ServerNet(ServerNet2以降)
- SGMII
- ユニプロM-PHY [7]
- USB 3.0
- Thunderbolt 1.x および 2.x
- ザウイ
- SLVS-EC
ファイバーチャネル(4GFCおよび8GFCバリアントのみ)
FC-0規格は、ファイバチャネルシステムで使用される符号化方式(8b/10bまたは64b/66b)を定義しています[8] 。より高速なシステムでは、帯域幅効率を最適化するために通常64b/66bが使用されます(帯域幅のオーバーヘッドが8b/10bでは20%であるのに対し、64b/66bシステムでは約3%(約2/66)であるため)。したがって、4GFCおよび8GFCシステムでは8b/10b符号化方式が使用され、10GFCおよび16GFCシステムでは64b/66bが使用されます[9] 。ファイバチャネルFC1データリンク層は、信号の8b/10b符号化および復号化を実装する役割を担います。
ファイバーチャネル8b/10b符号化方式は、他の通信システムでも使用されています。データは、入力された8ビット値ごとに2つの10ビット出力値のいずれかを生成するアルゴリズムを用いて拡張されます。各8ビット入力値は、奇数ディスパリティを持つ10ビット出力値、または偶数ディスパリティを持つ10ビット出力値のいずれかにマッピングできます。このマッピングは通常、パラレル入力データがファイバーチャネルリンクを介して伝送するためにシリアル出力ストリームに変換される時点で行われます。奇数/偶数の選択は、1と0の間の長期的なゼロディスパリティが維持されるように行われます。これはしばしば「DCバランシング」と呼ばれます。
8ビットから10ビットへの変換方式では、1024通りの出力値のうち512通りのみが使用されます。残りの512通りの未使用の出力値のほとんどは、1(または0)が多すぎるため、使用できません。それでも、10ビットの奇数+偶数コーディングペアは十分に残っており、少なくとも12個の特殊な非データ文字を格納できます。
256個のデータ値を表すコードはデータ(D)コードと呼ばれます。12個の特殊な非データ文字を表すコードは制御(K)コードと呼ばれます。
すべてのコードは、3つの8進数値で記述できます。これは、「Dxx.x」または「Kxx.x」という命名規則に従って行われます。(前のセクションの表では、Dxx.xまたはKxx.xに8進数値ではなく10進数値を使用していることに注意してください。)
例:
- 入力データビット: ABCDEFGH
- データはABC DEFGHに分割されます
- データがシャッフルされます: DEFGH ABC
ここで、これらのビットはペアになっている方法で 10 進数に変換されます。
入力データ
C3 (16進数) = 11000011
= 110 00011
= 00011 110
= 3 6
E 8B/10B = D03.6
デジタルオーディオ
8b/10bエンコード方式は、デジタルオーディオストレージアプリケーションで広く使用されています。
- デジタルオーディオテープ、米国特許第4,456,905号、1984年6月、K.Odaka。
- デジタル コンパクト カセット(DCC)、米国特許 4,620,311、1986 年 10 月、Kees Schouhamer Immink氏。
オーディオ CDとCD-ROMには、異なるが関連した方式が使用されています。
代替案
8b/10bは符号化方式であり、特定のコードではないことに注意してください。多くのアプリケーションで同じコードが使用されていますが、互換性のない実装も存在します。例えば、Transition Minimized Differential Signalingは8ビットを10ビットに拡張しますが、その方法は全く異なります。
10ギガビットイーサネットの10GBASE-R 物理媒体依存(PMD)インターフェース用に導入された64b/66bエンコーディングは、8b/10bエンコーディングの低オーバーヘッド代替方式であり、エンコードされたデータの64ビット(8ビットではなく)あたり2ビットのオーバーヘッドを持つ。この方式は8b/10bエンコーディングとは設計が大きく異なり、DCバランス、短いランレングス、および遷移密度を明示的に保証するものではない(これらの機能はスクランブルによって統計的に実現される)。64b/66bエンコーディングは、 PCI Express 3.0およびUSB 3.1向けにそれぞれ128b/130bおよび128b/132bエンコーディングバリアントに拡張され、各規格の以前のリビジョンにおける8b/10bエンコーディングに取って代わった。[10]
参考文献
- ^ Kees Schouhamer Immink (1997年3月). 「DCフリー・マルチモード符号の性能評価」. IEEE Transactions on Communications . 45 (3): 293– 299. doi :10.1109/26.558690.
DCバランス符号、あるいはDCフリー符号と呼ばれるこの符号は長い歴史を持ち、その応用範囲は録音分野に限定されるものではありません。
- ^ US 4,456,905、「バイナリデータを符号化する方法および装置」、1984年6月26日公開
- ^ US 4,620,311、「情報伝送方法、その方法で使用する符号化装置、およびその方法で使用する復号化装置」、1986年10月28日公開
- ^ Al X. Widmer, Peter A. Franaszek (1983). 「DCバランス、パーティションブロック、8B/10B伝送コード」. IBM Journal of Research and Development . 27 (5): 440– 451. doi :10.1147/rd.275.0440. 2009年5月30日時点のオリジナルよりアーカイブ。 2005年4月5日閲覧。
- ^ US 4,486,739、「バイト指向DCバランス(0,4)8B/10B分割ブロック伝送コード」、1984年12月4日公開
- ^ Thatcher, Jonathan (1996年4月1日). 「ギガビット・イーサネット物理に関する考察」IBM . 2008年8月17日閲覧。
- ^ 「物理層仕様」. Mipi.org . MIPIアライアンス. 2014年4月20日閲覧。
- ^ ファイバチャネルフレーミングとシグナリング - 3 (FC-FS-3) Rev 1.1 セクション5.2.1および5.3.1 [1]
- ^ ファイバーチャネル物理インタフェース5(FC-PI-5)REV 6.10 セクション5.7 [2]
- ^ Mahesh Wagh (2011年8月6日). 「PCIe 3.0 エンコーディングとPHY論理」(PDF) . pcisig.com . 2015年6月5日閲覧。
外部リンク
- 「8b/10bエンコーディングの定義」。2014年6月8日時点のオリジナルよりアーカイブ。 2014年9月2日閲覧。