(57)【要約】【課題】受信データのビット長に依存せずに符号誤りを正しく検出する。【解決手段】符号誤り検出装置１は、各々が所定の並列処理数に等しい個数の符号ビットからなる複数のデータブロックに受信データを分割する入力データ生成部１１と、データブロックの各々を構成する複数の符号ビットを並列入力とし、前記データブロックに所定の生成多項式による並列演算を施して誤り検出処理を実行する符号演算部１３とを備える。入力データ生成部１１は、前記データブロックのいずれかに欠落ビットが存在するときに前記欠落ビットのビット位置にダミービットを挿入する。【選択図】    図１
2009094605.tif 000002
【特許請求の範囲】
【請求項１】
情報ビットと検査ビットからなる受信データにおける符号誤りを検出する符号誤り検出装置であって、
各々が所定の並列処理数に等しい個数の符号ビットからなる複数のデータブロックに前記受信データを分割し、前記データブロックを順次出力する入力データ生成部と、
前記入力データ生成部から順次出力されたデータブロックの各々を構成する複数の符号ビットを並列入力とし、前記データブロックに所定の生成多項式による並列演算を施して誤り検出処理を実行する符号演算部と、を備え、
前記入力データ生成部は、前記データブロックのいずれかに欠落ビットが存在するときに前記欠落ビットのビット位置にダミービットを挿入することを特徴とする符号誤り検出装置。
【請求項２】
請求項１記載の符号誤り検出装置であって、前記受信データのビット長を前記並列処理数で除算して剰余を算出する剰余演算部をさらに備え、
前記入力データ生成部は、当該算出された剰余が零以外の値を持つときに当該算出された剰余の値のビット長を持つ所定ビットを前記ダミービットとして前記欠落ビットのビット位置に挿入することを特徴とする符号誤り検出装置。
【請求項３】
請求項２記載の符号誤り検出装置であって、前記入力データ生成部は、前記剰余演算部によって算出された剰余が零以外の値を持つときに前記複数のデータブロックのうちの先頭のデータブロックに前記欠落ビットを割り当てることを特徴とする符号誤り検出装置。
【請求項４】
請求項２または３記載の符号誤り検出装置であって、複数のビット長にそれぞれ対応する固定ビット列を格納する変換テーブルを有する初期値設定部をさらに備え、
前記初期値設定部は、前記並列演算の実行前に前記変換テーブルを参照して前記剰余演算部で算出された剰余の値のビット長に対応する固定ビット列を選択し、
前記符号演算部は、前記並列入力の符号ビットを動作クロックに同期してシフトさせる複数の遅延素子と、少なくとも１つの排他的論理和演算子と、前記並列演算の実行前に前記初期値設定部で選択された固定ビット列の値を前記複数の遅延素子に記憶させる選択回路と、を含むシフトレジスタであることを特徴とする符号誤り検出装置。
【請求項５】
請求項４記載の符号誤り検出装置であって、
前記受信データのビット長を前記並列処理数で除算して商を算出する商演算部と、
当該算出された商の値に演算回数を設定し、前記演算回数に応じた処理サイクルだけ前記シフトレジスタのシフト動作を許す制御信号を生成する演算制御部と、
をさらに備えることを特徴とする符号誤り検出装置。
【請求項６】
送信データにおける符号誤りの検出を可能にする符号語の系列を生成する誤り検出符号生成装置であって、
送信すべきデータを、各々が所定の並列処理数に等しい個数の情報ビットからなる複数のデータブロックに分割し、前記データブロックを順次出力する入力データ生成部と、
前記入力データ生成部から順次出力されたデータブロックの各々を構成する複数の情報ビットを並列入力とし、前記データブロックに所定の生成多項式による並列演算を施して検査ビットを生成する符号演算部と、
前記情報ビットと前記検査ビットとからなる符号語の系列を生成する送信データ生成部と、を備え、
前記入力データ生成部は、前記データブロックのいずれかに欠落ビットが存在するときに前記欠落ビットのビット位置にダミービットを挿入することを特徴とする誤り検出符号生成装置。
【請求項７】
請求項６記載の誤り検出符号生成装置であって、前記送信すべきデータのビット長を前記並列処理数で除算して剰余を算出する剰余演算部をさらに備え、
前記入力データ生成部は、当該算出された剰余が零以外の値を持つときに当該算出された剰余の値のビット長を持つ所定ビットを前記ダミービットとして前記欠落ビットのビット位置に挿入することを特徴とする誤り検出符号生成装置。
【請求項８】
請求項７記載の誤り検出符号生成装置であって、前記入力データ生成部は、前記剰余演算部によって算出された剰余が零以外の値を持つときに前記複数のデータブロックのうちの先頭のデータブロックに前記欠落ビットを割り当てることを特徴とする誤り検出符号生成装置。
【請求項９】
請求項７または８記載の誤り検出符号生成装置であって、複数のビット長にそれぞれ対応する固定ビット列を格納する変換テーブルを有する初期値設定部をさらに備え、
前記初期値設定部は、前記並列演算の実行前に前記変換テーブルを参照して前記剰余演算部で算出された剰余の値のビット長に対応する固定ビット列を選択し、
前記符号演算部は、前記並列入力の情報ビットを動作クロックに同期してシフトさせる複数の遅延素子と、少なくとも１つの排他的論理和演算子と、前記並列演算の実行前に前記初期値設定部で選択された固定ビット列の値を前記複数の遅延素子に記憶させる選択回路と、を含むシフトレジスタであることを特徴とする誤り検出符号生成装置。
【請求項１０】
請求項９記載の誤り検出符号生成装置であって、
前記送信すべきデータのビット長を前記並列処理数で除算して商を算出する商演算部と、
当該算出された商の値に演算回数を設定し、前記演算回数に応じた処理サイクルだけ前記シフトレジスタのシフト動作を許す制御信号を生成する演算制御部と、
をさらに備えることを特徴とする誤り検出符号生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ中に符号誤りが発生したときにその符号誤りを検出する技術に関し、特に、誤り検出符号の生成処理および符号誤りの検出処理を複数ビット毎の並列演算により行う技術に関する。
【背景技術】
【０００２】
伝送路において送信データに符号誤りが生じた場合にその符号誤りの検出を目的として構成された符号は、誤り検出符号と呼ばれる。たとえば、ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）符号が誤り検出符号として広く使用されている。また、符号長ｎと情報長ｋを持つ符号は（ｎ，ｋ）符号と呼ばれる。ＣＲＣ方式による符号化は、送信すべき情報ビットの値を係数とする情報多項式Ｍ（ｘ）とｘn-kとの積を生成し、当該積を生成多項式Ｇ（ｘ）で割って剰余多項式Ｒ（ｘ）を生成することによって実行できる。このとき、送信すべき符号語は、符号多項式Ｕ（ｘ）＝Ｍ（ｘ）・ｘn-k＋Ｒ（ｘ）によって表現される。この符号多項式Ｕ（ｘ）は生成多項式Ｇ（ｘ）で割り切れるため、受信語を表す受信多項式が生成多項式Ｇ（ｘ）で割り切れるか否かを調べることによって誤り検出処理を実行できる。
【０００３】
このような符号化および誤り検出処理を行うＣＲＣ演算回路は、縦続に接続された複数の遅延素子からなるシフトレジスタを用いて容易に実現することが可能である（たとえば、非特許文献１参照）。受信語が符号誤りを含むときは、剰余演算の結果、受信側にあるＣＲＣ演算回路のシフトレジスタの遅延素子のうちのいずれかが「０」以外の値を保持するので、符号誤りを検出することができる。ＣＲＣ演算回路のシフトレジスタは、動作クロックのサイクル時間に合わせてビット系列をシリアルに処理するので、受信データのビット長に応じた演算処理時間が必要である。たとえば、高速なデータ伝送速度に合わせて短時間で演算処理を実行しなければならない場合があるが、このような場合は、動作クロックの周波数を上げて演算処理時間を短縮化することが可能である。しかしながら、動作クロックの周波数を上げると電力消費量が増大するという問題がある。
【０００４】
演算処理時間の短縮化を実現するための他の方法は、入力データを複数ビット毎に並列演算で処理する方法である。特許文献２（特開平９−１８３５４号公報）には、並列演算を実行するシフトレジスタを有するＣＲＣ演算回路が開示されている。
【非特許文献１】今井秀樹著「符号理論」，社団法人電子情報通信学会，１９９０年３月１５日出版（第１１３〜１２０頁）。
【特許文献２】特開平９−１８３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述の如くデータを並列演算するために、従来の演算回路は、シリアルに入力されたデータを、シフトレジスタの並列処理数のビット系列に直並列変換し、これらビット系列を並列にシフトレジスタに入力させる。このとき、入力データのビット長は、シフトレジスタの並列処理数の倍数であることが必要である。すなわち、シフトレジスタの並列処理数をＮとし、入力データのビット長をＭビットとするとき、ＭはＮで割り切れなければならない。しかしながら、入力データのビット長が可変長または素数である場合には、入力データのビット長はシフトレジスタの並列処理数で割り切れないため、従来の演算回路は誤った演算結果を与えてしまうという問題がある。
【０００６】
上記に鑑みて本発明の目的は、受信データのビット長が可変長あるいは素数であったとしても、並列演算を実行して受信データに含まれる符号誤りを正しく検出し得る符号誤り検出装置を提供することである。本発明の他の目的は、送信すべきデータのビット長が可変長あるいは素数であったとしても、並列演算を実行して正確な誤り訂正符号を生成し得る誤り検出符号生成装置を提供することである。
【課題を解決するための手段】
【０００７】
前記目的を達成すべく、本発明に係る符号誤り検出装置は、情報ビットと検査ビットからなる受信データにおける符号誤りを検出する符号誤り検出装置であって、各々が所定の並列処理数に等しい個数の符号ビットからなる複数のデータブロックに前記受信データを分割し、前記データブロックを順次出力する入力データ生成部と、前記入力データ生成部から順次出力されたデータブロックの各々を構成する複数の符号ビットを並列入力とし、前記データブロックに所定の生成多項式による並列演算を施して誤り検出処理を実行する符号演算部と、を備え、前記入力データ生成部は、前記データブロックのいずれかに欠落ビットが存在するときに前記欠落ビットのビット位置にダミービットを挿入することを特徴とする。
【０００８】
本発明に係る誤り検出符号生成装置は、送信データにおける符号誤りの検出を可能にする符号語の系列を生成する誤り検出符号生成装置であって、送信すべきデータを、各々が所定の並列処理数に等しい個数の情報ビットからなる複数のデータブロックに分割し、前記データブロックを順次出力する入力データ生成部と、前記入力データ生成部から順次出力されたデータブロックの各々を構成する複数の情報ビットを並列入力とし、前記データブロックに所定の生成多項式による並列演算を施して検査ビットを生成する符号演算部と、前記情報ビットと前記検査ビットとからなる符号語の系列を生成する送信データ生成部と、を備え、前記入力データ生成部は、前記データブロックのいずれかに欠落ビットが存在するときに前記欠落ビットのビット位置にダミービットを挿入することを特徴とする。
【発明の効果】
【０００９】
本発明に係る符号誤り検出装置は、受信データのビット長が可変長あるいは素数であったとしても、データブロック内の欠落ビットのビット位置にダミービットを挿入するため、受信データのビット長に依存すること無く符号誤りを正しく検出することが可能である。また、本発明に係る誤り検出符号生成装置は、送信すべきデータのビット長が可変長あるいは素数であったとしても、データブロック内の欠落ビットのビット位置にダミービットを挿入するため、送信すべきデータのビット長に依存すること無く、誤り訂正符号を生成することが可能である。
【発明を実施するための最良の形態】
【００１０】
以下、本発明に係る種々の実施例について説明する。
【００１１】
図１は、本発明に係る一実施例の符号誤り検出装置１の概略構成を示すブロック図である。図１に示されるように、符号誤り検出装置１は、パラメータ生成部１０、入力データ生成部１１、初期値設定部１２、符号演算部１３および演算制御部１４を有し、受信装置に組み込まれている。受信装置では、復調器（図示せず）が、伝送路から受信された信号を復調してＮビット長（Ｎは正整数）の受信データＲＤ［Ｎ−１：０］を構成する。符号誤り検出装置１には、受信データＲＤ［Ｎ−１：０］が入力され、受信データＲＤ［Ｎ−１：０］は、ＣＲＣ方式による情報ビットと検査ビットとからなる受信語で構成されている。この受信語は受信多項式Ｃ（ｘ）の係数を表し、受信語が符号誤りを含まないとき、受信多項式Ｃ（ｘ）は所定の生成多項式Ｇ（ｘ）で割り切れるが、受信語が符号誤りを含むとき、受信多項式Ｃ（ｘ）は生成多項式Ｇ（ｘ）で割り切れない。生成多項式Ｇ（ｘ）としては、たとえば、ＩＴＵ−Ｔ勧告によるガロア体ＧＦ（２）上のＧ（ｘ）＝ｘ16＋ｘ12＋ｘ5＋１や、ＡＮＳＩ規格によるガロア体ＧＦ（２）上のＧ（ｘ）＝ｘ16＋ｘ15＋ｘ2＋１を使用することができるが、これらに限定されるものではない。
【００１２】
入力データ生成部１１は、受信データＲＤ［Ｎ−１：０］を、各々が符号演算部１３の並列処理数Ｌ（Ｌは２以上の正整数）に等しい個数の符号ビットからなる複数のデータブロックに分割し、各データブロックＢＤ［Ｌ−１：０］を符号演算部１３に順次転送する。たとえば、受信データＲＤ［Ｎ−１：０］のビット長が４０２ビットであり、符号演算部１３の並列処理数Ｌが４である場合には、入力データ生成部１１は、受信データＲＤ［Ｎ−１：０］を１０１個のデータブロックに分割することとなる。なお、本実施例では、Ｎビットの受信データＲＤ［Ｎ−１：０］を並列に入力する構成を採用しているが、これに限定されるものではない。かかる構成の代わりに、たとえば、受信データＲＤ［Ｎ−１：０］を構成する符号ビットがシリアルに入力され、入力データ生成部１１がそのシリアル入力を処理してデータブロックＢＤ［Ｌ−１：０］を生成してもよい。
【００１３】
符号演算部１３は、これらデータブロックに生成多項式Ｇ（ｘ）に従った並列演算を施して誤り検出処理を実行する機能を有する。すなわち、符号演算部１３は、入力データ生成部１１から出力された各データブロックＢＤ［Ｌ−１：０］を構成するＬ個の符号ビットＢＤ［Ｌ−１］，ＢＤ［Ｌ−２］，…，ＢＤ［０］を並列入力として取り込み、前記データブロックに並列演算を施して誤り検出処理を実行する。符号演算部１３は、シフトレジスタ（図示せず）からなる割り算回路であり、このシフトレジスタは、並列入力された符号ビットＢＤ［Ｌ−１］，ＢＤ［Ｌ−２］，…，ＢＤ［０］を動作クロックＣＬＫに同期して並列にシフトさせるＭ個の遅延素子（Ｍは正整数）と、少なくとも１つのモジュロ２の加算器（排他的論理和演算子）と、帰還結線とを含むものである。このシフトレジスタのシフト動作により、受信多項式Ｃ（ｘ）を生成多項式Ｇ（ｘ）で除算して剰余多項式Ｒ（ｘ）を得る剰余演算が実行される。その剰余演算の結果、シフトレジスタの遅延素子群は、剰余多項式Ｒ（ｘ）の係数を表すビット列ＲＯ［Ｍ−１：０］を保持する。符号演算部１３は、このビット列ＲＯ［Ｍ−１：０］を演算結果として出力することとなる。ビット列ＲＯ［Ｍ−１：０］の全ビットの値が「０」であれば、符号誤りは検出されず、ビット列ＲＯ［Ｍ−１：０］のうちのいずれかのビットの値が「１」であれば、符号誤りが検出される。
【００１４】
図２に、並列処理数を４とし、生成多項式Ｇ（ｘ）をＧ（ｘ）＝ｘ16＋ｘ12＋ｘ5＋１とした場合の符号演算部１３の構成例を示す。図２に例示されているように、符号演算部１３は、データブロックＢＤ［３：０］の最下位ビットＢＤ［０］〜第３ビットＢＤ［３］を並列入力として取り込む。第０番目の最下位ビットＢＤ［０］は加算器Ａ１に、第１ビットＢＤ［１］は加算器Ａ２に、第２ビットＢＤ［２］は加算器Ａ３に、第３ビットＢＤ［３］は加算器Ａ４に、それぞれ入力される。
【００１５】
図２の符号演算部１３では、４個の遅延素子（フリップフロップ）Ｓ０，Ｓ４，Ｓ８，Ｓ１２が、セレクタＰ０，Ｌ０，Ｐ４，Ｌ４，Ｐ８，Ｌ８，Ｐ１２，Ｌ１２とモジュロ２の加算器Ａ５，Ａ６とを介して縦続に接続されており、遅延素子Ｓ１２の出力を加算器Ａ１を介して遅延素子Ｓ０と加算器Ａ６と加算器Ａ７とへ帰還させる帰還結線が存在する。また、４個の遅延素子（フリップフロップ）Ｓ１，Ｓ５，Ｓ９，Ｓ１３が、セレクタＰ１，Ｌ１，Ｐ５，Ｌ５，Ｐ９，Ｌ９，Ｐ１３，Ｌ１３とモジュロ２の加算器Ａ７，Ａ８とを介して縦続に接続されており、遅延素子Ｓ１３の出力を加算器Ａ２を介して遅延素子Ｓ１と加算器Ａ８と加算器Ａ９とへ帰還させる帰還結線が存在する。さらに、４個の遅延素子（フリップフロップ）Ｓ２，Ｓ６，Ｓ１０，Ｓ１４が、セレクタＰ２，Ｌ２，Ｐ６，Ｌ６，Ｐ１０，Ｌ１０，Ｐ１４，Ｌ１４とモジュロ２の加算器Ａ９，Ａ１０とを介して縦続に接続されており、遅延素子Ｓ１４の出力を加算器Ａ３を介して遅延素子Ｓ２と加算器Ａ１０と加算器Ａ１１とへ帰還させる帰還結線が存在する。そして、４個の遅延素子（フリップフロップ）Ｓ３，Ｓ７，Ｓ１１，Ｓ１５が、セレクタＰ３，Ｌ３，Ｐ７，Ｌ７，Ｐ１１，Ｌ１１，Ｐ１５，Ｌ１５とモジュロ２の加算器Ａ１１，Ａ１２とを介して縦続に接続されており、遅延素子Ｓ１５の出力を加算器Ａ４を介して遅延素子Ｓ３と加算器Ａ１２と加算器Ａ５とに帰還させる帰還結線が存在する。
【００１６】
図１に示されるように、パラメータ生成部１０には受信データＲＤ［Ｎ−１：０］が入力される。パラメータ生成部１０は、受信データＲＤ［Ｎ−１：０］のビット長Ｎを検出する。パラメータ生成部１０は、剰余演算部１０Ａと商演算部１０Ｂとを有しており、剰余演算部１０Ａは、当該検出されたビット長Ｎの値を並列処理数Ｌで除算して剰余（第１パラメータ）を算出する。また商演算部１０Ｂは、当該検出されたビット長Ｎの値を除算して商（第２パラメータ）を算出する。剰余の値を表すｒビットの剰余データＲ［ｒ−１：０］は、初期値設定部１２と入力データ生成部１１とに供給される。一方、商の値を表すｋビットの商データＮ［ｋ−１：０］は、演算制御部１４に供給される。
【００１７】
図１に示されるように、初期値設定部１２には剰余データＲ［ｒ−１：０］が供給される。初期値設定部１２は、剰余データＲ［ｒ−１：０］のとり得る値にそれぞれ対応する固定ビット列を格納する初期値テーブル（変換テーブル）を有している。初期値設定部１２は、符号演算部１３の並列演算が実行される前に、初期値テーブルを参照して剰余データＲ［ｒ−１：０］の値に対応する固定ビット列を選択し、当該選択された固定ビット列すなわち初期値データＩＤ［Ｍ−１：０］を符号演算部１３に供給する。符号演算部１３は、シフトレジスタの遅延演算子群に初期値データＩＤ［Ｍ−１：０］を記憶させる初期設定を行った後に並列演算を行う。
【００１８】
ここで、剰余データＲ［ｒ−１：０］の値は、入力データ生成部１１で生成されるデータブロックＢＤ［Ｌ−１：０］内に存在し得る欠落ビットの長さを表すものである。たとえば、図３（Ａ）に例示されるように受信データ３０のビット長が４０２ビットであり且つ並列処理数が４である場合、当該ビット長は並列処理数で割り切れないため、生成される複数のデータブロックのうちのいずれかに２ビット長の欠落ビットが生ずる。欠落ビットの値は不定であるため、符号演算部１３は、欠落ビットを含むデータブロック群に並列演算を施せば、誤った検出結果を出力する。このような誤検出を防止するため、入力データ生成部１１は、剰余データＲ［ｒ−１：０］の値に等しいビット長を持つダミービットを欠落ビットのビット位置に挿入する。図３（Ａ）に示される受信データ３０が分割された場合、図３（Ｂ）に示されるような１０１個のデータブロック３１1〜３１101が生成される。入力データ生成部１１は、先頭のデータブロック３１1の上位２ビットに欠落ビットを割り当て、この欠落ビットのビット位置に「１１」の値を持つダミービット３２を挿入することができる。そして、図４に示されるように、これらデータブロック３１1〜３１101が符号演算部１３に順次供給される。
【００１９】
また、前記誤検出を防止するために、符号演算部１３において、並列演算の実行前に、シフトレジスタの遅延素子群にダミービットと整合する初期値を記憶させる初期設定を行う必要がある。初期値設定部１２は、このような初期値をダミービットの長さに合わせて選択するものである。
【００２０】
図５（Ａ）は、初期値設定部１２の構成例を示す図である。図５（Ａ）に示されるように初期値設定部１２は、初期値テーブルメモリ２０とセレクタ２１とを有する。初期値テーブルメモリ２０は、符号演算部１３のシフトレジスタの遅延素子群に設定されるべき初期値を格納している。初期値テーブルメモリ２０は、並列処理数４に対応して４個の固定ビット列からなる初期値を並列にセレクタ２１に供給する。セレクタ２１は、剰余データＲ［１：０］の値に応じて入力端子Ｄ０〜Ｄ３のいずれかを選択し、当該選択された端子に供給された固定ビット列すなわち初期値データＩＤ［Ｍ−１：０］を出力する。図５（Ｂ）に、初期値テーブルメモリ２０に格納される初期値テーブルの一例を示す。図５（Ｂ）に示されるように、初期値テーブルには、剰余データＲ［１：０］の値すなわちダミービット長（１０進値）に対応する初期値（２進値）が格納されている。
【００２１】
次に、図６は、演算制御部１４の概略構成を示すブロック図である。図６に示されるように、演算制御部１４は、初期設定制御部４０、タイミング制御部４１およびカウンタ回路（シフト制御部）４２を含み、これら処理ブロック４０〜４２は動作クロックＣＬＫに同期して動作する。初期設定制御部４０は、ホストコントローラ（図示せず）から供給された演算開始指令ＳＣに応じて、符号演算部１３での初期設定を許可する論理レベル（たとえば、高レベル）を持つ初期設定制御信号ＬＥＢを生成する。符号演算部１３は、初期設定制御信号ＬＥＢの供給に応じて、初期値設定部１２から供給された初期値データＩＤ［Ｍ−１：０］の値をシフトレジスタの遅延素子群に記憶させる初期設定を行う。初期設定の終了後すなわち一定の処理サイクルの経過後に、初期設定制御部４０は、初期設定制御信号ＬＥＢの論理レベルを許可レベルから、初期設定を許可しない不許可レベル（たとえば、低レベル）に切り替える。
【００２２】
タイミング制御部４１は、初期設定制御部４０から供給された初期設定制御信号ＬＥＢが不許可レベルに切り替わるとスタートパルスＳＰをカウンタ回路４２に供給する。カウンタ回路４２は、スタートパルスＳＰに応じて、動作クロックＣＬＫに同期したカウント動作を開始する。図６に示されるようにカウンタ回路４２には、パラメータ生成部１０から商データＮ［ｋ−１：０］が供給されている。この商データＮ［ｋ−１：０］の値は、入力データ生成部１１で生成されるデータブロックの数を表し、符号演算部１３は、データブロックの数に応じた回数の並列演算を実行する。それ故、商データＮ［ｋ−１：０］の値は、符号演算部１３での演算回数に比例する値ということができる。
【００２３】
カウンタ回路４２は、カウント値が商データＮ［ｋ−１：０］の値に達するまでは、符号演算部１３での並列演算を許可する許可レベル（たとえば、高レベル）のシフト制御信号ＳＥＢを発生する。このとき、入力データ生成部１１は、許可レベルのシフト制御信号ＳＥＢが供給される間、データブロックＢＤ［Ｌ−１：０］を符号演算部１３に供給する。また、符号演算部１３は、許可レベルのシフト制御信号ＳＥＢが供給される間、並列演算を実行することができる。
【００２４】
一方、カウント値が商データＮ［ｋ−１：０］の値に達した後は、カウンタ回路４２は、シフト制御信号ＳＥＢの論理レベルを、符号演算部１３での並列演算を許可しない不許可レベル（たとえば、低レベル）に切り替える。このとき、入力データ生成部１１は、不許可レベルのシフト制御信号ＳＥＢの供給に応じて、データブロックＢＤ［Ｌ−１：０］の符号演算部１３への供給を停止する。また、符号演算部１３は、不許可レベルのシフト制御信号ＳＥＢの供給に応じて並列演算を終了する。よって、演算回数に応じた処理サイクルだけ符号演算部１３のシフトレジスタのシフト動作が許されることになる。したがって、符号演算部１３は、安定した検出結果を出力することが可能である。
【００２５】
図２に示される構成を有する符号演算部１３の場合、並列演算の実行前は、符号演算部１３には、不許可レベルのシフト制御信号ＳＥＢと許可レベルの初期設定制御信号ＬＥＢとが供給される。このとき、シフト動作用の全セレクタＰ０〜Ｐ１５は、それぞれ対応する遅延素子Ｓ０〜Ｓ１５の出力が帰還する入力端子Ｄ０を選択する。また、初期値設定用の全セレクタＬ０〜Ｌ１５は、それぞれ対応する初期値データＩＤ［１５：０］のビットＩＤ［０］〜ＩＤ［１５］が供給される入力端子Ｄ１を選択する。このため、セレクタＬ０〜Ｌ１５（選択回路）は、それぞれ対応する遅延素子Ｓ０〜Ｓ１５に初期値データＩＤ［１５：０］の値を記憶させることができる。
【００２６】
初期設定の終了後は、符号演算部１３には、許可レベルのシフト制御信号ＳＥＢと不許可レベルの初期設定制御信号ＬＥＢとが供給される。このとき、シフト動作用の全セレクタＰ０〜Ｐ１５は入力端子Ｄ１を選択する。また、初期値設定用の全セレクタＬ０〜Ｌ１５は入力端子Ｄ０を選択する。このため、符号演算部１３は、シフト動作による並列演算を実行することができる。並列演算の終了時には、符号演算部１３には、不許可レベルのシフト制御信号ＳＥＢと不許可レベルの初期設定制御信号ＬＥＢとが供給される。このとき、シフト動作用の全セレクタＰ０〜Ｐ１５は入力端子Ｄ０を選択するのでシフト動作が停止される。また、初期値設定用の全セレクタＬ０〜Ｌ１５は入力端子Ｄ０を選択するので、遅延素子Ｓ０〜Ｓ１５は、それぞれ一定の値を保持し続けることができる。
【００２７】
上記の如く、本実施例の符号誤り検出装置１は、受信データＲＤ［Ｎ−１：０］のビット長が可変長あるいは素数であったとしても、受信データＲＤ［Ｎ−１：０］を複数のデータブロックに分割し、データブロックＢＤ［Ｌ−１：０］内の欠落ビットのビット位置にダミービットを挿入するため、受信データＲＤ［Ｎ−１：０］のビット長に依存すること無く符号誤りを正しく検出することが可能である。
【００２８】
上記の符号誤り検出装置１の構成は、送信側にある符号化装置に適用することが可能である。図７は、このような符号化装置である誤り検出符号生成装置２の概略構成を示すブロック図である。図７に示されるように、誤り検出符号生成装置２は、パラメータ生成部５０、入力データ生成部５１、初期値設定部５２、符号演算部５３、演算制御部５４および送信データ生成部５５を有し、送信装置に組み込まれている。
【００２９】
入力データ生成部５１は、送信すべきＫビットのデータＤ［Ｋ−１：０］を、符号演算部５３の並列処理数Ｌ（Ｌは２以上の正整数）に等しい個数の情報ビットからなる複数のデータブロックに分割し、各データブロックＢＤ［Ｌ−１：０］を符号演算部５３に順次転送する。符号演算部５３は、これらデータブロックに生成多項式Ｇ（ｘ）に従った並列演算を施して検査ビットを生成する。すなわち、符号演算部５３は、入力データ生成部５１から出力された各データブロックＢＤ［Ｌ−１：０］を構成するＬ個の情報ビットＢＤ［Ｌ−１］，ＢＤ［Ｌ−２］，…，ＢＤ［０］を並列入力として取り込み、前記データブロックに並列演算を施して検査ビットＰＤ［Ｐ−１］，ＰＤ［Ｐ−２］，…，ＰＤ［０］を生成する。
【００３０】
符号演算部５３は、シフトレジスタ（図示せず）からなる割り算回路を有している。このシフトレジスタは、並列入力された情報ビットＢＤ［Ｌ−１］，ＢＤ［Ｌ−２］，…，ＢＤ［０］を動作クロックＣＬＫに同期して並列にシフトさせるＭ個の遅延素子（Ｍは正整数）と、少なくとも１つのモジュロ２の加算器（排他的論理和演算子）と、帰還結線とを含むものである。なお、情報ビットＢＤ［Ｌ−１］，ＢＤ［Ｌ−２］，…，ＢＤ［０］は、情報多項式Ｍ（ｘ）とｘn-kとの積である多項式Ｐ（ｘ）（＝Ｍ（ｘ）・ｘn-k）の係数を表すものとして並列入力される。このシフトレジスタのシフト動作により、多項式Ｐ（ｘ）を生成多項式Ｇ（ｘ）で除算して剰余多項式Ｒ（ｘ）を得る剰余演算が実行される。その剰余演算の結果、シフトレジスタの遅延素子群は、剰余多項式Ｒ（ｘ）の係数を表す検査ビットを保持する。符号演算部５３は、これら検査ビットからなるＰビットのデータＰＤ［Ｐ−１：０］を送信データ生成部５５に供給する。送信データ生成部５５は、検査ビットを情報ビットに付加して、符号長Ｋ＋Ｐと情報長Ｋを有する符号語系列である送信データＴＤを生成する。送信データＴＤは、変調器（図示せず）によって変調された後に送信されることとなる。
【００３１】
図８に、並列処理数を４とし、生成多項式Ｇ（ｘ）をＧ（ｘ）＝ｘ16＋ｘ12＋ｘ5＋１とした場合の符号演算部５３の構成例を示す。図８に例示されているように、符号演算部５３は、データブロックＢＤ［３：０］の最下位ビットＢＤ［０］〜第３ビットＢＤ［３］を並列入力として取り込む。第０番目の最下位ビットＢＤ［０］は加算器Ａ１に、第１ビットＢＤ［１］は加算器Ａ２に、第２ビットＢＤ［２］は加算器Ａ３に、第３ビットＢＤ［３］は加算器Ａ４に、それぞれ入力される。
【００３２】
図８に示した符号演算部５３の構成は、図２に示した受信側にある符号演算部１３の構成と略同じである。すなわち、図８の符号演算部５３では、４個の遅延素子（フリップフロップ）Ｓ０，Ｓ４，Ｓ８，Ｓ１２が、セレクタＰ０，Ｌ０，Ｐ４，Ｌ４，Ｐ８，Ｌ８，Ｐ１２，Ｌ１２とモジュロ２の加算器Ａ５，Ａ６とを介して縦続に接続されており、遅延素子Ｓ１２の出力を加算器Ａ１を介して遅延素子Ｓ０と加算器Ａ６と加算器Ａ７とへ帰還させる帰還結線が存在する。また、４個の遅延素子（フリップフロップ）Ｓ１，Ｓ５，Ｓ９，Ｓ１３が、セレクタＰ１，Ｌ１，Ｐ５，Ｌ５，Ｐ９，Ｌ９，Ｐ１３，Ｌ１３とモジュロ２の加算器Ａ７，Ａ８とを介して縦続に接続されており、遅延素子Ｓ１３の出力を加算器Ａ２を介して遅延素子Ｓ１と加算器Ａ８と加算器Ａ９とへ帰還させる帰還結線が存在する。さらに、４個の遅延素子（フリップフロップ）Ｓ２，Ｓ６，Ｓ１０，Ｓ１４が、セレクタＰ２，Ｌ２，Ｐ６，Ｌ６，Ｐ１０，Ｌ１０，Ｐ１４，Ｌ１４とモジュロ２の加算器Ａ９，Ａ１０とを介して縦続に接続されており、遅延素子Ｓ１４の出力を加算器Ａ３を介して遅延素子Ｓ２と加算器Ａ１０と加算器Ａ１１とへ帰還させる帰還結線が存在する。そして、４個の遅延素子（フリップフロップ）Ｓ３，Ｓ７，Ｓ１１，Ｓ１５が、セレクタＰ３，Ｌ３，Ｐ７，Ｌ７，Ｐ１１，Ｌ１１，Ｐ１５，Ｌ１５とモジュロ２の加算器Ａ１１，Ａ１２とを介して縦続に接続されており、遅延素子Ｓ１５の出力を加算器Ａ４を介して遅延素子Ｓ３と加算器Ａ１２と加算器Ａ５とに帰還させる帰還結線が存在する。
【００３３】
図７のパラメータ生成部５０は、送信すべきデータＤ［Ｋ−１：０］のビット長Ｋを検出する。パラメータ生成部５０は、剰余演算部５０Ａと商演算部５０Ｂとを有しており、剰余演算部５０Ａは、当該検出されたビット長Ｋの値を並列処理数Ｌで除算して剰余を算出する。また商演算部５０Ｂは、当該検出されたビット長Ｋの値を除算して商を算出する。剰余の値を表すｒビットの剰余データＲ［ｒ−１：０］は、初期値設定部５２と入力データ生成部５１とに供給される。一方、商の値を表すｋビットの商データＮ［ｋ−１：０］は、演算制御部５４に供給される。
【００３４】
初期値設定部５２は、剰余データＲ［ｒ−１：０］のとり得る値にそれぞれ対応する固定ビット列を格納する初期値テーブル（変換テーブル）を有している。初期値設定部５２は、符号演算部５３の並列演算が実行される前に、初期値テーブルを参照して剰余データＲ［ｒ−１：０］の値に対応する固定ビット列を選択し、当該選択された固定ビット列すなわち初期値データＩＤ［Ｍ−１：０］を符号演算部５３に供給する。符号演算部５３は、シフトレジスタの遅延演算子群に初期値データＩＤ［Ｍ−１：０］を記憶させる初期設定を行った後に並列演算を行う。剰余データＲ［ｒ−１：０］の値は、入力データ生成部５１で生成されるデータブロックＢＤ［Ｌ−１：０］内に存在し得る欠落ビットの長さを表すものである。欠落ビットの値は不定であるため、符号演算部５３は、欠落ビットを含むデータブロック群に並列演算を施せば、誤った検出結果を出力する。このような誤検出を防止するため、入力データ生成部５１は、剰余データＲ［ｒ−１：０］の値に等しいビット長を持つダミービットを欠落ビットのビット位置に挿入する。
【００３５】
また、並列演算の実行前に、符号演算部５３のシフトレジスタの遅延素子群にダミービットと整合する初期値を記憶させる初期設定を行う必要がある。初期値設定部５２は、このような初期値をダミービットの長さに合わせて選択する。ＣＲＣ方式では、このような初期値は、受信側の符号誤り検出装置１の初期値設定部１２（図１）に格納されている初期値と整合するように設定される。受信側の符号誤り検出装置１と送信側の誤り検出符号生成装置２とが同じ並列処理数を有し且つ同じダミービット値を使用する場合には、図１の初期値設定部１２と図７の初期値設定部５２とに同じ初期値テーブルが格納される。
【００３６】
演算制御部５４は、受信側にある符号誤り検出装置１の演算制御部１４を構成する初期設定制御部４０、タイミング制御部４１およびカウンタ回路４２と同様の処理ブロック群を有する。よって、演算制御部５４は、ホストコントローラ（図示せず）から供給された演算開始指令ＳＣに応じて、符号演算部５３での初期設定を許可する論理レベル（たとえば、高レベル）を持つ初期設定制御信号ＬＥＢを生成する。初期設定の終了後すなわち一定の処理サイクルの経過後に、演算制御部５４は、初期設定制御信号ＬＥＢの論理レベルを許可レベルから、初期設定を許可しない不許可レベル（たとえば、低レベル）に切り替える。初期設定制御信号ＬＥＢが不許可レベルに切り替わると、入力データ生成部５１は、不許可レベルのシフト制御信号ＳＥＢの供給に応じて、データブロックＢＤ［Ｌ−１：０］の符号演算部５３への供給を停止する。また、符号演算部５３は、不許可レベルのシフト制御信号ＳＥＢの供給に応じて並列演算を終了する。よって、演算回数に応じた処理サイクルだけ符号演算部５３のシフトレジスタのシフト動作が許されることになる。
【００３７】
上記の通り、本実施例の誤り検出符号生成装置２は、送信すべきデータＤ［Ｋ−１：０］のビット長が可変長あるいは素数であったとしても、データＤ［Ｋ−１：０］を複数のデータブロックに分割し、データブロックＢＤ［Ｌ−１：０］内の欠落ビットのビット位置にダミービットを挿入するため、データＤ［Ｋ−１：０］のビット長に依存すること無く、誤り訂正符号を生成することが可能である。
【００３８】
なお、上記実施例では、ＣＲＣ方式を採用しているが、これに限定されるものではない。複数のビットを並列入力として並列演算を実行して誤り検出または誤り検出符号の生成を行う任意のシステムに本発明を適用することができる。
【図面の簡単な説明】
【００３９】
【図１】本発明に係る一実施例の符号誤り検出装置の概略構成を示すブロック図である。
【図２】符号演算部の構成例を示す図である。
【図３】（Ａ）は、受信データの一例を示す図であり、（Ｂ）は、分割後のデータブロック群を例示する図である。
【図４】データブロックが符号演算部に順次入力される様子を示す図である。
【図５】（Ａ）は、初期値設定部の構成例を示す図であり、（Ｂ）は、初期値テーブルの内容を例示する図である。
【図６】演算制御部の概略構成を示すブロック図である。
【図７】本発明に係る一実施例の誤り検出符号生成装置の概略構成を示すブロック図である。
【図８】符号演算部の構成例を示す図である。
【符号の説明】
【００４０】
１  符号誤り検出装置
２  誤り検出符号生成装置
１０  パラメータ生成部
１１  入力データ生成部
１２  初期値設定部
１３  符号演算部
１４  演算制御部
５０  パラメータ生成部
５１  入力データ生成部
５２  初期値設定部
５３  符号演算部
５４  演算制御部
５５  送信データ生成部
【図１】
2009094605.tif 000003
【図２】
2009094605.tif 000004
【図３】
2009094605.tif 000005
【図４】
2009094605.tif 000006
【図５】
2009094605.tif 000007
【図６】
2009094605.tif 000008
【図７】
2009094605.tif 000009
【図８】
2009094605.tif 000010