JP2016051924A - 復号装置及び誤り検出方法 - Google Patents
復号装置及び誤り検出方法 Download PDFInfo
- Publication number
- JP2016051924A JP2016051924A JP2014174476A JP2014174476A JP2016051924A JP 2016051924 A JP2016051924 A JP 2016051924A JP 2014174476 A JP2014174476 A JP 2014174476A JP 2014174476 A JP2014174476 A JP 2014174476A JP 2016051924 A JP2016051924 A JP 2016051924A
- Authority
- JP
- Japan
- Prior art keywords
- remainder
- sub
- value
- bit string
- decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/093—CRC update after modification of the information word
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
- H03M13/2975—Judging correct decoding, e.g. iteration stopping criteria
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
【課題】誤り検出に係る処理量を削減すること。【解決手段】剰余値取得部31−0〜31−Xは、サブブロック0〜K−1にそれぞれ対応する複数の剰余値を剰余値テーブル61から取得することより、サブブロック0〜K−1にそれぞれ対応する複数の部分剰余を取得する。ただし、剰余値取得部31−0〜31−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、剰余値取得部31−0〜31−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビットが同一値であるサブブロックに対応する部分剰余を取得しない。誤り判定部43は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。【選択図】図3
Description
本発明は、復号装置及び誤り検出方法に関する。
データを誤り無く伝送することが望まれるデータ通信システム、及び、データの読み出しを誤り無く行うことが望まれる記憶装置等では、伝送誤り及び読出誤り等を検出するために「誤り検出符号」が使用される。
誤り検出符号の一つに「CRC(Cyclic Redundancy Check)符号」がある。CRC符号を用いた誤り検出を行うデータ通信システムでは、送信側が、K’ビットの情報ビット列に相当する多項式をCRC符号生成用の生成多項式で除算したときのLビットの剰余を情報ビット列に付加してKビットの符号化ビット列を形成して受信側へ送信する。よって、誤り検出符号化後のビットサイズは「K=K’+L」となり、Kビットの符号化ビット列を生成多項式で除算したときの剰余は「0」となる。K’は1ブロックの情報ビットサイズ、つまり、ブロックサイズである。情報ビットの各ブロックに付加されるLビットの剰余は「パリティビット」と呼ばれる。
受信側は、受信した符号化ビット列を生成多項式で除算し、剰余が「0」であれば「誤り無し」、剰余が「0以外」であれば「誤り有り」と判定して、受信した符号化ビット列に対する誤り検出を行う。
ビット位置を調節したRcrc(x)をB(x)に加算すると式(4)に示す多項式A(x)が得られる。このA(x)は、誤り検出符号化後のKビットの符号化ビット列「a=(a0,…,aK−2,aK−1)」を多項式表現したものに相当する。
送信側は、多項式A(x)で表現される符号化ビット列を受信側へ送信する。
送信側から送信された符号化ビット列A(x)は伝送路上において雑音等の影響を受けるため、受信側にて受信された符号化ビット列A^(x)には誤りが含まれることがある。そこで、受信側は、受信した符号化ビット列A^(x)を生成多項式G(x)で除算したときの剰余R^(x)を式(6)に従って算出する。
そして、受信側は、R^(x)が「0」となるときはA^(x)に「誤り無し」と判定し、R^(x)が「0以外」となるときはA^(x)に「誤り有り」と判定する。
ここで、1つめの関連技術として、インタリーブにより並び順がランダム化された符号化ビット列に対し、デインタリーブすることなく、そのままの並び順で誤り検出が可能な誤り検出装置がある。この誤り検出装置では、インタリーブ処理前の情報ビット列におけるそれぞれのビット位置(つまり、正規のビット位置)に応じた多項式を生成多項式で除算したときの剰余値を予め算出してメモリに保存しておく。そして、ビット列の各ビットがランダムに入力されると共に、各ビットの正規のビット位置を示すビット位置情報が入力される。入力ビット列の各ビットのうち値が0でないビット、つまり、値が1であるビットの正規のビット位置に対応する各剰余値をメモリより取得し、取得した各剰余値を累積加算する。累積加算結果が「0」となるときは入力ビット列に「誤り無し」と判定し、累積加算結果が「0以外」となるときは入力ビット列に「誤り有り」と判定する。つまり、入力ビット列の各ビットのうち0でないビットの正規のビット位置に対応する各剰余値の累積加算結果が式(6)のR^(x)に相当する。
また、2つめの関連技術として、1つめの関連技術におけるメモリのサイズを削減可能な誤り検出装置がある。この誤り検出装置では、所定のビット間隔を「P」とするとき、正規のビット位置のうち「n×P」(n=1,2,…)のビット位置に応じた剰余値のみをメモリに保存する。入力ビット列に対しては、正規のビット位置のうち「n×P」のビット位置に対応する各剰余値を、1つめの関連技術と同様にして、メモリより求める。一方で、正規のビット位置のうち「n×P+k」(0≦k<P)のビット位置に対応する各剰余値を、「n×P」のビット位置に対応する剰余値をkビットだけシフトし、そのシフト結果を生成多項式で除算することにより算出する。そして、メモリから取得した各剰余値と、シフト及び除算によって算出した各剰余値とを累積加算し、1つめの関連技術と同様にして、累積加算結果に基づいて入力ビット列における誤りの有無を判定する。
A. Shibutani, H. Suda, and F. Adachi, "Complexity Reduction of Turbo Decoding," Proc. IEEE Veh. Tech. Conf. '99 Fall, Oct. 1999.
データ通信システムにおいて誤り率特性を改善するために、送信データに対して誤り訂正符号化(FEC:Forward Error Correction)が行われることがある。また、FECとしてターボ符号が用いられることがある。さらに、CRC符号とターボ符号とが組み合わせて用いられる場合があり、この場合、送信側では、CRC符号のパリティビットを付加した後のビット列に対してターボ符号化を行い、受信側では、ターボ復号後のビット列に対してCRCを行う。ターボ復号では、復号結果の信頼度情報を用いて同一の受信データを繰り返し復号する。このため、ターボ復号では、復号の繰り返し毎に復号結果の誤り率が徐々に小さくなり、復号の回数がある回数に達した時点で復号結果に誤りが無くなる、つまり、エラーフリーとなる。以下では、誤り検出符号化及び誤り訂正符号化後のビット列を「符号化ビット列」と呼び、符号化ビット列を形成する各ビットを「符号化ビット」と呼ぶことがある。
ここで、ターボ復号では、特に復号結果の誤り率が小さくなってエラーフリーに近づいた時点では、今回の復号結果において前回の復号結果から値が変化するビットは一部のビットに限られる。すなわち、前回以前の復号においてすでに正しい値となっているビットの値は変化せず、正しい値となったビットは、正しい値となった以降は同じ値のビットであり続ける。
これに対し、ターボ復号の復号結果に対して1つめ、または、2つめの関連技術のCRCを単に適用したのでは、繰り返しの復号により正しい値となったビットについて、同じ剰余値の取得及び同じ剰余値の演算等が繰り返し行われてしまう。つまり、ターボ復号の繰り返し毎に、CRCにおいて重複した処理が繰り返し行われることになり、CRCにおける無駄な処理が生じてしまう。
開示の技術は、上記に鑑みてなされたものであって、誤り検出に係る処理量を削減することを目的とする。
開示の態様では、復号装置は、復号部と、誤り検出部とを有する。復号部は、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行って、1ブロックの情報ビット列に対応する復号ビット列を繰り返し得る。誤り検出部は、前記復号ビット列を複数のサブブロックに分割し、前記複数のサブブロックにそれぞれ対応する複数の部分剰余を取得し、前記複数の部分剰余を加算した合計剰余に基づいて前記復号ビット列における誤りの有無を判定する。誤り検出部は、前記複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含む第一のサブブロックに対応する第一の部分剰余を取得する。一方で、誤り検出部は、前記前回の復号ビット列と前記今回の復号ビット列との間ですべてのビットが同一値である第二のサブブロックに対応する第二の部分剰余を取得しない。そして、誤り検出部は、取得した前記第一の部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、前記今回の復号ビット列における誤りの有無を判定する。
開示の態様によれば、誤り検出に係る処理量を削減することができる。
以下に、本願の開示する復号装置及び誤り検出方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する復号装置及び誤り検出方法が限定されるものではない。また、各実施例において同一の機能を有する構成部、及び、同一の処理を行うステップには同一の符号を付し、重複する説明を省略する。
[実施例1]
<動作原理>
式(4)に示す多項式A(x)を生成多項式G(x)で除算したときの剰余値R(x)を求める剰余演算は、式(7)によって表すことができるため、「線形演算」となる。つまり、2つめの関連技術のようにしてビット位置毎に生成多項式による剰余演算を行って求めた各剰余値を累積加算することにより算出した剰余値と、ビット位置毎の各剰余値の累積加算結果を生成多項式で除算することにより算出した剰余値とは等しくなる。
<動作原理>
式(4)に示す多項式A(x)を生成多項式G(x)で除算したときの剰余値R(x)を求める剰余演算は、式(7)によって表すことができるため、「線形演算」となる。つまり、2つめの関連技術のようにしてビット位置毎に生成多項式による剰余演算を行って求めた各剰余値を累積加算することにより算出した剰余値と、ビット位置毎の各剰余値の累積加算結果を生成多項式で除算することにより算出した剰余値とは等しくなる。
また、剰余値R(x)を求める剰余演算は式(7)に示すような線形演算となるため、剰余値R(x)を求めるベクトル演算は線形変換として表すことができる。
CRCにおける演算はすべて、ビット値に対しての算術演算(GF(2)={0,1}上の四則演算,mod2)である。このため、式(15)における左辺は、l回目(つまり、前回)の復号結果とl+1回目(つまり、今回)の復号結果との間で、同一ビット位置にある各ビットについて、l回目の値とl+1回目の値とが同じときは「0」、異なるときは「1」となる。
よって、式(14)は、前回得られた剰余ベクトルに対し、前回の復号結果と今回の復号結果との間で値が異なる一部のビットについてのみ、追加的に剰余ベクトルの加算を行うことにより、今回の剰余ベクトルが得られることを示している。
そこで、各実施例では、今回の誤り検出時に、前回の復号結果と今回の復号結果との間で値が異なる一部のビットに対応する一部の剰余だけを取得する。そして、取得した一部の剰余を前回の誤り検出に使用した剰余に追加的に加算して、今回の誤り検出に使用する剰余を求める。
<無線受信装置の構成>
図1は、実施例1の無線受信装置の一例を示す機能ブロック図である。図1において、無線受信装置1は、アンテナ2と、無線受信部3と、復調部4と、復号装置5とを有する。復号装置5は、復号部6と、誤り検出部7とを有する。
図1は、実施例1の無線受信装置の一例を示す機能ブロック図である。図1において、無線受信装置1は、アンテナ2と、無線受信部3と、復調部4と、復号装置5とを有する。復号装置5は、復号部6と、誤り検出部7とを有する。
無線受信部3は、アンテナ2を介して受信した無線信号に対して、ダウンコンバート、アナログディジタル変換等を行ってベースバンド信号を得て復調部4へ出力する。
復調部4は、ベースバンド信号に対して復調処理を施し、各符号化ビットに対応する対数尤度比データ(以下では単に「尤度データ」と呼ぶことがある)を復号部6へ出力する。
復号部6は、尤度データを用いて誤り訂正復号を行い、復号結果を誤り検出部7へ出力する。復号部6は、復調部4によって得られた同一の尤度データに対して、例えばターボ復号により、繰り返し復号を行う。
誤り検出部7は、復号結果に対して、例えばCRCによる誤り検出処理を行い、チェック結果と、誤り検出処理後の情報ビット列とを出力する。例えば、誤り検出部7は、復号部6から入力される復号結果のビット列(以下では「復号ビット列」と呼ぶことがある)に「誤り無し」と判定したときはチェック結果として「0」を出力し、復号ビット列に「誤り有り」と判定したときはチェック結果として「1」を出力する。以下では、復号ビット列を形成する各ビットを「復号ビット」と呼ぶことがある。
<復号部の構成>
図2は、実施例1の復号部の一例を示す機能ブロック図である。図2において、復号部6は、分配部11と、要素復号部12,13と、インタリーバ14と、デインタリーバ15と、硬判定部16とを有し、ターボ復号を行う。ターボ復号では、以下のようにして、要素復号部12,13が繰り返して復号を行うことで、復号の繰り返し毎に尤度データのSNR(Signal-Noise Ratio)が改善される。
図2は、実施例1の復号部の一例を示す機能ブロック図である。図2において、復号部6は、分配部11と、要素復号部12,13と、インタリーバ14と、デインタリーバ15と、硬判定部16とを有し、ターボ復号を行う。ターボ復号では、以下のようにして、要素復号部12,13が繰り返して復号を行うことで、復号の繰り返し毎に尤度データのSNR(Signal-Noise Ratio)が改善される。
分配部11には、復調部4から尤度データys,yp1,yp2が入力される。分配部11は、1ブロックの情報ビット列に対応する尤度データys,yp1,yp2を、その1ブロックに含まれる情報ビットがエラーフリーとなるまで保持する。分配部11は、尤度データysを要素復号部12へ出力するとともに、インタリーバ14を介して要素復号部13へ出力する。また、分配部11は、尤度データyp1を要素復号部12へ出力し、尤度データyp2を要素復号部13へ出力する。つまり、分配部11は、尤度データys,yp1,yp2を要素復号部12と要素復号部13とに分配する。尤度データysは、送信側の無線送信装置が送信した組織ビット列(つまり、情報ビット列)に伝送路上で雑音が付加されたビット列の尤度データである。尤度データyp1は、送信側の無線送信装置が送信したパリティビット列1に伝送路上で雑音が付加されたビット列の尤度データである。また、尤度データyp2は、送信側の無線送信装置が送信したパリティビット列2に伝送路上で雑音が付加されたビット列の尤度データである。
要素復号部12は、尤度データyp1の冗長ビットと、要素復号部13によって求められた事後確率とを用いて、尤度データysの誤り訂正復号を繰り返し実行して事後確率を求める。要素復号部12は、要素復号部13によって求められる事後確率を要素復号部12での誤り訂正復号の事前確率として用いる。要素復号部12は、求めた事後確率を、インタリーバ14を介して要素復号部13へ出力する。
要素復号部13は、尤度データyp2の冗長ビットと、要素復号部12によって求められた事後確率とを用いて、尤度データysの誤り訂正復号を繰り返し実行して事後確率を求める。要素復号部13は、要素復号部12によって求められた事後確率を要素復号部13での誤り訂正復号の事前確率として用いる。要素復号部13は、求めた事後確率を、デインタリーバ15を介して要素復号部12へ出力する。また、要素復号部13は、求めた事後確率を、デインタリーバ15を介して硬判定部16へ出力する。
要素復号部12,13は、例えば、MAP復号(Maximum A Posteriori Probability decoding)アルゴリズム、または、SOVA(Soft Output Viterbi Algorithm)等の軟出力復号アルゴリズム等に従って事後確率を求める。
要素復号部12,13は、誤り検出部7から停止指示を受けるまで、繰り返して復号を行う。要素復号部12,13は、誤り検出部7から停止指示を受けると、復号対象となっていたブロックの復号を停止し、次のブロックに対する復号を開始する。この停止指示は、誤り検出部7によって復号ビット列に「誤り無し」と判定されたときに誤り検出部7から出力される。このように、復号ビット列に誤りが無くなったときに復号を停止することにより、復号ビット列に誤りが無くなった以降も復号を繰り返すという無駄な処理を削減することができる。
硬判定部16は、要素復号部13によって求められた事後確率に対して硬判定を行って「0」または「1」の硬判定結果を出力する。よって、硬判定部16での硬判定結果が復号ビットとなり、1ブロックの情報ビット列に対応する尤度データys,yp1,yp2から、1ブロックの情報ビット列に対応する復号ビット列が繰り返し得られる。
ここで、尤度データys,yp1,yp2は上記のように、送信側の無線送信装置が送信した組織ビット列及びパリティビット列1,2に伝送路上で雑音が付加された各ビット列の尤度データである。また、組織ビット列及びパリティビット列1,2は符号化ビット列に含まれる。つまり、復号部6は、尤度データys,yp1,yp2を用いて、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行っている。
インタリーバ14は、送信側の無線送信装置のターボ符号器に備えられるインタリーバと同じ順序の置換を、尤度データys及び要素復号部12で求められた事後確率に対して行う。デインタリーバ15は、インタリーバ14と逆の順序の置換を、要素復号部13で求められた事後確率に対して行う。
インデックス番号出力部17は、復号ビット列の各復号ビットaniの正規のビット位置を示すインデックス番号niを誤り検出部7へ出力する(i=0,1,2,…,K−1)。「正規のビット位置」とは、1ブロックの情報ビット列の各ビットの並び順がインタリーブされる前の各ビットの1ブッロク内における位置である。
<誤り検出部の構成>
図3は、実施例1の誤り検出部の一例を示す機能ブロック図である。図3において、誤り検出部7−1は、分割部21と、比較部22−0〜22−Xと、記憶部23−0〜23−Xと、スイッチ24−0〜24−Xと、剰余値取得部31−0〜31−Xとを有する。図3において、「X=K−1」である。また、誤り検出部7−1は、剰余値テーブル61と、加算部41と、記憶部42と、誤り判定部43とを有する。図3に示す誤り検出部7−1は、図1に示す誤り検出部7に相当する。
図3は、実施例1の誤り検出部の一例を示す機能ブロック図である。図3において、誤り検出部7−1は、分割部21と、比較部22−0〜22−Xと、記憶部23−0〜23−Xと、スイッチ24−0〜24−Xと、剰余値取得部31−0〜31−Xとを有する。図3において、「X=K−1」である。また、誤り検出部7−1は、剰余値テーブル61と、加算部41と、記憶部42と、誤り判定部43とを有する。図3に示す誤り検出部7−1は、図1に示す誤り検出部7に相当する。
分割部21には、復号ビット列の各復号ビットaniが入力されるとともに、各復号ビットaniの正規のビット位置を示すインデックス番号niが入力される(i=0,1,2,…,K−1)。分割部21は、1ブロックの情報ビット列に対応する復号ビット列an0〜anK−1を複数のサブブロックi(i=0,1,2,…,K−1)に分割し、各サブブロックを形成する復号ビットを並列に比較部22−0〜22−Xへ出力する。ここでは、サブブロックのブロックサイズを「1ビット」とする。つまり、分割部21での分割後の各サブブロックはそれぞれ1ビットの復号ビットで形成される。例えば、サブブロック0は復号ビットan0だけで形成され、復号ビットan0は比較部22−0へ出力される。
また、分割部21は、比較部22−0〜22−Xへ並列に出力した復号ビットのそれぞれのインデックス番号を剰余値取得部31−0〜31−Xへ出力する。例えば、分割部21は、比較部22−0へ出力した復号ビットan0のインデックス番号n0を剰余値取得部31−0へ出力する。
比較部22−0〜22−X及び記憶部23−0〜23−Xは、サブブロック0〜K−1にそれぞれ対応する。比較部22−0〜22−Xは、1ブロックの情報ビット列に対応する尤度データys,yp1,yp2から繰り返し得られる復号ビット列のうち、初回に得られた復号ビット列に対しては、スイッチ24−0〜24−Xをオンにして、比較部22−0〜22−Xと剰余値取得部31−0〜31−Xとを接続する。これにより、初回に得られた復号ビット列の各復号ビットは、比較部22−0〜22−Xから剰余値取得部31−0〜31−Xへそのまま出力される。また、比較部22−0〜22−Xは、初回に得られた復号ビット列の各復号ビットを記憶部23−0〜23−Xに記憶させる。よって例えば、記憶部23−0は、復号ビットan0を記憶する。
また、比較部22−0〜22−Xは、2回目以降の復号で得られた復号ビット列に対しては、今回得られた復号ビットの値と、前回得られた復号ビットの値とを比較する。前回得られた復号ビットは記憶部23−0〜23−Xに記憶されている。そして、比較部22−0〜22−Xは、前回と今回とで復号ビットの値が異なるときにスイッチ24−0〜24−Xをオンにして、比較部22−0〜22−Xと剰余値取得部31−0〜31−Xとを接続する。一方で、比較部22−0〜22−Xは、前回と今回とで復号ビットの値が一致するときは、スイッチ24−0〜24−Xをオフにして、比較部22−0〜22−Xと剰余値取得部31−0〜31−Xとを接続しない。よって、前回と今回とで復号ビットの値が異なるときは、復号ビットが剰余値取得部31−0〜31−Xに入力されて、剰余値取得部31−0〜31−Xによる剰余値の取得が行われる。一方で、前回と今回とで復号ビットの値が一致するときは、復号ビットが剰余値取得部31−0〜31−Xに入力されず、剰余値取得部31−0〜31−Xによる剰余値の取得が行われない。
例えば、比較部22−0は、前回得られた復号ビットan0 (l)の値と今回得られた復号ビットan0 (l+1)の値とが異なるときに、スイッチ24−0をオンにする。一方で、比較部22−0は、前回得られた復号ビットan0 (l)の値と今回得られた復号ビットan0 (l+1)の値とが一致するときは、スイッチ24−0をオフにする。また例えば、比較部22−1は、前回得られた復号ビットan1 (l)の値と今回得られた復号ビットan1 (l+1)の値とが異なるときに、スイッチ24−1をオンにする。一方で、比較部22−1は、前回得られた復号ビットan1 (l)の値と今回得られた復号ビットan1 (l+1)の値とが一致するときは、スイッチ24−1をオフにする。
また、比較部22−0〜22−Xは、2回目以降の復号に対しては、復号毎に得られた復号ビット列の各復号ビットによって、記憶部23−0〜23−Xに記憶されている復号ビットを順次更新する。なお、前回と今回とで復号ビットの値が一致するか否かを、式(15)に従って判断してもよい。
なお、初回に得られた復号ビット列の各復号ビットに対しては前回得られた復号ビットが存在しないため、初回復号時には、今回得られた復号ビットの値と、前回得られた復号ビットの値とは常に一致しない。
剰余値テーブル61は、各ビットaniの正規のビット位置niにそれぞれ対応するLビットの剰余値rni(式(9)に示す剰余ベクトルrnに相当)を記憶する。図4は、実施例1の剰余値テーブルの一例を示す図である。例えば、剰余値テーブル61は、図4に示すように、ビット位置0,1,2,…,K−1にそれぞれ対応させて剰余値rn0,rn1,rn2,…,rnK-1を記憶する。なお、各ビットaniの正規のビット位置niにそれぞれ対応する剰余値rniは式(8)及び式(9)に従って予め算出可能である。つまり、剰余値テーブル61は、多項式A(x)によって表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式xnを生成多項式G(x)で除算したときのそれぞれの剰余値Rn(x)をrnとして記憶する。
剰余値取得部31−0〜31−Xは、サブブロック0〜K−1にそれぞれ対応する。剰余値取得部31−0〜31−Xは、比較部22−0〜22−Xから復号ビットを入力されたときに、各復号ビットaniのインデックス番号niに基づいて剰余値テーブル61からLビットの剰余値を取得して復号ビットaniに対応する「部分剰余」を取得する。剰余値取得部31−0〜31−Xは、取得した部分剰余を加算部41へ出力する。ここではサブブロックのブロックサイズは1ビットであるため、剰余値取得部31−0は、サブブロック0に対応する部分剰余を加算部41へ出力し、剰余値取得部31−1は、サブブロック1に対応する部分剰余を加算部41へ出力し、剰余値取得部31−Xは、サブブロックK−1に対応する部分剰余を加算部41へ出力することになる。また、剰余値取得部31−Xは、サブブロックK−1に対応する部分剰余を加算部41へ出力する。つまり、剰余値取得部31−0〜31−Xの各々が、部分剰余取得部として機能する。ただし、初回復号時には、剰余値取得部31−0〜31−Xは、値が1である復号ビットに対応する剰余値を取得するが、値が0である復号ビットに対応する剰余値を取得しない。
一方で、剰余値取得部31−0〜31−Xは、比較部22−0〜22−Xから復号ビットを入力されないときは、剰余値テーブル61からの剰余値の取得(つまり、部分剰余の取得)を行わない。
このように、誤り検出部7−1では、インデックス番号に基づいて、復号ビットに対応する剰余値を剰余値テーブル61から取得する。こうすることで、インタリーブにより並び順がランダム化された符号化ビット列に対し、デインタリーブすることなく、そのままの並び順で誤り検出を行うことができる。よって、誤り検出に係る処理時間を削減することができるため、復号部6での復号を早期に停止させることができる。
加算部41は、初回復号時には、取得された部分剰余をすべて加算して「合計剰余」を求め、求めた合計剰余を記憶部42に記憶させる。
また、加算部41は、2回目以降の復号時には、取得された部分剰余を、記憶部42に記憶されている前回の合計剰余に加算して今回の合計剰余を求める。前回の合計剰余は、式(13)に示すr(l)に相当し、今回の合計剰余は、式(14)に示すr(l+1)に相当する。加算部41は、求めた今回の合計剰余を誤り判定部43へ出力するとともに、求めた今回の合計剰余によって、記憶部42に記憶されている前回の合計剰余を更新する。
誤り判定部43は、加算部41で求められた今回の合計剰余が「0」となるときは復号ビット列に「誤り無し」と判定し、加算部41で求められた今回の合計剰余が「0以外」となるときは復号ビット列に「誤り有り」と判定する。そして、誤り判定部43は、CRC後の情報ビット列を出力するとともに、判定結果に対応する値をチェック結果として出力する。例えば、誤り判定部43は、復号ビット列に「誤り無し」と判定したときはチェック結果として「0」を出力し、復号ビット列に「誤り有り」と判定したときはチェック結果として「1」を出力する。また、誤り判定部43は、復号ビット列に「誤り無し」と判定したときは、復号の停止指示を復号部6へ出力する。
以上のように、誤り検出部7−1では、剰余値取得部31−0〜31−Xが、それぞれが1ビットをブロックサイズとするサブブロック0〜K−1にそれぞれ対応する複数の剰余値を剰余値テーブル61から取得することより、サブブロック0〜K−1にそれぞれ対応する複数の部分剰余を取得する。誤り判定部43は、取得された複数の部分剰余を加算した合計剰余に基づいて、復号ビット列における誤りの有無を判定する。ただし、剰余値取得部31−0〜31−Xは、比較部22−0〜22−Xでの比較結果に基づいて、前回の復号と今回の復号との間で値が変化したビットを含むサブブロックに対応する部分剰余だけしか取得しない。すなわち、剰余値取得部31−0〜31−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、剰余値取得部31−0〜31−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビット(ここでは、1ビット)が同一値であるサブブロックに対応する部分剰余を取得しない。そして、誤り判定部43は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。
こうすることで、前回の復号時と今回の復号時とですべてのビット(ここでは、1ビット)の値が変化しないサブブロックに対応する部分剰余の取得をすることなく、今回の復号ビット列の誤り検出を行うことができる。このため、誤り検出に係る処理量を削減することができる。
ここで例えば、1つめの関連技術では、毎回の復号の度に、値が1である復号ビットについては剰余値の取得が行われ、値が0である復号ビットについては剰余値の取得は行われない。復号ビット列において、値が1であるビットの数と値が0であるビットの数とは平均的にはほぼ等しいと考えられる。つまり、約5割のビットの値が1である。よって、復号ビット列のブロックサイズをKビット、1ビットあたりの処理量をXとすると、1つめの関連技術における処理量は「X×K×0.5」と表すことができる。
これに対し、シミュレーションによると、今回の復号ビット列において、前回の復号ビット列から値が変化する復号ビットの割合は約2割であった。よって、1つめの関連技術における処理量と比較した場合の実施例1における処理量は「X×K×0.2」と表すことができ、これは1つめの関連技術における処理量の4割の処理量である。つまり、実施例1によれば、1つめの関連技術と比較して、誤り検出において6割の処理を削減することができる。
<誤り検出装置の処理>
図5は、実施例1の復号装置の処理の説明に供するフローチャートである。図5に示すフローチャートは、1ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。
図5は、実施例1の復号装置の処理の説明に供するフローチャートである。図5に示すフローチャートは、1ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。
まず、復号装置5は、合計剰余rを0にリセットするとともに(ステップS101)、復号の繰り返し回数を示すカウンタItの値を0にリセットする(ステップS102)。
次いで、復号装置5は、Itの値がImax未満か否かを判断する(ステップS103)。Imaxは所定の最大繰り返し回数であり、例えば、Imaxの値は「16」に設定される。
Itの値がImax以上となったときは(ステップS103:No)、復号装置5は復号を停止し(ステップS123)、処理は終了する。
Itの値がImax未満であるときは(ステップS103:Yes)、復号装置5は、符号化ビット列に対する復号を行って、1ブロックの情報ビット列に対応する復号ビット列を得る(ステップS104)。
次いで、復号装置5は、復号ビット列を複数のK個のサブブロックに分割する(ステップS105)。
次いで、復号装置5は、カウンタiの値を0にリセットする(ステップS106)。
次いで、復号装置5は、iの値がK未満か否かを判断する(ステップS107)。
iの値がK未満であるときは(ステップS107:Yes)、復号装置5は、今回の復号ビットaniの値が、前回の復号ビットani’の値と同一か否かを判断する(ステップS108)。
今回の復号ビットaniの値が、前回の復号ビットani’の値と同一であるときは(ステップS108:Yes)、ステップS109〜S111の処理は行われず、処理はステップS112へ進む。
今回の復号ビットaniの値が、前回の復号ビットani’の値と異なるときは(ステップS108:No)、復号装置5は、今回の復号ビットaniの正規のビット位置niを判断する(ステップS109)。
次いで、復号装置5は、ステップS109で判断したビット位置niに対応する剰余値rniを取得して部分剰余とする(ステップS110)。
次いで、復号装置5は、合計剰余rに部分剰余rniを加算して新たな合計剰余rを求める(ステップS111)。
次いで、復号装置5は、カウンタiの値を1だけインクリメントし(ステップS112)、処理はステップS107に戻る。
そして、ステップS108〜S111の処理がK回だけ繰り返されてiの値がK以上となったときに(ステップS107:No)、復号装置5は、合計剰余rに基づいて、復号ビット列における誤りの有無を判定する(ステップS121)。つまり、復号装置5は、合計剰余rが0であるときは復号ビット列に「誤り無し」と判定し、合計剰余rが0でないときは復号ビット列に「誤り有り」と判定する(ステップS121)。
合計剰余rが0でないときは(ステップS121:No)、復号装置5は、カウンタItの値を1だけインクリメントし(ステップS122)、処理はステップS103に戻る。
合計剰余rが0であるときは(ステップS121:Yes)、復号装置5は復号を停止し(ステップS123)、処理は終了する。
[実施例2]
<動作原理>
ビットサイズがKビットの符号化ビット列を、ブロックサイズがWビット(ただし、Wは「2」以上)のM個のサブブロックに分割すると、W及びKは、式(16)によって表される。ただし、KはMで割り切れるものとする。
<動作原理>
ビットサイズがKビットの符号化ビット列を、ブロックサイズがWビット(ただし、Wは「2」以上)のM個のサブブロックに分割すると、W及びKは、式(16)によって表される。ただし、KはMで割り切れるものとする。
そこで、実施例2では、復号ビット列をブロックサイズがWビット(ただし、Wは「2」以上)のM個のサブブロックに分割し、各サブブロックに対応するM個の部分剰余Pm(x)を並列に求める。
<誤り検出部の構成>
図6は、実施例2の誤り検出部の一例を示す機能ブロック図である。図6において、誤り検出部7−2は、分割部25と、比較部26−0〜26−Xと、記憶部27−0〜27−Xと、スイッチ24−0〜24−Xと、部分剰余取得部51−0〜51−Xとを有する。部分剰余取得部51−0は、剰余値取得部34−0と、剰余演算部35−0とを有し、部分剰余取得部51−1は、剰余値取得部34−1と、剰余演算部35−1とを有し、部分剰余取得部51−Xは、剰余値取得部34−Xと、剰余演算部35−Xとを有する。図6において、「X=M−1」である。Mはサブブロック数である。また、誤り検出部7−2は、剰余値テーブル62と、加算部41と、記憶部42と、誤り判定部43とを有する。図6に示す誤り検出部7−2は、図1に示す誤り検出部7に相当する。
図6は、実施例2の誤り検出部の一例を示す機能ブロック図である。図6において、誤り検出部7−2は、分割部25と、比較部26−0〜26−Xと、記憶部27−0〜27−Xと、スイッチ24−0〜24−Xと、部分剰余取得部51−0〜51−Xとを有する。部分剰余取得部51−0は、剰余値取得部34−0と、剰余演算部35−0とを有し、部分剰余取得部51−1は、剰余値取得部34−1と、剰余演算部35−1とを有し、部分剰余取得部51−Xは、剰余値取得部34−Xと、剰余演算部35−Xとを有する。図6において、「X=M−1」である。Mはサブブロック数である。また、誤り検出部7−2は、剰余値テーブル62と、加算部41と、記憶部42と、誤り判定部43とを有する。図6に示す誤り検出部7−2は、図1に示す誤り検出部7に相当する。
分割部25には、復号ビット列の各復号ビットaniが入力されるとともに、各復号ビットaniの正規のビット位置を示すインデックス番号niが入力される(i=0,1,2,…,K−1)。分割部25は、1ブロックの情報ビット列に対応する復号ビット列an0〜anK−1を複数のサブブロックi(i=0,1,2,…,M−1)に分割し、各サブブロックの先頭の復号ビットから順番に、各サブブロックに含まれる復号ビットを並列に比較部26−0〜26−Xへ出力する。ここでは、サブブロックのブロックサイズをWビット(ただし、Wは「2」以上)とする。よって例えば、サブブロック0に含まれる復号ビットは比較部26−0へ出力され、サブブロック1に含まれる復号ビットは比較部26−1へ出力される。また例えば、サブブロック0は復号ビットa0,a1,…,aW−1から形成され、復号ビットa0,a1,…,aW−1はa0からシリアルな順番で比較部26−0へ出力される。
また、分割部25は、比較部26−0〜26−Xへ並列に出力する復号ビットのうち、各サブブロックの先頭の復号ビットのインデックス番号を剰余値取得部34−0〜34−Xへ出力する。例えば、分割部25は、比較部26−0へ出力した復号ビットa0のインデックス番号0を剰余値取得部34−0へ出力する。
比較部26−0〜26−X及び記憶部27−0〜27−Xは、サブブロック0〜M−1にそれぞれ対応する。比較部26−0〜26−Xは、1ブロックの情報ビット列に対応する尤度データys,yp1,yp2から繰り返し得られる復号ビット列のうち、初回に得られた復号ビット列に対しては、スイッチ24−0〜24−Xをオンにして、比較部26−0〜26−Xと剰余演算部35−0〜35−Xとを接続する。これにより、初回に得られた復号ビット列の各復号ビットは、比較部26−0〜26−Xから剰余演算部35−0〜35−Xへサブブロック単位でそのまま出力される。また、比較部26−0〜26−Xは、初回に得られた復号ビット列の各復号ビットをサブブロック毎に記憶部27−0〜27−Xに記憶させる。よって例えば、記憶部27−0は、サブブッロク0を形成する復号ビットa0,a1,…,aW−1を記憶する。
また、比較部26−0〜26−Xは、2回目以降の復号で得られた復号ビット列に対しては、今回得られた復号ビットの値と、前回得られた復号ビットの値とを比較する。前回得られた復号ビットはサブブロック毎に記憶部27−0〜27−Xに記憶されている。比較部27−0〜27−Xは、比較部27−0〜27−Xにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在するときにスイッチ24−0〜24−Xをオンにして、比較部26−0〜26−Xと剰余演算部35−0〜35−Xとを接続する。一方で、比較部26−0〜26−Xは、比較部27−0〜27−Xにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在しないとき、つまり、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、スイッチ24−0〜24−Xをオフにして、比較部26−0〜26−Xと剰余演算部35−0〜35−Xとを接続しない。よって、サブブッロク内に前回と今回とで値が異なる復号ビットが存在するときは、各サブブロックの復号ビットが剰余演算部35−0〜35−Xに入力されて、剰余演算部35−0〜35−Xによる剰余演算が行われる。一方で、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、各サブブロックの復号ビットが剰余演算部35−0〜35−Xに入力されず、剰余演算部35−0〜35−Xによる剰余演算が行われない。
例えば、比較部26−0は、サブブロック0において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ24−0をオンにする。一方で、比較部26−0は、サブブロック0において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ24−0をオフにする。また例えば、比較部26−1は、サブブロック1において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ24−1をオンにする。一方で、比較部26−1は、サブブロック1において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ24−1をオフにする。
また、比較部26−0〜26−Xは、2回目以降の復号に対しては、復号毎に得られた各サブブロックの復号ビットによって、記憶部27−0〜27−Xに記憶されている各サブブロックの復号ビットを順次更新する。
なお、初回に得られた復号ビット列の各復号ビットに対しては前回得られた復号ビットが存在しないため、初回復号時には、今回得られた復号ビットの値と、前回得られた復号ビットの値とは常に一致しない。
剰余値テーブル62は、式(21)によって算出されるサブブロック毎の剰余値Pm (0)を、サブブロック毎の剰余演算の初期値として、各サブブロックの先頭の復号ビットのインデックス番号にそれぞれ対応づけて記憶する。
剰余値取得部34−0〜34−Xは、サブブロック0〜M−1にそれぞれ対応する。剰余値取得部34−0〜34−Xは、比較部26−0〜26−Xから各サブブロックの先頭の復号ビットを入力されたときに、先頭の復号ビットのインデックス番号に基づいて、剰余値テーブル62からLビットの剰余値Pm (0)を取得する。例えば、剰余値取得部34−0は、サブブロック0の先頭の復号ビットのインデックス番号に基づいて剰余値P0 (0)を取得し、剰余値取得部34−1は、サブブロック1の先頭の復号ビットのインデックス番号に基づいて剰余値P1 (0)を取得する。剰余値取得部34−0〜34−Xは、取得した剰余値Pm (0)を、サブブロック毎の剰余演算の初期値として、剰余演算部35−0〜35−Xに設定する。よって例えば、剰余値P0 (0)は剰余演算部35−0に設定され、剰余値P1 (0)は剰余演算部35−1に設定される。
剰余演算部35−0〜35−Xは、サブブロック0〜M−1にそれぞれ対応する。剰余演算部35−0〜35−Xは、比較部26−0〜26−Xから各サブブロックの復号ビットを入力されたときに、剰余値Pm (0)を初期値として用いてサブブロック毎にLビットの剰余値を算出して各サブブロックに対応する「部分剰余」を取得する。剰余演算部35−0〜35−Xは、取得した部分剰余を加算部41へ出力する。すなわち、剰余値演算部35−0は、サブブロック0に対応する部分剰余を加算部41へ出力し、剰余値演算部35−1は、サブブロック1に対応する部分剰余を加算部41へ出力する。また、剰余値演算部35−Xは、サブブロックM−1に対応する部分剰余を加算部41へ出力する。
一方で、剰余演算部35−0〜35−Xは、比較部26−0〜26−Xから各サブブロックの復号ビットを入力されないときは、剰余値の算出(つまり、部分剰余の取得)を行わない。
図7は、実施例2の剰余演算部の一例を示す機能ブロック図である。図7に示す剰余演算部35は、図6に示す剰余演算部35−0〜35−Xに相当する。
図7において、剰余演算部35は、加算器71−0〜71−Xと、遅延器D0〜DL−1と、乗算器72−0〜72−Xとを有する。図7において、「X=L−1」であり、「Y=L−2」である。図7に示すg0〜gL−1は、式(2)におけるg0〜gL−1に相当する。g0〜gL−1は「1」または「0」である。
まず、剰余演算部35の遅延器D0〜DL−1に対して、剰余値取得部34−0〜34−Xによって取得されたビット0〜ビットL−1のLビットの剰余値Pm (0)の各ビットが初期値として設定される。そして、各サブブロックに含まれる復号ビットが先頭のビットから1ビットずつシリアルな順番で剰余演算部35に入力される。サブブロック毎にすべての復号ビットの入力が完了した時点で、各サブブロックの復号ビット列を生成多項式G(x)で除算したときの除算結果である商ビットが得られる。また、サブブロック毎にすべての復号ビットの入力が完了した時点での遅延器D0〜DL−1の内容がサブブロック毎の部分剰余Pmとなる。このため、剰余演算部35は、サブブロック毎にすべての復号ビットの入力が完了した時点で、遅延器D0〜DL−1の内容をサブブロック毎の部分剰余Pmとして、加算部41へ出力する。ここで、1ビットずつシリアルな順番で入力される複数のビットに対する、加算器、遅延器及び乗算器を用いた除算は「シリアル除算」と呼ばれることがある。
このように、誤り検出部7−2では、サブブロック0〜M−1のM個の複数のサブブロック毎の部分剰余を並列に同時に取得して誤り検出を行う。このため、誤り検出に係る処理時間を削減することができるため、復号部6での復号を早期に停止させることができる。
加算部41、記憶部42及び誤り判定部43は、実施例1と同一であるため、説明を省略する。
以上のように、誤り検出部7−2では、部分剰余取得部51−0〜51−Xが、それぞれがWビット(ただし、Wは「2」以上)をブロックサイズとするサブブロック0〜M−1にそれぞれ対応する複数の剰余値を図7に示す構成を用いて算出することより、サブブロック0〜M−1にそれぞれ対応する複数の部分剰余を取得する。誤り判定部43は、取得された複数の部分剰余を加算した合計剰余に基づいて、復号ビット列における誤りの有無を判定する。ただし、部分剰余取得部51−0〜51−Xは、比較部26−0〜26−Xでの比較結果に基づいて、前回の復号と今回の復号との間で値が変化したビットを含むサブブロックに対応する部分剰余だけしか取得しない。すなわち、部分剰余取得部51−0〜51−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、部分剰余取得部51−0〜51−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビットが同一値であるサブブロックに対応する部分剰余を取得しない。そして、誤り判定部43は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。
こうすることで、前回の復号時と今回の復号時とですべてのビットの値が変化しないサブブロックに対応する部分剰余の取得をすることなく、今回の復号ビット列の誤り検出を行うことができる。このため、誤り検出に係る処理量を削減することができる。
<誤り検出装置の処理>
図8は、実施例2の復号装置の処理の説明に供するフローチャートである。図8に示すフローチャートは、1ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。図8におけるステップS101〜S104の処理は実施例1と同一であるため、説明を省略する。
図8は、実施例2の復号装置の処理の説明に供するフローチャートである。図8に示すフローチャートは、1ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。図8におけるステップS101〜S104の処理は実施例1と同一であるため、説明を省略する。
ステップS201において、復号装置5は、復号ビット列を複数のM個のサブブロックに分割する(ステップS201)。
次いで、復号装置5は、カウンタmの値を0にリセットして、サブブロック番号mを0に設定する(ステップS202)。
次いで、復号装置5は、mの値がM未満か否かを判断する(ステップS203)。
mの値がM未満であるときは(ステップS203:Yes)、復号装置5は、サブブロックmにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一か否かを判断する(ステップS204)。
サブブロックmにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一であるときは(ステップS204:Yes)、ステップS205〜S208の処理は行われず、処理はステップS209へ進む。
サブブロックmにおいて、今回と前回とで値が異なる復号ビットがあるときは(ステップS204:No)、復号装置5は、サブブロックmにおける先頭の復号ビットの正規のビット位置を判断する(ステップS205)。
次いで、復号装置5は、ステップS205で判断したビット位置に対応する剰余値を取得する(ステップS206)。
次いで、復号装置5は、ステップS205で取得した剰余値を初期値として用いて、サブブロックmに対する剰余演算を行って、サブブロックmに対応する部分剰余r(m)を取得する(ステップS207)。
次いで、復号装置5は、合計剰余rに部分剰余r(m)を加算して新たな合計剰余rを求める(ステップS208)。
次いで、復号装置5は、カウンタmの値(つまり、サブブロック番号m)を1だけインクリメントし(ステップS209)、処理はステップS203に戻る。
そして、ステップS204〜S208の処理がM回だけ繰り返されてmの値がM以上となったときに(ステップS203:No)、復号装置5は、合計剰余rに基づいて、復号ビット列における誤りの有無を判定する(ステップS121)。以降の処理は実施例1と同一であるため、説明を省略する。
[実施例3]
<動作原理>
式(4)に示す多項式A(x)を生成多項式G(x)で除算したときの剰余値R(x)を求める剰余演算は、式(7)に示すように、「線形演算」となる。そこで、実施例3では、部分剰余の取得に際し、2つめの関連技術における剰余演算と累積加算との実行順序を逆にする。つまり、実施例3では、ビット位置毎の各剰余値の累積加算結果を求めた後に、累積加算結果を生成多項式で除算することにより部分剰余を取得する。これにより、2つめの関連技術に比べ、剰余演算の回数を削減することができる。
<動作原理>
式(4)に示す多項式A(x)を生成多項式G(x)で除算したときの剰余値R(x)を求める剰余演算は、式(7)に示すように、「線形演算」となる。そこで、実施例3では、部分剰余の取得に際し、2つめの関連技術における剰余演算と累積加算との実行順序を逆にする。つまり、実施例3では、ビット位置毎の各剰余値の累積加算結果を求めた後に、累積加算結果を生成多項式で除算することにより部分剰余を取得する。これにより、2つめの関連技術に比べ、剰余演算の回数を削減することができる。
よって、式(22)に示す剰余値Rn(x)と等価な剰余ベクトルrQ+qは、基準となる剰余ベクトルrQをqだけシフトしたシフトベクトルr~Q+qと、式(10)に示すGrとを用いて、式(25)により表すことができる。
そこで、実施例3では、インデックス番号niを「Qi+qi=pi×P+qi」に分解し、pi×Pに基づいて取得した剰余値rpi×Pを式(26)に示すようにしてqiビットだけシフトしてシフト結果r~(qi) pi×Pを求める。つまり、剰余ベクトルrpi×Pの先頭にqi個の0を埋めることにより、剰余ベクトルrpi×Pを剰余ベクトルr~(qi) pi×Pに変換する。
そして、累積加算結果r~に対する剰余演算を式(28)に従って行って剰余ベクトルrを算出する。式(28)では、行列Grの代わりに行列Fを用いて剰余演算を行う場合を示す。式(28)におけるFは、Grの一部を抽出した部分行列であり、抽出サイズは、シフトベクトルr~Q+qのサイズに等しい。シフト量の最大値は予め規定されているため、シフトベクトルのサイズをシフト量の最大値に合わせることで、シフト量によらずFを固定の行列とすることができる。
また、任意のインデックス番号nに対応する剰余値rnから、インデックス番号n+1に対応する剰余値rn+1を求めるための変換行列Gを用いると、剰余値rn+1は式(30)によって表される。変換行列Gにより、剰余値rnのシフトと、シフト結果に対する剰余演算とが一括して行われて剰余値rn+1が算出される。
そこで、実施例3では、すべてのインデックス番号に対応する剰余値を式(31)に従って算出する。式(31)における変換行列Gqは、式(28)における行列FのL×L部分行列である。よって、式(28)における行列Fが式(32)によって表されるとき、変換行列Gqは式(33)によって表される。
そして、q毎の累積加算結果をqビットだけシフトするシフト処理と、シフト結果を生成多項式で除算したときの剰余値を求める剰余演算とを、変換行列Gqを用いて、式(39)に従って行って、q毎の剰余値r[q]を部分剰余として求める。
<誤り検出部の構成>
図9は、実施例3の誤り検出部の一例を示す機能ブロック図である。図9において、誤り検出部7−3は、分割部28と、比較部26−0〜26−Xと、記憶部27−0〜27−Xと、スイッチ24−0〜24−Xと、部分剰余取得部52−0〜52−Xとを有する。部分剰余取得部52−0は、剰余値取得部37−0と、累積加算部38−0と、q0演算部39−0とを有する。部分剰余取得部52−1は、剰余値取得部37−1と、累積加算部38−1と、q1演算部39−1とを有する。部分剰余取得部52−Xは、剰余値取得部37−Xと、累積加算部38−Xと、qP−1演算部39−Xとを有する。図9において、「X=P−1」である。「P」は、復号ビット列におけるインデックス番号nを「p×P+q」に分解して表したときの所定のビット間隔である。また、誤り検出部7−3は、剰余値テーブル63と、加算部41と、記憶部42と、誤り判定部43とを有する。図9に示す誤り検出部7−3は、図1に示す誤り検出部7に相当する。
図9は、実施例3の誤り検出部の一例を示す機能ブロック図である。図9において、誤り検出部7−3は、分割部28と、比較部26−0〜26−Xと、記憶部27−0〜27−Xと、スイッチ24−0〜24−Xと、部分剰余取得部52−0〜52−Xとを有する。部分剰余取得部52−0は、剰余値取得部37−0と、累積加算部38−0と、q0演算部39−0とを有する。部分剰余取得部52−1は、剰余値取得部37−1と、累積加算部38−1と、q1演算部39−1とを有する。部分剰余取得部52−Xは、剰余値取得部37−Xと、累積加算部38−Xと、qP−1演算部39−Xとを有する。図9において、「X=P−1」である。「P」は、復号ビット列におけるインデックス番号nを「p×P+q」に分解して表したときの所定のビット間隔である。また、誤り検出部7−3は、剰余値テーブル63と、加算部41と、記憶部42と、誤り判定部43とを有する。図9に示す誤り検出部7−3は、図1に示す誤り検出部7に相当する。
分割部28には、復号ビット列の各復号ビットaniが入力されるとともに、各復号ビットaniの正規のビット位置を示すインデックス番号niが入力される(i=0,1,2,…,K−1)。分割部28は、インデックス番号niを「pi×P+qi」(pi=0,1,2,…,K−1,qi=0,1,2,…,P−1)に分解する。分割部28は、分解後のqiに従って、1ブロックの情報ビット列に対応する復号ビット列an0〜anK−1を複数のサブブロックi(i=0,1,2,…,P−1)に分割する。すなわち、分割部28は、復号ビット列an0〜anK−1を、共にqi=0である複数の復号ビットから形成されるサブブロック0と、共にqi=1である複数の復号ビットから形成されるサブブロック1と、…、共にqi=P−1である複数の復号ビットから形成されるサブブロックP−1とに分割する。よって、例えば、サブブロック0は、復号ビットan0,anP,an2P,…,an(K−1)Pから形成される。分割部28は、サブブロック0を比較部26−0へ出力し、サブブロック1を比較部26−1へ出力し、…、サブブロックP−1を比較部26−Xへ出力する。サブブロック0〜P−1は、比較部26−0〜26−Xへ並列に出力される。
また、分割部28は、比較部26−0〜26−Xへ並列に出力した復号ビットのそれぞれのインデックス番号を、剰余値取得部37−0〜37−Xへ出力する。例えば、分割部28は、比較部26−0へ出力したサブブロック0を形成する復号ビットan0,anP,an2P,…,an(K−1)Pのインデックス番号n0,nP,n2P,…,n(K−1)Pを剰余値取得部37−0へ出力する。
比較部26−0〜26−X及び記憶部27−0〜27−Xは、サブブロック0〜P−1にそれぞれ対応する。比較部26−0〜26−Xは、1ブロックの情報ビット列に対応する尤度データys,yp1,yp2から繰り返し得られる復号ビット列のうち、初回に得られた復号ビット列に対しては、スイッチ24−0〜24−Xをオンにして、比較部26−0〜26−Xと剰余値取得部37−0〜37−Xとを接続する。これにより、初回に得られた復号ビット列の各復号ビットは、比較部26−0〜26−Xから剰余値取得部37−0〜37−Xへサブブロック単位でそのまま出力される。また、比較部26−0〜26−Xは、初回に得られた復号ビット列の各復号ビットをサブブロック毎に記憶部27−0〜27−Xに記憶させる。よって例えば、記憶部27−0は、サブブッロク0を形成する復号ビットan0,anP,an2P,…,an(K−1)Pを記憶する。
また、比較部26−0〜26−Xは、2回目以降の復号で得られた復号ビット列に対しては、今回得られた復号ビットの値と、前回得られた復号ビットの値とを比較する。前回得られた復号ビットはサブブロック毎に記憶部27−0〜27−Xに記憶されている。比較部27−0〜27−Xは、比較部27−0〜27−Xにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在するときにスイッチ24−0〜24−Xをオンにして、比較部26−0〜26−Xと剰余値取得部37−0〜37−Xとを接続する。一方で、比較部26−0〜26−Xは、比較部27−0〜27−Xにそれぞれ対応するサブブッロク内に前回と今回とで値が異なる復号ビットが存在しないとき、つまり、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、スイッチ24−0〜24−Xをオフにして、比較部26−0〜26−Xと剰余値取得部37−0〜37−Xとを接続しない。よって、サブブッロク内に前回と今回とで値が異なる復号ビットが存在するときは、各サブブロックの復号ビットが剰余値取得部37−0〜37−Xに入力されて、剰余値取得部37−0〜37−Xによる剰余値の取得が行われる。一方で、前回と今回とでサブブロック内のすべての復号ビットが同一値であるときは、各サブブロックの復号ビットが剰余値取得部37−0〜37−Xに入力されず、剰余値取得部37−0〜37−Xによる剰余値の取得が行われない。
例えば、比較部26−0は、サブブロック0において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ24−0をオンにする。一方で、比較部26−0は、サブブロック0において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ24−0をオフにする。また例えば、比較部26−1は、サブブロック1において、前回と今回とで値が異なる復号ビットが存在するときに、スイッチ24−1をオンにする。一方で、比較部26−1は、サブブロック1において、前回と今回とですべての復号ビットの値が同一であるときに、スイッチ24−1をオフにする。
また、比較部26−0〜26−Xは、2回目以降の復号に対しては、復号毎に得られた各サブブロックの復号ビットによって、記憶部27−0〜27−Xに記憶されている各サブブロックの復号ビットを順次更新する。
なお、初回に得られた復号ビット列の各復号ビットに対しては前回得られた復号ビットが存在しないため、初回復号時には、今回得られた復号ビットの値と、前回得られた復号ビットの値とは常に一致しない。
剰余値テーブル63は、各ビットaniの正規のビット位置niにそれぞれ対応するLビットの剰余値rni(式(9)に示す剰余ベクトルrnに相当)のうち、所定のビット間隔「P」の各ビット位置「pi×P」(pi=0,1,2,…,K−1)に対応する剰余値rpi×Pのみを記憶する。ただし、P=2m、つまり、Pは2のベキ乗である。図10は、実施例3の剰余値テーブルの一例を示す図である。例えば、剰余値テーブル63は、図10に示すように、ビット位置0,P,2P,…,(K−1)Pにそれぞれ対応させて剰余値rp0×P,rp1×P,rp2×P,…,rpK-1×Pを記憶する。なお、各ビットaniの正規のビット位置niにそれぞれ対応する剰余値rniは式(8)及び式(9)に従って予め算出可能である。つまり、剰余値テーブル63は、多項式A(x)によって表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式xnを生成多項式G(x)で除算したときのそれぞれの剰余値Rn(x)のうち、所定のビット間隔Pの各ビット位置p×P(pは0以上の整数)に対応する剰余値のみをrp×Pとして記憶する。
剰余値取得部37−0〜37−Xは、サブブロック0〜P−1にそれぞれ対応する。剰余値取得部37−0〜37−Xは、比較部26−0〜26−Xから復号ビットを入力されたときに、各復号ビットaniのインデックス番号niに基づいて剰余値テーブル63からLビットの剰余値を取得する。剰余値取得部37−0〜37−Xは、入力されるインデックス番号niを「pi×P+qi」(qi=0,1,2,…,P−1)に分解し、「pi×P」に対応する剰余値を剰余値テーブル63から取得して累積加算部38−0〜38−Xへ出力する。つまり、剰余値取得部37−0〜37−Xは、復号ビットの正規のビット位置p×P+q(qは0以上かつP未満の整数)におけるp×Pに対応する剰余値rp×Pを剰余値テーブル63から取得する。剰余値取得部37−0は、サブブロック0に対応する各剰余値を累積加算部38−0へ出力し、剰余値取得部37−1は、サブブロック1に対応する各剰余値を累積加算部38−1へ出力する。また、剰余値取得部37−Xは、サブブロックP−1に対応する各剰余値を累積加算部38−Xへ出力する。
累積加算部38−0〜38−Xは、サブブロック0〜P−1にそれぞれ対応する。累積加算部38−0は、サブブロック0に対応する各剰余値、つまり、各piのqi=0に対応する各剰余値を累積加算する。累積加算部38−1は、サブブロック1に対応する各剰余値、つまり、各piのqi=1に対応する各剰余値を累積加算する。また、累積加算部38−Xは、サブブロックP−1に対応する各剰余値、つまり、各piのqi=P−1に対応する各剰余値を累積加算する。つまり、累積加算部38−0〜38−Xは、剰余値取得部37−0〜37−Xによって取得された各剰余値をq毎に累積加算してq毎の累積加算結果を求める。累積加算部38−0は、qi=0に対応する累積加算結果をq0演算部39−0へ出力し、累積加算部38−1は、qi=1に対応する累積加算結果をq1演算部39−1へ出力する。また、累積加算部38−Xは、qi=P−1に対応する累積加算結果をqP−1演算部39−Xへ出力する。
q0演算部39−0〜qP−1演算部39−Xは、サブブロック0〜P−1にそれぞれ対応する。q0演算部39−0〜qP−1演算部39−Xは、サブブロック毎にLビットの剰余値を算出する剰余演算を行って各サブブロックに対応する「部分剰余」を取得する。q0演算部39−0は、qi=0に対応する累積加算結果をqi=0ビットだけシフトしたシフト結果(つまり、qi=0に対応する累積加算結果)を生成多項式G(x)で除算したときの剰余値を求める剰余演算を行い、算出した剰余値をサブブロック0に対応する部分剰余として加算部41へ出力する。q1演算部39−1は、qi=1に対応する累積加算結果をqi=1ビットだけシフトしたシフト結果を生成多項式G(x)で除算したときの剰余値を求める剰余演算を行い、算出した剰余値をサブブロック1に対応する部分剰余として加算部41へ出力する。また、qP−1演算部39−Xは、qi=P−1に対応する累積加算結果をqi=P−1ビットだけシフトしたシフト結果を生成多項式G(x)で除算したときの剰余値を求める剰余演算を行い、算出した剰余値をサブブロックP−1に対応する部分剰余として加算部41へ出力する。つまり、q0演算部39−0〜qP−1演算部39−Xの各演算部は、部分剰余を取得するために、q毎の累積加算結果をqビットだけシフトしたシフト結果を生成多項式で除算したときの剰余値を求める剰余演算をq毎に行う。
また、q0演算部39−0〜qP−1演算部39−Xの各演算部は、q毎の累積加算結果をqビットだけシフトするシフト処理と、シフト結果を生成多項式で除算したときの剰余値を求める剰余演算とを、行列Fの部分行列である変換行列Gqを用いて、式(31)に従って、q毎に行う。つまり、q0演算部39−0〜qP−1演算部39−Xの各演算部は、シフト及び剰余演算を一括して行う変換行列Gqを用いる。
以上のように、誤り検出部7−3では、部分剰余取得部52−0〜52−Xが、サブブロック0〜P−1にそれぞれ対応する複数の剰余値を図9に示す構成を用いて算出することより、サブブロック0〜P−1にそれぞれ対応する複数の部分剰余を取得する。誤り判定部43は、取得された複数の部分剰余を加算した合計剰余に基づいて、復号ビット列における誤りの有無を判定する。ただし、部分剰余取得部52−0〜52−Xは、比較部26−0〜26−Xでの比較結果に基づいて、前回の復号と今回の復号との間で値が変化したビットを含むサブブロックに対応する部分剰余だけしか取得しない。すなわち、部分剰余取得部52−0〜52−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含むサブブロックに対応する部分剰余を取得する。一方で、部分剰余取得部52−0〜52−Xは、複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間ですべてのビットが同一値であるサブブロックに対応する部分剰余を取得しない。そして、誤り判定部43は、取得された部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、今回の復号ビット列における誤りの有無を判定する。
こうすることで、前回の復号時と今回の復号時とですべてのビットの値が変化しないサブブロックに対応する部分剰余の取得をすることなく、今回の復号ビット列の誤り検出を行うことができる。このため、誤り検出に係る処理量を削減することができる。
また、部分剰余取得部52−0〜52−Xは、ビット位置毎の各剰余値の累積加算結果をq毎に求めた後に、q毎の累積加算結果をqビットだけシフトしたシフト結果を生成多項式で除算したときの剰余値を求める剰余演算をq毎に行ってサブブロック0〜P−1にそれぞれ対応する複数の部分剰余を取得する。こうすることで、q毎の演算では、1つのqに対し、剰余演算は1回しか行われない。つまり、サブブロック0〜P−1のサブブロック毎の演算では、1つのサブブロックについて、剰余演算は1回しか行われない。よって、正規のビット位置に対応する剰余値のうち、所定のビット間隔の各ビット位置に対応する剰余値を用いて部分剰余を取得する際に、誤り検出に係る処理量をさらに削減することができる。
<誤り検出装置の処理>
図11は、実施例3の復号装置の処理の説明に供するフローチャートである。図11に示すフローチャートは、1ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。図11におけるステップS101〜S104の処理は実施例1と同一であるため、説明を省略する。
図11は、実施例3の復号装置の処理の説明に供するフローチャートである。図11に示すフローチャートは、1ブロックの情報ビット列に対応する符号化ビット列の復号を行うときに開始される。図11におけるステップS101〜S104の処理は実施例1と同一であるため、説明を省略する。
ステップS301において、復号装置5は、復号ビット列を複数のP個のサブブロックに分割する(ステップS301)。
次いで、復号装置5は、カウンタqiの値を0にリセットして、サブブロック番号qiを0に設定する(ステップS302)。
次いで、復号装置5は、qiの値がP未満か否かを判断する(ステップS303)。
qiの値がP未満であるときは(ステップS303:Yes)、復号装置5は、サブブロックqiにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一か否かを判断する(ステップS304)。
サブブロックqiにおいて、今回のすべての復号ビットの値が、前回のすべての復号ビットの値と同一であるときは(ステップS304:Yes)、ステップS305〜S310の処理は行われず、処理はステップS311へ進む。
サブブロックqiにおいて、今回と前回とで値が異なる復号ビットがあるときは(ステップS304:No)、復号装置5は、サブブロックqiを形成する今回の複数の復号ビットaniのインデックス番号niを「pi×P+qi」に分解して「pi×P」のビット位置を判断する(ステップS305)。
次いで、復号装置5は、ステップS305で判断したビット位置pi×Pに対応する複数の剰余値rpi×Pを取得する(ステップS306)。
次いで、復号装置5は、サブブロックqiについて、ステップS306で取得した複数の剰余値rpi×Pを累積加算する(ステップS307)。
次いで、復号装置5は、サブブロックqiについての累積加算結果をqビットだけシフトするシフト処理と、シフト結果を生成多項式で除算したときの剰余値を求める剰余演算とを、変換行列Gqを用いて行って、サブブロックqiに対応する部分剰余r[q]を取得する(ステップS308,S309)。
次いで、復号装置5は、合計剰余rに部分剰余r[q]を加算して新たな合計剰余rを求める(ステップS310)。
次いで、復号装置5は、カウンタqiの値(つまり、サブブロック番号qi)を1だけインクリメントし(ステップS311)、処理はステップS303に戻る。
そして、ステップS304〜S310の処理がP回だけ繰り返されてqiの値がP以上となったときに(ステップS303:No)、復号装置5は、合計剰余rに基づいて、復号ビット列における誤りの有無を判定する(ステップS121)。以降の処理は実施例1と同一であるため、説明を省略する。
[他の実施例]
[1]上記実施例の復号装置5は、次のようなハードウェア構成により実現することができる。図12は、復号装置のハードウェア構成例を示す図である。図12に示すように、復号装置5は、ハードウェアの構成要素として、プロセッサ5aと、メモリ5bとを有する。プロセッサ5aの一例として、CPU(Central Processing Unit),DSP(Digital Signal Processor),FPGA(Field Programmable Gate Array)等が挙げられる。また、復号装置5は、プロセッサ5aと周辺回路とを含むLSI(Large Scale Integrated circuit)を有してもよい。メモリ5bの一例として、SDRAM等のRAM,ROM,フラッシュメモリ等が挙げられる。復号装置5が有する復号部6において、分配部11と、要素復号部12,13と、硬判定部16と、インデックス番号出力部17とは、プロセッサ5aにより実現される。インタリーバ14と、デインタリーバ15とは、プロセッサ5a及びメモリ5bにより実現される。また、復号装置5が有する誤り検出部7−1〜7−3において、分割部21と、比較部22−0〜22−Xと、スイッチ24−0〜24−Xと、剰余値取得部31−0〜31−Xと、加算部41と、誤り判定部43とは、プロセッサ5aにより実現される。記憶部23−0〜23−X,42と、剰余値テーブル61とは、メモリ5bにより実現される。分割部25と、比較部26−0〜26−Xと、剰余値取得部34−0〜34−Xと、剰余演算部35−0〜35−Xとは、プロセッサ5aにより実現される。記憶部27−0〜27−Xと、剰余値テーブル61,62,63とは、メモリ5bにより実現される。分割部28と、剰余値取得部37−0〜37−Xと、q0演算部39−0〜qP−1演算部39−Xとは、プロセッサ5aにより実現される。累積加算部38−0〜38−Xは、プロセッサ5a及びメモリ5bにより実現される。
[1]上記実施例の復号装置5は、次のようなハードウェア構成により実現することができる。図12は、復号装置のハードウェア構成例を示す図である。図12に示すように、復号装置5は、ハードウェアの構成要素として、プロセッサ5aと、メモリ5bとを有する。プロセッサ5aの一例として、CPU(Central Processing Unit),DSP(Digital Signal Processor),FPGA(Field Programmable Gate Array)等が挙げられる。また、復号装置5は、プロセッサ5aと周辺回路とを含むLSI(Large Scale Integrated circuit)を有してもよい。メモリ5bの一例として、SDRAM等のRAM,ROM,フラッシュメモリ等が挙げられる。復号装置5が有する復号部6において、分配部11と、要素復号部12,13と、硬判定部16と、インデックス番号出力部17とは、プロセッサ5aにより実現される。インタリーバ14と、デインタリーバ15とは、プロセッサ5a及びメモリ5bにより実現される。また、復号装置5が有する誤り検出部7−1〜7−3において、分割部21と、比較部22−0〜22−Xと、スイッチ24−0〜24−Xと、剰余値取得部31−0〜31−Xと、加算部41と、誤り判定部43とは、プロセッサ5aにより実現される。記憶部23−0〜23−X,42と、剰余値テーブル61とは、メモリ5bにより実現される。分割部25と、比較部26−0〜26−Xと、剰余値取得部34−0〜34−Xと、剰余演算部35−0〜35−Xとは、プロセッサ5aにより実現される。記憶部27−0〜27−Xと、剰余値テーブル61,62,63とは、メモリ5bにより実現される。分割部28と、剰余値取得部37−0〜37−Xと、q0演算部39−0〜qP−1演算部39−Xとは、プロセッサ5aにより実現される。累積加算部38−0〜38−Xは、プロセッサ5a及びメモリ5bにより実現される。
[2]復号装置5での上記説明における各処理は、各処理に対応するプログラムをプロセッサ5aに実行させることによって実現してもよい。例えば、復号装置5での上記説明における各処理に対応するプログラムがメモリ5bに記憶され、各処理に対応するプログラムがプロセッサ5aによってメモリ5bから読み出されて実行されてもよい。
[3]上記実施例では、FECとしてターボ符号が用いられる場合について説明した。しかし、FECとしてLDPC(Low Density Parity Check)符号を用いる場合にも、開示の技術を適用可能である。
[4]上記実施例では、誤り制御技術としてFECを用いる場合について説明した。しかし、誤り制御技術としてARQ(Automatic Repeat reQuest)を用いる場合にも、開示の技術を適用可能である。ARQでは、復号装置における誤り検出部は、復号ビット列に誤りがあるときは、符号化ビット列の再送要求を出力し、復号ビット列に誤りが無くなったときに、再送要求の出力を停止する。再送要求は、無線受信装置から無線送信装置へ送信される。無線送信装置は、再送要求に応じて、符号化ビット列を無線受信装置へ再送する。よって、ARQにおける復号装置は、復号ビット列に誤りが無くなるまで、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行う。このように、ARQにおける復号装置と、ターボ復号を行う復号装置とは、無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行う点で同一である。
1 無線受信装置
5 復号装置
6 復号部
7,7−1,7−2,7−3 誤り検出部
21,25,28 分割部
22−0〜22−X,26−0〜26−X 比較部
24−0〜24−X スイッチ
31−0〜31−X,34−0〜34−X,37−0〜37−X 剰余値取得部
35−0〜35−X 剰余演算部
38−0〜38−X 累積加算部
39−0 q0演算部
39−1 q1演算部
39−X qP−1演算部
51−0〜51−X,52−0〜52−X 部分剰余取得部
61,62,63 剰余値テーブル
41 加算部
43 誤り判定部
5 復号装置
6 復号部
7,7−1,7−2,7−3 誤り検出部
21,25,28 分割部
22−0〜22−X,26−0〜26−X 比較部
24−0〜24−X スイッチ
31−0〜31−X,34−0〜34−X,37−0〜37−X 剰余値取得部
35−0〜35−X 剰余演算部
38−0〜38−X 累積加算部
39−0 q0演算部
39−1 q1演算部
39−X qP−1演算部
51−0〜51−X,52−0〜52−X 部分剰余取得部
61,62,63 剰余値テーブル
41 加算部
43 誤り判定部
Claims (7)
- 無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行って、1ブロックの情報ビット列に対応する復号ビット列を繰り返し得る復号部と、
前記復号ビット列を複数のサブブロックに分割し、前記複数のサブブロックにそれぞれ対応する複数の部分剰余を取得し、前記複数の部分剰余を加算した合計剰余に基づいて前記復号ビット列における誤りの有無を判定する誤り検出部と、を具備し、
前記誤り検出部は、前記複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含む第一のサブブロックに対応する第一の部分剰余を取得する一方で、前記前回の復号ビット列と前記今回の復号ビット列との間ですべてのビットが同一値である第二のサブブロックに対応する第二の部分剰余を取得せず、取得した前記第一の部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、前記今回の復号ビット列における誤りの有無を判定する、
復号装置。 - 前記復号部は、前記復号ビット列に誤りが無くなったときに、前記復号を停止する、
請求項1に記載の復号装置。 - 前記誤り検出部は、前記復号ビット列に誤りがあるときは、前記符号化ビット列の再送要求を出力し、前記復号ビット列に誤りが無くなったときに、前記再送要求の出力を停止する、
請求項1に記載の復号装置。 - 多項式表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式を誤り検出符号生成用の生成多項式で除算したときのそれぞれの剰余値を記憶するテーブル、をさらに具備し、
前記誤り検出部は、前記第一のサブブロックに含まれるビットのうち前記前回の復号ビット列と前記今回の復号ビット列との間で値が異なるビットの正規のビット位置に対応する前記剰余値を前記第一の部分剰余として前記テーブルから取得する、
請求項1に記載の復号装置。 - 前記複数のサブブロックの各サブブロックに対応する剰余値の初期値を記憶するテーブル、をさらに具備し、
前記誤り検出部は、前記初期値を用いて前記第一のサブブロックを前記生成多項式に基づいて除算したときの剰余値を前記第一の部分剰余として取得する、
請求項1に記載の復号装置。 - 多項式表現されるビット列におけるそれぞれのビット位置に応じたそれぞれの単項式を誤り検出符号生成用の生成多項式で除算したときのそれぞれの剰余値のうち、所定のビット間隔Pの各ビット位置p×P(pは0以上の整数)に対応する第一の剰余値を記憶するテーブル、をさらに具備し、
前記誤り検出部は、前記第一のサブブロックに含まれるビットのうち前記前回の復号ビット列と前記今回の復号ビット列との間で値が異なるビットの正規のビット位置p×P+q(qは0以上かつP未満の整数)におけるp×Pに対応する前記第一の剰余値を前記テーブルから取得し、取得した前記第一の剰余値を累積加算して累積加算結果を求めた後に、前記累積加算結果をqビットだけシフトしたシフト結果を前記生成多項式に基づいて除算したときの第二の剰余値を前記第一の部分剰余として取得する、
請求項1に記載の復号装置。 - 無線送信装置が送信する同一の符号化ビット列に対する復号を繰り返し行って、1ブロックの情報ビット列に対応する復号ビット列を繰り返し得る復号部と、
前記復号ビット列を複数のサブブロックに分割し、前記複数のサブブロックにそれぞれ対応する複数の部分剰余を取得し、前記複数の部分剰余を加算した合計剰余に基づいて前記復号ビット列における誤りの有無を判定する誤り検出部と、
を具備する復号装置における誤り検出方法であって、
前記複数のサブブロックのうち、前回の復号ビット列と今回の復号ビット列との間で値が異なるビットを含む第一のサブブロックに対応する第一の部分剰余を取得する一方で、前記前回の復号ビット列と前記今回の復号ビット列との間ですべてのビットが同一値である第二のサブブロックに対応する第二の部分剰余を取得せず、
取得した前記第一の部分剰余を前回の合計剰余に加算した今回の合計剰余に基づいて、前記今回の復号ビット列における誤りの有無を判定する、
誤り検出方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014174476A JP2016051924A (ja) | 2014-08-28 | 2014-08-28 | 復号装置及び誤り検出方法 |
US14/742,973 US9524206B2 (en) | 2014-08-28 | 2015-06-18 | Decoding device and error detection method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014174476A JP2016051924A (ja) | 2014-08-28 | 2014-08-28 | 復号装置及び誤り検出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016051924A true JP2016051924A (ja) | 2016-04-11 |
Family
ID=55402604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014174476A Withdrawn JP2016051924A (ja) | 2014-08-28 | 2014-08-28 | 復号装置及び誤り検出方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9524206B2 (ja) |
JP (1) | JP2016051924A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10425307B2 (en) * | 2015-01-26 | 2019-09-24 | Sun Patent Trust | Communication system, transmitting device and receiving device |
US9686742B1 (en) * | 2015-09-10 | 2017-06-20 | Mbit Wireless, Inc. | Method and apparatus to reduce power consumption in standby mode for wireless communication systems |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002100995A (ja) | 2000-09-22 | 2002-04-05 | Sony Corp | 復号装置及び方法、並びにデータ受信装置及び方法 |
TWI350066B (en) | 2003-04-17 | 2011-10-01 | Icera Inc | Apparatus and method for turbo decoder termination |
JP2005006188A (ja) | 2003-06-13 | 2005-01-06 | Mitsubishi Electric Corp | Crc演算方法およびcrc演算装置 |
JP3785161B2 (ja) | 2003-06-13 | 2006-06-14 | 株式会社東芝 | 通信装置及び通信装置の誤り検出訂正方法 |
US8024664B1 (en) * | 2006-05-24 | 2011-09-20 | Ezrez Software Inc. | Co-brands for user interface in travel booking |
WO2008023684A1 (fr) | 2006-08-22 | 2008-02-28 | Panasonic Corporation | Unité d'opération arithmétique de résidus en parallèle et procédé d'opération arithmétique de résidus en parallèle |
CN101765976B (zh) | 2007-08-07 | 2014-03-12 | 富士通株式会社 | 错误检测装置和错误校正/错误检测解码装置和方法 |
JP4814969B2 (ja) | 2009-03-23 | 2011-11-16 | 富士通株式会社 | 準固定回路 |
-
2014
- 2014-08-28 JP JP2014174476A patent/JP2016051924A/ja not_active Withdrawn
-
2015
- 2015-06-18 US US14/742,973 patent/US9524206B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20160062822A1 (en) | 2016-03-03 |
US9524206B2 (en) | 2016-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3610329B2 (ja) | 大最小距離を用いたターボ符号化方法及びそれを実現するシステム | |
CN101087180B (zh) | 无线信道的译码方法、装置及其应用 | |
CN104025459B (zh) | 译码处理方法及译码器 | |
EP1838000A2 (en) | Apparatus and method for transmitting/receiving data in a communication system | |
EP1931034A2 (en) | Error correction method and apparatus for predetermined error patterns | |
CN110999095B (zh) | 用于极化码的按块并行冻结位生成 | |
EP2392074A1 (en) | Encoding and decoding methods for expurgated convolutional codes and convolutional turbo codes | |
CN108199723B (zh) | 一种基于双递归的分组马尔可夫叠加编码方法 | |
KR101298745B1 (ko) | 데이터를 복호화 및 부호화하는 방법 및 장치 | |
US20090067554A1 (en) | High throughput and low latency map decoder | |
CN110730011B (zh) | 一种基于部分叠加的递归分组马尔可夫叠加编码方法 | |
JP2016051924A (ja) | 復号装置及び誤り検出方法 | |
CN106506011A (zh) | 电力线工频通信编码纠错方法 | |
CN101409565B (zh) | 一种译码方法、装置和编译码系统 | |
WO2009146517A1 (en) | Method of encoding and/or decoding multidimensional and a system comprising such method | |
Potey et al. | Error Detection and Correction Capability for BCH Encoder using VHDL | |
Heloir et al. | Stochastic chase decoder for reed-solomon codes | |
TWI487291B (zh) | 循環碼解碼器及其方法 | |
JP4202161B2 (ja) | 符号化装置および復号装置 | |
JP5523064B2 (ja) | 復号装置及び方法 | |
CN116783827A (zh) | 阶梯极化码编码装置与阶梯极化码解码装置 | |
JP2002353821A (ja) | 誤り訂正復号方法および復号装置 | |
WO2020144215A1 (en) | Interleaver | |
Adde et al. | Design and implementation of a soft-decision decoder for cortex codes | |
James et al. | Multiple error correction using non-binary Redundant Residue Number System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170511 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20171225 |