(57)【要約】【課題】連接符号を改良し、メモリ容量とそれに伴うメモリ用診断回路を削減すること。  【解決手段】従来のシンドローム演算回路や検査符号算出回路に含まれるレジスタに従来のインターリーバーで使われていたアドレス制御を施して、インターリーブした時と同じ演算結果を導き出す。【選択図】図１７
2010074210.tif 000002
【特許請求の範囲】
【請求項１】
符号回路又は復号回路に用いる連接符号の演算回路であって、
符号化又は復号化のための所定の演算を行う演算部と、
第１乃至第τ（τは２以上の整数）のレジスタと、
前記第１乃至第τのレジスタのうち、前記演算部の演算結果を書き込むレジスタのアドレスを指定するアドレス制御部と
を備え、
前記アドレス制御部は、
フレームの先頭セグメントに対する演算結果の書き込み先が、フレーム毎に前記第１乃至第τのレジスタに順次巡回して切り替わるように、第１のアドレスを変更するフレーム毎のアドレス制御と、
フレーム内の各セグメントに対する演算結果の書き込み先が、セグメント毎に、フレームの先頭セグメントに対する第１のアドレスが示すレジスタから、前記第τ乃至第１のレジスタに順次巡回して切り替わるように、第２のアドレスを変更するセグメント毎のアドレス制御と
を実行し、
第２のアドレスに従い、前記演算部での演算結果がセグメント毎に前記第１乃至第τのレジスタに書き込まれる前記連接符号の演算回路。
【請求項２】
前記アドレス制御部は、
前記フレーム毎のアドレス制御では、第１のアドレスを、前記第１のレジスタから前記第τのレジスタの順に、かつ、前記第τのレジスタの次は前記第１のレジスタになるように巡回して変更し、
前記セグメント毎のアドレス制御では、第２のアドレスを、第１アドレスが示す前記レジスタから前記第１のレジスタの順に、かつ、前記第１のレジスタの次は前記第τのレジスタになるように、かつ、前記第τのレジスタから前記第１のレジスタの順に巡回して変更する請求項１に記載の演算回路。
【請求項３】
前記演算回路は、復号回路におけるシンドローム演算回路であって、
前記演算部は、入力されるデータに対してシンドローム多項式の係数値を求めるための演算を行い、
予め定められたシンドローム多項式の係数値が確定するセグメントに対して前記演算部による演算及び前記アドレス制御部が指定する第２のアドレスが示す前記レジスタへの書き込み後、該レジスタに記憶された値をシンドローム多項式の係数値として出力する請求項１に記載の演算回路。
【請求項４】
前記演算部は、
第２のアドレスが示す前記レジスタからデータを読み出し、読みだされたデータＴＥＭＰ＿Ｓｂと、入力したデータｙと、係数αとに基づき次式の演算をし、演算結果を第２のアドレスが示す前記レジスタに書き込む請求項３に記載の演算回路。
演算結果＝ＴＥＭＰ＿Ｓｂ＋ｙｎ−１−ｃｙｃｌｅ・（α２ｂ＋１）ｎ−１−ｃｙｃｌｅ    （０≦ｂ＜ｔ）
ここで、ｎ：情報ビット数と検査符号ビット数の和、ｙｊ：１ビットの入力データ（０≦ｊ＜ｎ）、ｃｙｃｌｅ：サイクル数、ｂ：シンドローム多項式の係数の識別情報、ｔ：訂正可能な最大ビット数。
【請求項５】
予め定められた係数αの初期値から該係数の指数が減っていくようにガロア体乗算して、シンドローム係数値を求めるための係数αを求める係数演算部
をさらに備える請求項３に記載の演算回路。
【請求項６】
請求項３の演算回路において、
前記シンドローム多項式の係数値が確定するセグメントは、
情報ビット数と検査符号ビット数の和をｎ、１セグメントあたりのビット数をη、ｎをηで除算した商をξｓとすると、
ｎがηで割り切れる場合には、次式で求められ、
前記セグメント位置＝ξｓ−ＭＯＤ（ξｓ，τ）
ｎがηで割り切れない場合は、次式で求められる前記演算回路。
前記セグメント位置＝（ξｓ＋１）−ＭＯＤ（（ξｓ＋１），τ）
ここで、ＭＯＤ（ξｓ，τ）、ＭＯＤ（（ξｓ＋１），τ）は、ξｓ、（ξｓ＋１）をτでそれぞれ割った際の余剰。
【請求項７】
出力されるシンドローム多項式の係数値は、入力されるフレームをインターリーブ又はデインタリーブして並びかえられた新フレームに対するシンドローム多項式の係数値に相当する請求項３に記載の演算回路。
【請求項８】
前記演算回路は、復号回路おける誤り訂正回路であって、
前記演算部は、エラーの位置を入力して誤り訂正の処理を実行する請求項１に記載の演算回路。
【請求項９】
前記演算回路は、符号回路おける検査符号算出回路であって、
前記演算部は、入力されるデータに対して検査符号多項式の係数値を求めるための演算を行い、
予め定められた検査符号多項式の係数値が確定するセグメントに対して前記演算部による演算及び前記アドレス制御部が指定する第２のアドレスが示す前記レジスタへの書き込み後、該レジスタに記憶された値を検査符号多項式の係数値として出力する請求項１に記載の演算回路。
【請求項１０】
前記演算部は、
第２のアドレスが示す前記レジスタからデータを読み出し、読みだされたデータＴＥＭＰ＿Pｂと、入力したデータｉと、係数γとに基づき次式の演算をし、演算結果を第２のアドレスが示す前記レジスタに書き込む請求項９に記載の演算回路。
演算結果＝ＴＥＭＰ＿Ｐｂ＋ｉｋ−１−ｃｙｃｌｅ・γｎ−１−ｃｙｃｌｅ、ｂ    （０≦ｂ＜ｍ）
ここで、ｋ：情報ビット数、ｎ：情報ビット数と検査符号ビット数の和、ｉｊ：１ビットの入力データ（０≦ｊ＜ｋ）、ｃｙｃｌｅ：サイクル数、ｂ：検査符号多項式の係数の識別情報、ｍ：検査符号ビット数。
【請求項１１】
前記演算部は、
予め定められた生成多項式に基づいて逆にシフト、又は、高次から低次に向けてシフトするシフトレジスタを用いて検査符号を求めるための係数γを求める係数演算部
をさらに備える請求項９に記載の演算回路。
【請求項１２】
請求項９の演算回路において、
前記検査符号多項式の係数値が確定するセグメントは、
情報ビット数をｋ、１セグメントあたりのビット数をη、ｋをηで除算した商をξｐとすると、
ｋがηで割り切れる場合には、次式で求められ、
前記セグメント位置＝ξｐ−ＭＯＤ（ξｐ，τ）
ｋがηで割り切れない場合は、次式で求められる前記演算回路。
前記セグメント位置＝（ξｐ＋１）−ＭＯＤ（（ξｐ＋１），τ）
ここで、ＭＯＤ（ξｐ，τ）、ＭＯＤ（（ξｐ＋１），τ）は、ξｐ、（ξｐ＋１）をτでそれぞれ割った際の余剰。
【請求項１３】
出力される検査符号多項式の係数値は、入力されるフレームをインターリーブ又はデインタリーブして並びかえられた新フレームに対する検査符号多項式の係数値に相当する請求項９に記載の演算回路。
【請求項１４】
前記演算回路は、符号回路おける検査符号算出回路であって、
前記演算部は、入力された検査符号の値を信号に追加する請求項１に記載の演算回路。
【請求項１５】
前記演算回路は、複数ビットをパラレルで入力し、
パラレルで入力されるビット数は、セグメントあたりのビット数に対応する請求項１に記載の演算回路。
【請求項１６】
符号回路又は復号回路に用いる連接符号の演算回路におけるレジスタのアドレス制御方法であって、
符号化又は復号化のための所定の演算を行い、
フレームの先頭セグメントに対する演算結果の書き込み先が、フレーム毎に第１乃至第τのレジスタに順次巡回して切り替わるように、第１のアドレスを変更するフレーム毎のアドレス制御を実行し、
フレーム内の各セグメントに対する演算結果の書き込み先が、セグメント毎に、フレームの先頭セグメントに対する第１のアドレスが示すレジスタから、第τ乃至第１のレジスタに順次巡回して切り替わるように、第２のアドレスを変更するセグメント毎のアドレス制御を実行し、
第２のアドレスに従い、演算結果がセグメント毎に第１乃至第τのレジスタに書き込まれる前記アドレス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連接符号の演算回路及びアドレス制御方法に係り、特に、効率的な回路構成を実現する改良された連接符号のアルゴリズムを適用する連接符号の演算回路及びアドレス制御方法に関する。
【背景技術】
【０００２】
近年、世界各地の通信事業者が次世代ネットワーク（以下、ＮＧＮ：ｎｅｘｔ  ｇｅｎｅｒａｔｉｏｎ  ｎｅｔｗｏｒｋ）の構築を進めている。ＮＧＮにおける伝達網は、図１に示すような階層構造をもっており、このうち、メトロアクセス（１００Ｋｍ以下）〜コア（１、０００Ｋｍ超）の光コアメトロ網は、光トランスポートシステムによって構成されている。
【０００３】
光トランスポートシステムでは、ネットワーク管理者の保守、運用コストを削減するため２００３年に国際電気通信連合（以下、ＩＴＵ−Ｔと称する）が勧告Ｇ．７０９において定めたＯｐｔｉｃａｌ  Ｔｒａｎｓｐｏｒｔ  Ｎｅｔｗｏｒｋ（ＯＴＮ）規格が採用されている。
【０００４】
ＯＴＮ規格では、情報伝送フレームに対して伝送路上の情報劣化などで加わるエラーを訂正する機能の追加することを正式に定めており、勧告Ｇ．９７５．１には、エラー訂正機能を実現する８つのタイプのアルゴリズムについての記述がある。これらの内の殆どは、符号論理においては基本的なＢＣＨ（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ）符号やＲＳ（Ｒｅｅｄ−ｓｏｌｏｍｏｎ）符号を組み合わせた連接符号である。
【０００５】
連接符号は、高い符号化利得を実現できる一方で、膨大なメモリ容量を必要とする。これは、連接符号が後述するデータの並び替え（インターリーブ）という概念を基礎にしているためである。
【０００６】
エラー訂正を行う回路は符号回路と復号回路を含む。符号回路は検査符号を算出し、信号に追加するための回路であり、復号回路は伝送路上で混入したエラーの信号上の位置を算出し、元のデータに戻すための回路である。
【０００７】
一般に符号・復号回路をＬＳＩに実装した場合、大概はメモリも同一チップ内に実装される。このようなメモリをＯＮ−ＣＨＩＰメモリというが、ＬＳＩ内のメモリは、論理回路との領域を奪う上、電力を消費し発熱の第一原因と為り易い。更に近年の傾向としてメモリには診断回路が加えられるのが一般的であり、このメモリ診断回路も無視できない熱源として課題となっている。
【非特許文献１】ＩＴＵ−Ｔ  勧告Ｇ．７０９
【非特許文献２】ＩＴＵ−Ｔ  勧告Ｇ．９７５．１
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述の通り、従来の連接符号には大量のメモリが必要である。この点を勧告Ｇ．９７５．１のアルゴリズムＩ３（以下、Ｇ．９７５．１  Ｉ３とする）を例として説明する。
【０００９】
Ｇ．９７５．１  Ｉ３の概要図を図２に示す。
Ｇ．９７５．１  Ｉ３の符号回路ａ１は、外側符号回路ａ１１と内側符号回路ａ１２を有する。外側符号回路ａ１１は、更に８つのＢＣＨ（３８６０、３８２４）符号の符号回路ａ１１１を含み、内側符号回路ａ１２は１６つのＢＣＨ（２０４０、１９３０）符号の符号回路ａ１２１を含む。図２では、ＢＣＨ（３８６０、３８２４）符号をＢＣＨ＿Ａ符号、ＢＣＨ（２０４０、１９３０）符号をＢＣＨ＿Ｂ符号として表している。ＢＣＨ（３８６０、３０２４）は表１、ＢＣＨ（２０４０、１９３０）は、Ｇ．９７５．１  Ｉ３において表２のようにそれぞれ符号化されている。
【表１】
2010074210.tif 000003
【表２】
2010074210.tif 000004
【００１０】
Ｇ．９７５．１  Ｉ３の復号回路ａ２は、外側復号回路ａ２１と内側復号回路ａ２２を有する。外側符号回路ａ２１は、更に８つのＢＣＨ（３８６０、３８２４）符号の復号回路ａ２１１を含み、内側復号回路ａ２２は１６つのＢＣＨ（２０４０、１９３０）符号の復号回路ａ２２１を含む。なお、勧告Ｇ．９７５．１の例では、この連接符号の復号回路は３回のイテレーション（繰り返し、反復）を行っているため、図示の例はそれに習い、外側復号回路ａ２１と内側復号回路ａ２２をそれぞれ３個づつ使用している。
【００１１】
Ｇ．９７５．１  Ｉ３は、外側符号・復号回路用のフォーマット（以下、外側フォーマット）と内側符号・復号回路用のフォーマット（以下、内側フォーマット）の２種類がある。このため、Ｇ．９７５．１  Ｉ３は、外側フォーマットを内側フォーマットに変換するインターリーバーａ１３、ａ２４、ａ２５と、内側フォーマットを外側フォーマットに変換するデインターリーバーａ１４、ａ２３を有する。
【００１２】
Ｇ．９７５．１  Ｉ３では、勧告Ｇ．７０９のＯＴＮ規格に準拠したフレーム（以下、ＯＴＮフレーム）を２５５個のセグメントに分けて、このセグメント単位での並び替え（例えば、Ｇ．９７５．１、Ｆｉｇｕｒｅ  Ｉ．１０参照）を行いながら訂正率をあげる手法を取っている。
図３に、２５５セグメントに分割したＯＴＮフレームと８つのＢＣＨ（３８６０、３８２４）符号のフォーマットの関係を示す。
【００１３】
Ｇ．９７５．１  Ｉ３でのセグメントの並び替えは、８つのフレームを並び替えることで行われる。このとき、インターリーバーでは８フレーム分のデータ、つまり３２，６４０×８＝２６１，１２０ビットをメモリに溜める必要がある。また、デインターリーバーにも同量のメモリが必要となる。後で一般的な場合を論じるため、この並び替えするフレーム数をτ（上述の例ではτ＝８）と置くことにする。
【００１４】
図２に示されているインターリーバーａ２４とデインターリーバーａ１４の対は、デバッグ性向上のために用いるものである。勧告Ｇ．７０９で定められているＯＴＮフレームは、Ｇ．９７５．１  Ｉ３の構成では外側フォーマットとなる。このため、内側フォーマットはＯＴＮフレームを並び替えたものとなる。もしインターリーバーａ１４、デインターリーバーａ２４がなければ、伝送路上では内側フォーマットになり、アナライザーでのデッバグが困難になる。このため、図２には、インターリーバーａ２４とデインターリーバーａ１４を加えている。なお、勧告Ｇ．９７５．１のオリジナルのアルゴリズムには、インターリーバーａ２４とデインターリーバーａ１４の対は付いていない。
【００１５】
この構成のため、Ｇ．９７５．１  Ｉ３の連接符号は、デバッグ用のインターリーバーａ２４とデインターリーバーａ１４を外すと２６１，１２０×６＝１、５６６、７２０ビット≒１．５Ｍビット（１Ｋ＝１０２４、１Ｍ＝１０２４Ｋ）というメモリ量を必要となる。デバッグ用のインターリーバーａ２４とデインターリーバーａ１４も含めると２６１，１２０×８≒２．０Ｍビットのメモリが必要となる。前述の通り、このメモリは符号・復号回路と一緒にＬＳＩ内部に搭載されることが多い。この場合、２．０Ｍビットというメモリ量は巨大であり、ＬＳＩの領域を大きく占め、電力を消費し発熱の第一原因と為り易い。
本発明は、以上の点に鑑み、連接符号を改良し、メモリ量を大幅に削減する連接符号の演算回路及びアドレス制御方法を提供することを目的とする。また、本発明は、インターリーバー、デインターリーバーを使用せずに並び替えを行ったのと同様の処理をすることを目的のひとつとする。
【課題を解決するための手段】
【００１６】
本発明では、従来の連接符号の符号・復号回路内部のアルゴリズムを根本的に見直し、連接符号に改良を加え、メモリ量を大幅に削減する。例えば、従来インターリーバーによって行われていたデータ変換を使わずに連接符号を実現する。
【００１７】
連接符号は、光通信の分野に限らず、高い符号化利得を得る手法として今後、適用の分野が広がる可能性も十分持つ。このため今回の発明は、非常に符号・復号技術の向上に貢献するものと考えている。
【００１８】
本発明の第１の解決手段によると、
符号回路又は復号回路に用いる連接符号の演算回路であって、
符号化又は復号化のための所定の演算を行う演算部と、
第１乃至第τ（τは２以上の整数）のレジスタと、
前記第１乃至第τのレジスタのうち、前記演算部の演算結果を書き込むレジスタのアドレスを指定するアドレス制御部と
を備え、
前記アドレス制御部は、
フレームの先頭セグメントに対する演算結果の書き込み先が、フレーム毎に前記第１乃至第τのレジスタに順次巡回して切り替わるように、第１のアドレスを変更するフレーム毎のアドレス制御と、
フレーム内の各セグメントに対する演算結果の書き込み先が、セグメント毎に、フレームの先頭セグメントに対する第１のアドレスが示すレジスタから、前記第τ乃至第１のレジスタに順次巡回して切り替わるように、第２のアドレスを変更するセグメント毎のアドレス制御と
を実行し、
第２のアドレスに従い、前記演算部での演算結果がセグメント毎に前記第１乃至第τのレジスタに書き込まれる前記連接符号の演算回路が提供される。
【００１９】
本発明の第２の解決手段によると、
符号回路又は復号回路に用いる連接符号の演算回路におけるレジスタのアドレス制御方法であって、
符号化又は復号化のための所定の演算を行い、
フレームの先頭セグメントに対する演算結果の書き込み先が、フレーム毎に第１乃至第τのレジスタに順次巡回して切り替わるように、第１のアドレスを変更するフレーム毎のアドレス制御を実行し、
フレーム内の各セグメントに対する演算結果の書き込み先が、セグメント毎に、フレームの先頭セグメントに対する第１のアドレスが示すレジスタから、第τ乃至第１のレジスタに順次巡回して切り替わるように、第２のアドレスを変更するセグメント毎のアドレス制御を実行し、
第２のアドレスに従い、演算結果がセグメント毎に第１乃至第τのレジスタに書き込まれる前記アドレス制御方法が提供される。
【発明の効果】
【００２０】
本発明によると、連接符号を改良し、メモリ量を大幅に削減する連接符号の演算回路及びアドレス制御方法を提供することができる。また、本発明によると、インターリーバー、デインターリーバーを使用せずに並び替えを行ったのと同様の処理をすることができる。
【発明を実施するための最良の形態】
【００２１】
１．改良された連節符号の回路
本実施の形態は、外側符号・復号回路に関して改良し、内側符号・復号回路に関してはそのまま用いることができる。外側符号・復号回路は、８個の同じＢＣＨ（３８６０、３８２４）の符号・復号回路を並べたものである。そのため、本発明のメインは、ＢＣＨ（３８６０、３８２４）の符号・復号回路の改良である。よってこれからは、このＢＣＨ（３８６０、３８２４）の符号・復号回路の改良点について述べる。
【００２２】
符号・復号回路の構成を図２５に示す。
符号回路ｊ１は、検査符号を演算し入力データに追加するものである。また、復号回路ｊ３は、入力データから回路ｊ３１において誤り位置を割り出し、回路ｊ３２においてその誤り位置をもとに訂正するものである。入力データを誤り位置算出に掛るため、その時間分だけ遅延させるバッファｊ３３が必要となる。なお、誤り位置を割り出す回路ｊ３１は、シンドローム値を求めるシンドローム演算回路ｊ３１１と、シンドローム値から誤り位置多項式を演算する回路ｊ３１２と、誤り位置多項式から誤り位置を計算するチェン検索回路ｊ３１３を有する。
【００２３】
ここで、改良したアルゴリズムの原理を説明するため、まずは、最もわかり易いシンドローム演算回路を例にして説明する。
【００２４】
ＢＣＨ（ｎ、ｋ）の場合、つまり、情報ビット数がｋで、情報ビット数＋検査符号ビット数がｎのとき、光ファイバｊ２を通りシンドローム演算回路ｊ３１１に入力される１ビット単位のデータをｙｎ−１、ｙｎ−２、‥、ｙ１、ｙ０とすると訂正できるビット数がｔの場合、求めるシンドローム多項式は、
Ｓ（ｚ）＝ｓ０＋ｓ１ｚ＋  ‥  ＋ｓ２ｔ−１ｚ２ｔ−１    （１）
で表される。このときデータは、添え字が大きいほうからｎ−１、ｎ−２の順でシンドローム演算回路に入力される。ここで、それぞれの係数（シンドローム多項式の係数値、シンドローム係数値）は、
ｓｊ＝ｙｎ−１（αｊ）ｎ−１＋  ‥  ＋ｙ１（αｊ）１＋ｙ０  （０≦ｊ＜２ｔ）    （２）
となる。ｙｎ−１、ｙｎ−２、‥、ｙ１、ｙ０はガロア体ＧＦ（２）の元であり、値として「１」か「０」しか取らず、加算と減算は排他的論理和（ｘｏｒ）、乗算は論理積（ａｎｄ）と同じである。
【００２５】
また、今回はＢＣＨ符号を扱うため、係数には以下の関係があり、添え字が奇数のものは、偶数で表現できる。
ｓ１＝（ｓ０）２、ｓ３＝（ｓ０）４、ｓ５＝（ｓ２）２、‥    （３）
このため、シンドローム演算回路での係数の演算は、添え字が偶数のもののみとし、後段の誤り位置多項式を演算する回路で添え字が奇数のものの算出を行うことにする。
【００２６】
図４に、従来のシンドローム演算回路図を示す。
従来のシンドローム演算回路は図４のように演算部ｂ１１とレジスタ部ｂ１２で成り立っている。ここで簡単に従来のシンドローム演算回路の仕組みを説明する。式（２）は、
ｓｊ＝（‥（（０・αｊ＋ｙｎ−１）・αｊ＋ｙｎ−２）・αｊ＋ｙｎ−３‥）・αｊ＋ｙ０
（０≦ｊ＜２ｔ）    （４）
と変換し、演算としては、前の値にガロア体乗算器ｂ１１１によってαｊを乗算した後、ガロア体加算器ｂ１１２によってｙを加算することをｎ回繰り返しｓｊを求める。
【００２７】
図５に、改良されたシンドローム演算回路図を示す。
このとき、シンドローム演算回路の構成を図５のようにレジスタ部ｃ１２にレジスタｃ１２１をτ個（τは２以上の整数）使用し、以下に示す方法を用いることにより、インターリーバー、デインターリーバーを使用せずに並び替えを行ったのと同様の処理をすることが出来る。シンドローム演算回路ｃ１は、例えば、演算部ｃ１１と、複数のレジスタｃ１２１を有するレジスタ群ｃ１３と、係数演算部ｃ１３と、アドレス制御部ｃ１４とを備える。なお、誤り訂正回路、検査符号算出回路、検査符号追加回路などに適用する場合にも、同様の構成をとることができる。この場合、演算部ｃ１１はそれぞれ、誤り訂正などの処理を行うように構成し、係数演算部ｃ１３は省略できる。
【００２８】
この手法では、０セグメント目では＃τ−１のレジスタ、１セグメント目では＃τ−２のレジスタという具合にセグメントが変わるごとに使うレジスタを変えて行く。そしてτセグメント目で再び＃τ−１のレジスタを使うようにする。このように、使うレジスタをアドレス制御部ｃ１４で制御することで、ある１つのレジスタに注目すれば、あたかも並び替えられたもののシンドロームを演算していることになる。このレジスタ制御は、以下に示すセグメント毎のアドレス制御と、フレーム毎のアドレス制御の二つによって実現される。
【００２９】
具体例として、今回の場合（τ＝８）について、図６を用いながらセグメント毎のアドレス制御と、フレーム毎のアドレス制御について説明する。セグメント毎のアドレス制御は、あるフレーム内でのアドレス制御である。例えば図６の０フレーム番目において、０セグメント目では＃７のレジスタを参照し、１セグメント目では＃６のレジスタを参照し、８セグメント目で再び＃７のレジスタに戻っている。参照されたメモリの番号、つまりアドレスは７、６、５、‥、０、７、６、‥と巡回して変化する。この制御は２４１セグメント目まで続けられる。２４２セグメント目からは、ダミービットのみしか含まなくなるため（図３を参照）、この制御は行わなくてよい。
【００３０】
フレーム毎のアドレス制御はフレーム間を跨った場合のアドレス制御である。１フレーム番目の０セグメント目のアドレスは、前フレームの０セグメント目から計算される。
図６の例では、各フレームの０セグメント目のアドレスが７、０、１、‥、６、７、０、‥のように巡回して変化していることがわかる。
【００３１】
改良されたシンドローム演算回路のレジスタ制御は、まず各フレームにおいて０セグメント目のみフレーム毎のアドレス制御を行い、０セグメント以外ではセグメント毎のアドレス制御を行うことによって行われることができる。この手法により、例えば、図６の＃７のレジスタに注目したフレームの演算では、７フレーム番目の２３９セグメントで求めるシンドローム値が与えられることになる。
【００３２】
但し、この手法を用いるとき１点だけ注意する必要がある。＃７のレジスタからみると、まず図６の０フレーム番目において０セグメント目の入力データを演算し、次に８セグメント番目で演算を行うことになる。この場合、１から７セグメントまでは＃７のレジスタ内のデータは何も変わらなかったことになる。従来方式では式（４）よりデータが入力される毎にαｊを乗算してｙｎ−１、ｙｎ−２、‥、ｙ１に対する係数（αｊ）ｎ−１、（αｊ）ｎ−２、‥、（αｊ）１を演算している。しかし、この方法では１から７セグメントまでの係数は出せなくなってしまう。本実施の形態では、この課題を解決する方法として、図５のように係数演算部ｃ１３を設けた。係数演算部ｃ１３では、係数を（αｊ）ｎ−１、（αｊ）ｎ−２、（αｊ）ｎ−３、‥と求めていくため、データが入力される毎にαｊで除算することになる。つまり、従来手法では各係数を算出するためαｊを乗算したが、本実施の形態の手法では、その逆を行うことになる。
【００３３】
この方式の優れている点のひとつは、データそれ自体は並び変わっていないところである。つまり、これまで必要であったインターリーバーとデインターリーバーが不要になるという利点がある。一方で、インターリーバーとデインターリーバーを用いてデータを並び替えた時のように、誤り訂正能力を超えるエラーがひとつのフレーム内で発生しても、分散して誤り訂正することができる利点を有している。
【００３４】
次に、この原理で動くシンドローム演算回路のアルゴリズムを図１８のフローチャートを用いて説明する。これまでは、ＢＣＨ（３８６０、３８２４）を具体例として話しを進めてきたが、ここからは一般的な話をする。ここでフローチャートに使われる値は以下の通りである。なお、図１８のフローチャートは、情報１ビットで１サイクル動作する。
ｃｙｃｌｅ：サイクル数。
Ｓ＿ＤＥＣ：シンドローム係数値が確定するサイクル。
ｎ：信号ビット数＋検査符号ビット数。
τ：並び替えフレーム数。
ｔ：訂正可能な最大ワード数。
η：１セグメントあたりのビット数
ＲＥＧ＿Ｓａ、ｂ：レジスタ（０≦ａ＜τ、０≦ｂ＜ｔ）。
ａｄｒ：レジスタのアドレス（第２のアドレス）、（０≦ａｄｒ＜τ）。
ｆｒａｍｅ＿ｔｏｐ：フレームの先頭を示す信号。
ｔｏｐ＿ａｄｒ：フレーム先頭時のアドレス（第１のアドレス）。
ｙｊ：１ビットの入力データ（０≦ｊ＜ｎ）。
Ｓｂ：シンドローム係数（出力値）（０≦ｂ＜ｔ）。
【００３５】
まず、ｓ１００にて初期化が行われる。ここで図５のＲＥＧを新たにＲＥＧ＿Ｓａ、ｂ（０≦ａ＜τ、０≦ｂ＜ｔ）とおく。ここで、ａはアドレス、ｂはシンドローム多項式の係数を示す添え字である。ＲＥＧ＿Ｓａ、ｂに対するアドレスをａｄｒと置き、それぞれ初期化する。また、ここでのｔｏｐ＿ａｄｒとは、各フレームにおける０セグメント目でのアドレスである。なお、このｓ１００の初期化は、回路で言うならばリセット後の動作にあたる。
【００３６】
次にｓ１０１の分岐は、フレームの先頭であるかどうかを判断するものである。ここでは、先頭である場合をｆｒａｍｅ＿ｔｏｐ＝１、そうでない場合をｆｒａｍｅ＿ｔｏｐ＝０としてある。図１８のフローチャートでは、カウンタ値をｃｙｃｌｅと表しｓ１０２で値を０にする。
【００３７】
次にアドレスの制御を行う。ｆｒａｍｅ＿ｔｏｐ＝１の場合は、前述したフレーム毎のアドレス制御を行う（ｓ１０４）。図１９のフローチャートは、一般の場合におけるフレーム毎のアドレス制御を示している。図１９のフローチャートはフレームの先頭が来たｆｒａｍｅ＿ｔｏｐ＝１のみ機能するため、それ以外はｔｏｐ＿ａｄｒの値は変化しない。ステップｓ２０１〜ｓ２０３でｔｏｐ＿ａｄｒを更新する。また、ここでの値を、図１８のフローチャートに渡すため、更新された値をレジスタのアドレスａｄｒに代入している（ｓ２０４）。
【００３８】
ｆｒａｍｅ＿ｔｏｐ＝０の場合は、前述したセグメント毎のアドレス制御を行う（ｓ１０３）。図２０のフローチャートは、セグメント毎のアドレス制御を示している。ただし、アドレスａｄｒは、セグメント毎に変化するので、ｓ３０１のようにセグメントの区切りか判断する。例えば、１セグメントあたりのビット数をηとすると、ｃｙｃｌｅをηで割り切れるときのみ機能する。ｓ３０２〜ｓ３０４でａｄｒを更新する。
【００３９】
ｆｒａｍｅ＿ｔｏｐ＝１の場合は、レジスタ内の値をクリアするためｓ１０６の処理をする。それ以外は、ｓ１０５に示されるように計算されたアドレスａｄｒが示す値ＲＥＧ＿Ｓａｄｒ、ｂをリードする。リードされた値は、ＴＥＭＰ＿Ｓｂに代入される。この値は、後のｓ１０８に使うための仮の変数であり、回路でいうところのワイヤーに相当する。
【００４０】
演算が必要なデータは図３で示す通り、情報部と検査符号部のみで、ダミー部は不要であるため、ｃｙｃｌｅ＝ｎで演算は終了する。ｓ１０７は情報部と検査符号部のみを演算するための処理である。
【００４１】
ｓ１０８は式（２）のガロア体演算を示している。ただし、注意しなくてはいけない点として、演算に必要となる係数の指数が入力値に合わせて（αｊ）２ｎ−１、（αｊ）２ｎ−２、（αｊ）２ｎ−３と減っていることに注意する必要がある。このため、係数は係数演算部ｃ１３で別に除算を行い求める。なお、計算された値は再び、アドレスａｄｒが示すＲＥＧ＿Ｓａｄｒ、ｂにライトされる。
【００４２】
この後、ｓ１０９でシンドローム係数値が確定するセグメント位置になった時、ＲＥＧ＿Ｓａｄｒ、ｂ  の値はシンドローム係数値Ｓに代入される。図１８のフローチャートでは、この確定されるセグメント位置をＳ＿ＤＥＣと置いている。
【００４３】
シンドローム係数値が確定するセグメント位置Ｓ＿ＤＥＣはτの値によって変化する。図７に示す通り、例えば、ＢＣＨ（３８６０、３８２４）でη＝１６のとき、τ＝５、６、８、１０では、２３９セグメント目、τ＝７では２３７セグメント目、τ＝９では２３３セグメント目でシンドローム係数値が確定する。
【００４４】
一般の場合、Ｓ＿ＤＥＣの値は、以下のように求められる。最初に
ξｓ＝ｎ÷η    （５）
となるξｓを定義する。このとき、ｎがηで割り切れた場合は、
Ｓ＿ＤＥＣ＝ξｓ−ＭＯＤ（ξｓ、τ）    （６）
ｎがηで割り切れない場合は、
Ｓ＿ＤＥＣ＝（ξｓ＋１）−ＭＯＤ（（ξｓ＋１）、τ）    （７）
となる。ここで、ＭＯＤ（ξｓ、τ）、及び、ＭＯＤ（（ξｓ＋１）、τ）は、ξｓ、（ξｓ＋１）をτでそれぞれ割った際の余剰を示している。Ｇ．９７５．１  Ｉ３でのケースを上記式に当てはめるとＳ＿ＤＥＣ＝２４０、つまり２３９セグメント目となる。
【００４５】
但し、あくまでもＳ＿ＤＥＣは現在のシンドローム係数の値が確定するセグメント位置であり、回路としては、ｃｙｃｌｅ＜ｎである限り演算し続ける必要がある。ｃｙｃｌｅ≧ｎとなった場合、図１８のフローチャートは終了する。
【００４６】
上記のようにして、インターリーバー、デインターリーバーを必要とせずに、あたかも並び替えられたのと同じ演算結果を導き出すことができる。なお、この手法が必要な部分は符号回路と復号回路の中の一部であるシンドローム演算回路と誤り訂正回路である。なお、誤り位置多項式の算出回路は、前述の通り、若干変更する必要がある。例えば、式（３）を用いてシンドローム係数の添え字が偶数のものから添え字が奇数のものを算出する。チェン検索回路は従来のままである。
【００４７】
次に誤り訂正回路（ｊ３２、ｉ２１１）のフローについて図２１のフローチャートを用いて説明する。ここで、それぞれの値は以下の通りである。
ＥＰｂ：エラーの位置（０≦ｂ＜ｔ）。誤り訂正回路の入力値。
ＲＥＧ＿ＥＰａ、ｂ：レジスタ（０≦ａ＜τ、０≦ｂ＜ｔ）。
ｙｊ：１ビットの入力データ  （０≦ｊ＜ｎ）。
ｙ’ｊ：１ビットの出力データ  （０≦ｊ＜ｎ）。
他の値は、図１８のフローチャートと同じである。
【００４８】
誤り訂正回路ｊ３２では、前段のチェン検索回路ｊ３１３からエラーの位置を入力値として受け取る。図１８のフローチャートとの大きな違いは、ｓ４０７の処理であり、他の部分は大きな変更は無い。基本はレジスタをτ個用意して、同じアドレス制御を行う。なお、ｓ４０７の処理は詳細に書き下すとｃ＝ｎ−１−ｃｙｃｌｅとｃを置いた時、ＲＥＧ＿ＥＰ  ａｄｒ、ｂ（０≦ｂ＜ｔ）のいずれかがｃと等しい、つまり、
（ＲＥＧ＿ＥＰａｄｒ、０＝ｃ）ｏｒ（ＲＥＧ＿ＥＰａｄｒ、１＝ｃ）ｏｒ‥ｏｒ（ＲＥＧ＿ＥＰａｄｒ、２＝ｃ）    （８）
が真の時のみ入力値ｙｊを反転させてｙ’ｊとして出力するという意味である。
【００４９】
次に、改良した符号回路のフローについて説明する。改良された符号回路ｉ１１は、例えば図１７に示すように、検査符号を入力信号から算出する検査符号算出回路ｉ１１１と、検査符号を入力信号に追加する検査符号追加回路ｉ１１３に分け、それらをバッファｉ１１２で繋ぐ構成になっている。
【００５０】
まず、検査符号の算出部分の説明を行う。ＢＣＨ（ｎ、ｋ）のＩ（ｘ）を通信多項式とし、以下のように定義する。
Ｉ（ｘ）  ＝ｉｋ−１ｘｋ−１  ＋  ｉｋ−２ｘｋ−２  ＋  ‥  ＋  ｉ１ｘ  ＋  ｉ０      （９）
ここで、係数ｉｊは、ＧＦ（２）の元であり、値として「１」か「０」しか取らない。ｍ＝ｎ−ｋとなるｍを定義し、Ｉ（ｘ）にｘｍを掛けた式
Ｉ’（ｘ）＝ｘｍＩ（ｘ）＝ｉｋ−１ｘｎ−１＋ｉｋ−１ｘｎ−１＋‥＋ｉ１ｘｍ＋１＋ｉ０ｘｍ    （１０）
をＩ’（ｘ）と定義する。
【００５１】
次に生成多項式
Ｇ（ｘ）＝ｇｍｘｍ＋ｇｍ−１ｘｍ−１＋‥＋ｇ１ｘ＋ｇ０      （１１）
を定義する。係数ｇｐ（０≦ｐ≦ｍ）もＧＦ（２）の元であり、値として「１」か「０」しか取らず、加算と減算は排他的論理和（ｘｏｒ）、乗算は論理積（ａｎｄ）と同じである。なお、生成多項式の場合必ず最高次の係数は「１」となるため、式（１１）を
Ｇ（ｘ）＝ｘｍ＋ｇｍ−１ｘｍ−１＋‥＋ｇ１ｘ＋ｇ０      （１２）
とする。勧告Ｇ．９７５．１では、今回のＢＣＨ（３８６０、３８２４）の生成多項式は、
Ｇ（ｘ）＝ｘ３６＋ｘ３０＋ｘ２７＋ｘ２５＋ｘ２３＋ｘ２２＋ｘ１９＋ｘ１８＋ｘ１４＋ｘ１３＋ｘ１２＋ｘ１１＋ｘ６＋ｘ２＋１    （１３）
となっている。
【００５２】
以下のようにＩ’（ｘ）をＧ（ｘ）で割ると
Ｉ’（ｘ）÷Ｇ（ｘ）＝Ｑ（ｘ）  余り  Ｐ（ｘ）      （１４）
となりＱ（ｘ）は商、Ｐ（ｘ）は余りを示す多項式とすると、Ｐ（ｘ）が検査符号多項式となり、その最高次数はｍ−１となる。
【００５３】
通常、検査符号を求める際には、シフトレジスタと呼ばれる図８のような回路を使う。この回路は、１ビットのレジスタをｍ個もっており、おのおの結線（図８のｄ２０、ｄ２１、ｄ２２、ｄ２３）は係数ｇが０の場合、繋がっていないことを意味している。例えばＢＣＨ（３８６０、３８２４）の場合は、式（１３）より、３６個の１ビットレジスタを持った図９のようになる。
【００５４】
この図９の０番目のレジスタｅ１２に「１」を入れ、他のレジスタに「０」を入れると、各レジスタの値は
０回シフト：０００００００００００００００００００００００００００００００００００１    （１５）
となる。この数列は、一番左が３５番目のレジスタｅ１１、一番右が０番目のレジスタｅ１２の値を示している。この回路を１回シフトさせると、以下のようにレジスタの値が変化する。
１回シフト：００００００００００００００００００００００００００００００００００１０    （１６）
【００５５】
このシフターを３６回目までシフトさせると
３６回シフト：０００００１００１０１０１１００１１０００１１１１００００１０００１０１    （１７）
となる。このとき、ｑ回シフトしたシフトレジスタのｐ番目のレジスタの値を以下のようにγｑ、ｐとして定義する。ここで、初期値（０回シフト時）のｐ番目のレジスタの値を
γ０、ｐ＝１  （ｐ＝０）    （１８）
γ０、ｐ＝０  （１≦ｐ＜ｍ）    （１９）
とるす。また生成多項式Ｇ（ｘ）とは
γｍ、ｐ＝ｇｐ  （０≦ｐ＜ｍ）    （２０）
という関係を持っている。実際に、式（１３）、（１７）を比べると、
γ３６、ｐ＝ｇｐ  （０≦ｐ＜３６）    （２１）
となっている。
【００５６】
この操作を更に続けると４０９４回目で
４０９４回シフト：１０００００１００１０１０１１００１１０００１１１１００００１０００１０    （２２）
となる。ここで更にもう１回シフトされると
４０９５回シフト：０００００００００００００００００００００００００００００００００００１    （２３）
となり、４０９５回シフトで再び、０回シフトの値に戻る。
【００５７】
このとき式（１８）、（１９）で定義したγｑ、ｐを用いてＩ’（ｘ）÷Ｇ（ｘ）を行うと、この多項式同士の除算は図１０のようになる。なお、図１０は係数のみの演算を示しており、
Ｐ（ｘ）は以下のようになる。
Ｐ（ｘ）＝ｐｍ−１ｘｍ＋ｐｍ−１ｘｍ−１＋  ‥  ＋ｐ１ｘ＋ｐ０    （２４）
ここでｐは各係数を示し、γｑ、ｐを使い以下のようになる。
ｐｍ−１＝ｉ０γｍ、ｍ−１＋ｉ１γｍ＋１、ｍ−１＋‥＋ｉｋ−２γｎ−２、ｍ−１＋ｉｋ−１γｎ−１、ｍ−１
ｐｍ−２＝ｉ０γｍ、ｍ−２＋ｉ１γｍ＋１、ｍ−２＋‥＋ｉｋ−２γｎ−２、ｍ−２＋ｉｋ−１γｎ−１、ｍ−２
：
ｐ１＝ｉ０γｍ、１＋ｉ１γｍ＋１、１＋‥＋ｉｋ−２γｎ−２、１＋ｉｋ−１γｎ−１、１
ｐ０＝ｉ０γｍ、０＋ｉ１γｍ＋１、０＋‥＋ｉｋ−２γｎ−２、０＋ｉｋ−１γｎ−１、０
（２５）
【００５８】
このとき、以下のことに注意する必要がある。値ｉはｋ−１番目から入ってくる。本実施の形態では検査符号を求める際に、前述した順番を逆にシフトするシフトレジスタが必要となる。例えば、生成多項式の高次の項から低次の項の方向にシフトする。この理由は、前述した新しい手法によるシンドローム演算器が従来のものと演算が逆になったことと同じである。逆にシフトするシフトレジスタは図１１のように表すことができる。図１１の結線ｆ２０、ｆ２１、ｆ２２、ｆ２３のγ−１、ｐは、値が一周して元にもどる１シフト前を示している。例えば、ＧＦ（７）ならγ−１、ｐ＝γ６、ｐ、ＧＦ（１５）ならγ−１、ｐ＝γ１４、ｐとなり、ＧＦ（４０９５）の場合はγ−１、ｐ＝γ４０９４、ｐとなる。なおこの場合、勧告Ｇ．９７５．１の生成多項式に基づいて順番を逆にするシフトレジスタを作成すると図１２のようになる。
【００５９】
この順番を逆にするシフトレジスタを用いた検査符号の算出フローが図２２のフローチャートである。ここでそれぞれの係数は、
Ｐ＿ＤＥＣ：検査符号ビットが確定するサイクル。
ｋ：信号ビット数。
ｍ：検査符号ビット数（ｎ‐ｋ）。
ＲＥＧ＿Ｐａ、ｂ：レジスタ  （０≦ａ＜τ、０≦ｂ＜ｍ）。
ｉｊ：１ビットの入力データ  （０≦ｊ＜ｋ）。
Ｐｂ：検査符号ビット（出力値）（０≦ｂ＜ｍ）。
他の値は、図１８のフローチャートと同じである。
【００６０】
図２２のフローチャートでは、ｓ５０８の演算は、前述したとおり通常と逆のシフトを行う。
【００６１】
ここで、ｓ５０９について述べる。ｓ５０９は検査符号の値が確定するセグメントの位置Ｐ＿ＤＥＣとサイクル数が一致するかどうか確かめるもので、一般の場合、Ｐ＿ＤＥＣの値は、以下のように求められる。Ｓ＿ＤＥＣを定義したときのように最初に
ξｐ＝ｋ÷η    （２６）
となるξｐを定義する。このとき、ｋがηで割り切れた場合は、
Ｐ＿ＤＥＣ＝ξｐ−ＭＯＤ（ξｐ、τ）    （２７）
ｋがηで割り切れない場合は、
Ｐ＿ＤＥＣ＝（ξｐ＋１）−ＭＯＤ（（ξｐ＋１）、τ）    （２８）
となる。Ｇ．９７５．１  Ｉ３でのケースを上記式に当てはめるとＰ＿ＤＥＣ＝２３２、つまり２３１セグメント目となる。
【００６２】
前述の通り改良された符号回路は検査符号計算回路と検査符号追加回路に分かれる、図２２のフローチャートを用いると、検査符号の計算には、τフレーム（正確にはτ−１フレーム＋Ｐ＿ＤＥＣ）必要となる。このため、遅れたデータを入力する必要があり、遅延バッファが必要となる。本来はτ−１フレーム＋Ｐ＿ＤＥＣの遅延であるが、回路構成を単純にするため、バッファではτフレーム分データを遅延させ、そのデータを検査符号追加回路の入力としている。
【００６３】
検査符号を追加する方法は図２３のフローチャートとなる。ここで入力値は、検査符号計算回路値（図２２のフローチャートのＰｂ）をτフレームずらしたものである。ここでそれぞれの係数は、
ｋ：信号ビット数。
ｍ：検査符号ビット数（ｎ‐ｋ）。
ＲＥＧ＿Ｐａ、ｂ：レジスタ（０≦ａ＜τ、０≦ｂ＜ｍ）。
ｉｊ：１ビットの入力データ  （０≦ｊ＜ｎ）。
ｉ’ｊ：１ビットの出力データ  （０≦ｊ＜ｎ）。
Ｐｂ：検査符号ビット。検査符号計算回路からの入力値（０≦ｂ＜ｍ）。
他の値は、図１８のフローチャートと同じである。
【００６４】
ｋ≦ｃｙｃｌｅ＜ｎのときのみ検査符号が信号に追加される。この処理は図２３のフローチャートのｓ６０６、ｓ６０７、ｓ６０９に対応している。
【００６５】
２．デバイスへの実装例
これまで、述べてきたアルゴリズムを実際にデバイスに実装した場合を考えてみる。今回は例として、ＢＣＨ（３８６０、３８２４）符号のシンドローム演算回路について述べる。この場合、入出力は全て１ビットとしてしまうと、処理のために動作周波数をかなり高くする必要がある。そこで今回の例では、図１３のように入出力を１６ビットにして話しを進める。入出力を何ビットパラレルに設定するかは、適宜定めることができるが、今回の場合、１セグメントあたりのビット数ηが１６ビットであり、このように設定することで、１クロックが１セグメントに対応することになる。このため、入出力を１６ビットパラレルにするのは自然と考えられる。
【００６６】
この具体例のフローチャートは図２４に、回路構成図は図１４にそれぞれ示している。これから、このフローチャートを回路構成図で補足しながら説明する。なお、この手法では、２５５サイクルに一回フレームの先頭が来ることを前提とする。
【００６７】
まず、フローチャートでのアドレス制御ｓ７０１は、フレームのトップの判定ｓ７０４より先に行われている。このことは、アドレス制御が、これまでと違いフレームのトップの有無に依存しないことを示している。これは、以下の理由による。図１５のようにダミー信号も含めて２５５サイクル分回路を動作させると、０セグメント目でのアドレスがフレーム毎のアドレス制御と同等に変化する。このため、アドレス制御ｓ７０１、ｓ７０２、ｓ７０３は、フレームのトップを判定するｓ７０４の先に来ても問題なくなる。回路において、これらの制御はアドレス制御部ｇ２で行われる。
【００６８】
ｓ７０４でフレームのトップを判定が行われ、もしフレームのトップであるならば、ｓ７０５でサイクル値を０とする。このとき、ｓ７０７にて初期値が選ばれる。今回の場合は、それぞれ、α３８５９、α３３８７、α２９１５となっており、これの値は、（αｉ）３８５９＝αＭＯＤ（ｉ×３８５９、４０９５）（ｉ＝１、３、５）から算出している。回路では、サイクル制御部内ｇ０のサイクルカウンタによってサイクル値の初期化が行われ、係数演算部ｇ１のセレクタｇ１０、ｇ１１、ｇ１２によって初期値α３８５９、α３３８７、α２９１５の代入が行われる。また、ｓ７０７では、シンドローム演算ｓ７１５のための入力値の初期化も行う。回路では、主信号演算部ｇ３内のセレクタｇ３３による動作がこの初期化に対応している。
【００６９】
フレームのトップでない場合はｓ７０６の処理を行い前セグメントで算出された値を演算に用いる。回路では係数演算部ｇ１内部のレジスタｇ１６の値が係数値の演算に使われ、主信号演算部ｇ３内部のレジスタ群ｇ３７の内、セレクタｇ３２で選ばれた値が演算に用いられることを示す。
【００７０】
ｓ７０８の処理は、３種類のガロア体乗算器をそれぞれ１６回行っていることを示している。  回路では係数演算部ｇ１内部のガロア体乗算器ｇ１３、ｇ１４、ｇ１５によってこれらの演算が行われる。ここでの掛け算の値は、α−ｉ＝α４０９５−ｉより、α−１＝α４０９４、α−３＝α４０９２、α−５＝α４０９０なる。
【００７１】
図３に示したようにデータは情報、検査符号、ダミーの３種類にわかれ、シンドローム値を算出する際にはそれぞれ別の演算手法を適用する必要がある。また、図１３に示したように２４１セグメント目においては、１６ビットのデータに検査符号部分、ダミー部分が混ざっている。ｓ７０９〜ｓ７１４はこれらを処理するものである。回路では主信号演算部ｇ３内部のセレクタｇ３０、ｇ３１とサイクル制御部ｇ０から出力される制御信号ｓｅｌ＿２１４ａ、ｓｅｌ＿２１４ｂの制御によってこれらの処理が行われる。
【００７２】
ｓ７１５では式（２）のガロア体演算と、その結果をアドレス制御によって示されたレジスタへの格納が行われる。回路では、式（２）の演算は主信号演算部ｇ３内部のセレクタ群ｇ３４、ガロア体加算器群ｇ３５での１６回の処理によって行われる。また、演算結果はアドレス制御部ｇ２から出力される制御信号ｅｎ＿０〜ｅｎ＿７がイネーブルになっているレジスタ群ｇ３７内のいれすかのレジスタに格納される。今回の手法では１６番目のガロア体乗算の結果を次のセグメントでの係数演算に使う。このため、ｓ７１５では１６番目のガロア体乗算の結果を保持する処理も行われる。回路では係数演算部ｇ１内部のレジスタ群ｇ１６が１６番目のガロア体乗算の結果を格納している。
【００７３】
今回の具体例では式（５）〜式（７）より、Ｓ＿ＤＥＣ＝２４０であるため、ｓ７１７に示すように２３９セグメント目でシンドローム値が確定することになる。回路ではサイクル制御部ｇ０から出力される制御信号ｓｅｌ＿２３９がイネーブルになったときレジスタｇ３６に演算結果が入力されることを示している。
【００７４】
図１４で示したシンドローム演算回路を外側復号に実装する場合、図１６に示すように共通部分である、サイクル制御部、アドレス制御部、係数演算部は共有化し、主信号演算部のみ増設する仕組みをとることができる。誤り訂正回路、検査符号算出回路、検査符号追加回路も同様の増設方法を取る。
【００７５】
このようにして、改良した外側符号・復号回路を構成し、それらを使って連接符号を構成することができる。図１７にこの構成を示す。改良された連接符号は、内側符号回路ｉ１２、内側復号回路ｉ２２、外側符号回路ｉ１１、外側復号回路ｉ２１を備える。内側符号回路ｉ１２、内側復号回路ｉ２２については、従来の連接符号と同じものを使用できる。
【００７６】
外側符号回路ｉ１１は、検査符号算出回路ｉ１１１と検査符号追加回路ｉ１１３が遅延バッファｉ１１２で繋がれる構成になっている。検査符号算出回路ｉ１１１と検査符号追加回路ｉ１１３は、図１６に示した増設法を用いてＢＣＨ（３８６０、３８２４）符号８つ分の処理を行わせている。遅延バッファｉ１１２では、検査符号算出回路ｉ１１１で検査符号の算出が終わるまでのτフレーム（今回は８フレーム＝２６１，１２０ビット）分のデータを溜めている。
【００７７】
外側復号回路ｉ２１は、誤り位置演算回路ｉ２１３と誤り訂正回路ｉ２１１が遅延バッファｉ２１２で繋がれる構成になっている。誤り位置演算回路ｉ２１３の内、シンドローム演算回路が今回の改良が適用されており、チェン探索回路の変更はない。ただし、誤り位置多項式演算回路のみ前述したようにシンドローム係数の添え字が偶数のもから添え字が奇数のものを算出するように変更する必要がある。改良したシンドローム演算回路も誤り訂正回路ｉ２１１も図１６に示した増設法を用いてＢＣＨ（３８６０、３８２４）符号８つ分の処理を行わせている。遅延バッファｉ２１２も遅延バッファｉ１１２と同様にτフレーム分のデータを溜めている。これは、改良したシンドローム演算回路における、シンドローム値の算出がτフレーム分の時間が掛るためである。
【００７８】
図１７の回路構成とこれまでの連接符号のメモリ量について述べる。メモリ量を比較すると表３のようになる。ここでループとは内側復号回路と外側復号回路の対を繰り返した何回繰り返したものか示すものであり、Ｇ．９７５．１  Ｉ３の例は３ループである。表には、誤り位置多項式演算回路とフォーニー検索演算回路の待ち時間分の遅延バッファに使用するメモリは入れていない（人によって実装法が異なるため）。但し、シンドローム演算分の遅延には仕様による違いはないので、今回の表に含めた。シンドローム演算回路は内側復号回路、外側復号回路の両方に存在し、それぞれ、１フレーム分（＝３２，６４０ビット）の遅延が必要であるため、３２，６４０×（２×ループ数）ビットとしている。
【表３】
2010074210.tif 000005
【００７９】
表３からもわかる通り、本実施の形態によって大幅にメモリ量が削減していることがわかる。これに伴い、これまでＯＮ−ＣＨＩＰメモリ及び、そのメモリ用診断回路の電力消費に伴う発熱も削減することになる。
【００８０】
回路面積については、（１）ガロア体演算手法が通常とは異なっていること、（２）図５に示したように改良された回路にはレジスタが増えていることの２点の影響による増加が考えられる。しかし（１）に関しては図１６に示した増設方法を行えばそれほど変化はないと考えている。（２）に関しては確かに増加はするが、メモリ、及び、メモリ用診断回路が大幅に削減することを考えると全体として回路面積は削減できている。
【００８１】
Ｇ．９７５．１  Ｉ３を具体例として、本実施の形態の説明を行ってきたが、フローチャート図１９〜図２３を用いることで他の連接符号にも応用することができる。今回の例では、外側の符号・復号回路を改良しているが、これは、外側の符号のほうが、内側の符号より検査符号長が短いためである。従って、内側の回路に本実施の形態を適用してもよい。図５に示したように、改良された回路内のレジスタの個数は、従来の回路のτ倍になる。レジスタのビット数は検査符号長と同じであるため、検査符号長が短い符号に本実施の形態を適応するほうが有利になる。
【産業上の利用可能性】
【００８２】
連接符号は、通信の分野に限らず、コンピュータ、オーディオ・ビデオ等に用いる。従来方法では連接符号で高い符号化利得を得るには、どうしてもメモリを増加させなくてはならず、その容量はＯＮ−ＣＨＩＰとして扱うと非常に大きい。本発明は連接符号のメモリを大幅に削減するものである。このため本発明は、非常に符号・復号技術の向上に貢献するものと考えている。
また、本発明は、例えば、符号化・復号化を行うディジタル信号処理技術に適用できる。また、本発明は、例えば、光通信におけるエラー訂正用の符号・復号回路に適用できる。
【図面の簡単な説明】
【００８３】
【図１】ＮＧＮにおける伝達網の階層構造と光トランスポートシステムの関係の説明図。
【図２】従来手法による連接符号の回路構成図（Ｇ．９７５．１  Ｉ３）。
【図３】ＯＴＮフレームと８つのＢＣＨ（３８６０、３８２４）符号のフォーマットの関係の説明図。
【図４】従来のシンドローム演算回路図。
【図５】改良されたシンドローム演算回路図。
【図６】各フレーム、及び、各セグメントとアドレスの関係の説明図。
【図７】ＢＣＨ（３８６０、３８２４）の場合の各τによるシンドローム演算の終了位置の説明図。
【図８】検査符号を求めるためのシフトレジスタの構成図。
【図９】勧告Ｇ．９７５．１の生成多項式を用いたＢＣＨ（３８６０、３８２４）のシフトレジスタの構成図。
【図１０】γｑ、ｐを用いたＩ’（ｘ）  ÷  Ｇ（ｘ）演算とその結果の説明図。
【図１１】逆にシフトするシフトレジスタの構成図。
【図１２】勧告Ｇ．９７５．１の生成多項式を用いたＢＣＨ（３８６０、３８２４）の逆シフトレジスタの構成図。
【図１３】１６ビットパラレル版の改良シンドロームの入力条件の説明図。
【図１４】改良されたＢＣＨ（３８６０、３８２４）の１６ビットパラレル版シンドローム演算回路の構成図。
【図１５】１６ビットパラレル版回路のアドレス制御の説明図。
【図１６】改良されたシンドローム演算回路の増設方法の説明図。
【図１７】改良された外側符号・復号回路を用いた連接符号の構成図。
【図１８】改良されたシンドローム演算のフローチャート。
【図１９】フレーム先頭時でのアドレス制御（フレーム毎のアドレス制御）のフローチャート。
【図２０】フレーム先頭時でない場合のアドレス制御（セグメント毎のアドレス制御）のフローチャート。
【図２１】改良された誤り訂正法のフローチャート。
【図２２】改良された検査符号の算出のフローチャート。
【図２３】改良された検査符号の追加のフローチャート。
【図２４】改良されたＢＣＨ（３８６０、３８２４）の１６ビットパラレル版シンドローム演算のフローチャート。
【図２５】符号回路と復号回路の構成図。
【符号の説明】
【００８４】
ａ１  連接符号の符号回路
ａ２  連接符号の復号回路
ａ１１  外側符号回路
ａ１２、ｉ１２  内側符号回路
ａ２１  外側復号回路
ａ２２、ｉ２２  内側復号回路
ａ１３、ａ２４、ａ２５  インターリーバー
ａ１４、ａ２３  デインターリーバー
ａ１１１  ＢＣＨ（３８６０、３８２４）符号の符号回路
ａ１２１  ＢＣＨ（２０４０、１９３０）符号の符号回路
ａ２１１  ＢＣＨ（３８６０、３８２４）符号の復号回路
ａ２２１  ＢＣＨ（２０４０、１９３０）符号の復号回路
ｂ１  従来のシンドローム演算回路
ｂ１１  演算部
ｂ１２  レジスタ部
ｂ１１１  α倍するガロア体乗算器
ｂ１１２  ガロア体加算器
ｃ１  改良したシンドローム演算回路
ｃ１１  演算部
ｃ１２  レジスタ群
ｃ１３  係数演算部
ｃ１４  アドレス制御部
ｃ１１１  セレクタ
ｃ１１２  ガロア体加算器
ｃ１２１  レジスタ部
ｄ１、ｄ２、ｄ３、ｆ１、ｆ２、ｆ３  １ビットのレジスタ
ｄ１０、ｆ２０  ガロア体加算器（排他的論理和）
ｄ２０、ｄ２１、ｄ２２、ｄ２３、ｆ２０、ｆ２１、ｆ２２、ｆ２３  結線の有無
ｅ１１、ｅ２１  ３５番目の１ビットのレジスタ
ｅ２２、ｅ２２  １番目の１ビットのレジスタ
ｇ０  サイクル制御部
ｇ１  係数演算部
ｇ２  アドレス制御部
ｇ３、ｈ２  主信号演算部
ｇ１０  α４０９４倍するガロア体乗算器への入力値を選択するセレクタ
ｇ１１  α４０９２倍するガロア体乗算器への入力値を選択するセレクタ
ｇ１２  α４０９０倍するガロア体乗算器への入力値を選択するセレクタ
ｇ１３、ｇ１４、ｇ１５  １６個のガロア体乗算器群
ｇ１６  α４０９４倍の係数を格納するためのレジスタ
ｇ３０、ｇ３１、ｇ３２、ｇ３３、ｇ３４  セレクタ
ｇ３５  ガロア体加算器群
ｇ３６  確定したシンドローム値を格納するレジスタ
ｇ３７  演算結果を格納するレジスタ群
ｈ１  共通部分回路（サイクル制御部、係数演算部、アドレス制御部）
ｉ１  改良された連接符号の符号回路
ｉ２  改良された連接符号の復号回路
ｉ１１  改良された連接符号の外側符号回路
ｉ２１  改良された連接符号の外側復号回路
ｉ１１２、ｉ２１２  遅延バッファ
ｉ１１１  改良されたＢＣＨ（３８６０、３８２４）符号の検査符号算出回路
ｉ１１３  改良されたＢＣＨ（３８６０、３８２４）符号の検査符号追加回路
ｉ２１１  改良されたＢＣＨ（３８６０、３８２４）符号の誤り位置演算回路
ｉ２１３  改良されたＢＣＨ（３８６０、３８２４）符号の誤り訂正回路
ｊ１  符号回路
ｊ２  伝送路（光ファイバ）
ｊ３  復号回路
ｊ３１  誤り位置を算出する回路
ｊ３１  誤り訂正回路
ｊ３１  データバッファ
ｊ３１１  シンドローム演算回路
ｊ３１２  誤り位置多項式算出回路
ｊ３１３  チェーン検索回路
【図２】
2010074210.tif 000006
【図３】
2010074210.tif 000007
【図４】
2010074210.tif 000008
【図５】
2010074210.tif 000009
【図６】
2010074210.tif 000010
【図７】
2010074210.tif 000011
【図８】
2010074210.tif 000012
【図９】
2010074210.tif 000013
【図１０】
2010074210.tif 000014
【図１１】
2010074210.tif 000015
【図１２】
2010074210.tif 000016
【図１３】
2010074210.tif 000017
【図１４】
2010074210.tif 000018
【図１５】
2010074210.tif 000019
【図１６】
2010074210.tif 000020
【図１７】
2010074210.tif 000021
【図１８】
2010074210.tif 000022
【図１９】
2010074210.tif 000023
【図２０】
2010074210.tif 000024
【図２１】
2010074210.tif 000025
【図２２】
2010074210.tif 000026
【図２３】
2010074210.tif 000027
【図２４】
2010074210.tif 000028
【図２５】
2010074210.tif 000029
【図１】
2010074210.tif 000030