【文献】
大槻 哲央 他,並列復号に適したプロトグラフ叉状結合型空間結合符号,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2013年,Vol.113 No.228,p.25-30
【文献】
竹内 啓悟 他,空間結合に基づく反復マルチユーザ復号の性能改善,第36回情報理論とその応用シンポジウム予稿集 [CD−ROM] 第36回情報理論とその応用シンポジウム予稿集,2013年,p.122-127
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、実施の形態について、図面を参照して説明する。
図1は、本実施形態に係る復号装置10の機能構成の例を示すブロック図である。
図1に示される復号装置10は、誤り訂正復号が必要とされる種々の機器に組み込まれてよい。具体的には、復号装置10は、例えば受信機、送受信機、及び中継機等の通信系に組み込まれてもよいし、例えば記憶装置等の記録再生系に組み込まれてもよい。
図1に示される復号装置10は、復調器11、及び復号器12を具備する。
【0012】
復号装置10が組み込まれる、例えば、受信機は、
図2に示される符号化装置20が組み込まれる、例えば、送信機から送信される送信信号を受信する。
【0013】
図2に示される符号化装置20は、符号化器21、及び変調器22を具備する。符号化器21は、送信対象となる情報ビットを入力する。符号化器21は、入力される情報ビットに対し、空間結合LDPC符号による符号化処理を施す。符号化器21は、情報ビットに、パリティビットを付与したデータを変調器22へ出力する。
変調器22は、符号化器21から出力されるデータをQAM(Quadrature Amplitude Modulation)コンスタレーションにマッピングし、複素信号として出力する。複素信号は、例えば、周波数変換処理、及び増幅処理等を経て、送信機に設けられるアンテナから送信される。
【0014】
図1に示される復号装置10に設けられる復調器11は、例えば、CPU(Central Processing Unit)、CPUが処理を実行する際に用いるメモリ、及び、CPUからの制御に従って所定の処理を実行するFPGA(Field Programmable Gate Array)等を備える。
【0015】
復調器11は、受信信号が、例えば、周波数変換処理、及び直交復調処理等されたビット列を入力する。復調器11は、送信側において施された変調方式に対応する復調方式に従って入力されるビット列を復調し、復調データを取得する。本実施形態において、復調データは、入力されるビット列を構成するビット毎のLLR(log likelihood ratio)である。LLRは、ビットが0である可能性と、1である可能性とを数値化した信頼度情報である。LLRは、正に大きいほど0である可能性が高く、負に大きいほど1である可能性が高いことを表す。また、LLR=0は、ビットが0である可能性と1である可能性とが五分五分であることを意味する。復調器11は、算出したLLRを復号器12へ出力する。
【0016】
復号器12は、BP(Belief Propagation)法を利用した復号処理を実行する。すなわち、復号器12は、復調器11から出力されるLLRを初期信頼度情報とし、パリティ検査行列に従ってLLRを更新していくことで、尤もらしい符号語を推定する。復号器12は、推定した符号語の情報ビット部を復号結果として出力する。
【0017】
復号器12は、例えば、CPU、CPUが処理を実行する際に用いるメモリ、及び、CPUからの制御に従って所定の処理を実行するFPGA等を備える。復号器12は、CPUがFPGAに所定の処理を実行させることで、
図3に示されるブロック復号部121−1〜121−n、パリティチェック部122、出力部123、及び制御部124の機能を実現する。nは並列して動作するブロック復号部の数を表し、復号器12に搭載可能な回路規模、及び復号器12に要求される処理速度に応じ、予め設定される。なお、復号器12の各機能は、独立したFPGAにより実現されてもよいし、複数のFPGAにより実現されても構わない。また、復号器12は、FPGAの代わりにLSI(Large-Scale Integration)等の半導体チップにより機能を実現しても構わない。また、復号器12は、ソフトウェアにより所定の復号プログラムを実行することで機能を実現しても構わない。
【0018】
復号器12の機能を説明する前に、本実施形態に係るパリティ検査行列について説明する。
図4は、本実施形態に係る空間結合LDPC符号のパリティ検査行列H
Cの例を示す模式図である。
図4に示されるパリティ検査行列H
Cは、LDGM(Low-Density Generator Matrix)構造を有し、情報ビット部H
Iとパリティビット部H
Pとで構成される。
【0019】
情報ビット部H
Iは、符号長a、パリティ長mの素行列(以下、基本素行列という。)H
Bに基づいて生成される。ここで、k=a−mとする。情報ビット部H
Iは、N種類(N:2以上の自然数)のm行k列の素行列を列方向に結合させたN・m行k列の素行列L個をm行k列ずつずらして結合させた、(L+N−1)m行、L・k列の行列である。N種類の素行列は、m行k列の基本素行列H
Bの各要素をN個のいずれかの行列に振り分けることにより生成される。なお、
図4では、N=2の場合を示しており、2種類の素行列をH
U,H
Lと表す。基本素行列H
Bは、m行M列の行列毎に周期的構造を有し、各m行M列の行列では1列目に1が疎に配置され、2列目以降は1列目の1をq行分サイクリックにシフトさせた位置に1が配置される。Mはm/qとする。
【0020】
パリティビット部H
Pは、2重対角行列である。2重対角行列とは、対角の要素とこの対角の真下の要素とを1とし、残り全ての要素を0とする行列である。パリティビット部H
Pのサイズは、(L+N−1)m行、(L+N−1)m列である。なお、
図4では、N=2の場合を示している。
【0021】
図3に示されるブロック復号部121−1〜121−nは、予め設定される大きさのブロックに包含される局所的なパリティ検査行列を用いてLLRを更新する処理を並列して実行する。ブロックは、パリティ検査行列における少なくとも1つの素行列を包含し、かつ、並列処理した後に更新されるLLRの場所が重複しないように設定される。なお、本実施形態に係るブロックは、従来のスライディングウィンドウ法で用いられる窓と同様の概念に基づくが、スライディングウィンドウ法で用いられる窓との差異を明確にするため、ブロックと称する。
【0022】
図5は、空間結合LDPC符号のパリティ検査行列に設定されるブロックの例を表す模式図である。
図5では、パリティ検査行列に2種類の素行列が存在する場合を例に示す。
図5において太枠は、BP法を利用した復号処理を実行するブロックを表す。ブロック<1>が素行列H
U_0を包含し、ブロック<2>が素行列H
L_0,H
U_1を包含し、ブロック<3>が素行列H
L_1,H
U_2を包含し、…、ブロック<L>が素行列H
L_L−2,H
U_L−1を包含し、ブロック<L+1>が素行列H
L_L−1を包含するようにしている。
【0023】
図5において、ブロック復号部121−1〜121−nは、ブロック<1>,<2>,…,<L+1>のうち、更新されるLLRの場所が重複しないブロックに含まれる行列を用いた処理を、並列して実行する。具体的には、ブロック復号部121−1〜121−nは、例えば、奇数ブロックにより包含される行列を用いた処理を並列して実行し、その後、偶数ブロックにより包含される行列を用いた処理を並列して実行する。ブロック復号部121−1〜121−nが処理を実行することにより、ブロックの幅に該当するLLRが更新される。
【0024】
ブロック<1>〜ブロック<L+1>に包含される全ての行列を用いてLLRを更新する処理が実行されることを1グローバルイタレーションと称する。ブロック復号部121−1〜121−nは、1グローバルイタレーションが終了すると、次のグローバルイタレーションにおける処理を実行する。ブロック復号部121−1〜121−nは、パリティチェック部122の検査結果に応じて処理を停止する。
【0025】
パリティチェック部122は、1グローバルイタレーションが終了すると、ブロック復号部121−1〜121−nにより更新されたLLRが、パリティ検査行列の行毎に定義されるパリティチェック式を満たすか否かを検査する。パリティチェック部122は、検査結果を制御部124へ通知する。
【0026】
出力部123は、パリティチェック部122においてパリティチェック式を満たすと判定されたLLRを硬判定する。出力部123は、硬判定の結果得られる0・1のビットを復号結果として出力する。
【0027】
制御部124は、復号器12の動作を制御する。例えば、パリティチェック部122から、LLRがパリティ検査行列の行毎に定義されるパリティチェック式を満たす旨の検査結果を通知された場合、制御部124は、ブロック復号部121−1〜121−nにLLRの更新処理を停止させる。また、パリティチェック部122から、LLRがパリティ検査行列の行毎に定義されるパリティチェック式を満たす旨の検査結果を通知された場合、制御部124は、出力部123にLLRの硬判定を開始させる。
【0028】
次に、上記のように構成される復号器12の動作を説明する。
図6は、ブロック復号部121−1〜121−nが処理を実行する際の動作を説明するフローチャートである。
図7は、パリティチェック部122、及び出力部123が復号結果を出力する際の動作を説明するフローチャートである。また、
図8は、復号器12が復号結果を出力する際の動作を説明するタイムチャートである。
図6乃至
図8の説明において、ブロックは、
図5に示されるように設定されるものとする。なお、
図5では、Lが奇数である場合を例に示している。つまり、n=(L+1)/2である。また、
図6乃至
図8の説明において、ブロック復号部121−1〜121−nは、奇数ブロックにより包含される行列を用いた処理を並列して実行した後、偶数ブロックにより包含される行列を用いた処理を並列して実行するものとする。
【0029】
まず、
図6において、ブロック復号部121−1,121−2,…,121−((L+1)/2)は、ブロック<1>により包含される行列を用いた処理、ブロック<3>により包含される行列を用いた処理、…、及びブロック<L>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS61)。これにより、
図8の1グローバルイタレーションにおける奇数ブロックの処理が実行され、ブロック<1>,<3>,…,<L>の幅に該当するLLRが更新される。
【0030】
続いて、ブロック復号部121−1,121−2,…,121−((L+1)/2)は、ブロック<2>により包含される行列を用いた処理、ブロック<4>により包含される行列を用いた処理、…、及びブロック<L+1>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS62)。これにより、
図8の1グローバルイタレーションにおける偶数ブロックの処理が実行され、ブロック<2>,<4>,…,<L+1>の幅に該当するLLRが更新される。
【0031】
ブロック復号部121−1〜121−nは、1グローバルイタレーションが終了すると、次のグローバルイタレーションにおける処理を実施する。ブロック復号部121−1〜121−nは、制御部124からの停止指示が与えられると、処理を停止する。
【0032】
なお、
図5では、Lが奇数である場合を説明しているが、Lは偶数であってもよい。Lが偶数である場合、n=L/2+1である。まず、ブロック復号部121−1,121−2,…,121−(L/2+1)は、ブロック<1>により包含される行列を用いた処理、ブロック<3>により包含される行列を用いた処理、…、及びブロック<L+1>により包含される行列を用いた処理をそれぞれ並列して実行する。これにより、ブロック<1>,<3>,…,<L+1>の幅に該当するLLRが更新される。その後に、ブロック復号部121−1,121−2,…,121−(L/2)は、ブロック<2>により包含される行列を用いた処理、ブロック<4>により包含される行列を用いた処理、…、及びブロック<L>により包含される行列を用いた処理をそれぞれ並列して実行する。これにより、ブロック<2>,<4>,…,<L>の幅に該当するLLRが更新される。
【0033】
図7において、パリティチェック部122は、1グローバルイタレーションが終了した際のLLRを取得する(ステップS71)。パリティチェック部122は、取得したLLRがパリティ検査行列の行毎に定義されるパリティチェック式を満たすか否かを検査する(ステップS72)。満たす場合(ステップS72のYes)、制御部124は、ブロック復号部121−1〜121−nへ停止指示を与える。また、制御部124は、出力部123にLLRの硬判定を開始させる(ステップS73)。満たさない場合(ステップS72のNo)、制御部124は、処理をステップS71へ移行する。
【0034】
出力部123は、制御部124からの指示に応じてLLRの硬判定を開始し、硬判定の結果得られる0・1のビットを復号結果として出力する(ステップS74)。
【0035】
以上のように、本実施形態では、ブロックが、パリティ検査行列における少なくとも1つの素行列を包含し、かつ、並列処理した際に更新されるLLRの場所が重複しないように設定される。そして、ブロック復号部121−1〜121−nは、設定されたブロックに包含されるパリティ検査行列を用い、並列してLLRを更新するようにしている。
【0036】
ところで、従来のスライディングウィンドウ法では、
図9で示されるように、窓は、パリティ検査行列における複数の素行列を包含し、かつ、窓同士が重複するように設定される。そして、まず、窓<1>内のパリティ検査行列で、窓<1>の幅に該当するLLRがBP法によって更新される。その後、窓<2>内のパリティ検査行列で、窓<2>の幅に該当するLLRが更新される。ここで、窓<1>と窓<2>とは一部が重なっているため、更新されるLLRが重複する。そのため、窓<2>により包含される行列を用いた更新処理は、窓<1>により包含される行列を用いた更新処理が終了するのを待って開始する必要がある。そのため、パリティ検査行列における結合数がLである場合、復号処理は、
図10に示されるように、スライディングウィンドウをL回繰り返すシーケンシャルな処理となる。このため、1グローバルイタレーションが完了するまでに長い時間を要することとなる。また、パリティ検査行列における結合数に比例して処理時間が増大する。また、処理時間の長さは復号反復回数の制限につながり、BER(Bit Error Rate)特性にも影響を及ぼすこととなる。
【0037】
本実施形態によれば、所定のブロック内において同時動作でLLRを更新することが可能であるため、1グローバルイタレーションにかかる時間を短縮することが可能となる。また、1グローバルイタレーションが完了するまでにかかる時間が短縮されるため、復号精度を向上させるためにグローバルイタレーションを複数回繰り返しても処理時間の増大を抑えられる。
【0038】
したがって、本実施形態に係る復号装置10によれば、空間結合LDPC符号により符号化されたデータを高速、かつ高精度に復号することができる。また、1グローバルイタレーションにかかる処理時間が、空間結合LDPC符号のパリティ検査行列における結合数に関わらず一定となる。
【0039】
(変形例1)
上記実施形態では、ブロック復号部121−1〜121−nが、所定のブロックに含まれる行列を用い、間欠無くLLRを更新する場合を例に説明した。しかしながら、これに限定されない。復号処理の程度によっては、ブロック復号部121−1〜121−nのいずれかが、処理を実行しないようにしても構わない。
【0040】
空間結合LDPC符号のパリティ検査行列は両上下端の行重みが小さいため、両端の列のビットの復号結果の信頼度は中央の列に比べて高い。
図11は、本実施形態に係る復号器12により更新されるLLRの計算結果を表す図である。
図11では、C/N(Carrier to Noise)=0.7dBであり、15グローバルイタレーション経過した際に算出されるLLRが示される。
図11に示されるように、両端のLLRは、中央のLLRよりも大きい。また、空間結合LDPC符号に基づく復号処理は、両端のLLR(すなわち信頼度)が先に大きくなり、その良質な信頼度が中央に伝搬していくことで、中央も次第に信頼度が高くなっていくという特徴がある。このため、復号処理の初期においては、中央に位置するブロックの処理がLLRに与える効果は薄い。つまり、復号処理の初期においては、中央に位置するブロックの処理をスキップしても性能劣化は僅かである。そこで、ブロック復号部121−1〜121−nのうち、中央に位置するブロックに包含される行列を用いてLLRを更新するブロック復号部は、所定の条件を満たした後から、処理を実行するようにしてもよい。
【0041】
具体的には、例えば、ブロック復号部121−1〜121−nに、ブロック毎のパリティチェックを実施する機能を持たせる。ブロック毎のパリティチェックとは、ブロックに含まれる行列を用いて更新したLLRが、パリティ検査行列のうち、ブロックに含まれる行列により定義されるパリティチェック式を満たすか否かを検査する処理である。復号処理の初期において、ブロック復号部121−1〜121−nのうち、中央N
i個のブロック復号部の処理を停止させる。制御部124は、両端N
j個のブロック復号部から、ブロック毎のパリティチェックの結果を受信する。制御部124は、N
j個のブロック復号部によるブロック毎のパリティチェックがN
k回パスした場合、N
i個のブロック復号部の処理を開始する。
【0042】
また、ある程度グローバルイタレーションを繰り返した後は、両端のLLRは十分大きい。そこで、ブロック復号部121−1〜121−nのうち、両端に位置するブロックに包含される行列を用いてLLRを更新するブロック復号部は、所定の条件を満たした後から、処理を停止するようにしてもよい。
【0043】
具体的には、例えば、制御部124は、両端N
j個のブロック復号部から、ブロック毎のパリティチェックの結果を受信する。制御部124は、N
j個のブロック復号部によるブロック毎のパリティチェックがN
k回パスした場合、N
j個のブロック復号部の処理を停止する。なお、個数N
i,N
jは、例えば2個であり、回数N
kは、例えば3回、又は5回である。
【0044】
次に、上記の動作を、ブロック復号部121−1〜121−8が実施する場合を例に詳細に説明する。このとき、ブロック復号部121−1〜121−8は、
図5に示されように設定されるブロック<1>〜<16>に包含される行列を用いてLLRを更新するものとする。
図12は、ブロック復号部121−1〜121−8が処理を停止させながらLLRを更新する際の動作を説明するフローチャートである。また、
図13は、復号器12が、ブロック復号部121−1〜121−8のうちいずれかの処理を停止させながら復号結果を出力する際の動作を説明するタイムチャートである。
図12及び
図13の説明において、ブロック復号部121−4,121−5が中央2(N
i)個のブロック復号部であり、ブロック復号部121−1,121−8が両端2(N
j)個のブロック復号部であるとする。
【0045】
まず、
図12において、ブロック復号部121−1〜121−3,121−6〜121−8は、ブロック<1>により包含される行列を用いた処理、ブロック<3>により包含される行列を用いた処理、ブロック<5>により包含される行列を用いた処理、ブロック<11>により包含される行列を用いた処理、ブロック<13>により包含される行列を用いた処理、及びブロック<15>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS121)。このとき、ブロック復号部121−4,121−5により実行されるブロック<7>,<9>の処理がスキップされる。これにより、
図13の第1グローバルイタレーションにおける奇数ブロックの処理が実行される。
【0046】
続いて、ブロック復号部121−1〜121−3,121−6〜121−8は、ブロック<2>により包含される行列を用いた処理、ブロック<4>により包含される行列を用いた処理、ブロック<6>により包含される行列を用いた処理、ブロック<12>により包含される行列を用いた処理、ブロック<14>により包含される行列を用いた処理、及びブロック<16>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS122)。このとき、ブロック復号部121−4,121−5により実行されるブロック<8>,<10>の処理がスキップされる。これにより、
図13の第1グローバルイタレーションにおける偶数ブロックの処理が実行される。
【0047】
制御部124は、ブロック復号部121−1,121−8によるブロック毎のパリティチェックの結果を受信し、パリティチェックが3(N
k)回パスしたか否かを判断する(ステップS123)。パスした回数が2回以下である場合(ステップS123のNo)、制御部124は、ブロック復号部121−1〜121−3,121−6〜121−8にステップS121,ステップS122の処理を継続させる。パスした回数が3回となった場合(ステップS123のYes)、制御部124は、ブロック復号部121−4,121−5の処理を開始させる(ステップS124)。
【0048】
ブロック復号部121−1〜121−8は、ブロック<1>により包含される行列を用いた処理、ブロック<3>により包含される行列を用いた処理、ブロック<5>により包含される行列を用いた処理、ブロック<7>により包含される行列を用いた処理、ブロック<9>により包含される行列を用いた処理、ブロック<11>により包含される行列を用いた処理、ブロック<13>により包含される行列を用いた処理、及びブロック<15>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS125)。これにより、
図13の第N
oグローバルイタレーションにおける奇数ブロックの処理が実行される。
【0049】
続いて、ブロック復号部121−1〜121−8は、ブロック<2>により包含される行列を用いた処理、ブロック<4>により包含される行列を用いた処理、ブロック<6>により包含される行列を用いた処理、ブロック<8>により包含される行列を用いた処理、ブロック<10>により包含される行列を用いた処理、ブロック<12>により包含される行列を用いた処理、ブロック<14>により包含される行列を用いた処理、及びブロック<16>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS126)。これにより、
図13の第N
oグローバルイタレーションにおける偶数ブロックの処理が実行される。
【0050】
制御部124は、ブロック復号部121−1,121−8によるブロック毎のパリティチェックの結果を受信し、パリティチェックが5(N
k)回パスしたか否かを判断する(ステップS127)。パスした回数が4回以下である場合(ステップS127のNo)、制御部124は、ブロック復号部121−1〜121−8にステップS125,ステップS126の処理を継続させる。パスした回数が5回となった場合(ステップS127のYes)、制御部124は、ブロック復号部121−1,121−8の処理を停止させる(ステップS128)。
【0051】
ブロック復号部121−2〜121−7は、ブロック<3>により包含される行列を用いた処理、ブロック<5>により包含される行列を用いた処理、ブロック<7>により包含される行列を用いた処理、ブロック<9>により包含される行列を用いた処理、ブロック<11>により包含される行列を用いた処理、及びブロック<13>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS129)。このとき、ブロック復号部121−1,121−8により実行されるブロック<1>,<15>の処理がスキップされる。これにより、
図13の第N
pグローバルイタレーションにおける奇数ブロックの処理が実行される。
【0052】
続いて、ブロック復号部121−2〜121−7は、ブロック<4>により包含される行列を用いた処理、ブロック<6>により包含される行列を用いた処理、ブロック<8>により包含される行列を用いた処理、ブロック<10>により包含される行列を用いた処理、ブロック<12>により包含される行列を用いた処理、及びブロック<14>により包含される行列を用いた処理をそれぞれ並列して実行する(ステップS1210)。このとき、ブロック復号部121−1,121−8により実行されるブロック<2>,<16>の処理がスキップされる。これにより、
図13の第N
pグローバルイタレーションにおける偶数ブロックの処理が実行される。
【0053】
ブロック復号部121−2〜121−7は、制御部124からの停止指示が与えられるまで、ステップS129,ステップS1210の処理を繰り返す。
【0054】
以上のように、変形例1では、復号器12は、ブロック復号部による処理を選択的に停止させるようにしている。これにより、復号器12での消費電力を抑えることが可能となる。
【0055】
なお、
図12の説明では、制御部124が、ブロック復号部121−1,121−8によるブロック毎のパリティチェックが3回パスした場合に、ブロック復号部121−4,121−5の処理を開始させ、5回パスした場合に、ブロック復号部121−1,121−8の処理を停止させる場合を例に説明した。しかしながら、これに限定されない。制御部124は、ブロック復号部の処理を停止させるのではなく、ブロック復号部が処理するブロックを切り替えるようにしてもよい。
【0056】
例えば、
図12において、ステップS125〜ステップS127を実施しない場合、すなわち、ブロック復号部121−1,121−8によるブロック毎のパリティチェックが3回パスした場合に、ブロック復号部121−4,121−5の処理を開始させ、かつ、ブロック復号部121−1,121−8の処理を停止させる場合を想定する。このような場合、ブロック復号部121−4,121−5が処理するはずのブロックを、代わりにブロック復号部121−1,121−8が処理するようにする。こうすることで、ブロック復号部121−4,121−5は不要となり、回路規模を削減することが可能となる。
【0057】
また、変形例1では、ブロック毎のパリティチェックの結果を、処理をスキップする際の判断基準として利用する場合を例に説明した。しかしながら、これに限定されない。処理をスキップする際の判断基準には、他の指標を用いてもよい。例えば、この指標として、LLRの値の大きさを用いてもよい。
【0058】
(変形例2)
上記実施形態では、ブロック復号部121−1〜121−nが、奇数ブロックにより包含される行列を用いた処理を並列して実行し、その後、偶数ブロックにより包含される行列を用いた処理を並列して実行する、2つの時間単位での処理を例に説明した。しかしながら、ブロック復号部121−1〜121−nによる処理は、これに限定されない。ブロック復号部121−1〜121−nは、3以上の時間単位で、所定ブロックでの処理を実行してもよい。
【0059】
例として、ブロック復号部121−1〜121−4が、
図5に示されるように設定されるブロック<1>〜<12>に包含される行列を用いてLLRを更新する場合を説明する。
【0060】
まず、3つの時間単位でブロック<1>〜<12>での処理を実行する場合を説明する。ブロック復号部121−1〜121−4は、ブロック<1>,<4>,<7>,<10>により包含される行列を用いた処理をそれぞれ並列して実行する。その後、ブロック復号部121−1〜121−4は、ブロック<2>,<5>,<8>,<11>により包含される行列を用いた処理をそれぞれ並列して実行する。その後、ブロック復号部121−1〜121−4は、ブロック<3>,<6>,<9>,<12>により包含される行列を用いた処理をそれぞれ並列して実行する。
【0061】
次に、4つの時間単位でブロック<1>〜<12>での処理を実行する場合を説明する。ブロック復号部121−1〜121−3は、ブロック<1>,<5>,<9>により包含される行列を用いた処理をそれぞれ並列して実行する。その後、ブロック復号部121−1〜121−3は、ブロック<2>,<6>,<10>により包含される行列を用いた処理をそれぞれ並列して実行する。その後、ブロック復号部121−1〜121−3は、ブロック<3>,<7>,<11>により包含される行列を用いた処理をそれぞれ並列して実行する。その後、ブロック復号部121−1〜121−3は、ブロック<4>,<8>,<12>により包含される行列を用いた処理をそれぞれ並列して実行する。
【0062】
以上のように、3以上の時間単位で処理を実行する場合、1グローバルイタレーションにかかる時間は長くなるが、復号器12の回路規模を抑えることが可能となる。
【0063】
(変形例3)
上記実施形態では、パリティ検査行列に2種類の素行列が存在する場合を例に説明したが、パリティ検査行列に存在する素行列の種類は2種類に限定されない。例えば、パリティ検査行列に存在する素行列の種類は3種類以上であっても構わない。例として、パリティ検査行列に5種類の素行列が含まれる場合を示す。
【0064】
図14乃至
図17は、パリティ検査行列に5種類の素行列が含まれる場合に設定されるブロックを模式的に示す図である。
【0065】
図14においては、例えば、更新されるLLRの場所が重複しないブロック<1>,<6>,<11>,<16>についての処理が並列して実行され、ブロック<2>,<7>,<12>,<17>についての処理が並列して実行され、ブロック<3>,<8>,<13>,<18>についての処理が並列して実行され、ブロック<4>,<9>,<14>についての処理が並列して実行され、ブロック<5>,<10>,<15>についての処理が並列して実行される。
【0066】
図15においては、例えば、更新されるLLRの場所が重複しないブロック<1>,<5>,<9>,<13>についての処理が並列して実行され、ブロック<2>,<6>,<10>,<14>についての処理が並列して実行され、ブロック<3>,<7>,<11>についての処理が並列して実行され、ブロック<4>,<8>,<12>についての処理が並列して実行される。
【0067】
図16においては、例えば、更新されるLLRの場所が重複しないブロック<1>,<4>,<7>,<10>についての処理が並列して実行され、ブロック<2>,<5>,<8>についての処理が並列して実行され、ブロック<3>,<6>,<9>についての処理が並列して実行される。
【0068】
図17においては、例えば、更新されるLLRの場所が重複しないブロック<1>,<3>,<5>についての処理が並列して実行され、ブロック<2>,<4>についての処理が並列して実行される。
【0069】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。