JP2005513823A6 - 高速アプリケーションのための8b/10b符号化および復号化 - Google Patents
高速アプリケーションのための8b/10b符号化および復号化 Download PDFInfo
- Publication number
- JP2005513823A6 JP2005513823A6 JP2002587933A JP2002587933A JP2005513823A6 JP 2005513823 A6 JP2005513823 A6 JP 2005513823A6 JP 2002587933 A JP2002587933 A JP 2002587933A JP 2002587933 A JP2002587933 A JP 2002587933A JP 2005513823 A6 JP2005513823 A6 JP 2005513823A6
- Authority
- JP
- Japan
- Prior art keywords
- bit
- value
- bits
- disparity
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001419 dependent Effects 0.000 claims abstract description 19
- 230000000295 complement Effects 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims 10
- 238000011084 recovery Methods 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 48
- 238000010586 diagram Methods 0.000 description 25
- 230000014509 gene expression Effects 0.000 description 21
- 238000000034 method Methods 0.000 description 12
- 239000000835 fiber Substances 0.000 description 6
- 230000001934 delay Effects 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 4
- 230000000875 corresponding Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004377 microelectronic Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 241000711404 Avian avulavirus 1 Species 0.000 description 1
- 241000723353 Chrysanthemum Species 0.000 description 1
- 206010069867 Device capturing issue Diseases 0.000 description 1
- 229940067916 PCE Drugs 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional Effects 0.000 description 1
- 238000011030 bottleneck Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000001186 cumulative Effects 0.000 description 1
- 230000003111 delayed Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 201000007914 proliferative diabetic retinopathy Diseases 0.000 description 1
- 230000001902 propagating Effects 0.000 description 1
- 230000001131 transforming Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Abstract
【課題】8B/10B伝送コードを高速に符号化および復号化する方法を提供すること。
【解決手段】復号化および符号化の際に、先行する参照ポイントでのディスパリティと、その参照ポイントから現在ブロックの境界までのバイトのディスパリティ特性とを用いて、現在ブロックのスターティング・ディスパリティを計算する。バイトの特性とは、バイトが不平衡符号化ベクトルかどうか、および不平衡ベクトルの数が偶数か奇数かをいう。あるいは、バイトの特性とは、バイトが平衡しているかどうか、平衡符号化ベクトルがいくつ存在しているかをいう。3B/4Bおよび5B/6B伝送コードの符号化および復号化を行うための新しい分類が作り出された。ディスパリティ方面を特に取り扱う独立した関数が作り出された。バイト直前でのディスパリティ違反が、実際のランニング・ディスパリティは2つ先行するディスパリティ依存バイト(the next preceding byte that is disparity dependent)のエグジット・ディスパリティに等しいと想定して、バイトの必要フロントエンド・ディスパリティと実際のランニング・ディスパリティとを比較することによって、復号化の際に検出される。
【解決手段】復号化および符号化の際に、先行する参照ポイントでのディスパリティと、その参照ポイントから現在ブロックの境界までのバイトのディスパリティ特性とを用いて、現在ブロックのスターティング・ディスパリティを計算する。バイトの特性とは、バイトが不平衡符号化ベクトルかどうか、および不平衡ベクトルの数が偶数か奇数かをいう。あるいは、バイトの特性とは、バイトが平衡しているかどうか、平衡符号化ベクトルがいくつ存在しているかをいう。3B/4Bおよび5B/6B伝送コードの符号化および復号化を行うための新しい分類が作り出された。ディスパリティ方面を特に取り扱う独立した関数が作り出された。バイト直前でのディスパリティ違反が、実際のランニング・ディスパリティは2つ先行するディスパリティ依存バイト(the next preceding byte that is disparity dependent)のエグジット・ディスパリティに等しいと想定して、バイトの必要フロントエンド・ディスパリティと実際のランニング・ディスパリティとを比較することによって、復号化の際に検出される。
Description
本発明は、伝送コードに関し、より詳細には、高速アプリケーション向けの8B/10B符号化および復号化に関する。
本出願は、参照によりその開示が本明細書に組み込まれている、2001年5月8日に出願した米国仮出願第60/289,556号の恩典を主張するものである。
直列化された自己同期式のチップ入出力(I/O)が趨勢となっている。広い双方向共用バスの多くを個別の高速シリアル通信レーンを設けることによって置き換えることが期待されている。参照によりその開示が本明細書に組み込まれている、「バイト指向直流平衡(0,4)8B/10Bパーティション・ブロック伝送コード(Byte Oriented DC Balanced (0,4) 8B/10B Partition Block TransmissionCode)」と題する、フラナシェク(Franaszek)およびウィドマー(Widmer)による米国特許第4,486,739号に記載の8B/10B伝送コードが、その容易な実装と伝送特性のために、当業界内でこの種の応用例向けによく定着している。
8B/10B伝送コードの詳細な議論については、米国特許第4,486,739号を参照されたい。8B/10B伝送コードでは一般に、10ビットのベクトルは6ビットの符号化ベクトルと4ビットの符号化ベクトルから生成される。6ビットの符号化ベクトルは5ビットのソース・ベクトルから生成される。同様に4ビットの符号化ベクトルは3ビットのソース・ベクトルから生成される。符号化ベクトルは、符号化ベクトルのストリーム中の直流(DC)成分を削減または除去するような方法で生成され結合される。符号化(およびソース)ベクトルはディスパリティを有する。データ・ブロックのディスパリティは、そのブロック中の0の数と1の数との差である。正のディスパリティ数は1の超過を表し、負のディスパリティ数は0の超過を表す。ディスパリティは、どのような符号化ベクトルを伝送するかを決定するために使用される。例えば、不平衡符号化ベクトルは一次および代替符号化ベクトルを有し、一次符号化ベクトルと代替符号化ベクトルのどちらを選択して伝送するかは、ディスパリティによって決定される。不平衡符号化ベクトルは0でないディスパリティを有する。例えば、3ビットのソース・ベクトルを000とする。このソース・ベクトルに対応する3B/4B伝送コードの一次符号化ベクトルは0100である。このソース・ベクトルに対応する3B/4B伝送コードの代替符号化ベクトルは1011(すなわち、0100をビット反転したもの)である。符号化ベクトルの直前のディスパリティが正数ならば、一次ベクトルが選択され、符号化ベクトルの直前のディスパリティが負数ならば、代替ベクトルが選択される。ディスパリティおよびディスパリティ規則に関するさらなる詳細については、米国特許第5,245,339号に記載されている。
より高速な伝送速度を求める明白な傾向があり、従来は複数の符号器−復号器(コーデック)回路による並列処理によって対処されていた。例えば、参照によりその開示が本明細書に組み込まれている、「高速データ伝送およびストレージのための柔軟な符号化方法およびアーキテクチャ(Flexible Encoding Method and Architecture for High Speed DataTransmission and Storage)」と題する、シデシヤン(Cideciyan)による米国特許第5,245,339号は、複数の符号器の並列動作に関する改良方法を教示している。
米国仮出願第60/289,556号
米国特許第4,486,739号
米国特許第5,245,339号
「IBMマイクロエレクトロニクスASIC SA−27データブック SA14−2214−01」(1998)(「IBM Microelectronics ASIC SA-27 Databook, SA14-2214-01」(1998))
ウィドマー、「ANSIファイバ・チャネル伝送コード」、IBMリサーチ・レポート18855(1993)(Widmer、「The ANSI Fiber Channel Transmission Code」、IBM ResearchReport 18855 (1993))
しかし、8B/10B伝送コードを使用する際の符号化および復号化をさらに高速化することが依然として必要とされている。
本発明は、8B/10B伝送コードを使用して符号化および復号化をそれぞれ行う際に、符号化および復号化を高速化する技法を提供する。本発明の一態様では、8B/10B伝送コードの符号化の際に、先行する参照ポイントでのディスパリティとその参照ポイントから現在ブロックの境界までのバイトのディスパリティ特性とを用いて、現在ブロックのスターティング・ディスパリティを計算する。8B/10B伝送コードにおけるブロックは通常バイトであり、したがって使用されるブロック境界は一般にバイト境界である。しかし、複数のバイトからブロックを生成してもよい。一実施形態では、バイトが不平衡符号化ベクトルかどうか、および不平衡ベクトルの数が偶数か奇数かを、バイトの特性と言う。別の実施形態では、バイトが平衡しているかどうか、および平衡符号化ベクトルがいくつ存在しているかを、バイトの特性と言う。この態様には少なくとも、従来の設計と比べて、単一の8B/10B符号器を用いる符号化では遅延が短縮され、複数の8B/10B符号器を並列動作させる符号化ではさらに遅延が短縮される利点が存在する。
本発明の第2および第3の態様では、3B/4Bおよび5B/6B伝送コードを符号化および復号化するにあたり、従来の分類よりも遅延を短縮する新しい分類が作り出される。さらに、伝送コードのディスパリティ方面を特に取り扱う独立した関数が作り出される。
本発明の第4の態様では、復号化する際に、ブロック先頭での現在の参照ディスパリティを先行ブロックの保存されたディスパリティ属性に基づいて決定する。一実施形態では、先行ブロックの保存されたディスパリティ属性とは、先行ブロックのエグジット・ディスパリティおよび先行ブロックの参照極性のことを言う。別の実施形態では、ブロック先頭での現在の参照ディスパリティは、以下の2条件のうち少なくとも一方を満足すれば正である。(1)先行ブロックのエグジット・ディスパリティが正である。(2)先行ブロック先頭での参照ディスパリティが正であり、かつ先行ブロックのエグジット極性が非負である。別の実施形態では、実際のランニング・ディスパリティは2つ先行するディスパリティ依存バイト(the next preceding byte that is disparity dependent)のエグジット・ディスパリティに等しいと想定して、バイトの必要フロントエンド・ディスパリティを実際のランニング・ディスパリティと比較することによって、復号化の際にバイト直前でのディスパリティ違反が検出される。
本発明ならびに本発明のさらなる特徴および利点は、以下の詳細な説明および図面を参照することにより、より完全に理解されるであろう。
本発明は、少なくとも以下の改良によって、米国特許第5,245,339号および米国特許第4,486,739号の開示を超えるものである。符号化ドメインへのマッピングおよび符号化ドメインからのマッピングのための新しいベクトル分類が開発されたことによって、一般により短い遅延を有する符号化式および復号化式が得られる。8B/10Bコード自体は変更されない。符号化および復号化処理のためのディスパリティは、共通の分類によってではなく別々の分類によって処理されるが、必要となる追加回路の数は僅かである。米国特許第4,486,739号では、共通の分類が用いられている。従来の回路は、符号化データまたは復号化データと共にバイト末尾またはバイト・ブロックの末尾でのランニング・ディスパリティを提示するが、本発明の諸態様は、符号化または復号化処理およびエラー・チェック処理の開始時点でのランニング・ディスパリティの極性を直ちに知る必要がないことをうまく利用している。そのため、エンディング・ディスパリティの代りに、現在バイトのスターティング・ディスパリティが、現在バイトのある種の特性と共に、ラッチまたは遅延素子を介して次のバイト間隔に伝えられる。次に、次のサイクルの初期段階で、新しいバイトのビット・マッピング、エラー・チェック、ディスパリティ分類と並行して、次のバイトのスターティング・ディスパリティを計算する。これら2つの革新によって、応用例の多くは、2または4回路ではなく単一のコーデック回路を用いて、または4回路の代りに2回路を用いて動作できるようになる。レンジが非常に短い応用例(very short range application)では、回路を節約するよりも、単一のコーデックの待ち時間を減らすほうが重要なことがある。複数のコーデック回路を用いることによる待ち時間の増加は、単一のバイト・レーンと関係があるが、それは、他の理由で必要でないならば、いくつかのバイトを並行して組み立てたり分解したりするには余分な時間がかかるためである。
複数のコーデック回路を用いて並列処理を実施する場合、本発明の態様を用いる際に、複数のバイト・ブロック各々のエンディング・ディスパリティを獲得する必要もない。その代わりに、現在ブロックのスターティング・ディスパリティを、先行する参照ポイントでのディスパリティ値と新しい参照ポイントまでのバイトのある種の特性とから導出することができる。
符号化処理では、先行する参照ポイントからのランニング・ディスパリティは、新しい参照ポイントまでの不平衡符号化ベクトルの数が奇数である場合に変更され、偶数である場合は変更されない。参照ポイントまで遡って数えたベクトルの総数(the total number of vectors back to the reference)が偶数の場合、平衡ベクトルの数についても同じことが言える。
米国特許第5,245,339号は、復号化処理については明示的に対処していないように見える。復号化のためのビット・マッピングにおいてディスパリティは何の役割も果たしていないが、エラーを検出するためにディスパリティ規則との一致がチェックされ、従来の設計のいくつかではこのロジック・パスがボトルネックの1つになることがある。本発明のディスパリティ・チェック回路は、平衡バイトまたは不平衡バイトとは異なる、ディスパリティ依存バイトまたはディスパリティ独立バイトに符号化バイトを分類する。ディスパリティ独立バイトは無視される。ディスパリティ依存バイトは、バイト先頭でのランニング・ディスパリティとは無関係にバイト内のビット・パターンのみに依存して、正または負のエグジット・ディスパリティを有する。任意のポイントでのランニング・ディスパリティは最も新しいディスパリティ依存バイトのエグジット・ディスパリティに等しいことを、エラー・チェックに利用する。例えば4列の並列バイトがあるとすると、これは4組の独立した組合せ論理によって同時に判定することができる。すなわち、第3のバイト直前でのディスパリティを獲得するには、より長い遅延を伴ういくつかの設計で必要とされるように先行バイト直前でのディスパリティを知る必要はない。4バイト・ブロック直前でのディスパリティは、先行ブロックの末尾バイト(回路1713)直前でのディスパリティ値とそのバイトのディスパリティ特性とから導出される。この評価を次のブロック・サイクルまで延期することにより、遅延余裕の改善が実現できる。
本明細書で提示される8B/10Bコーデック回路設計は、可能な限り速い速度を実現することと、IBM CMOS−7S用の標準セル・ライブラリまたは同様の技術を最大限利用することを試みている。IBM CMOS−7Sは、参照によりその開示が本明細書に組み込まれている、「IBMマイクロエレクトロニクスASIC SA−27データブック SA14−2214−01」(1998)に記載されている。単一のコーデック回路および並列回路を用いる実施を本明細書に示す。
従来技法を超える速度の改善は、以下のステップによって実現される。
1.新しい符号化表および復号化表が新しい分類を用いて生成された。(米国特許第4,486,739号で用いられたような)旧分類では4変数関数を多用したが、新分類は3変数関数をより多く使用し、より短い遅延で実施することができる。
2.ディスパリティ方面を特に取り扱う独立の関数を定義した。こうすることによって速度が向上するが、それは、ディスパリティ方面を取り扱う関数を符号化方面と一まとめにしなければ、高速化のために変更できるからである。符号化バイトが平衡しているかどうかは、正または負の6Bベクトルあるいは正または負の4Bベクトルがないことから間接に判定するのではなく、入力ビットから直接判定する。換言すれば、これまでは、正の符号化ベクトルまたは負の符号化ベクトルがなければバイトは平衡していると見なすことによって平衡を判定していた。ディスパリティおよび補数演算を制御する原規則の設計においては、回路を節約するために、ビット符号化および復号化を支援するのに使用されたのと同じ旧分類が利用されていた。本発明の態様は、時には回路面積を犠牲にして速度を向上させる。
3.符号化の場合、任意のベクトルの直前でのディスパリティは、スターティング参照と、現在位置とその参照との間の不平衡ベクトルの数が奇数か偶数かによって、または平衡ベクトルの数が奇数か偶数かによって判定される。別の手法では、ディスパリティのベクトルからベクトルへの伝播およびバイトからバイトへの伝播に依存するが、より長い時間を必要とする。
4.復号化の場合、現在のディスパリティは、2つ先行するディスパリティ依存バイト(thenext previous disparity dependent byte)のエグジット・ディスパリティに等しいと想定される。換言すれば、バイト前後での現在のディスパリティは、先行ディスパリティ依存バイトのエグジット・ディスパリティとして定義される。
5.また符号化および復号化の場合、バイトまたはブロックのエンディング・ディスパリティを計算して、次にそれを隣のブロックにスターティング・ディスパリティとして渡すのではなく、先行ブロック内の参照ポイントでのディスパリティと間にあるバイトのディスパリティ特性とに基づいて、現在のバイトまたはブロックのスターティング・ディスパリティを計算することができる。
6.S関数(S-Function)および補数関数(complementfunctions)についてのクリティカル・パスに特に注意を払った。S関数については以下でさらに詳細に定義する。大まかに言えば、S関数は不正なカンマを回避するために用いられる。複数の非クリティカル・パスにおいてアップストリームをゲーティングすることにより、クリティカル・パスにおける直列ゲーティングおよび多数の論理入力数を回避する。
7.論理を実装する場合、NANDゲートは遅延が短いため、様々なゲートの中でNANDゲートが第1の選択肢となる。第2の選択肢はNORゲートである。同様の理由で、XNORゲートのほうがXORゲートよりも好ましい。好ましい回路を最良に利用するために、論理極性を生成または変更する。
8.よりクリティカルな信号は、シンボルの上部入力であるA入力に配線する。ただし、XORまたはXNORゲートでは、下部入力のほうが遅延が短いこともある。
9.本発明の設計では、基本論理素子および中間の関数(intermediatefunctions)は、それらが逐次ステップを必要とする場合、あまり共用しない。例えば、入力において、A≠B関数は、複数の用途がある中間の論理表現(intermediatelogic expressions)からではなく、A入力およびB入力から直接生成される。
本発明のさらなる詳細に進む前に、表記法について論じておくのが有益であろう。本明細書の式内で使用される信号名は、いかなる論理レベルをも反映していない。したがって、それらは抽象的な論理表現(logic statements)として解釈すべきである。しかし、回路図では、信号名には接頭辞PまたはNが付されることがあり、それぞれその関数が高レベルで真となること、または低レベルで真となることを表す。接頭辞PおよびNは通常、混乱や誤解を招かないかぎり、PおよびNで始まる接頭辞なしの名称(netnames)については使用されない(例えば、NNDFS6=PPDFS6は、NDFS6=PDFS6のような明らかな矛盾を回避するために切り詰めない)。nまたはmで始まる接頭辞なしの数(netnumbers)は低レベルで真となり、接頭辞Pが付くと高レベルで真となる。
参照を容易にするために、詳細な説明を2つのセクション、(I)8B/10B符号器と(II)10B/8B復号器とに分けて行う。各セクションは複数のサブセクションを含む。
I.8B/10B符号器
5B/6Bおよび3B/4B伝送コードの符号化を高速化するために、符号化クラスが開発された。旧分類(例えば、米国特許第4,486,739号など)では4変数関数を多用するが、新分類では短い遅延で実施できる3変数関数をより多く使用し、個々の関数は、3B/4Bおよび5B/6Bコードのディスパリティ方面を特に取り扱うように定義されている。
5B/6Bおよび3B/4B伝送コードの符号化を高速化するために、符号化クラスが開発された。旧分類(例えば、米国特許第4,486,739号など)では4変数関数を多用するが、新分類では短い遅延で実施できる3変数関数をより多く使用し、個々の関数は、3B/4Bおよび5B/6Bコードのディスパリティ方面を特に取り扱うように定義されている。
図1には、5B/6Bソース・ベクトルを符号化するために使用する表が示されている。図1に示すように、より効率的にソース・ベクトルをクラスに分割するために、「符号化クラス」が追加された。これらのクラスは符号化を高速化し、以下に説明するように作り出される。図1のさらなる分析の前に、ここで表記法について説明する。5B/6Bベクトル集合L03およびL30はそれぞれ、ビットA、B、Cに3個の論理0または3個の論理1をもつ5ビットのソース・ベクトル(S5)をすべて含む。換言すれば、表記「L03」は、最初の3ビットA、B、Cに1が0個、0が3個含まれることを意味する。データ値が通常の書き方とは「反対向き」に表記されること、すなわち、「1」は00001ではなく10000であることに留意されたい。しかし、これは便宜的にしたことにすぎず、他の表現を使用してもよい。記号L12およびL21はそれぞれ、ビットA、B、Cに1個の論理1と2個の論理0が含まれること、またはその反対を表す。新しい記号を以下に正式に定義する。以下の論理式において、記号(・)および(+)はそれぞれブール関数のANDまたはORを表す。アポストロフィ(’)は否定を表す。
ベクトル集合L03およびL30はそれぞれ、ビットABCが0を3個含むS5ベクトルまたは1を3個含むS5ベクトルをすべて含む。
L03=A’・B’・C’
L30=A・B・C
L03=A’・B’・C’
L30=A・B・C
ベクトル集合L12およびL21はそれぞれ、ビットABCが1を1個と0を2個含むS5ベクトル、または1を2個と0を1個含むS5ベクトルをすべて含む。
L12=A・B’・C’+A’・B・C’+A’・B’・C
L21=A’・B・C+A・B’・C+A・B・C’
L12=A・B’・C’+A’・B・C’+A’・B’・C
L21=A’・B・C+A・B’・C+A・B・C’
A.符号器式および表
概念的には、符号化は2ステップで実行される。最初に、一次ベクトルへの変換が行われる。ディスパリティ依存符号化ベクトルの部分集合についての第2のステップでは、ディスパリティ規則を満足させるために、補数化した代替ベクトルを使用しなければならないかどうか判断する。ディスパリティ依存ベクトルは、表のDR欄がプラスまたはマイナスになっている。DRは必要エントリ・ディスパリティである。必要エントリ・ディスパリティは、ディスパリティ依存ベクトルについて、一次符号化ベクトルを使用するか、それとも代替符号化ベクトルを使用するかを表す。例えば、必要エントリ・ディスパリティDRが「+」の場合、エントリ・ディスパリティが正であれば、一次符号化ベクトルを使用し、エントリ・ディスパリティが負であれば、代替符号化ベクトルを使用する。これらのコードはベクトル境界でプラス1またはマイナス1のランニング・ディスパリティを有しており、そのため、ベクトル境界でランニング・ディスパリティが0であってはならないことに留意されたい。エントリ・ディスパリティは、これから符号化する現在のソース・ベクトルの直前のランニング・ディスパリティである。ランニング・ディスパリティは、一連の符号化ベクトル内のビット値について累積和を取ったものである。
概念的には、符号化は2ステップで実行される。最初に、一次ベクトルへの変換が行われる。ディスパリティ依存符号化ベクトルの部分集合についての第2のステップでは、ディスパリティ規則を満足させるために、補数化した代替ベクトルを使用しなければならないかどうか判断する。ディスパリティ依存ベクトルは、表のDR欄がプラスまたはマイナスになっている。DRは必要エントリ・ディスパリティである。必要エントリ・ディスパリティは、ディスパリティ依存ベクトルについて、一次符号化ベクトルを使用するか、それとも代替符号化ベクトルを使用するかを表す。例えば、必要エントリ・ディスパリティDRが「+」の場合、エントリ・ディスパリティが正であれば、一次符号化ベクトルを使用し、エントリ・ディスパリティが負であれば、代替符号化ベクトルを使用する。これらのコードはベクトル境界でプラス1またはマイナス1のランニング・ディスパリティを有しており、そのため、ベクトル境界でランニング・ディスパリティが0であってはならないことに留意されたい。エントリ・ディスパリティは、これから符号化する現在のソース・ベクトルの直前のランニング・ディスパリティである。ランニング・ディスパリティは、一連の符号化ベクトル内のビット値について累積和を取ったものである。
一次ベクトルの生成 一次ベクトルへの変換に必要な論理式をそれぞれ、図1の「符号化クラス」および「一次abcdei」、または図2の「一次fghj」から直接読み取ることができる。図2には、3B/4B伝送コードについて、3ビットのソース・ベクトルを4ビットの符号化ベクトルに符号化する際に使用される表が示されている。図1において、文字列「ABCDE」はソース・ベクトルを表し、文字列「abcdei」は符号化ベクトルを表す。「K」は制御文字を表すために使用される。図2において、文字列「FGH」はソース・ベクトルを表し、文字列「fghj」は符号化ベクトルを表す。ここでも「K」は制御文字を表す。以下の説明のために、図1および図2を参照する。「一次」欄において、プレーン書体のビットはすべて、入力ビット値ABCDEまたはFGHの対応するビットと同じである。ボールド書体のビットは補数値を表すようになっている。iビットとjビットは通常、0であると見なされる。1つの行にカンマで分けられた2つの分類エントリがある場合、第2の表現は一次欄の最後のボールド書体の0または1に適用する。
図1において、D11、D13、D14はL21・PDFS6・D・E’についてS1=1であり、D17、D18、D20はL12・NDFS6・D’・EについてS2=1であることに留意されたい。S1またはS2がアクティブであり、ビットF、G、Hがすべて1である場合、図2の表のDx.A7行に示すように、それらは0111または1000に符号化される。これによって、カンマ・シーケンスのずれが防止される。
図1および図2の表から抜き出した論理式を以下に記載する。これらの論理式は、以下で説明する図3の回路によって実行される。
a=A
b=B・(L30・D)’+L03・D’
c=C+L03・D’+L03・D・E=C+L03・(D’+D・E)=C+L03・(D’+E)
d=D・(L30・D)’
e=E・(L03・D)’+L12・D’・E’+L03・D・E’
i=L21・D’・E’+L12・[(D≠E)+K]+L03・D’・E+L30・D・E
f=F・[F・G・H・(S+K)]’
g=G+F’・G’・H’=G+F’・H’
h=H
j=(F≠G)・H’+F・G・H・(S+K)
a=A
b=B・(L30・D)’+L03・D’
c=C+L03・D’+L03・D・E=C+L03・(D’+D・E)=C+L03・(D’+E)
d=D・(L30・D)’
e=E・(L03・D)’+L12・D’・E’+L03・D・E’
i=L21・D’・E’+L12・[(D≠E)+K]+L03・D’・E+L30・D・E
f=F・[F・G・H・(S+K)]’
g=G+F’・G’・H’=G+F’・H’
h=H
j=(F≠G)・H’+F・G・H・(S+K)
B.8B/10B符号化の実装
上記の表、式、設計原理に従う実装が、図3の8B/10B符号化の回路図に示されている。符号化回路図に記された接頭辞なしの名称についての表記法は以下のとおりである。接頭辞なしの名称の中の文字「a」および「o」はそれぞれ、ブール関数のANDまたはORを表す。名称の中の文字「n」は先行するパラメータの否定を取る。文字「e」および「ue」はそれぞれ、記号「=」または「≠」を表す。大文字ABCDEFGHKは、符号化されていない入力ビットを表し、小文字abcdeifghjは、符号化形式を表す。
上記の表、式、設計原理に従う実装が、図3の8B/10B符号化の回路図に示されている。符号化回路図に記された接頭辞なしの名称についての表記法は以下のとおりである。接頭辞なしの名称の中の文字「a」および「o」はそれぞれ、ブール関数のANDまたはORを表す。名称の中の文字「n」は先行するパラメータの否定を取る。文字「e」および「ue」はそれぞれ、記号「=」または「≠」を表す。大文字ABCDEFGHKは、符号化されていない入力ビットを表し、小文字abcdeifghjは、符号化形式を表す。
図3と図4は単一の回路を表しており、便宜的に2図に分けて示したにすぎない。回路全体の入力および出力には、図3左上のPAおよび右上のPCaのように、ポート記号が添えられている。図3右上の信号NCMPLS6のように、この記号が添えられていない場合、その信号は線の名称であり、その出所は2図のいずれかにある全く同じ名称の線である。例えば、NCMPLS6は、図4右上のゲートの出力であり、図3右上で使用されている。図4には入力ポート記号は示されておらず、信号はすべて図3から直接来ることに留意されたい。
図3には、5B/6B伝送コードと3B/4B伝送コードの両方を符号化するのに使用される符号化回路300Aが示されている。符号化回路300Aは、インバータ301A〜311A、NANDゲート315A〜339A、NORゲート345A〜354A、ANDN1(1入力にインバータを有するANDゲート)375A、XNORゲート355A〜359A、XORゲート365A〜370A、AND−OR(AO)ブロック385A、AND−OR−INVERT(AOI)ブロック380A、381Aを含む。AOIブロック380Aについては、図5を参照して以下で論じる。図3を始めとする図において、同一素子に複数の記号が使用されていることに留意されたい。例えば、素子323AはNANDゲートであるが、インバータ付き入力と出力とを有するORゲートとして示されている。これら2ゲートは機能的に等価である。同様に、素子351AはNORゲートと機能的に等価であり、図19の素子1740はOAIブロックと機能的に等価である。
紙面の制限から、図3では、以下の略記法を使用する。n0=NABnCn、n1=NAnBCn、n2=NAnBnC、n3=NABCn、n4=NABnC、n5=NAnBC、n6=NEL03noDn、n8=NL12NDFS6DnEFGH、n9=NL21PDFS6DEnFGH、n10=PHnFueG。
信号NCMPLS6は、以下図4に示すディスパリティ制御回路から来る。この信号は、一次符号化ベクトルabcdeiを反転させて、代替符号化ベクトル(abcdei)’を生成するのに使用する。この反転は、ディスパリティ規則に従って実行される。同様に、信号NCMPLS4も、以下図4に示すディスパリティ制御回路から来る。この信号は、ディスパリティ規則に従い、一次符号化ベクトルfghjを反転させて、代替符号化ベクトル(fghj)’を生成するのに使用する。
信号PNDFS6は、ディスパリティ判定の際に使用される信号であり、図6〜図9を参照してより詳しく説明する。この信号もS関数の成分(component)である。
次に図5を参照すると、AOIブロック380Aが示されている。AOIブロック380Aは、2つのANDゲート410、420、ORゲート430、インバータ440を含む。本例では、NL30DとPBの両方が高レベルの場合、またはPL03とNDの両方が高レベルの場合に、Nbbは低レベルとなる。本例のAOIブロックには、入力が4つある。以下で論じる図中では、これとは異なるAOIブロックが使用される。入力を追加する場合、一般に入力グループ毎にANDゲートを1つ追加する。しかし、AOIブロックの中には、グループの一部ではない単一の入力をもつものもある。こうしたブロックの場合、その単一の入力は一般に、ANDゲートを経由することなく、ORゲート430などのORゲートに直接入力される。図3のAOブロック385AなどのAOブロックにはインバータ440がない。以下の図中で使用されるOAブロックには、1つのANDと複数のORがあり、ORは入力に接続され、ANDは出力に接続される。例えば、4入力のOAブロックは、AND410、420をORで置き換え、OR430をANDで置き換え、インバータ440を取り除いたものである。
C.8B/10Bディスパリティ制御
図1および図2の表中の「DRクラス」欄は、DR欄のプラス符号およびマイナス符号エントリに従ってベクトルを分類する。DR欄のエントリは、一次符号化ベクトルの直前での必要ディスパリティを表す。表記PDRS6およびPDRS4はそれぞれ、6Bまたは4Bベクトル先頭での正の必要ディスパリティを、表記NDRS6およびNDRS4はそれぞれ、6Bまたは4Bベクトル先頭での負の必要ディスパリティを表す。これらの表記については、以下でより詳しく説明する。
図1および図2の表中の「DRクラス」欄は、DR欄のプラス符号およびマイナス符号エントリに従ってベクトルを分類する。DR欄のエントリは、一次符号化ベクトルの直前での必要ディスパリティを表す。表記PDRS6およびPDRS4はそれぞれ、6Bまたは4Bベクトル先頭での正の必要ディスパリティを、表記NDRS6およびNDRS4はそれぞれ、6Bまたは4Bベクトル先頭での負の必要ディスパリティを表す。これらの表記については、以下でより詳しく説明する。
PDRS6 DR欄が正符号である6Bベクトルの集合をPDRS6と表記する。
PDRS6=L03・(D+E’)+L30・D・E’+L12・D’・E’
PDRS6=L03・(D+E’)+L30・D・E’+L12・D’・E’
NDRS6 DR欄が負符号である6Bベクトルの集合をNDRS6と表記する。
NDRS6=L30・(D’+E)+L03・D’・E+L21・D・E+K
NDRS6=L30・(D’+E)+L03・D’・E+L21・D・E+K
PDRS4
PDRS4=F’・G’+(F≠G)・K
PDRS4=F’・G’+(F≠G)・K
NDRS4
NDRS4=F・G
NDRS4=F・G
回路図において、信号名PDFS6、PDFS4、およびNDFS6、NDFS4はそれぞれ、6Bまたは4Bベクトル直前での実際のランニング・ディスパリティを表す。
DFとDRとの極性が一致しない場合、代替ベクトルを選択するための補数信号が生成される。例えば、PDFS6とNDRS6がともに真の場合、補数化が実行される。
CMPLS6=NDFS6・PDRS6+PDFS6・NDRS6
CMPLS4=NDFS4・PDRS4+PDFS4・NDRS4
CMPLS6=NDFS6・PDRS6+PDFS6・NDRS6
CMPLS4=NDFS4・PDRS4+PDFS4・NDRS4
「DBクラス」(ブロック・ディスパリティ)欄は、DB欄の0によって識別される平衡しているすべての符号化ベクトルを識別する。
BALS6 DB欄が0である6Bベクトルの集合をBALS6と表記する。
BALS6=L21・(D’+E’)+L12・K’・(D+E)+L30・D’・E’
BALS6=L21・(D’+E’)+L12・K’・(D+E)+L30・D’・E’
BALS4 DB欄が0である4Bベクトルの集合をBALS4と表記する。
BALS4=(F≠G)+F・G・H’
BALS4=(F≠G)+F・G・H’
信号BALS6とBALS4によって制御される追加の回路が、信号PBALBYによってバイトの平衡を表す。PBALBYが高レベルのとき、平衡バイトと見なす。
上記の表記を、図4のディスパリティ制御回路300Bによって実施する。ディスパリティ制御回路300Bは、インバータ301B、302B、NANDゲート310B、NORゲート320B〜331B、XORゲート340B、AOブロック350B〜353B、AOIブロック360B、361B、OAブロック370Bを含む。
任意のベクトル境界でのディスパリティを判定するのに使用される方法によって、5B/6B符号器と3B/4B符号器との結合遅延、または並行動作する複数の8B/10B符号器の結合遅延が短縮される。これは、図4の回路図の下部、および図6に示す図(以下でより詳しく論じる)に示されている。NDFBY(Negative Disparity in Front of a Byte、バイト直前の負のディスパリティ)などのスターティング・ディスパリティが与えられた場合、後続の任意のベクトル境界でのランニング・ディスパリティは、その2ポイント間の平衡S6ベクトルと平衡S4ベクトルとを合せた数が偶数であれば変わらず、奇数であれば極性が反転すると見なされる。これは、ディスパリティがベクトルからベクトルへ伝搬するのを観察する従来技法とは対照的である。表記NDFS4は、4Bベクトル直前の負のランニング・ディスパリティを表す。
図3の回路300Aおよび図4の回路300Bを含む8B/10B符号器は、10ビットの符号化バイトが平衡しているかどうかを表す出力(すなわち、PBALBY)をもつが、エンディング・ディスパリティを表す出力はもたない。一般に、ベクトルのスターティング・ディスパリティは、先行する参照ポイントでのディスパリティと、間にある平衡ベクトルの数が奇数か偶数かとによって決定される。
D.1バイト符号器用のディスパリティ回路、高速版
この回路は、符号化処理のためにスターティング・ディスパリティを直ちに知る必要がないことを利用する。バイト末尾でのランニング・ディスパリティの評価はクリティカルな遅延パス中にある場合があるので、最初のビットの符号化はランニング・ディスパリティとは無関係に実行するが、次のバイトのスターティング・ディスパリティPNDFS6を決定するための最終処理を実行するのを次のバイト間隔まで延期する。これを行うことのコストは、タイミングの余裕をXNOR2ゲート(「2」は2入力ゲートであることを表す)の遅延に等しい時間量だけ増やすために、次のバイト間隔にパラメータをただ1つではなく2つ渡すことである。
この回路は、符号化処理のためにスターティング・ディスパリティを直ちに知る必要がないことを利用する。バイト末尾でのランニング・ディスパリティの評価はクリティカルな遅延パス中にある場合があるので、最初のビットの符号化はランニング・ディスパリティとは無関係に実行するが、次のバイトのスターティング・ディスパリティPNDFS6を決定するための最終処理を実行するのを次のバイト間隔まで延期する。これを行うことのコストは、タイミングの余裕をXNOR2ゲート(「2」は2入力ゲートであることを表す)の遅延に等しい時間量だけ増やすために、次のバイト間隔にパラメータをただ1つではなく2つ渡すことである。
図6には、先行バイトから持ち越されたこれら同一の2パラメータ(theseidentical two parameters)に基づいて、スターティング・ディスパリティPNDFBYと現在バイトについての符号化バイトのディスパリティ「PBALBY」とを提供するディスパリティ回路500が示されている。回路500は、8B/10B符号器510、XNORゲート512を含む。8B/10B符号器510は、回路300A、300Bを含む。各バイト・サイクルの終りで、信号PNDFBYとPBALBYをそれぞれ、出力PNDFBY_LASTとPBALBY_LASTをもつ2つのラッチ(図示せず)に保存する。各々のラッチのタイミングはデータ出力ラッチ(これも図示せず)のタイミングと同じかまたは近い関係があるので、各々のラッチは示されていない。これらのパラメータは、次のバイトのスターティング・ディスパリティを計算するのに使用される。信号PNDFBYは、新しいバイトの直前のランニング・ディスパリティが負の場合に高レベルとなる。
ソース・データのバイト毎に2つの符号化ベクトル(6B、4B)がある。そのため、現在バイトの先頭と先のバイト境界の間にある平衡ベクトルまたは不平衡ベクトルの数が奇数の場合、現在のバイトのスターティング・ディスパリティは、先行する参照ポイントでのディスパリティの補数になり、その他の場合は、先行する参照ポイントでのディスパリティと同じである。
ディスパリティ回路500が高速である理由の1つは、以下のことにある。先のスターティング・ディスパリティPNDFBY_LASTと先の符号化バイトのディスパリティPBALBY_LASTとが分かっているので、PNDFS6は1つのXNORゲート512の遅延である短い遅延の後で決定することができる。図4に見られるように、PNDFS6はディスパリティ制御回路300Bへの入力である。次にディスパリティ制御回路300Bは、ほんの僅かな遅延の後でPNDFS6信号を使用することができ、次にディスパリティ制御回路300Bは、信号NCMPLS6とNCMPLS4を生成する。これらの信号は、6ビットの符号化ベクトルと4ビットの符号化ベクトルとをそれぞれ必要に応じて反転させるために、図3の符号化回路300Aによって使用される。6ビットの符号化ベクトルPCa、PCb、PCc、PCd、PCe、PCiが符号化されるときまでに、信号NCMPLS6が利用可能でなければならず、これは、8B/10B伝送コードの1バイトの符号化が1サイクルで行えることを意味する。
E.1バイト符号器用のディスパリティ回路、低速版
ディスパリティ処理の高速手法をよりよく説明するために、従来の方法も図7に示す。従来の方法は、図6の回路500のより高いパフォーマンスが必要でないケースで適用可能である。図7には、8B/10B符号器610、XNORゲート612を含むディスパリティ回路600が示されている。符号器610は基本的に符号器510と等価であるが、符号器610に関するタイミングと符号器510に関するタイミングは異なっている。従来の回路においては、エンディング・ディスパリティPNDEBYは同じ1つの符号化サイクル内で導出される。次にただ1つのパラメータを単一のラッチを用いて次のサイクルに渡さなければならない。このラッチのデータ入力はPNDEBYであり、次のバイト直前のディスパリティとなる出力はPNDFBYである。
ディスパリティ処理の高速手法をよりよく説明するために、従来の方法も図7に示す。従来の方法は、図6の回路500のより高いパフォーマンスが必要でないケースで適用可能である。図7には、8B/10B符号器610、XNORゲート612を含むディスパリティ回路600が示されている。符号器610は基本的に符号器510と等価であるが、符号器610に関するタイミングと符号器510に関するタイミングは異なっている。従来の回路においては、エンディング・ディスパリティPNDEBYは同じ1つの符号化サイクル内で導出される。次にただ1つのパラメータを単一のラッチを用いて次のサイクルに渡さなければならない。このラッチのデータ入力はPNDEBYであり、次のバイト直前のディスパリティとなる出力はPNDFBYである。
ディスパリティ回路600がディスパリティ回路500より低速な理由の1つを以下に説明する。ディスパリティ回路600が現在バイトのエンディング・ディスパリティを決定する場合、現在バイトについての符号化バイトのディスパリティPBALBYが分からなければならず、これは、符号器610についてのサイクルが終了しなければならないことを意味する。次に、現在バイトについてのエンディング・ディスパリティPNDEBYが同じサイクル内でXNOR612によって計算される。
単一バイトへの適用でディスパリティ回路500はディスパリティ回路600に比べて速度が向上するが、複数バイトを並列に符号化する複数バイトの適用例でディスパリティ回路500を使用する場合には、さらに大きな速度の向上が実現される。
F.4バイト符号器用のディスパリティ回路、高速版
次に図8を参照すると、4バイト符号器用のディスパリティ回路700が示されている。このディスパリティ回路700は、4バイト・ワード(これも「ブロック」と呼ぶ)PD0、PD1、PD2、PD3を並列に処理する4つの8B/10B符号器711、712、713、714を含む。さらに、ディスパリティ回路700の部分として、3つのXNORゲート721、722、723、2つのXORゲート731、732が含まれる。
次に図8を参照すると、4バイト符号器用のディスパリティ回路700が示されている。このディスパリティ回路700は、4バイト・ワード(これも「ブロック」と呼ぶ)PD0、PD1、PD2、PD3を並列に処理する4つの8B/10B符号器711、712、713、714を含む。さらに、ディスパリティ回路700の部分として、3つのXNORゲート721、722、723、2つのXORゲート731、732が含まれる。
この回路もやはり、符号化処理のためにスターティング・ディスパリティを直ちに知る必要がないことを利用する。この用途のために、図4の回路を以下のように変更することができる。信号PNDFS6とPDFS6によるゲーティングをロジック・チェーン中に移すことができる。例えば、ゲートおよび相互接続の遅延特性によっては、各々のゲーティングをAOブロック350Bと351Bに、またはゲート330Bにも移すことが有利になるかもしれず、その場合、それらはAOIゲートに変る。次の4バイト・ブロックのスターティング・ディスパリティPNDFWを決定するための最終処理は、次のバイト間隔まで延期される。図8の右上にある2つのパラメータPBALBY3_LASTとPNDF3_LASTは、図8下方の先行ブロック間隔から持ち越される。現在ブロックのスターティング・ディスパリティ(または先行ブロックのエンディング・ディスパリティ)は、入力PNDFW(Negative Disparity in Front of the Word、ワード直前の負のディスパリティ)によって与えられる。残り3バイト(すなわち、PD1、PD2、PD3)各々のスターティング・ディスパリティは、この参照ポイントと間にある平衡バイトの数とから、並列に動作する回路によってXORおよびXNORゲート720〜724のセットを使用して獲得される。
この信号PBAL012は、ブロックに含まれる最初の3バイト(すなわち、PD0、PD1、PD2)が平衡していれば、高レベルとなる。ワードのエンディング・ディスパリティPNDEWは、ラッチ(図示せず)を介して次のワード・サイクルに渡され、このラッチの出力が次のサイクルのスターティング・ディスパリティPNDFWとなる。1バイトのケースとして図6に示したように、PNDEW信号の生成を次のワード・サイクルまで延期させれば、符号化遅延はこの場合も、XNORゲート1つの遅延の分だけ短縮することができる。
設計者の中には、バイトからバイトへディスパリティを伝播させるディジー・チェーンを実施した者もあったが、その結果、深刻な遅延を招いた。例えば、現在バイトのエンディング・ディスパリティを使用する図7のディスパリティ回路600を、ディスパリティ回路700中で使用した場合、第2の符号器712は、第1の符号器711からのPBALBY0が決まるまで待たなければならなくなる。同様に、第3の符号器713は、第1の符号器711からのPBALBY0と第2の符号器712からのPBALBY1とが決まるまで待たなければならなくなる。これは、各符号器は、その符号器が符号化サイクルを終了させる前に、先行する符号器がそのサイクルを完了させるのを待たなければならないことを意味する。図8の回路は、処理の並列化がより進んでおり、従来設計に比べて高速に処理を行える。
広くいえば、図8には、複数の並列8B/10B符号器を含み、ブロック直前または任意の他の参照ポイントのランニング・ディスパリティ、参照ポイントと当該バイトとの間にある符号化バイトの数、または同じ間隔内の平衡バイトの数が奇数か偶数かに基づいて、複数の符号化10ビット・バイト各々の直前でのスターティング・ディスパリティを決定するブロック符号器が示されている。その間隔内のバイトの数が奇数であり、平衡ベクトルの数も奇数である場合、ランニング・ディスパリティは、参照ポイントでのディスパリティと同じであり、その他の場合は、その補数となる。
G.4バイト符号器用のディスパリティ回路、低速版
次に図9を参照すると、4バイト符号器用のディスパリティ回路800が示されている。このディスパリティ回路800は、4バイト・ワードPD0、PD1、PD2、PD3を並列に処理する4つの8B/10B符号器811、812、813、814を含む。さらに、ディスパリティ回路800の部分として、3つのXNORゲート821、822、823、2つのXORゲート831、832が含まれる。
次に図9を参照すると、4バイト符号器用のディスパリティ回路800が示されている。このディスパリティ回路800は、4バイト・ワードPD0、PD1、PD2、PD3を並列に処理する4つの8B/10B符号器811、812、813、814を含む。さらに、ディスパリティ回路800の部分として、3つのXNORゲート821、822、823、2つのXORゲート831、832が含まれる。
上で論じたように、従来の回路においては、エンディング・ディスパリティPNDEWは1つの同じ符号化サイクル内で導出される。次にただ1つのパラメータを単一のラッチを用いて次のサイクルに渡さなければならない。このラッチのデータ入力はPNDEWであり、次のワード直前でのディスパリティとなる出力はPNDFWである。以下に説明するように、ディスパリティ回路800はディスパリティ回路700に比べて低速である。現在の4バイト・ブロックのエンディング・ディスパリティを決定するディスパリティ回路800の場合、現在ブロックの符号化バイトのディスパリティPBALBY(0、1、2、3)が分からなければならず、これは、符号器811〜814のサイクルが終了しなければならないことを意味する。その後、現在ブロックのエンディング・ディスパリティPNDEWが、XNOR823によって計算される。
例示的な8B/10B符号器について説明した。次に対応する復号器について説明する。
II.10B/8B復号器
復号器は、元のバイトABCDEFGH Kを復元する回路と、伝送コードによって検出可能であるかぎりのすべての伝送エラーを通知する回路とを含む。6B/5B復号化規則が図10に示す表に、4B/3B復号化規則が図13に示す表にまとめられており、それらについて以下に説明する。数個の回路を追加するという犠牲を払って処理をより高速化できるように、分類にいくつかの変更が行われた。
復号器は、元のバイトABCDEFGH Kを復元する回路と、伝送コードによって検出可能であるかぎりのすべての伝送エラーを通知する回路とを含む。6B/5B復号化規則が図10に示す表に、4B/3B復号化規則が図13に示す表にまとめられており、それらについて以下に説明する。数個の回路を追加するという犠牲を払って処理をより高速化できるように、分類にいくつかの変更が行われた。
バイトを復号化するのに必要なビットの変換を、図10および図13に示す表から抜き出し、要約した形式で図14に示す表にまとめる。符号化ビットが、図14の表に記された分類の1つに属し、そのクラスの各々のビット欄に偽を意味する「F」が記されている場合を除いて、復号化ビット「ABCDE FGH」の値はそれぞれ、符号化ビット「abcde fgh」に等しい。
米国特許第4486739号(上で参照により組み込んだ)、および参照によりその開示を本明細書に組み込むウィドマーによる「ANSIファイバ・チャネル伝送コード」、IBMリサーチ・レポート18855(1993)に記載の復号器の論理実装は、必要とされる回路面積を最小に抑える試みである。これは、これらの引例では、復号化やエラー・チェックなど様々な目的のために基本論理定義を再使用することによって実現された。その手法では回路遅延が増大し、非常に高速な応用例向けに最適化されていない。本明細書で説明する高速な実装は、ビット復号化のための個々の分類、ディスパリティ分類DRおよびDUを使用し、これらセットの各々は、IBM CMOS−7Sまたはその他の適切な技術によって遅延を最小に抑えて実施される。
6Bベクトル集合のいくつかは、現在の設計では、集合内の無効ベクトルを許容するようにより大まかに定義され、遅延のより短いより単純な論理項(logic terms)がもたらされる。6B/5B符号化ベクトルは48個であるのに、6ビットでは最大64個の異なるベクトルを有することができるので、無効ベクトルが生成される場合がある。例えば、伝送中に発生したエラーが、無効符号化ベクトルを生じることがある。有効入力については、新しい定義でもこれまで通りに処理するが、無効入力については、異なる結果を生じることがあり、論理モデリングおよび検証においてこのことを考慮に入れるべきである。無効符号化ベクトルを明示的に追加する必要はないので、これらのより包括的なカテゴリも、ディスパリティ規則チェックのクリティカル・パスにおける遅延を短縮する。より包括的な分類を使用することには、利点が2つある。すなわち、実装がより単純になることと、論理項がより少なくなることである。無効バイトが有効バイトに復号化されることがあり得るとしても、それらは無効バイトを判定するのに使用される特別の信号線(すなわち、PINVBY)によってマークされることに留意されたい。
ベクトル集合P3xおよびPx3はそれぞれ、1が3個または4個で0が3個または4個の4ビット・ベクトル「abcd」をすべて含む。これは旧い集合P13およびP31を置き換えたものである。集合P22、P04、P40は、エラー・チェック回路内でのみ使用される。P22はエラー・チェック回路内でP3xおよびPx3から導出される。以下の式は、図10および図13を参照して決定される式であり、図11および図12に記載の復号回路によって実装される。
P40=a・b・c・d
P04=a’・b’・c’・d’
P3x=P31+P40+a・b・c+a・b・d+a・c・d+b・c・d
Px3=P13+P04+a’・b’・c’+a’・b’・d’+a’・c’・d’+b’・c’・d’
P22=P3x’・Px3’
P40=a・b・c・d
P04=a’・b’・c’・d’
P3x=P31+P40+a・b・c+a・b・d+a・c・d+b・c・d
Px3=P13+P04+a’・b’・c’+a’・b’・d’+a’・c’・d’+b’・c’・d’
P22=P3x’・Px3’
ベクトル集合P2xおよびPx2は、ディスパリティ・クラスを定義するのに使用され、それぞれ、1が2個または3個で0が2個または3個の3ビット・ベクトル「abc」をすべて含む。
P2x=P21+P30+a・b+a・c+b・c
Px2=P12+P03+a’・b’+a’・c’+b’・c’
P2x=P21+P30+a・b+a・c+b・c
Px2=P12+P03+a’・b’+a’・c’+b’・c’
図10に示す6B/5B復号化表および図13に示す4B/3B復号化表は、これらの変更を反映するように変更してある。図10および図13において、K=(K28+Kx.7)=(c=d=e=i)+(e≠i)・(i=g=h=j)であることに留意されたい。
A.6B/5B復号器、有効性チェック
復号化ビットA、B、C、D、Eを生成するための論理式は、以下のようにして決定される。一般に、A=a、B=b、C=c、D=d、E=eであるが、図14に示す表に記された条件(「F」によって示す)の場合は、各々の符号化ビットの補数が生成され、A=a’のようになる。
復号化ビットA、B、C、D、Eを生成するための論理式は、以下のようにして決定される。一般に、A=a、B=b、C=c、D=d、E=eであるが、図14に示す表に記された条件(「F」によって示す)の場合は、各々の符号化ビットの補数が生成され、A=a’のようになる。
図11および図12には、単一の回路が示されており、図3および図4についてなされた、入力、出力、共用線名に関する説明が、この場合も同様に適用される。
次に図11を参照すると、復号化/有効性チェック回路1000Aが示されている。復号化/有効性チェック回路1000Aは、インバータ1001A〜1006A、NANDゲート1010A〜1026A、NORゲート1030A〜1032A、ANDゲート1050A〜1052A、XNORゲート1035A〜1040A、XORゲート1045A、1046A、AOブロック1065A、AOIブロック1060A〜1062A、OAIブロック1070Aを含む。
以下の復号化式は、図14に示す表から抜き出したものであり、図11に示す回路によって実装される。
1.A=a’となる場合の必要十分条件
a・b’・c’・d・(e=i)+P3x・i+a’・b・c’・d・(e=i)+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
ブール式の操作を用いて、この論理表現は以下のように変形できる。
(a≠b)・c’・d・(e=i)+P3x・i+Px3・(d・i+e’)+a・b・e・i+c’・d’・e’・i’
図10に示す表を調べると、上式の第1項[(a≠b)・c’・d・(e=i)]は、(a’+b’)・c’・d・(e=i)と変形できる。この変形表現は、やはりビット「a」の補数化を必要とするD7(「1000111」=Px3・d・i)とオーバラップする。そのため、ビット「a=0」を「A=1」に復号化するのに、項Px3・d・iは取り除くことが可能であり、したがって、非クリティカル・パスにおける遅延が短縮できる。しかし、ここに示す例では、ゲートを節約するために、この項を含めてある。図11の回路図に実装されている式は以下のものである。
(a’+b’)・c’・d・(e=i)+P3x・i+Px3・(d・i+e’)+a・b・e・i+c’・d’・e’・i’
図11の論理図では、以下の省略形が使用されている。
n0=(a’+b’)・c’・d・(e=i)=c’・d・(e=i)・n8
n1=Px3・(d・i+e’)
n2=a・b・e・i+c’・d’・e’・i’
n8=(a’+b’)
CPLa=n0+n1+P3x・i+n2、ここで、CPLは補数を表す。
a・b’・c’・d・(e=i)+P3x・i+a’・b・c’・d・(e=i)+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
ブール式の操作を用いて、この論理表現は以下のように変形できる。
(a≠b)・c’・d・(e=i)+P3x・i+Px3・(d・i+e’)+a・b・e・i+c’・d’・e’・i’
図10に示す表を調べると、上式の第1項[(a≠b)・c’・d・(e=i)]は、(a’+b’)・c’・d・(e=i)と変形できる。この変形表現は、やはりビット「a」の補数化を必要とするD7(「1000111」=Px3・d・i)とオーバラップする。そのため、ビット「a=0」を「A=1」に復号化するのに、項Px3・d・iは取り除くことが可能であり、したがって、非クリティカル・パスにおける遅延が短縮できる。しかし、ここに示す例では、ゲートを節約するために、この項を含めてある。図11の回路図に実装されている式は以下のものである。
(a’+b’)・c’・d・(e=i)+P3x・i+Px3・(d・i+e’)+a・b・e・i+c’・d’・e’・i’
図11の論理図では、以下の省略形が使用されている。
n0=(a’+b’)・c’・d・(e=i)=c’・d・(e=i)・n8
n1=Px3・(d・i+e’)
n2=a・b・e・i+c’・d’・e’・i’
n8=(a’+b’)
CPLa=n0+n1+P3x・i+n2、ここで、CPLは補数を表す。
2.B=b’となる場合の必要十分条件
a’・b・c・d’・(e=i)+P3x・i+a・b’・c・d’・(e=i)+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
このブール式を変形すると、
(a≠b)・c・d’・(e=i)+P3x・i+Px3・(d・i+e’)+a・b・e・i+c’・d’・e’・i’
図10に示す表を調べると、第1項(a≠b)・c・d’・(e=i)はやはり、(a+b)・c・d’・(e=i)と簡略化できることが検証できる。しかし、(a≠b)のほうが(a+b)よりも短い遅延で生成できるので、前の表現を使用する。
論理図では、以下の省略形が使用されている。
n3=c・d’・(e=i)・(a≠b)
CPLb=n3+n1+P3x・i+n2
a’・b・c・d’・(e=i)+P3x・i+a・b’・c・d’・(e=i)+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
このブール式を変形すると、
(a≠b)・c・d’・(e=i)+P3x・i+Px3・(d・i+e’)+a・b・e・i+c’・d’・e’・i’
図10に示す表を調べると、第1項(a≠b)・c・d’・(e=i)はやはり、(a+b)・c・d’・(e=i)と簡略化できることが検証できる。しかし、(a≠b)のほうが(a+b)よりも短い遅延で生成できるので、前の表現を使用する。
論理図では、以下の省略形が使用されている。
n3=c・d’・(e=i)・(a≠b)
CPLb=n3+n1+P3x・i+n2
3.C=c’となる場合の必要十分条件
a’・b・c・d’・(e=i)+P3x・i+a’・b・c’・d・(e=i)+a’・b’・e’・i’+Px3・(d・i+e’)+c’・d’・e’・i’
この論理表現は以下のように変形できる。
a’・b・(c≠d)・(e=i)+P3x・i+Px3・(d・i+e’)+e’・i’・(a’・b’・c’・d’)
論理図では、以下の省略形が使用されている。
n4=a’・b・(c≠d)・(e=i)
n5=e’・i’・(a’・b’・c’・d’)
CPLc=n4+n1+P3x・i+n5
a’・b・c・d’・(e=i)+P3x・i+a’・b・c’・d・(e=i)+a’・b’・e’・i’+Px3・(d・i+e’)+c’・d’・e’・i’
この論理表現は以下のように変形できる。
a’・b・(c≠d)・(e=i)+P3x・i+Px3・(d・i+e’)+e’・i’・(a’・b’・c’・d’)
論理図では、以下の省略形が使用されている。
n4=a’・b・(c≠d)・(e=i)
n5=e’・i’・(a’・b’・c’・d’)
CPLc=n4+n1+P3x・i+n5
4.D=d’となる場合の必要十分条件
a・b’・c’・d・(e=i)+P3x・i+a・b’・c・d’・(e=i)+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
この論理表現は以下のように変形できる。
a・b’・(c≠d)・(e=i)+P3x・i+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
論理図では、以下の省略形が使用されている。
n6=a・b’・(c≠d)・(e=i)
CPLd=n6+n1+P3x・i+n2
a・b’・c’・d・(e=i)+P3x・i+a・b’・c・d’・(e=i)+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
この論理表現は以下のように変形できる。
a・b’・(c≠d)・(e=i)+P3x・i+a・b・e・i+Px3・(d・i+e’)+c’・d’・e’・i’
論理図では、以下の省略形が使用されている。
n6=a・b’・(c≠d)・(e=i)
CPLd=n6+n1+P3x・i+n2
5.E=e’となる場合の必要十分条件
a・b’・c’・d・(e=i)+Px3・i’+a’・b・c’・d・(e=i)+a’・b’・e’・i’+Px3・(d・i+e’)+c’・d’・e’・i’
これをブール式の変形によって以下のように変形する。
(a≠b)・c’・d・(e=i)+Px3・(d・i+e’+i’)+e’・i’・(a’・b’+c’・d’)
図10の表を調べると、ビット「a」の「A」への復号化に関して上記で説明したのと同様のオーバラップが見られる。このケースでは、オーバラップを利用して、項Px3・d・iを取り除くことにより、ゲートを節約することができる。したがって、等式は以下のように変形できる。
(a’+b’)・c’・d・(e=i)+Px3・(e’+i’)+e’・i’・(a’・b’+c’・d’)
論理図では、以下の省略形が使用されている。
n7=Px3・(e’+i’)
CPLe=n0+n7+n5
a・b’・c’・d・(e=i)+Px3・i’+a’・b・c’・d・(e=i)+a’・b’・e’・i’+Px3・(d・i+e’)+c’・d’・e’・i’
これをブール式の変形によって以下のように変形する。
(a≠b)・c’・d・(e=i)+Px3・(d・i+e’+i’)+e’・i’・(a’・b’+c’・d’)
図10の表を調べると、ビット「a」の「A」への復号化に関して上記で説明したのと同様のオーバラップが見られる。このケースでは、オーバラップを利用して、項Px3・d・iを取り除くことにより、ゲートを節約することができる。したがって、等式は以下のように変形できる。
(a’+b’)・c’・d・(e=i)+Px3・(e’+i’)+e’・i’・(a’・b’+c’・d’)
論理図では、以下の省略形が使用されている。
n7=Px3・(e’+i’)
CPLe=n0+n7+n5
無効ベクトルR6、INVR6の論理式 全部で16個の無効ベクトルR6がある。
INVR6=P40+P04+P3x・e・i+Px3・e’・i’
INVR6=P40+P04+P3x・e・i+Px3・e’・i’
復号化回路図における接頭辞なしの名称の表記法についての注記。ブール演算子には、符号化図の場合と同じ文字を使用するが、符号化ビットを表すいくつかの小文字adcdeifghjとの混乱を避けるため、大文字(A、O、N、E、UE)で表記する。
B.6B/5Bディスパリティ・チェック
図12には、6B/5Bディスパリティ・チェックを実行するための回路1000Bが示されている。ディスパリティ・チェック回路1000Bは、NANDゲート1001B〜1027B、NORゲート1030B、AOIブロック1040B〜1044Bを含む。
図12には、6B/5Bディスパリティ・チェックを実行するための回路1000Bが示されている。ディスパリティ・チェック回路1000Bは、NANDゲート1001B〜1027B、NORゲート1030B、AOIブロック1040B〜1044Bを含む。
図10の表の「DR」欄には、各6Bベクトルの先頭での必要ディスパリティが記されており、「DRクラス」欄は、各入力ビット・パターンを識別する。上で参照により組み込んだ「ANSIファイバ・チャネル伝送コード」にある従来のDB欄は、DUに変更され、今のところ、ディスパリティ依存ベクトルについてのみエグジット・ディスパリティが正になるか負になるか記されている。ディスパリティ独立ベクトルは、DU欄に何も記されていない。「ANSIファイバ・チャネル伝送コード」の従来の設計では、ディスパリティ独立ベクトルは、入力ディスパリティを出力に渡していた。換言すれば、現在ベクトルがディスパリティ独立ベクトルである場合、現在ベクトルの出力ディスパリティが、入力ディスパリティに設定されていた。本明細書で開示する新しい設計では、ディスパリティ独立ベクトルは、遅延をより短くするために、ディスパリティの目的では無視されバイパスされる。図12に示すDU出力PDUR6およびNDUR6(NPDUR6はPDUR6を反転させたもの)はクリティカル・パス内にあるので、それらについての短い遅延は特に重要である。この目的を達成するために、受信ベクトルを最も効率的な方法でDUクラスに振り分ける専用の「DUクラス」欄が追加され、したがって、ディスパリティ転送またはディスパリティ独立ベクトルの判定は実行されない。
必要入力ディスパリティDRR6の論理式 項PDRR6および項NDRR6はそれぞれ、ベクトル先頭で正または負のランニング・ディスパリティが必要とされるR6ベクトル(すなわち、6ビットの受信ベクトル)を表す。従来の実装とは反対に、P40またはP04で始まるすべての無効ベクトルは、エラー・チェック方式全体でそれらが冗長となるために等式から除外された。換言すれば、P40またはP04で始まるベクトルは無効であるので、それらをディスパリティ決定で使用する理由はない。
PDRR6=Px3・(e’+i’)+a’・b’・c’+(a・b・c)・d’・e’・i’+Px2・e’・i’
NDRR6=P3x・(e+i)+a・b・c+(a’・b’・c’)・d・e・i+P2x・e・i
ブール演算を行い、これを変形する。
PDRR6=Px3・(e’+i’)+a’・b’・c’+e’・i’・[Px2+d’・(a・b・c)’]
NDRR6=P3x・(e+i)+a・b・c+e・i・[P2x+d・(a’・b’・c’)’]
図12では、接頭辞なしの名称について以下の省略形が使用されている。
n20=(a・b・c)’・d’
n21=(a’・b’・c’)’・d
n22=PDRR4・NDRR6’
n23=NDRR4・PDRR6’
PDRR6=Px3・(e’+i’)+a’・b’・c’+(a・b・c)・d’・e’・i’+Px2・e’・i’
NDRR6=P3x・(e+i)+a・b・c+(a’・b’・c’)・d・e・i+P2x・e・i
ブール演算を行い、これを変形する。
PDRR6=Px3・(e’+i’)+a’・b’・c’+e’・i’・[Px2+d’・(a・b・c)’]
NDRR6=P3x・(e+i)+a・b・c+e・i・[P2x+d・(a’・b’・c’)’]
図12では、接頭辞なしの名称について以下の省略形が使用されている。
n20=(a・b・c)’・d’
n21=(a’・b’・c’)’・d
n22=PDRR4・NDRR6’
n23=NDRR4・PDRR6’
バイト・ディスパリティ違反の監視のための論理式 ディスパリティ独立ベクトルR6およびR4のみを有するバイトは、ディスパリティ・チェックの目的では無視される。以下の条件下で、特定のバイトでディスパリティ違反DVBYが発生する。
1.R6ベクトルの必要エントリ・ディスパリティがバイト直前のランニング・ディスパリティと一致しない。
2.R6ベクトルがディスパリティ独立であり、R4ベクトルの必要エントリ・ディスパリティがバイト直前のランニング・ディスパリティと一致しない。
クリティカル・パスでの遅延を短縮させる実装では、ベクトルR6の独立性は判定されない。その代りに、ベクトルR6がランニング・ディスパリティと一致する必要エントリ・ディスパリティを有する場合以外は、ベクトルR4のエントリ・ディスパリティがバイト直前のディスパリティと比較され、一致しない場合、エラーにフラグが立てられる。
ディスパリティ依存R4ベクトルがディスパリティ依存R6ベクトルと一致しないことによる、バイトに内在するディスパリティ違反は、無効バイトの集合中に含まれ、DVBY中には含まれない。したがって、バイトでのディスパリティ違反DVBYは、次式によって与えられる。
DVBY=NDFBY・(PDRR6+PDRR4・NDRR6’)+PDFBY・(NDRR6+NDRR4・PDRR6’)
DVBY=NDFBY・(PDRR6+PDRR4・NDRR6’)+PDFBY・(NDRR6+NDRR4・PDRR6’)
PDFBY項およびNDFBY項はそれぞれ、バイト直前でのランニング・ディスパリティが正または負であることを表す。
必要に応じて、ANDゲート1025B、1024Bと、NDRR6、PDRR6関数とを結合することによって、上式中の1レベルのゲーティング(図12のNANDゲート1027B、1026B)を取り除くことができる。次に2つのAOI222ゲート1043B、1044Bをまず複製し、インバータのない形に変更し、AO2222(すなわち、4つの2入力ANDゲートに、1つの4入力ORゲートが続いたもの)に拡張して、PNDRとPDRを直接生成する。
想定エンディング・ディスパリティPDUR6およびNDUR6の論理式 無効ベクトルPINVR6用およびディスパリティ違反用のエグジット・ディスパリティPDUR6およびNDUR6を生成するための論理式は、上で参照により組み込んだ「ANSIファイバ・チャネル伝送コード」の19ページに記載があり、説明されている。本明細書では、それに単純化を施した。表現PDBR6およびNDBR6については、項P40および項P04をそれぞれ、P40・(e+i)およびP04・(e’+i’)で置き換えた。符号化ドメイン中の項P40および項P04は、少なくとも1つのエラーがあるだけで生成され得る。エラーが1つでかつe=iの場合、R6ベクトルは明らかに最初は平衡していたので、実際のエラー箇所での無効ベクトルの他に、次のディスパリティ依存ベクトルで過剰なコード違反を生成するPDUR6またはNDUR6を生成すべきでない。したがって、
PDUR6=P3x・(e+i)+d・e・i+P2x・e・i=P3x・(e+i)+e・i・(d+P2x)
NDUR6=Px3・(e’+i’)+d’・e’・i’+Px2・e’・i’=Px3・(e’+i’)+e’・i’・(d’+Px2)
PDUR6=P3x・(e+i)+d・e・i+P2x・e・i=P3x・(e+i)+e・i・(d+P2x)
NDUR6=Px3・(e’+i’)+d’・e’・i’+Px2・e’・i’=Px3・(e’+i’)+e’・i’・(d’+Px2)
C.4B/3B復号器、エラー・チェック
図15には、4B/3B伝送コードの復号化およびエラー・チェックを行うための復号化/エラー・チェック回路1300が示されている。復号化およびエラー・チェック回路1300は、インバータ1301〜1308、NANDゲート1310〜1327、NANDN1ゲート1355〜1357、XNORゲート1340〜1346、XORゲート1350、AOブロック1360、AOIブロック1365、OAIブロック1370、1371を含む。
図15には、4B/3B伝送コードの復号化およびエラー・チェックを行うための復号化/エラー・チェック回路1300が示されている。復号化およびエラー・チェック回路1300は、インバータ1301〜1308、NANDゲート1310〜1327、NANDN1ゲート1355〜1357、XNORゲート1340〜1346、XORゲート1350、AOブロック1360、AOIブロック1365、OAIブロック1370、1371を含む。
復号化ビットFGHKの生成のための論理式 一般に、F=f、G=g、H=hであるが、図14の表のエントリにF(偽)とある条件の場合は、各々の符号化ビットの補数が生成され、H=h’のようになる。
図13に示す表では、ラインD/Kx.3(0011)、D/Kx.4(1101)、Dx.7(0001)のすべてについて、符号化クラスが、(f=g)・jに変更された。同様な変更がその他のベクトル分類についても行われた。これによって、図14に示す表にある分類欄の最後の5行の等式が単純化された。この変更により、以下の復号化式が、図14に示す表から抜き出され、図15の復号化/エラー・チェック回路1300によって実施される。
1.F=f’となる場合の必要十分条件
(f≠g)・h・j+(f=g)・j+c’・d’・e’・i’・(h≠j)
論理図では、以下の省略形が使用されている。
m0=f≠g)・h・j
m7=c’・d’・e’・i’・(h≠j)
CPLf=m0+(f=g)・j+m7
(f≠g)・h・j+(f=g)・j+c’・d’・e’・i’・(h≠j)
論理図では、以下の省略形が使用されている。
m0=f≠g)・h・j
m7=c’・d’・e’・i’・(h≠j)
CPLf=m0+(f=g)・j+m7
2.G=g’となる場合の必要十分条件
(f≠g)・h’・j’+(f=g)・j+c’・d’・e’・i’・(h≠j)
CPLg=(f≠g)・h’・j’+(f=g)・j+m7
(f≠g)・h’・j’+(f=g)・j+c’・d’・e’・i’・(h≠j)
CPLg=(f≠g)・h’・j’+(f=g)・j+m7
3.H=h’となる場合の必要十分条件
f・g’・(h=j)+(f=g)・j+c’・d’・e’・i’・(h≠j)
定義。
m2=f・g’・(h=j)
CPLh=m2+(f=g)・j+m7
f・g’・(h=j)+(f=g)・j+c’・d’・e’・i’・(h≠j)
定義。
m2=f・g’・(h=j)
CPLh=m2+(f=g)・j+m7
制御ビットKの論理式
K=(K28+Kx.7)=(c=d=e=i)+(e≠i)・(i=g=h=j)
遅延を短縮するために、上式を以下のように実施する。
K=c・d・e・i+c’・d’・e’・i’+(e≠i)・(i・g・h・j+i’・g’・h’・j’)
論理図では、以下の省略形が使用されている。
m10=i・g・h・j+i’・g’・h’・j’
Kx7=m10・(e≠i)
K=(K28+Kx.7)=(c=d=e=i)+(e≠i)・(i=g=h=j)
遅延を短縮するために、上式を以下のように実施する。
K=c・d・e・i+c’・d’・e’・i’+(e≠i)・(i・g・h・j+i’・g’・h’・j’)
論理図では、以下の省略形が使用されている。
m10=i・g・h・j+i’・g’・h’・j’
Kx7=m10・(e≠i)
R4ベクトル直前での必要ディスパリティの論理式 項PDRR4および項NDRR4はそれぞれ、R4ベクトル直前での正または負の必要ディスパリティを表す。
PDRR4=f・g’+(f≠g)・h’・j’
NDRR4=f・g+(f≠g)・h・j=f・g+m0
PDRR4=f・g’+(f≠g)・h’・j’
NDRR4=f・g+(f≠g)・h・j=f・g+m0
想定エンディング・ディスパリティPDUR4およびNDUR4の論理式
PDUR4=h・j+f・g・(h≠j)
NDUR4=h’・j’+f・g’・(h≠j)
PDUR4=h・j+f・g・(h≠j)
NDUR4=h’・j’+f・g’・(h≠j)
無効ベクトルR4、INVR4の論理式 本質的に無効なR4ベクトルが全部で2つある。すなわち、すべて0またはすべて1(f=g=h=j)のものである。S関数規則違反(e=i=f=g=h)やP22クラスのR6ベクトルをもつKx.7制御文字といった、R6ベクトルとR4ベクトルとの無効な組合せも、この回路複合体(circuit complex)によって検出され、信号INVR4にまとめられる。従来の設計では、これら不適切なR6ベクトルは平衡ベクトルに分類していたため、回路がより複雑になっていた。K28・(f=g=h)文字は、符号化制約から見て有効な制御文字であるが、特殊な符号化回路を必要とするために8B/10Bアルファベットには含まれていない。この文字は無効文字のグループに含まれている。
以下の条件が満たされる場合、無効Kx.7制御文字が受信された。
VKx7=(i・g・h・j+i’・g’・h’・j’)・(e≠i)・P22=m10・(e≠i)・P22
その他の無効R4ベクトルは、信号INVR4にまとめられる。
INVR4=(f=g=h=j)+(e=i=f=g=h)+K28・(f=g=h)+K28’・(i≠g=h=j)
定義。
m5=K28・(f=g=h)
m6=K28’・(i≠g=h=j)
INVR4=(f=g=h=j)+(e=i=f=g=h)+m5+m6
VKx7=(i・g・h・j+i’・g’・h’・j’)・(e≠i)・P22=m10・(e≠i)・P22
その他の無効R4ベクトルは、信号INVR4にまとめられる。
INVR4=(f=g=h=j)+(e=i=f=g=h)+K28・(f=g=h)+K28’・(i≠g=h=j)
定義。
m5=K28・(f=g=h)
m6=K28’・(i≠g=h=j)
INVR4=(f=g=h=j)+(e=i=f=g=h)+m5+m6
D.10B/8B復号器、エラー・チェック
図16には、10B/8B伝送コードの復号化およびエラー・チェックを行うための回路1400が示されている。回路1400は、6B/5B復号ブロック1410、4B/3B復号ブロック1420、インバータ1430、1431、NANDゲート1440、1441、NORゲート1450、OAIブロック1460、1461を含む。6B/5B復号ブロック1410は、図11および図12にそれぞれ示す回路1000Aおよび1000Bである。4B/3B復号ブロック1420は、図15に示す回路である。
図16には、10B/8B伝送コードの復号化およびエラー・チェックを行うための回路1400が示されている。回路1400は、6B/5B復号ブロック1410、4B/3B復号ブロック1420、インバータ1430、1431、NANDゲート1440、1441、NORゲート1450、OAIブロック1460、1461を含む。6B/5B復号ブロック1410は、図11および図12にそれぞれ示す回路1000Aおよび1000Bである。4B/3B復号ブロック1420は、図15に示す回路である。
エラー・レポーティング
この回路1400は、6B/5B復号器1410、4B/3B復号器1420を結合して1バイト復号器としたものであり、本質的に無効なバイトを通知する信号PINVBYを生成する。これには、現在バイトの10個の符号化ビットを検査するたけで明らかとなるディスパリティ違反NDV64が含まれる。信号PVIOLは、現在バイトまたは先行バイトでのエラーに起因することがある現在位置で検出される無効バイトまたはディスパリティ違反NDVBYのいずれかを通知する。
この回路1400は、6B/5B復号器1410、4B/3B復号器1420を結合して1バイト復号器としたものであり、本質的に無効なバイトを通知する信号PINVBYを生成する。これには、現在バイトの10個の符号化ビットを検査するたけで明らかとなるディスパリティ違反NDV64が含まれる。信号PVIOLは、現在バイトまたは先行バイトでのエラーに起因することがある現在位置で検出される無効バイトまたはディスパリティ違反NDVBYのいずれかを通知する。
ディスパリティ・モニタリング
一方または両方のベクトルがディスパリティ依存である場合、バイト末尾での正または負のランニング・ディスパリティを設定するために、PDUBYまたはPNDUBYがそれぞれアサートされる。
PDUBY=PDUR4+PDUR6・NDUR4’
NDUBY=NDUR4+NDUR6・PDUR4’
一方または両方のベクトルがディスパリティ依存である場合、バイト末尾での正または負のランニング・ディスパリティを設定するために、PDUBYまたはPNDUBYがそれぞれアサートされる。
PDUBY=PDUR4+PDUR6・NDUR4’
NDUBY=NDUR4+NDUR6・PDUR4’
E.バイト・ディスパリティ、高速版
表記法
信号名PDFBYおよびNDFBYはそれぞれ、バイト直前での正および負のランニング・ディスパリティを指す。信号名PDUBYおよびNDUBYはそれぞれ、バイトの正または負の想定エグジット・ディスパリティを指し、フロントエンドでのスターティング・ディスパリティとは無関係である。バイトの6Bベクトルと4Bベクトルのどちらもディスパリティ依存でない場合、2つの出力はどちらもアサートされない。
表記法
信号名PDFBYおよびNDFBYはそれぞれ、バイト直前での正および負のランニング・ディスパリティを指す。信号名PDUBYおよびNDUBYはそれぞれ、バイトの正または負の想定エグジット・ディスパリティを指し、フロントエンドでのスターティング・ディスパリティとは無関係である。バイトの6Bベクトルと4Bベクトルのどちらもディスパリティ依存でない場合、2つの出力はどちらもアサートされない。
図17には、10B/8B復号ブロック1510、インバータ1520、1521、OAIブロック1530を含む、バイト・ディスパリティ回路1500が示されている。10B/8B復号ブロック1510は、図16に回路1400として示した回路である。
出力NDFBY、PDUBY、PNDUBYの値は、復号化データ出力と同じクロックで動作する3つのラッチ(図には図示せず)に保存される。ラッチの出力はそれぞれ、NDFBY_LAST、PDUBY_LAST、PNDUBY_LASTと命名されており、次のバイトのスターティング・ディスパリティNDFBYを計算するために使用される。
バイト先頭でのディスパリティを決定するための論理式
PDFBY=PDUBY_LAST+PDFBY_LAST・NDUBY_LAST’
NDFBYとPDFBYとは相補的であること、すなわち、NDFBY=PDFBY’であることに留意されたい。
PDFBY=PDUBY_LAST+PDFBY_LAST・NDUBY_LAST’
NDFBYとPDFBYとは相補的であること、すなわち、NDFBY=PDFBY’であることに留意されたい。
PDUBYとNDUBYとは排他的な関係にあり、共に真でないか、一方のみが真であるかである。
図17の回路は、先行バイト先頭でのランニング・ディスパリティおよび先行バイトのエグジット・ディスパリティが、現在のサイクルの計算中に使用されるという点で、図6の回路と同じであり、これによって、処理が高速化している。
F.バイト・ディスパリティ、低速版
図18には、バイト末尾でのランニング・ディスパリティを生成するための、低速版の回路1600が示されている。回路1600は、10B/8B復号器1610(基本的に復号器1510と同等)、インバータ1620、1621、OAIブロック1630を含む。
図18には、バイト末尾でのランニング・ディスパリティを生成するための、低速版の回路1600が示されている。回路1600は、10B/8B復号器1610(基本的に復号器1510と同等)、インバータ1620、1621、OAIブロック1630を含む。
低速版を使用する動機は、2つのラッチを節約することにある。タイミングがあまり重要でない場合、復号化およびエラー・チェックと同じサイクル内で、エンディング・ディスパリティPDEBYを生成する。そのため、このただ1つのパラメータを、従来の方式で次のサイクルに渡さなければならない。このラッチの出力(ラッチは図示せず)は、新しいバイトの直前でのディスパリティである信号PDFBYである。最長の遅延パスがPDEBY出力へのパスである場合、1個のインバータと1個のOAI21ゲートに伴う遅延がクリティカル・パスに追加される。
回路1600は、現在バイト末尾でのディスパリティと共に先行バイト末尾でのランニング・ディスパリティを使用するので、より低速になる。
G.4バイト・ワード復号器
図19には、4バイト・ワード復号器が示されている。4バイト・ワード復号器1700は、10B/8B復号ブロック1710、1711、1712、1713、インバータ1720〜1727、NORゲート1730〜1734、OAIブロック1740〜1742、AOブロック1750〜1752を含む。
図19には、4バイト・ワード復号器が示されている。4バイト・ワード復号器1700は、10B/8B復号ブロック1710、1711、1712、1713、インバータ1720〜1727、NORゲート1730〜1734、OAIブロック1740〜1742、AOブロック1750〜1752を含む。
表記法
信号名PDFBY0およびNDFBY0はそれぞれ、バイト#0の直前での正および負のディスパリティを指す。
信号名PDFBY0およびNDFBY0はそれぞれ、バイト#0の直前での正および負のディスパリティを指す。
信号名PDUBY0およびNDUBY0はそれぞれ、バイト#0の正または負の想定エグジット・ディスパリティを指す。バイトの6Bベクトルと4Bベクトルのどちらもディスパリティ依存でない場合、2つの出力のどちらもアサートされない。
出力PDFBY3、PNDFBY3、PDUBY3の値はそれぞれ、信号PDFBY3_LAST、PNDFBY3_LAST、PDUBY3_LAST、PNDUBY3を提供するラッチ(図示せず)に保存され、これらの信号は、図の上部で、次のワード・サイクルのためのスターティング・ディスパリティPDFBY0およびPNDFBY0を計算するために使用される。
バイト先頭でのディスパリティを決定するための論理式
PDFBY0=PDUBY3_LAST+PDFBY3_LAST・NDUBY3_LAST’
NDFBY0=NDUBY3_LAST+NDFBY3_LAST・PDUBY3_LAST’
PDFBY0とNDFBY0とは相補的であるが、PDUBY3とNDUBY3とは排他的な関係にあり、共に真でないか、一方のみが真であるかである。
PDFBY0=PDUBY3_LAST+PDFBY3_LAST・NDUBY3_LAST’
NDFBY0=NDUBY3_LAST+NDFBY3_LAST・PDUBY3_LAST’
PDFBY0とNDFBY0とは相補的であるが、PDUBY3とNDUBY3とは排他的な関係にあり、共に真でないか、一方のみが真であるかである。
回路遅延を最小に抑えるため、バイト#1、バイト#2、バイト#3の直前でのディスパリティ値は、バイトからバイトへ順次決定されるのではなく、バイト#0直前のディスパリティと間にあるバイトによって引き起こされたディスパリティの変化とに基づいて決定される。
PDFBY1=PDUBY0+PDFBY0・NDUBY0’
NDFBY1=NDUBY0+NDFBY0・PDUBY0’
PDFBY2=PDUBY1+PDUBY0・NDUBY1’+PDFBY0・NDUBY0’・NDUBY1’
n0=NDUBY0+NDUBY1
PDFBY2=PDUBY1+PDUBY0・NDUBY1’+PDFBY0・n0’
NDFBY2=NDUBY1+NDUBY0・PDUBY1’+NDFBY0・PDUBY0’・PDUBY1’
n1=PDUBY0+PDUBY1
NDFBY2=NDUBY1+NDUBY0・PDUBY1’+NDFBY0・n1’
PDFBY3=PDUBY2+PDUBY1・NDUBY2’+PDUBY0・NDUBY1’・NDUBY2’・PDFBY0・NDUBY0’・NDUBY1’・NDUBY2’
n2=NDUBY0+NDUBY1+NDUBY2
n3=NDUBY1+NDUBY2
PDFBY3=PDUBY2+PDUBY1・NDUBY2’+PDUBY0・n3’・PDFBY0・n2’
NDFBY3=NDUBY2+NDUBY1・PDUBY2’+NDUBY0・PDUBY1’・PDUBY2’・NDFBY0・PDUBY0’・PDUBY1’・PDUBY2’
n4=PDUBY0+PDUBY1+PDUBY2
n5=PDUBY1+PDUBY2
NDFBY3=NDUBY2+NDUBY1 PDUBY2’+NDUBY0・n5’・NDFBY0・n4’
PDFBY1=PDUBY0+PDFBY0・NDUBY0’
NDFBY1=NDUBY0+NDFBY0・PDUBY0’
PDFBY2=PDUBY1+PDUBY0・NDUBY1’+PDFBY0・NDUBY0’・NDUBY1’
n0=NDUBY0+NDUBY1
PDFBY2=PDUBY1+PDUBY0・NDUBY1’+PDFBY0・n0’
NDFBY2=NDUBY1+NDUBY0・PDUBY1’+NDFBY0・PDUBY0’・PDUBY1’
n1=PDUBY0+PDUBY1
NDFBY2=NDUBY1+NDUBY0・PDUBY1’+NDFBY0・n1’
PDFBY3=PDUBY2+PDUBY1・NDUBY2’+PDUBY0・NDUBY1’・NDUBY2’・PDFBY0・NDUBY0’・NDUBY1’・NDUBY2’
n2=NDUBY0+NDUBY1+NDUBY2
n3=NDUBY1+NDUBY2
PDFBY3=PDUBY2+PDUBY1・NDUBY2’+PDUBY0・n3’・PDFBY0・n2’
NDFBY3=NDUBY2+NDUBY1・PDUBY2’+NDUBY0・PDUBY1’・PDUBY2’・NDFBY0・PDUBY0’・PDUBY1’・PDUBY2’
n4=PDUBY0+PDUBY1+PDUBY2
n5=PDUBY1+PDUBY2
NDFBY3=NDUBY2+NDUBY1 PDUBY2’+NDUBY0・n5’・NDFBY0・n4’
図19の回路1700の実装において、以下の関係を有利に使用する。
PNDFBY1=PDFBY1’
PNDFBY2=PDFBY2’
PNDFBY1=PDFBY1’
PNDFBY2=PDFBY2’
これらの信号はクリティカル・パス内にはなく、反転を追加しても、最大速度は低下しない。タイミングに十分な余裕がある応用例では、信号PNDFBY3とおそらくPDFBY3’についても、それら2つの信号の各々について反転を1回行うという犠牲を払うことによって、同様の単純化が利用できる。
本明細書に示し説明した実施形態および変形例は、本発明の原理を説明するためのものにすぎず、本発明の範囲および趣旨から逸脱することなく、様々な変更が実施できることは当業者であれば理解できよう。
300A 符号化回路
300B ディスパリティ制御回路
380A AND−OR−INVERT(AOI)ブロック
500 ディスパリティ回路
510 8B/10B符号器
600 ディスパリティ回路
610 8B/10B符号器
700 ディスパリティ回路
711 8B/10B符号器
712 8B/10B符号器
713 8B/10B符号器
714 8B/10B符号器
800 ディスパリティ回路
811 8B/10B符号器
812 8B/10B符号器
813 8B/10B符号器
814 8B/10B符号器
1000A 復号化および有効性チェック回路
1000B ディスパリティ・チェック回路
1300 復号化およびエラー・チェック回路
1400 復号化およびエラー・チェック回路
1410 6B/5B復号ブロック
1420 4B/3B復号ブロック
1500 バイト・ディスパリティ回路
1510 10B/8B復号ブロック
1600 ランニング・ディスパリティ生成回路(低速版)
1610 10B/8B復号器
1700 4バイト・ワード復号器
1710 10B/8B復号ブロック
1711 10B/8B復号ブロック
1712 10B/8B復号ブロック
1713 10B/8B復号ブロック
300B ディスパリティ制御回路
380A AND−OR−INVERT(AOI)ブロック
500 ディスパリティ回路
510 8B/10B符号器
600 ディスパリティ回路
610 8B/10B符号器
700 ディスパリティ回路
711 8B/10B符号器
712 8B/10B符号器
713 8B/10B符号器
714 8B/10B符号器
800 ディスパリティ回路
811 8B/10B符号器
812 8B/10B符号器
813 8B/10B符号器
814 8B/10B符号器
1000A 復号化および有効性チェック回路
1000B ディスパリティ・チェック回路
1300 復号化およびエラー・チェック回路
1400 復号化およびエラー・チェック回路
1410 6B/5B復号ブロック
1420 4B/3B復号ブロック
1500 バイト・ディスパリティ回路
1510 10B/8B復号ブロック
1600 ランニング・ディスパリティ生成回路(低速版)
1610 10B/8B復号器
1700 4バイト・ワード復号器
1710 10B/8B復号ブロック
1711 10B/8B復号ブロック
1712 10B/8B復号ブロック
1713 10B/8B復号ブロック
Claims (38)
- 任意のベクトルの境界でプラス1またはマイナス1のランニング・ディスパリティをもつ平衡2進コードについて、現在のベクトルの境界でのランニング・ディスパリティを決定するための方法であって、
先行する参照ポイントと前記現在のベクトルの境界の間にある不平衡ベクトルの数が奇数である場合、前記ランニング・ディスパリティを前記先行する参照ポイントでのディスパリティの相補的なディスパリティに設定するステップと、
前記先行する参照ポイントと前記現在のベクトルの境界の間にある不平衡ベクトルの数が偶数である場合、前記ランニング・ディスパリティを前記先行する参照ポイントでの前記ディスパリティに設定するステップとを含む方法。 - 前記先行する参照ポイントと前記現在のベクトルの境界の間にあるベクトルの数が偶数であるか奇数であるかを判定するステップをさらに含む、請求項1に記載の方法。
- 前記方法の前記ステップの各々が複数のサブステップを含み、前記方法のステップの1つまたは複数に含まれる前記サブステップの少なくとも1つが、次の符号化サイクル内で実行され、現在の符号化サイクルで保存された前記参照ポイントでの前記ディスパリティの保存値と、前記参照ポイントと前記現在のベクトルの境界の間にあるベクトルのディスパリティ特性の保存値とに基づいて実行される、請求項2に記載の方法。
- 前記先行する参照ポイントと前記現在のベクトルの境界の間にあるベクトルの数が偶数である場合に、
前記先行する参照ポイントと前記現在のベクトルの境界の間にある平衡ベクトルの数が偶数であるか奇数であるかを判定するステップと、
平衡ベクトルの数が偶数である場合、前記参照ポイントでの前記ディスパリティと一致する前記ランニング・ディスパリティを設定するステップと、
平衡ベクトルの数が奇数である場合、前記ランニング・ディスパリティを前記参照ポイントでの前記ディスパリティの補数に設定するステップとをさらに含む、請求項2に記載の方法。 - 前記方法の前記ステップの少なくとも1つが、次の符号化サイクル内で実行され、現在の符号化サイクルで保存された前記参照ポイントでの前記ディスパリティの保存値と、前記参照ポイントと前記現在のベクトルの境界の間にあるベクトルのディスパリティ特性の保存値とに基づいて実行される、請求項4に記載の方法。
- 前記方法の前記ステップのすべてが次の符号化サイクル内で実行される、請求項5に記載の方法。
- 前記先行する参照ポイントと前記現在のベクトルの境界の間にあるベクトルの数が奇数である場合に、
前記先行する参照ポイントと前記現在のベクトルの境界の間にある平衡ベクトルの数が偶数であるか奇数であるかを判定するステップと、
平衡ベクトルの数が奇数である場合、前記参照ポイントでの前記ディスパリティと一致する前記ランニング・ディスパリティを設定するステップと、
平衡ベクトルの数が偶数である場合、前記参照ポイントでの前記ディスパリティの補数に前記ランニング・ディスパリティを設定するステップとをさらに含む、請求項2に記載の方法。 - 前記方法の前記ステップの少なくとも1つが、次の符号化サイクル内で実行され、現在の符号化サイクルで保存された前記参照ポイントでの前記ディスパリティの保存値と、前記参照ポイントと前記現在のベクトルの境界の間にあるベクトルのディスパリティ特性の保存値とに基づいて実行される、請求項7に記載の方法。
- 前記方法の前記ステップのすべてが次の符号化サイクル内で実行される、請求項8に記載の方法。
- 5ビットのソース・ベクトルを6ビットの符号化ベクトルに符号化するとともに3ビットのソース・ベクトルを4ビットの符号化ベクトルに符号化することによって、8ビットの入力から10ビットの符号化バイトを生成するように適合された8B/10B符号器と、
先行符号化バイトの直前でのランニング・ディスパリティと前記先行符号化バイトが平衡しているかどうかを表す1ビットのパラメータの値とに基づいて、符号化バイトの直前でのスターティング・ディスパリティを決定するように適合されたディスパリティ回路とを含む符号化回路。 - 前記8B/10B符号器が5B/6B符号化回路をさらに含み、前記5B/6B符号化回路が、5ビットのソース・ベクトルについて、第3ビットが1であること、または先頭4ビットが値0であること、または先頭3ビットは値0であり末尾ビットは1であることを検出した場合に、6ビット符号化ベクトルの第3符号化ビットを1に設定するように適合される、請求項10に記載の回路。
- 前記5B/6B符号化回路が、5ビットのソース・ベクトルについて、末尾ビットは値1であるが先頭4ビットは3個の0に1が続く形でないこと、または後方2ビットは共に値0であり先頭3ビット中の1ビットは値1であること、または先頭3ビットは値0であり第4ビットは値1で末尾ビットは値0であることを検出した場合に、6ビット符号化ベクトルの第5符号化ビットを1に設定するように適合される、請求項11に記載の回路。
- 前記5B/6B符号化回路が、5ビットのソース・ベクトルについて、末尾2ビットは値0であり先頭3ビット中の1ビットは値0であること、または制御入力が値1であるか、1対の末尾ビットが互いに等しくなくかつ先頭3ビット中の1ビットが値1であるかのいずれかであること、または先頭4ビットは値0であり末尾ビットは値1であること、または5ビットすべてが値1であることを検出した場合に、6ビット符号化ベクトルの末尾符号化ビットを値1に設定するように適合される、請求項12に記載の回路。
- 前記5B/6B符号化回路が、5ビットのソース・ベクトルについて、先頭3ビットは値0であり末尾ビットは値0であること、先頭3ビットは値0であり第4ビットは値1であること、先頭4ビットは値1であり末尾ビットは値0であること、末尾2ビットは値0であり先頭3ビット中の1ビットは値1であることを検出した場合に、6ビット符号化ベクトルのフロントエンドで正のランニング・ディスパリティが必要とされていると判定するように適合される、請求項13に記載の回路。
- 前記5B/6B符号化回路が、5ビットのソース・ベクトルについて、先頭3ビットと末尾ビットが値1であること、先頭3ビットは値1であり第4ビットは値0であること、先頭4ビットは値0であり末尾ビットは値1であること、末尾2ビットは値1であり先頭3ビット中の1ビットは値0であること、または制御線が値1であることを検出した場合に、6ビット符号化ベクトルのフロントエンドで負のランニング・ディスパリティが必要とされていると判定するように適合される、請求項14に記載の回路。
- 前記5B/6B符号化回路が、5ビットのソース・ベクトルについて、先頭3ビット中の1ビットは値0であり末尾2ビットの少なくとも一方は値0であること、先頭3ビット中の1ビットは値1であり末尾2ビットの少なくとも一方は値1であり制御入力は値0であること、先頭3ビットは値1であり1対の末尾ビットは値0であることを検出した場合に、6ビット符号化ベクトルが平衡していると判定するように適合される、請求項15に記載の回路。
- 前記8B/10B符号器が3B/4B符号化回路をさらに含み、前記3B/4B符号化回路が、3ビットのソース・ベクトルの先頭2ビットの値が等しくないこと、または先頭2ビットが共に値1であり末尾ビットが値0であることを検出した場合に、4ビット符号化ベクトルが平衡していると判定するように適合される、請求項10に記載の回路。
- 並列で動作する複数の8B/10B符号器であって、その各々が、5ビットのソース・ベクトルを6ビットの符号化ベクトルに符号化するとともに3ビットのソース・ベクトルを4ビットの符号化ベクトルに符号化することによって、8ビットの入力から10ビットの符号化バイトを生成する8B/10B符号器と、
参照ポイントでのランニング・ディスパリティと、前記参照ポイントと1つの10ビット符号化バイトとの間にある符号化バイトの数が奇数であるか偶数であるかと、前記参照ポイントと前記1つの10ビット符号化バイトとの間にある平衡バイトの数が奇数であるか偶数であるかとに基づいて、前記1つの10ビット符号化バイトの直前でのスターティング・ディスパリティを決定するように適合されるディスパリティ回路とを含むブロック符号器。 - 前記ディスパリティ回路が、前記参照ポイントと前記1つの10ビット符号化バイトとの間にあるバイトの数が奇数であり、前記参照ポイントと前記1つの10ビット符号化バイトとの間にある平衡ベクトルの数も奇数である場合、前記ランニング・ディスパリティを前記参照ポイントでのディスパリティに等しく設定するように適合され、平衡ベクトルの数が偶数である場合、前記ランニング・ディスパリティを前記参照ポイントでのディスパリティの補数に設定するように適合される、請求項18に記載のブロック符号器。
- 前記ディスパリティ回路が、前記参照ポイントと前記1つの10ビット符号化バイトとの間にあるバイトの数が偶数であり、前記参照ポイントと前記1つの10ビット符号化バイトとの間にある平衡ベクトルの数も偶数である場合、前記ランニング・ディスパリティを前記参照ポイントでのディスパリティに等しく設定するように適合され、平衡ベクトルの数が奇数である場合、前記ランニング・ディスパリティを前記参照ポイントでのディスパリティの補数に設定するように適合される、請求項18に記載のブロック符号器。
- 任意のバイトの境界でプラス1またはマイナス1のランニング・ディスパリティをもつ平衡2進コードについて、バイトの直前でのディスパリティ違反を検出するための方法であって、
前記バイトの必要フロントエンド・ディスパリティを決定するステップと、
実際のランニング・ディスパリティを2つ先行するディスパリティ依存バイトのエグジット・ディスパリティに等しく設定することによって、前記バイトの前記必要フロントエンド・ディスパリティを前記実際のランニング・ディスパリティと比較するステップとを含む方法。 - 10B/8B符号化コードを復号化するための回路であって、
6ビットの符号化ベクトルを5ビットのソース・ベクトルに復号化するとともに4ビットの符号化ベクトルを3ビットのソース・ベクトルに復号化することによって、10ビットの符号化バイトから8ビットの復号化バイトを生成するように適合される10B/8B復号器と、
実際のランニング・ディスパリティを2つ先行するディスパリティ依存バイトのエグジット・ディスパリティに等しく設定することによって、10ビット符号化バイトの必要フロントエンド・ディスパリティを前記実際のランニング・ディスパリティと比較するように適合されるディスパリティ回路とを含む回路。 - 前記10B/8B復号器が6B/5B復号化回路をさらに含み、前記6B/5B復号化回路が、6ビット符号化ベクトルについて、以下の5種のビットの構成のいずれか、すなわち(1)1対の末尾ビットの値が互いに等しく、第4ビットは値1であり、第3ビットは値0であり、1対の先頭ビットの少なくとも一方は値0であること、または(2)先頭4ビットの3個または4個のビットは値1であり、末尾ビットは値1であること、または(3)先頭4ビットの3個または4個のビットは値0であって、第5ビットが値0であるか、または第4および末尾位置が値1であること、または(4)1対の先頭および末尾ビットがすべて値1であること、または(5)末尾4ビットがすべて値0であることを検出した場合に、前記6B/5B復号化回路が、6ビット符号化ベクトルの先頭符号化ビットの補数をとるように適合される、請求項22に記載の回路。
- 前記6B/5B復号化回路が、6ビット符号化ベクトルについて、以下の5種のビットの構成のいずれか、すなわち(1)1対の末尾ビットの値が互いに等しく、1対の先頭ビットの値が互いに等しくなく、第3ビットは値1であり、第4ビットは値0であること、または(2)先頭4ビットの3個または4個のビットは値1であり、末尾ビットは値1であること、または(3)先頭4ビットの3個または4個のビットは値0であって、第5ビットが値0であるか、または第4および末尾位置が値1であること、または(4)1対の先頭および末尾ビットがすべて値1であること、または(5)末尾4ビットがすべて値0であることを検出した場合に、6ビット符号化ベクトルの第2符号化ビットの補数をとるように適合される、請求項23に記載の回路。
- 前記6B/5B復号化回路が、6ビット符号化ベクトルについて、以下の5種のビットの構成のいずれか、すなわち(1)1対の末尾ビットの値が互いに等しく、第3および第4ビットの値が互いに等しくなく、先頭ビットは値0であり、第2ビットは値1であること、または(2)先頭4ビットの3個または4個のビットは値1であり、末尾ビットは値1であること、または(3)先頭4ビットの3個または4個のビットは値0であって、第5ビットが値0であるか、または第4および末尾位置が値1であること、または(4)1対の先頭および末尾ビットがすべて値0であること、または(5)末尾4ビットがすべて値0であることを検出した場合に、6ビット符号化ベクトルの第3符号化ビットの補数をとるように適合される、請求項24に記載の回路。
- 前記6B/5B復号化回路が、6ビット符号化ベクトルについて、以下の5種のビットの構成のいずれか、すなわち(1)1対の末尾ビットの値が互いに等しく、第3および第4ビットの値が互いに等しくなく、第1ビットは値1であり、第2ビットは値0であること、または(2)先頭4ビットの3個または4個のビットは値0であり、末尾ビットは値1であること、または(3)先頭4ビットの3個または4個のビットは値0であって、第5ビットが値0であるか、または第4および末尾位置が値1であること、または(4)1対の先頭および末尾ビットがすべて値1であること、または(5)末尾4ビットがすべて値0であることを検出した場合に、6ビット符号化ベクトルの第4符号化ビットの補数をとるように適合される、請求項25に記載の回路。
- 前記6B/5B復号化回路が、6ビット符号化ベクトルについて、以下の4種のビットの構成のいずれか、すなわち(1)1対の末尾ビットの値が互いに等しく、第4ビットは値1であり、第3ビットは値0であり、1対の先頭ビットの少なくとも一方が0であること、または(2)先頭4ビットの3個または4個のビットは値0であり、1対の末尾ビットの少なくとも一方が0であること、または(3)1対の先頭および末尾ビットがすべて値0であること、または(4)末尾4ビットがすべて値0であることを検出した場合に、6ビット符号化ベクトルの第5符号化ビットの補数をとるように適合される、請求項26に記載の回路。
- 前記4B/3B復号化回路が3B/4B復号器をさらに含み、前記3B/4B復号化回路が、4ビット符号化ベクトルについて、以下の3種のビットの構成のいずれか、すなわち(1)1対の先頭ビットの値が互いに等しくなく、1対の末尾ビットは値1であること、または(2)1対の先頭ビットの値が互いに等しく、末尾ビットは値1であること、または(3)1対の末尾ビットの値が互いに等しくなく、先行する6ビット・ベクトルの末尾4ビットがすべて値0であることを検出した場合に、4ビット符号化ベクトルの先頭符号化ビットの補数をとるように適合される、請求項22に記載の回路。
- 前記3B/4B復号化回路が、4ビット符号化ベクトルについて、以下の3種のビットの構成のいずれか、すなわち(1)1対の先頭ビットの値が互いに等しくなく、1対の末尾ビットは値0であること、または(2)1対の先頭ビットの値が互いに等しく、末尾ビットは値1であること、または(3)1対の末尾ビットの値が互いに等しくなく、先行する6ビット・ベクトルの末尾4ビットがすべて値0であることを検出した場合に、4ビット符号化ベクトルの第2符号化ビットの補数をとるように適合される、請求項28に記載の回路。
- 前記3B/4B復号化回路が、4ビット符号化ベクトルについて、以下の3種のビットの構成のいずれか、すなわち(1)1対の末尾ビットの値が互いに等しく、先頭ビットは値1であり、第2ビットは値0であること、または(2)1対の先頭ビットの値が互いに等しく、末尾ビットは値1であること、または(3)1対の末尾ビットの値が互いに等しくなく、先行する6ビット・ベクトルの末尾4ビットがすべて値0であることを検出した場合に、4ビット符号化ベクトルの第3符号化ビットの補数をとるように適合される、請求項29に記載の回路。
- 前記10B/8B復号化回路が6Bディスパリティ・エラー検出回路をさらに含み、前記6Bディスパリティ・エラー検出回路が、6ビット符号化ベクトルについて、以下の4種のビットの構成のいずれか、すなわち(1)先頭4ビットの3個または4個のビットは値0であり、1対の末尾ビットの少なくとも一方が0であること、または(2)先頭3ビットがすべて値0であること、または(3)先頭3ビットの2個または3個のビットは値0であり、1対の末尾ビットが値0であること、または(4)末尾3ビットはすべて値0であり、先頭3ビットはすべてが1にはならないことを検出した場合に、任意の6ビット符号化ベクトルに正の必要フロントエンド・ディスパリティを割り当てるように適合される、請求項22に記載の回路。
- 前記6Bディスパリティ・エラー検出回路が、6ビット符号化ベクトルについて、以下の4種のビットの構成のいずれか、すなわち(1)先頭4ビットの3個または4個のビットは値1であり、1対の末尾ビットの少なくとも一方が1であること、または(2)先頭3ビットがすべて値1であること、または(3)先頭3ビットの2個または3個のビットは値1であり、1対の末尾ビットが値1であること、または(4)末尾3ビットはすべて値1であり、先頭3ビットはすべてが0にはならないことを検出した場合に、任意の6ビット符号化ベクトルに負の必要フロントエンド・ディスパリティを割り当てるように適合される、請求項31に記載の回路。
- 前記6Bディスパリティ・エラー検出回路が、6ビット符号化ベクトルについて、以下の3種のビットの構成のいずれか、すなわち(1)先頭4ビットの3個または4個のビットは値1であり、1対の末尾ビットの少なくとも一方が値1であること、または(2)末尾3ビットがすべて値1であること、または(3)先頭3ビットの2個または3個のビットは値1であり、1対の末尾ビットが値1であることを検出した場合に、任意の6ビット符号化ベクトルに正のエグジット・ディスパリティを割り当てるように適合される、請求項32に記載の回路。
- 前記6Bディスパリティ・エラー検出回路が、6ビット符号化ベクトルについて、以下の3種のビットの構成のいずれか、すなわち(1)先頭4ビットの3個または4個のビットは値0であり、1対の末尾位置の少なくとも一方が値0であること、または(2)末尾3ビットがすべて値0であること、または(3)先頭3ビットの2個または3個のビットは値0であり、1対の末尾ビットが値0であることを検出した場合に、任意の6ビット符号化ベクトルに負のエグジット・ディスパリティを割り当てるように適合される、請求項33に記載の回路。
- 前記10B/8B復号化回路が4Bディスパリティ・エラー検出回路をさらに含み、前記4Bディスパリティ・エラー検出回路が、4ビット符号化ベクトルについて、以下の2種のビットの構成のいずれか、すなわち(1)1対の先頭ビットが値0であること、または(2)1対の末尾ビットが値0であり、1対の先頭ビットの値が互いに等しくないことを検出した場合に、任意の4ビット符号化ベクトルに正の必要フロントエンド・ディスパリティを割り当てるように適合される、請求項22に記載の回路。
- 前記4Bディスパリティ・エラー検出回路が、4ビット符号化ベクトルについて、以下の2種のビットの構成のいずれか、すなわち(1)1対の先頭ビットが値1であること、または(2)1対の末尾ビットが値1であり、1対の先頭ビットの値が互いに等しくないことを検出した場合に、任意の4ビット符号化ベクトルに負の必要フロントエンド・ディスパリティを割り当てるように適合される、請求項35に記載の回路。
- 前記4Bディスパリティ・エラー検出回路が、4ビット符号化ベクトルについて、以下の2種のビットの構成のいずれか、すなわち(1)1対の末尾ビットが値1であること、または(2)1対の先頭ビットが値1であり、1対の末尾ビットの値が互いに等しくないことを検出した場合に、任意の4ビット符号化ベクトルに正のエグジット・ディスパリティを割り当てるように適合される、請求項36に記載の回路。
- 前記4Bディスパリティ・エラー検出回路が、4ビット符号化ベクトルについて、以下の2種のビットの構成のいずれか、すなわち(1)1対の末尾ビットが値0であること、または(2)1対の先頭ビットが値0であり、1対の末尾ビットの値が互いに等しくないことを検出した場合に、任意の4ビット符号化ベクトルに負のエグジット・ディスパリティを割り当てるように適合される、請求項37に記載の回路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28955601P | 2001-05-08 | 2001-05-08 | |
US60/289,556 | 2001-05-08 | ||
PCT/US2002/013798 WO2002091586A2 (en) | 2001-05-08 | 2002-04-30 | 8b/10b encoding and decoding for high speed applications |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005513823A JP2005513823A (ja) | 2005-05-12 |
JP2005513823A6 true JP2005513823A6 (ja) | 2005-08-04 |
JP3851274B2 JP3851274B2 (ja) | 2006-11-29 |
Family
ID=23112037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002587933A Expired - Fee Related JP3851274B2 (ja) | 2001-05-08 | 2002-04-30 | 高速アプリケーションのための8b/10b符号化および復号化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6977599B2 (ja) |
EP (1) | EP1391040A2 (ja) |
JP (1) | JP3851274B2 (ja) |
CN (1) | CN100553150C (ja) |
AU (1) | AU2002305315A1 (ja) |
WO (1) | WO2002091586A2 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7307554B2 (en) * | 2004-12-20 | 2007-12-11 | Kawasaki Microelectronics, Inc. | Parallel data transmission method and parallel data transmission system |
US7801206B2 (en) * | 2005-04-29 | 2010-09-21 | Tektronix, Inc. | Encoded serial data bit error detector |
US7292161B2 (en) * | 2005-05-31 | 2007-11-06 | International Business Machines Corporation | NB/MB coding apparatus and method using both disparity independent and disparity dependent encoded vectors |
KR101490327B1 (ko) | 2006-12-06 | 2015-02-05 | 퓨전-아이오, 인크. | 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법 |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8443134B2 (en) | 2006-12-06 | 2013-05-14 | Fusion-Io, Inc. | Apparatus, system, and method for graceful cache device degradation |
US8706968B2 (en) | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US7405679B1 (en) | 2007-01-30 | 2008-07-29 | International Business Machines Corporation | Techniques for 9B10B and 7B8B coding and decoding |
DE102007053811A1 (de) * | 2007-11-12 | 2009-05-14 | Robert Bosch Gmbh | Verfahren zum Übertragen von Daten |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US8316277B2 (en) * | 2007-12-06 | 2012-11-20 | Fusion-Io, Inc. | Apparatus, system, and method for ensuring data validity in a data storage process |
JP2009272909A (ja) | 2008-05-08 | 2009-11-19 | Hoya Corp | デジタル映像信号送信装置、受信装置およびシステム |
US7852242B2 (en) * | 2008-05-15 | 2010-12-14 | Taiwan Semiconductor Manufacturing Company, Ltd. | Increasing 8B/10B coding speed using a disparity look-ahead table |
JP5999645B2 (ja) | 2009-09-08 | 2016-10-05 | ロンギチュード エンタープライズ フラッシュ エスエイアールエル | ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 |
US9092337B2 (en) | 2011-01-31 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
CN102957492B (zh) * | 2011-08-18 | 2015-05-13 | 盛科网络(苏州)有限公司 | 实现64b/67b编码边界锁定的方法及装置 |
CN103199866B (zh) * | 2012-01-06 | 2017-03-15 | 上海华虹集成电路有限责任公司 | 基于rd‑的8b/10b解码电路 |
US9251052B2 (en) | 2012-01-12 | 2016-02-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US10359972B2 (en) | 2012-08-31 | 2019-07-23 | Sandisk Technologies Llc | Systems, methods, and interfaces for adaptive persistence |
US10019353B2 (en) | 2012-03-02 | 2018-07-10 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for referencing data on a storage medium |
RU2485580C1 (ru) * | 2012-03-22 | 2013-06-20 | Закрытое акционерное общество Научно-производственный Центр "Микропроцессорные технологии" | Коммуникационное устройство для гальванической развязки ds-линка |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9197368B2 (en) * | 2013-09-24 | 2015-11-24 | Broadcom Corporation | Inband management of ethernet links |
RU2700560C1 (ru) * | 2018-06-19 | 2019-09-17 | Закрытое акционерное общество Научно-производственный Центр "Микропроцессорные технологии" (ЗАО НПЦ "МиТ") | Устройство коммуникационного интерфейса gigaspacewire |
CN114208041A (zh) * | 2019-08-30 | 2022-03-18 | 索尼半导体解决方案公司 | 编码装置、编码方法、解码装置、解码方法和程序 |
CN111030953B (zh) * | 2019-12-04 | 2021-11-09 | 中国电子科技集团公司第五十八研究所 | 一种低延时8b/10b编码的方法与装置 |
KR20210129960A (ko) | 2020-04-21 | 2021-10-29 | 삼성전자주식회사 | 채널들에 신호들을 송신하는 송신기, 채널들로부터 신호들을 수신하는 수신기, 및 이들을 포함하는 반도체 시스템 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US62621A (en) * | 1867-03-05 | Concern | ||
US123222A (en) * | 1872-01-30 | Geoege bekkhaedt | ||
US4486739A (en) * | 1982-06-30 | 1984-12-04 | International Business Machines Corporation | Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code |
DE69118891T2 (de) * | 1991-10-14 | 1996-10-24 | Ibm | Flexibles Kodierungs-Verfahren und Architektur für Hochgeschwindigkeits-Datenübertragung und Aufzeichnung |
US5784387A (en) * | 1994-10-31 | 1998-07-21 | International Business Machines Corporation | Method for detecting start-of-frame, end of frame and idle words in a data stream |
US5699062A (en) * | 1995-02-01 | 1997-12-16 | International Business Machines Corporation | Transmission code having local parity |
US6496540B1 (en) * | 1998-07-22 | 2002-12-17 | International Business Machines Corporation | Transformation of parallel interface into coded format with preservation of baud-rate |
US6225924B1 (en) * | 1998-12-22 | 2001-05-01 | International Business Machines Corporation | Transmission coding method and device |
US6691275B1 (en) * | 2000-12-14 | 2004-02-10 | Lsi Logic Corporation | Encoder with vector-calculated disparity logic |
US6786315B1 (en) * | 2003-03-28 | 2004-09-07 | Honeywell International, Inc. | Thrust reverser system with sequential torque decoupler |
-
2002
- 2002-04-30 CN CNB028094441A patent/CN100553150C/zh not_active Expired - Fee Related
- 2002-04-30 EP EP02734126A patent/EP1391040A2/en not_active Withdrawn
- 2002-04-30 JP JP2002587933A patent/JP3851274B2/ja not_active Expired - Fee Related
- 2002-04-30 WO PCT/US2002/013798 patent/WO2002091586A2/en not_active Application Discontinuation
- 2002-04-30 AU AU2002305315A patent/AU2002305315A1/en not_active Abandoned
- 2002-04-30 US US10/475,823 patent/US6977599B2/en not_active Expired - Fee Related
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3851274B2 (ja) | 高速アプリケーションのための8b/10b符号化および復号化 | |
JP2005513823A6 (ja) | 高速アプリケーションのための8b/10b符号化および復号化 | |
US5663724A (en) | 16B/20B encoder | |
JPS58119273A (ja) | 符号器 | |
US20070266347A1 (en) | Method of automatic synthesis of sequential quantum Boolean circuits | |
Neary et al. | Four small universal Turing machines | |
GB2305582A (en) | Channel encoding and decoding for eight to fourteen modulation using merging bits | |
JPH0652620B2 (ja) | コード変換器、記録媒体、及びデータ変換方法 | |
KR880001116A (ko) | 채널 엔코더 | |
US7292161B2 (en) | NB/MB coding apparatus and method using both disparity independent and disparity dependent encoded vectors | |
EP0094293B1 (en) | An arrangement for encoding and decoding information signals | |
Woods et al. | On the time complexity of 2-tag systems and small universal Turing machines | |
JPH0746310B2 (ja) | 半導体論理回路 | |
SE458165B (sv) | Saett och anordning foer omvandling av digitala data i form av en serie av ord till en nrzi-kodad digital signal | |
US6911921B2 (en) | 5B/6B-T, 3B/4B-T and partitioned 8B/10B-T and 10B/12B transmission codes, and their implementation for high operating rates | |
JPH0212327A (ja) | マスク・ゼネレータ | |
KR930018871A (ko) | 러닝디스패러티 측정을 수행하는 방법 및 회로 | |
Widmer | 8B/10B encoding and decoding for high speed applications | |
CN112969998A (zh) | 通过并行前缀计算的优化的包容亚稳态的排序 | |
Widmer | 5B/6B-T (urbo), 3B/4B-T, and Partitioned 8B-/10B-T Transmission Code, and Its Implementation for High Operating Rates | |
JPH03113919A (ja) | 値およびストリング長のコード化により数値データブロックの可変長コード化で伝送される情報を圧縮する方法 | |
Varma et al. | Nibble Based Even Invert Code for Serial NoC Links | |
KR970050868A (ko) | 병렬 crc 디코더 | |
JP2001216741A (ja) | コード変調装置及び変調方法 | |
KR100681944B1 (ko) | 병렬 데이터 전송을 위한 분할된 집합 반전 인코딩 방법 |