(57)【要約】  所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出方法である。この誤り検出方法は、それぞれのビット位置に応じた多項式を生成多項式で除算したときの剰余値を予め計算してメモリに保存するステップ、入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力するステップ、入力データ列のうち０でないデータの正規のビット位置に対応する剰余値をメモリより求め、求めた各剰余値をビット対応に加算するステップ、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定するステップ、を有している。
2009019763.tif 000002
【特許請求の範囲】
【請求項１】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出方法において、
それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を予め計算してメモリに保存し、
入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力し、
入力データ列のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算し、
加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する、
ことを特徴とする誤り検出方法。    
【請求項２】
前記剰余値の保存ステップにおいて、一定数のビット間隔の各ビット位置に応じた剰余値を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する、
ことを特徴とする請求項１記載の誤り検出方法。
【請求項３】
前記一定数のビット間隔をPとするとき、ビット位置がn×P+k (０≦k<P)の剰余値は、ビット位置がn×Pのときの剰余値をkビットシフトし、該シフト結果を前記生成多項式で除算したときの剰余値である、
ことを特徴とする請求項２記載の誤り検出方法。    
【請求項４】
前記データ列が並列的に入力するとき、各並列データ列の０でないデータの正規のビット位置に対応する剰余値を全て加算し、加算結果が全てのビットで０となれば並列入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する、
ことを特徴とする請求項１記載の誤り検出方法。      
【請求項５】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号を付加し、しかる後、所定の符号化方式により符号化した符号化データ列を復号する誤り訂正/誤り検出復号方法において、
誤り検出部において、それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を予め計算してメモリに保存しておき、
復号部において符号化データ列を繰り返し復号し、
復号結果を示すデータ列と共に、各データの正規のビット位置を示すビット位置情報を誤り検出部に入力し、
該誤り検出部において、復号結果のうち０でないデータの正規のビット位置に対応する剰余値を前記メモリより求め、求めた各剰余値をビット対応に加算し、加算結果が全ての
ビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定し、
復号部は誤りが検出されなくなったとき前記符号化データの復号を停止する、
ことを特徴とする誤り訂正/誤り検出復号方法。    
【請求項６】
前記剰余値の保存ステップにおいて、一定数のビット間隔の各ビット位置に応じた剰余値を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する、
ことを特徴とする請求項５記載の誤り訂正/誤り検出復号方法。    
【請求項７】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出装置において、
それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を保存する剰余メモリ、
入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力され、入力データ列のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算する加算部、
加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する誤り有無判定部、
を有することを特徴とする誤り検出装置。    
【請求項８】
前記剰余メモリに、一定数のビット間隔の各ビット位置に応じた剰余値を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する剰余値補間部、
を有することを特徴とする請求項７記載の誤り検出装置。    
【請求項９】
前記補間部は、前記一定数のビット間隔をPとするとき、ビット位置がn×P+k (０≦k<P)の剰余値を、ビット位置がn×Pのときの剰余値をkビットシフトし、該シフト結果を前記生成多項式で除算して算出する、
ことを特徴とする請求項８記載の誤り検出装置。
【請求項１０】
前記加算部は、前記データ列が並列的に入力するとき、各並列データ列の０でないデータの正規のビット位置に対応する剰余値を全てビット対応に加算する、
ことを特徴とする請求項７記載の誤り検出装置。      
【請求項１１】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号を付加し、しかる後、所定の符号化方式により符号化した符号化データ列を復号する誤り訂正/誤り検出復号装置において、
前記符号化データ列を繰り返し復号する復号部、復号結果に対する誤りの有無を検出し、誤り検出結果を復号部に通知する誤り検出部、
を備え、前記復号部は、
符号化データ列を繰り返し復号して復号結果を出力する復号器、
復号結果の各データの正規のビット位置を出力するビット位置管理部、
復号器の復号処理の継続、停止を制御する制御部、
を備え、前記誤り検出部は、
それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を保存する剰余メモリ、
復号結果と共に、該復号結果の各データの正規のビット位置を示すビット位置情報を入
力され、復号結果のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算する加算部、
加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する誤り有無判定部、
を備え、
前記復号部は誤りが検出されなくなったとき前記符号化データの復号を停止する、
ことを特徴とする誤り訂正/誤り検出復号装置。    
【請求項１２】
前記誤り検出部は、前記剰余メモリに一定数のビット間隔の各ビット位置に応じた剰余値を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する剰余値補間部、
を有することを特徴とする請求項１２記載の誤り訂正/誤り検出復号装置。    
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り検出装置及び誤り訂正／誤り検出復号装置並びに方法に関わる。
【背景技術】
【０００２】
誤り検出符号は、データ通信システムなどデータを誤り無く伝送することが要求されるシステムや外部記憶装置など誤り無くデータの読み出しを行うことが要求されるシステムに使用され、伝送誤りや読み出し誤りを検出するために使用される。
図１３は誤り検出を適用した通信システムの構成例である。送信側１において、誤り検出符号化部１ｂは、情報生成部１ａが生成した所定ビット長のデータ列に誤り検出符号化処理を施し、誤り訂正符号化部１ｃは所定の符号化方式により入力データ列を誤り訂正符号化して通信路２を介して受信側3に送信する。受信側３において、誤り訂正復号部３ａは入力した符号化データ列を誤り訂正復号処理により復号し、復号データ列を誤り検出復号部３ｂに入力する。誤り検出復号部３ｂは復号データ列に誤り検出復号処理を施して誤りの有無を検出し、誤りが有れば送信側に再送要求信号RRQを送出する。情報抽出部３ｃは誤りが無ければデータを抽出して出力する。【０００３】
誤り検出符号としては、たとえば巡回冗長検査(CRC : Cyclic Redundancy Check)符号が連続した誤りを検出することが可能なためよく利用される。CRCは、送信側でNビットの情報ビットを多項式に見立てて生成多項式で除算を行い、得られたmビットの剰余(パリティ)を情報ビットに付加した(N+m)ビットとし、生成多項式で割り切れるデータに符号化して送信する。受信側では、受信データを前記生成多項式で除算を行い、剰余が０である場合は誤りなし、それ以外の場合は誤りありとして誤り検出を行う。たとえば、生成多項式G(x) を16ビットとし、
x16K(x) ÷ G(x) ＝ Q(x) あまりR(x)
であれば、
W(x) ＝ x16K(x)＋R(x)
をCRC符号語とする。ここでx16K(x)はNビットのデータ列K(x)の低次側に16ビットの"0"を付加したデータ列を意味する。受信側では、この符号語W(x)に誤りE(x)が付加されたW′(x) = W(x)+E(x)を受信すると、W′(x)をG(x)で除算し、その剰余が０であれば誤りなし、０以外であれば誤りありと検出する。具体的には、
W′(x) ／ G(x) 
を演算し、割り切れるかどうかを検出する。【０００４】
CRCの符号化、復号化に際して、上述のように除算を行う必要があるが、この除算器はハードウエアで構成することにより比較的簡単な回路で構成することが出来る。m次の生成多項式
【数１】
2009019763.tif 000003
で除算を行う場合の回路構成の一例は図１４（A）に示すようになる。図において、giは0または1の係数となり、gi=1の場合は線をつなぐ、gi=0の場合は線をつながない構成となる。図１４（B）はたとえば生成多項式G(x) =x16+x12+x5+1とした場合のCRC演算装置の除算器の例である。この除算器は、1６段のシフトレジスタSRと、0ビット位置、5ビット位置、12ビット位置の入力側に設けられ、前段の出力データとフィードバックデータの排他的論理和演算を行う排他的論理和回路（Exclusive OR回路）EOR1〜EOR３と、15ビット位置の出
力側に設けられたスイッチSWで構成されている。スイッチSWをフィードバック側(A側)に切り替えた状態でデータ列を高次から1ビットずつEOR1に入力することで除算を行うことができる。【０００５】
図１４（A）の構成によれば、多項式W′(x)の各次数における係数を次数が高いものの係数から順にシフトレジスタの低次側から入力することにより、商多項式がシフトレジスタの高次から出力され、全ての次数を入力するとシフトレジスタに、剰余多項式が保存される。この様にシフトレジスタと排他的論理和により簡単な回路で除算器を構成することが出来る。ところで、図１４の除算器の構成では回路は単純化されるものの、入力データを高次のビットから順次入力する必要がある。このため、正規の順序で並んでいないビット列が入力する場合、例えばインタリーブによりデータ列が並び替えられてビット列が入力する場合、除算器に入力する前にメモリ等を用いてデータ列を正規の順序に並び替える必要がある。
図１５は正規の順序で並んでいないビット列が入力する場合のCRCチェック回路の構成図であり、図１４（A）の除算器4aの前段にデータ順序並び替え用のRAM 4bと、除算器4aで求めた剰余が0であるか否かを判断してチェック結果を出力するオール零検出回路4cが設けられている。データ順序並び替え用のRAM 4bにはビット列(入力データ)と共に各ビットの正規の順番(データ番号)が入力される。これにより、RAM 4bは、ビット毎の入力データをデータ番号が指示する位置に書き込み、しかる後、順番に読み出すことによりビット列を正規の順番に並び替えて出力する。すなわち、インタリーブ等の並び替え操作が複雑であれば、全入力データを一旦メモリに蓄えた後に正順になるようにメモリから読み出しを行なって除算器4aに入力する必要があり、このため、データ並び替えの時間が必要となる。例えば、Nビット入力の場合、Nクロック時間経過しなければCRC演算を開始できない為に、結果として2Nクロック時間経過しなければCRCチェック結果を得ることができない。【０００６】
ところで、復号回数が多くなるほど誤り率特性が向上する復号器がある。かかる復号器では誤りが無くなるまで入力されたデータの復号を繰り返し、誤りが無くなった時点で該データの復号を停止し、次の入力データの復号を開始するようになっている。図１６は、誤り訂正符号にターボ符号を採用し、誤り検出符号にCRC符号を用いた通信システム例である。
送信側５において、CRC付加部５ｂは情報生成部５ａが生成した所定ビット長のデータ列にCRC付加処理を施し、ターボ符号化部５ｃはターボ符号化処理によりCRCが付加された入力データ列に誤り訂正符号化処理を施して通信路（伝送路）６に送出する。受信側７において、ターボ復号器７ａは入力した符号化データ列をターボ復号処理により復号し、復号結果をCRC検出部７ｂに入力する。
ターボ復号器７aは、繰り返し復号を行うことにより誤り率特性をよくすることが出来る。このため、ターボ復号器７aは、規定回数だけ繰り返し復号処理を行い、その誤り訂正復号結果に対してCRC検出部７ｂは誤り検出を行い、誤りがあれば、送信側５に再送要求RRQを送出し、誤りが無ければ情報抽出部７ｃに情報抽出を指示する。また、ターボ復号器７aは、復号回数が規定回数になる前に誤りが無くなれば、直ちに復号処理を停止して次の符号化データ列の復号を開始することにより復号処理の効率化を図っている。このため、CRC検出部７bは１回の復号毎に復号結果に対して誤りの有無を検出し、誤り検出結果をターボ復号器７aにフィードバックする。ターボ復号器７aは「誤り有り」が入力すれば繰り返し復号を行い、「誤り無し」が入力すれば規定回数に到達してなくても復号動作を停止、次の符号化データの復号を開始する。【０００７】
図１７はターボ符号器５cの構成図であり、ｕはCRCビットが付加されたNビットの入力データ、ｘa，ｘb，ｘcはターボ符号器５cで入力データｕを符号化した符号化データである。符号化データｘaは入力データｕそのものであり、符号化データｘbは入力データｕを
符号器８aで畳み込み符号化したデータ、符号化データｘcは情報データｕをインタリーバ８bでインタリーブ（π）して符号器８cで畳み込み符号化したデータである。すなわち、ターボ符号器から出力される符号化データは、入力データｕ（＝ｘa)にパリティビットｘb，ｘcが付加された符号化率1/3の組織符号である。
図１８はターボ復号器７aの構成図である。ターボ復号は、符号化データｘa，ｘb，ｘcの受信信号Ys，Yp1，Yp2のうち、まずYs，Yp1を使って、第１の要素復号器９aで復号を行う。次に、第１の要素復号器９aから出力された復号結果（尤度）とYsとYp2とを用いて第２の要素復号器DEC９bで同様の復号を行う。ただし、Yp2は原データｕをインタリーブしたものを符号化したｘcに対応する受信信号なので、Ys並びに第１の要素復号器９aから出力される尤度を第２の要素復号器９bに入力する前にインタリーバ９c、９dでインタリーブ（π）する。
第２の要素復号器９bから出力された尤度はデインタリーバ９eでデインタリーブ（π-1）された後、第１の要素復号器９aへの入力としてフィードバックされる。第１の要素復号器９aはフィードバックされた尤度ｕ′とYs，Yp1を使って復号を行い、以後復号回数が規定回数になるまで第１,第２の要素復号器９a，９bで上記復号を繰り返し、あるいは、誤りが無くなるまで上記復号を繰り返す。【０００８】
図１９は図１８の第１、第２の要素復号器を１つの要素復号器９aで共用させたターボ復号器の構成図であり、スイッチ９fは復号動作が奇数番目であるか、偶数番目であるかにより要素復号器９a への入力信号を切り換える。通信路値RAM９gは通信路より受信した信号Ys，Yp1，Yp2を記憶し、適宜これらの信号をスイッチ9fを介して要素復号器９aへ入力すると共に、インタリーバ９cに入力する。復号結果RAM９hは復号結果を保存し、インタリーバ９d、デインタリーバ９eに入力する。硬判定部９iは復号結果を“０”、“１”に硬判定し、判定結果をCRC検出部７b(図１６)に入力する。
図１９のターボ復号器では、最初、スイッチ９fにおいて実線で示した接続で第１回目の復号を行う。このとき復号結果は正規の順番(正順)で出力される。次に、スイッチ９fにおいて破線で示した接続で復号を行う。この第２回目の復号処理では、情報ビットYs及び復号結果にインタリーブを施して復号を行う。このとき復号結果出力もインタリーブ順序となる。以後、これら復号処理を繰り返すが、復号結果を見ると、繰り返し毎に出力順序が正順→インタリーブ順(IL順)→正順→インタリーブ順→…と繰り返される。【０００９】
図２０は復号回数とCRCチェック結果の取得タイミングの説明図であり、4回目の繰り返し復号結果で誤りが検出されない場合を示している。CRCチェック結果は図１５において説明したように、復号結果である入力データが正規の順序であれば復号終了と同時にCRCチェック結果(誤りの有無)を出力できる。しかし、入力データのビット列がインタリーブされて並び替えられていると、正規の順序に並び替えてからCRCチェックをする必要があり、CRCチェック結果の出力タイミングが遅れる。このため、ターボ復号における復号回数とCRCチェック結果の取得タイミングは図２０に示すようになる。
すなわち、ターボ復号の結果をCRCチェックする場合、奇数回目の復号結果はデータが正順であることから、そのままCRC演算装置の除算器に入力することが出来、ターボ復号が終わると同時にCRCチェック結果を出力することが可能である。一方、インタリーブ順に復号結果を出力する場合、データを正順に並べ替える必要があるため、復号結果を一旦メモリに蓄えてからCRC演算装置の除算器に入力する必要があり、CRCチェック結果の取得タイミングが遅れる。このため、第４回目の復号結果に誤りが検出されなくなり、ターボ復号動作を停止しようとしても、既にCRC演算中に次の(第５回目の)ターボ復号を行っており、ターボ復号器を過度に動作させてしまう。換言すれば、無用のターボ復号動作を１回余分に実行することになり、ターボ復号の処理効率が低下している。【００１０】
従来技術として、シンドローム演算時におけるデータの順序がチェックデータの作成時と異なっていても正しくシンドローム演算を行なうことが可能なシンドローム演算技術が
提案されている（特許文献１）。しかし、この従来技術は入力データのビット列がインタリーブ操作などで並び替えられている場合において、正規の順序に並び替えることなくCRCチェック結果を高速に出力する技術ではない。
以上から本発明の目的は、入力データのビット列が並び替えられている場合、その順で（正規の順序に並び替えることなく）CRCチェック結果を出力することである。
本発明の別の目的は、復号結果に誤りが無くなった時、直ちにCRCチェック結果を出力することである。
本発明の別の目的は、復号器の復号回数を減少することである。
本発明の別の目的は、小規模のハードウェア構成で目的とするCRC演算装置を実現できるようにすることである。
【特許文献１】特開平５−１６５６６０
【発明の開示】
【００１１】
・誤り検出方法
本発明の第１は、所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出方法であり、それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を予め計算してメモリに保存するステップ、入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力するステップ、入力データ列のうち０でないデータの正規のビット位置に対応する剰余値を前記メモリより求め、求めた各剰余値をビット対応に加算するステップ、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定するステップを有している。
前記剰余値の保存ステップにおいて、一定数のビット間隔の各ビット位置に応じた剰余値を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する。
【００１２】
・誤り訂正/誤り検出復号方法
本発明の第２は、所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号を付加し、しかる後、所定の符号化方式により符号化した符号化データ列を復号する誤り訂正/誤り検出復号方法であり、誤り検出部において、それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を予め計算してメモリに保存するステップ、復号部において符号化データ列を繰り返し復号するステップ、復号結果を示すデータ列と共に、各データの正規のビット位置を示すビット位置情報を誤り検出部に入力するステップ、該誤り検出部において、復号結果のうち０でないデータの正規のビット位置に対応する剰余値を前記メモリより求め、求めた各剰余値をビット対応に加算し、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定するステップ、復号部は誤りが検出されなくなったとき前記符号化データの復号を停止するステップを有している。
【００１３】
・誤り検出装置
本発明の第３は、所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出装置であり、それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を保存する剰余メモリ、入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力され、入力データ列のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算する加算部、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以
外では誤り有りと判定する誤り有無判定部を有している。
【００１４】
・誤り訂正/誤り検出復号装置
本発明の第４は、所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号を付加し、しかる後、所定の符号化方式により符号化した符号化データ列を復号する誤り訂正/誤り検出復号装置であり、前記符号化データ列を繰り返し復号する復号部、復号結果に対する誤りの有無を検出し、誤り検出結果を復号部に通知する誤り検出部を備え、前記復号部は、符号化データ列を繰り返し復号して復号結果を出力する復号器、復号結果の各データの正規なビット位置を出力するビット位置管理部、復号器の復号処理の継続、停止を制御する制御部を備え、前記誤り検出部は、それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を保存する剰余メモリ、復号結果と共に、該復号結果の各データの正規のビット位置を示すビット位置情報を入力され、復号結果のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算する加算部、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する誤り有無判定部を備えている。
【図面の簡単な説明】
【００１５】
【図１】CRC演算装置の原理構成図である。
【図２】データ入力開始からチェック結果出力までのタイミング説明図である。
【図３】本発明の第1実施例の構成図である。
【図４】第２実施例のビット番号iとP，kの関係説明図である。
【図５】第２実施例の剰余メモリの内容説明図である。
【図６】第２実施例のCRC演算装置の構成図である。
【図７】剰余値補間部の各部の入力ビット数、出力ビット数を明示した説明図である。
【図８】剰余計算部の構成説明図である。
【図９】第１実施例のCRC演算装置をターボ復号結果の誤り検出に使用した第３実施例の構成図である。
【図１０】第３実施例におけるターボ復号器の復号結果とCRCチェック結果の出力タイミングを示す説明図である。
【図１１】第４実施例のCRCチェック装置の構成図である。
【図１２】入力ビット列が並列化されて入力される場合の説明図である。
【図１３】誤り検出を適用した通信システムの構成例である。
【図１４】除算回路の構成例である。
【図１５】正規の順序で並んでいないビット列が入力する場合のCRCチェック回路の構成図である。
【図１６】誤り訂正符号にターボ符号を採用し、誤り検出符号にCRC符号を用いた通信システム例である。
【図１７】ターボ符号器の構成図である。
【図１８】ターボ復号器の構成図である。
【図１９】第１、第２の要素復号器を１つの要素復号器で共用させたターボ復号器の構成図である。
【図２０】復号回数とCRCチェック結果の取得タイミングの説明図である。
【発明を実施するための最良の形態】
【００１６】
(A)本発明の原理
本発明は、並び替え処理が施されたデータに対して、その順で（並び順を元に戻さずとも）ＣＲＣ演算を行うことができるようにするものである。
例えば、インタリーブ処理等によりランダム化された順序でデータが入力される場合のCRC演算方式において、データの入力順序によらずに、演算を行うことで、誤り検出結果をすばやく出力することを可能にするものである。なお、以下の演算は全て「ビット対応のモジュロ２演算」を示している。「ビット対応の演算」とは同一ビット位置同士の演算を意味し、モジュロ２加算の演算子は「＋」を使用する。モジュロ２加算は具体的には排他的論理和演算であり、したがって、ビット対応のモジュロ２加算とは、同一ビット位置同士の排他的論理和演算を意味する。また、回路構成を示す図中に表れる＋演算記号も同様にビット対応の排他的論理和演算を意味する。
CRC演算に用いられる剰余演算は、入力データを多項式と見立てて、A(x)と表現し、m次の生成多項式G(x)で割った剰余を求めることである。
Nビットの入力ビット列、
2009019763.tif 000004
を
【数２】
2009019763.tif 000005
にて多項式表現する。また、m次の生成多項式は、
【数３】
2009019763.tif 000006
で表されているものとする。
第iビット位置に応じた多項式ｘiをG(x)で割った剰余をRi(x)とおくと、
【数４】
2009019763.tif 000007
と表される。ここで、ｘiは1の後にi個の"0"を付加したデータ列(多項式)を意味する。また、Qi(x)はｘiをG(x)で割った商多項式である。これにより、A(x)を書き直すと、
【数５】
2009019763.tif 000008
となる。(5)式の右辺第二項は生成多項式G(x)で割り切れることから、A(x)をG(x)で割った剰余R(x)は、(5)式の右辺第一項をG(x)で割った剰余となるが、第一項は、G(x)で割り切れないために、R(x)は
【数６】
2009019763.tif 000009
となる。このため、Ri(x)が予めわかっていれば、入力がどんな順番でもai Ri(x)を計算して、全ビットの結果の総和を求めることにより剰余値R(x)を算出ることが出来る。【００１７】
図1は以上の原理に従ったCRC演算装置の構成図であり、このCRC演算装置には1ビットづつビットデータaiと共に該データの正規のビット位置iを示すビット位置情報（データ番号）が入力する。剰余メモリ１１は予めｘiを生成多項式G(x)で割ったmビットの剰余Ri(x)をビット位置i（i=0〜N、N+1は入力データ列のビット数）に対応させて記憶しており、ビット位置情報iが入力すると該ビット位置iに応じた剰余Ri(x)を出力する。乗算器１２は、aiが１であれば剰余Ri(x)をそのまま出力し、aiが０であればmビットの０を出力する。加算部１３はそれまでの加算結果(初期値はmビットの０)と乗算器１２の出力をビット対応にモジュロ２加算(排他的論理和演算)して加算結果をレジスタ１４に保存する。以後、入力データの全ビットについて上記処理を繰り返し、最後のモジュロ２加算結果を剰余R(x)として出力する。誤り検出部１５は、剰余R(x)が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定し、判定結果を出力する。
以上のようにすれば、入力順序が正規の順でなくて並び替えられていても、N+1ビットのデータ入力完了とほぼ同時にCRCチェック結果を出力することが可能となり、データ入力開始から、チェック結果出力までの時間が、図２の(ａ)に示すように従来2×N時間掛かっていたものが、（b）に示すようにN時間で終了することとなる。このため、ターボ復号の繰り返し復号終了後に直ちにCRCチェック結果を出力でき、復号結果の誤り無しの場合、ターボ復号器を直ちに停止することが可能となり、余計な復号器動作を必要としない。【００１８】
（Ｂ）第１実施例
図３は本発明の第1実施例の構成図であり、図１と同一部分には同一符号を付している。異なる点は、剰余メモリ１１の内容を明示している点、各部１１〜１５の入力ビット数、出力ビット数を明示している点であり、剰余Ri(x)のビット数ｍは２４ビットである。
剰余値R(x)は、(6)式の右辺を求めることにより実施し、Ri(x)の値はあらかじめテーブルとして剰余メモリ１１に記憶している。入力データaiはデータ番号iと共に入力され、データ番号iによってROMテーブルを参照し、剰余Ri(x)を算出する。算出されたRi(x)は入力データaiと乗算し、乗算結果をレジスタ１４に保存されているそれまでの加算結果(初期値はmビットの０)と加算し、加算結果をレジスタ１４に保存する。上記の動作を全ビットについて行なえば、データ入力完了後に、剰余値R(x)が求まる。誤り検出部１５は該剰余値R(x)が0であるかの判定を行い、0である場合は、チェック結果OKを出力し、0以外である場合は、チェック結果NGを出力する。
すなわち、第１実施例のCRC演算装置は、(1)入力データ列の各データaiと共に、各データの正規のビット位置を示すビット位置情報iを入力され、(2)N+1ビットの入力データ列のうち０でないデータの正規ビット位置iに対応する剰余値Ri(x)を求め、求めた各剰余値Ri(x)をビット対応にモジュロ２加算し、(3)加算結果を剰余値R(x)とし、該剰余値R(x)が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する。これにより、第１実施例によれば、ターボ復号の繰り返し復号終了後に直ちにCRCチェック結果を出力することができる。【００１９】
（Ｃ）第２実施例
第1実施例では、入力されるデータの最大ビット長N+1のそれぞれについて剰余値Ri(x)を保管する必要があり、Nが大きくなると、例えばN＝10,000となると、剰余メモリ１１のサイズが大きくなる問題がある。そこで、第２実施例ではPビットおきに剰余値を剰余メモリに記憶することで剰余メモリ１１のサイズの削減を図る。
Pを任意の定数として、図４に示すようにビット位置を示すiを
【数７】
2009019763.tif 000010
のように、分解する。ただし、P＝2sである。
このとき、必要となる剰余値Ri(x)はｘiを生成多項式G(x)で割った剰余である。ｘiはxPnを生成多項式G(x)で割った商多項式をQPn(x)、剰余多項式をRPn(x)として表すと、
【数８】
2009019763.tif 000011
となることから、剰余値Ri(x)はRPn(x)・xkをG(x)で割った剰余と等しくなる。そのため、図５に示すようにP毎のビット位置nに対応させてRPn(x)をテーブル化して記憶しておき、ビット位置i(i=P・n+k)のPに応じたRPn(x)をテーブルから求めてxkを乗算し、乗算結果RPn(x)・xkをG(x)で除算して余りを求め、該余りを剰余値Ri(x)とする。
RPn(x)・xkはテーブルから得られたRPn(x)を左へkビットシフトし、空きビットに0を挿入する演算により求める。【００２０】
図６は以上の原理に従った第２実施例のCRC演算装置の構成図であり、図１と同一部分には同一符号を付している。異なる点は、一定数P毎のビット位置P×nに応じた剰余値RPn(x)を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する剰余値補間部２０と、ビット位置i(i=P・n+k)を入力されてP、kに分離する分離部３０を設けている点である。
剰余値補間部２０は、一定数P毎のビット位置P×nに応じた剰余値RPn(x)を保存する剰
余メモリ２１、ビット位置i(i=P・n+k)のPに応じたRPn(x)をkビットシフトするシフト部２２、シフトして得られたRPn(x)・xkを生成多項式G(x)で除算して余りRi(x)を出力する剰余計算部２３を備えている。
CRC演算装置には1ビットづつビットデータaiと共に該データの正規のビット位置i （＝P・n+k)を示すビット位置情報（データ番号）が入力する。分離部３０はビット位置iをP、kに分離し、剰余メモリ２１はｎに応じた剰余RPn(x)を出力する。シフト部２２はRPn(x)をkビットシフトしてRPn(x)・xkを演算し、剰余計算部２３はRPn(x)・xkを生成多項式G(x)で除算して余りRi(x)を出力する。【００２１】
乗算器１２は、aiが１であれば剰余Ri(x)をそのまま出力し、aiが０であればmビットの０を出力する。加算部１３はレジスタ１４に保存されているそれまでの加算結果(初期値はmビットの０)と乗算器１２の出力をビット対応にモジュロ２加算して加算結果をレジスタ１４に保存する。以後、入力データの全ビットについて上記処理を繰り返し、最後のモジュロ２加算結果を剰余R(x)として出力する。誤り検出部１５は、剰余R(x)が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定し、判定結果を出力する。
剰余値をmビットとするとシフト演算結果は、最大m＋P−1ビットとなり、ｍ=24，P=32(=26)とすれば、シフト演算結果は55ビットとなる。図７（A）、（B）はｍ=24，P=32(=26)，s=6，N=12とした場合における剰余値補間部２０の各部の入力ビット数、出力ビット数を明示したものであり、kは0〜4の5ビットで表現され、nは5〜12の8ビットで表現される。剰余メモリ２１はnに対応させて24ビットのRPn(x)（＝R32n(x)）を記憶している。シフト部２２の出力Iは0〜54の55ビットであり、剰余計算部２３の出力Ri(x)（＝RPn+k(x)）は24ビットである。【００２２】
図６及び図７（A）における剰余計算部２３を、図１４で説明したシフトレジスタ(除算器)で構成すると除算に55クロック時間を必要として好ましくない。ところで、剰余計算部２３の入力Iのビット数は55と一定である。このため、入力IをG(x)で除算するということは、固定入力ビット長の除算と考えることができ、シフトレジスタを使わない排他的論理和のみの一意の固定回路で実現することができる。たとえば、生成多項式を
【数９】
2009019763.tif 000012
とし、P=32とすると、剰余計算部２３の出力ビットO[0]〜O[23]は、図８に示すように入力ビットI[0]〜I[54]の所定の組み合わせの排他的論理和演算により求めることができる。一例として、O[22]はI[45]，I[40]，I[22]の排他的論理和演算により求めることができる。
第２実施例によれば、第１実施例と同様にターボ復号の繰り返し復号終了後に直ちにCRCチェック結果を出力することができ、しかも剰余メモリの容量を削減することができる。【００２３】
（Ｄ）第３実施例
図９は第１実施例のCRC演算装置を、ターボ復号結果の誤り検出に使用した第３実施例の構成図である。ターボ復号部５１は図１９で説明したターボ復号器５１ａに加えて、復号結果の各ビットの正規のビット位置を示すビット番号を出力するビット番号出力部５１ｂを備えている。ビット番号出力部５１ｂは復号結果が正規な順番であれば、該正規な順番にビット番号を出力し、復号結果がインターリーブされた順番であれば、該インターリーブ順にビット番号を出力する。CRC演算部５２は図３に示す第１実施例の構成を備え、ターボ復号器５１aの復号結果とビット番号を入力され、該ターボ復号結果に誤りが含ま
れているか否かをチェックし、チェック結果を出力する。ターボ復号器制御部５３は復号繰り返し回数が規定回数前であっても、CRC演算部５２からのチェック結果が「誤り無し」を示していれば、ターボ復号器５１aにターボ復号を停止させ、次の符号化データの復号を開始させる。なお、CRC演算装置５２として図６に示す第２実施例の構成を採用することもできる。【００２４】
図１０は第３実施例におけるターボ復号器の復号結果とCRCチェック結果の出力タイミングを示す説明図であり、４回の繰り返し復号により誤りが無くなった場合（CRC OK）を示している。第３実施例によれば、ターボ復号器５１aが復号結果を１ビットづつ入力しながら、CRC演算装置５２はCRCの演算ができるため、すなわち、ターボ復号器５１aがターボ復号を行いながらCRC演算装置５２がCRC演算できる。このため、ターボ復号器５１ａでの繰り返し復号終了後、CRC演算装置５２は直ちにその繰り返し復号結果に対するCRCチェック結果を出力でき、ターボ復号器制御部５３はCRC OKを検出してすぐにターボ復号器５１aに停止指示を出してターボ復号動作を停止させることができる。この結果、ターボ復号器５１ａは余分な繰り返し復号を行わなくても良く、次の符号化データの復号動作を開始することができる。
なお、図２０の復号結果が３回目のタイミングを参照すると、従来例では２回目のインターリーブ順のCRCチェック演算と３回目の正順のCRCチェック演算を同時に行わなくてはならない。このため、従来例では、CRC演算を同時に行える様に２個のCRC演算器を実装することを想定している。しかし、第３実施例によれば、１つのCRC演算器のみでターボ復号結果のCRC演算を行うがことも可能であり、CRC演算装置の実装個数を減らすことも出来る。【００２５】
（Ｅ）第４実施例
図１１は第４実施例のCRC演算装置の構成図であり、入力ビット列が並列化されて入力される場合において並列入力データ毎に剰余Ri(x)を算出する構成を備えている。なお、図３と同一部分には同一符号を付している。
図１２は入力ビット列が並列化されてCRC演算装置に入力される場合の説明図である。送信側において、送信情報にCRCビットを付加し、該CRCビットが付加された情報を複数個、図では５個のブロックに分割し、各分割したブロックにターボ符号器TCDR1〜TCDR5で例えばターボ符号化して送信する。なお、情報長は5×Mビットとし、0~M−1，M〜2M−1，2M〜3M−1，3M〜4M−1，4M〜5M−1に分割されているものとする。
受信側のターボ復号器TDEC1〜TDEC5は受信したそれぞれの符号化データに対してターボ復号を行い、復号結果を並列的に図１１の並列型のCRC演算装置６０に入力する。CRC演算装置６０は図１１に示す構成を備え、並列入力されたそれぞれのMビットデータに対して例えば第１実施例の剰余演算を行い、各並列データに対して得られた剰余値を用いて5×Mビットの剰余値R(x)を算出し、該剰余値R(x)が０であるか否かをチェックして、チェック結果を出力する。【００２６】
図１１において、各ターボ復号器TDEC1〜TDEC5から出力されたMビットの復号結果とビット番号は正規の順番で、あるいはインタリーブされた順番で第１〜第５の剰余演算部６１a，６１b，….，６１eに入力する。たとえば、第１の剰余演算部６１aには、Mビットの復号結果a0〜aM-1が正規の順番であるいはインタリーブされた順番で入力し、該復号結果ビットと共にその正規なビット位置を示すビット番号0〜M−1が入力する。また、第２の剰余演算部６１bには、Mビットの復号結果aM〜a2M-1が正規の順番であるいはインタリーブされた順番で入力し、該復号結果ビットと共にその正規なビット位置を示すビット番号M〜2M−1が入力する。同様に、第５の剰余演算部６１eには、Mビットの復号結果a4M〜a5M-1が正規の順番であるいはインタリーブされた順番で入力し、該復号結果ビットと共にその正規なビット位置を示すビット番号4M〜5M−1が入力する。
剰余演算部６１a，６１b，….，６１eは図３の第1実施例における剰余メモリ１１と乗
算部１２に相当し、各剰余メモリ１１a〜１１eにはそれぞれ、ビット位置に対応させて剰余Ri(x)が記憶されている。すなわち、剰余メモリ１１aにはビット位置i=0〜M−1に対応させてR0(x)〜R
M-1(x)が記憶され、剰余メモリ１１bにはビット位置i=M〜2M−1に対応させてRM(x)〜R2M-1
(x)が記憶され、以下同様に剰余メモリ１１eにはビット位置i=4M〜5M−1に対応させてR4M(x)
〜R5M-1 (x)が記憶される。各剰余メモリ１１a〜１１eは、入力されたビット位置に応じた剰余を出力する。乗算部１２a〜１２eはそれぞれ入力された復号結果ビットに剰余メモリ１１a〜１１eから入力する剰余値を乗算して加算部１３に入力する。なお、乗算部１２a〜１２eより全体として一度に５ビット分の剰余が加算部１３に入力する。加算部１３はそれまでの加算結果(レジスタ１４に保存されており、初期値は０)と乗算器１２a〜１２eの出力をビット対応にモジュロ２加算して加算結果をレジスタ１４に保存する。以後、入力データのMビットについて上記処理を繰り返し、最後のモジュロ２加算結果を剰余R(x)として出力する。誤り検出部１５は、剰余R(x)が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定し、判定結果を出力する。図１１では図３の第１実施例のCRC演算装置を基本に構成したが、図６の第２実施例のCRC演算装置を基本に構成することもできる。
以上要約すれば、CRC演算装置６０は、復号結果が並列入力するとき、各並列データ列の０でないビットデータの正規ビット位置に対応する剰余値を全て加算器１３においてモジュロ加算し、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定してチェック結果を出力する。【００２７】
・発明の効果
以上本発明によれば、入力データのビット列が並び替えられている場合でも、そのまま（正規の順序に並び替えずとも）CRCチェック結果を出力することができる。また、本発明によれば、復号結果に誤りが無くなった時、直ちにCRCチェック結果を出力することができる。また、本発明によれば、復号結果に誤りが無くなった時、直ちに復号動作を停止して次の符号化データの復号を開始でき、１つの符号化データに対する復号器の復号回数を減少することができる。また、本発明によれば、小規模のハードウェア構成で目的とするCRC演算装置を実現することができる。
【図１】
2009019763.tif 000013
【図２】
2009019763.tif 000014
【図３】
2009019763.tif 000015
【図４】
2009019763.tif 000016
【図５】
2009019763.tif 000017
【図６】
2009019763.tif 000018
【図７】
2009019763.tif 000019
【図８】
2009019763.tif 000020
【図９】
2009019763.tif 000021
【図１０】
2009019763.tif 000022
【図１１】
2009019763.tif 000023
【図１２】
2009019763.tif 000024
【図１３】
2009019763.tif 000025
【図１４】
2009019763.tif 000026
【図１５】
2009019763.tif 000027
【図１６】
2009019763.tif 000028
【図１７】
2009019763.tif 000029
【図１８】
2009019763.tif 000030
【図１９】
2009019763.tif 000031
【図２０】
2009019763.tif 000032
【手続補正書】
【提出日】平成21年10月29日(2009.10.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出方法において、
それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を予め計算してメモリに保存し、
入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力し、
入力データ列のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算し、
加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する、
ことを特徴とする誤り検出方法。
【請求項２】
前記剰余値の保存ステップにおいて、一定数のビット間隔の各ビット位置に応じた剰余値を保存し、保存されていないビット位置の剰余値を保存されている剰余値を用いて補間する、
ことを特徴とする請求項１記載の誤り検出方法。
【請求項３】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号を付加し、しかる後、所定の符号化方式により符号化した符号化データ列を復号する誤り訂正/誤り検出
復号方法において、
誤り検出部において、それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を予め計算してメモリに保存しておき、
復号部において符号化データ列を繰り返し復号し、
復号結果を示すデータ列と共に、各データの正規のビット位置を示すビット位置情報を誤り検出部に入力し、
該誤り検出部において、復号結果のうち０でないデータの正規のビット位置に対応する剰余値を前記メモリより求め、求めた各剰余値をビット対応に加算し、加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定し、
復号部は誤りが検出されなくなったとき前記符号化データの復号を停止する、
ことを特徴とする誤り訂正/誤り検出復号方法。
【請求項４】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号が付加されたデータ列を入力され、該入力データにおける誤りの有無を検出する誤り検出装置において、
それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を保存する剰余メモリ、
入力データ列と共に、各データの正規のビット位置を示すビット位置情報を入力され、入力データ列のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算する加算部、
加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する誤り有無判定部、
を有することを特徴とする誤り検出装置。
【請求項５】
所定ビット長のデータ列を多項式とみなし、該多項式を誤り検出符号生成用の多項式（生成多項式）で除算し、余りが０となるように該データ列に誤り検出符号を付加し、しかる後、所定の符号化方式により符号化した符号化データ列を復号する誤り訂正/誤り検出
復号装置において、
前記符号化データ列を繰り返し復号する復号部、復号結果に対する誤りの有無を検出し、誤り検出結果を復号部に通知する誤り検出部、
を備え、前記復号部は、
符号化データ列を繰り返し復号して復号結果を出力する復号器、
復号結果の各データの正規のビット位置を出力するビット位置管理部、
復号器の復号処理の継続、停止を制御する制御部、
を備え、前記誤り検出部は、
それぞれのビット位置に応じた多項式を前記生成多項式で除算したときの剰余値を保存する剰余メモリ、
復号結果と共に、該復号結果の各データの正規のビット位置を示すビット位置情報を入力され、復号結果のうち０でないデータの正規のビット位置に対応する剰余値を前記剰余メモリより求め、求めた各剰余値をビット対応に加算する加算部、
加算結果が全てのビットで０となる場合には入力データ列に誤りなしと判定し、それ以外では誤り有りと判定する誤り有無判定部、
を備え、
前記復号部は誤りが検出されなくなったとき前記符号化データの復号を停止する、
ことを特徴とする誤り訂正/誤り検出復号装置。
【国際調査報告】
2009019763.tif 000033
2009019763.tif 000034