(57)【特許請求の範囲】
【請求項１】
時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換システムであって、
前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、
前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を入力順に第１レジスタに格納し、入力される符号が第２種である場合はその符号を入力順に第２レジスタに格納し、前記第１レジスタの内容を先頭に配置し、前記第２レジスタの内容を前記第１レジスタの内容の次に配置することにより前記１個のブロックに変換する符号変換手段を含むことを特徴とする符号変換システム。
【請求項２】
前記符号変換手段には、前記先頭に配置された第１種符号の各々に前記入力時におけるその符号の位置を示す位置符号を付与する位置符号付与手段が含まれることを特徴とする請求項１記載の符号変換システム。
【請求項３】
前記符号変換手段には、前記入力時における前記第１種符号を他の符号に変換する第１種符号変換手段が含まれることを特徴とする請求項１又は２記載の符号変換システム。
【請求項４】
前記符号変換手段は、前記時系列に入力される符号に前記第１種の符号が含まれるか否かを示す第２の識別符号を、前記１個のブロックの先頭に配置することを特徴とする請求項１から３いずれか記載の符号変換システム。
【請求項５】
前記第１種の符号は制御符号であり、前記第２種の符号はデータ符号であることを特徴とする請求項１から４いずれか記載の符号変換システム。
【請求項６】
時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換された情報を逆変換する符号変換システムであって、
少なくとも前記１個のブロックに前記第１種の符号が含まれるか否かを示す識別符号が前記１個のプログラムの先頭に配置され、かつ前記１個のブロックに含まれる第１種の符号の各々に前記第１種の符号であることを示す最終制御符号及び前記１個のブロックに変換される前の符号の位置を示す位置符号が付与されており、
前記識別符号、最終制御符号及び位置符号に基づき前記１個のブロックに含まれる前記第１種の符号を元の位置に整列させ、前記１個のブロックに含まれる前記第２種の符号を残りの位置に時系列に整列させる符号逆変換手段を含むことを特徴とする符号変換システム。
【請求項７】
前記符号逆変換手段には、前記１個のブロックに含まれる第１種の符号を元の符号に復元する第１種符号復元手段が含まれることを特徴とする請求項６記載の符号変換システム。
【請求項８】
前記第１種の符号は制御符号であり、前記第２種の符号はデータ符号であることを特徴とする請求項６又は７記載の符号変換システム。
【請求項９】
時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換方法であって、
前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、
前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を入力順に第１レジスタに格納し、入力される符号が第２種である場合はその符号を入力順に第２レジスタに格納し、前記第１レジスタの内容を先頭に配置し、前記第２レジスタの内容を前記第１レジスタの内容の次に配置することにより前記１個のブロックに変換する符号変換ステップを含むことを特徴とする符号変換方法。
【請求項１０】
前記符号変換ステップには、前記先頭に配置された第１種符号の各々に前記入力時におけるその符号の位置を示す位置符号を付与するステップが含まれることを特徴とする請求項９記載の符号変換方法。
【請求項１１】
前記符号変換ステップには、前記入力時における前記第１種符号を他の符号に変換するステップが含まれることを特徴とする請求項９又は１０記載の符号変換方法。
【請求項１２】
前記符号変換ステップは、前記時系列に入力される符号に前記第１種の符号が含まれるか否かを示す第２の識別符号を、前記１個のブロックの先頭に配置することを特徴とする請求項９から１１いずれか記載の符号変換方法。
【請求項１３】
前記第１種の符号は制御符号であり、前記第２種の符号はデータ符号であることを特徴とする請求項９から１２いずれか記載の符号変換方法。
【請求項１４】
時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換された情報を逆変換する符号変換方法であって、
少なくとも前記１個のブロックに前記第１種の符号が含まれるか否かを示す識別符号が前記１個のプログラムの先頭に配置され、かつ前記１個のブロックに含まれる第１種の符号の各々に前記第１種の符号であることを示す最終制御符号及び前記１個のブロックに変換される前の符号の位置を示す位置符号が付与されており、
前記識別符号、最終制御符号及び位置符号に基づき前記１個のブロックに含まれる前記第１種の符号を元の位置に整列させ、前記１個のブロックに含まれる前記第２種の符号を残りの位置に時系列に整列させる符号逆変換ステップを含むことを特徴とする符号変換方法。
【請求項１５】
前記符号逆変換ステップには、前記１個のブロックに含まれる第１種の符号を元の符号に復元するステップが含まれることを特徴とする請求項１４記載の符号変換方法。
【請求項１６】
前記第１種の符号は制御符号であり、前記第２種の符号はデータ符号であることを特徴とする請求項１４又は１５記載の符号変換方法。
【請求項１７】
時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換方法をコンピュータに実行させるための変換プログラムであって、
前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、
前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を入力順に第１レジスタに格納し、入力される符号が第２種である場合はその符号を入力順に第２レジスタに格納し、前記第１レジスタの内容を先頭に配置し、前記第２レジスタの内容を前記第１レジスタの内容の次に配置することにより前記１個のブロックに変換する符号変換ステップをコンピュータに実行させるための変換プログラム。
【請求項１８】
前記符号変換ステップには、前記先頭に配置された第１種符号の各々に前記入力時におけるその符号の位置を示す位置符号を付与するステップが含まれることを特徴とする請求項１７記載の変換プログラム。
【請求項１９】
前記符号変換ステップには、前記入力時における前記第１種符号を他の符号に変換するステップが含まれることを特徴とする請求項１７又は１８記載の変換プログラム。
【請求項２０】
前記符号変換ステップは、前記時系列に入力される符号に前記第１種の符号が含まれるか否かを示す第２の識別符号を、前記１個のブロックの先頭に配置することを特徴とする請求項１７から１９いずれか記載の変換プログラム。
【請求項２１】
前記第１種の符号は制御符号であり、前記第２種の符号はデータ符号であることを特徴とする請求項１７から２０いずれか記載の変換プログラム。
【請求項２２】
時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換された情報を逆変換する符号変換方法をコンピュータに実行させるための変換プログラムであって、
少なくとも前記１個のブロックに前記第１種の符号が含まれるか否かを示す識別符号が前記１個のプログラムの先頭に配置され、かつ前記１個のブロックに含まれる第１種の符号の各々に前記第１種の符号であることを示す最終制御符号及び前記１個のブロックに変換される前の符号の位置を示す位置符号が付与されており、
前記識別符号、最終制御符号及び位置符号に基づき前記１個のブロックに含まれる前記第１種の符号を元の位置に整列させ、前記１個のブロックに含まれる前記第２種の符号を残りの位置に時系列に整列させる符号逆変換ステップをコンピュータに実行させるための変換プログラム。
【請求項２３】
前記符号逆変換ステップには、前記１個のブロックに含まれる第１種の符号を元の符号に復元するステップが含まれることを特徴とする請求項２２記載の変換プログラム。
【請求項２４】
前記第１種の符号は制御符号であり、前記第２種の符号はデータ符号であることを特徴とする請求項２２又は２３記載の変換プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は符号変換システム及びその変換方法並びに変換プログラムに関し、特に8B/10Bブロック符号を６５ビットのブロックに変換する64B/65B 変換及びその逆変換に用いられる符号変換システム及びその変換方法並びに変換プログラムに関する。
【０００２】
【従来の技術】
現在、Generic Framing Procedure(以後、GFP と称す) 規格の標準化が、 ANSI T1X1.5にて進められている(GFP仕様のドラフトの文書番号は、T1X1.5/2001-158)。 GFPとは、イーサネット（登録商標）又は Ethernet(登録商標）、PPP (point-to-point protocol) 等のフレームをカプセル化（あるプロトコルで扱うデータをその上位層または下位層プロトコルのフレーム構造に詰め込むこと）し、 SONET(synchronous optical network) /SDH(synchronous digital hierachy)上で伝送するための技術である。
【０００３】
又、GFP には、8B/10Bブロック符号化されたストリームデータ(stream data; 必要な分だけを列の先頭から取り出せるようにしたデータ列) を、フレームにカプセル化する規格も存在する。8B/10Bブロック符号化は、ギガビットイーサネット（登録商標）や、ストレージエリアネットワークで用いられるファイバチャネル、デジタルビデオ信号インタフェース規格であるDVB-ASI 等の、多くのリンク層プロトコルに採用されている。 GFPでは、8B/10B符号をフレームにカプセル化する際に、８つの8B/10B符号を６５ビットのブロックに変換する処理が行われる。この変換処理は、64B/65B 変換と呼ばれている。
【０００４】
次に、64B/65B 変換について具体例を交えながら詳細に説明する。64B/65B 変換とは、８つの復号済みの8B/10B符号を、６５ビットのブロックに変換する手法である。変換後の６５ビットのブロックを65B ブロックと呼ぶ。
【０００５】
8B/10B符号は、ビットシリアル伝送に用いられる１０ビットの等長符号であり、優れた情報伝達特性を有する。8B/10B符号には、２５６種類のデータ符号と、１２種類の制御符号( スペシャル符号とも呼ばれる) が定義されている。
【０００６】
次に、65B ブロックの構造について説明する。図８は65B ブロックの構成図である。同図を参照すると、65B ブロックの第１ビットはフラグビット（Ｆ）であり、入力された８つの8B/10B符号の全てがデータ符号であるときに限り０になる。65B ブロックの第２ビットから第６５ビットまでの６４ビットの領域は、８つのバイトに分割される。便宜上、65B ブロックの第２ビットから第９ビットまでの８ビットを第１バイト、第１０ビットから第１７ビットまでを第２バイト、…、として参照する。それぞれのバイトに、入力された８つの8B/10B符号が１つずつ格納される。この際、制御符号は、第１バイトから順に格納される。
【０００７】
ここで、8B/10B符号の格納順序に関する例を示す。８つの8B/10B符号が入力順に、
Ｄ１、Ｄ２、Ｄ３、Ｋ１、Ｄ４、Ｄ５、Ｄ６、Ｋ２
( Ｄはデータ符号、Ｋは制御符号の意) であるとき、65B ブロックの第１バイト〜第８バイトは順に、
Ｋ１、Ｋ２、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６
となる。
【０００８】
このように、入力された８つの8B/10B符号の順序と、65B ブロック内のバイトの順序が一致するとは限らない。ただし、データ符号のみ、又は制御符号のみに着目すると、順序は常に保存される。即ち、上記の例において、65B ブロックの第１バイト〜第８バイトが、
Ｋ２、Ｋ１、Ｄ３、Ｄ２、Ｄ１、Ｄ４、Ｄ５、Ｄ６
等になることはない。
【０００９】
データ符号が格納されるバイトには、そのデータ符号から復号された８ビットデータが代入される。
【００１０】
一方、制御符号が格納されるバイトは、さらに３つの領域に分割される。１つ目の領域はLCC ( Last Control Character) であり、バイトの第１ビットに位置する。LCC は、次のバイトにも制御符号が格納されるときに１をとる。一方、次のバイトにデータ符号が格納されるとき、あるいは、現在のバイトが最終バイト( 第８バイト) であるとき、０をとる。２つ目の領域はCCL ( Control Character Locator)であり、バイトの第２ビットから第４ビットまでの３ビットに割り当てられている。CCL は、このバイトに格納される制御符号の、元の位置を示す。元の位置は、入力された８つの8B/10B符号における、時系列順に０から始まる数値で表現される。例えば、CCL が６のとき、変換前の制御符号は、８つの8B/10B符号の７番目に存在していたことになる。３つ目の領域はCCI ( Control Character Indicator)であり、バイトの第５ビットから第８ビットまでの４ビットに割り当てられている。CCI には、制御符号を４ビットで表現したコードが収容される。
【００１１】
制御符号の４ビット表現の一例を図９に示す。同図はGFP 仕様のドラフト( 文書番号：T1X1.5/2001-158)の表８−１から引用されたものである。同図は８ビット制御符号と４ビット制御符号と符号の意味との対応を示したものである。なお、制御符号と４ビット表現が１対１に対応してさえいれば、同図以外の関係でも良い。
【００１２】
以降、フラグビットをＦとおく。又、(i＋1)番目のバイト(0≦i ≦7)にデータ符号が収容される場合、そのバイトをＤＶ[i] で表す。さらに、(i＋1)番目のバイト(0≦i ≦7)に制御符号が収容される場合、そのバイトのLast Control CharacterをＬＣＣ[i] 、 Control Character LocatorをＣＣＬ[i] 、 Control Character IndicatorをＣＣＩ[i] とおく。
【００１３】
Ｆ、ＤＶ[i] 、ＬＣＣ[i] 、ＣＣＬ[i] 、ＣＣＩ[i] (0≦i ≦7)を用いて６５Ｂブロックを表現すると、図８のようになる。入力された８つの8B/10B符号に含まれる制御符号の数が決まれば、Ｆ及びＬＣＣ[i] が一意に定まることが分かる。
【００１４】
【発明が解決しようとする課題】
しかし、この64B/65B 変換に要する演算は複雑であり、多くのハ−ドウエア資源を要するという欠点があった。
【００１５】
そこで本発明の目的は、冗長な演算を省略し、これにより少ないハ−ドウエア資源で64B/65B 変換及びその逆変換を実現することが可能な符号変換システム及びその変換方法並びに変換プログラムを提供することにある。
【００１６】
【課題を解決するための手段】
前記課題を解決するために本発明による符号変換システムは、時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換システムであって、前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を入力順に第１レジスタに格納し、入力される符号が第２種である場合はその符号を入力順に第２レジスタに格納し、前記第１レジスタの内容を先頭に配置し、前記第２レジスタの内容を前記第１レジスタの内容の次に配置することにより前記１個のブロックに変換する符号変換手段を含むことを特徴とする。
【００１７】
又、本発明による他の符号変換システムは、時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換された情報を逆変換する符号変換システムであって、少なくとも前記１個のブロックに前記第１種の符号が含まれるか否かを示す識別符号が前記１個のプログラムの先頭に配置され、かつ前記１個のブロックに含まれる第１種の符号の各々に前記第１種の符号であることを示す最終制御符号及び前記１個のブロックに変換される前の符号の位置を示す位置符号が付与されており、前記識別符号、最終制御符号及び位置符号に基づき前記１個のブロックに含まれる前記第１種の符号を元の位置に整列させ、前記１個のブロックに含まれる前記第２種の符号を残りの位置に時系列に整列させる符号逆変換手段を含むことを特徴とする。
【００１８】
又、本発明による符号変換方法は、時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換方法であって、前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を入力順に第１レジスタに格納し、入力される符号が第２種である場合はその符号を入力順に第２レジスタに格納し、前記第１レジスタの内容を先頭に配置し、前記第２レジスタの内容を前記第１レジスタの内容の次に配置することにより前記１個のブロックに変換する符号変換ステップを含むことを特徴とする。
【００１９】
又、本発明による他の符号変換方法は、時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換された情報を逆変換する符号変換方法であって、少なくとも前記１個のブロックに前記第１種の符号が含まれるか否かを示す識別符号が前記１個のプログラムの先頭に配置され、かつ前記１個のブロックに含まれる第１種の符号の各々に前記第１種の符号であることを示す最終制御符号及び前記１個のブロックに変換される前の符号の位置を示す位置符号が付与されており、前記識別符号、最終制御符号及び位置符号に基づき前記１個のブロックに含まれる前記第１種の符号を元の位置に整列させ、前記１個のブロックに含まれる前記第２種の符号を残りの位置に時系列に整列させる符号逆変換ステップを含むことを特徴とする。
【００２０】
又、本発明による変換プログラムは、時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換方法をコンピュータに実行させるための変換プログラムであって、前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を入力順に第１レジスタに格納し、入力される符号が第２種である場合はその符号を入力順に第２レジスタに格納し、前記第１レジスタの内容を先頭に配置し、前記第２レジスタの内容を前記第１レジスタの内容の次に配置することにより前記１個のブロックに変換する符号変換ステップをコンピュータに実行させるための変換プログラムであることを特徴とする。
【００２１】
又、本発明による他の変換プログラムは、時系列に入力される２種類の符号のうち第１種の符号を入力順に先頭に配置し、第２種の符号を入力順に前記第１種の符号の次に配置することにより１個のブロックに変換された情報を逆変換する符号変換方法をコンピュータに実行させるための変換プログラムであって、少なくとも前記１個のブロックに前記第１種の符号が含まれるか否かを示す識別符号が前記１個のプログラムの先頭に配置され、かつ前記１個のブロックに含まれる第１種の符号の各々に前記第１種の符号であることを示す最終制御符号及び前記１個のブロックに変換される前の符号の位置を示す位置符号が付与されており、
前記識別符号、最終制御符号及び位置符号に基づき前記１個のブロックに含まれる前記第１種の符号を元の位置に整列させ、前記１個のブロックに含まれる前記第２種の符号を残りの位置に時系列に整列させる符号逆変換ステップをコンピュータに実行させるための変換プログラムであることを特徴とする。
【００２２】
本発明によれば、上記構成により冗長な演算を省略し、これにより少ないハ−ドウエア資源で64B/65B 変換及びその逆変換を実現することが可能となる。
【００２３】
本発明は、64B/65B 変換及び逆変換を、少ない演算量で実現する方法及び回路を提供するものである。 64B/65B変換には、図１０の64B/65B 変換の一例を示す図のように、データ符号のみ、又は制御符号のみに着目すると、変換の前後で符号の順序が保たれるという性質がある。この性質を利用することで、符号の並び替えに要する演算を削減することができる。
【００２４】
次に、64B/65B 変換の具体例を示す。本例では、８つの8B/10B符号の時系列：
Ｄ２１．４、Ｄ２１．５、Ｄ２１．５、Ｋ２８．５、Ｄ２１．４、Ｄ１０．２、Ｄ１０．２、Ｋ２８．５
を６５Ｂブロックに変換する過程を解説する( なお、Ｄ２１．４、Ｄ２１．５、Ｄ１０．２はデータ符号、Ｋ２８．５は制御符号である) 。
【００２５】
64B/65B 変換は、復号済みの8B/10B符号を入力とするので、64B/65B 変換の前段で8B/10B復号を行う必要がある。そこで、８つの8B/10B符号のそれぞれを、８ビットデータに復号すると、
( 第１の8B/10B符号) Ｄ２１．４＝10010101 (２進数) 、( 第２の8B/10B符号) Ｄ２１．５＝10110101 (２進数) 、( 第３の8B/10B符号) Ｄ２１．５＝10110101 (２進数) 、( 第４の8B/10B符号) Ｋ２８．５＝10111100 (２進数) 、( 第５の8B/10B符号) Ｄ２１．４＝10010101 (２進数) 、( 第６の8B/10B符号) Ｄ１０．２＝01001010 (２進数) 、( 第７の8B/10B符号) Ｄ１０．２＝01001010 (２進数) 、( 第８の8B/10B符号) Ｋ２８．５＝10111100 (２進数)
となる。
【００２６】
ただし、これらのみではデータ符号か制御符号かを識別できないため、( 第１の8B/10B符号) ＝データ符号、( 第２の8B/10B符号) ＝データ符号、( 第３の8B/10B符号) ＝データ符号、( 第４の8B/10B符号) ＝制御符号、( 第５の8B/10B符号) ＝データ符号、( 第６の8B/10B符号) ＝データ符号、( 第７の8B/10B符号) ＝データ符号、( 第８の8B/10B符号) ＝制御符号  という情報も作成しておく。
【００２７】
始めに、Ｆ（フラグビット）及びＬＣＣ( Last Control Character) を決定する。Ｆ及びＬＣＣは、前述のように、８つの8B/10B符号に含まれる制御符号の数で決まる。
【００２８】
即ち、図８を参照すると、８つの8B/10B符号に含まれる制御符号の数が０個の場合はＦ＝０であり、制御符号の数が１個の場合はＦ＝１かつＬＣＣ[0] ＝１であり、制御符号の数が２個の場合はＦ＝１、ＬＣＣ[0] ＝１かつＬＣＣ[1] ＝０であり、制御符号の数が３個の場合はＦ＝１、ＬＣＣ[0] ＝１、ＬＣＣ[1] ＝１かつＬＣＣ[2] ＝０であり、制御符号の数が４個以上の場合も同様である。
【００２９】
本例では制御符号が２つ存在するから、図８の制御符号の数＝２個の欄を参照すると、Ｆ＝1 、ＬＣＣ[0] ＝1 、ＬＣＣ[1] ＝0 を得る。次に、制御符号をＣＣＬ及びＣＣＩで表現し、それらを順に、65B ブロックの第１バイト、第２バイト、…に代入する。
【００３０】
第１の制御符号は、８つの8B/10B符号中の４番目に位置するから、
ＣＣＬ[0] ＝011 ( ２進数)
となる。又、第１の制御符号から復号された８ビットデータは、 10111100 ( ２進数) であり、これを図９に従って４ビット表現すると（図９のK28.5 の欄参照）、0101 (２進数) となるから、
ＣＣＩ[0] ＝0101 (２進数)
である。
【００３１】
第２の制御符号は、８つの8B/10B符号中の８番目に位置するから、
ＣＣＬ[1] ＝111 ( ２進数)
となる。又、第２の制御符号は、第１の制御符号と等しいから、
ＣＣＩ[1] ＝0101 (２進数)
である。
【００３２】
最後に、データ符号から復号された８ビットデータを、65B ブロックの各バイトに代入する。第１、第２バイトには、既に制御符号が収容されているため、第３バイトから代入を開始する。順次、ＤＶ[2] 、ＤＶ[3] 、…、ＤＶ[7] に代入すると、
ＤＶ[2] ＝10010101 (２進数) 、ＤＶ[3] ＝10110101 (２進数) 、ＤＶ[4] ＝10110101 (２進数) 、ＤＶ[5] ＝10010101 (２進数) 、ＤＶ[6] ＝01001010 (２進数) 、ＤＶ[7] ＝01001010 (２進数)
となる。即ち、デ−タ符号の数値は変換前と変わらない。
【００３３】
以上で、65B ブロックへの変換は完了し、最終的に、
1 10110101 01110101 10010101 10110101 10110101 10010101 01001010        01001010 (  ２進数)
が得られる。
【００３４】
即ち、図１０を参照すると、８つの8B/10B符号のうちの第１符号は65B ブロック変換後の第３バイトとなり、以下第２符号は第４バイト、第３符号は第５バイト、第４符号は第１バイト、第５符号は第６バイト、第６符号は第７バイト、第７符号は第８バイト、第８符号は第２バイトとなる。なお、65B ブロックの先頭（第１ビット）にはＦビットが設けられる。
【００３５】
【発明の実施の形態】
以下、本発明の実施の形態について添付図面を参照しながら説明する。図１は本発明による64B/65B 変換回路の一例の構成図である。又、図２は本発明による64B/65B 逆変換回路の一例の構成図である。
【００３６】
まず、図１を参照して、64B/65B 変換回路４０の構成を詳細に説明する。64B/65B 変換回路４０は、制御符号変換部４１と、データ符号レジスタ４２−１〜４２−８と、制御符号レジスタ４３−１〜４３−８と、制御符号位置レジスタ４４−１〜４４−８と、符号カウンタ４５と、制御符号カウンタ４６と、65B ブロック生成部４７とを含んで構成される。
【００３７】
64B/65B 変換回路４０の入力は、復号済みの8B/10B符号であり、８ビットデータ６０及びデータ／制御フラグ６１の２つの信号で表される。データ／制御フラグ６１は、８ビットデータ６０がデータ符号を表すとき０を、制御符号を表すとき１をとるフラグである。64B/65B 変換回路４０の出力は、65B ブロック６３である。
【００３８】
制御符号変換部４１は、データ／制御フラグ６１が１のとき( 即ち、制御符号のとき) 、８ビットデータ６０を図３に従って変換し、４ビット制御符号６２を出力する。
【００３９】
データ符号レジスタ４２−１〜４２−８は、それぞれ８ビット幅のレジスタである。データ／制御フラグ６１が０のとき( 即ち、データ符号のとき) 、データ符号レジスタ４２−８に８ビットデータ６０を代入し、データ符号レジスタ４２−１〜４２−７を８ビットシフトする。
【００４０】
制御符号レジスタ４３−１〜４３−８は、それぞれ４ビット幅のレジスタである。データ／制御フラグ６１が１のとき、制御符号レジスタ４３−Ｎに４ビット制御符号６２を代入する。ここでＮの値は、制御符号カウンタ４６の出力値に１を加えた数に等しい。
【００４１】
制御符号位置レジスタ４４−１〜４４−８は、それぞれ３ビット幅のレジスタである。データ／制御フラグ６１が１のとき、制御符号位置レジスタ４４−Ｎに、符号カウンタ４５の出力値を代入する。ここでＮの値は、制御符号カウンタ４６の出力値に１を加えた数に等しい。
【００４２】
符号カウンタ４５は、入力された符号の個数を計数する８進カウンタである。取り得る値は、０以上７以下である。
【００４３】
制御符号カウンタ４６は、入力された制御符号の個数を計数する８進カウンタであり、データ／制御フラグ６１が１のとき、１だけカウントアップする。取り得る値は、０以上７以下である。
【００４４】
65B ブロック生成部４７は、制御符号カウンタ４６の出力値から、出力する65B ブロック６３の構造を決定し、データ符号レジスタ４２−１〜４２−８、制御符号レジスタ４３−１〜４３−８、制御符号位置レジスタ４４−１〜４４−８の出力値を、65B ブロック６３の各領域に転送する。65B ブロック生成部４７の出力は、65B ブロック６３である。
【００４５】
次に、図２を参照して、64B/65B 逆変換回路８０の構成を詳細に説明する。64B/65B 逆変換回路８０は、制御バイト判定部８１と、データ／制御判定部８２と、制御符号整列部８３と、制御符号復元部８４と、データ転送元決定部８５と、データ符号整列部８６と、データ／制御選択部８７と、順序エラー判定部８８とを含んで構成される。
【００４６】
64B/65B 逆変換回路８０の入力は、６５ビットの65B ブロック６３である。説明の都合上、65B ブロック６３の各領域に別名を与える。フラグ１００（Ｆ）は、65B ブロック６３の第１ビットの別名である。データ値１０１−Ｎ( １≦Ｎ≦８）は65B ブロック６３の第Ｎバイトの別名である。最終制御符号１０２−Ｎ( １≦Ｎ≦８) （ＬＣＣ）は、65B ブロック６３の第Ｎバイトの第１ビットの別名である。制御符号位置１０３−Ｎ( １≦Ｎ≦８) （ＣＣＬ）は、65B ブロック６３の第Ｎバイトの第２ビット〜第４ビットの別名である。制御符号識別子１０４−Ｎ( １≦Ｎ≦８) （ＣＣＩ）は、65B ブロック６３の第Ｎバイトの第５ビット〜第８ビットの別名である。
【００４７】
64B/65B 逆変換回路８０の出力は、８つの復号済みの8B/10B符号、及び順序エラー１１２である。８つの復号済み8B/10B符号は、８ビットデータ１１１−１〜１１１−８とデータ／制御フラグ１０６−１〜１０６−８で表現される。データ／制御フラグ１０６−Ｎ( １≦Ｎ≦８) は、対応する８ビットデータ１１１−Ｎが、制御符号を表すときに１をとるフラグである。順序エラー１１２は、65B ブロック６３の構造的なエラーの有無を示す。
【００４８】
制御バイト判定部８１は、フラグ１００及び最終制御符号１０２−１〜１０２−７から、制御バイトフラグ１０５−１〜１０５−８を求める。制御バイトフラグ１０５−Ｎ( １≦Ｎ≦８) は、65B ブロック６３の第Ｎバイトが制御符号を表すときに１をとるフラグである。
【００４９】
データ／制御判定部８２は、制御バイトフラグ１０５−１〜１０５−８及び制御符号位置１０３−１〜１０３−８から、データ／制御フラグ１０６−１〜１０６−８を求める。
【００５０】
制御符号整列部８３は、制御バイトフラグ１０５−１〜１０５−８及び制御符号位置１０３−１〜１０３−８に基づいて、制御符号識別子１０４−１〜１０４−８を8B/10B符号の並び順に整列させる。又、整列後の制御符号を、４ビット制御符号１０７−１〜１０７−８として出力する。４ビット制御符号１０７−Ｎ( １≦Ｎ≦８) は、対応するデータ／制御フラグ１０６−Ｎが１のとき( 即ち、８ビットデータ１１１−Ｎが制御符号のとき) に限り、意味を持つ。
【００５１】
制御符号復元部８４は、４ビット制御符号１０７−１〜１０７−８のそれぞれを、図９に従って元の８ビットデータに復元し、８ビット制御符号１０８−１〜１０８−８として出力する。８ビット制御符号１０８−Ｎ( １≦Ｎ≦８) は、対応するデータ／制御フラグ１０６−Ｎが１のときに限り、意味を持つ。
【００５２】
データ転送元決定部８５は、データ／制御フラグ１０６−１〜１０６−８から、データ転送元１０９−１〜１０９−８を定める。データ転送元１０９−１〜１０９−８は、それぞれ８ビットの信号であり、データ値１０１−１〜１０１−８と、８ビットデータ１１１−１〜１１１−８との対応関係を表す。８ビットデータ１１１−Ｎ( １≦Ｎ≦８) がデータ値１０１−Ｍ( １≦Ｍ≦８) に対応するとき、データ転送元１０９−Ｎの第Ｍビットが１になる。なお、データ転送元１０９−Ｎ( １≦Ｎ≦８) は、対応するデータ／制御フラグ１０６−Ｎが０のときに限り、意味を持つ。
【００５３】
データ符号整列部８６は、データ転送元１０９−１〜１０９−８に基づいて、データ値１０１−１〜１０１−８を8B/10B符号の並び順に整列させる。又、整列後のデータ符号を、データ符号１１０−１〜１１０−８として出力する。データ符号１１０−Ｎ( １≦Ｎ≦８) は、対応するデータ／制御フラグ１０６−Ｎが０のときに限り、意味を持つ。
【００５４】
データ／制御選択部８７は、データ／制御フラグ１０６−１〜１０６−８を参照して、データ符号１１０−１〜１１０−８と８ビット制御符号１０８−１〜１０８−８を切り替え、８ビットデータ１１１−１〜１１１−８として出力する。
【００５５】
順序エラー判定部８８は、制御バイトフラグ１０５−１〜１０５−８、最終制御符号１０２−１〜１０２−８及び制御符号位置１０３−１〜１０３−８を解析し、制御符号の順序関係に矛盾が生じているか否かを判定する。矛盾が検出されると、順序エラー１１２を１にする。
【００５６】
次に、本実施例の動作について詳細に説明する。図３は64B/65B 変換回路４０の動作を示すフロ−チャ−トである。同図を参照して、64B/65B 変換回路４０の動作を説明する。同図中の変数・演算子・ビット順序の定義を、それぞれ以下に示す。
【００５７】
Ｄは８ビットデータ６０、ＤＣはデータ／制御フラグ６１、Control は４ビット制御符号６２、ＤＶ[i](0 ≦i ≦7)はデータ符号レジスタ４２−(i＋1)、ＣＣＩ[i](0 ≦i ≦7)は制御符号レジスタ４３−(i＋1)、ＣＣＬ[i](0 ≦i ≦7)は制御符号位置レジスタ４４−（ｉ＋１）、NumCode は符号カウンタ４５、NumControlは制御符号カウンタ４６、＋は算術和を表している。
【００５８】
又、Ｎビット信号の第１ビットは、その信号の最上位(Most Significant)ビットを表し、Ｎビット信号の第Ｎビットは、その信号の最下位(Least Significant) ビットを表す。
【００５９】
まず、ステップＳ１００から開始し、符号カウンタ４５及び制御符号カウンタ４６をゼロクリアする。その後、８ビットデータ６０とデータ／制御フラグ６１が入力されるのを待つ( ステップＳ１０１) 。そして、入力されていれば、データ／制御フラグ６１が１であるか判定する( ステップＳ１０２) 。１であれば( 即ち、入力が制御符号であれば) 、８ビットデータ６０を図３に従って４ビット制御符号６２に変換する( ステップＳ１０３) 。さらに、ステップＳ１０４において、４ビット制御符号６２を制御符号レジスタ４３−Ｎに代入し、符号カウンタ４５の出力値を制御符号位置レジスタ４４−Ｎに代入する。ここでＮの値は、制御符号カウンタ４６の出力値に１を加えた数に等しい。その後、制御符号カウンタ４６を１だけカウントアップし、ステップＳ１０６へ進む。
【００６０】
一方、ステップＳ１０２において、データ／制御フラグ６１が０であったとき( 即ち、入力がデータ符号のとき) 、データ符号レジスタ４２−１〜４２−７を８ビットシフトし、データ符号レジスタ４２−８に８ビットデータ６０を代入する( ステップＳ１０５) 。その後、ステップＳ１０６へ進む。ステップＳ１０６では、符号カウンタ４５の出力値が７であるか判定される。７以外であれば、符号カウンタ４５を１だけカウントアップし( ステップＳ１０７) 、ステップＳ１０１へ戻る。一方、７であれば、図１を参照して６５Ｂブロック６３の生成と出力を行い( ステップＳ１０８) 、ステップＳ１００へ戻る。
【００６１】
65B ブロック６３の構造は、制御符号カウンタ４６の出力値( 図８における「８つの8B/10B符号に含まれる制御符号の数」と同義) によって決定される。例えば、制御符号カウンタ４６の出力値が２のとき、65B ブロック６３は以下のようになる：
第１ビット＝1
第２ビット＝1
第３ビット〜第５ビット＝制御符号位置レジスタ４４−１の出力値
第６ビット〜第９ビット＝制御符号レジスタ４３−１の出力値
第１０ビット＝0
第１１ビット〜第１３ビット＝制御符号位置レジスタ４４−２の出力値
第１４ビット〜第１７ビット＝制御符号レジスタ４３−２の出力値
第１８ビット〜第２５ビット＝データ符号レジスタ４２−３の出力値
第２６ビット〜第３３ビット＝データ符号レジスタ４２−４の出力値
第３４ビット〜第４１ビット＝データ符号レジスタ４２−５の出力値
第４２ビット〜第４９ビット＝データ符号レジスタ４２−６の出力値
第５０ビット〜第５７ビット＝データ符号レジスタ４２−７の出力値
第５８ビット〜第６５ビット＝データ符号レジスタ４２−８の出力値である。
【００６２】
図４及び図５は64B/65B 逆変換回路８０の動作を示すフロ−チャ−トである。同図を参照して、64B/65B 逆変換回路８０の動作を説明する。本説明で用いる、変数・演算子・関数・ビット順序の定義を、それぞれ以下に示す。Ｆはフラグ１００、ＤＶ[i](0 ≦i ≦7)はデータ値１０１−(i＋1)、ＬＣＣ[i](0 ≦i ≦7)は最終制御符号１０２−(i＋1)、ＣＣＬ[i](0 ≦i ≦7)は制御符号位置１０３−(i＋1)、ＣＣＩ[i](0 ≦i ≦7)は制御符号識別子１０４−(i＋1)、IsControl[i](0≦i ≦7)は制御バイトフラグ１０５−(i＋1)、ShortControl[i](0 ≦i ≦7)は４ビット制御符号１０７−(i＋1)、LongControl[i](0≦i ≦7)は８ビット制御符号１０８−(i＋1)、DataSource[i](0 ≦i ≦7)はデータ転送元１０９−(i＋1)、Data[i](0 ≦i ≦7)はデータ符号１１０−(i＋1)、Ｄ[i](0 ≦i ≦7)は８ビットデータ１１１−(i＋1)、ＤＣ[i](0 ≦i ≦7)はデータ／制御フラグ１０６−(i＋1)、ERR は順序エラー１１２を表す。
【００６３】
又、＋は算術和、−は算術差、×は算術積、orは論理和、and は論理積を表す。EQUAL(a, b) は a＝b のとき１、それ以外のとき０を返す。GREATER_EQUAL(a, b) は a≧b のとき１、それ以外のとき０を返す。SELECT(c, a, b) は c  が非ゼロのとき a  を、ゼロのとき bを返す。
【００６４】
又、Ｎビット信号の第１ビットは、その信号の最上位(Most Significant)ビットを表す。Ｎビット信号の第Ｎビットは、その信号の最下位(Least Significant) ビットを表す。
【００６５】
まず、ステップＳ２００から開始し、65B ブロック６３が入力されるのを待つ。入力されていれば、ステップＳ２０１へ進む。
【００６６】
ステップＳ２０１の処理を説明する。フラグ１００及び最終制御符号１０２−１〜１０２−７から、制御バイトフラグ１０５−１〜１０５−８を決定する。始めに、制御バイトフラグ１０５−１を求める。65B ブロック６３の第１バイトに制御符号が格納される条件は、フラグ１００が１であることである。従って、制御バイトフラグ１０５−１は、フラグ１００に等しい。次に、制御バイトフラグ１０５−２を求める。65B ブロック６３の第２バイトに制御符号が格納される条件は、フラグ１００が１、かつ、最終制御符号１０２−１が１、であることである。よって、制御バイトフラグ１０５−２は、フラグ１００と最終制御符号１０２−１の論理積に等しい。以上を繰り返すと、下式が得られる。
0003747839.tif 000002
これらを再帰的に表現すると、図４のステップＳ２０１の式が得られる。
【００６７】
次に、ステップＳ２０２へ進む。ステップＳ２０２の処理を説明する。制御バイトフラグ１０５−１〜１０５−８及び制御符号位置１０３−１〜１０３−８から、データ／制御フラグ１０６−１〜１０６−８を決定する。始めに、データ／制御フラグ１０６−Ｎ( １≦Ｎ≦８) が１になるための条件を求める。これは、換言すれば、Ｎ番目の8B/10B符号が制御符号になる条件であるから、制御符号位置１０３−１〜１０３−８のいずれかの値が、( Ｎ−１) であれば良い。ただし、制御符号位置１０３−１〜１０３−８が意味を持つためには、対応する制御バイトフラグ１０５−１〜１０５−８が１でなければならない。従って、データ／制御フラグ１０６−Ｎが１になるためには、制御バイトフラグ１０５−Ｍが１であって、かつ、制御符号位置１０３−Ｍの値が( Ｎ−１) であるような、Ｍ( １≦Ｍ≦８) が存在する必要がある。この条件を満たすＭの個数は、次式で求められる：
Σ0 ≦i ≦7  ｛IsControl[i] and EQUAL(CCL[i], N−1)}
この式の値が０のとき、データ／制御フラグ１０６−Ｎを０にし、１のとき、データ／制御フラグ１０６−Ｎを１にする。この式の値が２以上になることは通常あり得ないが、６５Ｂブロック６３にビットエラーが混入していた場合は、その限りでない。ただし、そのようなエラーは順序エラー判定部８８によって検出可能であるため、エラー発生時にデータ／制御フラグ１０６−１〜１０６−８が不定になっても良い。よって、上式の算術和は論理和に置き換えられ、データ／制御フラグ１０６−Ｎ( １≦Ｎ≦８) は、
DC[N−1]＝{IsControl[0] and EQUAL(CCL[0], N −1)} or
{IsControl[1] and EQUAL(CCL[1], N −1)} or
…{IsControl[6] and EQUAL(CCL[6], N −1)} or
{IsControl[7] and EQUAL(CCL[7], N −1)} のように表される。
【００６８】
次に、上式を簡単化するため、i ＋1 ≦j ≦7 を満たす、任意の i、j について、 {IsControl[j] and EQUAL(CCL[j], i)}＝0 が成立することを証明する。
【００６９】
［証明］  前述の64B/65B 変換の説明において、入力された８つの8B/10B符号の順序と、65B ブロック内のバイト順序の関係について述べた。その中で、制御符号のみに着目すれば、順序が常に保存されることを示した。この順序保存の性質を、数式で表すと、
0 ≦ＣＣＬ[0] ＜ＣＣＬ[1] ＜…＜ＣＣＬ［n -1]
となる。ここで nは、65B ブロック６３に存在する制御符号の数である。
【００７０】
上式より、ＣＣＬ[0] ≧0 、ＣＣＬ[1] ≧1 、…、ＣＣＬ［n -1] ≧n −1   が導かれる。これらをまとめると、ＣＣＬ[i] ≧i(0 ≦i ＜n)を得る。
【００７１】
よって、i ＋1 ≦j ＜n を満たす jについて、ＣＣＬ[j] ≧i ＋1 が成立する。すなわち、i ＋1 ≦j ＜n を満たす jについて、EQUAL(ＣＣＬ(j), i) ＝0 である。さらに、IsControl[i]＝0 for n ≦i ≦7 なる関係を利用すると、      i ＋1 ≦j ≦7 を満たす jについて、
{IsControl[j] and EQUAL(CCL[j], i)} ＝0 が成り立つ。［証明終］。
【００７２】
この証明の結果を用いると、データ／制御フラグ１０６−１〜１０６−８を求める式は、図４のステップＳ２０２の式に簡単化される。次に、ステップＳ２０３へ進む。
【００７３】
ステップＳ２０３の処理を説明する。制御バイトフラグ１０５−１〜１０５−８及び制御符号位置１０３−１〜１０３−８に基づいて、制御符号識別子１０４−１〜１０４−８を8B/10B符号の並び順に整列させ、４ビット制御符号１０７−１〜１０７−８として出力する。４ビット制御符号１０７−Ｎ( １≦Ｎ≦８) が定まるためには、制御バイトフラグ１０５−Ｍが１であって、かつ、制御符号位置１０３−Ｍが( Ｎ−１) であるような、Ｍ( １≦Ｍ≦８) が存在する必要がある。この条件を満たすＭの個数が０のとき、データ／制御フラグ１０６−Ｎは０になるから、４ビット制御符号１０７−Ｎは不定であって良い。又、条件を満たすＭの個数が２以上のとき、６５Ｂブロックにエラーが生じているため、４ビット制御符号１０７−Ｎは不定で良い。従って、Ｍの個数を１と仮定しても差し支えない。そこで、４ビット制御符号１０７−Ｎ( １≦Ｎ≦８) は、次式で求められる：
ShortControl[N−1]＝CCI[0]×{IsControl[0] and EQUAL(CCL[0], N −1)} or
CCI[1]×{IsControl[1] and EQUAL(CCL[1], N −1)} or
…
CCI[6]×{IsControl[6] and EQUAL(CCL[6], N −1)} or
CCI[7]×{IsControl[7] and EQUAL(CCL[7], N −1)}
ここで、ステップＳ２０２で証明した、
i ＋1 ≦j ≦7 を満たす jについて、{IsControl[j] and EQUAL(CCL[j], i)} ＝0
となる関係を用いて、上式を簡単化すると、図４のステップＳ２０３の式が得られる。次に、ステップＳ２０４へ進む。
【００７４】
ステップＳ２０４の処理を説明する。４ビット制御符号１０７−１〜１０７−８のそれぞれを、元の８ビットデータに変換し、８ビット制御符号１０８−１〜１０８−８として出力する。この変換は、図９に従って行われる。次に、ステップＳ２０５へ進む。
【００７５】
ステップＳ２０５の処理を説明する。データ／制御フラグ１０６−１〜１０６−Ｎから、データ転送元１０９−１〜１０９−８を求める。まず、８ビットデータ１１１−１〜１１１−８と、データ値１０１−１〜１０１−８との対応関係に、制約が存在することを示す。図６の65B ブロックから8B/10B符号へ変換する際の制約を示す図のように、８ビットデータ１１１−８が、データ値１０１−７に対応すると仮定してみる。このとき、64B/65B 変換の前後でデータ符号の順序が保存される性質を考慮すると、データ値１０１−８に８ビットデータを割り当てられなくなる。従って、８ビットデータ１１１−８がデータ値１０１−７に対応することは、あり得ない。これを一般化すると、８ビットデータ１１１−Ｎ( ２≦Ｎ≦８) が、データ値１０１−Ｍ( １≦Ｍ＜Ｎ) に対応することはない、という制約が得られる。次に、データ転送元１０９−８について考える。上記の制約により、８ビットデータ１１１−８は必ず、データ値１０１−８のみに対応する。よって、データ転送元１０９−８は常に、00000001 (２進数) になる。ここで、データ／制御フラグ１０６−８が１のとき( 即ち、８番目の8B/10B符号が制御符号であるとき) 、データ転送元１０９−８は定義より、意味を持たず、64B/65B 逆変換回路８０の出力に影響を及ぼさない。ただし、データ転送元１０９−８は、データ転送元１０９−７の算出に必要であるので、データ／制御フラグ１０６−８が１であっても、値が代入される。次に、データ転送元１０９−７を求める。上記の制約により、８ビットデータ１１１−７は、データ値１０１−７又は１０１−８のいずれかに対応する。よって、データ転送元１０９−７が取り得る値は、 00000001 ( ２進数) 又は 00000010 ( ２進数) である。どちらの値になるかは、データ／制御フラグ１０６−８の値で決定される。データ／制御フラグ１０６−８が０のとき、データ転送元１０９−８は有効であり、その値 00000001 ( ２進数) を再利用できない。そのため、データ転送元１０９−７は 00000010 ( ２進数) になる。一方、データ／制御フラグ１０６−８が１のとき、データ転送元１０９−８は無効であるから、データ転送元１０９−７を 00000001 ( ２進数) にする。以上より、図４のステップＳ２０５の式が得られる。具体例として、図１０の６５Ｂブロックについてデータ転送元１０９−１〜１０９−８を求めた結果を、図７に示す。図７はデータ／制御フラグＤＣ[i] が１である第４及び第８符号のDataSource[i] は無効であることを示しており、これに対しデータ／制御フラグＤＣ[i] が０である第１〜第３並びに第５〜第７符号のDataSource[i] は有効であることを示している。そして、第７符号Ｄ１０．２は６５Ｂブロックの第８バイトであることを示し、同様に第６符号Ｄ１０．２は６５Ｂブロックの第７バイト、第５符号Ｄ２１．４は６５Ｂブロックの第６バイト、第３符号Ｄ２１．５は６５Ｂブロックの第５バイト、第２符号Ｄ２１．５は６５Ｂブロックの第４バイト、第１符号Ｄ２１．４は６５Ｂブロックの第３バイトであることを示している。次に、ステップＳ２０６へ進む。
【００７６】
ステップＳ２０６の処理を説明する。データ転送元１０９−１〜１０９−８に基づいて、データ値１０１−１〜１０１−８を８Ｂ／１０Ｂ符号の並び順に整列させ、データ符号１１０−１〜１１０−８として出力する。データ符号１１０−Ｎ( １≦Ｎ≦８) は、データ転送元１０９−１〜１０９−８の定義より、次式で求められる：
Data[N−1]＝{(DataSource[N−1]の第１ビット) ×DV[0]} or
{(DataSource[N−1]の第２ビット) ×DV[1]} or
{(DataSource[N−1]の第３ビット) ×DV[2]} or
{(DataSource[N−1]の第４ビット) ×DV[3]} or
{(DataSource[N−1]の第５ビット) ×DV[4]} or
{(DataSource[N−1]の第６ビット) ×DV[5]} or
{(DataSource[N−1]の第７ビット) ×DV[6]} or
{(DataSource[N−1]の第８ビット) ×DV[7]}。
【００７７】
ステップＳ２０５で示したように、データ転送元１０９−２〜１０９−８が取り得る値には、以下の制約がある。
DataSource[7] は、常に 00000001 ( ２進数) 。
DataSource[6] の第１ビット〜第６ビットは、常に０。
DataSource[5] の第１ビット〜第５ビットは、常に０。
DataSource[4] の第１ビット〜第４ビットは、常に０。
DataSource[3] の第１ビット〜第３ビットは、常に０。
DataSource[2] の第１ビット〜第２ビットは、常に０。
DataSource[1] の第１ビットは、常に０。
この制約を利用して上式を簡単化すると、図５のステップＳ２０６の式が得られる。次に、ステップＳ２０７へ進む。
【００７８】
ステップＳ２０７の処理を説明する。データ／制御フラグ１０６−Ｎ( １≦Ｎ≦８) が１のとき、８ビット制御符号１０８−Ｎを８ビットデータ１１１−Ｎに代入し、０のとき、データ符号１１０−Ｎを８ビットデータ１１１−Ｎに代入する。次に、ステップＳ２０８へ進む。
【００７９】
ステップＳ２０８の処理を説明する。制御バイトフラグ１０５−１〜１０５−８及び最終制御符号１０２−８、制御符号位置１０３−１〜１０３−８から、順序エラー１１２の有無を判定する。６４Ｂ／６５Ｂ変換の前後で制御符号の順序は不変であるから、６５Ｂブロック６３にエラーが生じていなければ、次の関係式が成立する：
IsControl[1]＝1 のとき、CCL[0]＜CCL[1]
IsControl[2]＝1 のとき、CCL[1]＜CCL[2]
IsControl[3]＝1 のとき、CCL[2]＜CCL[3]
IsControl[4]＝1 のとき、CCL[3]＜CCL[4]
IsControl[5]＝1 のとき、CCL[4]＜CCL[5]
IsControl[6]＝1 のとき、CCL[5]＜CCL[6]
IsControl[7]＝1 のとき、CCL[6]＜CCL[7]
又、６５Ｂブロック６３の第８バイトが制御符号であれば、最終制御符号１０２−８は必ず０になる。この関係を式で表すと、
IsControl[7]＝1 のとき、LCC[7]＝0
となる。
【００８０】
これら８つの関係式の中で、１つでも成立しないものがあれば、順序エラー１１２を１にする。次に、ステップＳ２０９へ進む。
【００８１】
ステップＳ２０９では、８ビットデータ１１１−１〜１１１−８及びデータ／制御フラグ１０６−１〜１０６−８、順序エラー１１２を出力する。その後、ステップＳ２００へ戻る。
【００８２】
次に、この符号変換方法及び符号逆変換方法をコンピュ−タに実行させるための変換プログラムについて説明する。図３にフローチャ−トで示す変換プログラムを変換回路４０内部の記憶装置（不図示）に格納しておく。変換回路４０内部には各部４１〜４７を制御する制御部（不図示）も設けておく。そして、制御部は記憶装置から変換プログラムを読出し、その変換プログラムに従って各部４１〜４７を制御する。一方、図４及び図５にフローチャ−トで示す逆変換プログラムを逆変換回路８０内部の記憶装置（不図示）に格納しておく。逆変換回路８０内部には各部８１〜８８を制御する制御部（不図示）も設けておく。そして、制御部は記憶装置から逆変換プログラムを読出し、その逆変換プログラムに従って各部８１〜８８を制御する。
【００８３】
なお、上記本発明では制御符号が２個の場合について説明したが、これに限定されるものではなく、制御符号が０個から８個の場合のいずれにも適応が可能なことは、例えば図８を参照すれば明白である。
【００８４】
【発明の効果】
本発明による符号変換システムによれば、時系列に任意の順序で入力される２種類の符号を、第１種の符号を時系列符号として一括して先頭に配置し、第２種の符号を時系列符号として一括して前記第１種の符号の次に配置することにより１個のブロックに変換する符号変換システムであって、前記入力される符号の各々が第１種であるか第２種であるかを示す識別符号が前記符号とともに入力され、前記識別符号に基づき前記入力される符号が第１種であるか第２種であるかを識別し、入力される符号が第１種である場合はその符号を時系列符号として一括して先頭に配置し、残りの第２種の符号を時系列符号として一括して前記第１種の符号の次に配置することにより前記１個のブロックに変換する符号変換手段を含むため、冗長な演算を省略し、これにより少ないハ−ドウエア資源で64B/65B 変換及びその逆変換を実現することが可能となる。
【００８５】
又、本発明による他の符号変換システム、符号変換方法、他の符号変換方法、変換プログラム及び他の変換プログラムも上記符号変換システムと同様の効果を奏する。
【図面の簡単な説明】
【図１】本発明による64B/65B 変換回路の一例の構成図である。
【図２】本発明による64B/65B 逆変換回路の一例の構成図である。
【図３】  64B/65B 変換回路４０の動作を示すフロ−チャ−トである。
【図４】  64B/65B 逆変換回路８０の動作を示すフロ−チャ−トである。
【図５】  64B/65B 逆変換回路８０の動作を示すフロ−チャ−トである。
【図６】  65B ブロックから8B/10B符号へ変換する際の制約を示す図である。
【図７】６５Ｂブロックについてデータ転送元を求めた結果を示す図である。
【図８】  65B ブロックの構成図である。
【図９】制御符号の４ビット表現の一例を示す図である。
【図１０】  64B/65B 変換の一例を示す図である。
【符号の説明】
４０  64B/65B 変換回路
４１  制御符号変換部
４２  データ符号レジスタ
４３  制御符号レジスタ
４４  制御符号位置レジスタ
４５  符号カウンタ
４６  制御符号カウンタ
４７  65B ブロック生成部
８０  64B/65B 逆変換回路
８１  制御バイト判定部
８２  データ／制御判定部
８３  制御符号整列部
８４  制御符号復元部
８５  データ転送元決定部
８６  データ符号整列部
８７  データ／制御選択部
８８  順序エラー判定部
【図１】
0003747839.tif 000003
【図２】
0003747839.tif 000004
【図３】
0003747839.tif 000005
【図４】
0003747839.tif 000006
【図５】
0003747839.tif 000007
【図６】
0003747839.tif 000008
【図７】
0003747839.tif 000009
【図８】
0003747839.tif 000010
【図９】
0003747839.tif 000011
【図１０】
0003747839.tif 000012