以下、本発明に係る実施の形態について図面を参照して説明する。
[第1の実施形態]
図1は、本発明の実施形態に従う復号装置を用いる通信システムの構成の一例を示す図である。図1において、通信システムは、送信側において、送信情報に誤り訂正用の冗長ビットを付加して送信符号を生成する符号化器1と、この符号化器1からの(K+M)(=N)ビットの符号を所定の方式に従って変調して通信路3へ出力する変調器2とを含む。
符号化器1は、Kビットの情報に対し、パリティ計算用の冗長ビットMビットを付加して、(K+M)ビットのLDPC符号(低密度パリティ検査符号)を生成する。(K+M)ビットのLDPC符号のどのビットに、K個の情報ビットおよびM個の冗長ビットを配置するかは、送信側と受信側で取り決めていれば、どのように配置してもよい。本発明の実施形態では、LDPC符号の先頭(MSB:Most Significant Bit)からM個のビットに冗長ビットを配置し、その次のK個のビットに情報ビットを配置するように、送信側と受信側で決められているものとする。
パリティ検査行列においては、行が冗長ビットに対応し、列が符号ビットに対応する。
変調器2は、この通信路3の構成に応じて、振幅変調、位相変調、コード変調、周波数変調または直行周波数分割多重変調などの変調を行なう。たとえば、通信路3が、光ファイバの場合、変調器2においては、レーザダイオードの輝度を送信情報ビット値に応じて変更させることにより、光の強度変調(一種の振幅変調)を行なっている。たとえば、送信データビットが“0”の場合には、このレーザダイオードの発光強度を強くして“+1”として送信し、また送信データビットが“1”の場合、レーザダイオードの発光強度を弱くして、“−1”に変換して送信する。
受信部においては、通信路3を介して送信された変調信号に復調処理を施して、(K+M)ビットのデジタル符号を復調する復調器4と、この復調器4からの(K+M)ビットの符号にパリティ検査行列演算処理を施して元のKビットの情報を再生する復号化器5が設けられる。
復調器4は、この通信路3における送信形態に応じて復調処理を行なう。たとえば、振幅変調、位相変調、コード変調、周波数変調および直行周波数分割多重変調等の場合、復調器4において、振幅復調、位相復調、コード復調、および周波数復調等の処理が行なわれる。
図2は、通信路3が光ファイバの場合の変調器2および復調器4の出力データの対応関係を一覧にして示す図である。図2において、上述のように、通信路3が光ファイバの場合、変調器2においては、送信データが“0”のときには、送信用のレーザダイオード(発光ダイオード)の発光強度を強くし、“1”を出力し、また送信データビットが“1”のときには、この発光強度を弱くしてビット“−1”を送信する。
この通信路3における伝送損失等により、復調器4に伝達される光強度は、最も強い強度から最も弱い強度までの間のアナログ的な強度分布を有する。復調器4においては、この入力された光信号を量子化処理(アナログ/デジタル変換)を行なって、この受光レベルを検出する。図2においては、8段階に受光レベルが量子化された場合の受信信号強度を示す。すなわち、受光レベルがデータ“7”のときには、発光強度がかなり強く、受光レベルが“0”のときには、光強度がかなり弱い状態である。各受光レベルは、符号付きデータに対応づけられ、復調器4から出力される。この復調器4の出力は、受光レベルが“7”のときにはデータ“3”が出力され、受光レベルが“0”のときには、データ“−4”が出力される。したがって、この復調器4からは、1ビットの受信信号に対し、多値量子化された信号が出力される。
復号化器5は、この復調器4から与えられた(K+M)ビットの受信情報(各ビットは、多値情報を含む)を入力し、後に詳細に説明する、min-sum復号法に従ってLDPCパリティ検査行列を適用して、元のKビットの情報を復元する。
なお、この図2においては、復調器4において、8レベルに量子化されたビットが生成されている。しかしながら、一般に、この復調器4においては、L値(L≧2)に量子化されたビットを用いて復号処理を行なうことができる。
また、図2においては、比較器を用いて、あるしきい値を使って受信信号のレベルを判定し、2値信号を生成してもよい。
図3は、本発明の実施形態に従う復号化器5の構成を概略的に示す図である。この図3においては、復調器4および通信路3も併せて示す。復調器4は、通信路3から与えられた信号を復調する復調回路4aと、この復調回路4aにより生成されたアナログ復調信号をデジタル信号に変換するアナログ/デジタル変換回路4bを含む。このアナログ/デジタル変換回路4bの出力データInが復号化器5へ与えられる。この復号化器5へ与えられるデータInは、L値(L≧2)のデータである。以下、データInは、多値量子化データであるため、シンボルと称す。復号化器5は、この入力シンボルIn系列に対してmin-sum復号法に従って復号処理を行なって復号ビットCnを生成する。
復号化器5は、復調器4からの復調シンボルInの対数尤度比λnを生成する対数尤度比算出部6と、対数尤度比λnおよびパリティ検査行列に基づいて繰返し演算によって外部値対数比αmnを算出する外部値対数比算出部7と、対数尤度比λnおよび外部値対数比αmnに基づいて復号語を生成する復号語生成部199とを含む。
対数尤度比算出部6は、この受信信号のノイズ情報と独立に、対数尤度比λnを生成する。通常、ノイズ情報を考慮した場合、この対数尤度比λnは、2×In/σ2で与えられる。ここで、σは、ノイズの分散を示す。この対数尤度比λnを用いてもよいが、本発明の実施形態の説明では、この対数尤度比算出部6は、バッファ回路または定数乗算回路で形成され、対数尤度比λnは、In×fで与えられることとする。ここで、fは非ゼロの正の数である。このノイズ情報を利用せずに、対数尤度比を算出することにより、回路構成が簡略化され、また計算処理も簡略化される。min-sum復号方法においては、パリティ検査行列の処理において、最小値を利用して演算を行なうため、信号処理において線形性が維持される。このため、ノイズ情報に従って出力データを正規化するなどの処理は不要である。
外部値対数比算出部7は、次式(1)および(2)に従って演算処理を行ない、パリティ検査行列の行の各要素についての処理(行処理)および列についての各要素についての処理(列処理)を繰返し実行する。
ここで、上式(1)および(2)それぞれにおいて、n′∈A(m)\nおよびm′∈B(n)\mは、自身を除く要素を意味する。外部値対数比αmnについては、n′≠nであり、事前値対数比βmnについては、m′≠mである。また、αおよびβの行列内の位置を示す添え字“mn”は、通常は下付文字で示されるが、本明細書においては、読みやすさのために、「横並びの文字」で示す。
また、関数sign(x)は、次式(3)で定義される。
ここで、関数minは、最小値を求める演算を示す。
また、集合A(m)およびB(n)は、式(4)および(5)に示すように、2元M・N行列H=[Hmn]を復号対象のLDPC符号のパリティ検査行列とした場合、集合[1,N]={1,2,…,N}の部分集合である。
A(m)={n:Hmn=1} …(4)
B(n)={m:Hmn=1} …(5)
すなわち、部分集合A(m)は、パリティ検査行列Hの第m行目において1が立っている列インデックスの集合を意味し、部分集合B(n)は、パリティ検査行列Hの第n列目において1が立っている行インデックスの集合を示す。
具体的に、今、図4に示すパリティ検査行列Hを考える。この図4に示すパリティ検査行列Hにおいては、第1行の第1列から第3列に“1”が立ち、また第2行の第3列および第4列に“1”が立ち、また第3行の第4列から第6列に、“1”が立つ。したがって、この場合、部分集合A(m)は以下のようになる。
A(1)={1,2,3}、
A(2)={3,4}、
A(3)={4,5,6}。
同様、部分集合B(n)については、以下のようになる。
B(1)=B(2)={1}、
B(3)={1,2}、
B(4)={2,3}
B(5)=B(6)={3}
このパリティ検査行列Hにおいて、タナー(Tanner)グラフを用いた場合、列に対応する変数ノードと行に対応するチェックノードの接続関係が、この“1”により示される。これを、本明細書においては「“1”が立つ」と称している。すなわち、図5に示すように、変数ノード1,2,3は、チェックノードX(第1行)に接続され、変数ノード3,4が、チェックノードY(第2行)に接続される。変数ノード4,5,6が、チェックノードZ(第3行)に接続される。この変数ノードがパリティ検査行列Hの列に対応し、チェックノードX,YおよびZが、このパリティ検査行列Hの各行に対応する。従って、図4に示すパリティ検査行列は、情報ビットが3ビット、冗長ビットが3ビットの合計6ビットの符号に対して適用される。
このパリティ検査行列Hは、“1”の数は少なく、低密度のパリティ検査行列であり、これにより、計算量を低減できる。
この変数ノードとチェックノードの間で各条件確率P(Xi|Yi)を伝播させ、MAPアルゴリズムに従って、もっともらしい符号を各変数ノードについて決定する。ここで、条件付確率P(Xi|Yi)は、Yiの条件下でXiとなる確率を示す。
再び、図3を参照して、外部値対数比αmnおよび対数尤度比λnに基づいて復号語を生成する復号語生成部199は、一次推定語生成部180と、復号語決定部190とを含む。
図6は、一次推定語生成部180の構成を表わす図である。
図6を参照して、一次推定語生成部180は、Qn算出部140と、Cn算出部141とを含む。
Qn算出部140は、対数尤度比算出部6からの対数尤度比λnと、外部値対数比算出部7からの外部値対数比αmnとに従って、次式(6)に従って、推定受信語(Q
1、Q
2、・・・、Q
N)を算出する。
Cn算出部141は、次式(7)に従って、一次推定語(C
1、C
2、・・・、C
N)を算出する。ここで、(C
1、C
2、・・・、C
N)の表記は、Nビットの一次推定語の第1ビット(LSB:Least Significant Bit)がC
1であり、第2ビットがC
2であり、第Nビット(MSB)がC
Nであることを表わす。
再び、図3を参照して、復号語決定部190は、一次推定語生成部180から一次推定語(C1、C2、・・・、CN)を受けて、次式(8)の演算に従って、一次推定語(C1、C2、・・・、CN)が符号語を構成しているかどうかを検査する。復号語決定部190は、次式(8)が成立する場合、つまりシンドロームが“0”となる場合には、外部値対数比算出部7の繰返し演算を終了させて、一次推定語(C1、C2、・・・、CN)のうちのKビットの情報ビット部分、すなわち、(C1、C2、・・・、CK)を復号語として復号化器5の外部に出力する。また、復号語決定部190は、ループの回数、つまり外部値対数比算出部7の演算の繰返し回数が所定値を超えたときにも、外部値対数比算出部7の繰返し演算を終了させて、一次推定語(C1、C2、・・・、CN)のうちのKビットの情報ビット部分、すなわち、(C1、C2、・・・、CK)を復号語として復号化器5の外部に出力する。
(C1,C2,…,CN)・Ht=0 (ただし、Htは、Hの転置を表わす)…(8)
さて、本発明の実施形態では、低密度であって、かつ2以上の列重みを有するパリティ検査行列Hを用いる。
図7は、列重みがXのパリティ検査行列の生成方法を説明するための図である。
図7を参照して、パリティ検査行列Hは、X個のブロック(H1、H2、・・・,HX)に分割される。行重みの数が6の場合に、まず、第1ブロック(H1)において、第1行目の第1列目〜第6列目に「1」が配置され、第2行目の第7列目〜第11列目に「1」が配置され、以下の行も同様の要領で配置される。そして、第1ブロック内の任意の列を乱数を用いて再配置し、これを適当な回数繰返すことによって、第1ブロック内の要素が決定される。
第2ブロック以降についても、上記を同じように乱数を用いて列の入れ替え処理を行なうことによって、ブロック内の要素が決定される。
(列重み3の外部値対数比算出部)
まず、従来から使用されている列重み3のパリティ検査行列を用いる外部値算出部について説明する。
図8は、列重みX(X≧3)のパリティ検査行列を用いる外部値対数比算出部7aの概略構成を表わす図である。
図8を参照して、外部値対数比算出部7aは、対数尤度比λnをシリアルデータからパラレルデータに変換するS/P変換部8と、パリティ検査行列の行処理を行なう行処理部9と、パリティ検査行列の列処理を行なう列処理部10とを含む。
S/P変換部8は、シリアルに入力される対数尤度比λnを受けて、パリティ検査行列の列数をNとしたときに、1単位がNビットのパラレルデータに変換して出力する。
行処理部9は、列処理部10から与えられる事前値対数比βmnと対数尤度比λnとを用いて、式(1)に従って、外部値対数比αmnを更新する。
列処理部10は、行処理部9から与えられる外部値対数比αmnを用いて、式(2)に従って、事前値対数比βmnを更新する。
図9は、列重みが3のパリティ検査行列を用いる外部値対数比算出部の行処理部9aおよび列処理部10aの詳細な構成を表わす図である。
図9を参照して、行処理部9aは、第1ブロック行処理部18と、第2ブロック行処理部19と、第3ブロック行処理部20と、第1ブロック行処理部18に対応して配置される第1の加算部(β+λ)15と、第2ブロック行処理部19に対応して配置される第2の加算部(β+λ)16と、第3ブロック行処理部20に対応して配置される第3の加算部(β+λ)17とを備える。
第1ブロック行処理部18は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部27と、第1行処理部28と、第2行処理部29とを含む。
第2ブロック行処理部19は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部30と、第3行処理部31と、第4行処理部32とを含む。
第3ブロック行処理部19は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部33と、第5行処理部34と、第6行処理部35とを含む。
列処理部10aは、パリティ検査行列Hの第1ブロックに対応するN列分の(β)の最新値を記憶する第1ブロック(β)記憶部24と、パリティ検査行列Hの第2ブロックに対応するN列分の(β)の最新値を記憶する第2ブロック(β)記憶部25と、パリティ検査行列Hの第3ブロックに対応するN列分の(β)の最新値を記憶する第3ブロック(β)記憶部26と、第1ブロック(β)記憶部24に対応して配置される第1の加算部(β)21と、第2ブロック(β)記憶部25に対応して配置される第2の加算部(β)22と、第3ブロック(β)記憶部26に対応して配置される第3の加算部(β)23とを備える。
第1の加算部(β+λ)15、第2の加算部(β+λ)16、第3の加算部(β+λ)17、第1の加算部(β)21、第2の加算部(β)22および第3の加算部(β)23は、それぞれN個の列に対応してN個の加算器を有し、各加算器は、対応する列についての加算を行なう。
(具体例)
図9の行処理部9aおよび列処理部10aについて具体例を用いて説明する。
図10は、列重みが3のパリティ検査行列の例を表わす図である。
図11(a)は、図10のパリティ検査行列が用いられるときに、第1ブロック(β)記憶部24に記憶されるデータを表わす図である。
図11(a)を参照して、たとえば、パリティ検査行列の第1ブロック内で第1列目で「1」が立つのは第1行目であるから、第1ブロック(β)記憶部24の第1列目にはβ1,1が記憶される。また、パリティ検査行列の第1ブロック内で第2列目で「1」が立つのは第2行目であるから、第1ブロック(β)記憶部24の第2列目には、β2,2が記憶される。
図11(b)は、図10のパリティ検査行列が用いられるときに、第2ブロック(β)記憶部25に記憶されるデータを表わす図である。
図11(b)を参照して、たとえば、パリティ検査行列の第2ブロック内で第1列目で「1」が立つのは第4行目であるから、第2ブロック(β)記憶部25の第1列目にはβ4,1が記憶される。また、パリティ検査行列の第2ブロック内で第2列目で「1」が立つのは第4行目であるから、第2ブロック(β)記憶部25の第2列目には、β4,2が記憶される。
図11(c)は、図10のパリティ検査行列が用いられるときに、第3ブロック(β)記憶部26に記憶されるデータを表わす図である。
図11(c)を参照して、たとえば、パリティ検査行列の第3ブロック内で第1列目で「1」が立つのは第6行目であるから、第3ブロック(β)記憶部26の第1列目にはβ6,1が記憶される。また、パリティ検査行列の第3ブロック内で第2列目で「1」が立つのは第5行目であるから、第3ブロック(β)記憶部26の第2列目には、β5,2が記憶される。
図12(a)は、図10のパリティ検査行列が用いられるときに、第1ブロック(β+λ)記憶部27に記憶されるデータを表わす図である。
図12(a)を参照して、たとえば、図10のパリティ検査行列の第1ブロック内で第1列目で「1」が立つのは第1行目であるから、第1ブロック(β+λ)記憶部27の第1列目にはβ1,1+λ1が記憶される。また、図10のパリティ検査行列の第1ブロック内で第2列目で「1」が立つのは第2行目であるから、第1ブロック(β+λ)記憶部27の第2列目には、β2,2+λ2が記憶される。
図12(b)は、図10のパリティ検査行列が用いられるときに、第2ブロック(β+λ)記憶部30に記憶されるデータを表わす図である。
図12(b)を参照して、たとえば、図10のパリティ検査行列の第2ブロック内で第1列目で「1」が立つのは第4行目であるから、第2ブロック(β+λ)記憶部30の第1列目にはβ4,1+λ1が記憶される。また、図10のパリティ検査行列の第2ブロック内で第2列目で「1」が立つのは第4行目であるから、第2ブロック(β+λ)記憶部30の第2列目には、β4,2+λ2が記憶される。
図12(c)は、図10のパリティ検査行列が用いられるときに、第3ブロック(β+λ)記憶部33に記憶されるデータを表わす図である。
図12(c)を参照して、たとえば、図10のパリティ検査行列の第3ブロック内で第1列目で「1」が立つのは第6行目であるから、第3ブロック(β+λ)記憶部33の第1列目にはβ6,1+λ1が記憶される。また、図10のパリティ検査行列の第3ブロック内で第2列目で「1」が立つのは第5行目であるから、第3ブロック(β+λ)記憶部33の第2列目には、β5,2+λ2が記憶される。
上述の第1ブロック(β)記憶部24、第2ブロック(β)記憶部25、第3ブロック(β)記憶部26、第1ブロック(β+λ)記憶部27、第2ブロック(β+λ)記憶部30、第3ブロック(β+λ)記憶部33内に記憶されるデータは、外部値対数比の繰返し計算によって最新のものが送られてくるごとに順次更新される。以下の実施形態でも同様である。
次に、図10のパリティ検査行列が用いられるときの行処理部9aおよび列処理部10aの具体的な動作を説明する。
まず、第1ブロック行処理部18、第2ブロック行処理部19および第3ブロック行処理部20の処理が並行して行なわれる。
第1行処理部28は、図10のパリティ検査行列の第1行目の第1列目、第3列目、第4列目、第5列目、第10列目および第12列目で「1」が立つので、第1ブロック(β+λ)記憶部27から要素β1,1+λ1、β1,3+λ3、β1,4+λ4、β1,5+λ5、β1,10+λ10、β1,12+λ12を読出す。
第1行処理部28は、第1列目についての外部値対数比を算出するために、読出した要素のうち、第1列目の要素を除いた集合{β1,3+λ3、β1,4+λ4、β1,5+λ5、β1,10+λ10、β1,12+λ12}を特定する。第1行処理部28は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第1行処理部28は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α1,1)を出力する。
第1行処理部28は、上記と同様にして、第3列目、第4列目、第5列目、第10列目および第12列目についての外部値対数比α1,3、α1,4、α1,5、α1,10、α1,12を出力する。
第2行処理部29は、図10のパリティ検査行列の第2行目の第2列目、第6列目、第7列目、第8列目、第9列目および第11列目で「1」が立つので、第1ブロック(β+λ)記憶部27から要素β2,2+λ2、β2,6+λ6、β2,7+λ7、β2,8+λ8、β2,9+λ9、β2,11+λ11を読出す。
第2行処理部29は、第2列目についての外部値対数比を算出するために、読出した要素のうち、第2列目の要素を除いた集合{β2,6+λ6、β2,7+λ7、β2,8+λ8、β2,9+λ9、β2,11+λ11}を特定する。第2行処理部29は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第2行処理部29は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α2,2)を出力する。
第2行処理部29は、上記と同様にして、第6列目、第7列目、第8列目、第9列目および第11列目についての外部値対数比α2,6、α2,7、α2,8、α2,9、α2,11を出力する。
第3行処理部31は、図10のパリティ検査行列の第3行目の第3列目、第5列目、第6列目、第7列目、第11列目および第12列目で「1」が立つので、第2ブロック(β+λ)記憶部30から要素β3,3+λ3、β3,5+λ5、β3,6+λ6、β3,7+λ7、β3,11+λ11、β3,12+λ12を読出す。
第3行処理部31は、第3列目についての外部値対数比を算出するために、読出した要素のうち、第3列目の要素を除いた集合{β3,5+λ5、β3,6+λ6、β3,7+λ7、β3,11+λ11、β3,12+λ12}を特定する。第3行処理部31は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第3行処理部31は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α3,3)を出力する。
第3行処理部31は、上記と同様にして、第5列目、第6列目、第7列目、第11列目および第12列目についての外部値対数比α3,5、α3,6、α3,7、α3,11、α3,12を出力する。
第4行処理部32は、図10のパリティ検査行列の第4行目の第1列目、第2列目、第4列目、第8列目、第9列目および第10列目で「1」が立つので、第2ブロック(β+λ)記憶部30から要素β4,1+λ1、β4,2+λ2、β4,4+λ4、β4,8+λ8、β4,9+λ9、β4,10+λ10を読出す。
第4行処理部32は、第1列目についての外部値対数比を算出するために、読出した要素のうち、第1列目の要素を除いた集合{β4,2+λ2、β4,4+λ4、β4,8+λ8、β4,9+λ9、β4,10+λ10}を特定する。第4行処理部32は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第4行処理部32は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α4,1)を出力する。
第4行処理部32は、上記と同様にして、第2列目、第4列目、第8列目、第9列目および第10列目についての外部値対数比α4,2、α4,4、α4,8、α4,9、α4,10を出力する。
第5行処理部34は、図10のパリティ検査行列の第5行目の第2列目、第3列目、第6列目、第8列目、第10列目および第12列目で「1」が立つので、第3ブロック(β+λ)記憶部33から要素β5,2+λ2、β5,3+λ3、β5,6+λ6、β5,8+λ8、β5,10+λ10、β5,12+λ12を読出す。
第5行処理部34は、第2列目についての外部値対数比を算出するために、読出した要素のうち、第2列目の要素を除いた集合{β5,3+λ3、β5,6+λ6、β5,8+λ8、β5,10+λ10、β5,12+λ12}を特定する。第5行処理部34は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第5行処理部34は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α5,2)を出力する。
第5行処理部34は、上記と同様にして、第3列目、第6列目、第8列目、第10列目および第12列目についての外部値対数比α5,3、α5,6、α5,8、α5,10、α5,12を出力する。
第6行処理部35は、図10のパリティ検査行列の第6行目の第1列目、第4列目、第5列目、第7列目、第9列目および第11列目で「1」が立つので、第3ブロック(β+λ)記憶部33から要素β6,1+λ1、β6,4+λ4、β6,5+λ5、β6,7+λ7、β6,9+λ9、β6,11+λ11を読出す。
第6行処理部35は、第1列目についての外部値対数比を算出するために、読出した要素のうち、第1列目の要素を除いた集合{β6,4+λ4、β6,5+λ5、β6,7+λ7、β6,9+λ9、β6,11+λ11}を特定する。第6行処理部35は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第6行処理部35は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α6,1)を出力する。
第6行処理部35は、上記と同様にして、第4列目、第5列目、第7列目、第9列目および第11列目についての外部値対数比α6,4、α6,5、α6,7、α6,9、α6,11を出力する。
次に、第1の加算部(β)21、第2の加算部(β)22および第3の加算部(β)23の処理が並行して行なわれる。
第1の加算部(β)21は、第1列目について、第2ブロック行処理部19からデータ(=α4,1)を受け、第3ブロック行処理部20からデータ(=α6,1)を受けて、それらを加算して加算結果(=α4,1+α6,1)を第1ブロック(β)記憶部24の第1列目の位置(β1,1の位置)に出力する。第1の加算部(β)21は、第2列目について、第2ブロック行処理部19からデータ(α4,2)を受け、第3ブロック行処理部20からデータ(α5,2)を受けて、それらを加算して、加算結果(α4,2+α5,2)を第1ブロック(β)記憶部24の第2列目の位置(β2,2の位置)に出力する。第1の加算部(β)21は、上記と同様して、第3列目〜第12列目についての処理を行なう。
第2の加算部(β)22は、第1列目について、第1ブロック行処理部18からデータ(=α1,1)を受け、第3ブロック行処理部20からデータ(=α6,1)を受けて、それらを加算して、加算結果(α1,1+α6,1)を第2ブロック(β)25記憶部の第1列目の位置(β4,1の位置)に出力する。第2の加算部(β)22は、第2列目について、第1ブロック行処理部18からデータ(=α2,2)を受け、第3ブロック行処理部20からデータ(=α5,2)を受けて、それらを加算して、加算結果(α2,2+α5,2)を第2ブロック(β)記憶部25の第2列目の位置(β4,2の位置)に出力する。第2の加算部(β)22は、上記と同様にして、第3列目〜第12列目についての処理を行なう。
第3の加算部(β)23は、第1列目について、第1ブロック行処理部18からデータ(=α1,1)を受け、第2ブロック行処理部19からデータ(=α4,1)を受けて、それらを加算して、加算結果(α1,1+α4,1)を第3ブロック(β)記憶部26の第1列目の位置(β6,1の位置)に出力する。第3の加算部(β)23は、第2列目について、第1ブロック行処理部18からデータ(=α2,2)を受け、第2ブロック行処理部19からデータ(=α4,2)を受けて、それらを加算して、加算結果(α2,2+α4,2)を第3ブロック(β)記憶部26の第2列目の位置(β5,2の位置)に出力する。第3の加算部(β)23は、上記と同様にして、第3列目〜第12列目についての処理を行なう。
次に、第1の加算部(β+λ)15、第2の加算部(β+λ)16および第3の加算部(β+λ)17の処理が並行して行なわれる。
第1の加算部(β+λ)15は、第1列目について、第1ブロック(β)記憶部24の第1列目のデータ(=β1,1)を受け、S/P変換部8から第1列目の対数尤度比λ1を受けて、それらを加算して、加算結果(=β1,1+λ1)を第1ブロック行処理部18の第1ブロック(β+λ)記憶部27の第1列目に出力する。第1の加算部(β+λ)15は、第2列目について、第1ブロック(β)記憶部24の第2列目のデータ(=β2,2)を受け、S/P変換部8から第2列目の対数尤度比λ2を受けて、それらを加算して、加算結果(=β2,2+λ2)を第1ブロック行処理部18の第1ブロック(β+λ)記憶部27の第2列目に出力する。第1の加算部(β)15は、上記と同様にして、第3列〜第12列目についての処理を行なう。
第2の加算部(β+λ)16は、第1列目について、第2ブロック(β)記憶部25の第1列目のデータ(=β4,1)を受け、S/P変換部8から第1列目の対数尤度比λ1を受けて、それらを加算して、加算結果(β4,1+λ1)を第2ブロック行処理部19の第2ブロック(β+λ)記憶部30の第1列目に出力する。第2の加算部(β+λ)16は、第2列目について、第2ブロック(β)記憶部25の第2列目のデータ(=β4,2)を受け、S/P変換部8から第2列目の対数尤度比λ2を受けて、それらを加算して、加算結果(β4,2+λ2)を第2ブロック行処理部19の第2ブロック(β+λ)記憶部30の第2列目に出力する。第2の加算部(β)16は、上記と同様にして、第3列目〜第12列目についての処理を行なう。
第3の加算部(β+λ)17は、第1列目について、第3ブロック(β)記憶部26の第1列目のデータ(=β6,1)を受け、S/P変換部8から第1列目の対数尤度比λ1を受けて、それらを加算して、加算結果(β6,1+λ1)を第3ブロック行処理部20の第3ブロック(β+λ)記憶部33の第1列目に出力する。第2の加算部(β+λ)17は、第2列目について、第3ブロック(β)記憶部26のデータ(=β5,2)を受け、S/P変換部8から第2列目の対数尤度比λ2を受けて、それらを加算して、加算結果(β5,2+λ2)を第3ブロック行処理部20の第3ブロック(β+λ)記憶部33の第2列目に出力する。第3の加算部(β)は、上記と同様にして、第3列目〜第12列目についての処理を行なう。
以下、上述の処理を繰返すことによって外部値対数比αmnが順次更新される。
(列重み3のパリティ検査行列を用いたときのハードウエア構成)
列重み3のパリティ検査行列を用いた場合に、パリティ検査行列の列数をNとすると、図9に示すように、加算器が2×3×N(個)、メモリが2×3×N×B(ビット)必要となる。ここで、Bは外部値対数比αmnおよび事前値対数比βmnのビット数である。通常、列数Nは数千にも達するため、加算器の数およびメモリの容量が非常に大きなものとなる。
(列重み2の外部値対数比算出部)
次に、本発明の実施形態の特徴的な構成である、列重み2のパリティ検査行列を用いる外部値算出部について説明する。
図13は、列重み2のパリティ検査行列を用いる外部値対数比算出部の概略構成を表わす図である。
図13を参照して、外部値対数比算出部算出部7bは、図8と同様の対数尤度比λnをシリアルデータからパラレルデータに変換するS/P変換部8と、パリティ検査行列の行処理を行なう行処理部11とを含む。
行処理部11は、事前値対数比βmnと対数尤度比λnとを用いて、式(1)に従って、外部値対数比αmnを更新する。
パリティ検査行列の列重みが2の場合には、式(2)は、式(2)’のようになる。
βmn=αm’n ・・・(2)’
ただし、パリティ検査行列の第n列目において、第m行と第m’行に「1」が立っているものとする。
このことは、第1ブロック内の第i行の第n列目で「1」が立っており、第2ブロック内の第j行の第n列目で「1」が立っているとしたときに、αinとβjnは等しく、αjnとβinは等しいことを表わしている。したがって、パリティ検査行列の列重みが2の場合には、式(2)のような加算処理(列処理)が不要となる。
図14は、列重みが2のパリティ検査行列を用いる外部値対数比算出部の行処理部11の詳細な構成を表わす図である。
図14を参照して、行処理部11は、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部43と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部44と、第1ブロック行処理部43に対応して設けられる第1ブロック(β)記憶部45と、第2ブロック行処理部44に対応して設けられる第2ブロック(β)記憶部46と、第1ブロック行処理部43に対応して設けられる第1の加算部(β+λ)41と、第2ブロック行処理部44に対応して設けられる第2の加算部(β+λ)42とを備える。
第1ブロック行処理部43は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部47と、第1行処理部248と、第2行処理部49と、第3行処理部50とを含む。
第2ブロック行処理部44は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部51と、第4行処理部52と、第5行処理部53と、第6行処理部54とを含む。
(具体例)
図14の行処理部11について具体例を用いて説明する。
図15は、列重みが2のパリティ検査行列の例を表わす図である。
図16(a)は、図15のパリティ検査行列が用いられるときに、第1ブロック(β)記憶部45に記憶されるデータを表わす図である。
図16(a)を参照して、たとえば、図15のパリティ検査行列の第1ブロック内で第1列目で「1」が立つのは第3行目であるから、第1ブロック(β)記憶部45の第1列目にはβ3,1が記憶される。また、図15のパリティ検査行列の第1ブロック内で第2列目で「1」が立つのは第2行目であるから、第1ブロック(β)記憶部45の第2列目には、β2,2が記憶される。
図16(b)は、図15のパリティ検査行列が用いられるときに、第2ブロック(β)記憶部46に記憶されるデータを表わす図である。
図16(b)を参照して、たとえば、図15のパリティ検査行列の第2ブロック内で第1列目で「1」が立つのは第5行目であるから、第2ブロック(β)記憶部46の第1列目にはβ5,1が記憶される。また、図15のパリティ検査行列の第2ブロック内で第2列目で「1」が立つのは第5行目であるから、第2ブロック(β)記憶部46の第2列目には、β5,2が記憶される。
図17(a)は、図15のパリティ検査行列が用いられるときに、第1ブロック(β+λ)記憶部47に記憶されるデータを表わす図である。
図17(a)を参照して、たとえば、図15のパリティ検査行列の第1ブロック内で第1列目で「1」が立つのは第3行目であるから、第1ブロック(β+λ)記憶部47の第1列目にはβ3,1+λ1が記憶される。また、図15のパリティ検査行列の第1ブロック内で第2列目で「1」が立つのは第2行目であるから、第1ブロック(β+λ)記憶部47の第2列目には、β2,2+λ2が記憶される。
図17(b)は、図15のパリティ検査行列が用いられるときに、第2ブロック(β+λ)記憶部51に記憶されるデータを表わす図である。
図17(b)を参照して、たとえば、図15のパリティ検査行列の第2ブロック内で第1列目で「1」が立つのは第5行目であるから、第2ブロック(β+λ)記憶部51の第1列目にはβ5,1+λ1が記憶される。また、パリティ検査行列の第2ブロック内で第2列目で「1」が立つのは第5行目であるから、第2ブロック(β+λ)記憶部51の第2列目には、β5,2+λ2が記憶される。
次に、図15のパリティ検査行列が用いられるときの図14の行処理部11の具体的な動作を説明する。
まず、第1ブロック行処理部43と第2ブロック行処理部44の処理が並行して行なわれる。
第1行処理部48は、図15のパリティ検査行列の第1行目の第6列目、第7列目、第8列目および第11列目で「1」が立つので、第1ブロック(β+λ)記憶部47から要素β1,6+λ6、β1,7+λ7、β1,8+λ8、β1,11+λ11を読出す。
第1行処理部48は、第6列目についての外部値対数比を算出するために、読出した要素のうち、第6列目の要素を除いた集合{β1,7+λ7、β1,8+λ8、β1,11+λ11}を特定する。第1行処理部48は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第1行処理部48は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α1,6)を第2ブロック(β)記憶部46の第6列目の位置(β4,6の位置)に出力する。
第1行処理部48は、上記と同様にして、第7列目、第8列目および第11列目についての外部値対数比α1,7、α1,8、α1,11を算出して、第2ブロック(β)記憶部46の第7列目の位置(β6,7の位置)、第8列目の位置(β5,8の位置)、第11列目の位置(β4,11の位置)に出力する。
第2行処理部49は、図15のパリティ検査行列の第2行目の第2列目、第3列目、第5列目および第10列目で「1」が立つので、第1ブロック(β+λ)記憶部47から要素β2,2+λ2、β2,3+λ3、β2,5+λ5、β2,10+λ10を読出す。
第2行処理部49は、第2列目についての外部値対数比を算出するために、読出した要素のうち、第2列目の要素を除いた集合{β2,3+λ3、β2,5+λ5、β2,10+λ10}を特定する。第2行処理部49は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第2行処理部49は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α2,2)を第2ブロック(β)記憶部46の第2列目の位置(β5,2の位置)に出力する。
第2行処理部49は、上記と同様にして、第3列目、第5列目および第10列目についての外部値対数比α2,3、α2,5、α2,10を算出して、第2ブロック(β)記憶部46の第3列目の位置(β4,3の位置)、第5列目の位置(β6,5の位置)、第10列目の位置(β6,10の位置)に出力する。
第3行処理部50は、図15のパリティ検査行列の第3行目の第1列目、第4列目、第9列目および第12列目で「1」が立つので、第1ブロック(β+λ)記憶部47から要素β3,1+λ1、β3,4+λ4、β3,9+λ9、β3,12+λ12を読出す。
第3行処理部50は、第1列目についての外部値対数比を算出するために、読出した要素のうち、第1列目の要素を除いた集合{β3,4+λ4、β3,9+λ9、β3,12+λ12}を特定する。第3行処理部50は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第3行処理部50は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α3,1)を第2ブロック(β)記憶部46の第1列目の位置(β5,1の位置)に出力する。
第3行処理部50は、上記と同様にして、第4列目、第9列目および第12列目についての外部値対数比α3,4、α3,9、α3,12を算出して、第2ブロック(β)記憶部46の第4列目の位置(β5,4の位置)、第9列目の位置(β4,9の位置)、第12列目の位置(β6,12の位置)に出力する。
第4行処理部52は、図15のパリティ検査行列の第4行目の第3列目、第6列目、第9列目および第11列目で「1」が立つので、第2ブロック(β+λ)記憶部51から要素β4,3+λ3、β4,6+λ6、β4,9+λ9、β4,11+λ11を読出す。
第4行処理部52は、第3列目についての外部値対数比を算出するために、読出した要素のうち、第3列目の要素を除いた集合{β4,6+λ6、β4,9+λ9、β4,11+λ11}を特定する。第4行処理部52は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第4行処理部52は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α4,3)を第1ブロック(β)記憶部45の第3列目の位置(β2,3の位置)に出力する。
第4行処理部52は、上記と同様にして、第6列目、第9列目および第11列目についての外部値対数比α4,6、α4,9、α4,11を算出して、第1ブロック(β)記憶部45の第6列目の位置(β1,6の位置)、第9列目の位置(β3,9の位置)、第12列目の位置(β3,12の位置)に出力する。
第5行処理部53は、図15のパリティ検査行列の第5行目の第1列目、第2列目、第4列目および第8列目で「1」が立つので、第2ブロック(β+λ)記憶部51から要素β5,1+λ1、β5,2+λ2、β5,4+λ4、β5,8+λ8を読出す。
第5行処理部53は、第1列目についての外部値対数比を算出するために、読出した要素のうち、第1列目の要素を除いた集合{β5,2+λ2、β5,4+λ4、β5,8+λ8}を特定する。第5行処理部53は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第5行処理部53は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α5,1)を第1ブロック(β)記憶部45の第1列目の位置(β3,1の位置)に出力する。
第5行処理部53は、上記と同様にして、第2列目、第4列目および第8列目についての外部値対数比α5,2、α5,4、α5,8を算出して、第1ブロック(β)記憶部45の第2列目の位置(β2,2の位置)、第4列目の位置(β3,4の位置)、第8列目の位置(β1,8の位置)に出力する。
第6行処理部54は、図15のパリティ検査行列の第6行目の第5列目、第7列目、第10列目および第12列目で「1」が立つので、第2ブロック(β+λ)記憶部51から要素β6,5+λ5、β6,7+λ7、β6,10+λ10、β6,12+λ12を読出す。
第6行処理部54は、第5列目についての外部値対数比を算出するために、読出した要素のうち、第5列目の要素を除いた集合{β6,7+λ7、β6,10+λ10、β6,12+λ12}を特定する。第6行処理部54は、この集合に含まれる要素の絶対値の最小値を特定するとともに、この集合に含まれる要素の符号の積を特定する。第6行処理部54は、特定した要素の絶対値の最小値に、特定した要素の積の符号を付けたデータ(=α6,5)を第1ブロック(β)記憶部45の第5列目の位置(β2,5の位置)に出力する。
第6行処理部54は、上記と同様にして、第7列目、第10列目および第12列目についての外部値対数比α6,7、α6,10、α6,12を算出して、第1ブロック(β)記憶部45の第7列目の位置(β1,7の位置)、第10列目の位置(β2,10の位置)、第12列目の位置(β3,12の位置)に出力する。
次に、第1の加算部(β+λ)41および第2の加算部(β+λ)42の処理が並行して行なわれる。
第1の加算部(β+λ)41は、第1列目について、第1ブロック(β)記憶部45の第1列目のデータ(=β3,1)を受け、S/P変換部8から第1列目の対数尤度比λ1を受けて、それらを加算して、加算結果(=β3,1+λ1)を第1ブロック行処理部43の第1ブロック(β+λ)記憶部47の第1列目に出力する。第1の加算部(β+λ)41は、第2列目について、第1ブロック(β)記憶部45の第2列目のデータ(=β2,2)を受け、S/P変換部8から第2列目の対数尤度比λ2を受けて、それらを加算して、加算結果(=β2,2+λ2)を第1ブロック行処理部43の第1ブロック(β+λ)記憶部47の第2列目に出力する。第1の加算部(β)41は、上記と同様にして第3列〜第12列目についての処理を行なう。
第2の加算部(β+λ)42は、第1列目について、第2ブロック(β)記憶部46の第1列目のデータ(=β5,1)を受け、S/P変換部8から第1列目の対数尤度比λ1を受けて、それらを加算して、加算結果(=β5,1+λ1)を第2ブロック行処理部44の第2ブロック(β+λ)記憶部51の第1列目に出力する。第2の加算部(β+λ)42は、第2列目について、第2ブロック(β)記憶部46の第2列目のデータ(=β5,2)を受け、S/P変換部8から第2列目の対数尤度比λ2を受けて、それらを加算して、加算結果(=β5,2+λ2)を第2ブロック行処理部44の第2ブロック(β+λ)記憶部51の第2列目に出力する。第2の加算部(β)42は、上記と同様にして第3列〜第12列目についての処理を行なう。
以下、上述の処理を繰返すことによって外部値対数比αmnが順次更新される。
(列重み2のパリティ検査行列を用いたときのハードウエア構成)
列重み2のパリティ検査行列を用いた場合に、パリティ検査行列の列数をNとすると、図14に示すように、加算器が2×N(個)、メモリが2×2×N×B(ビット)となる。ここで、Bは外部値対数比αmnおよび事前値対数比βmnのビット数である。列重み3のパリティ検査行列を用いる場合よりも、加算器の数およびメモリの容量を大幅に削減できる。
[第2の実施形態]
(行処理部の構成)
図18は、第2の実施形態における、列重みが2のパリティ検査行列を用いる外部値対数比算出部の行処理部11aの詳細な構成を表わす図である。
図18の行処理部11aが、図14の第1の実施形態の行処理部11と相違する点について説明する。
図14の行処理部11では、第1ブロック行処理部43は、算出した外部値対数比αmnを事前値対数比βm’nとして第2ブロック(β)記憶部46に出力し、第2ブロック(β)記憶部46から事前値対数比βmnが第2の加算部(β)42へ出力された。また、第2ブロック行処理部44は、算出した外部値対数比αmnを事前値対数比βm’nとして第1ブロック(β)記憶部45に出力し、第1ブロック(β)記憶部45から事前値対数比βmnが第1の加算部(β)41に出力された。
本発明の実施形態では、図18に示すように、第1ブロック行処理部43は、算出したN列分の外部値対数比αmnを事前値対数比βm’nとして第2ブロック(β)記憶部46を介さずに、直接、第2ブロック行処理部44に対応する第2の加算部(β)42へ出力する。また、第2ブロック行処理部44は、算出したN列分の外部値対数比αmnを事前値対数比βm’nとして第1ブロック(β)記憶部45を介さずに、直接、第1ブロック行処理部43に対応する第1の加算部(β)41へ出力する。
以上のように、第2の実施形態の外部値対数比算出部によれば、第1ブロック(β)記憶部45および第2ブロック(β)記憶部46が不要なので、第1の実施形態よりもメモリ容量を削減できる。具体的には、パリティ検査行列の列数をNとした場合に、第1の実施形態よりも2×N×B(ビット)だけメモリ容量を削減できる。ここで、Bはβmnのビット数である。
[第2の実施形態の変形例]
本変形例は、特許文献1に記載した行処理の方法を本発明の第2の実施形態に適用したものである。
(行処理部の構成)
図19は、第2の実施形態の行処理部11aの変形例である、行処理部11bの詳細な構成を表わす図である
図19を参照して、行処理部11bは、第1ブロック行処理部55および第2ブロック行処理56を備える。
第1ブロック行処理部55に入力されるデータおよび出力されるデータは図18の第1ブロック行処理部43と同じである。同様に、第2ブロック行処理部56に入力されるデータおよび出力されるデータは図18の第2ブロック行処理部44と同じである。
一方、第1ブロック行処理部55および第2ブロック行処理部56の内部の構成は、図18の第1ブロック行処理部43、第2ブロック行処理部44の内部の構成と相違する。第1ブロック行処理部55、第2ブロック行処理部56は、第1ブロック行処理部43、第2ブロック行処理部44よりも回路規模が小さく、かつ高速で実行できる。
第1ブロック行処理部55は、第1行処理部57、第2行処理部58、第3行処理部59、および符号・最小値記憶部60を含む。第2ブロック行処理部56は、第4行処理部61、第5行処理部62、第6行処理部63、および符号・最小値記憶部64を含む。
(行処理部の動作)
次に、各行処理部の動作について説明する。
第1行処理部57は、第1の加算部(β+λ)41から出力されるN列分のデータ(βsn+λn)(n=1〜N、sは1〜3のいずれか)から、第1行目についての(N/3)個のデータ(β1,i+λi)(i=1〜Nの中の(N/3)個)を抽出する。第1行処理部57は、抽出したデータの中でその絶対値が最小であるデータ、およびその絶対値が2番目に小さいデータを符号・最小値記憶部60に記憶する。さらに、第1行処理部57は、その絶対値が最小であるデータの列番号(1〜Nのいずれか)、抽出したデータのそれぞれの列番号と符号、および抽出したデータのそれぞれの符号をすべて乗算した符号積を符号・最小値記憶部60に記憶する。
第1行処理部57は、α1,nを出力するときに、列番号nが符号・最小値記憶部60内の絶対値が最小であるデータの列番号と異なる場合には、符号・最小値記憶部60内の絶対値が最小であるデータをα1,nの絶対値とし、列番号nが符号・最小値記憶部60内の絶対値が最小であるデータの列番号と同じ場合には、符号・最小値記憶部60内の絶対値が2番目に小さいデータをα1,nの絶対値とする。
また、第1行処理部57は、符号・最小値記憶部60内の列番号nのデータの符号が正の場合には、符号・最小値記憶部60内の符号積をα1,nの符号とし、符号・最小値記憶部60内の列番号nに対応するデータの符号が負の場合には、符号・最小値記憶部60内の符号積を反転した符号をα1,nの符号とする。
以下、上述の処理を繰返すことによって外部値対数比αmnが順次更新される。
第2行処理部58、第3行処理部59、第4行処理部61、第5行処理部62および第6行処理部63は、第1行処理部63と同様の処理を行なう。
以上のように、本変形例によれば、(β+λ)をすべて記憶する必要がないので、第2の実施形態よりも、さらにメモリ容量を低減できる。
[第3の実施形態]
第1および第2の実施形態では、列重み2のパリティ検査行列を用いて外部値対数比αmnを算出する外部値対数比算出部について説明した。
すなわち、2個のブロックを有する列重み2のパリティ検査行列を用いた場合に、パリティ検査行列の第1ブロック(H1)を用いた行処理を行なうブロック行処理部と、パリティ検査行列の第2ブロック(H2)を用いた行処理を行なうブロック行処理部を同時に実行し、かつ計算結果を互いに交換することによって外部値対数比を更新することができた。
パリティ検査行列が3個以上のブロックを有する列重みが3以上の場合においても、そのパリティ検査行列から2個のブロックを1組として複数組のブロックを抽出し、各ブロックに対応するブロック行処理部をそれぞれ同時に実行させて、同じ組のブロックに対応するブロック行処理部の間で計算結果を互いに交換することによって、外部値対数比の近似値を算出することができると考えられる。
第3の実施形態では、このようにパリティ検査行列の2個のブロックを1組として、外部値対数比を算出する外部値対数比算出部に関する。
(算出スキーム)
図20は、第3の実施形態における、外部値対数比αmnの算出スキームを説明するための図である。
図20を参照して、本実施の形態では、2通りの計算を並行して実行することによって外部値対数比αmnを算出する。1番目の計算では、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返して実行する。2番目の計算では、第2ブロック(H2)を用いての計算、第1ブロック(H1)を用いての計算を交互に繰返して実行する。3番目の計算では、第2ブロック(H2)を用いての計算、第3ブロック(H3)を用いての計算を交互に繰返し実行する。4番目の計算では、第3ブロック(H3)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返し実行する。
(行処理部の構成)
図21は、図20に示される外部値対数比の算出処理を実行する行処理部11cの詳細な構成を表わす図である。
図21を参照して、行処理部1cは、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部69と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部70と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部71と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部72と、第1ブロック行処理部69に対応して設けられる第1の加算部(β+λ)65と、第2ブロック行処理部70に対応して設けられる第2の加算部(β+λ)66と、第2ブロック行処理部71に対応して設けられる第3の加算部(β+λ)67と、第3ブロック行処理部72に対応して設けられる第4の加算部(β+λ)68とを備える。
第1ブロック行処理部69は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部73と、第1行処理部74と、第2行処理部75とを備える。第2ブロック行処理部70は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部76と、第3行処理部77と、第4行処理部78とを備える。第2ブロック行処理部71は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部79と、第3行処理部80と、第4行処理部81とを備える。第3ブロック行処理部72は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部82と、第5行処理部83と、第6行処理部84とを備える。
(行処理部の動作)
第1ブロック行処理部69は、算出したN列分の外部値対数比αmnを、第2ブロック行処理部70に対応する第2の加算部(β+λ)66に出力する。これにより、第1ブロック(H1)を用いての計算の後、第2ブロック(H2)を用いての計算が行なわれる。
第2ブロック行処理部70は、算出したN列分の外部値対数比αmnを、第1ブロック行処理部69に対応する第1の加算部(β+λ)65に出力する。これにより、第2ブロック(H2)を用いての計算の後、第1ブロック(H1)を用いての計算が行なわれる。
第1ブロック行処理部69と第2ブロック行処理部70が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図20で示される算出スキームの第1番目と第2番目が実行される。
第2ブロック行処理部71は、算出したN列分の外部値対数比αmnを、第3ブロック行処理部72に対応する第4の加算部(β+λ)68に出力する。これにより、第2ブロック(H2)を用いての計算の後、第3ブロック(H3)を用いての計算が行なわれる。
第3ブロック行処理部72は、算出したN列分の外部値対数比αmnを、第2ブロック行処理部71に対応する第3の加算部(β+λ)67に出力する。これにより、第3ブロック(H3)を用いての計算の後、第2ブロック(H2)を用いての計算が行なわれる。
第2ブロック行処理部71と第3ブロック行処理部72が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図20で示される算出スキームの第3番目と第4番目が実行される。
以上のように、第3の実施形態によれば、列重み3以上のパリティ検査行列を2個のブロックを1組として、対となるブロック行処理部どうしで計算結果を互いに交換することとした。これにより、列重み3以上のパリティ検査行列をそのまま用いて外部値対数比を更新する処理、すなわち図9の外部値対数比算出部で算出される外部値対数比のよい近次値を得ることができる。また、第3の実施形態では、第1および第2の実施形態のように、列重み2にパリティ検査行列を用いた行処理と同様にして外部値対数比の更新が可能となるので、第1および第2の実施形態と同様に、加算器の個数およびメモリの容量を低減できる。
[第3の実施形態の変形例1]
(算出スキーム)
図22は、第3の実施形態の変形例1における、外部値対数比αmnの算出スキームを説明するための図である。
図22を参照して、本実施の形態では、4通りの計算を並行して実行することによって外部値対数比αmnを算出する。1番目の計算では、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返して実行する。2番目の計算では、第2ブロック(H2)を用いての計算、第1ブロック(H1)を用いての計算を交互に繰返して実行する。3番目の計算では、第3ブロック(H3)を用いての計算を繰返し実行する。4番目の計算では、第3ブロック(H3)を用いての計算を繰返し実行する。
(行処理部の構成)
図23は、図22に示される外部値対数比の算出処理を実行する行処理部11dの詳細な構成を表わす図である。
図23を参照して、行処理部11dは、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部69と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部70と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部72と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部85と、第1ブロック行処理部69に対応して設けられる第1の加算部(β+λ)65と、第2ブロック行処理部70に対応して設けられる第2の加算部(β+λ)66と、第3ブロック行処理部72に対応して設けられる第3の加算部(β+λ)67と、第3ブロック行処理部85に対応して設けられる第4の加算部(β+λ)68とを備える。
第1ブロック行処理部69は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部73と、第1行処理部74と、第2行処理部75とを備える。第2ブロック行処理部70は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部76と、第3行処理部77と、第4行処理部78とを備える。第3ブロック行処理部72は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部82と、第5行処理部83と、第6行処理部84とを備える。第3ブロック行処理部85は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部86と、第5行処理部87と、第6行処理部88とを備える。
(行処理部の動作)
第1ブロック行処理部69は、算出したN列分の外部値対数比αmnを、第2ブロック行処理部70に対応する第2の加算部(β+λ)66に出力する。これにより、第1ブロック(H1)を用いての計算の後、第2ブロック(H2)を用いての計算が行なわれる。
第2ブロック行処理部70は、算出したN列分の外部値対数比αmnを、第1ブロック行処理部69に対応する第1の加算部(β+λ)65に出力する。これにより、第2ブロック(H2)を用いての計算の後、第1ブロック(H1)を用いての計算が行なわれる。
第1ブロック行処理部69と第2ブロック行処理部70が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図22で示される算出スキームの第1番目と第2番目が実行される。
第3ブロック行処理部72は、算出したN列分の外部値対数比αmnを、第3ブロック行処理部85に対応する第4の加算部(β+λ)68に出力する。これにより、第3ブロック(H3)を用いての計算の後、第3ブロック(H3)を用いての計算が行なわれる。
第3ブロック行処理部85は、算出したN列分の外部値対数比αmnを、第3ブロック行処理部72に対応する第3の加算部(β+λ)67に出力する。これにより、第3ブロック(H3)を用いての計算の後、第3ブロック(H3)を用いての計算が行なわれる。
第3ブロック行処理部72と第3ブロック行処理部85が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図22で示される算出スキームの第3番目と第4番目が実行される。
以上のように、本変形例によれば、第3の実施形態と同様に、外部値対数比の近次値を得ることができるとともに、加算器の個数およびメモリの容量を低減できる。
[第3の実施形態の変形例2]
(算出スキーム)
図24は、第3の実施形態の変形例2における、外部値対数比αmnの算出スキームを説明するための図である。
図24を参照して、本実施の形態では、3通りの計算を並行して実行することによって外部値対数比αmnを算出する。1番目の計算では、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返して実行する。2番目の計算では、第2ブロック(H2)を用いての計算、第1ブロック(H1)を用いての計算を交互に繰返して実行する。3番目の計算では、第2ブロック(H2)を用いての計算、第3ブロック(H3)を用いての計算を交互に繰返し実行する。4番目の計算では、第3ブロック(H3)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返し実行する。5番目の計算では、第3ブロック(H3)を用いての計算、第1ブロック(H1)を用いての計算を交互に繰返し実行する。6番目の計算では、第1ブロック(H1)を用いての計算、第3ブロック(H3)を用いての計算を交互に繰返し実行する。
(行処理部の構成)
図25は、図24に示される外部値対数比の算出処理を実行する行処理部11eの詳細な構成を表わす図である。
図25を参照して、行処理部11eは、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部69と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部70と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部71と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部72と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部91と、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部92とを備える。
行処理部11eは、さらに、第1ブロック行処理部69に対応して設けられる第1の加算部(β+λ)65と、第2ブロック行処理部70に対応して設けられる第2の加算部(β+λ)66と、第2ブロック行処理部71に対応して設けられる第3の加算部(β+λ)67と、第3ブロック行処理部72に対応して設けられる第4の加算部(β+λ)68と、第3ブロック行処理部91に対応して設けられる第5の加算部(β+λ)89と、第1ブロック行処理部92に対応して設けられる第6の加算部(β)90とを備える。
第1ブロック行処理部69は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部73と、第1行処理部74と、第2行処理部75とを備える。第2ブロック行処理部70は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部76と、第3行処理部77と、第4行処理部78とを備える。第2ブロック行処理部71は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部79と、第3行処理部80と、第4行処理部81とを備える。第3ブロック行処理部72は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部82と、第5行処理部83と、第6行処理部84とを備える。第3ブロック行処理部91は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部93と、第5行処理部94と、第6行処理部95とを備える。第1ブロック行処理部92は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部96と、第1行処理部97と、第2行処理部98とを備える。
(行処理部の動作)
第1ブロック行処理部69は、算出したN列分の外部値対数比αmnを、第2ブロック行処理部70に対応する第2の加算部(β+λ)66に出力する。これにより、第1ブロック(H1)を用いての計算の後、第2ブロック(H2)を用いての計算が行なわれる。
第2ブロック行処理部70は、算出したN列分の外部値対数比αmnを、第1ブロック行処理部69に対応する第1の加算部(β+λ)65に出力する。これにより、第2ブロック(H2)を用いての計算の後、第1ブロック(H1)を用いての計算が行なわれる。
第1ブロック行処理部69と第2ブロック行処理部70が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図22で示される算出スキームの第1番目と第2番目が実行される。
第2ブロック行処理部71は、算出したN列分の外部値対数比αmnを、第3ブロック行処理部72に対応する第4の加算部(β+λ)68に出力する。これにより、第2ブロック(H2)を用いての計算の後、第3ブロック(H3)を用いての計算が行なわれる。
第3ブロック行処理部72は、算出したN列分の外部値対数比αmnを、第2ブロック行処理部71に対応する第3の加算部(β+λ)67に出力する。これにより、第3ブロック(H3)を用いての計算の後、第2ブロック(H2)を用いての計算が行なわれる。
第2ブロック行処理部71と第3ブロック行処理部72が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図22で示される算出スキームの第3番目と第4番目が実行される。
第3ブロック行処理部91は、算出したN列分の外部値対数比αmnを、第1ブロック行処理部92に対応する第6の加算部(β+λ)90に出力する。これにより、第3ブロック(H3)を用いての計算の後、第1ブロック(H1)を用いての計算が行なわれる。
第1ブロック行処理部92は、算出したN列分の外部値対数比αmnを、第3ブロック行処理部91に対応する第5の加算部(β+λ)89に出力する。これにより、第1ブロック(H1)を用いての計算の後、第3ブロック(H3)を用いての計算が行なわれる。
第3ブロック行処理部91と第1ブロック行処理部92が同時に繰返し実行され、かつ計算結果を互いに交換することによって、図22で示される算出スキームの第5番目と第6番目が実行される。
以上のように、本変形例によれば、第3の実施形態と同様に、外部値対数比のよい近次値を得ることができるとともに、加算器の個数およびメモリの容量を低減できる。
[第3の実施形態のその他の変形例]
(その他の算出スキーム)
図26は、第3の実施形態のその他の変形例における、外部値対数比αmnの算出スキームを説明するための図である。
図26を参照して、本実施の形態では、6通りの計算を並行して実行することによって外部値対数比αmnを算出する。1番目の計算では、第1ブロック(H1)を用いての計算を繰返し実行する。2番目の計算では、第1ブロック(H1)を用いての計算を繰返し実行する。3番目の計算では、第2ブロック(H2)を用いての計算を繰返し実行する。4番目の計算では、第2ブロック(H2)を用いての計算を繰返し実行する。5番目の計算では、第3ブロック(H3)を用いての計算を繰返し実行する。6番目の計算では、第3ブロック(H3)を用いての計算を繰返し実行する。
1番目と2番目の計算は、第1ブロック行処理部と第1ブロック行処理部との間で、計算結果を交換することによって行なわれる。3番目と4番目の計算は、第2ブロック行処理部と第2ブロック行処理部との間で、計算結果を交換することによって行なわれる。5番目と6番目の計算は、第3ブロック行処理部と第3ブロック行処理部との間で、計算結果を交換することによって行なわれる。
(その他の算出スキーム)
図27は、第3の実施形態のその他の変形例における、外部値対数比αmnの算出スキームを説明するための図である。
図27を参照して、本実施の形態では、12通りの計算を並行して実行することによって外部値対数比αmnを算出する。1番目の計算では、第1ブロック(H1)を用いての計算を繰返し実行する。2番目の計算では、第1ブロック(H1)を用いての計算を繰返し実行する。3番目の計算では、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返して実行する。4番目の計算では、第2ブロック(H2)を用いての計算、第1ブロック(H1)を用いての計算を交互に繰返して実行する。5番目の計算では、第1ブロック(H1)を用いての計算、第3ブロック(H3)を用いての計算を交互に繰返して実行する。6番目の計算では、第3ブロック(H3)を用いての計算、第1ブロック(H1)を用いての計算を交互に繰返して実行する。7番目の計算では、第2ブロック(H2)を用いての計算を繰返し実行する。8番目の計算では、第2ブロック(H2)を用いての計算を繰返し実行する。9番目の計算では、第2ブロック(H2)を用いての計算、第3ブロック(H3)を用いての計算を交互に繰返して実行する。10番目の計算では、第3ブロック(H3)を用いての計算、第2ブロック(H2)を用いての計算を交互に繰返して実行する。11番目の計算では、第3ブロック(H3)を用いての計算を繰返し実行する。12番目の計算では、第3ブロック(H3)を用いての計算を繰返し実行する。
1番目と2番目の計算は、第1ブロック行処理部と第1ブロック行処理部との間で、計算結果を交換することによって行なわれる。3番目と4番目の計算は、第1ブロック行処理部と第2ブロック行処理部との間で、計算結果を交換することによって行なわれる。5番目と6番目の計算は、第1ブロック行処理部と第3ブロック行処理部との間で、計算結果を交換することによって行なわれる。7番目と8番目の計算は、第2ブロック行処理部と第2ブロック行処理部との間で、計算結果を交換することによって行なわれる。9番目と10番目の計算は、第2ブロック行処理部と第3ブロック行処理部との間で、計算結果を交換することによって行なわれる。11番目と12番目の計算は、第3ブロック行処理部と第3ブロック行処理部との間で、計算結果を交換することによって行なわれる。
これらの変形例によっても、第3の実施形態と同様に、外部値対数比の近次値を得ることができるとともに、加算器の個数およびメモリの容量を低減できる。
[第4の実施形態]
第3の実施形態では、2個のブロック行処理部を1組としたので、2つのブロック行処理部の間でしか計算結果が交換されなかった。第4の実施形態では、すべてのブロック行処理部の間で計算結果が交換されるような外部値算出部に関する。
(算出スキーム)
図28は、第4の実施形態における、外部値対数比αmnの算出スキームを説明するための図である。
図28を参照して、本実施の形態では、3通りの計算を並行して実行することによって外部値対数比αmnを算出する。1つ目の計算では、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算、第3ブロック(H3)を用いての計算を順次繰返し実行する。2つ目の計算では、第2ブロック(H2)を用いての計算、第3ブロック(H3)を用いての計算、第1ブロック(H1)を用いての計算を順次繰返し実行する。3つ目の計算では、第3ブロック(H3)を用いての計算、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算を順次繰返し実行する。
(行処理部の構成)
図29は、図28に示される外部値対数比の算出処理を実行する行処理部11fの詳細な構成を表わす図である。
図29を参照して、行処理部11fは、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部69と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部70と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部72とを備える。
行処理部11fは、さらに第1ブロック行処理部69に対応して設けられる第1の加算部(β+λ)65と、第2ブロック行処理部70に対応して設けられる第2の加算部(β+λ)66と、第3ブロック行処理部72に対応して設けられる第3の加算部(β+λ)67とを備える。
第1ブロック行処理部69は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値を記憶する第1ブロック(β+λ)記憶部73と、第1行処理部74と、第2行処理部75とを備える。第2ブロック行処理部70は、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値を記憶する第2ブロック(β+λ)記憶部76と、第3行処理部77と、第4行処理部78とを備える。第3ブロック行処理部72は、パリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値を記憶する第3ブロック(β+λ)記憶部82と、第5行処理部83と、第6行処理部84とを備える。
(行処理部の動作)
第1ブロック行処理部69は、算出したN列分の外部値対数比αmnを、第2ブロック行処理部70に対応する第2の加算部(β+λ)66に出力する。これにより、第1ブロック(H1)を用いての計算の後、第2ブロック(H2)を用いての計算が行なわれる。
第2ブロック行処理部70は、算出したN列分の外部値対数比αmnを、第3ブロック行処理部72に対応する第3の加算部(β+λ)67に出力する。これにより、第2ブロック(H2)を用いての計算の後、第3ブロック(H3)を用いての計算が行なわれる。
第3ブロック行処理部72は、算出したN列分の外部値対数比αmnを、第1ブロック行処理部69に対応する第1の加算部(β+λ)65に出力する。これにより、第3ブロック(H3)を用いての計算の後、第2ブロック(H1)を用いての計算が行なわれる。
第1ブロック行処理部69の処理、第2ブロック行処理部70の処理、および第3ブロック行処理部72の処理を同時に並行して繰返し実行することによって、図29で示される算出スキームが実行されることになる。
以上のように、第4の実施形態によれば、1つのブロック行処理部での計算結果が、別のブロック行処理部に送られてN列分の外部値対数比の算出に用いられ、その別のブロック行処理部での計算結果が、さらに別のブロック行処理部に送られてN列分の外部値対数比の算出に用いられ、すべてのブロック行処理部の間で外部値対数比の計算結果を交換するので、算出される外部値対数比の近似の精度を高くすることができる。
[第5の実施形態]
(算出スキーム)
図30は、第5の実施形態における、外部値対数比αmnの算出スキームを説明するための図である。
図30を参照して、本実施の形態では、第4の実施形態の3通りの計算のうちの1つのみを実行することによって外部値対数比αmnを算出する。すなわち、本実施の形態では、第1ブロック(H1)を用いての計算、第2ブロック(H2)を用いての計算、第3ブロック(H3)を用いての計算を順次繰返し実行する。
(行処理部の構成)
図31は、図30に示される外部値対数比の算出処理を実行する行処理部11hの詳細な構成を表わす図である。
図31を参照して、行処理部11gは、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第1ブロック行処理部102と、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第2ブロック行処理部103と、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、N列分の外部値対数比αmnを更新する第3ブロック行処理部104と、ブロック共通の加算部(β+λ)195と、ブロック共通(β+λ)記憶部101とを備える。第1ブロック行処理部102と、第2ブロック行処理部103と、第3ブロック行処理部104は、順番に選択されて、選択されたもののみが処理を実行する。
第1ブロック行処理部102は、第1行処理部105と、第2行処理部106とを備える。第2ブロック行処理部103は、第3行処理部107と、第4行処理部108とを備える。第3ブロック行処理部104は、第5行処理部109と、第6行処理部110とを備える。
ブロック共通(β+λ)記憶部101は、パリティ検査行列Hの第1ブロックに対応するN列分の(β+λ)の最新値、パリティ検査行列Hの第2ブロックに対応するN列分の(β+λ)の最新値、およびパリティ検査行列Hの第3ブロックに対応するN列分の(β+λ)の最新値のいずれかを順番に記憶する。
(行処理部の動作)
まず、第1ブロック行処理部102が選択されて、パリティ検査行列の第1ブロック(H1)に従ってブロック共通(β+λ)記憶部101からデータを読出す。パリティ検査行列の第1ブロック(H1)に従ってデータを読出すことによって、ブロック共通記憶部(β+λ)101からパリティ検査行列の第1ブロック(H1)に対応する(β+λ)を読出したことになる。たとえば、図10のパリティ検査行列が用いられるときに、図12(a)に示される(β+λ)を読出したことになる。第1ブロック行処理部102は、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、算出したN列分の外部値対数比αmnを加算部(β+λ)195に出力する。
次に、加算部(β+λ)195は、第1ブロック行処理部102からN列分の事前値対数比βmn(=αm'n)を受け、S/P変換部8からN列分の対数尤度比λnを受け、それらを加算して、N列分の加算結果(β+λ)をブロック共通(β+λ)記憶部101に記憶する。
次に、第2ブロック行処理部103が選択されて、パリティ検査行列の第2ブロック(H2)に従ってブロック共通(β+λ)記憶部101からデータを読出す。パリティ検査行列の第2ブロック(H2)に従ってデータを読出すことによって、ブロック共通記憶部(β+λ)101からパリティ検査行列の第2ブロック(H2)に対応する(β+λ)を読出したことになる。たとえば、図10のパリティ検査行列が用いられるときに、図12(b)に示される(β+λ)を読出したことになる。第2ブロック行処理部103は、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、算出したN列分の外部値対数比αmnを加算部(β+λ)195に出力する。
次に、加算部(β+λ)195は、第2ブロック行処理部103からN列分の事前値対数比βmn(=αm'n)を受け、S/P変換部8からN列分の対数尤度比λnを受け、それらを加算して、N列分の加算結果(β+λ)をブロック共通(β+λ)記憶部101に記憶する。
次に、第3ブロック行処理部104が選択されて、パリティ検査行列の第3ブロック(H3)に従ってブロック共通(β+λ)記憶部101からデータを読出す。パリティ検査行列の第3ブロック(H3)に従ってデータを読出すことによって、ブロック共通記憶部(β+λ)101からパリティ検査行列の第3ブロック(H3)に対応する(β+λ)を読出したことになる。たとえば、図10のパリティ検査行列が用いられるときに、図12(c)に示される(β+λ)を読出したことになる。第3ブロック行処理部104は、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、算出したN列分の外部値対数比αmnを加算部(β+λ)195に出力する。
次に、加算部(β+λ)195は、第3ブロック行処理部104からN列分の事前値対数比βmn(=αm'n)を受け、S/P変換部8からN列分の対数尤度比λnを受け、それらを加算して、N列分の加算結果(β+λ)をブロック共通(β+λ)記憶部101に記憶する。
以下、上述の処理を繰返すことによって外部値対数比αmnが順次更新される。
以上のように、本実施形態では、第1ブロック行処理部69の処理、第2ブロック行処理部70の処理、および第3ブロック行処理部72の処理を逐次実行することによって、図31で示される算出スキームが実行されることになる。ブロック行処理部の処理を逐次的に実行し、加算部と(β+λ)を記憶する記憶部を全ブロックで共有することによって、加算器の数、および(β+λ)を記憶するためのメモリ容量を低減できる。
[第6の実施形態]
(算出スキーム)
第6の実施形態では、第5の実施形態と同様に、図30に示される外部値対数比αmnの算出スキームを実行する。
(行処理部の構成)
図32は、図30に示される外部値対数比の算出処理を実行する行処理部11hの詳細な構成を表わす図である。
図32を参照して、行処理部11hは、パリティ検査行列の第1ブロック(H1)、パリティ検査行列の第2ブロック(H2)およびパリティ検査行列の第3ブロック(H3)を順次選択し、選択したブロックに従って、行処理を行ない、外部値対数比αmnを更新するブロック共通行処理部111と、第5の実施形態と同様の加算部(β+λ)195およびブロック共通(β+λ)記憶部101とを備える。
ブロック共通行処理部111は、上側行処理部112と、下側行処理部113とを含む。第1ブロックの行処理を実行するときには、上側行処理部112は、第1行の処理を行ない、下側行処理部113は、第2行の処理を行なう。第2ブロックの行処理を実行するときには、上側行処理部112は、第3行の処理を行ない、下側行処理部113は、第4行の処理を行なう。第3ブロックの行処理を実行するときには、上側行処理部112は、第5行の処理を行ない、下側行処理部113は、第6行の処理を行なう。
(行処理部の動作)
まず、ブロック共通行処理部111は、パリティ検査行列の第1ブロック(H1)を選択して、第5の実施形態の第1ブロック行処理部102と同様にパリティ検査行列の第1ブロック(H1)に従ってブロック共通(β+λ)記憶部101からデータを読出す。ブロック共通行処理部111は、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、算出したN列分の外部値対数比αmnを加算部(β+λ)195に出力する。
次に、加算部(β+λ)195は、ブロック共通行処理部111からN列分の事前値対数比βmn(=αm'n)を受け、S/P変換部8からN列分の対数尤度比λnを受け、それらを加算して、N列分の加算結果(β+λ)をブロック共通(β+λ)記憶部101に記憶する。
次に、ブロック共通行処理部111は、パリティ検査行列の第2ブロック(H2)を選択して、第5の実施形態の第2ブロック行処理部103と同様にパリティ検査行列の第2ブロック(H2)に従ってブロック共通(β+λ)記憶部101からデータを読出す。ブロック共通行処理部111は、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、算出したN列分の外部値対数比αmnを加算部(β+λ)195に出力する。
次に、加算部(β+λ)195は、ブロック共通行処理部111からN列分の事前値対数比βmn(=αm'n)を受け、S/P変換部8からN列分の対数尤度比λnを受け、それらを加算して、N列分の加算結果(β+λ)をブロック共通(β+λ)記憶部101に記憶する。
次に、ブロック共通行処理部111は、パリティ検査行列の第3ブロック(H3)を選択して、第5の実施形態の第3ブロック行処理部104と同様にパリティ検査行列の第3ブロック(H3)に従ってブロック共通(β+λ)記憶部101からデータを読出す。ブロック共通行処理部111は、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、算出したN列分の外部値対数比αmnを加算部(β+λ)195に出力する。
次に、加算部(β+λ)195は、ブロック共通行処理部111からN列分の事前値対数比βmn(=αm'n)を受け、S/P変換部8からN列分の対数尤度比λnを受け、それらを加算して、N列分の加算結果(β+λ)をブロック共通(β+λ)記憶部101に記憶する。
以下、上述の処理を繰返すことによって外部値対数比αmnが順次更新される。
以上のように、本発明の実施形態では、第1ブロックの行処理、第2ブロックの行処理、および第3ブロックの行処理を逐次実行することによって、第5の実施形態と同様に図31で示される算出スキームが実行されることになる。また、本発明の実施形態では、1つのブロック共通行処理部が各ブロックの行処理を逐次的に実行するので、第5の実施形態と同様に加算器の数、および(β+λ)を記憶するためのメモリ容量を低減できるに加えて、さらに、行処理部のハードウエア構成を簡略化できる。
[第7の実施形態]
第7の実施形態は、列重み3以上のパリティ検査行列を用いて外部値対数比を算出する外部値対数比算出部において、加算部で列処理を行なうのに代えて、セレクト部で近似的に列処理を行なう。
図33は、第7の実施形態における、列重みが3のパリティ検査行列を用いる外部値対数比算出部の行処理部9aおよび列処理部10bの詳細な構成を表わす図である。
図33を参照して、行処理部9aは、図9の行処理部9aと同様なので、ここでは説明を繰返さない。
図33の列処理部10bと図9の列処理部10aとが相違する点は、図33の列処理部10bは、第1の加算部(β)21、第2の加算部(β)22および第3の加算部(β)23の代わりに、セレクト部198を含む点である。セレクト部198は、第1ブロック行処理部18に対応して配置される第1のセレクタ121、第2ブロック行処理部19に対応して配置される第2のセレクタ122、および第3ブロック行処理部20に対応して配置される第3のセレクタ123を含む。
第1のセレクタ121は、対応するブロック行処理部以外のブロック行処理部である第2ブロック行処理部19および第3ブロック行処理部20からそれぞれN列分の外部値対数比αmnを入力して、N列の各列ごとにその絶対値が最大となる外部値対数比αmnを選択して、選択したN列分の外部値対数比αmnを第1ブロック(β)記憶部24を経由して第1の加算部(β+λ)15へ出力する。
第2のセレクタ122は、対応するブロック行処理部以外のブロック行処理部である第1ブロック行処理部18および第3ブロック行処理部20からそれぞれN列分の外部値対数比αmnを入力して、N列の各列ごとにその絶対値が最大となる外部値対数比αmnを選択して、選択したN列分の外部値対数比αmnを第2ブロック(β)記憶部25を経由して第2の加算部(β+λ)16へ出力する。
第3のセレクタ123は、対応するブロック行処理部以外のブロック行処理部である第1ブロック行処理部18および第2ブロック行処理部19からそれぞれN列分の外部値対数比αmnを入力して、N列の各列ごとにその絶対値が最大となる外部値対数比αmnを選択して、選択したN列分の外部値対数比αmnを第3ブロック(β)記憶部26を経由して第3の加算部(β+λ)17へ出力する。
図34は、第1のセレクタ121の第1列目の構成を表わす図である。第1のセレクタ121の第2列目〜第12列目、第2のセレクタ122の第1列目〜第12列目、第3のセレクタ123の第1列目〜第12列目もこれと同じ構成である。
図34を参照して、第1のセレクタ121の第1列目は、第2ブロック行処理部19から外部値対数比αt,1と、第3ブロック行処理部20から外部値対数比αu,1を受けて、外部値対数比αt,1の絶対値が最大の場合には外部値対数比αt,1を選択し、外部値対数比αu,1の絶対値が最大の場合には外部値対数比αu,1を選択する。第1のセレクタ121の第1列目は、選択したデータを、事前値対数比βs、1(第1列目のデータ)として第1ブロック(β)記憶部24の第1列目の位置へ出力する。外部値対数比αt,1と外部値対数比αu,1のどちらの絶対値も同じ値である場合には、いずれかの値が出力される。
ここで、tは、パリティ検査行列の第2ブロックの第1列目で「1」が立っている行を表わし、uは、パリティ検査行列の第3ブロックの第1列目で「1」が立っている行を表わし、sは、パリティ検査行列の第1ブロックの第1列目で「1」が立っている行を表わす。
以上のように、第7の実施形態では、複数個の外部値対数比を加算して列処理を行なうのに代えて、複数個の外部値対数比の中でその絶対値が最大のものを選択して近似的に列処理を行なうので、ハードウエア構成を簡略化できる。
[第8の実施形態]
第8の実施形態は、第7の実施形態と同様に、加算部で列処理を行なうのに代えて、セレクト部で列処理を行なう。
図35は、第8の実施形態における、列重みが3のパリティ検査行列を用いる外部値対数比算出部の行処理部9bおよび列処理部10cの詳細な構成を表わす図である。
図35を参照して、この行処理部9bと図9の行処理部9aとが相違する点は、図9の行処理部9aが、3つの加算部(β+λ)15,16,17および3つのブロック(β+λ)記憶部27,30,33を含むのに対して、図35の行処理部9bは、1個の加算部(β+λ)196およびブロック共通記憶部(β+λ)201を含む点である。
また、図35の列処理部10cと図9の列処理部10aとが相違する点は、図9の列処理部10aが、第1の加算部(β)21、第2の加算部(β)22、第3の加算部(β)23、第1ブロック(β)記憶部24、第2ブロック(β)記憶部25および第3ブロック(β)記憶部26を含むのに対して、図35の列処理部10cは、セレクト部124を含む点である。
セレクト部124は、第1ブロック行処理部202、第2ブロック行処理部203および第3ブロック行処理部204からそれぞれN列分の外部値対数比αmnを入力して、N列の各列ごとにその絶対値が最大となる外部値対数比αmnを選択して、選択したN列分の外部値対数比αmnを加算部(β+λ)196へ出力する。
加算部(β+λ)196は、セレクト部124から出力されたN列分の外部値対数比αmnと、S/P変換部8から出力されたN列分の対数尤度比λnとを加算して、N列分の加算結果をブロック共通記憶部(β+λ)201に出力する。
第1ブロック行処理部202は、パリティ検査行列の第1ブロック(H1)に従ってブロック共通(β+λ)記憶部201からデータを読出す。パリティ検査行列の第1ブロック(H1)に従ってデータを読出すことによって、ブロック共通記憶部(β+λ)201からパリティ検査行列の第1ブロック(H1)に対応する(β+λ)を読出したことになる。第1ブロック行処理部202は、パリティ検査行列の第1ブロック(H1)に従って行処理を行ない、算出したN列分の外部値対数比αmnをセレクト部124に出力する。
第2ブロック行処理部203は、パリティ検査行列の第2ブロック(H2)に従ってブロック共通(β+λ)記憶部201からデータを読出す。パリティ検査行列の第2ブロック(H2)に従ってデータを読出すことによって、ブロック共通記憶部(β+λ)202からパリティ検査行列の第2ブロック(H2)に対応する(β+λ)を読出したことになる。第2ブロック行処理部203は、パリティ検査行列の第2ブロック(H2)に従って行処理を行ない、算出したN列分の外部値対数比αmnをセレクト部124に出力する。
第3ブロック行処理部204は、パリティ検査行列の第3ブロック(H3)に従ってブロック共通(β+λ)記憶部201からデータを読出す。パリティ検査行列の第3ブロック(H3)に従ってデータを読出すことによって、ブロック共通記憶部(β+λ)202からパリティ検査行列の第3ブロック(H3)に対応する(β+λ)を読出したことになる。第3ブロック行処理部204は、パリティ検査行列の第3ブロック(H3)に従って行処理を行ない、算出したN列分の外部値対数比αmnをセレクト部124に出力する。
図36は、セレクト部124の第1列目の構成を表わす図である。セレクト部124の第2列目〜第12列目もこれと同じ構成である。
図36を参照して、セレクト部124の第1列目は、第1ブロック行処理部202から外部値対数比αs,1と、第2ブロック行処理部203から外部値対数比αt,1と、第3ブロック行処理部204から外部値対数比αu,1を受けて、外部値対数比αs,1の絶対値が最大の場合には外部値対数比αs,1を選択し、外部値対数比αt,1の絶対値が最大の場合には外部値対数比αt,1を選択し、外部値対数比αu,1の絶対値が最大の場合には外部値対数比αu,1を選択する。セレクト部124の第1列目は、選択したデータを事前値対数比βs、1(=βt,1=βu,1)(第1列目のデータ)として加算部(β+λ)196へ出力する。絶対値が最大なものが2つ以上ある場合には、いずれかの値が出力される。
ここで、sは、パリティ検査行列の第1ブロックの第1列目で「1」が立っている行を表わす。tは、パリティ検査行列の第2ブロックの第1列目で「1」が立っている行を表わし、uは、パリティ検査行列の第3ブロックの第1列目で「1」が立っている行を表わす。
再び、図35を参照して、加算部(β+λ)196は、第1列目について、セレクト部124から第1列目のデータ(=βs,1=βt,1=βu,1)を受け、S/P変換部8から第1列目の対数尤度比λ1を受けて、それらを加算する。加算部(β+λ)196は、加算結果(=βs,1+λ1=βt,1+λ1=βu,1+λ1)をブロック共通(β+λ)記憶部201の第1列目に出力する。加算部(β+λ)196は、上記と同様にして第2列目〜第12目についての処理を行なう。
以上のように、第8の実施形態では、複数個の外部値対数比を加算して列処理を行なうのに代えて、すべてのブロック行処理部から出力された外部値対数比の中でその絶対値が最大のものを1つ選択して、近似的に列処理を行なうので、第7の実施形態よりもさらにハードウエア構成を簡略化できる。
[第9の実施形態]
図37は、第9の実施形態における、列重みが3のパリティ検査行列を用いる外部値対数比算出部の行処理部9aおよび列処理部10dの詳細な構成を表わす図である。
図37を参照して、行処理部9aは、図9の行処理部9aと同様なので、ここでは説明を繰返さない。
図37の列処理部10dと図9の列処理部10aとが相違する点は、図9の列処理部10aが、第1の加算部(β)21、第2の加算部(β)22、第3の加算部(β)23、第1ブロック(β)記憶部24、第2ブロック(β)記憶部25および第3ブロック(β)記憶部26を含むのに対して、図37の列処理部10dは、セレクト部125を含む点である。
セレクト部125は、第1ブロック行処理部18、第2ブロック行処理部19および第3ブロック行処理部20からそれぞれN列分の外部値対数比αmnを入力して、各列ごとにその絶対値が最大である外部値対数比を第1最大値として記憶し、各列ごとにその絶対値が2番目に大きな外部値対数比を第2最大値として記憶し、各列ごとにその絶対値が最大である外部値対数比を出力したブロック行処理部のブロック番号を記憶する。
セレクト部125は、各列について、記憶しているブロック番号のブロック行処理部に対応する加算部(β+λ)に対しては、記憶している第2最大値を出力し、記憶しているブロック番号以外のブロック行処理部に対応する加算部(β+λ)に対しては、記憶している第1最大値を出力する。
図38は、セレクト部125の第1列目の構成を表わす図である。セレクト部125の第2列目〜第12列目もこれと同じ構成である。
図38を参照して、セレクト部125の第1列目は、第1ブロック行処理部18から外部値対数比αs,1と、第2ブロック行処理部19から外部値対数比αt,1と、第3ブロック行処理部20から外部値対数比αu,1を受ける。ここで、sは、パリティ検査行列の第1ブロックの第1列目で「1」が立っている行を表わし、tは、パリティ検査行列の第2ブロックの第1列目で「1」が立っている行を表わし、uは、パリティ検査行列の第3ブロックの第1列目で「1」が立っている行を表わす。
第1最大値記憶部132は、外部値対数比αs,1と、外部値対数比αt,1と、外部値対数比αu,1の中でその絶対値が最大なもの(第1最大値)を記憶する。第2最大値記憶部133は、外部値対数比αs,1と、外部値対数比αt,1と、外部値対数比αu,1の中でその絶対値が2番目に大きなもの(第2最大値)を記憶する。その絶対値が等しいものが複数個存在する場合には、それらのうちの1つを第1最大値記憶部132に記憶し、他の1つを第2最大値記憶部133に記憶する。
第1最大値位置記憶部131は、第1最大値記憶部132に記憶されるデータの出力元のブロック行処理部のブロック番号を記憶する。具体的には、第1最大値位置記憶部131は、第1最大値記憶部132に外部値対数比αs,1が記憶される場合には、ブロック番号「1」を記憶し、第1最大値記憶部132に外部値対数比αt,1が記憶される場合には、ブロック番号「2」を記憶し、第1最大値記憶部132に外部値対数比αu,1が記憶される場合には、ブロック番号「3」を記憶する。
選択器134は、第1の加算部(β+λ)15、第2の加算部(β+λ)16および第3の加算部(β+λ)17への出力データとして、それぞれ第1最大値記憶部132に記憶されている第1最大値および第2最大値記憶部133に記憶されている第2最大値の一方を選択する。
すなわち、選択器134は、第1最大値位置記憶部131に記憶されているブロック番号以外のブロック行処理部に対応する加算部(β+λ)へは、第1最大値記憶部132に記憶されている第1最大値を出力し、第1最大値位置記憶部131に記憶されているブロック番号のブロック行処理部に対応する加算部(β+λ)へは、第2最大値記憶部133に記憶されている第2最大値を出力する。
例として、外部値対数比αt,1の絶対値が最大で、外部値対数比αu,1の絶対値が2番目に大きいとする。この場合、第1最大値記憶部132には外部値対数比αt,1が記憶され、第2最大値記憶部133には外部値対数比αu,1が記憶され、第1最大値位置記憶部131には、ブロック番号「2」が記憶される。
選択器134は、第1最大値位置記憶部131にブロック番号「2」が記憶されているので、第1最大値記憶部132に記憶されている外部値対数比αt,1を第1の加算部(β+λ)15へ事前値対数比βs,1として出力し、第2最大値記憶部132に記憶されている外部値対数比αu,1を第2の加算部(β+λ)16へ事前値対数比βt,1として出力し、第1最大値記憶部132に記憶されている外部値対数比αt,1を第3の加算部(β+λ)17へ事前値対数比βu,1として出力する。
以上のように、第9の実施形態では、セレクト部がその絶対値が最大の外部値対数比、その絶対値が2番目に大きな外部値対数比、その絶対値が最大の外部値対数比を出力したブロック行処理部のブロック番号を記憶し、記憶しているその絶対値が最大の外部値対数比、およびその絶対値が2番目に大きな外部値対数比のいずれかを選択して出力するので、第7の実施形態よりもさらにハードウエア構成を簡略化できる。
[第9の実施形態の変形例]
本変形例は、第9の実施形態のセレクト部125の変形例に関する。
本変形例のセレクト部210は、第1ブロック行処理部18、第2ブロック行処理部19および第3ブロック行処理部20からそれぞれN列分の外部値対数比αmnを入力して、各列ごとに外部値対数比の絶対値を記憶し、各列ごとにその絶対値が最大である外部値対数比を第1最大値として記憶し、各列ごとにその絶対値が2番目に大きな外部値対数比を第2最大値として記憶する。
セレクト部210は、各列について、ブロック行処理部に対応する加算部(β+λ)に対しては、記憶している第2最大値を出力し、記憶しているブロック番号以外のブロック行処理部に対応する加算部(β+λ)に対しては、記憶している第1最大値を出力する。
図39は、セレクト部210の第1列目の構成を表わす図である。セレクト部210の第2列目〜第12列目もこれと同じ構成である。
図39を参照して、セレクト部210の第1列目は、第1ブロック行処理部18から外部値対数比αs,1と、第2ブロック行処理部19から外部値対数比αt,1と、第3ブロック行処理部20から外部値対数比αu,1を受ける。ここで、sは、パリティ検査行列の第1ブロックの第1列目で「1」が立っている行を表わし、tは、パリティ検査行列の第2ブロックの第1列目で「1」が立っている行を表わし、uは、パリティ検査行列の第3ブロックの第1列目で「1」が立っている行を表わす。
絶対値記憶部214は、第1ブロック行処理部18から出力された外部値対数比αs,1の絶対値と、第2ブロック行処理部19から出力された外部値対数比αt,1の絶対値と、第3ブロック行処理部20から出力された外部値対数比αu,1の絶対値を記憶する。
第1最大値記憶部211は、外部値対数比αs,1と、外部値対数比αt,1と、外部値対数比αu,1の中でその絶対値が最大なもの(第1最大値)を記憶する。第2最大値記憶部212は、外部値対数比αs,1と、外部値対数比αt,1と、外部値対数比αu,1の中でその絶対値が2番目に大きなもの(第2最大値)を記憶する。その絶対値が等しいものが複数個存在する場合には、それらのうちの1つを第1最大値記憶部211に記憶し、他の1つを第2最大値記憶部212に記憶する。
選択器213は、第1の加算部(β+λ)15、第2の加算部(β+λ)16および第3の加算部(β+λ)17への出力データとして、それぞれ第1最大値記憶部211に記憶されている第1最大値および第2最大値記憶部212に記憶されている第2最大値の一方を選択する。
すなわち、選択器213は、絶対値記憶部214に記録されている第1ブロック行処理部18から出力された外部値対数比αs,1の絶対値と、第1最大値記憶部211に記憶されている第1最大値の絶対値の大きさを比較する。選択器213は、比較結果が同一の場合には、第2最大値記憶部212に記憶されている第2最大値を第1ブロック行処理部18に対応する第1の加算部(β+λ)15へ出力し、異なる場合には、第1最大値記憶部211に記憶されている第1最大値を第1ブロック行処理部18に対応する第1の加算部(β+λ)15へ出力する。
選択器213は、絶対値記憶部214に記録されている第2ブロック行処理部19から出力された外部値対数比αt,1の絶対値と、第1最大値記憶部211に記憶されている第1最大値の絶対値の大きさを比較する。選択器213は、比較結果が同一の場合には、第2最大値記憶部212に記憶されている第2最大値を第2ブロック行処理部19に対応する第2の加算部(β+λ)16へ出力し、異なる場合には、第1最大値記憶部211に記憶されている第1最大値を第2ブロック行処理部19に対応する第2の加算部(β+λ)16へ出力する。
選択器213は、絶対値記憶部214に記録されている第3ブロック行処理部20から出力された外部値対数比αu,1の絶対値と、第1最大値記憶部211に記憶されている第1最大値の絶対値の大きさを比較する。選択器213は、比較結果が同一の場合には、第2最大値記憶部212に記憶されている第2最大値を第3ブロック行処理部20に対応する第3の加算部(β+λ)17へ出力し、異なる場合には、第1最大値記憶部211に記憶されている第1最大値を第3ブロック行処理部20に対応する第3の加算部(β+λ)17へ出力する。
例として、外部値対数比αt,1の絶対値が最大で、外部値対数比αu,1の絶対値が2番目に大きいとする。この場合、第1最大値記憶部211には外部値対数比αt,1が記憶され、第2最大値記憶部212には外部値対数比αu,1が記憶される。
選択器213は、第1最大値記憶部211に記憶されている外部値対数比αt,1を第1の加算部(β+λ)15へ事前値対数比βs,1として出力し、第2最大値記憶部212に記憶されている外部値対数比αu,1を第2の加算部(β+λ)16へ事前値対数比βt,1として出力し、第1最大値記憶部211に記憶されている外部値対数比αt,1を第3の加算部(β+λ)17へ事前値対数比βu,1として出力する。
以上のように、本変形例でも、第9の実施形態と同様に、記憶しているその絶対値が最大の外部値対数比、およびその絶対値が2番目に大きな外部値対数比のいずれかを選択して出力するので、第7の実施形態よりもさらにハードウエア構成を簡略化できる。
[第10の実施形態]
第10〜第13の実施形態は、第1の実施形態と異なる復号語の生成方法に関するものである。
図40は、第10の実施形態の一次推定語生成部180aの構成を表わす図である。
図40を参照して、この一次推定語生成部180aが、図6の第1の実施形態の一次推定語生成部180と相違するのは、Qn算出部である。
第10の実施形態のQn算出部142は、複数のブロック行処理部からの外部値対数比αmnに従って、次式(9)に従って、推定受信語(Q
1、Q
2、・・・、Q
N)を算出する。
第1の実施形態と同様に、Cn算出部141は、前述の式(7)に従って、一次推定語(C1、C2、・・・、CN)を算出する。
以上のように、第10の実施形態では、推定受信語(Q1、Q2、・・・、QN)を算出するときに対数尤度比λnを加えないので、受信語推定時の計算量を低減できる。
[第11の実施形態]
図41は、第11の実施形態の一次推定語生成部180bの構成を表わす図である。
図41を参照して、この一次推定語生成部180bが、図6の第1の実施形態の一次推定語生成部180と相違するのは、Qn算出部である。
第11の実施形態のQn算出部143は、予め定められた特定の1個のブロック行処理部からの外部値対数比αmnに従って、次式(10)に従って、推定受信語(Q1、Q2、・・・、QN)を算出する。
Qn=αmn…(10)
ここで、mは、m∈B(n)であって、かつ特定の1個のブロック行処理部がn列目の処理を行なう行を表わす。
第1の実施形態と同様に、Cn算出部141は、式(7)に従って、一次推定語(C1、C2、・・・、CN)を算出する。
以上のように、第11の実施形態では、推定受信語(Q1、Q2、・・・、QN)を算出するときに、特定の1個のブロック行処理部で計算された外部値対数比αmnだけを用いるので、受信語推定時の計算量を低減できる。
[第11の実施形態の変形例]
第11の実施形態では、特定の1個のブロック行処理部からの外部値対数比αmnに従って、推定受信語(Q1、Q2、・・・、QN)を算出したが、特定のL個(Lは2以上の自然数)のブロック行処理部からの外部値対数比に従って、推定受信語(Q1、Q2、・・・、QN)を算出することとしてもよい。
[第12の実施形態]
図42は、第12の実施形態の一次推定語生成部180cおよび復号語決定部190aの構成を表わす図である。
図42を参照して、この一次推定語生成部180cが、図6の第1の実施形態の一次推定語生成部180と相違するのは、Qn算出部およびCn算出部である。
第12の実施形態のQn算出部144は、i番目のブロック行処理部からの外部値対数比に従って、推定受信語(Q1(i)、Q2(i)、・・・、QN(i))を算出する。すなわち、Qn算出部は、i番目のブロック行処理部からの外部値対数比αmn(i)を用いて、次式(11)に従って、推定受信語のnビット目Qn(i)(n=1、2、・・・、N)を算出する。
Qn(i)=αmn(i)…(11)
ここで、mは、m∈B(n)であって、かつi番目のブロック行処理部がn列目の処理を行なう行を表わす。
行処理部内にブロック行処理部がM個(M≧2)ある場合には、M個の推定受信語のnビット目Qn(1)、Qn(2)、・・・、Qn(M)が算出されることになる。
Cn算出部145は、次式(12)に従って、M個の推定受信語のnビット目Qn(i)からM個の一次推定語のnビット目Cn(i)(n=1、2、・・・、N)を算出する。
復号語決定部190aは、算出したM個の一次推定語のnビット目Cn(1)、Cn(2)、・・・、Cn(M)(n=1〜K)の多数決に従って、復号語のnビット目を決定する。すなわち、復号語決定部190aは、M個の一次推定語のnビット目Cn(1)、Cn(2)、・・・、Cn(M)の値について、「1」である個数が「0」である個数以上の場合には、復号語のnビット目を「1」に決定し、「1」である個数が「0」である個数未満の場合には、復号語のnビット目を「0」に決定する。
以上のように、第12の実施形態では、各ブロック行処理部で計算された外部値対数比αmnに基づいて計算された一次推定語の多数決で復号語が決定されるので、復号語の精度を向上することができる。
[第12の実施形態の変形例]
第12の実施形態では、各ブロック行処理部からの外部値対数比αmnに従って、Cn(i)を算出したが、2個以上M個以下のブロック行処理部から出力される外部値対数比に基づいて、L個(Lは2以上)のCn(i)(i=1〜L)を算出することとしてもよい。たとえば、行処理部内に4つのブロック行処理部がある場合に、第1番目のブロック行処理部から出力されるN列分の外部値対数比と、第2番目のブロック行処理部から出力されるN列分の外部値対数比と、第3番目のブロック行処理部から出力されるN列分の外部値対数比に基づいて、第1番目のブロック行処理部の外部値対数比と第2番目のブロック行処理部の外部値対数比からCn(1)を算出し、第2番目のブロック行処理部の外部値対数比と第3番目のブロック行処理部の外部値対数比からCn(2)を算出し、第3番目のブロック行処理部の外部値対数比と第1番目のブロック行処理部の外部値対数比からCn(3)を算出することとしてもよい。
[第13の実施形態]
図43は、第13の実施形態の一次推定語生成部180cおよび復号語決定部190bの構成を表わす図である。
図43を参照して、第13の実施形態では、復号語決定部が図42の第12の実施形態と異なる。
Qn算出部144は、第12の実施形態と同様にして、推定受信語(Q1(i)、Q2(i)、・・・、QN(i))を算出する。
Cn算出部146は、第12の実施形態と同様にして、Qn(i)からCn(i)(n=1、2、・・・、N)を算出する。
復号語決定部190bは、一次推定語生成部180cからM個の一次推定語(C1(i)、C2(i)、・・・、CN(i))(i=1〜M)を受けて、次式(13)に従って、M個の一次推定語が符号語を構成しているかを検査する。
復号語決定部190bは、次式(13)が成立するようなi(=sとする)がある場合に、外部値対数比算出部の繰返し演算を終了させて、(C1(s)、C2(s)、・・・、CN(s))のうちのKビットの情報ビット部分、すなわち、(C1(s)、C2(s)、・・・、CK(s))を復号語として復号化器5の外部に出力する。
(C1(i),C2(i),…,CN(i))・Ht=0 (i=1〜M)…(13)
一方、復号語決定部190bは、ループの回数、つまり外部値対数比算出部7の演算の繰返し回数が所定値を超えて、かつ、式(12)が成立するようなiがない場合には、次の(1)〜(3)のいずれかに従って、復号語を出力する。
(1) いずれか1個のi(=jとする)を選択して、Kビットの情報部分(C
1(j)、C
2(j)、・・・、C
K(j))を復号語として復号化器5の外部に出力する。
(2) 対数尤度比λn(n=1〜K)によって次の式(13)によって定まるKビットの情報部分(C
1、C
2、・・・、C
K)を復号語として復号化器5の外部に出力する。
(3) (C
1(i),C
2(i),…,C
N(i))・H
tの計算結果において、0の個数が最多となるi(=jとする)を選択して、Kビットの情報部分(C
1(j)、C
2(j)、・・・、C
K(j))を復号語として復号化器5の外部に出力する。
以上のように、第13の実施形態では、各ブロック行処理部で計算された外部値対数比αmnに基づいて計算された一次推定語のうち、復号語としての条件を満足する(つまり、シンドロームが0となる)ものを復号語として決定するので、復号の精度を向上することができる。
[第13の実施形態の変形例]
第13の実施形態において、各ブロック行処理部からの外部値対数比αmnに従って、Cn(i)を算出したが、これに限定するものではない。1個以上M個以下のブロック行処理部から出力される外部値対数比に基づいて、L個(Lは1以上)のCn(i)(i=1〜L)を算出することとしてもよい。
[第12および第13の実施形態の変形例]
第12の実施形態において、多数決で決定された復号語をそのまま出力せずに、多数決で決定された(C1、C2、…、CN)が式(8)の条件を満足する場合には、そのうちのKビット情報部分(C1、C2、…、CK)を出力し、式(8)を満足しない場合には、第13の実施形態で説明した(1)〜(3)のいずれかに従って、復号語を出力するものとしてもよい。
[第14の実施形態]
図44は、第14の実施形態の一次推定語生成部180bおよび復号語決定部190cの構成を表わす図である。
図44を参照して、この一次推定語生成部180bは、第11の実施形態の一次推定語生成部180bと同様である。
すなわち、第11の実施形態と同様に、Qn算出部143は、予め定められた特定の1個のブロック行処理部からの外部値対数比αmnに従って、前述の式(9)に従って、推定受信語(Q1、Q2、・・・、QN)を算出する。
第11の実施形態と同様に、Cn算出部141は、前述の式(10)に従って、一次推定語(C1、C2、・・・、CN)を算出する。
復号語決定部190cは、一次推定語生成部180bで生成された1個の一次推定語のKビットの情報部分(C1、C2、・・・、CK)をそのまま復号語として決定して復号化器5の外部に出力する。
(全体を通じての変形例)
本発明は、上記の実施の形態に限定されるものではなく、たとえば以下のような変形例を含む。
(1) sum-product復号法
本発明の実施形態では、min-sum復号法を用いた場合を例として説明したが、sum-product復号法を用いた場合でも、行処理の中身が変わるだけであって、本発明の実施形態で説明した列処理を行なうことができる。
(2) βを保持する記憶部
第2の実施形態は、第1の実施形態で事前値対数比βを保持する記憶部を無くした構成について説明した。第3〜第9の実施形態およびそれらの変形例では、βを保持する記憶部がある構成、およびβを保持する記憶部が無い構成のどちらを用いてもよい。
(3) 特許文献1に記載の行処理
第2の実施形態の変形例では、第1の実施形態の行処理部の構成を特許文献1に記載の方法に代えた構成について説明した。第3〜第9の実施形態およびそれらの変形例においても、特許文献1に記載の行処理を用いることとしてもよい。
(4) 行処理部内のブロック行処理部
本発明の第1〜第6の実施形態では、行処理部は、パリティ検査行列Hの各ブロックについてのブロック行処理部を少なくとも1個含むものとしたが、これに限定するものではなく、特定の1個または複数個のブロックのブロック行処理部を含まないものとしてもよい。
たとえば、図10に示すパリティ検査行列の場合には、行処理部は、第1ブロック(H1)、第2ブロック(H2)および第3ブロック(H2)それぞれについてのブロック行処理部を少なくとも1個含まなくてもよい。たとえば、行処理部は、第1ブロック(H1)についてのブロック行処理部のみを少なくとも1個含むものとしてよく、または第1ブロック(H1)についてのブロック行処理と第2ブロック(H2)についてのブロック行処理部のみをそれぞれ少なくとも1個含むものとしてもよい。
(5) 本発明の実施形態の共通点について
本発明の第1〜第9の実施形態に共通する点は、従来のようにブロック行処理部が、2個以上のブロックについて更新された外部値対数比を用いて(このために、外部値対数比の加算が必要となる)、行処理を行なうのではなく、ある1つのブロックについての行処理を行なうブロック行処理部は、その1つのブロックまたはそれとは異なる1つのブロックのみについて更新された外部値対数比を用いて、行処理を行なう点にある。本発明は、この基本的な特徴を有するすべての変形例を含む。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 符号化器、2 変調器、3 通信路、4 復調器、4a 復調回路、4b アナログ/デジタル変調回路、5 復号化器、6 対数尤度比算出部、7,7a,7b 外部値対数比算出部、9,9a,11,11a,11b,11c,11d,11e,11f,11g 行処理部、10,10a,10b,10c,10d 列処理部、15,41,65 第1の加算部(β+λ)、16,42,66 第2の加算部(β+λ)、17,67 第3の加算部、18,43,55,69,92,102,202 第1ブロック行処理部、19,44,56,70,71,103,203 第2ブロック行処理部、20,72,85,91,104,204 第3ブロック行処理部、21 第1の加算部(β)、22 第2の加算部(β)、23 第3の加算部(β)、24,45 第1ブロック(β)記憶部、25,46 第2ブロック(β)記憶部、26 第3ブロック(β)記憶部、27,47,73,96 第1ブロック(β+λ)記憶部、28,48,57,74,97,105 第1行処理部、29,49,58,75,98,106 第2行処理部、30,51,76,79 第2ブロック(β+λ)記憶部、31,50,59,77,80,107 第3行処理部、32,52,61,78,81,108 第4行処理部、33,82,86,93 第3ブロック(β+λ)記憶部、34,53,62,83,87,94,109 第5行処理部、35,54,63,84,88,95,110 第6行処理部、60,64 符号・最小値記憶部、68 第4の加算部(β+λ)、89 第5の加算部(β+λ)、90 第6の加算部(β+λ)、101,201 ブロック共通(β+λ)記憶部、111 ブロック共通行処理部、112 上側行処理部、113 下側行処理部、121 第1のセレクタ、122 第2のセレクタ、123 第3のセレクタ、124,125,198,210 セレクト部、131 第1最大値位置記憶部、132,211 第1最大値記憶部、133,212 第2最大値記憶部、134,213 選択器、140,142,143,144 Qn算出部、141,145,146 Cn算出部、180,180a,180b,180c,180d 一次推定語生成部、190,190a,190b,190c 復号語決定部、195,196 加算部(β+λ)、199 復号語生成部、214 絶対値記憶部。