(57)【要約】【課題】誤り検出に係る処理量を削減すること。【解決手段】剰余値取得部３１−０〜３１−Ｘは、サブブロック０〜Ｋ−１にそれぞれ対応する複数の剰余値を剰余値テーブル６１から取得することより、サブブロック０〜Ｋ−１にそれぞれ対応する複数の部分剰余を取得する。ただし、剰余値取得部３１−０〜３１−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、剰余値取得部３１−０〜３１−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビットが同一値であるサブブロックに対応する部分剰余を取得しない。誤り判定部４３は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。【選択図】図３
2016051924.tif 000002
【特許請求の範囲】
【請求項１】
無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行って、１ブロックの情報ビット列に対応する復号ビット列を繰り返し得る復号部と、
前記復号ビット列を複数のサブブロックに分割し、前記複数のサブブロックにそれぞれ対応する複数の部分剰余を取得し、前記複数の部分剰余を加算した合計剰余に基づいて前記復号ビット列における誤りの有無を判定する誤り検出部と、を具備し、
前記誤り検出部は、前記複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含む第一のサブブロックに対応する第一の部分剰余を取得する一方で、前記前回の復号ビット列と前記今回の復号ビット列との間ですべてのビットが同一値である第二のサブブロックに対応する第二の部分剰余を取得せず、取得した前記第一の部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、前記今回の復号ビット列における誤りの有無を判定する、
復号装置。
【請求項２】
前記復号部は、前記復号ビット列に誤りが無くなったときに、前記復号を停止する、
請求項１に記載の復号装置。
【請求項３】
前記誤り検出部は、前記復号ビット列に誤りがあるときは、前記符号化ビット列の再送要求を出力し、前記復号ビット列に誤りが無くなったときに、前記再送要求の出力を停止する、
請求項１に記載の復号装置。
【請求項４】
多項式表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式を誤り検出符号生成用の生成多項式で除算したときのそれぞれの剰余値を記憶するテーブル、をさらに具備し、
前記誤り検出部は、前記第一のサブブロックに含まれるビットのうち前記前回の復号ビット列と前記今回の復号ビット列との間で値が異なるビットの正規のビット位置に対応する前記剰余値を前記第一の部分剰余として前記テーブルから取得する、
請求項１に記載の復号装置。
【請求項５】
前記複数のサブブロックの各サブブロックに対応する剰余値の初期値を記憶するテーブル、をさらに具備し、
前記誤り検出部は、前記初期値を用いて前記第一のサブブロックを前記生成多項式に基づいて除算したときの剰余値を前記第一の部分剰余として取得する、
請求項１に記載の復号装置。
【請求項６】
多項式表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式を誤り検出符号生成用の生成多項式で除算したときのそれぞれの剰余値のうち、所定のビット間隔Ｐの各ビット位置ｐ×Ｐ（ｐは０以上の整数）に対応する第一の剰余値を記憶するテーブル、をさらに具備し、
前記誤り検出部は、前記第一のサブブロックに含まれるビットのうち前記前回の復号ビット列と前記今回の復号ビット列との間で値が異なるビットの正規のビット位置ｐ×Ｐ＋ｑ（ｑは０以上かつＰ未満の整数）におけるｐ×Ｐに対応する前記第一の剰余値を前記テーブルから取得し、取得した前記第一の剰余値を累積加算して累積加算結果を求めた後に、前記累積加算結果をｑビットだけシフトしたシフト結果を前記生成多項式に基づいて除算したときの第二の剰余値を前記第一の部分剰余として取得する、
請求項１に記載の復号装置。
【請求項７】
無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行って、１ブロックの情報ビット列に対応する復号ビット列を繰り返し得る復号部と、
前記復号ビット列を複数のサブブロックに分割し、前記複数のサブブロックにそれぞれ対応する複数の部分剰余を取得し、前記複数の部分剰余を加算した合計剰余に基づいて前記復号ビット列における誤りの有無を判定する誤り検出部と、
を具備する復号装置における誤り検出方法であって、
前記複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含む第一のサブブロックに対応する第一の部分剰余を取得する一方で、前記前回の復号ビット列と前記今回の復号ビット列との間ですべてのビットが同一値である第二のサブブロックに対応する第二の部分剰余を取得せず、
取得した前記第一の部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、前記今回の復号ビット列における誤りの有無を判定する、
誤り検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号装置及び誤り検出方法に関する。
【背景技術】
【０００２】
データを誤り無く伝送することが望まれるデータ通信システム、及び、データの読み出しを誤り無く行うことが望まれる記憶装置等では、伝送誤り及び読出誤り等を検出するために「誤り検出符号」が使用される。
【０００３】
誤り検出符号の一つに「ＣＲＣ（Cyclic  Redundancy  Check）符号」がある。ＣＲＣ符号を用いた誤り検出を行うデータ通信システムでは、送信側が、Ｋ’ビットの情報ビット列に相当する多項式をＣＲＣ符号生成用の生成多項式で除算したときのＬビットの剰余を情報ビット列に付加してＫビットの符号化ビット列を形成して受信側へ送信する。よって、誤り検出符号化後のビットサイズは「Ｋ＝Ｋ’＋Ｌ」となり、Ｋビットの符号化ビット列を生成多項式で除算したときの剰余は「０」となる。Ｋ’は１ブロックの情報ビットサイズ、つまり、ブロックサイズである。情報ビットの各ブロックに付加されるＬビットの剰余は「パリティビット」と呼ばれる。
【０００４】
受信側は、受信した符号化ビット列を生成多項式で除算し、剰余が「０」であれば「誤り無し」、剰余が「０以外」であれば「誤り有り」と判定して、受信した符号化ビット列に対する誤り検出を行う。
【０００５】
例えば、Ｋ’ビットの情報ビット列「ｂ＝（ａ０,…,ａＫ’−２,ａＫ’−１）」の多項式Ｂ（ｘ）は式（１）によって表される。
【数１】
2016051924.tif 000003
【０００６】
また、生成多項式Ｇ（ｘ）は式（２）によって表される。
【数２】
2016051924.tif 000004
【０００７】
式（１）に示す多項式Ｂ（ｘ）を生成多項式Ｇ（ｘ）で除算したときの剰余値Ｒｃｒｃ（ｘ）は式（３）によって表される。剰余値Ｒｃｒｃ（ｘ）はパリティビットに相当する。
【数３】
2016051924.tif 000005
【０００８】
ビット位置を調節したＲｃｒｃ（ｘ）をＢ（ｘ）に加算すると式（４）に示す多項式Ａ（ｘ）が得られる。このＡ（ｘ）は、誤り検出符号化後のＫビットの符号化ビット列「ａ＝（ａ０,…,ａＫ−２,ａＫ−１）」を多項式表現したものに相当する。
【数４】
2016051924.tif 000006
【０００９】
送信側は、多項式Ａ（ｘ）で表現される符号化ビット列を受信側へ送信する。
【００１０】
ここで、Ａ（ｘ）をＧ（ｘ）で除算したときの剰余は「０」となる。よって、Ａ（ｘ）をＧ（ｘ）で除算した商多項式をＱ（ｘ）とすると、Ａ（ｘ）は式（５）によって表される。
【数５】
2016051924.tif 000007
【００１１】
送信側から送信された符号化ビット列Ａ（ｘ）は伝送路上において雑音等の影響を受けるため、受信側にて受信された符号化ビット列Ａ＾（ｘ）には誤りが含まれることがある。そこで、受信側は、受信した符号化ビット列Ａ＾（ｘ）を生成多項式Ｇ（ｘ）で除算したときの剰余Ｒ＾（ｘ）を式（６）に従って算出する。
【数６】
2016051924.tif 000008
【００１２】
そして、受信側は、Ｒ＾（ｘ）が「０」となるときはＡ＾（ｘ）に「誤り無し」と判定し、Ｒ＾（ｘ）が「０以外」となるときはＡ＾（ｘ）に「誤り有り」と判定する。
【００１３】
ここで、１つめの関連技術として、インタリーブにより並び順がランダム化された符号化ビット列に対し、デインタリーブすることなく、そのままの並び順で誤り検出が可能な誤り検出装置がある。この誤り検出装置では、インタリーブ処理前の情報ビット列におけるそれぞれのビット位置（つまり、正規のビット位置）に応じた多項式を生成多項式で除算したときの剰余値を予め算出してメモリに保存しておく。そして、ビット列の各ビットがランダムに入力されると共に、各ビットの正規のビット位置を示すビット位置情報が入力される。入力ビット列の各ビットのうち値が０でないビット、つまり、値が１であるビットの正規のビット位置に対応する各剰余値をメモリより取得し、取得した各剰余値を累積加算する。累積加算結果が「０」となるときは入力ビット列に「誤り無し」と判定し、累積加算結果が「０以外」となるときは入力ビット列に「誤り有り」と判定する。つまり、入力ビット列の各ビットのうち０でないビットの正規のビット位置に対応する各剰余値の累積加算結果が式（６）のＲ＾（ｘ）に相当する。
【００１４】
また、２つめの関連技術として、１つめの関連技術におけるメモリのサイズを削減可能な誤り検出装置がある。この誤り検出装置では、所定のビット間隔を「Ｐ」とするとき、正規のビット位置のうち「ｎ×Ｐ」（ｎ＝１,２,…）のビット位置に応じた剰余値のみをメモリに保存する。入力ビット列に対しては、正規のビット位置のうち「ｎ×Ｐ」のビット位置に対応する各剰余値を、１つめの関連技術と同様にして、メモリより求める。一方で、正規のビット位置のうち「ｎ×Ｐ＋ｋ」（０≦ｋ＜Ｐ）のビット位置に対応する各剰余値を、「ｎ×Ｐ」のビット位置に対応する剰余値をｋビットだけシフトし、そのシフト結果を生成多項式で除算することにより算出する。そして、メモリから取得した各剰余値と、シフト及び除算によって算出した各剰余値とを累積加算し、１つめの関連技術と同様にして、累積加算結果に基づいて入力ビット列における誤りの有無を判定する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特許第５１２６２３０号公報
【特許文献２】国際公開第２００９／０１９７６３号
【特許文献３】国際公開第２００８／０２３６８４号
【特許文献４】特開２００９−１３６０２５号公報
【特許文献５】特開２００５−００６１８８号公報
【特許文献６】米国特許出願公開第２０１０／０１３８７２５号明細書
【特許文献７】米国特許出願公開第２０１０／０１９８８９２号明細書
【非特許文献】
【００１６】
【非特許文献１】A.  Shibutani,  H.  Suda,  and  F.  Adachi,  “Complexity  Reduction  of  Turbo  Decoding,"  Proc.  IEEE  Veh.  Tech.  Conf.  '99  Fall,  Oct.  1999.
【発明の概要】
【発明が解決しようとする課題】
【００１７】
データ通信システムにおいて誤り率特性を改善するために、送信データに対して誤り訂正符号化（ＦＥＣ：Forward  Error  Correction）が行われることがある。また、ＦＥＣとしてターボ符号が用いられることがある。さらに、ＣＲＣ符号とターボ符号とが組み合わせて用いられる場合があり、この場合、送信側では、ＣＲＣ符号のパリティビットを付加した後のビット列に対してターボ符号化を行い、受信側では、ターボ復号後のビット列に対してＣＲＣを行う。ターボ復号では、復号結果の信頼度情報を用いて同一の受信データを繰り返し復号する。このため、ターボ復号では、復号の繰り返し毎に復号結果の誤り率が徐々に小さくなり、復号の回数がある回数に達した時点で復号結果に誤りが無くなる、つまり、エラーフリーとなる。以下では、誤り検出符号化及び誤り訂正符号化後のビット列を「符号化ビット列」と呼び、符号化ビット列を形成する各ビットを「符号化ビット」と呼ぶことがある。
【００１８】
ここで、ターボ復号では、特に復号結果の誤り率が小さくなってエラーフリーに近づいた時点では、今回の復号結果において前回の復号結果から値が変化するビットは一部のビットに限られる。すなわち、前回以前の復号においてすでに正しい値となっているビットの値は変化せず、正しい値となったビットは、正しい値となった以降は同じ値のビットであり続ける。
【００１９】
これに対し、ターボ復号の復号結果に対して１つめ、または、２つめの関連技術のＣＲＣを単に適用したのでは、繰り返しの復号により正しい値となったビットについて、同じ剰余値の取得及び同じ剰余値の演算等が繰り返し行われてしまう。つまり、ターボ復号の繰り返し毎に、ＣＲＣにおいて重複した処理が繰り返し行われることになり、ＣＲＣにおける無駄な処理が生じてしまう。
【００２０】
開示の技術は、上記に鑑みてなされたものであって、誤り検出に係る処理量を削減することを目的とする。
【課題を解決するための手段】
【００２１】
開示の態様では、復号装置は、復号部と、誤り検出部とを有する。復号部は、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行って、１ブロックの情報ビット列に対応する復号ビット列を繰り返し得る。誤り検出部は、前記復号ビット列を複数のサブブロックに分割し、前記複数のサブブロックにそれぞれ対応する複数の部分剰余を取得し、前記複数の部分剰余を加算した合計剰余に基づいて前記復号ビット列における誤りの有無を判定する。誤り検出部は、前記複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含む第一のサブブロックに対応する第一の部分剰余を取得する。一方で、誤り検出部は、前記前回の復号ビット列と前記今回の復号ビット列との間ですべてのビットが同一値である第二のサブブロックに対応する第二の部分剰余を取得しない。そして、誤り検出部は、取得した前記第一の部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、前記今回の復号ビット列における誤りの有無を判定する。
【発明の効果】
【００２２】
開示の態様によれば、誤り検出に係る処理量を削減することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、実施例１の無線受信装置の一例を示す機能ブロック図である。
【図２】図２は、実施例１の復号部の一例を示す機能ブロック図である。
【図３】図３は、実施例１の誤り検出部の一例を示す機能ブロック図である。
【図４】図４は、実施例１の剰余値テーブルの一例を示す図である。
【図５】図５は、実施例１の復号装置の処理の説明に供するフローチャートである。
【図６】図６は、実施例２の誤り検出部の一例を示す機能ブロック図である。
【図７】図７は、実施例２の剰余演算部の一例を示す機能ブロック図である。
【図８】図８は、実施例２の復号装置の処理の説明に供するフローチャートである。
【図９】図９は、実施例３の誤り検出部の一例を示す機能ブロック図である。
【図１０】図１０は、実施例３の剰余値テーブルの一例を示す図である。
【図１１】図１１は、実施例３の復号装置の処理の説明に供するフローチャートである。
【図１２】図１２は、復号装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００２４】
以下に、本願の開示する復号装置及び誤り検出方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する復号装置及び誤り検出方法が限定されるものではない。また、各実施例において同一の機能を有する構成部、及び、同一の処理を行うステップには同一の符号を付し、重複する説明を省略する。
【００２５】
［実施例１］
＜動作原理＞
式（４）に示す多項式Ａ（ｘ）を生成多項式Ｇ（ｘ）で除算したときの剰余値Ｒ（ｘ）を求める剰余演算は、式（７）によって表すことができるため、「線形演算」となる。つまり、２つめの関連技術のようにしてビット位置毎に生成多項式による剰余演算を行って求めた各剰余値を累積加算することにより算出した剰余値と、ビット位置毎の各剰余値の累積加算結果を生成多項式で除算することにより算出した剰余値とは等しくなる。
【数７】
2016051924.tif 000009
【００２６】
また、剰余値Ｒ（ｘ）を求める剰余演算は式（７）に示すような線形演算となるため、剰余値Ｒ（ｘ）を求めるベクトル演算は線形変換として表すことができる。
【００２７】
すなわち、単項式に対する剰余値Ｒｎ（ｘ）が式（８）により表されるとき、式（８）と等価な剰余ベクトルｒｎは、式（９）により表すことができる。
【数８】
2016051924.tif 000010
【数９】
2016051924.tif 000011
【００２８】
ここで、式（９）におけるＧｒは、ｎ＝０,１,…,Ｋ−１にそれぞれ対応する剰余値ｒ０,ｒ１,…,ｒＫ−１を用いて式（１０）によって表される。
【数１０】
2016051924.tif 000012
【００２９】
よって、Ｒ（ｘ）に対応するベクトルｒをｒ＝（ｒ０,ｒ１,…,ｒＬ）とすると、式（７）に示すＲ（ｘ）に対応する剰余ベクトルｒは、式（１１）によって表される。
【数１１】
2016051924.tif 000013
【００３０】
また、ランダムに入力されるビット列ａｎiに対して式（１１）を一般化すると、剰余ベクトルｒは式（１２）によって表される。
【数１２】
2016051924.tif 000014
【００３１】
ここで、ｌ＝０,１,２,…をターボ復号の繰り返しの順序を示すインデックスとすると、ｌ回目の復号結果に対するＣＲＣで得られる剰余ベクトルｒ（ｌ）は式（１３）によって表される。
【数１３】
2016051924.tif 000015
【００３２】
また、ｌ＋１回目の復号結果に対するＣＲＣで得られる剰余ベクトルｒ（ｌ＋１）は式（１４）及び式（１５）によって表される。
【数１４】
2016051924.tif 000016
【数１５】
2016051924.tif 000017
【００３３】
ＣＲＣにおける演算はすべて、ビット値に対しての算術演算（ＧＦ（２）＝｛０,１｝上の四則演算，ｍｏｄ２）である。このため、式（１５）における左辺は、ｌ回目（つまり、前回）の復号結果とｌ＋１回目（つまり、今回）の復号結果との間で、同一ビット位置にある各ビットについて、ｌ回目の値とｌ＋１回目の値とが同じときは「０」、異なるときは「１」となる。
【００３４】
よって、式（１４）は、前回得られた剰余ベクトルに対し、前回の復号結果と今回の復号結果との間で値が異なる一部のビットについてのみ、追加的に剰余ベクトルの加算を行うことにより、今回の剰余ベクトルが得られることを示している。
【００３５】
そこで、各実施例では、今回の誤り検出時に、前回の復号結果と今回の復号結果との間で値が異なる一部のビットに対応する一部の剰余だけを取得する。そして、取得した一部の剰余を前回の誤り検出に使用した剰余に追加的に加算して、今回の誤り検出に使用する剰余を求める。
【００３６】
＜無線受信装置の構成＞
図１は、実施例１の無線受信装置の一例を示す機能ブロック図である。図１において、無線受信装置１は、アンテナ２と、無線受信部３と、復調部４と、復号装置５とを有する。復号装置５は、復号部６と、誤り検出部７とを有する。
【００３７】
無線受信部３は、アンテナ２を介して受信した無線信号に対して、ダウンコンバート、アナログディジタル変換等を行ってベースバンド信号を得て復調部４へ出力する。
【００３８】
復調部４は、ベースバンド信号に対して復調処理を施し、各符号化ビットに対応する対数尤度比データ（以下では単に「尤度データ」と呼ぶことがある）を復号部６へ出力する。
【００３９】
復号部６は、尤度データを用いて誤り訂正復号を行い、復号結果を誤り検出部７へ出力する。復号部６は、復調部４によって得られた同一の尤度データに対して、例えばターボ復号により、繰り返し復号を行う。
【００４０】
誤り検出部７は、復号結果に対して、例えばＣＲＣによる誤り検出処理を行い、チェック結果と、誤り検出処理後の情報ビット列とを出力する。例えば、誤り検出部７は、復号部６から入力される復号結果のビット列（以下では「復号ビット列」と呼ぶことがある）に「誤り無し」と判定したときはチェック結果として「０」を出力し、復号ビット列に「誤り有り」と判定したときはチェック結果として「１」を出力する。以下では、復号ビット列を形成する各ビットを「復号ビット」と呼ぶことがある。
【００４１】
＜復号部の構成＞
図２は、実施例１の復号部の一例を示す機能ブロック図である。図２において、復号部６は、分配部１１と、要素復号部１２，１３と、インタリーバ１４と、デインタリーバ１５と、硬判定部１６とを有し、ターボ復号を行う。ターボ復号では、以下のようにして、要素復号部１２，１３が繰り返して復号を行うことで、復号の繰り返し毎に尤度データのＳＮＲ（Signal-Noise  Ratio）が改善される。
【００４２】
分配部１１には、復調部４から尤度データｙｓ，ｙｐ１，ｙｐ２が入力される。分配部１１は、１ブロックの情報ビット列に対応する尤度データｙｓ，ｙｐ１，ｙｐ２を、その１ブロックに含まれる情報ビットがエラーフリーとなるまで保持する。分配部１１は、尤度データｙｓを要素復号部１２へ出力するとともに、インタリーバ１４を介して要素復号部１３へ出力する。また、分配部１１は、尤度データｙｐ１を要素復号部１２へ出力し、尤度データｙｐ２を要素復号部１３へ出力する。つまり、分配部１１は、尤度データｙｓ，ｙｐ１，ｙｐ２を要素復号部１２と要素復号部１３とに分配する。尤度データｙｓは、送信側の無線送信装置が送信した組織ビット列（つまり、情報ビット列）に伝送路上で雑音が付加されたビット列の尤度データである。尤度データｙｐ１は、送信側の無線送信装置が送信したパリティビット列１に伝送路上で雑音が付加されたビット列の尤度データである。また、尤度データｙｐ２は、送信側の無線送信装置が送信したパリティビット列２に伝送路上で雑音が付加されたビット列の尤度データである。
【００４３】
要素復号部１２は、尤度データｙｐ１の冗長ビットと、要素復号部１３によって求められた事後確率とを用いて、尤度データｙｓの誤り訂正復号を繰り返し実行して事後確率を求める。要素復号部１２は、要素復号部１３によって求められる事後確率を要素復号部１２での誤り訂正復号の事前確率として用いる。要素復号部１２は、求めた事後確率を、インタリーバ１４を介して要素復号部１３へ出力する。
【００４４】
要素復号部１３は、尤度データｙｐ２の冗長ビットと、要素復号部１２によって求められた事後確率とを用いて、尤度データｙｓの誤り訂正復号を繰り返し実行して事後確率を求める。要素復号部１３は、要素復号部１２によって求められた事後確率を要素復号部１３での誤り訂正復号の事前確率として用いる。要素復号部１３は、求めた事後確率を、デインタリーバ１５を介して要素復号部１２へ出力する。また、要素復号部１３は、求めた事後確率を、デインタリーバ１５を介して硬判定部１６へ出力する。
【００４５】
要素復号部１２，１３は、例えば、ＭＡＰ復号（Maximum  A  Posteriori  Probability  decoding）アルゴリズム、または、ＳＯＶＡ（Soft  Output  Viterbi  Algorithm）等の軟出力復号アルゴリズム等に従って事後確率を求める。
【００４６】
要素復号部１２，１３は、誤り検出部７から停止指示を受けるまで、繰り返して復号を行う。要素復号部１２，１３は、誤り検出部７から停止指示を受けると、復号対象となっていたブロックの復号を停止し、次のブロックに対する復号を開始する。この停止指示は、誤り検出部７によって復号ビット列に「誤り無し」と判定されたときに誤り検出部７から出力される。このように、復号ビット列に誤りが無くなったときに復号を停止することにより、復号ビット列に誤りが無くなった以降も復号を繰り返すという無駄な処理を削減することができる。
【００４７】
硬判定部１６は、要素復号部１３によって求められた事後確率に対して硬判定を行って「０」または「１」の硬判定結果を出力する。よって、硬判定部１６での硬判定結果が復号ビットとなり、１ブロックの情報ビット列に対応する尤度データｙｓ，ｙｐ１，ｙｐ２から、１ブロックの情報ビット列に対応する復号ビット列が繰り返し得られる。
【００４８】
ここで、尤度データｙｓ，ｙｐ１，ｙｐ２は上記のように、送信側の無線送信装置が送信した組織ビット列及びパリティビット列１，２に伝送路上で雑音が付加された各ビット列の尤度データである。また、組織ビット列及びパリティビット列１，２は符号化ビット列に含まれる。つまり、復号部６は、尤度データｙｓ，ｙｐ１，ｙｐ２を用いて、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行っている。
【００４９】
インタリーバ１４は、送信側の無線送信装置のターボ符号器に備えられるインタリーバと同じ順序の置換を、尤度データｙｓ及び要素復号部１２で求められた事後確率に対して行う。デインタリーバ１５は、インタリーバ１４と逆の順序の置換を、要素復号部１３で求められた事後確率に対して行う。
【００５０】
インデックス番号出力部１７は、復号ビット列の各復号ビットａｎiの正規のビット位置を示すインデックス番号ｎｉを誤り検出部７へ出力する（ｉ＝０,１,２,…,Ｋ−１）。「正規のビット位置」とは、１ブロックの情報ビット列の各ビットの並び順がインタリーブされる前の各ビットの１ブッロク内における位置である。
【００５１】
＜誤り検出部の構成＞
図３は、実施例１の誤り検出部の一例を示す機能ブロック図である。図３において、誤り検出部７−１は、分割部２１と、比較部２２−０〜２２−Ｘと、記憶部２３−０〜２３−Ｘと、スイッチ２４−０〜２４−Ｘと、剰余値取得部３１−０〜３１−Ｘとを有する。図３において、「Ｘ＝Ｋ−１」である。また、誤り検出部７−１は、剰余値テーブル６１と、加算部４１と、記憶部４２と、誤り判定部４３とを有する。図３に示す誤り検出部７−１は、図１に示す誤り検出部７に相当する。
【００５２】
分割部２１には、復号ビット列の各復号ビットａｎiが入力されるとともに、各復号ビットａｎiの正規のビット位置を示すインデックス番号ｎｉが入力される（ｉ＝０,１,２,…,Ｋ−１）。分割部２１は、１ブロックの情報ビット列に対応する復号ビット列ａｎ０〜ａｎＫ−１を複数のサブブロックｉ（ｉ＝０,１,２,…,Ｋ−１）に分割し、各サブブロックを形成する復号ビットを並列に比較部２２−０〜２２−Ｘへ出力する。ここでは、サブブロックのブロックサイズを「１ビット」とする。つまり、分割部２１での分割後の各サブブロックはそれぞれ１ビットの復号ビットで形成される。例えば、サブブロック０は復号ビットａｎ０だけで形成され、復号ビットａｎ０は比較部２２−０へ出力される。
【００５３】
また、分割部２１は、比較部２２−０〜２２−Ｘへ並列に出力した復号ビットのそれぞれのインデックス番号を剰余値取得部３１−０〜３１−Ｘへ出力する。例えば、分割部２１は、比較部２２−０へ出力した復号ビットａｎ０のインデックス番号ｎ０を剰余値取得部３１−０へ出力する。
【００５４】
比較部２２−０〜２２−Ｘ及び記憶部２３−０〜２３−Ｘは、サブブロック０〜Ｋ−１にそれぞれ対応する。比較部２２−０〜２２−Ｘは、１ブロックの情報ビット列に対応する尤度データｙｓ，ｙｐ１，ｙｐ２から繰り返し得られる復号ビット列のうち、初回に得られた復号ビット列に対しては、スイッチ２４−０〜２４−Ｘをオンにして、比較部２２−０〜２２−Ｘと剰余値取得部３１−０〜３１−Ｘとを接続する。これにより、初回に得られた復号ビット列の各復号ビットは、比較部２２−０〜２２−Ｘから剰余値取得部３１−０〜３１−Ｘへそのまま出力される。また、比較部２２−０〜２２−Ｘは、初回に得られた復号ビット列の各復号ビットを記憶部２３−０〜２３−Ｘに記憶させる。よって例えば、記憶部２３−０は、復号ビットａｎ０を記憶する。
【００５５】
また、比較部２２−０〜２２−Ｘは、２回目以降の復号で得られた復号ビット列に対しては、今回得られた復号ビットの値と、前回得られた復号ビットの値とを比較する。前回得られた復号ビットは記憶部２３−０〜２３−Ｘに記憶されている。そして、比較部２２−０〜２２−Ｘは、前回と今回とで復号ビットの値が異なるときにスイッチ２４−０〜２４−Ｘをオンにして、比較部２２−０〜２２−Ｘと剰余値取得部３１−０〜３１−Ｘとを接続する。一方で、比較部２２−０〜２２−Ｘは、前回と今回とで復号ビットの値が一致するときは、スイッチ２４−０〜２４−Ｘをオフにして、比較部２２−０〜２２−Ｘと剰余値取得部３１−０〜３１−Ｘとを接続しない。よって、前回と今回とで復号ビットの値が異なるときは、復号ビットが剰余値取得部３１−０〜３１−Ｘに入力されて、剰余値取得部３１−０〜３１−Ｘによる剰余値の取得が行われる。一方で、前回と今回とで復号ビットの値が一致するときは、復号ビットが剰余値取得部３１−０〜３１−Ｘに入力されず、剰余値取得部３１−０〜３１−Ｘによる剰余値の取得が行われない。
【００５６】
例えば、比較部２２−０は、前回得られた復号ビットａｎ０（ｌ）の値と今回得られた復号ビットａｎ０（ｌ＋１）の値とが異なるときに、スイッチ２４−０をオンにする。一方で、比較部２２−０は、前回得られた復号ビットａｎ０（ｌ）の値と今回得られた復号ビットａｎ０（ｌ＋１）の値とが一致するときは、スイッチ２４−０をオフにする。また例えば、比較部２２−１は、前回得られた復号ビットａｎ１（ｌ）の値と今回得られた復号ビットａｎ１（ｌ＋１）の値とが異なるときに、スイッチ２４−１をオンにする。一方で、比較部２２−１は、前回得られた復号ビットａｎ１（ｌ）の値と今回得られた復号ビットａｎ１（ｌ＋１）の値とが一致するときは、スイッチ２４−１をオフにする。
【００５７】
また、比較部２２−０〜２２−Ｘは、２回目以降の復号に対しては、復号毎に得られた復号ビット列の各復号ビットによって、記憶部２３−０〜２３−Ｘに記憶されている復号ビットを順次更新する。なお、前回と今回とで復号ビットの値が一致するか否かを、式（１５）に従って判断してもよい。
【００５８】
なお、初回に得られた復号ビット列の各復号ビットに対しては前回得られた復号ビットが存在しないため、初回復号時には、今回得られた復号ビットの値と、前回得られた復号ビットの値とは常に一致しない。
【００５９】
剰余値テーブル６１は、各ビットａｎiの正規のビット位置ｎｉにそれぞれ対応するＬビットの剰余値ｒｎi（式（９）に示す剰余ベクトルｒｎに相当）を記憶する。図４は、実施例１の剰余値テーブルの一例を示す図である。例えば、剰余値テーブル６１は、図４に示すように、ビット位置０,１,２,…,Ｋ−１にそれぞれ対応させて剰余値ｒｎ0,ｒｎ1,ｒｎ2,…,ｒｎK-1を記憶する。なお、各ビットａｎiの正規のビット位置ｎｉにそれぞれ対応する剰余値ｒｎiは式（８）及び式（９）に従って予め算出可能である。つまり、剰余値テーブル６１は、多項式Ａ（ｘ）によって表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式ｘｎを生成多項式Ｇ（ｘ）で除算したときのそれぞれの剰余値Ｒｎ（ｘ）をｒｎとして記憶する。
【００６０】
剰余値取得部３１−０〜３１−Ｘは、サブブロック０〜Ｋ−１にそれぞれ対応する。剰余値取得部３１−０〜３１−Ｘは、比較部２２−０〜２２−Ｘから復号ビットを入力されたときに、各復号ビットａｎiのインデックス番号ｎｉに基づいて剰余値テーブル６１からＬビットの剰余値を取得して復号ビットａｎiに対応する「部分剰余」を取得する。剰余値取得部３１−０〜３１−Ｘは、取得した部分剰余を加算部４１へ出力する。ここではサブブロックのブロックサイズは１ビットであるため、剰余値取得部３１−０は、サブブロック０に対応する部分剰余を加算部４１へ出力し、剰余値取得部３１−１は、サブブロック１に対応する部分剰余を加算部４１へ出力し、剰余値取得部３１−Ｘは、サブブロックＫ−１に対応する部分剰余を加算部４１へ出力することになる。また、剰余値取得部３１−Ｘは、サブブロックＫ−１に対応する部分剰余を加算部４１へ出力する。つまり、剰余値取得部３１−０〜３１−Ｘの各々が、部分剰余取得部として機能する。ただし、初回復号時には、剰余値取得部３１−０〜３１−Ｘは、値が１である復号ビットに対応する剰余値を取得するが、値が０である復号ビットに対応する剰余値を取得しない。
【００６１】
一方で、剰余値取得部３１−０〜３１−Ｘは、比較部２２−０〜２２−Ｘから復号ビットを入力されないときは、剰余値テーブル６１からの剰余値の取得（つまり、部分剰余の取得）を行わない。
【００６２】
このように、誤り検出部７−１では、インデックス番号に基づいて、復号ビットに対応する剰余値を剰余値テーブル６１から取得する。こうすることで、インタリーブにより並び順がランダム化された符号化ビット列に対し、デインタリーブすることなく、そのままの並び順で誤り検出を行うことができる。よって、誤り検出に係る処理時間を削減することができるため、復号部６での復号を早期に停止させることができる。
【００６３】
加算部４１は、初回復号時には、取得された部分剰余をすべて加算して「合計剰余」を求め、求めた合計剰余を記憶部４２に記憶させる。
【００６４】
また、加算部４１は、２回目以降の復号時には、取得された部分剰余を、記憶部４２に記憶されている前回の合計剰余に加算して今回の合計剰余を求める。前回の合計剰余は、式（１３）に示すｒ（ｌ）に相当し、今回の合計剰余は、式（１４）に示すｒ（ｌ＋１）に相当する。加算部４１は、求めた今回の合計剰余を誤り判定部４３へ出力するとともに、求めた今回の合計剰余によって、記憶部４２に記憶されている前回の合計剰余を更新する。
【００６５】
誤り判定部４３は、加算部４１で求められた今回の合計剰余が「０」となるときは復号ビット列に「誤り無し」と判定し、加算部４１で求められた今回の合計剰余が「０以外」となるときは復号ビット列に「誤り有り」と判定する。そして、誤り判定部４３は、ＣＲＣ後の情報ビット列を出力するとともに、判定結果に対応する値をチェック結果として出力する。例えば、誤り判定部４３は、復号ビット列に「誤り無し」と判定したときはチェック結果として「０」を出力し、復号ビット列に「誤り有り」と判定したときはチェック結果として「１」を出力する。また、誤り判定部４３は、復号ビット列に「誤り無し」と判定したときは、復号の停止指示を復号部６へ出力する。
【００６６】
以上のように、誤り検出部７−１では、剰余値取得部３１−０〜３１−Ｘが、それぞれが１ビットをブロックサイズとするサブブロック０〜Ｋ−１にそれぞれ対応する複数の剰余値を剰余値テーブル６１から取得することより、サブブロック０〜Ｋ−１にそれぞれ対応する複数の部分剰余を取得する。誤り判定部４３は、取得された複数の部分剰余を加算した合計剰余に基づいて、復号ビット列における誤りの有無を判定する。ただし、剰余値取得部３１−０〜３１−Ｘは、比較部２２−０〜２２−Ｘでの比較結果に基づいて、前回の復号と今回の復号との間で値が変化したビットを含むサブブロックに対応する部分剰余だけしか取得しない。すなわち、剰余値取得部３１−０〜３１−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、剰余値取得部３１−０〜３１−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビット（ここでは、１ビット）が同一値であるサブブロックに対応する部分剰余を取得しない。そして、誤り判定部４３は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。
【００６７】
こうすることで、前回の復号時と今回の復号時とですべてのビット（ここでは、１ビット）の値が変化しないサブブロックに対応する部分剰余の取得をすることなく、今回の復号ビット列の誤り検出を行うことができる。このため、誤り検出に係る処理量を削減することができる。
【００６８】
ここで例えば、１つめの関連技術では、毎回の復号の度に、値が１である復号ビットについては剰余値の取得が行われ、値が０である復号ビットについては剰余値の取得は行われない。復号ビット列において、値が１であるビットの数と値が０であるビットの数とは平均的にはほぼ等しいと考えられる。つまり、約５割のビットの値が１である。よって、復号ビット列のブロックサイズをＫビット、１ビットあたりの処理量をＸとすると、１つめの関連技術における処理量は「Ｘ×Ｋ×０.５」と表すことができる。
【００６９】
これに対し、シミュレーションによると、今回の復号ビット列において、前回の復号ビット列から値が変化する復号ビットの割合は約２割であった。よって、１つめの関連技術における処理量と比較した場合の実施例１における処理量は「Ｘ×Ｋ×０.２」と表すことができ、これは１つめの関連技術における処理量の４割の処理量である。つまり、実施例１によれば、１つめの関連技術と比較して、誤り検出において６割の処理を削減することができる。
【００７０】
＜誤り検出装置の処理＞
図５は、実施例１の復号装置の処理の説明に供するフローチャートである。図５に示すフローチャートは、１ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。
【００７１】
まず、復号装置５は、合計剰余ｒを０にリセットするとともに（ステップＳ１０１）、復号の繰り返し回数を示すカウンタＩｔの値を０にリセットする（ステップＳ１０２）。
【００７２】
次いで、復号装置５は、Ｉｔの値がＩｍａｘ未満か否かを判断する（ステップＳ１０３）。Ｉｍａｘは所定の最大繰り返し回数であり、例えば、Ｉｍａｘの値は「１６」に設定される。
【００７３】
Ｉｔの値がＩｍａｘ以上となったときは（ステップＳ１０３：Ｎｏ）、復号装置５は復号を停止し（ステップＳ１２３）、処理は終了する。
【００７４】
Ｉｔの値がＩｍａｘ未満であるときは（ステップＳ１０３：Ｙｅｓ）、復号装置５は、符号化ビット列に対する復号を行って、１ブロックの情報ビット列に対応する復号ビット列を得る（ステップＳ１０４）。
【００７５】
次いで、復号装置５は、復号ビット列を複数のＫ個のサブブロックに分割する（ステップＳ１０５）。
【００７６】
次いで、復号装置５は、カウンタｉの値を０にリセットする（ステップＳ１０６）。
【００７７】
次いで、復号装置５は、ｉの値がＫ未満か否かを判断する（ステップＳ１０７）。
【００７８】
ｉの値がＫ未満であるときは（ステップＳ１０７：Ｙｅｓ）、復号装置５は、今回の復号ビットａｎiの値が、前回の復号ビットａｎi’の値と同一か否かを判断する（ステップＳ１０８）。
【００７９】
今回の復号ビットａｎiの値が、前回の復号ビットａｎi’の値と同一であるときは（ステップＳ１０８：Ｙｅｓ）、ステップＳ１０９〜Ｓ１１１の処理は行われず、処理はステップＳ１１２へ進む。
【００８０】
今回の復号ビットａｎiの値が、前回の復号ビットａｎi’の値と異なるときは（ステップＳ１０８：Ｎｏ）、復号装置５は、今回の復号ビットａｎiの正規のビット位置ｎｉを判断する（ステップＳ１０９）。
【００８１】
次いで、復号装置５は、ステップＳ１０９で判断したビット位置ｎｉに対応する剰余値ｒｎiを取得して部分剰余とする（ステップＳ１１０）。
【００８２】
次いで、復号装置５は、合計剰余ｒに部分剰余ｒｎiを加算して新たな合計剰余ｒを求める（ステップＳ１１１）。
【００８３】
次いで、復号装置５は、カウンタｉの値を１だけインクリメントし（ステップＳ１１２）、処理はステップＳ１０７に戻る。
【００８４】
そして、ステップＳ１０８〜Ｓ１１１の処理がＫ回だけ繰り返されてｉの値がＫ以上となったときに（ステップＳ１０７：Ｎｏ）、復号装置５は、合計剰余ｒに基づいて、復号ビット列における誤りの有無を判定する（ステップＳ１２１）。つまり、復号装置５は、合計剰余ｒが０であるときは復号ビット列に「誤り無し」と判定し、合計剰余ｒが０でないときは復号ビット列に「誤り有り」と判定する（ステップＳ１２１）。
【００８５】
合計剰余ｒが０でないときは（ステップＳ１２１：Ｎｏ）、復号装置５は、カウンタＩｔの値を１だけインクリメントし（ステップＳ１２２）、処理はステップＳ１０３に戻る。
【００８６】
合計剰余ｒが０であるときは（ステップＳ１２１：Ｙｅｓ）、復号装置５は復号を停止し（ステップＳ１２３）、処理は終了する。
【００８７】
［実施例２］
＜動作原理＞
ビットサイズがＫビットの符号化ビット列を、ブロックサイズがＷビット（ただし、Ｗは「２」以上）のＭ個のサブブロックに分割すると、Ｗ及びＫは、式（１６）によって表される。ただし、ＫはＭで割り切れるものとする。
【数１６】
2016051924.tif 000018
【００８８】
サブブロック毎の符号化ビット列をサブブロック毎の多項式Ａｍ（ｘ）を用いて表現すると、式（１７）に示すようになる。ただし、ｍ＝０,１,…,Ｍ−１である。
【数１７】
2016051924.tif 000019
【００８９】
よって、符号化ビット列全体の多項式Ａ（ｘ）は式（１８）によって表される。
【数１８】
2016051924.tif 000020
【００９０】
よって、式（１８）に示す多項式Ａ（ｘ）を生成多項式Ｇ（ｘ）で除算したときの剰余値Ｒ（ｘ）は式（１９）及び式（２０）によって表される。
【数１９】
2016051924.tif 000021
【数２０】
2016051924.tif 000022
【００９１】
そこで、実施例２では、復号ビット列をブロックサイズがＷビット（ただし、Ｗは「２」以上）のＭ個のサブブロックに分割し、各サブブロックに対応するＭ個の部分剰余Ｐｍ（ｘ）を並列に求める。
【００９２】
＜誤り検出部の構成＞
図６は、実施例２の誤り検出部の一例を示す機能ブロック図である。図６において、誤り検出部７−２は、分割部２５と、比較部２６−０〜２６−Ｘと、記憶部２７−０〜２７−Ｘと、スイッチ２４−０〜２４−Ｘと、部分剰余取得部５１−０〜５１−Ｘとを有する。部分剰余取得部５１−０は、剰余値取得部３４−０と、剰余演算部３５−０とを有し、部分剰余取得部５１−１は、剰余値取得部３４−１と、剰余演算部３５−１とを有し、部分剰余取得部５１−Ｘは、剰余値取得部３４−Ｘと、剰余演算部３５−Ｘとを有する。図６において、「Ｘ＝Ｍ−１」である。Ｍはサブブロック数である。また、誤り検出部７−２は、剰余値テーブル６２と、加算部４１と、記憶部４２と、誤り判定部４３とを有する。図６に示す誤り検出部７−２は、図１に示す誤り検出部７に相当する。
【００９３】
分割部２５には、復号ビット列の各復号ビットａｎiが入力されるとともに、各復号ビットａｎiの正規のビット位置を示すインデックス番号ｎｉが入力される（ｉ＝０,１,２,…,Ｋ−１）。分割部２５は、１ブロックの情報ビット列に対応する復号ビット列ａｎ０〜ａｎＫ−１を複数のサブブロックｉ（ｉ＝０,１,２,…,Ｍ−１）に分割し、各サブブロックの先頭の復号ビットから順番に、各サブブロックに含まれる復号ビットを並列に比較部２６−０〜２６−Ｘへ出力する。ここでは、サブブロックのブロックサイズをＷビット（ただし、Ｗは「２」以上）とする。よって例えば、サブブロック０に含まれる復号ビットは比較部２６−０へ出力され、サブブロック１に含まれる復号ビットは比較部２６−１へ出力される。また例えば、サブブロック０は復号ビットａ０,ａ１,…,ａＷ−１から形成され、復号ビットａ０,ａ１,…,ａＷ−１はａ０からシリアルな順番で比較部２６−０へ出力される。
【００９４】
また、分割部２５は、比較部２６−０〜２６−Ｘへ並列に出力する復号ビットのうち、各サブブロックの先頭の復号ビットのインデックス番号を剰余値取得部３４−０〜３４−Ｘへ出力する。例えば、分割部２５は、比較部２６−０へ出力した復号ビットａ０のインデックス番号０を剰余値取得部３４−０へ出力する。
【００９５】
比較部２６−０〜２６−Ｘ及び記憶部２７−０〜２７−Ｘは、サブブロック０〜Ｍ−１にそれぞれ対応する。比較部２６−０〜２６−Ｘは、１ブロックの情報ビット列に対応する尤度データｙｓ，ｙｐ１，ｙｐ２から繰り返し得られる復号ビット列のうち、初回に得られた復号ビット列に対しては、スイッチ２４−０〜２４−Ｘをオンにして、比較部２６−０〜２６−Ｘと剰余演算部３５−０〜３５−Ｘとを接続する。これにより、初回に得られた復号ビット列の各復号ビットは、比較部２６−０〜２６−Ｘから剰余演算部３５−０〜３５−Ｘへサブブロック単位でそのまま出力される。また、比較部２６−０〜２６−Ｘは、初回に得られた復号ビット列の各復号ビットをサブブロック毎に記憶部２７−０〜２７−Ｘに記憶させる。よって例えば、記憶部２７−０は、サブブッロク０を形成する復号ビットａ０,ａ１,…,ａＷ−１を記憶する。
【００９６】
また、比較部２６−０〜２６−Ｘは、２回目以降の復号で得られた復号ビット列に対しては、今回得られた復号ビットの値と、前回得られた復号ビットの値とを比較する。前回得られた復号ビットはサブブロック毎に記憶部２７−０〜２７−Ｘに記憶されている。比較部２７−０〜２７−Ｘは、比較部２７−０〜２７−Ｘにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在するときにスイッチ２４−０〜２４−Ｘをオンにして、比較部２６−０〜２６−Ｘと剰余演算部３５−０〜３５−Ｘとを接続する。一方で、比較部２６−０〜２６−Ｘは、比較部２７−０〜２７−Ｘにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在しないとき、つまり、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、スイッチ２４−０〜２４−Ｘをオフにして、比較部２６−０〜２６−Ｘと剰余演算部３５−０〜３５−Ｘとを接続しない。よって、サブブッロク内に前回と今回とで値が異なる復号ビットが存在するときは、各サブブロックの復号ビットが剰余演算部３５−０〜３５−Ｘに入力されて、剰余演算部３５−０〜３５−Ｘによる剰余演算が行われる。一方で、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、各サブブロックの復号ビットが剰余演算部３５−０〜３５−Ｘに入力されず、剰余演算部３５−０〜３５−Ｘによる剰余演算が行われない。
【００９７】
例えば、比較部２６−０は、サブブロック０において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ２４−０をオンにする。一方で、比較部２６−０は、サブブロック０において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ２４−０をオフにする。また例えば、比較部２６−１は、サブブロック１において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ２４−１をオンにする。一方で、比較部２６−１は、サブブロック１において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ２４−１をオフにする。
【００９８】
また、比較部２６−０〜２６−Ｘは、２回目以降の復号に対しては、復号毎に得られた各サブブロックの復号ビットによって、記憶部２７−０〜２７−Ｘに記憶されている各サブブロックの復号ビットを順次更新する。
【００９９】
なお、初回に得られた復号ビット列の各復号ビットに対しては前回得られた復号ビットが存在しないため、初回復号時には、今回得られた復号ビットの値と、前回得られた復号ビットの値とは常に一致しない。
【０１００】
剰余値テーブル６２は、式（２１）によって算出されるサブブロック毎の剰余値Ｐｍ（０）を、サブブロック毎の剰余演算の初期値として、各サブブロックの先頭の復号ビットのインデックス番号にそれぞれ対応づけて記憶する。
【数２１】
2016051924.tif 000023
【０１０１】
剰余値取得部３４−０〜３４−Ｘは、サブブロック０〜Ｍ−１にそれぞれ対応する。剰余値取得部３４−０〜３４−Ｘは、比較部２６−０〜２６−Ｘから各サブブロックの先頭の復号ビットを入力されたときに、先頭の復号ビットのインデックス番号に基づいて、剰余値テーブル６２からＬビットの剰余値Ｐｍ（０）を取得する。例えば、剰余値取得部３４−０は、サブブロック０の先頭の復号ビットのインデックス番号に基づいて剰余値Ｐ０（０）を取得し、剰余値取得部３４−１は、サブブロック１の先頭の復号ビットのインデックス番号に基づいて剰余値Ｐ１（０）を取得する。剰余値取得部３４−０〜３４−Ｘは、取得した剰余値Ｐｍ（０）を、サブブロック毎の剰余演算の初期値として、剰余演算部３５−０〜３５−Ｘに設定する。よって例えば、剰余値Ｐ０（０）は剰余演算部３５−０に設定され、剰余値Ｐ１（０）は剰余演算部３５−１に設定される。
【０１０２】
剰余演算部３５−０〜３５−Ｘは、サブブロック０〜Ｍ−１にそれぞれ対応する。剰余演算部３５−０〜３５−Ｘは、比較部２６−０〜２６−Ｘから各サブブロックの復号ビットを入力されたときに、剰余値Ｐｍ（０）を初期値として用いてサブブロック毎にＬビットの剰余値を算出して各サブブロックに対応する「部分剰余」を取得する。剰余演算部３５−０〜３５−Ｘは、取得した部分剰余を加算部４１へ出力する。すなわち、剰余値演算部３５−０は、サブブロック０に対応する部分剰余を加算部４１へ出力し、剰余値演算部３５−１は、サブブロック１に対応する部分剰余を加算部４１へ出力する。また、剰余値演算部３５−Ｘは、サブブロックＭ−１に対応する部分剰余を加算部４１へ出力する。
【０１０３】
一方で、剰余演算部３５−０〜３５−Ｘは、比較部２６−０〜２６−Ｘから各サブブロックの復号ビットを入力されないときは、剰余値の算出（つまり、部分剰余の取得）を行わない。
【０１０４】
図７は、実施例２の剰余演算部の一例を示す機能ブロック図である。図７に示す剰余演算部３５は、図６に示す剰余演算部３５−０〜３５−Ｘに相当する。
【０１０５】
図７において、剰余演算部３５は、加算器７１−０〜７１−Ｘと、遅延器Ｄ０〜ＤＬ−１と、乗算器７２−０〜７２−Ｘとを有する。図７において、「Ｘ＝Ｌ−１」であり、「Ｙ＝Ｌ−２」である。図７に示すｇ０〜ｇＬ−１は、式（２）におけるｇ０〜ｇＬ−１に相当する。ｇ０〜ｇＬ−１は「１」または「０」である。
【０１０６】
まず、剰余演算部３５の遅延器Ｄ０〜ＤＬ−１に対して、剰余値取得部３４−０〜３４−Ｘによって取得されたビット０〜ビットＬ−１のＬビットの剰余値Ｐｍ（０）の各ビットが初期値として設定される。そして、各サブブロックに含まれる復号ビットが先頭のビットから１ビットずつシリアルな順番で剰余演算部３５に入力される。サブブロック毎にすべての復号ビットの入力が完了した時点で、各サブブロックの復号ビット列を生成多項式Ｇ（ｘ）で除算したときの除算結果である商ビットが得られる。また、サブブロック毎にすべての復号ビットの入力が完了した時点での遅延器Ｄ０〜ＤＬ−１の内容がサブブロック毎の部分剰余Ｐｍとなる。このため、剰余演算部３５は、サブブロック毎にすべての復号ビットの入力が完了した時点で、遅延器Ｄ０〜ＤＬ−１の内容をサブブロック毎の部分剰余Ｐｍとして、加算部４１へ出力する。ここで、１ビットずつシリアルな順番で入力される複数のビットに対する、加算器、遅延器及び乗算器を用いた除算は「シリアル除算」と呼ばれることがある。
【０１０７】
このように、誤り検出部７−２では、サブブロック０〜Ｍ−１のＭ個の複数のサブブロック毎の部分剰余を並列に同時に取得して誤り検出を行う。このため、誤り検出に係る処理時間を削減することができるため、復号部６での復号を早期に停止させることができる。
【０１０８】
加算部４１、記憶部４２及び誤り判定部４３は、実施例１と同一であるため、説明を省略する。
【０１０９】
以上のように、誤り検出部７−２では、部分剰余取得部５１−０〜５１−Ｘが、それぞれがＷビット（ただし、Ｗは「２」以上）をブロックサイズとするサブブロック０〜Ｍ−１にそれぞれ対応する複数の剰余値を図７に示す構成を用いて算出することより、サブブロック０〜Ｍ−１にそれぞれ対応する複数の部分剰余を取得する。誤り判定部４３は、取得された複数の部分剰余を加算した合計剰余に基づいて、復号ビット列における誤りの有無を判定する。ただし、部分剰余取得部５１−０〜５１−Ｘは、比較部２６−０〜２６−Ｘでの比較結果に基づいて、前回の復号と今回の復号との間で値が変化したビットを含むサブブロックに対応する部分剰余だけしか取得しない。すなわち、部分剰余取得部５１−０〜５１−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、部分剰余取得部５１−０〜５１−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビットが同一値であるサブブロックに対応する部分剰余を取得しない。そして、誤り判定部４３は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。
【０１１０】
こうすることで、前回の復号時と今回の復号時とですべてのビットの値が変化しないサブブロックに対応する部分剰余の取得をすることなく、今回の復号ビット列の誤り検出を行うことができる。このため、誤り検出に係る処理量を削減することができる。
【０１１１】
＜誤り検出装置の処理＞
図８は、実施例２の復号装置の処理の説明に供するフローチャートである。図８に示すフローチャートは、１ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。図８におけるステップＳ１０１〜Ｓ１０４の処理は実施例１と同一であるため、説明を省略する。
【０１１２】
ステップＳ２０１において、復号装置５は、復号ビット列を複数のＭ個のサブブロックに分割する（ステップＳ２０１）。
【０１１３】
次いで、復号装置５は、カウンタｍの値を０にリセットして、サブブロック番号ｍを０に設定する（ステップＳ２０２）。
【０１１４】
次いで、復号装置５は、ｍの値がＭ未満か否かを判断する（ステップＳ２０３）。
【０１１５】
ｍの値がＭ未満であるときは（ステップＳ２０３：Ｙｅｓ）、復号装置５は、サブブロックｍにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一か否かを判断する（ステップＳ２０４）。
【０１１６】
サブブロックｍにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一であるときは（ステップＳ２０４：Ｙｅｓ）、ステップＳ２０５〜Ｓ２０８の処理は行われず、処理はステップＳ２０９へ進む。
【０１１７】
サブブロックｍにおいて、今回と前回とで値が異なる復号ビットがあるときは（ステップＳ２０４：Ｎｏ）、復号装置５は、サブブロックｍにおける先頭の復号ビットの正規のビット位置を判断する（ステップＳ２０５）。
【０１１８】
次いで、復号装置５は、ステップＳ２０５で判断したビット位置に対応する剰余値を取得する（ステップＳ２０６）。
【０１１９】
次いで、復号装置５は、ステップＳ２０５で取得した剰余値を初期値として用いて、サブブロックｍに対する剰余演算を行って、サブブロックｍに対応する部分剰余ｒ（ｍ）を取得する（ステップＳ２０７）。
【０１２０】
次いで、復号装置５は、合計剰余ｒに部分剰余ｒ（ｍ）を加算して新たな合計剰余ｒを求める（ステップＳ２０８）。
【０１２１】
次いで、復号装置５は、カウンタｍの値（つまり、サブブロック番号ｍ）を１だけインクリメントし（ステップＳ２０９）、処理はステップＳ２０３に戻る。
【０１２２】
そして、ステップＳ２０４〜Ｓ２０８の処理がＭ回だけ繰り返されてｍの値がＭ以上となったときに（ステップＳ２０３：Ｎｏ）、復号装置５は、合計剰余ｒに基づいて、復号ビット列における誤りの有無を判定する（ステップＳ１２１）。以降の処理は実施例１と同一であるため、説明を省略する。
【０１２３】
［実施例３］
＜動作原理＞
式（４）に示す多項式Ａ（ｘ）を生成多項式Ｇ（ｘ）で除算したときの剰余値Ｒ（ｘ）を求める剰余演算は、式（７）に示すように、「線形演算」となる。そこで、実施例３では、部分剰余の取得に際し、２つめの関連技術における剰余演算と累積加算との実行順序を逆にする。つまり、実施例３では、ビット位置毎の各剰余値の累積加算結果を求めた後に、累積加算結果を生成多項式で除算することにより部分剰余を取得する。これにより、２つめの関連技術に比べ、剰余演算の回数を削減することができる。
【０１２４】
ここで、任意のインデックス番号ｎを２つの整数Ｑ,ｑの和として「ｎ＝Ｑ＋ｑ」と表したとき、単項式に対する剰余値Ｒｎ（ｘ）は、式（２２）によって表すことができる。
【数２２】
2016051924.tif 000024
【０１２５】
また、多項式Ａ（ｘ）に単項式ｘｑを乗算することは、式（２３）に示すように、Ａ（ｘ）の各項のベキをｑだけ加算することに等しい。
【数２３】
2016051924.tif 000025
【０１２６】
式（２３）のベクトル表現は、式（２４）に示すように、インデックスａをｑだけシフトしたａｑ~に対応する。
【数２４】
2016051924.tif 000026
【０１２７】
よって、式（２２）に示す剰余値Ｒｎ（ｘ）と等価な剰余ベクトルｒＱ＋ｑは、基準となる剰余ベクトルｒＱをｑだけシフトしたシフトベクトルｒ~Ｑ＋ｑと、式（１０）に示すＧｒとを用いて、式（２５）により表すことができる。
【数２５】
2016051924.tif 000027
【０１２８】
そこで、実施例３では、インデックス番号ｎｉを「Ｑｉ＋ｑｉ＝ｐｉ×Ｐ＋ｑｉ」に分解し、ｐｉ×Ｐに基づいて取得した剰余値ｒｐｉ×Ｐを式（２６）に示すようにしてｑｉビットだけシフトしてシフト結果ｒ~（ｑi）ｐｉ×Ｐを求める。つまり、剰余ベクトルｒｐｉ×Ｐの先頭にｑｉ個の０を埋めることにより、剰余ベクトルｒｐｉ×Ｐを剰余ベクトルｒ~（ｑi）ｐｉ×Ｐに変換する。
【数２６】
2016051924.tif 000028
【０１２９】
次いで、式（２６）に示すシフト結果を式（２７）に従って累積加算する。
【数２７】
2016051924.tif 000029
【０１３０】
そして、累積加算結果ｒ~に対する剰余演算を式（２８）に従って行って剰余ベクトルｒを算出する。式（２８）では、行列Ｇｒの代わりに行列Ｆを用いて剰余演算を行う場合を示す。式（２８）におけるＦは、Ｇｒの一部を抽出した部分行列であり、抽出サイズは、シフトベクトルｒ~Ｑ＋ｑのサイズに等しい。シフト量の最大値は予め規定されているため、シフトベクトルのサイズをシフト量の最大値に合わせることで、シフト量によらずＦを固定の行列とすることができる。
【数２８】
2016051924.tif 000030
【０１３１】
式（２８）を成分表示すると式（２９）に示すようになる。
【数２９】
2016051924.tif 000031
【０１３２】
また、任意のインデックス番号ｎに対応する剰余値ｒｎから、インデックス番号ｎ＋１に対応する剰余値ｒｎ＋１を求めるための変換行列Ｇを用いると、剰余値ｒｎ＋１は式（３０）によって表される。変換行列Ｇにより、剰余値ｒｎのシフトと、シフト結果に対する剰余演算とが一括して行われて剰余値ｒｎ＋１が算出される。
【数３０】
2016051924.tif 000032
【０１３３】
インデックス番号ｎを「ｐ×Ｐ＋ｑ」に分解して表すと、式（３０）は式（３１）によって表される。
【数３１】
2016051924.tif 000033
【０１３４】
そこで、実施例３では、すべてのインデックス番号に対応する剰余値を式（３１）に従って算出する。式（３１）における変換行列Ｇｑは、式（２８）における行列ＦのＬ×Ｌ部分行列である。よって、式（２８）における行列Ｆが式（３２）によって表されるとき、変換行列Ｇｑは式（３３）によって表される。
【数３２】
2016051924.tif 000034
【数３３】
2016051924.tif 000035
【０１３５】
ここで、剰余値ｒｎは、シフト数を明示した剰余値と、行列Ｆとを用いて式（３４）によって表される。
【数３４】
2016051924.tif 000036
【０１３６】
ｒ~（ｑ）ｐ×Ｐとｒｐ×Ｐとの変換は、式（３５）に示す行列演算として表される。
【数３５】
2016051924.tif 000037
【０１３７】
よって、剰余値ｒｎは、変換行列Ｇｑを用いて、式（３６）によって表すことができる。
【数３６】
2016051924.tif 000038
【０１３８】
そこで、実施例３では、剰余ベクトルｒｐｉ×Ｐを式（３７）に従ってｑｉ毎に累積加算する。
【数３７】
2016051924.tif 000039
【０１３９】
つまり、実施例３では、式（３８）に示す累積加算が行われて、ｑ毎の累積加算結果ｒ（ｑ）が算出される。
【数３８】
2016051924.tif 000040
【０１４０】
そして、ｑ毎の累積加算結果をｑビットだけシフトするシフト処理と、シフト結果を生成多項式で除算したときの剰余値を求める剰余演算とを、変換行列Ｇｑを用いて、式（３９）に従って行って、ｑ毎の剰余値ｒ［ｑ］を部分剰余として求める。
【数３９】
2016051924.tif 000041
【０１４１】
式（３９）を成分表示すると式（４０）に示すようになる。
【数４０】
2016051924.tif 000042
【０１４２】
＜誤り検出部の構成＞
図９は、実施例３の誤り検出部の一例を示す機能ブロック図である。図９において、誤り検出部７−３は、分割部２８と、比較部２６−０〜２６−Ｘと、記憶部２７−０〜２７−Ｘと、スイッチ２４−０〜２４−Ｘと、部分剰余取得部５２−０〜５２−Ｘとを有する。部分剰余取得部５２−０は、剰余値取得部３７−０と、累積加算部３８−０と、ｑ０演算部３９−０とを有する。部分剰余取得部５２−１は、剰余値取得部３７−１と、累積加算部３８−１と、ｑ１演算部３９−１とを有する。部分剰余取得部５２−Ｘは、剰余値取得部３７−Ｘと、累積加算部３８−Ｘと、ｑＰ−１演算部３９−Ｘとを有する。図９において、「Ｘ＝Ｐ−１」である。「Ｐ」は、復号ビット列におけるインデックス番号ｎを「ｐ×Ｐ＋ｑ」に分解して表したときの所定のビット間隔である。また、誤り検出部７−３は、剰余値テーブル６３と、加算部４１と、記憶部４２と、誤り判定部４３とを有する。図９に示す誤り検出部７−３は、図１に示す誤り検出部７に相当する。
【０１４３】
分割部２８には、復号ビット列の各復号ビットａｎiが入力されるとともに、各復号ビットａｎiの正規のビット位置を示すインデックス番号ｎｉが入力される（ｉ＝０,１,２,…,Ｋ−１）。分割部２８は、インデックス番号ｎｉを「ｐｉ×Ｐ＋ｑｉ」（ｐｉ＝０,１,２,…,Ｋ−１，ｑi＝０,１,２,…,Ｐ−１）に分解する。分割部２８は、分解後のｑｉに従って、１ブロックの情報ビット列に対応する復号ビット列ａｎ０〜ａｎＫ−１を複数のサブブロックｉ（ｉ＝０,１,２,…,Ｐ−１）に分割する。すなわち、分割部２８は、復号ビット列ａｎ０〜ａｎＫ−１を、共にｑi＝０である複数の復号ビットから形成されるサブブロック０と、共にｑi＝１である複数の復号ビットから形成されるサブブロック１と、…、共にｑi＝Ｐ−１である複数の復号ビットから形成されるサブブロックＰ−１とに分割する。よって、例えば、サブブロック０は、復号ビットａｎ０,ａｎＰ,ａｎ２Ｐ,…,ａｎ（Ｋ−１）Ｐから形成される。分割部２８は、サブブロック０を比較部２６−０へ出力し、サブブロック１を比較部２６−１へ出力し、…、サブブロックＰ−１を比較部２６−Ｘへ出力する。サブブロック０〜Ｐ−１は、比較部２６−０〜２６−Ｘへ並列に出力される。
【０１４４】
また、分割部２８は、比較部２６−０〜２６−Ｘへ並列に出力した復号ビットのそれぞれのインデックス番号を、剰余値取得部３７−０〜３７−Ｘへ出力する。例えば、分割部２８は、比較部２６−０へ出力したサブブロック０を形成する復号ビットａｎ０,ａｎＰ,ａｎ２Ｐ,…,ａｎ（Ｋ−１）Ｐのインデックス番号ｎ０,ｎＰ,ｎ２Ｐ,…,ｎ（Ｋ−１）Ｐを剰余値取得部３７−０へ出力する。
【０１４５】
比較部２６−０〜２６−Ｘ及び記憶部２７−０〜２７−Ｘは、サブブロック０〜Ｐ−１にそれぞれ対応する。比較部２６−０〜２６−Ｘは、１ブロックの情報ビット列に対応する尤度データｙｓ，ｙｐ１，ｙｐ２から繰り返し得られる復号ビット列のうち、初回に得られた復号ビット列に対しては、スイッチ２４−０〜２４−Ｘをオンにして、比較部２６−０〜２６−Ｘと剰余値取得部３７−０〜３７−Ｘとを接続する。これにより、初回に得られた復号ビット列の各復号ビットは、比較部２６−０〜２６−Ｘから剰余値取得部３７−０〜３７−Ｘへサブブロック単位でそのまま出力される。また、比較部２６−０〜２６−Ｘは、初回に得られた復号ビット列の各復号ビットをサブブロック毎に記憶部２７−０〜２７−Ｘに記憶させる。よって例えば、記憶部２７−０は、サブブッロク０を形成する復号ビットａｎ０,ａｎＰ,ａｎ２Ｐ,…,ａｎ（Ｋ−１）Ｐを記憶する。
【０１４６】
また、比較部２６−０〜２６−Ｘは、２回目以降の復号で得られた復号ビット列に対しては、今回得られた復号ビットの値と、前回得られた復号ビットの値とを比較する。前回得られた復号ビットはサブブロック毎に記憶部２７−０〜２７−Ｘに記憶されている。比較部２７−０〜２７−Ｘは、比較部２７−０〜２７−Ｘにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在するときにスイッチ２４−０〜２４−Ｘをオンにして、比較部２６−０〜２６−Ｘと剰余値取得部３７−０〜３７−Ｘとを接続する。一方で、比較部２６−０〜２６−Ｘは、比較部２７−０〜２７−Ｘにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在しないとき、つまり、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、スイッチ２４−０〜２４−Ｘをオフにして、比較部２６−０〜２６−Ｘと剰余値取得部３７−０〜３７−Ｘとを接続しない。よって、サブブッロク内に前回と今回とで値が異なる復号ビットが存在するときは、各サブブロックの復号ビットが剰余値取得部３７−０〜３７−Ｘに入力されて、剰余値取得部３７−０〜３７−Ｘによる剰余値の取得が行われる。一方で、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、各サブブロックの復号ビットが剰余値取得部３７−０〜３７−Ｘに入力されず、剰余値取得部３７−０〜３７−Ｘによる剰余値の取得が行われない。
【０１４７】
例えば、比較部２６−０は、サブブロック０において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ２４−０をオンにする。一方で、比較部２６−０は、サブブロック０において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ２４−０をオフにする。また例えば、比較部２６−１は、サブブロック１において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ２４−１をオンにする。一方で、比較部２６−１は、サブブロック１において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ２４−１をオフにする。
【０１４８】
また、比較部２６−０〜２６−Ｘは、２回目以降の復号に対しては、復号毎に得られた各サブブロックの復号ビットによって、記憶部２７−０〜２７−Ｘに記憶されている各サブブロックの復号ビットを順次更新する。
【０１４９】
なお、初回に得られた復号ビット列の各復号ビットに対しては前回得られた復号ビットが存在しないため、初回復号時には、今回得られた復号ビットの値と、前回得られた復号ビットの値とは常に一致しない。
【０１５０】
剰余値テーブル６３は、各ビットａｎiの正規のビット位置ｎｉにそれぞれ対応するＬビットの剰余値ｒｎi（式（９）に示す剰余ベクトルｒｎに相当）のうち、所定のビット間隔「Ｐ」の各ビット位置「ｐｉ×Ｐ」（ｐｉ＝０,１,２,…,Ｋ−１）に対応する剰余値ｒｐｉ×Ｐのみを記憶する。ただし、Ｐ＝２ｍ、つまり、Ｐは２のベキ乗である。図１０は、実施例３の剰余値テーブルの一例を示す図である。例えば、剰余値テーブル６３は、図１０に示すように、ビット位置０,Ｐ,２Ｐ,…,（Ｋ−１）Ｐにそれぞれ対応させて剰余値ｒｐ0×Ｐ,ｒｐ1×Ｐ,ｒｐ2×Ｐ,…,ｒｐK-1×Ｐを記憶する。なお、各ビットａｎiの正規のビット位置ｎｉにそれぞれ対応する剰余値ｒｎiは式（８）及び式（９）に従って予め算出可能である。つまり、剰余値テーブル６３は、多項式Ａ（ｘ）によって表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式ｘｎを生成多項式Ｇ（ｘ）で除算したときのそれぞれの剰余値Ｒｎ（ｘ）のうち、所定のビット間隔Ｐの各ビット位置ｐ×Ｐ（ｐは０以上の整数）に対応する剰余値のみをｒｐ×Ｐとして記憶する。
【０１５１】
剰余値取得部３７−０〜３７−Ｘは、サブブロック０〜Ｐ−１にそれぞれ対応する。剰余値取得部３７−０〜３７−Ｘは、比較部２６−０〜２６−Ｘから復号ビットを入力されたときに、各復号ビットａｎiのインデックス番号ｎｉに基づいて剰余値テーブル６３からＬビットの剰余値を取得する。剰余値取得部３７−０〜３７−Ｘは、入力されるインデックス番号ｎｉを「ｐｉ×Ｐ＋ｑｉ」（ｑi＝０,１,２,…,Ｐ−１）に分解し、「ｐｉ×Ｐ」に対応する剰余値を剰余値テーブル６３から取得して累積加算部３８−０〜３８−Ｘへ出力する。つまり、剰余値取得部３７−０〜３７−Ｘは、復号ビットの正規のビット位置ｐ×Ｐ＋ｑ（ｑは０以上かつＰ未満の整数）におけるｐ×Ｐに対応する剰余値ｒｐ×Ｐを剰余値テーブル６３から取得する。剰余値取得部３７−０は、サブブロック０に対応する各剰余値を累積加算部３８−０へ出力し、剰余値取得部３７−１は、サブブロック１に対応する各剰余値を累積加算部３８−１へ出力する。また、剰余値取得部３７−Ｘは、サブブロックＰ−１に対応する各剰余値を累積加算部３８−Ｘへ出力する。
【０１５２】
累積加算部３８−０〜３８−Ｘは、サブブロック０〜Ｐ−１にそれぞれ対応する。累積加算部３８−０は、サブブロック０に対応する各剰余値、つまり、各ｐｉのｑｉ＝０に対応する各剰余値を累積加算する。累積加算部３８−１は、サブブロック１に対応する各剰余値、つまり、各ｐｉのｑｉ＝１に対応する各剰余値を累積加算する。また、累積加算部３８−Ｘは、サブブロックＰ−１に対応する各剰余値、つまり、各ｐｉのｑｉ＝Ｐ−１に対応する各剰余値を累積加算する。つまり、累積加算部３８−０〜３８−Ｘは、剰余値取得部３７−０〜３７−Ｘによって取得された各剰余値をｑ毎に累積加算してｑ毎の累積加算結果を求める。累積加算部３８−０は、ｑｉ＝０に対応する累積加算結果をｑ０演算部３９−０へ出力し、累積加算部３８−１は、ｑｉ＝１に対応する累積加算結果をｑ１演算部３９−１へ出力する。また、累積加算部３８−Ｘは、ｑｉ＝Ｐ−１に対応する累積加算結果をｑＰ−１演算部３９−Ｘへ出力する。
【０１５３】
ｑ０演算部３９−０〜ｑＰ−１演算部３９−Ｘは、サブブロック０〜Ｐ−１にそれぞれ対応する。ｑ０演算部３９−０〜ｑＰ−１演算部３９−Ｘは、サブブロック毎にＬビットの剰余値を算出する剰余演算を行って各サブブロックに対応する「部分剰余」を取得する。ｑ０演算部３９−０は、ｑｉ＝０に対応する累積加算結果をｑｉ＝０ビットだけシフトしたシフト結果（つまり、ｑｉ＝０に対応する累積加算結果）を生成多項式Ｇ（ｘ）で除算したときの剰余値を求める剰余演算を行い、算出した剰余値をサブブロック０に対応する部分剰余として加算部４１へ出力する。ｑ１演算部３９−１は、ｑｉ＝１に対応する累積加算結果をｑｉ＝１ビットだけシフトしたシフト結果を生成多項式Ｇ（ｘ）で除算したときの剰余値を求める剰余演算を行い、算出した剰余値をサブブロック１に対応する部分剰余として加算部４１へ出力する。また、ｑＰ−１演算部３９−Ｘは、ｑｉ＝Ｐ−１に対応する累積加算結果をｑｉ＝Ｐ−１ビットだけシフトしたシフト結果を生成多項式Ｇ（ｘ）で除算したときの剰余値を求める剰余演算を行い、算出した剰余値をサブブロックＰ−１に対応する部分剰余として加算部４１へ出力する。つまり、ｑ０演算部３９−０〜ｑＰ−１演算部３９−Ｘの各演算部は、部分剰余を取得するために、ｑ毎の累積加算結果をｑビットだけシフトしたシフト結果を生成多項式で除算したときの剰余値を求める剰余演算をｑ毎に行う。
【０１５４】
また、ｑ０演算部３９−０〜ｑＰ−１演算部３９−Ｘの各演算部は、ｑ毎の累積加算結果をｑビットだけシフトするシフト処理と、シフト結果を生成多項式で除算したときの剰余値を求める剰余演算とを、行列Ｆの部分行列である変換行列Ｇｑを用いて、式（３１）に従って、ｑ毎に行う。つまり、ｑ０演算部３９−０〜ｑＰ−１演算部３９−Ｘの各演算部は、シフト及び剰余演算を一括して行う変換行列Ｇｑを用いる。
【０１５５】
以上のように、誤り検出部７−３では、部分剰余取得部５２−０〜５２−Ｘが、サブブロック０〜Ｐ−１にそれぞれ対応する複数の剰余値を図９に示す構成を用いて算出することより、サブブロック０〜Ｐ−１にそれぞれ対応する複数の部分剰余を取得する。誤り判定部４３は、取得された複数の部分剰余を加算した合計剰余に基づいて、復号ビット列における誤りの有無を判定する。ただし、部分剰余取得部５２−０〜５２−Ｘは、比較部２６−０〜２６−Ｘでの比較結果に基づいて、前回の復号と今回の復号との間で値が変化したビットを含むサブブロックに対応する部分剰余だけしか取得しない。すなわち、部分剰余取得部５２−０〜５２−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、部分剰余取得部５２−０〜５２−Ｘは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビットが同一値であるサブブロックに対応する部分剰余を取得しない。そして、誤り判定部４３は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。
【０１５６】
こうすることで、前回の復号時と今回の復号時とですべてのビットの値が変化しないサブブロックに対応する部分剰余の取得をすることなく、今回の復号ビット列の誤り検出を行うことができる。このため、誤り検出に係る処理量を削減することができる。
【０１５７】
また、部分剰余取得部５２−０〜５２−Ｘは、ビット位置毎の各剰余値の累積加算結果をｑ毎に求めた後に、ｑ毎の累積加算結果をｑビットだけシフトしたシフト結果を生成多項式で除算したときの剰余値を求める剰余演算をｑ毎に行ってサブブロック０〜Ｐ−１にそれぞれ対応する複数の部分剰余を取得する。こうすることで、ｑ毎の演算では、１つのｑに対し、剰余演算は１回しか行われない。つまり、サブブロック０〜Ｐ−１のサブブロック毎の演算では、１つのサブブロックについて、剰余演算は１回しか行われない。よって、正規のビット位置に対応する剰余値のうち、所定のビット間隔の各ビット位置に対応する剰余値を用いて部分剰余を取得する際に、誤り検出に係る処理量をさらに削減することができる。
【０１５８】
＜誤り検出装置の処理＞
図１１は、実施例３の復号装置の処理の説明に供するフローチャートである。図１１に示すフローチャートは、１ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。図１１におけるステップＳ１０１〜Ｓ１０４の処理は実施例１と同一であるため、説明を省略する。
【０１５９】
ステップＳ３０１において、復号装置５は、復号ビット列を複数のＰ個のサブブロックに分割する（ステップＳ３０１）。
【０１６０】
次いで、復号装置５は、カウンタｑｉの値を０にリセットして、サブブロック番号ｑｉを０に設定する（ステップＳ３０２）。
【０１６１】
次いで、復号装置５は、ｑｉの値がＰ未満か否かを判断する（ステップＳ３０３）。
【０１６２】
ｑｉの値がＰ未満であるときは（ステップＳ３０３：Ｙｅｓ）、復号装置５は、サブブロックｑｉにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一か否かを判断する（ステップＳ３０４）。
【０１６３】
サブブロックｑｉにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一であるときは（ステップＳ３０４：Ｙｅｓ）、ステップＳ３０５〜Ｓ３１０の処理は行われず、処理はステップＳ３１１へ進む。
【０１６４】
サブブロックｑｉにおいて、今回と前回とで値が異なる復号ビットがあるときは（ステップＳ３０４：Ｎｏ）、復号装置５は、サブブロックｑｉを形成する今回の複数の復号ビットａｎiのインデックス番号ｎｉを「ｐｉ×Ｐ＋ｑｉ」に分解して「ｐｉ×Ｐ」のビット位置を判断する（ステップＳ３０５）。
【０１６５】
次いで、復号装置５は、ステップＳ３０５で判断したビット位置ｐｉ×Ｐに対応する複数の剰余値ｒｐｉ×Ｐを取得する（ステップＳ３０６）。
【０１６６】
次いで、復号装置５は、サブブロックｑｉについて、ステップＳ３０６で取得した複数の剰余値ｒｐｉ×Ｐを累積加算する（ステップＳ３０７）。
【０１６７】
次いで、復号装置５は、サブブロックｑｉについての累積加算結果をｑビットだけシフトするシフト処理と、シフト結果を生成多項式で除算したときの剰余値を求める剰余演算とを、変換行列Ｇｑを用いて行って、サブブロックｑｉに対応する部分剰余ｒ［ｑ］を取得する（ステップＳ３０８，Ｓ３０９）。
【０１６８】
次いで、復号装置５は、合計剰余ｒに部分剰余ｒ［ｑ］を加算して新たな合計剰余ｒを求める（ステップＳ３１０）。
【０１６９】
次いで、復号装置５は、カウンタｑｉの値（つまり、サブブロック番号ｑｉ）を１だけインクリメントし（ステップＳ３１１）、処理はステップＳ３０３に戻る。
【０１７０】
そして、ステップＳ３０４〜Ｓ３１０の処理がＰ回だけ繰り返されてｑｉの値がＰ以上となったときに（ステップＳ３０３：Ｎｏ）、復号装置５は、合計剰余ｒに基づいて、復号ビット列における誤りの有無を判定する（ステップＳ１２１）。以降の処理は実施例１と同一であるため、説明を省略する。
【０１７１】
［他の実施例］
［１］上記実施例の復号装置５は、次のようなハードウェア構成により実現することができる。図１２は、復号装置のハードウェア構成例を示す図である。図１２に示すように、復号装置５は、ハードウェアの構成要素として、プロセッサ５ａと、メモリ５ｂとを有する。プロセッサ５ａの一例として、ＣＰＵ（Central  Processing  Unit），ＤＳＰ（Digital  Signal  Processor），ＦＰＧＡ（Field  Programmable  Gate  Array）等が挙げられる。また、復号装置５は、プロセッサ５ａと周辺回路とを含むＬＳＩ（Large  Scale  Integrated  circuit）を有してもよい。メモリ５ｂの一例として、ＳＤＲＡＭ等のＲＡＭ，ＲＯＭ，フラッシュメモリ等が挙げられる。復号装置５が有する復号部６において、分配部１１と、要素復号部１２，１３と、硬判定部１６と、インデックス番号出力部１７とは、プロセッサ５ａにより実現される。インタリーバ１４と、デインタリーバ１５とは、プロセッサ５ａ及びメモリ５ｂにより実現される。また、復号装置５が有する誤り検出部７−１〜７−３において、分割部２１と、比較部２２−０〜２２−Ｘと、スイッチ２４−０〜２４−Ｘと、剰余値取得部３１−０〜３１−Ｘと、加算部４１と、誤り判定部４３とは、プロセッサ５ａにより実現される。記憶部２３−０〜２３−Ｘ，４２と、剰余値テーブル６１とは、メモリ５ｂにより実現される。分割部２５と、比較部２６−０〜２６−Ｘと、剰余値取得部３４−０〜３４−Ｘと、剰余演算部３５−０〜３５−Ｘとは、プロセッサ５ａにより実現される。記憶部２７−０〜２７−Ｘと、剰余値テーブル６１，６２，６３とは、メモリ５ｂにより実現される。分割部２８と、剰余値取得部３７−０〜３７−Ｘと、ｑ０演算部３９−０〜ｑＰ−１演算部３９−Ｘとは、プロセッサ５ａにより実現される。累積加算部３８−０〜３８−Ｘは、プロセッサ５ａ及びメモリ５ｂにより実現される。
【０１７２】
［２］復号装置５での上記説明における各処理は、各処理に対応するプログラムをプロセッサ５ａに実行させることによって実現してもよい。例えば、復号装置５での上記説明における各処理に対応するプログラムがメモリ５ｂに記憶され、各処理に対応するプログラムがプロセッサ５ａによってメモリ５ｂから読み出されて実行されてもよい。
【０１７３】
［３］上記実施例では、ＦＥＣとしてターボ符号が用いられる場合について説明した。しかし、ＦＥＣとしてＬＤＰＣ（Low  Density  Parity  Check）符号を用いる場合にも、開示の技術を適用可能である。
【０１７４】
［４］上記実施例では、誤り制御技術としてＦＥＣを用いる場合について説明した。しかし、誤り制御技術としてＡＲＱ（Automatic  Repeat  reQuest）を用いる場合にも、開示の技術を適用可能である。ＡＲＱでは、復号装置における誤り検出部は、復号ビット列に誤りがあるときは、符号化ビット列の再送要求を出力し、復号ビット列に誤りが無くなったときに、再送要求の出力を停止する。再送要求は、無線受信装置から無線送信装置へ送信される。無線送信装置は、再送要求に応じて、符号化ビット列を無線受信装置へ再送する。よって、ＡＲＱにおける復号装置は、復号ビット列に誤りが無くなるまで、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行う。このように、ＡＲＱにおける復号装置と、ターボ復号を行う復号装置とは、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行う点で同一である。
【符号の説明】
【０１７５】
１  無線受信装置
５  復号装置
６  復号部
７，７−１，７−２，７−３  誤り検出部
２１，２５，２８  分割部
２２−０〜２２−Ｘ，２６−０〜２６−Ｘ  比較部
２４−０〜２４−Ｘ  スイッチ
３１−０〜３１−Ｘ，３４−０〜３４−Ｘ，３７−０〜３７−Ｘ  剰余値取得部
３５−０〜３５−Ｘ  剰余演算部
３８−０〜３８−Ｘ  累積加算部
３９−０  ｑ０演算部
３９−１  ｑ１演算部
３９−Ｘ  ｑＰ−１演算部
５１−０〜５１−Ｘ，５２−０〜５２−Ｘ  部分剰余取得部
６１，６２，６３  剰余値テーブル
４１  加算部
４３  誤り判定部
【図１】
2016051924.tif 000043
【図２】
2016051924.tif 000044
【図３】
2016051924.tif 000045
【図４】
2016051924.tif 000046
【図５】
2016051924.tif 000047
【図６】
2016051924.tif 000048
【図７】
2016051924.tif 000049
【図８】
2016051924.tif 000050
【図９】
2016051924.tif 000051
【図１０】
2016051924.tif 000052
【図１１】
2016051924.tif 000053
【図１２】
2016051924.tif 000054