(57)【要約】【課題】ＬＤＰＣ符号で符号化されたデータを復号する復号装置において、Ｐ個の枝に対応したメッセージを同時に更新する構成を確実かつ効率的に可能とする。【解決手段】復号装置は、低密度パリティ検査符号によって符号化されたデータを、低密度パリティ検査符号を規定する検査行列を用いて復号する。検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない１種類の基本構成行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは巡回シフト量が互いに異なる複数の巡回シフト行列の和行列のいずれかである構成行列で、基礎行列の各要素の値と巡回シフト行列の巡回シフト量とが対応するように置き換えることで生成されている。【選択図】図５
2009260692.tif 000002
【特許請求の範囲】
【請求項１】
低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、
前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない１種類の基本構成行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている
ことを特徴とする復号装置。
【請求項２】
前記１種類の基本構成行列は単位行列であることを特徴とする請求項１に記載の復号装置。
【請求項３】
低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、
前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない２種類以上の基本構成行列、互いに同じ位置に‘１’が存在しない複数の基本構成行列の和行列、のいずれかである構成行列で、前記基礎行列の各要素の値と前記２種類以上の基本構成行列とが対応するように置き換えることで生成されている
ことを特徴とする復号装置。
【請求項４】
同時にＰ個ずつの列メッセージを受け取り、前記列メッセージによって行メッセージを更新し、同時にＰ個ずつの前記更新された行メッセージを出力する行処理手段と、
同時にＰ個ずつの行メッセージを受け取り、前記行メッセージによって前記列メッセージを更新し、同時にＰ個ずつの前記更新された列メッセージを出力する列処理手段と、
前記Ｐ個の行メッセージを同時に読み出し又は書き込み可能な行メッセージ記憶手段と、
前記Ｐ個の列メッセージを同時に読み出し又は書き込み可能な列メッセージ記憶手段と
を更に備えることを特徴とする請求項１から３のいずれか一項に記載の復号装置。
【請求項５】
前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々Ｐ個のＲＡＭを含んでいることを特徴とする請求項４に記載の復号装置。
【請求項６】
前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々前記行メッセージ及び前記列メッセージの量子化ビット数のＰ倍のビット幅を有するシフトレジスタを含んでいることを特徴とする請求項４に記載の復号装置。
【請求項７】
前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてＰ列毎にとびとびに、同一の前記ＲＡＭに格納し、
前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてＰ行毎にとびとびに、同一の前記ＲＡＭに格納する
ことを特徴とする請求項５に記載の復号装置。
【請求項８】
前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてＰ列毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納し、
前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてＰ行毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納する
ことを特徴とする請求項６に記載の復号装置。
【請求項９】
前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第ｉ（但し、ｉは１からｍまでの整数）行目内で第１の順序に並べ、前記第１の順序に並べられた要素からなる要素群を、第２の順序で格納する行メッセージ格納先メモリ番号記憶手段と、
前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第ｊ（但し、ｊは１からｎまでの整数）列目内で第３の順序に並べ、前記第３の順序に並べられた要素からなる要素群を、第４の順序で格納する列メッセージ格納先メモリ番号記憶手段と、
前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第３の順序及び前記第４の順序に基づいて列処理番号を付与し、前記列処理番号を、前記第１の順序及び前記第２の順序に従って格納する行メッセージ格納先アドレス記憶手段と、
前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第１の順序及び前記第２の順序に基づいて行処理番号を付与し、前記行処理番号を、前記第３の順序及び前記第４の順序に従って格納する列メッセージ格納先アドレス記憶手段と
を更に備えることを特徴とする請求項７又は８に記載の復号装置。
【請求項１０】
前記第１の順序、前記第２の順序、前記第３の順序及び前記第４の順序は、いずれも昇順又はいずれも降順であることを特徴とする請求項９に記載の復号装置。
【請求項１１】
前記行処理手段から同時にＰ個ずつ出力される前記行メッセージに対し、前記行メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第１巡回シフト・並べ替え手段と、
前記行メッセージ格納先アドレス記憶手段に格納された前記列処理番号に従って、前記行メッセージを前記行メッセージ記憶手段に格納する第１格納手段と、
前記列処理手段から同時にＰ個ずつ出力される列メッセージに対し、前記列メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第２巡回シフト手段・並べ替え手段と、
前記列メッセージ格納先アドレス記憶手段に格納された前記行処理番号に従って、前記列メッセージを前記列メッセージ記憶手段に格納する第２格納手段と
を更に備えることを特徴とする請求項９又は１０に記載の復号装置。
【請求項１２】
低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、
前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない１種類の基本構成行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている
ことを特徴とする復号方法。
【請求項１３】
低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、
前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない２種類以上の基本構成行列、互いに同じ位置に‘１’が存在しない複数の基本構成行列の和行列、のいずれかである構成行列で、前記基礎行列の各要素の値と前記２種類以上の基本構成行列とが対応するように置き換えることで生成されている
ことを特徴とする復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＤＰＣ（Low Density Parity Check：低密度パリティ検査）符号によって符号化されたデータを復号する復号装置、及び復号方法の技術分野に関する。
【背景技術】
【０００２】
この種の復号装置によって復号されるＬＤＰＣ符号は、要素‘０’の数に対して要素‘１’の数が非常に少ないような疎な検査行列によって定義される誤り訂正符号である。ＬＤＰＣ符号はＲ．Ｇ．Ｇａｌｌａｇｅｒにより１９６３年に初めて提案されたが、当時は計算機の性能がそれほど高くないこともありあまり注目されなかった。しかし近年Ｄ．Ｊ．Ｃ．ＭａｃＫａｙやＭ．Ｇ．Ｌｕｂｙらにより再評価され、符号長を長くしていくと符号性能の理論的限界であるシャノン限界に迫る性能を示す符号としてターボ符号と共に注目を集めており、通信、放送、ストレージといった様々な分野で研究が行われている。
【０００３】
上述したＬＤＰＣ符号語の復号をハードウェアで行う場合、例えばハードウェアの１クロック毎に１本の枝に対応したメッセージを求めるのでは復号にかかるクロック数が多くなり過ぎ、他方で、全ての枝に対応したメッセージを同時に求めるのでは、回路規模が大きくなり過ぎてしまう。
【０００４】
このため、もとの検査行列に対して行・列置換を行うことで得られる、Ｐ行Ｐ列の構成行列の組合せで表される変換検査行列を用いて、１クロック毎にＰ個の枝に対応したメッセージを同時に求めることができ、Ｐの値を変化させることで復号にかかるクロック数と回路規模をトレードオフで柔軟に調整することが可能な復号装置を提供するという技術が開示されている（特許文献１参照）。
【０００５】
【特許文献１】特開２００４−３４３１７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した技術では、行処理及び列処理の結果として同時に出力されたＰ個のメッセージをＦＩＦＯ（First-In First-Out）もしくはＲＡＭに格納する際に、複数あるＦＩＦＯから格納先ＦＩＦＯを適切に選択、又はＲＡＭの格納先アドレスを適切に選択すると共にＰ個のメッセージを夫々適切なビット位置に格納することが要求される。ここで、上述した特許文献１には、格納先ＦＩＦＯを選択するためには格納するメッセージが検査行列のどの行（列）に属するかの情報に従い、ＲＡＭの格納先アドレスを選択するためには書き込もうとしているメッセージが次に読み出される際に何番目に読み出されるかを求めその位置に書き込む、という記載しかなく、これらの情報の求め方や保持の方法に関して具体的な記載はされていない。即ち、上述した技術では、メッセージの格納が適切に行えないおそれがあるという技術的問題点がある。
【０００７】
本発明は、例えば上述した問題点に鑑みなされたものであり、１クロック毎にＰ個の枝に対応したメッセージを同時に求めることができＰの値を変化させることで、復号にかかるクロック数と回路規模をトレードオフで柔軟に調整することが可能なＬＤＰＣ符号の復号装置及び復号方法を提供することを課題とする。
【課題を解決するための手段】
【０００８】
本発明の第１の復号装置は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない１種類の基本構成行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている。
【０００９】
本発明の第１の復号装置によれば、その動作時に、復号手段によって前記検査行列を用いた復号が行われる。検査行列は、ｍ行ｎ列の基礎行列の各要素が、Ｐ行Ｐ列の構成行列で置き換えられたものである。構成行列は、ゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない１種類の基本構成行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである。
【００１０】
巡回シフトとは行列の要素をすべて行方向（右方向）に移動させ、一番右側の列にあった要素は一番左側の列に巡回させるように移動させることを言い、巡回シフト量とは何列分移動させるかを表す。巡回シフト量が０の場合は元の行列そのものとなる。尚、ここでの巡回シフトは、行方向の巡回シフトとして説明したが、列方向の巡回シフトであってもよい。
【００１１】
ＬＤＰＣ符号によって符号化されたデータは、複数のチェックノード及び複数の変数ノードを含む二部グラフであるタナーグラフにおいて、メッセージと呼ばれる情報がやり取りされることで復号される。メッセージは、チェックノード及び変数ノード間を結ぶ枝に沿って送られる。
【００１２】
しかしながら、上述した復号を行う場合、例えばハードウェアの１クロック毎に１本の枝に対応したメッセージを求めるのでは復号に時間がかかり過ぎ、他方で、全ての枝に対応したメッセージを同時に求めるのでは、回路規模が大きくなり過ぎてしまう。１クロック毎にＰ個の枝に対応したメッセージを同時に求めるようにすれば、Ｐの値を変化させることでクロック数と回路規模をトレードオフで柔軟に調整することが可能である。そのためにはＰ行の行処理及びＰ列の列処理を並行して行う必要があるが、通常はＰ行（列）の内のある行（列）の処理は終わっても他の行（列）の処理はまだ終わっていないといった状況が起こり処理装置の制御が複雑になってしまう。
【００１３】
しかるに本発明では特に、上述したような特徴を持つＰ行Ｐ列の構成行列で基礎行列の各要素が置き換えられて得られる検査行列を用いている。このため、Ｐ行の行処理又はＰ列の列処理を並列に実行しても、Ｐ行（列）の内のある行（列）の処理は終わっても他の行（列）の処理はまだ終わっていないといった状況は起こりえない。したがって１クロック毎にＰ個の枝に対応したメッセージを同時に求める構成が容易に実現できる。
【００１４】
以上説明したように、本発明の第１の復号装置によれば、Ｐ個の枝に対応したメッセージを同時に求め、Ｐの値を変化させることでクロック数と回路規模をトレードオフで柔軟に調整することが可能なＬＤＰＣ復号器を簡単かつ効率的に実現可能である。
【００１５】
本発明の第１の復号装置の一態様では、前記１種類の基本構成行列は単位行列である。
【００１６】
この態様によれば、基本構成行列が、単位行列とされるため、各メッセージの構成行列内での行番号と列番号との対応関係がより簡単なものとなる。よって、メッセージの格納先の選択を、より簡単なものとすることができる。
【００１７】
本発明の第２の復号装置は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない２種類以上の基本構成行列、互いに同じ位置に‘１’が存在しない複数の基本構成行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記２種類以上の基本構成行列とが対応するように置き換えることで生成されている。
【００１８】
本発明の第２の復号装置によれば、その動作時に、復号手段によって前記検査行列を用いた復号が行われる。検査行列は、ｍ行ｎ列の基礎行列の各要素が、Ｐ行Ｐ列のゼロ行列、又は構成行列のいずれかで置き換えられたものである。構成行列は、各行各列に夫々‘１’が一つしか存在しない２種類以上の基本構成行列、又は互いに同じ位置に‘１’が存在しない複数の基本構成行列の和行列である。
【００１９】
本発明では、基礎行列における各要素の置き換えは、基礎行列の各要素の値と前記２種類以上の基本構成行列とが対応するように行われている。即ち、同じ値をもつ要素は、同じ行列へと置き換えられ、互いに異なる値を持つ要素は、互いに異なる行列へと置き換えられる。
【００２０】
上述したような特徴を持つＰ行Ｐ列の構成行列で基礎行列の各要素が置き換えられて得られる検査行列を用いることにより、第１の復号装置と同様に１クロック毎にＰ個の枝に対応したメッセージを同時に求める構成が容易に実現できる。
【００２１】
以上説明したように、本発明の第２の復号装置によれば、Ｐ個の枝に対応したメッセージを同時に求め、Ｐの値を変化させることでクロック数と回路規模をトレードオフで柔軟に調整することが可能なＬＤＰＣ復号器を簡単かつ効率的に実現可能である。
【００２２】
本発明の第１及び第２の復号装置の一態様では、同時にＰ個ずつの列メッセージを受け取り、前記列メッセージによって行メッセージを更新し、同時にＰ個ずつの前記更新された行メッセージを出力する行処理手段と、同時にＰ個ずつの行メッセージを受け取り、前記行メッセージによって前記列メッセージを更新し、同時にＰ個ずつの前記更新された列メッセージを出力する列処理手段と、前記Ｐ個の行メッセージを同時に読み出し又は書き込み可能な行メッセージ記憶手段と、前記Ｐ個の列メッセージを同時に読み出し又は書き込み可能な列メッセージ記憶手段とを更に備える。
【００２３】
この態様によれば、行処理手段、列処理手段、行メッセージ記憶手段及び列メッセージ記憶手段を備えることで、復号手段は１クロック毎にＰ個の枝に対応したメッセージを同時に更新することが可能となり、Ｐの値を適当に定めることで復号にかかるクロック数と回路規模をトレードオフで柔軟に調節することができる。尚、ここでの「同時」とは、例えばハードウェアにおける１クロックでまとめて実行可能という意味であり、時間的には厳密に同時でなくともよい。
【００２４】
上述した行メッセージ記憶手段及び列メッセージ記憶手段を更に備える態様では、前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々Ｐ個のＲＡＭ（Random Access Memory）を含んでいるように構成してもよい。
【００２５】
このように構成すれば、行メッセージ記憶手段及び列メッセージ記憶手段が、確実にＰ個の行メッセージ又は列メッセージを同時に読み書きすることができる。
【００２６】
上述した行メッセージ記憶手段及び列メッセージ記憶手段を更に備える態様では、前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々前記行メッセージ及び前記列メッセージの量子化ビット数のＰ倍のビット幅を有するシフトレジスタを含んでいるように構成してもよい。
【００２７】
このように構成すれば、行メッセージ記憶手段には行メッセージの量子化ビット数のＰ倍のビット幅を有するシフトレジスタが含まれ、列メッセージ記憶手段には列メッセージの量子化ビット数のＰ倍のビット幅を有するシフトレジスタが含まれる。よって、行メッセージ記憶手段及び列メッセージ記憶手段が確実にＰ個の行メッセージ及び列メッセージを同時に読み書きすることができる。
【００２８】
尚、「量子化ビット数」とは、アナログ信号からデジタル信号への変換の際に、信号を何段階の数値で表現するかを示す値である。具体的には、量子化ビット数の値が高いほど、元の信号に忠実なデータが得られるが、データ量はその分増大する。
【００２９】
上述した行メッセージ記憶手段及び列メッセージ記憶手段が、夫々Ｐ個のＲＡＭを含む態様では、前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてＰ列毎にとびとびに、同一の前記ＲＡＭに格納し、前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてＰ行毎にとびとびに、同一の前記ＲＡＭに格納するように構成してもよい。
【００３０】
このように構成すれば、行メッセージ記憶手段においては、行メッセージが、検査行列における列方向に詰めて格納される。具体的には、基礎行列からの置き換えによって得られた検査行列において、要素が‘０’となる部分（即ち、メッセージが値を持たない部分）については、情報が無いものと扱われて、列方向で次の要素に係る情報が詰めて格納される。これにより、行メッセージ記憶手段の記憶容量を少なくすることができる。
【００３１】
また、行メッセージ記憶手段においては、行メッセージが、検査行列におけるＰ列毎にとびとびに同一のＲＡＭに格納される。具体的には、例えば検査行列における１列目に係る行メッセージが格納されたＲＡＭには、１＋Ｐ列、１＋２Ｐ列、１＋３Ｐ列…に係る行メッセージが格納される。別の言い方をすれば、構成行列における列番号が同じ行メッセージ同士は同一のＲＡＭに格納される。このように行メッセージを格納すれば、互いに同時に読み書きする必要のあるＰ個の行メッセージ（これらは一の構成行列に含まれる）が常にＰ個別々のＲＡＭに格納されるので、確実にＰ個の行メッセージを同時に読み書きすることができる。更に、上述したように、行メッセージが列方向に詰めて格納されたとしても、構成行列は各列に‘１’（即ち、情報を有する要素）が１つしかないような行列であるため、互いに同時に読み書きする必要のあるＰ個の行メッセージは、各ＲＡＭにおける同一のアドレスに格納されることとなる。よって、行メッセージを列方向に詰めて格納しても、格納先アドレスが、列毎にバラバラになってしまうことを防止でき、Ｐ個のＲＡＭ夫々に対し共通のアドレスにアクセスすることで同時に必要となるＰ個の行メッセージを読み書きすることができる。
【００３２】
他方で、列メッセージ記憶手段においても、上述した行メッセージ記憶手段と同様に、列メッセージが、検査行列における行方向に詰めて格納される。また、列メッセージが、Ｐ行毎にとびとびに同一のＲＡＭに格納される。（構成行列における行番号が同じ列メッセージ同士は同一のＲＡＭに格納される。）よって行メッセージと同様に、列メッセージ記憶手段の記憶容量を少ないものとしつつ、同時に読み書きする必要のあるＰ個の列メッセージを常にＰ個別々のＲＡＭに格納し、さらに共通のアドレスへのアクセスで同時に必要となるＰ個の列メッセージを読み書きすることが可能となる。
【００３３】
以上説明したように、本構成に係る復号装置によれば、行メッセージ記憶手段及び列メッセージ記憶手段の記憶容量を低減させつつ、各メッセージを好適に格納することが可能となり、より好適なデータの復号が可能である。尚、行メッセージ記憶手段及び列メッセージ記憶手段の、いずれか一方において上述したような処理を行うようにしても、その一方における効果は得られる。
【００３４】
上述した行メッセージ記憶手段及び列メッセージ記憶手段がシフトレジスタを含む態様では、前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてＰ列毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納し、前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてＰ行毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納する。
【００３５】
このように構成すれば、行メッセージ記憶手段においては、行メッセージが、検査行列における列方向に詰めて格納される。具体的には、基礎行列からの置き換えによって得られた検査行列において、要素が‘０’となる部分（即ち、メッセージが値を持たない部分）については、情報が無いものと扱われて、列方向で次の要素に係る情報が詰めて格納される。これにより、行メッセージ記憶手段の記憶容量を少なくすることができる。
【００３６】
また、行メッセージ記憶手段においては、行メッセージが、検査行列におけるＰ列毎にとびとびにシフトレジスタの同一ビット位置に格納される。具体的には、例えば１列目に係る行メッセージが格納されたビット位置には、１＋Ｐ列、１＋２Ｐ列、１＋３Ｐ列…に係る行メッセージが格納される。別の言い方をすれば、構成行列における列番号が同じ行メッセージ同士はシフトレジスタの同一ビット位置に格納される。このように行メッセージを格納すれば、互いに同時に読み書きする必要のあるＰ個の行メッセージ（これらは一の構成行列に含まれる）が常に同一シフトレジスタ中の別々のビット位置に格納される。更に上述したように、行メッセージが列方向に詰めて格納されたとしても、構成行列は各列に‘１’（即ち、情報を有する要素）が１つしかないような行列であるため、同一の構成行列に含まれるＰ個のメッセージは、シフトレジスタにおける同一の深さ位置に格納されることとなる。よって、行メッセージを列方向に詰めて格納しても、格納先シフトレジスタ深さ位置が、列毎にバラバラになってしまうことを防止でき、一つのシフトレジスタに対しアクセスすることで同時に必要となるＰ個のメッセージを読み書きすることができる。
【００３７】
他方で、列メッセージ記憶手段においても、上述した行メッセージ記憶手段と同様に、列メッセージが、検査行列における行方向に詰めて格納される。また、列メッセージが、Ｐ行毎にとびとびにシフトレジスタの同一のビット位置に格納される。（構成行列における行番号が同じ列メッセージ同士はシフトレジスタの同一ビット位置に格納される。）よって行メッセージ記憶手段と同様に列メッセージ記憶手段の記憶容量を少ないものとしつつ、一つのシフトレジスタへのアクセスで同時に必要となるＰ個の列メッセージを読み書きすることが可能となる。
【００３８】
以上説明したように、本構成に係る復号装置によれば、行メッセージ記憶手段及び列メッセージ記憶手段の記憶容量を低減させつつ、各メッセージを好適に格納することが可能となり、より好適なデータの復号が可能である。尚、行メッセージ記憶手段及び列メッセージ記憶手段の、いずれか一方において上述したような処理を行うようにしても、その一方における効果は得られる。
【００３９】
上述した、行メッセージ及び列メッセージを行方向又は列方向に詰めて、とびとびに格納する態様では、前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第ｉ（但し、ｉは１からｍまでの整数）行目内で第１の順序に並べ、前記第１の順序に並べられた要素からなる要素群を、第２の順序で格納する行メッセージ格納先メモリ番号記憶手段と、前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第ｊ（但し、ｊは１からｎまでの整数）列目内で第３の順序に並べ、前記第３の順序に並べられた要素からなる要素群を、第４の順序で格納する列メッセージ格納先メモリ番号記憶手段と、前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第３の順序及び前記第４の順序に基づいて列処理番号を付与し、前記列処理番号を、前記第１の順序及び前記第２の順序に従って格納する行メッセージ格納先アドレス記憶手段と、前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第１の順序及び前記第２の順序に基づいて行処理番号を付与し、前記行処理番号を、前記第３の順序及び前記第４の順序に従って格納する列メッセージ格納先アドレス記憶手段とを更に備えるように構成してもよい。
【００４０】
このように構成すれば、行メッセージ格納先メモリ番号記憶手段によって、基礎行列におけるゼロ行列以外で置き換えられる要素が、先ず、第ｉ行目内で第１の順序に並べられる。（第１の順序はすべての行において共通でもよいし、各行で異なる順序としてもよい）尚、この際、ゼロ行列で置き換えられる要素を考えていないのは、メッセージが対応する値を有しないため、上述したように詰めて格納されるからである。
【００４１】
続いて、第１の順序で並べ替えられた要素は各行毎に１つの要素群とされる。そして要素群は、第２の順序で行メッセージ格納先メモリ番号記憶手段に格納される。尚、ここでの「第１の順序」とは、各行内において行処理に係る列メッセージを読み出す順序でありなおかつ更新された行メッセージを書き込む順序でもある。「第２の順序」とは、どのような行の順番で各行の行処理を行うかを表す。第１の順序、第２の順序共に予め所定の順序として設定されている。
【００４２】
また他方で、基礎行列におけるゼロ行列以外で置き換えられる要素が、先ず、第ｊ列目内で第３の順序に並べ替えられる（第３の順序はすべての列において共通でもよいし、各列で異なる順序としてもよい）。
【００４３】
続いて、第３の順序で並べ替えられた要素は各列毎に１つの要素群とされる。そして要素群は、第４の順序で列メッセージ格納先メモリ番号記憶手段に格納される。尚、ここでの「第３の順序」とは各列内において列処理に係る行メッセージを読み出す順序でありなおかつ更新された列メッセージを書き込む順序でもある。「第４の順序」とは、どのような列の順序で各列の列処理を行うかを表す。第３の順序、第４の順序共に予め所定の順序として設定されている。
【００４４】
ここで、行メッセージは行処理装置から行毎に出力されるが、格納先の行メッセージ記憶装置にはＰ‘列’毎にとびとびに格納しなければならない。他方で、列メッセージは列処理装置から列毎に出力されるが、格納先の列メッセージ記憶装置にはＰ‘行’毎にとびとびに格納しなければならない。したがって、行メッセージ及び列メッセージを行メッセージ記憶装置及び列メッセージ記憶装置に含まれるメモリ（例えばＰ個のＲＡＭ）の内のどれに格納すればよいかという問題が生じる。
【００４５】
これに対して上述の行メッセージ格納先メモリ番号記憶手段に格納された要素は、行処理装置により更新され同時にＰ個ずつ出力された行メッセージを行メッセージ記憶手段に書き込む際の、格納先メモリを決める情報となっており、Ｐ個の行メッセージをこの情報に従って並び替えることで適切な格納先に割り振られる。具体的には、例えば基本構成行列が単位行列であり、基礎行列の各要素の値と、巡回シフト行列の巡回シフト量とが対応するような変換で検査行列が得られる場合、行メッセージ格納先メモリ番号記憶手段に格納された値分だけ、Ｐ個の行メッセージを巡回させるように並べ替えて行メッセージ記憶手段に送ればよい。よって、より容易に行メッセージ格納先メモリを選択することができる。
【００４６】
他方で、上述の列メッセージ格納先メモリ番号記憶手段に格納された要素は、列処理装置により更新され同時にＰ個ずつ出力された列メッセージを列メッセージ記憶手段に書き込む際の、格納先メモリを決める情報となっており、Ｐ個の列メッセージをこの情報に従って並び替えることで適切な格納先に割り振られる。具体的には、例えば基本構成行列が単位行列であり、基礎行列の各要素の値と、巡回シフト行列の巡回シフト量とが対応するような変換で検査行列が得られる場合、列メッセージ格納先メモリ番号記憶手段に格納された値分だけ、Ｐ個の列メッセージを（行メッセージの場合とは逆向きに）巡回させるように並べ替えて列メッセージ記憶手段に送ればよい。よって、上述した行メモリ番号記憶手段の場合と同様に、容易に列メッセージ格納先メモリを選択することができる。
【００４７】
本態様では更に、基礎行列におけるゼロ行列以外で置き換えられる要素は、第３の順序及び第４の順序に基づいて列処理番号が付与され、第１の順序及び第２の順序に従って行メッセージ格納先アドレス記憶手段に格納される。即ち、ゼロ行列以外で置き換えられる要素は、先ず第３の順序及び第４の順序（即ち、列処理に係る順序）に基づいて、列処理番号が付与される。続いて、付与された列処理番号は、第１の順序及び第２の順序（即ち、行処理に係る順序）に従って、行メッセージ格納先アドレス記憶手段に格納される。
【００４８】
また他方で、検査行列におけるゼロ行列以外で置き換えられる要素は、第１の順序及び第２の順序に基づいて行処理番号が付与され、第３の順序及び第４の順序に従って列メッセージ格納先アドレス記憶手段に格納される。即ち、ゼロ行列以外で置き換えられる要素は、先ず第１の順序及び第２の順序（即ち、行処理に係る順序）に基づいて、行処理番号が付与される。続いて、付与された行処理番号は、第３の順序及び第４の順序（即ち、列処理に係る順序）に従って、列メッセージ格納先アドレス記憶手段に格納される。
【００４９】
行・列処理の後でメッセージを記憶装置等に書き込む際に、記憶されたメッセージが次回に読み込まれる順番を書き込み先アドレスとして書き込みを行うことにより、メッセージを読み込む際の処理を軽減することができる。即ち、メッセージを読み込む際には、アドレスの昇順で読み込めば済む。但し、行処理と列処理でメッセージを処理する順番が異なるため、書き込み先アドレスを選択する処理は、通常複雑なものとなってしまう。
【００５０】
これに対しても本発明は特に、行メッセージ格納先アドレス記憶手段に格納された列処理番号は、行処理装置によって更新され同時にＰ個ずつ出力された行メッセージを行メッセージ記憶手段に書き込む際の格納先アドレス情報となっており、このアドレスに従って書き込めば、次回の列処理において読み出されるべき順番どおりにアドレス０から順に書き込まれることになる。これにより、より容易に行メッセージを格納することが可能となる。
【００５１】
他方で列メッセージ格納先アドレス記憶手段に格納された行処理番号は、上述した行メッセージ格納先アドレス記憶手段の場合と同様に、列処理装置によって更新され同時にＰ個ずつ出力された列メッセージを列メッセージ記憶手段に書き込む際の格納先アドレス情報となっており、このアドレスに従って書き込めば、次回の行処理において読み出されるべき順番どおりにアドレス０から順に書き込まれることになる。これにより、より容易に列メッセージを格納することが可能となる。
【００５２】
以上説明したように、本構成に係る復号装置によれば、行処理装置及び列処理装置により更新され出力された行メッセージ及び列メッセージを、より好適に行メッセージ記憶手段及び列メッセージ記憶手段に格納することが可能である。
【００５３】
上述した行メッセージ格納先メモリ番号記憶手段及び列メッセージ格納先メモリ番号記憶手段を備える態様では、前記第１の順序、前記第２の順序、前記第３の順序及び前記第４の順序は、いずれも昇順又はいずれも降順であるように構成してもよい。
【００５４】
このように構成すれば、第１の順序、第２の順序、第３の順序及び第４の順序がいずれも昇順又は降順に統一されているため、行メッセージ格納先メモリ番号記憶手段、列メッセージ格納先メモリ番号記憶手段、行メッセージ格納先アドレス記憶手段及び列メッセージ格納先アドレス記憶手段における処理を比較的簡単なものとすることができる。よって、装置の構成や制御方法を簡易なものとしつつ、効率的な復号を行うことが可能である。尚、第１の順序、第２の順序、第３の順序及び第４の順序のいずれかが、昇順又は降順とされる場合であっても、処理を簡単化するという効果は少なからず得られる。
【００５５】
或いは、上述した行メッセージ格納先メモリ番号記憶手段、列メッセージ格納先メモリ番号記憶手段、行メッセージ格納先アドレス記憶手段及び列メッセージ格納先アドレス記憶手段を備える態様では、前記行処理手段から同時にＰ個ずつ出力される前記行メッセージに対し、前記行メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第１巡回シフト・並べ替え手段と、前記行メッセージ格納先アドレス記憶手段に格納された前記列処理番号に従って、前記行メッセージを前記行メッセージ記憶手段に格納する第１格納手段と、前記列処理手段から同時にＰ個ずつ出力される列メッセージに対し、前記列メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第２巡回シフト手段・並べ替え手段と、前記列メッセージ格納先アドレス記憶手段に格納された前記行処理番号に従って、前記列メッセージを前記列メッセージ記憶手段に格納する第２格納手段とを更に備えるように構成してもよい。
【００５６】
このように構成すれば、第１巡回シフト・並べ替え手段において、行メッセージは、行メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフトされる、又は並べ替えられる。そして、巡回シフト又は並べ替えられた行メッセージは、第１格納手段によって、行メッセージ格納先アドレス記憶手段に格納された列処理番号に従って、行メッセージ記憶手段に格納される。これにより、行メッセージは、行メッセージ記憶装置に含まれる適切なメモリの、次回の読み出しが容易となるような適切なアドレス位置に格納される。即ち、行メッセージをより好適に行処理結果記憶手段に格納することが可能となる。
【００５７】
また、第２巡回シフト・並べ替え手段において、列メッセージは、列メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフトされる、又は並べ替えられる。そして、巡回シフト又は並べ替えられた列メッセージは、第２格納手段によって、列メッセージ格納先アドレス記憶手段に格納された行処理番号に従って、列メッセージ記憶手段に格納される。これにより、列メッセージは、列メッセージ記憶装置に含まれる適切なメモリの、次回の読み出しが容易となるような適切なアドレス位置に格納される。即ち、列メッセージをより好適に行処理結果記憶手段に格納することが可能となる。
【００５８】
以上説明したように、本構成に係る復号装置によれば、行処理結果及び列処理結果によって得られた行メッセージ及び列メッセージを、より好適且つ確実に、行処理結果記憶手段及び列処理結果記憶手段に格納することが可能である。
【００５９】
本発明の第１の復号方法は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない１種類の基本構成行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている。
【００６０】
本発明の第１の復号方法によれば、基礎行列の要素を１種類の基本構成行列を基にした上述のような特徴を持つＰ行Ｐ列の構成行列に置き換えることで得られた検査行列を用いて復号が行われるため、上述した本発明の復号装置の場合と同様に、Ｐ個の枝に対応するメッセージを同時に求めるＬＤＰＣ復号を、簡単かつ効率的に実現することが可能である。
【００６１】
尚、本発明の第１の復号方法においても、上述した本発明の第１の復号装置における各種態様と同様の各種態様を採ることが可能である。
【００６２】
本発明の第２の復号方法は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、前記検査行列は、ｍ行ｎ列（但し、ｍ及びｎはｍ＜ｎである自然数）の基礎行列の各要素を、Ｐ行Ｐ列（但し、Ｐは自然数）のゼロ行列、又は各行各列に夫々‘１’が一つしか存在しない２種類以上の基本構成行列、互いに同じ位置に‘１’が存在しない複数の基本構成行列の和行列、のいずれかである構成行列で、前記基礎行列の各要素の値と前記２種類以上の基本構成行列とが対応するように置き換えることで生成されている。
【００６３】
本発明の第２の復号方法によれば、基礎行列の要素を上述のような特徴を持つ２種類以上の基本構成行列を含む構成行列に置き換えることで得られた検査行列を用いて復号が行われるため、上述した本発明の復号装置の場合と同様に、Ｐ個の枝に対応するメッセージを同時に求めるＬＤＰＣ復号を、簡単かつ効率的に実現することが可能である。
【００６４】
尚、本発明の第２の復号方法においても、上述した本発明の第２の復号装置における各種態様と同様の各種態様を採ることが可能である。
【００６５】
本発明の作用及び他の利得は後に説明する実施するための最良の形態から明らかにされる。
【発明を実施するための最良の形態】
【００６６】
以下では、本発明の実施形態について図を参照しつつ説明する。
【００６７】
先ず、本発明の復号装置によって復号されるデータを符号化するＬＤＰＣ符号について、図１から図４を参照して説明する。ここに図１は、ＬＤＰＣ符号を規定する検査行列Ｈの一例を示す図であり、図２は、検査行列Ｈに対応して生成されるタナーグラフの一例を示す図である。
【００６８】
図１及び図２において、ＬＤＰＣ符号によって符号化された符号語データは、検査行列と１対１対応したタナーグラフと呼ばれる二部グラフ上においてメッセージと呼ばれる情報が繰り返しやり取りされることで復号される。尚、検査行列Ｈは、典型的には非常に多い行数及び列数（例えば、数千から数万）によって構成され、また要素‘０’に比べて要素‘１’が極めて少ない行列であるが、図１及び以降の図については、説明の便宜上、比較的行数及び列数が少なく、また要素‘１’の数が比較的多い行列として図示してある。
【００６９】
タナーグラフは検査行列Ｈの行数Ｍに等しい数のチェックノードと検査行列Ｈの列数Ｎに等しい数の変数ノードを含む。図１及び図２の例では検査行列Ｈの行数が７、列数が１６なのでタナーグラフには７個のチェックノードと１６個の変数ノードが含まれる。図２におけるチェックノードｃ０〜ｃ６は、検査行列Ｈの第０行目〜第６行目に夫々対応している。（本発明の説明中では、行列の行・列番号、装置番号、メモリのアドレス等は１ではなく０から始まるものとしている。）また変数ノードｖ０〜ｖ１５は、検査行列Ｈの第０列目〜第１５列目に夫々対応している。チェックノードと変数ノードの間を結ぶ線を枝と呼び、これは検査行列Ｈ中の要素‘１’に対応している。検査行列Ｈの第ｉ行第ｊ列の要素が‘１’の場合、チェックノードｃｉと変数ノードｖｊが枝で結ばれている。したがって、枝は検査行列Ｈ中の要素‘１’と同じ数だけ存在する。具体的には、図１に示す検査行列Ｈの０行０列目の要素は‘１’であるので、チェックノードｃ０及び変数ノードｖ０間には枝が存在する。これに対し、検査行列Ｈの０行１列目の要素は‘０’であるので、チェックノードｃ０及び変数ノードｖ１間には枝が存在しない。
【００７０】
チェックノードから変数ノードへ枝に沿って送られるのは対数外部値比αと呼ばれる情報で、変数ノードからチェックノードへ枝に沿って送られるのは対数事前値比βと呼ばれる情報である。対数外部値比αと対数事前値比βを合わせてメッセージと呼ぶ。以降では、対数外部値比α及び対数事前値比βと、メッセージという表現を適宜使い分けながら説明する。また対数外部値比αを「α」、対数事前値比βを「β」と省略して呼ぶこともある。対数外部値比αと対数事前値比βは検査行列Ｈと同じ形の行列として表され、検査行列において要素が‘１’である部分のみ値を持つ。図１で示した検査行列の場合、図３及び図４に示すように対数外部値比αと対数事前値比βは＊印の部分のみ値を持つ。チェックノードｃｉから変数ノードｖｊへ送られる対数外部値比αｉ，ｊはαを行列で表した場合第ｉ行第ｊ列の要素であり、式（１）によって求められる。
【００７１】
【数１】
2009260692.tif 000003
変数ノードｖｊからチェックノードｃｉへ送られる対数事前値比βｉ,ｊはβを行列で表した場合第ｉ行第ｊ列の要素であり、式（２）によって求められる。
【００７２】
【数２】
2009260692.tif 000004
ここで関数ｆはＧａｌｌａｇｅｒ関数でありｆ（ｘ）＝ｌｎ[{ｅｘｐ（ｘ）＋１}／{ｅｘｐ（ｘ）−１}]、Ａ(ｉ)は検査行列の第ｉ行目において要素が‘１’である列インデックス集合、Ｂ（ｊ）は検査行列の第ｊ列目において要素が‘１’である行インデックス集合、Ａ(ｉ)＼ｊはＡ(ｉ)からｊを除いた集合を表し、λｊはｊ番目の受信値ｙｊと通信路モデルによって決まる受信ＬＬＲ（Ｌｏｇ  Ｌｉｋｅｌｉｈｏｏｄ  Ｒａｔｉｏ：対数尤度比）であり、ＢＰＳＫ変調＋ＡＷＧＮ通信路の場合λｊ＝２ｙｊ／σ２（σ２はノイズの分散）である。
【００７３】
式（１）及び式（２）を見ると、αの計算にはβが用いられ、βの計算にはαが用いられている。ＬＤＰＣ符号の復号においてはαの計算とβの計算とが交互に繰り返し行われる。すなわちβを用いて計算（更新）されたαを用いてβを更新し、さらに更新されたβを用いてαを更新する・・・という処理を繰り返す。
【００７４】
図３は、行処理について対数外部値比及び対数事前値比を用いて示す概念図であり、図４は、列処理について対数外部値比及び対数事前値比を用いて示す概念図である。
【００７５】
図３に示すように、αの更新作業を行列上で考えると、βの値を行毎に用いてαの値を行毎に更新するので、αを更新する作業を行処理と呼ぶ。行処理はすべての行に対して行われる。また、αは行処理により更新されるメッセージであるので、以降の説明において行メッセージαもしくは行メッセージとも表現する。
【００７６】
図４に示すように、対数事前値比βの更新作業を行列上で考えると、αの値を列毎に用いてβの値を列毎に更新するので、βを更新する作業を列処理と呼ぶ。列処理はすべての列に対して行われる。また、βは列処理により更新されるメッセージであるので、以降の説明において列メッセージβもしくは列メッセージとも表現する。
【００７７】
行処理による行メッセージαの更新と列処理による列メッセージβの更新とを繰り返した後、下記の式（３）で表される推定シンボル系列
【００７８】
【数３】
2009260692.tif 000005
は、下記の式（４）に従って求められる。
【００７９】
【数４】
2009260692.tif 000006
ここで、推定シンボル系列が下記の式（５）のような検査方程式
【００８０】
【数５】
2009260692.tif 000007
を満足する場合、推定シンボル系列を復号結果として出力し、検査方程式を満足しない場合はαとβの更新をさらに繰り返す。一般にはαとβの更新を反復する最大回数を決めておき、最大回数の反復を行っても検査方程式を満足しない場合は、例えば誤り検出信号と共に最終的な推定シンボル系列をさらに後段の別の誤り訂正復号器（例えばリードソロモン復号器）に渡す、といった処理が行われる。以上がＬＤＰＣ符号語の一般的な復号の説明である。
【００８１】
次に、本実施形態に係る復号装置の構成及び動作について説明する。尚、以下では本実施形態に係る復号方法を、本実施形態に係る復号装置の動作と併せて説明する。
【００８２】
＜第１実施形態＞
先ず、第１実施形態に係る復号装置の構成について、図５を参照して説明する。ここに図５は、第１実施形態に係る復号装置の構成を示すブロック図である。また図６は、行処理装置の構成を示すブロック図であり、図７は、列処理装置の構成を示すブロック図である。
【００８３】
図５において、第１実施形態に係る復号装置は、行処理装置群１０１と、列処理装置群１０２と、行メッセージ記憶装置１０３と、列メッセージ記憶装置１０４と、受信ＬＬＲ記憶装置１０５と、行メッセージ格納先メモリ番号ＲＯＭ１０６と、列メッセージ格納先メモリ番号ＲＯＭ１０７と、行メッセージ格納先アドレスＲＯＭ１０８と、列メッセージ格納先アドレスＲＯＭ１０９と、巡回シフト回路１１０及び１１１と、推定符号語計算部１１２と、検査方程式チェック部１１３と、制御部１１４とを備えて構成されている。
【００８４】
図６において、行処理装置群１０１は、本発明の「行処理手段」の一例であり、例えば並列動作可能なＰ個の行処理装置２００を含んで構成されている。行処理装置２００は、絶対値計算部２０１と、ｆ関数計算部２０２及び２０７と、積算器２０３と、イネーブル付きレジスタ２０４及び２１０と、遅延素子２０５及び２１１と、減算器２０６と、符号（±）計算部２０８と、ＸＯＲ計算部２０９及び２１２とを備えてなる。
【００８５】
ｆ関数計算部２０２及び２０７は、例えばルックアップテーブルを用いて実現する。遅延素子２０５及び２１１は、検査行列Ｈの行重み（１行内に存在する‘１’の数）と同じクロック数だけ入力データを遅延させる素子であり、例えば行重みと同じ段数のシフトレジスタを用いて実現する。
【００８６】
以下、行処理装置２００の動作について説明する。行処理装置２００は、上述した式（１）の計算を行う装置であり、列メッセージβの１行分（ここでは第ｉ行とする）の要素βｉ,ｊ’ｊ’∈Ａ（ｉ）が１クロック毎に順に入力される。入力されたβｉ,ｊ’ｊ’∈Ａ（ｉ）は、まず絶対値計算部２０１と符号計算部２０８に送られる。絶対値計算部２０１から出力された｜βｉ,ｊ’ ｜ｊ’∈Ａ（ｉ）は、ｆ関数計算部２０２に入力され、ｆ（｜βｉ,ｊ’ ｜）ｊ’∈Ａ（ｉ）となり、積算器２０３で１行分積算され、下記の式（６）で表される値となる。
【００８７】
【数６】
2009260692.tif 000008
ｆ関数計算部２０２の出力は遅延素子２０５にも送られ、行重みと同じクロック数だけ遅延された（積算器２０３の積算が終わるのを待った）後、減算器２０６に送られる。減算器２０６では１行分すべての和である式（６）で表される値から、１つの値ｆ（｜βｉ,ｊ ｜）ｊ∈Ａ（ｉ）が減算された、下記の式（７）で表される値
【００８８】
【数７】
2009260692.tif 000009
がすべてのｊ∈Ａ（ｉ）に関して順に出力される。
【００８９】
１行分すべての和である式（６）で表される値は、すべてのｊ∈Ａ（ｉ）に関して減算を行っている間変わらないようにイネーブル付きレジスタ２０４を通して減算器２０６に入力される。（イネーブル付きレジスタ２０４は１行分の積算が終わった時点でのみイネーブルされる。）減算器２０６から順に出力される式（７）で表される値はｆ関数計算部２０７に送られ、下記の式（８）で表される値
【００９０】
【数８】
2009260692.tif 000010
となり、式（１）の絶対値部分が得られたことになる。
【００９１】
次に、符号部分の計算を説明する。符号計算部２０８は、入力の符号がマイナスの場合“１”を出力し、入力の符号がプラスの場合“０”を出力する。入力されたβｉ,ｊ’ｊ’∈Ａ（ｉ）の正負を表す１、０の情報は、ＸＯＲ計算部２０９に送られる。ＸＯＲ計算部２０９は、入力の一つが自身の出力となっており、１行分のβｉ,ｊ’ｊ’∈Ａ（ｉ）の符号の正負を表す１、０の情報を用いたＸＯＲ演算を行い、下記の式（９）で表される値
【００９２】
【数９】
2009260692.tif 000011
を計算する。この結果は行内で負の要素が奇数個である場合は“１”となり、偶数個である場合は“０”となる。符号計算部２０８の出力は遅延素子２１１にも送られ、行重みと同じクロック数だけ遅延された（ＸＯＲ計算部２０９の計算が終わるのを待った）後、ＸＯＲ計算部２１２に送られ、先ほどのＸＯＲ計算部２０９の出力である数式（９）で表される値と再びＸＯＲ計算が行われて、下記の式（１０）で表される値
【００９３】
【数１０】
2009260692.tif 000012
がすべてのｊ∈Ａ（ｉ）に関して順に出力される。イネーブル付きレジスタ２１０は、上述の絶対値計算の場合と同様に、式（９）で表される値がすべてのｊ∈Ａ（ｉ）に関してＸＯＲ計算を行っている間、変わらないようにするためのものである。以上が行処理装置２００の動作についての説明である。
【００９４】
図５に戻り、行処理装置群１０１は、例えば並列動作可能なＰ個の上述した行処理装置２００を含んでいるので同時にＰ個ずつの列メッセージを受け取り、行メッセージを更新し、更新した行メッセージを同時にＰ個ずつ出力する。言い換えれば、Ｐ行分の行処理を並列に行う。
【００９５】
図７において、列処理装置群１０２は、本発明の「列処理手段」の一例であり、例えば並列動作可能なＰ個の列処理装置３００を含んで構成されている。列処理装置３００は、積算器３０１と、イネーブル付きレジスタ３０２と、遅延素子３０３と、加減算器３０４とを備えてなる。
【００９６】
遅延素子３０３は検査行列Ｈの列重み（１列内に存在する‘１’の数）と同じクロック数だけ入力データを遅延させる素子で、例えば列重みと同じ段数のシフトレジスタを用いて実現する。以下、列処理装置３００の動作について説明する。
【００９７】
列処理装置３００は上述した式（２）の計算を行う装置であり、行メッセージαの１列分（ここでは第ｊ列とする）の要素αｉ’,ｊｉ’∈Ｂ（ｊ）が１クロック毎に順に入力される。入力されたαｉ’,ｊｉ’∈Ｂ（ｊ）は、積算器３０１で積算され、下記の式（１１）で表される値となる。
【００９８】
【数１１】
2009260692.tif 000013
αｉ’,ｊｉ’∈Ｂ（ｊ）は遅延素子３０３にも送られ、列重みと同じクロック数だけ遅延された（積算器３０１の積算が終わるのを待った）後、加減算器３０４に送られる。加減算器３０４には第ｊ列目に対応した受信ＬＬＲλjと先ほどの積算器３０１からの式（１１）で表される値と遅延素子３０３で遅延されたαｉ,ｊｉ∈Ｂ（ｊ）が入力され、下記の式（１２）
【００９９】
【数１２】
2009260692.tif 000014
が計算される。１列分すべての和である式（１１）で表される値は、すべてのｉ∈Ａ（ｊ）に関して減算を行っている間、変わらないようにイネーブル付きレジスタ３０２を通して加減算器３０４に入力される。（イネーブル付きレジスタ３０２は１列分の積算が終わった時点でのみイネーブルされる。）以上が列処理装置３００の動作についての説明である。
【０１００】
再び図５に戻り、列処理装置群１０２は、例えば並列動作可能なＰ個の上述した列処理装置３００を含んでいるので、同時にＰ個ずつの行メッセージを受け取り、列メッセージを更新し、更新した列メッセージを同時にＰ個ずつ出力する。言い換えれば、Ｐ列分の列処理を並列に行う。
【０１０１】
行メッセージ記憶装置１０３は、例えばＰ個のＲＡＭやシフトレジスタ等を含んで構成されており、Ｐ個のデータを同時に読み出し又は書き込むことが可能とされている。行メッセージ記憶装置１０３は、本発明の「行メッセージ記憶手段」の一例であり、行処理装置群１０１から同時にＰ個ずつ出力される行メッセージを一時的に格納し、列処理装置群１０２に同時にＰ個ずつ出力する。
【０１０２】
列メッセージ記憶装置１０４は、例えばＰ個のＲＡＭやシフトレジスタ等を含んで構成されており、Ｐ個のデータを同時に読み出し又は書き込むことが可能とされている。列メッセージ記憶装置１０４は、本発明の「列メッセージ記憶手段」の一例であり、列処理装置軍１０２から同時にＰ個ずつ出力される列メッセージを一時的に格納し、行処理装置群１０１に同時にＰ個ずつ出力する。
【０１０３】
受信ＬＬＲ記憶装置１０５は、例えばＰ個のＲＡＭやシフトレジスタ等を含んで構成されており、Ｐ個のデータを同時に読み出すことが可能とされている。受信ＬＬＲ記憶装置１０５は、列処理装置群１０２及び推定符号語計算部１１２に対して、夫々同時にＰ個ずつの受信ＬＬＲを出力する。
【０１０４】
行メッセージ格納先メモリ番号ＲＯＭ１０６は、本発明の「行メッセージ格納先メモリ番号記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素を所定の順番で記憶させておく。
【０１０５】
列メッセージ格納先メモリ番号ＲＯＭ１０７は、本発明の「列メッセージ格納先メモリ番号記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素を所定の順番で記憶させておく。
【０１０６】
行メッセージ格納先アドレスＲＯＭ１０８は、本発明の「行メッセージ格納先アドレス記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素に所定の順番で番号を付与し、付与した番号を所定の順番で記憶させておく。
【０１０７】
列メッセージ格納先アドレスＲＯＭ１０９は、本発明の「列メッセージ格納先アドレス記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素に所定の順番で番号を付与し、付与した番号を所定の順番で記憶させておく。
【０１０８】
巡回シフト回路１１０及び１１１は、本発明の「第１巡回シフト・並べ替え手段」「第２巡回シフト手段・並べ替え手段」の一例であり、入力されたＰ個のメッセージを巡回シフトさせて出力する。尚、巡回シフト回路１１０及び１１１は、マルチプレクサを利用した並べ替え回路等によって置き換えることも可能である。
【０１０９】
推定符号語計算部１１２は、例えば演算回路等を含んで構成されており、入力される行メッセージ及び受信ＬＬＲから推定符号語を計算する。式（３）の計算を行う推定符号語の計算は、式（２）の計算を行う列処理と非常に似ているので、推定符号語計算部１１２と列処理装置群１０２を一つにまとめてもよい。
【０１１０】
検査方程式チェック部１１３は、例えば演算回路等を含んで構成されており、推定符号語計算部１１２から出力される推定符号語が、検査方程式を満足するか否かを判定する。また、判定結果を制御部１１４に出力する。
【０１１１】
制御部１１４は、例えば演算回路等を含んで構成されており、検査方程式チェック部１１３における判定結果を受けて、装置の反復処理を終了させて、推定符号語を復号結果として出力するように制御する。尚、制御部１１４は、上述した制御に加えて、装置全体の様々な制御を行う。
【０１１２】
次に、第１実施形態に係る復号装置における復号の際に用いられる検査行列Ｈについて、図８及び図９を参照して説明する。ここに図８は、検査行列Ｈの基礎となる基礎行列Ｈｂａｓｅの一例を示す行列図であり、図９は、基礎行列Ｈｂａｓｅから変換された検査行列Ｈの一例を示す行列図である。尚、検査行列Ｈは、要素‘０’及び要素‘１’がマトリクス状に並ぶ行列であるが、図９では、ゼロ行列として置き換えられた部分に大きく‘０’と記載し、それ以外の部分で要素が‘０’となる部分は空白として図示してある。これは以降の図においても同様とする。
【０１１３】
図８において、基礎行列Ｈｂａｓｅは、負の要素‘−１’と、負でない要素‘０’〜‘４’との、計６種類の要素を含んで構成されている。ここで、本発明の「基礎行列」の一例である基礎行列Ｈｂａｓｅは、各要素をＰ行Ｐ列（ここでは、Ｐ＝５）のゼロ行列、又は基本構成行列である単位行列を０〜（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、のいずれかである構成行列に置き換えることで、本発明の「検査行列」の一例である検査行列Ｈに変換される。尚、基本構成行列は単位行列に限らず、各行各列に夫々‘１’が一つしか存在しないＰ行Ｐ列の行列に代えることも可能である。その場合については第２実施形態で説明する。
【０１１４】
図９において、基礎行列Ｈｂａｓｅは、負の要素‘−１’がＰ行Ｐ列のゼロ行列に置き換えられている。また、負でない要素‘０’〜‘４’は、各要素の値が巡回シフト量と対応するように、単位行列の巡回シフト行列として置き換えられている。即ち、要素‘０’は巡回シフトされない単位行列そのものとして置き換えられ、要素‘１’は、単位行列を右方向に１列シフトさせた行列に置き換えられる。それ以外の要素も同様に、単位行列を右方向に２列〜４列シフトさせた行列に置き換えられる。単位行列を右方向に５列シフトさせた行列は、元の単位行列に戻る。よって、基礎行列Ｈｂａｓｅには５以上の要素は含まれない。
【０１１５】
続いて、第１実施形態に係る復号装置の動作について、図５に加えて、図１０及び図１１を参照して説明する。ここに図１０は、第１実施形態に係る復号装置の初期化段階と反復０回目の動作について示すフローチャートであり、図１１は、第１実施形態に係る復号装置の反復１回目以降の動作について示すフローチャートである。尚、以下では図８及び図９で示した検査行列Ｈを用いて復号する場合について説明する。
【０１１６】
（初期化）
図１０において、第１実施形態に係る復号装置の動作が開始されると、先ず制御部１１４が反復回数Ｌに‘０’を代入し、Ｌ＝０とする（ステップＳ１）。続いて、図５には図示しない前段の復調装置から送られてくる受信ＬＬＲ系列λを受信ＬＬＲ格納用メモリ１０５に格納する（ステップＳ２）。受信ＬＬＲ系列λは、Ｎ個のデータλ０〜λＮ−１からなる。
【０１１７】
ここで‘Ｎ’は符号長に等しく、検査行列Ｈの列数でもある。受信ＬＬＲ格納用メモリ１０５は、同時にＰ個ずつのデータを読み出し可能となっており、たとえばＰ個のＲＡＭを含んで構成される。Ｐ個のＲＡＭをλＲＡＭ０〜λＲＡＭ（Ｐ−１）とすると、検査行列Ｈの第０列〜第（Ｐ−１）列に対応する受信ＬＬＲλ０〜λＰ−１を夫々λＲＡＭ０〜λＲＡＭ（Ｐ−１）のアドレス０に格納し、第Ｐ列〜第（２Ｐ−１）列に対応する受信ＬＬＲλＰ〜λ２Ｐ−１を夫々λＲＡＭ０〜λＲＡＭ（Ｐ−１）のアドレス１に格納し、第２Ｐ列〜第（３Ｐ−１）列に対応する受信ＬＬＲλ２Ｐ〜λ３Ｐ−１を夫々λＲＡＭ０〜λＲＡＭ（Ｐ−１）のアドレス２に格納し、・・・のように格納する。受信ＬＬＲλの格納アドレスは後述する「第４の順序」に対応したものである。
【０１１８】
図１０に戻り、更に行メッセージαと列メッセージβをゼロに初期化する（ステップＳ３）。但し、ここでは必ずしも行メッセージ記憶装置１０３と列メッセージ刻装置１０４の内容をゼロに書き換える必要はなく、直後の行・列処理で両記憶装置の値を読み出さなければそれで構わない。
【０１１９】
以上の動作が初期化段階の動作であり、以降は実際に列処理及び行処理が繰り返し行われることで、データが復号される。
【０１２０】
（反復０回目の処理）
復号動作時には、先ず受信ＬＬＲ記憶装置１０５から同時にＰ個ずつ読み出される受信ＬＬＲλ、及び行メッセージ記憶装置１０３から同時にＰ個ずつ読み出される行メッセージαが、列処理装置群１０２に送られる。列処理装置群１０２は、受信ＬＬＲλ及び行メッセージαを用いて列処理を行う（ステップＳ４）。尚、Ｌ＝０回目では行メッセージαはゼロに初期化されているため、ここで行メッセージαを読み出す意味は無いが、Ｌ＝１回目以降の処理において同じ動作で済むように、ここでは敢えて行メッセージαを読み出すようにしている。列処理が行われると、列処理装置群１０２からは更新された列メッセージβが同時にＰ個ずつ出力される。また、上述した列処理と並行して、受信ＬＬＲλ及び行メッセージαは、推定符号語計算部１１２にも送られている。推定符号語計算部１１２は、受信ＬＬＲλ及び行メッセージαから、反復０回目における推定符号語を計算する。
【０１２１】
列処理によって出力された列メッセージβは、巡回シフト回路１１１によって列メッセージ格納先メモリ番号ＲＯＭ１０７の内容に従った巡回シフト量だけ巡回シフトされる。列メッセージ記憶装置１０４は、巡回シフトされた列メッセージβを列メッセージ格納先アドレスＲＯＭ１０９の内容に従ったアドレスに格納する（ステップＳ５）。尚、上述した受信ＬＬＲλ及び行メッセージαがメモリから読み出される順番、巡回シフト回路１１１の動作、列メッセージ格納先メモリ番号ＲＯＭ１０７の内容、列メッセージ格納先アドレスＲＯＭ１０９の内容などの詳細は、Ｌ＝１回目以降の反復処理の説明の際に述べる。
【０１２２】
検査方程式チェック部１１３は、推定符号語計算部１１２において算出された推定符号語が、検査方程式を満足するか否かを判定する（ステップＳ６）。ここで、推定符号語が検査方程式を満足すると判定されると（ステップＳ６：ＹＥＳ）、制御部１１４から反復を終える指示が出て、このときの推定符号語が装置から出力される（ステップＳ７）。即ち、データの復号は終了する。他方で、推定符号語が検査方程式を満足しないと判定されると（ステップＳ６：ＮＯ）、装置は１回目の反復処理を開始する。
【０１２３】
（反復１回目以降の処理）
図１１において、反復処理が開始されると、先ず制御部１１４が反復回数ＬにＬ＋１を代入する（ステップＳ１１）。即ち、反復回数Ｌは、インクリメントされる。続いて、反復回数Ｌが最大反復回数Ｌｍａｘを越えているか否かを判定する（ステップＳ１２）。ここで、反復回数Ｌが最大反復回数Ｌｍａｘを越えている場合（ステップＳ１２：ＮＯ）、装置は１回前の反復時（即ち、Ｌが１少ない時点）の推定符号語を復号結果として出力して処理を終了する（ステップＳ１８）。このとき１回前の反復時の推定符号語を出力せずに検査方程式を満足しないことを示す制御信号を出力し誤り検出としてもよい。他方で、反復回数Ｌが最大反復回数Ｌｍａｘを越えていない場合（ステップＳ１２：ＹＥＳ）、１回前の列処理によって更新された列メッセージβを用いて、行処理（行メッセージαの更新）が行われる（ステップＳ１３）。行処理の際には、先ず列メッセージβが列メッセージ記憶装置１０４から同時にＰ個ずつ読み出され、行処理装置群１０１に送られる。
【０１２４】
ここで、列メッセージβが列メッセージ記憶装置１０４にどのように格納されているかについて、図１２及び図１３を参照して説明する。ここに図１２は、列メッセージβの一例を示す行列図であり、図１３は、列メッセージβの各要素の格納について示す概念図である。尚、図１２では、βを構成する各要素を、適宜省略して図示してある。また、上述したように、列メッセージ記憶装置１０４はＰ個のデータを同時に読み出し、又は書き込み可能なメモリであればよいが、ここではＰ個（即ち、５個）のＲＡＭによって構成されている場合を例にとり説明する。図１３では、列メッセージ記憶装置１０４に含まれる５個のＲＡＭを、夫々βＲＡＭ０〜βＲＡＭ４として図示してある。
【０１２５】
図１２に示すように、列メッセージβは検査行列Ｈ（図９参照）と対応した形をしており、検査行列Ｈ中で‘１’となっているところに値（βｉ，ｊ，ｘ）を持っている。βｉ，ｊ，ｘの３つの添え字（ｉ，ｊ，ｘ）は、ｉが行ブロック番号、ｊが列ブロック番号、ｘがブロック（構成行列）内での行番号を表している。尚、行ブロックとは、図中における横方向の実線で区切られたブロックを指しており、上から順に行ブロック０、行ブロック１、行ブロック２、・・・と並んでいる。列ブロックは、図中における縦方向の実線で区切られたブロックを指しており、左から順に列ブロック０、列ブロック１、列ブロック２、・・・と並んでいる。ブロック内での行番号は、図中における上にあるものから順に０、１、２、３、４となっている。同一ブロック内のβｉ，ｊ，ｘの添え字ｉ及びｊは全て同じになる。ここで、行ブロック番号（即ち、添え字ｉ）が０であるということは、Ｐ行Ｐ列の構成行列で置き換える前の基礎行列Ｈｂａｓｅ（図８参照）において、第０行目の要素であった、という意味である。これは、列ブロック番号についても同様である。
【０１２６】
図１２及び図１３において、列メッセージβの各要素βｉ，ｊ，ｘは、列メッセージ記憶装置１０４を構成する５個のＲＡＭ（βＲＡＭ０〜βＲＡＭ４）に、Ｐ行毎にとびとびに格納されている。即ち、各行ブロック内での０行目の要素がβＲＡＭ０に、１行目の値がβＲＡＭ１にというように格納されている。従って、βｉ，ｊ，ｘの３つ目の添え字ｘは、格納先のβＲＡＭｘのメモリ番号ｘとも言える。
【０１２７】
一のβＲＡＭｘにおいて各要素βｉ，ｊ，ｘは、各行を図における左から右に、上の行から下の行に向かう順番で格納されている。また、格納はβＲＡＭｘの各々において、アドレス０から開始される。具体的には、βＲＡＭ０にはアドレス０にβ０，０，０、アドレス１にβ０，１，０、アドレス２にβ０，２，０というような順で格納されている。ここで特に、βｉ，ｊ，ｘの値が存在しない部分（即ち、検査行列において‘０’となっている部分）については、値が詰めて格納されている。すなわち、アドレス４にβ０，４，０が格納されると、アドレス５にβ０，６，０が格納される。以降は同じ行に値がないため、Ｐ（＝５）行下の行に移り、β１，１，０がアドレス６に格納される。
【０１２８】
行処理装置群１０１における一の行処理装置は、図３で示したように、１つの行の中に存在するβｉ，ｊ，ｘを用いて、それらと同じ位置に対応するαｉ，ｊ，ｙ（図１４参照）を順に出力する。Ｐ個の行夫々を処理する行処理装置を行処理装置０〜行処理装置４とすると、行処理装置０は、先ずβＲＡＭ０のアドレス０から順に読み出されたβ０，０，０、β０，１，０、β０，２，０、β０，３，０、β０，４，０、β０，６，０を用いて、α０，０，０、α０，１，３、α０，２，３、α０，３，１、α０，４，０、α０，６，３を更新する。そして、更新されたα０，０，０、α０，１，３、α０，２，３、α０，３，１、α０，４，０、α０，６，３を順に出力する。出力されたαｉ，ｊ，ｙの格納については後述する。Ｐ個の行処理装置は全て並列に動作する。よって、行処理装置０が検査行列Ｈの第０行目の行処理を行っている間、行処理装置１は検査行列Ｈの第１行目の行処理を、行処理装置２は検査行列Ｈの第２行目の行処理を、行処理装置３は検査行列Ｈの第３行目の行処理を、行処理装置４は検査行列Ｈの第４行目の行処理を夫々行う。こうして検査行列Ｈの第０行目から第４行目（即ち、行ブロック０）の行処理が終わると、続けて第５行目から第９行目（即ち、行ブロック１）の行処理が行われ（行処理装置０が第５行目を、行処理装置１が第６行目を、・・・行処理装置４が第９行目を夫々処理する）、更に行ブロック２、行ブロック３と続けて処理される。
【０１２９】
本実施形態に係る復号装置では、列メッセージβの各要素βｉ，ｊ，ｘを図１３に示すように格納してあるので、βＲＡＭ０〜βＲＡＭ４の各々のアドレス０から順番に読み出して、行処理装置０〜行処理装置４に夫々そのまま受け渡せば、上述したような行処理がスムーズに行える。
【０１３０】
図１１に戻り、行処理が終わると、出力された行メッセージαを行メッセージ記憶装置１０３に格納する（ステップＳ１４）。続いて、列処理装置群１０２が、格納された行メッセージα及び受信ＬＬＲλを用いて、列処理（列メッセージβの更新）を行う。列処理の際には、行メッセージαが、行メッセージ記憶装置１０３から同時にＰ個ずつ読み出され、列処理装置群１０２を構成するＰ個の列処理装置（列処理装置０〜列処理装置４）に送られる。
【０１３１】
以下では、行メッセージαが行メッセージ記憶装置１０３にどのように格納されているかについて、図１４及び図１５を参照して詳細に説明する。ここに図１４は、行メッセージαの一例を示す行列図であり、図１５は、行メッセージαの各要素の格納について示す概念図である。尚、行メッセージ記憶装置１０３は、上述した列メッセージ記憶装置１０４と同様に、Ｐ個のＲＡＭ（αＲＡＭ０〜αＲＡＭ４）により構成されているものとして説明する。
【０１３２】
図１４に示すように、行メッセージαは、列メッセージβと同様に、検査行列Ｈに対応した形をしており、検査行列Ｈ中で‘１’となっているところに値を持っている。行メッセージαを構成する要素αｉ，ｊ，ｙの３つの添え字は、ｉが行ブロック番号、ｊが列ブロック番号、ｙがブロック（構成行列）内での列番号を夫々表している。添え字ｉ及びｊは、βｉ，ｊ，ｘと同じように、行ブロック番号と列ブロック番号（即ち、基礎行列Ｈｂａｓｅにおける行番号、列番号）を表すが、３つ目の添え字ｙだけはβｉ，ｊ，ｘのｘと異なり、ブロック（構成行列）内での‘列’番号を表している。検査行列Ｈにおける同じ位置に存在する行メッセージαｉ，ｊ，ｙと列メッセージβｉ，ｊ，ｘのｘとｙの値が異なる点に注意すべきであり、本発明のポイントは構成行列に特別な条件を課すことでｘ及びｙ間での相互の変換が元となる基礎行列の要素の値に応じて決まるようにしている点にある。
【０１３３】
図１５において、行メッセージ記憶装置１０３を構成する５個のＲＡＭ（αＲＡＭ０〜αＲＡＭ４）には、Ｐ列毎にとびとびに、αｉ，ｊ，ｙの値が分配され、格納されている。即ち、各列ブロックにおける０列目の値がαＲＡＭ０に、１列目の値がαＲＡＭ１にというように格納されている。従って、αｉ，ｊ，ｙの３つ目の添え字ｙは、格納先のαＲＡＭｙのメモリ番号ｙとも言える。この点については、βｉ，ｊ，ｘと同様である。
【０１３４】
一のαＲＡＭｙにおいて各要素αｉ，ｊ，ｙは、各列を図における上から下に、左の列から右の列に向かう順番で格納されている。また、格納はαＲＡＭｙの各々において、アドレス０から開始される。具体的には、αＲＡＭ０にはアドレス０にα０，０，０、アドレス１にα２，０，０、アドレス２にα３，０，０というような順で格納されている。また、α３，０，０が格納されると、以降は同じ列に値がないため、Ｐ列右の列に移り、α０，１，０がアドレス３に格納される。ここで特に、αｉ，ｊ，ｙの値が存在しない部分（即ち、検査行列において‘０’となっている部分）については、値が詰めて格納されている。
【０１３５】
列処理装置群１０２における一の列処理装置は、図４で示したように、１つの列の中に存在するαｉ，ｊ，ｙを用いて、それらと同じ位置に対応するβｉ，ｊ，ｘを順に出力する（実際にはαだけでなく、その列に対応する受信ＬＬＲλも用いる）。例えば、列処理装置０は、先ずαＲＡＭ０のアドレス０から順に読み出されたα０，０，０、α２，０，０、α３，０，０と、受信ＬＬＲ記憶装置のアドレス０から読み出された検査行列の第０列に対応する受信ＬＬＲλ0を用いて、β０，０，０、β２，０，１、β３，０，０を更新する。そして、更新されたβ０，０，０、β２，０，１、β３，０，０を順に出力する。出力されたβ０，０，０、β２，０，１、β３，０，０は、図１３で説明した通りに格納されるべきであるが、これをどのように実現するか（βＲＡＭ０〜βＲＡＭ４のどれに、またどのアドレスに格納するか）は後述する。
【０１３６】
Ｐ個の列処理装置は全て並列に動作する。よって、列処理装置０が検査行列Ｈの第０列目の列処理を行っている間、列処理装置１は検査行列Ｈの第１列目の列処理を、列処理装置２は検査行列Ｈの第２列目の列処理を、列処理装置３は検査行列Ｈの第３列目の列処理を、列処理装置４は検査行列Ｈの第４列目の列処理を夫々行う。こうして検査行列Ｈの第０列目から第４列目（即ち、列ブロック０）の列処理が終わると、続けて第５列目から第９列目（即ち、列ブロック１）の列処理が行われ（列処理装置０が第５列目を、列処理装置１が第６列目を、・・・列処理装置４が第９列目を夫々処理する）、更に列ブロック２、列ブロック３、・・・と続けて処理される。
【０１３７】
本実施形態に係る復号装置では、行メッセージαの各要素αｉ，ｊ，ｙを図１５に示すように格納してあるので、αＲＡＭ０〜αＲＡＭ４の各々のアドレス０から順番に読み出して、列処理装置０〜列処理装置４に夫々そのまま受け渡せば、上述したような列処理がスムーズに行える。
【０１３８】
上述のように、行メッセージα及び列メッセージβがともに、読み出されるべき順に各ＲＡＭの連続したアドレス位置に格納されているので、読み出しの際は何も問題ないが、行・列処理装置から出力された値を書き込む際には、どのＲＡＭのどのアドレスに書き込むかが問題となる。「書き込もうとしているメッセージを用いて次回の処理を行う処理装置にデータを渡すＲＡＭに、次回読み出されるときの順番のとおり」に格納すればいいわけであるが、具体的には基礎行列Ｈｂａｓｅの情報を、所定のルールに基づいて記録した記憶装置（例えば、ＲＯＭ）に基づいて書き込み先のＲＡＭとアドレスを決める。
【０１３９】
以下では、行処理装置及び列処理装置によって出力された行メッセージα及び列メッセージβの、書き込み時の処理について、図１２から図１５に加えて、図１６から図２１を参照して詳細に説明する。ここに図１６は、行メッセージαの書き込み先メモリ選択時の処理について示す概念図であり、図１７は、列メッセージβの書き込み先メモリ選択時の処理について示す概念図である。また図１８は、行メッセージ格納先メモリ番号ＲＯＭに格納された情報を示す概念図であり、図１９は行メッセージ格納先アドレスＲＯＭに格納された情報を示す概念図である。図２０は、列メッセージ格納先メモリ番号ＲＯＭに格納された情報を示す概念図であり、図２１は、列メッセージ格納先アドレスＲＯＭに格納された情報を示す概念図である。
【０１４０】
図１２、図１３、図１４、図１５おいて、行処理装置０が検査行列Ｈにおける第０行目の行処理を左から右に向かって行う場合、β０，０，０、β０，１，０、β０，２，０、β０，３，０、β０，４，０、β０，６，０がβＲＡＭ０のアドレス０から順に読み出され、これらを用いて更新されたα０，０，０、α０，１，３、α０，２，３、α０，３，１、α０，４，０、α０，６，３が出力される。ここで、添え字ｉ及びｊはβｉ，ｊ，ｘ及びαｉ，ｊ，ｙ間で共通であり、３つ目の添え字だけが変化している点に着目する。３つ目の添え字は、格納先のＲＡＭのメモリ番号でもあると前述したが、この場合、出力されたαｉ，ｊ，ｙは順に、αＲＡＭ０、αＲＡＭ３、αＲＡＭ３、ＲＡＭ１、ＲＡＭ０、ＲＡＭ３に格納されるべきである。格納先であるαＲＡＭｙのメモリ番号ｙを順に並べてみると、０、３、３、１、０、３となる。これは、基礎行列Ｈｂａｓｅの０行目におけるゼロ行列以外で置き換えられる要素（−１以外の要素）を左から右に並べたものと同じである（図８参照）。
【０１４１】
図１６において、行処理装置０が検査行列Ｈの第０行目の行処理を行うのと並行して、行処理装置１は検査行列Ｈの第１行目の行処理を行う。これにより、β０，０，１、β０，１，１、β０，２，１、β０，３，１、β０，４，１、β０，６，１がβＲＡＭ１のアドレス０から順に読み出され、これらを用いて更新されたα０，０，１、α０，１，４、α０，２，４、α０，３，２、α０，４，１、α０，６，４が順に出力される。ここでも上述した行処理装置０の場合と同様に、添え字ｉ及びｊはβｉ，ｊ，ｘ及びαｉ，ｊ，ｙ間で共通であり、３つ目の添え字だけが変化している。行処理装置１から出力されたαｉ，ｊ，ｙの格納先であるαＲＡＭｙのメモリ番号ｙを順に並べてみると、１、４、４、２、１、４となる。これは、行処理装置０の場合（０、３、３、１、０、３）に、全て１ずつ足したものとなっている。
【０１４２】
同様に、行処理装置２、３、４の場合の格納先αＲＡＭメモリ番号ｙは、行処理装置０の場合の０、３、３、１、０、３に、注目している行処理装置番号を加えたものとなる。但し、装置番号を加えた結果が５以上になった場合は、ｍｏｄ５（５で割った余り）とする。このようになるのは、検査行列Ｈを構成するブロック（構成行列）が、単位行列を巡回シフトした巡回シフト行列となっているためである。
【０１４３】
行メッセージαは検査行列ＨにおいてＰ列毎にとびとびに同一のＲＡＭに格納されるので、Ｐ行Ｐ列の構成行列内での列番号（０〜Ｐ−１）に等しいメモリ番号のαＲＡＭに格納される。したがって書き込み先メモリ番号を求めるには行処理装置ｘが処理するメッセージの構成行列内での行番号ｘを構成行列内での列番号ｙに変換してやればよい。構成行列がＰ行Ｐ列の単位行列を０〜（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列となっている場合、巡回シフト量がｓである構成行列中の一つの‘１’に注目するとその構成行列内での行番号ｘと列番号ｙとの間には、ｙ＝ｘ＋ｓ（ｍｏｄＰ）なる関係が成立する。したがって、行処理装置ｘから出力されるαｉ，ｊ，ｙは、出力された順にメモリ番号ｙがｘ＋ｓ（ｍｏｄ５）であるαＲＡＭｙに書き込まれればよい。ここでｓは行ブロック０の巡回シフト量（すなわちＨｂａｓｅの第０行）を左から右に向かって順に読んでいった値である。行処理装置０〜行処理装置４の５つすべての出力をこの法則に従って各αＲＡＭに分配して格納すればよいが、実はこの処理は図１６に示すように５つの行処理装置からの出力を、行ブロック０の巡回シフト量（０、３、３、１、０、３）と同じ分だけ巡回シフトすることでまとめて実現できる。
【０１４４】
５つの行処理装置が０行目から４行目まで（即ち、行ブロック０）の行処理を終えると、次に５行目から９行目まで（即ち、行ブロック１）の行処理が行われる。ここでも、更新されたαｉ，ｊ，ｙの書き込み先であるαＲＡＭｙのメモリ番号ｙは、行処理装置番号ｘを行ブロック１の巡回シフト量を左から右に並べた（２、１、３、２、３、０）に加えたものとなる。また、これは、検査行列Ｈの１０行目以降（即ち、行ブロック２以降）でも同様である。
【０１４５】
以上の結果から、行メッセージαを書き込む際の書き込み先であるαＲＡＭｙのメモリ番号ｙは、例えば図１８に示すような、基礎行列Ｈｂａｓｅにおけるゼロ行列以外で置き換えられる要素を、各行左から右へ、上の行から下の行に向かって順に記録した行メッセージ格納先メモリ番号ＲＯＭ１０６によって決めることができる。尚、ここでの各行左から右へという順番が、本発明の「第１の順序」の一例であり、上の行から下の行にという順番が、本発明の「第２の順序」の一例である。行メッセージαは、行メッセージ格納先メモリ番号ＲＯＭ１０６に格納された値分だけ、巡回シフト回路１１０によって巡回シフトされた後に格納される。尚、図１８のように基礎行列Ｈｂａｓｅの情報を記憶することで必要な記憶容量が少なくて済むという利点もある。即ち、図１８では基礎行列Ｈｂａｓｅの要素‘−１’を記憶する必要がなく、更に‘−１’以外の要素も「第何行第何列か」という情報を記憶する必要がない。
【０１４６】
次に、αＲＡＭｙ内での書き込み先アドレスについて説明する。
【０１４７】
図１６において、行処理装置０が、初めに実行する第０行目の行処理では、上述したように、α０，０，０、α０，１，３、α０，２，３、α０，３，１、α０，４，０、α０，６，３が順に出力される。ここでαｉ，ｊ，ｙは、次回の列処理の際に図１４における各列を上から下に、左の列から右の列に向かって順番に読み出される。このような順番でα０，０，０が読み出される順番を考えると、０番目であることが分かる。即ち、α０，０，０は、次回の列処理で０番目に読み出されるように、アドレス０に書き込まれればよい。
【０１４８】
続いて、行処理装置０からα０，０，０の次に出力されるα０，１，３の場合を考えると、３番目（即ち、α０，０，３、α２，０，３、α３，０，３、α０，１，３の順で３番目）にくるので、次回の列処理で３番目に読み出されるように、アドレス３に書き込まれればよい。以下同様に、行処理装置０から出力されるα０，２，３、α０，３，１、α０，４，０、α０，６，３は、アドレス６、９、１２、１８に夫々書き込まれればよい。これらのアドレスを順に並べると、０、３、６、９、１２、１８となる。
【０１４９】
ここで特に、行処理装置０が検査行列Ｈの第０行目の行処理を行っているのと並行して、行処理装置１〜行処理装置４は、夫々第１行目〜第４行目の行処理を行う。そして、行処理装置１〜行処理装置４から出力されるαｉ，ｊ，ｙの書き込み先アドレスを、上述した行処理装置０の場合と同様に数えて考えてみると、順番に０、３、６、９、１２、１８となり、行処理装置０の場合と同じになる。これは構成行列の各列に必ず‘１’が一つずつ存在するようになっており、αの要素を列方向に詰めるように格納しても一の構成行列に含まれるメッセージ同士は常に同じアドレスに格納されるからである。
【０１５０】
また、第５行目から第９行目まで（即ち、行ブロック１）の行処理についても同様に考えると、書き込み先アドレスを並べたものは、４、７、１０、１５、１９、２１となり、第１０行目から第１４行目（即ち、行ブロック２）では、１、８、１３、１６、２０、２２となり、第１５行目から第１９行目（即ち、行ブロック３）では、２、５、１１、１４、１７、２３となる。
【０１５１】
以上の結果から、行メッセージαを書き込む際のαＲＡＭｙにおけるアドレスは、例えば図１９に示すような、基礎行列Ｈｂａｓｅのゼロ行列以外で置き換えられる要素に、各列上から下（これは本発明の「第３の順序」の一例である）へ、左の列から右の列に向かって（これは本発明の「第４の順序」の一例である）順に番号を与え（この番号は本発明の「列処理番号」の一例である）、その番号を各行左から右（これは本発明の「第１の順序」の一例である）へ、上の行から下の行に向かって（これは本発明の「第２の順序」の一例である）順に記録した行メッセージ格納先アドレスＲＯＭ１０８の内容によって決まる。行メッセージ書き込み時には行メッセージ格納先アドレスＲＯＭ１０８のアドレス０から順に読み出した値のアドレスに、更新された行メッセージが順に格納される。
【０１５２】
再び図１１に戻り、行処理（ステップＳ１３）と更新された行メッセージ（対数外部値比）αの格納（ステップＳ１４）が終わると、受信ＬＬＲλと更新された行メッセージαを用いて、列処理（列メッセージβの更新）を行う（ステップＳ１５）。ここで、列処理装置群１０２によって更新されたβの格納も、上述したαと同じように、基礎行列Ｈｂａｓｅのゼロ行列以外に置き換えられる要素を、縦方向に詰めた形で、各列を上から下に、左の列から右の列に向かって順に記録した列メッセージ格納先メモリ番号ＲＯＭ１０７（図２０参照）によって、格納先のβＲＡＭｘのメモリ番号ｘを決めることができる。尚、ここでの各列を上から下にという順番が、本発明の「第３の順序」の一例であり、左の列から右の列に向かってという順番が、本発明の「第４の順序」の一例である。また、基礎行列Ｈｂａｓｅのゼロ行列以外で置き換えられる要素に、各行左から右に、上の行から下の行に向かって順に番号を与え、その番号を縦方向に詰めた形で各列を上から下に、左の列から右の列に向かって順に記録した列メッセージ格納先アドレスＲＯＭ１０９（図２１参照）の内容をアドレス０から順に読み出した値が、共通の書き込み先アドレスになる。但し、列処理装置ｙから出力されたβの書き込み先メモリ番号ｘの求め方は、列メッセージ格納先メモリ番号ＲＯＭ１０７から読み出した巡回シフト量ｓを用いてｘ＝Ｐ−ｓ＋ｙ（ｍｏｄＰ）となり、αの場合（ｙ＝ｘ＋ｓ（ｍｏｄＰ））と異なり、実際の各βＲＡＭへの振り分けは図１７に示すようにαの場合とは逆方向の巡回シフトによってまとめて実現できる。以上のように、列メッセージβは、列メッセージ記憶装置１０４に格納される（ステップＳ１６）。
【０１５３】
上述したＬ＝０回目の処理と同様に、列処理が行われると同時に、受信ＬＬＲλと行メッセージαは推定符号語計算部１１２にも送られ、反復Ｌ回目での推定符号語が計算される。推定符号語は検査方程式チェック部１１３に送られ、検査方程式を満足した場合（ステップＳ１７：ＹＥＳ）、制御部１１４から反復を終える指示が出て、このときの推定符号語が復号結果として出力される（ステップＳ１８）。推定符号語が検査方程式を満足しない場合は（ステップＳ１７：ＮＯ）、反復回数Ｌがインクリメントされて、繰り返し上述したような一連の処理が行われる。以上のような反復処理によって、データは復号される。
【０１５４】
ここで、第１実施形態に係る復号装置の変形例について、図２２から図２５を参照して説明する。ここに図２２は、行メッセージ格納先メモリ番号ＲＯＭ１０６及び列メッセージ格納先アドレスＲＯＭ１０９と、列メッセージ格納先メモリ番号ＲＯＭ１０７との関係を示す概念図である。図２３は、ＲＡＭの代わりにシフトレジスタを用いて行メッセージ記憶装置１０３及び列メッセージ記憶装置１０４を構成する場合の概念図である。また図２４は、行メッセージ格納先シフトレジスタ番号ＲＯＭに格納される情報を示す概念図であり、図２５は、列メッセージ格納先シフトレジスタ番号ＲＯＭに格納される情報を示す概念図である。
【０１５５】
図２２において、行メッセージ格納先メモリ番号ＲＯＭ１０６に格納された情報を、列メッセージ格納先アドレスＲＯＭ１０９に格納されたアドレス順で読むと、列メッセージ格納先メモリ番号ＲＯＭ１０７に格納された情報と同じものとなる。よって、列メッセージ格納先メモリ番号ＲＯＭ１０７は構成に含まれなくともよい。また、列メッセージ格納先メモリ番号ＲＯＭ１０７に代えて、行メッセージ格納先メモリ番号ＲＯＭ１０６を含まないように構成してもよい。この場合、行メッセージ格納先メモリ番号ＲＯＭ１０６に格納される情報は、列メッセージ格納先メモリ番号ＲＯＭ１０７に格納された情報を、行メッセージ格納先アドレスＲＯＭ１０８に格納されたアドレス順で読むことで得られる。
【０１５６】
図２３において、図５に示すような、行メッセージ記憶装置１０３及び列メッセージ記憶装置１０４を、ＲＡＭではなくシフトレジスタによって構成することも可能である。この場合は図２３に示すように、行ブロック数と同じ個数のβ格納用シフトレジスタ（βシフトレジスタ０〜３）と列ブロック数と同じ個数のα格納用シフトレジスタ（αシフトレジスタ０〜７）によって構成される。βシフトレジスタはβの量子化ビット数のＰ倍のビット幅を持ち、深さは行重みに等しい。αシフトレジスタはαの量子化ビット数のＰ倍のビット幅を持ち、深さは列重みに等しい。
【０１５７】
図２３においては破線で区切られた部分がメッセージ一つ分のビット幅になっている。一のブロック（構成行列）に含まれるＰ個のメッセージはシフトレジスタの同一深さ位置に連結して格納される。βシフトレジスタ０〜３を横方向に連結して考えるとＲＡＭを用いた場合のβＲＡＭ０〜βＲＡＭ４と同じようになり、αシフトレジスタ０〜７を縦方向に連結して考えるとＲＡＭを用いた場合のαＲＡＭ０〜αＲＡＭ４と同じようになる。
【０１５８】
ＲＡＭを用いた場合のメッセージをどのＲＡＭに格納するかという問題は、シフトレジスタを用いた場合はどのビット位置に格納するかという問題になり、この問題に対してはＲＡＭを用いた場合と同様に、行メッセージ格納先メモリ番号ＲＯＭ１０６及び列メッセージ格納先メモリ番号ＲＯＭ１０７の内容に従って巡回シフトを行えばよい。またＲＡＭを用いた場合のメッセージをＲＡＭ上のどのアドレスに格納するかという問題は、シフトレジスタを用いた場合はどのシフトレジスタに格納するかという問題になり、この問題に対しては、行メッセージ格納先アドレスＲＯＭ１０８を、基礎行列Ｈｂａｓｅの第ｊ列目におけるゼロ行列以外で置き換えられる要素を全てｊに変えて、横方向に詰めた形で各行を左から右に、上の行から下の行に向かって順に記録した行メッセージ格納先シフトレジスタ番号ＲＯＭ（図２４参照）に変更し、また、列メッセージ格納先アドレスＲＯＭ１０９を、基礎行列Ｈｂａｓｅの第ｉ行目におけるゼロ行列以外で置き換えられる要素を全てｉに変えて、縦方向に詰めた形で各列を上から下に、左の列から右の列に向かって順に記録した列メッセージ格納先シフトレジスタ番号ＲＯＭ（図２５参照）に変更する。これらのＲＯＭから読み出しされた値が、書き込み先シフトレジスタ番号となる。
【０１５９】
行処理と列処理は交互に行われるため、列処理装置は前の行処理が終わるまで動作することができず、また行処理装置は前の列処理が終わるまで動作することができない。これでは効率が悪いので、２つの符号語を同時に復号するようにして装置の動作効率を上げるような構成も可能である。２つの符号語をＣｅｖ、Ｃｏｄとすると、行メッセージ記憶装置１０３、列メッセージ記憶装置１０４及び受信ＬＬＲ記憶装置１０５を夫々ＣｅｖとＣｏｄの２つの符号語の情報を格納できるように２セットずつ用意する。行処理装置がＣｅｖに対して行処理を行っている間に列処理装置がＣｏｄに対して列処理を行い、その後、行処理装置がＣｏｄに対して行処理を行っている間に列処理装置がＣｅｖに対して列処理を行う、というようにすれば行処理装置と列処理装置が互いの動作の終了を待つ必要がなくなり効率よい復号が可能となる。
【０１６０】
以上説明したように、第１実施形態に係る復号装置及び復号方法によれば、Ｐ個の枝に対応したメッセージを同時に更新するＬＤＰＣ復号を確実かつ効率的に行うことが可能である。
【０１６１】
＜第２実施形態＞
次に、第２実施形態に係る復号装置について、図２６から図２９を参照して説明する。尚、第２実施形態は、上述の第１実施形態と比べて、基礎行列から検査行列を得る際に要素の置き換えに用いる構成行列及びその元となる基本構成行列が異なり、装置の構成及び動作については概ね同様である。このため第２実施形態では、第１実施形態と異なる部分について詳細に説明し、その他の重複する部分については適宜説明を省略する。
【０１６２】
先ず、第２実施形態で用いる基本構成行列について、図２６を参照して説明する。ここに図２６は、第２実施形態に係る基本構成行列とそれをもとにした構成行列の一例を示す図であり、図２７は、図８に示す基礎行列の各要素を第２実施形態に係る構成行列で置き換えることで得られる検査行列の一例を示す行列図である。
【０１６３】
図２６において、基本構成行列は、第１実施形態においては単位行列であったのに対し各行各列に夫々‘１’が一つだけ存在する行列となっている。構成行列はこの基本構成行列を０から４の間の巡回シフト量で右方向へ巡回シフトした巡回シフト行列もしくはゼロ行列のいずれかとなっている。図８に示す基礎行列Ｈｂａｓｅの各要素をその値に応じた第２実施形態にかかる構成行列で置き換えると図２７に示す検査行列が得られる。
【０１６４】
続いて、第２実施形態における行メッセージ格納先メモリの選択について、図２８及び図２９を参照して説明する。ここに図２８は、第２実施形態に係る行メッセージ格納先メモリの選択について示す概念図であり、図２９は、図２８に示す処理を行う回路の一例を示す回路図である。尚、列メッセージ格納先メモリの選択については行メッセージ格納先メモリの選択と同様の考え方で実現できるのでここでは省略する。
【０１６５】
構成行列内での行番号がｘである行の行処理を行う、行処理装置ｘが出力する行メッセージの格納先メモリαＲＡＭｙのメモリ番号ｙを求めるには、格納しようとする行メッセージに対応した検査行列中の‘１’の構成行列内での行番号ｘを構成行列内での列番号ｙに変換する必要がある。第１実施形態ではゼロ行列を除いた構成行列はすべて単位行列を巡回シフトしたものであったので、この変換は構成行列の巡回シフト量と同じだけ行メッセージを巡回シフトすればよかったが、第２実施形態では巡回シフトを行う前に基本構成行列の形に応じた並べ替えを行う必要がある。
【０１６６】
図２６に示す基本構成行列を用いる場合、図２８に示すようにまず行処理装置０〜行処理装置４の出力をそれぞれ中間出力０、３、２、１、４になるように並べ替え、その後に構成行列の巡回シフト量と同じだけ巡回シフトを行う。中間出力への並べ替えがこのようになるのは基本構成行列の第０行目から第４行目までの‘１’が存在する列番号が０、３、２、１、４となっているからである。尚、図２８に示すような並べ替えと巡回シフトを続けて行う動作は図２９に示すようにマルチプレクサを用いることでまとめて行うことも可能である。図２８と図２９では入力（行処理装置０〜行処理装置４の出力及び構成行列の巡回シフト量）と出力（αＲＡＭ０からαＲＡＭ４）の関係は同じになっている。
【０１６７】
以上説明したように、第２実施形態に係る復号装置及び復号方法によれば、基本構成行列が単位行列でない場合であっても、第１実施形態と同様に、Ｐ個の枝に対応したメッセージを同時に更新するＬＤＰＣ復号を確実かつ効率的に行うことが可能である。
【０１６８】
＜第３実施形態＞
次に、第３実施形態に係る復号装置について、図３０から図３５を参照して説明する。尚、第３実施形態は、上述の第１実施形態及び第２実施形態と比べて、基礎行列とその格納方法が異なり、装置の構成及び動作については概ね同様である。このため第３実施形態では、第１実施形態及び第２実施形態と異なる部分について詳細に説明し、その他の重複する部分については適宜説明を省略する。
【０１６９】
先ず、第３実施形態で用いられる基礎行列Ｈｂａｓｅ及び検査行列Ｈについて、図３０及び図３１を参照して説明する。ここに図３０は、検査行列Ｈの基礎となる基礎行列Ｈｂａｓｅの一例を示す行列図であり、図３１は、図３０に示す基礎行列Ｈｂａｓｅから得られた検査行列Ｈを示す行列図である。
【０１７０】
図３０において、第３実施形態に係る復号装置において用いられる基礎行列Ｈｂａｓｅは、０行１列目や１行２列目等、要素が部分的に２つの値を含んでいる。基礎行列Ｈｂａｓｅは、各要素をＰ行Ｐ列（ここでは、Ｐ＝５）のゼロ行列、単位行列を０から（Ｐ−１）の間の巡回シフト量で巡回シフトした巡回シフト行列、互いに巡回シフト量が異なる複数の巡回シフト行列の和行列、のいずれかである構成行列で置き換えることで、検査行列Ｈに変換される。
【０１７１】
図３１において、基本行列Ｈｂａｓｅは、負の要素‘−１’がゼロ行列に置き換えられる。また、負でない要素‘０’から‘４’は、各要素の値が巡回シフト量と対応するように、単位行列の巡回シフト行列として置き換えられる。ここで特に、２つの値が含まれるような要素は、各値に対応して置き換えられる２つの行列の和行列と置き換えられる。具体的には、基礎行列Ｈｂａｓｅの０行１列目の‘３’及び‘４’の２つの値をもつ要素は、巡回シフト量が３である巡回シフト行列及び巡回シフト量が４である行列の和行列と置き換えられる。同様に、１行２列目の‘１’及び‘２’の２つの値をもつ要素は、巡回シフト量が１である巡回シフト行列、及び巡回シフト量が２である巡回シフト行列の和行列と置き換えられる。上述したように、和行列を用いて置き換えることで、要素が２つの値を持つ場合であっても、Ｐ行Ｐ列の構成行列１つで各要素を置き換え、基本行列Ｈｂａｓｅを変換することができる。
【０１７２】
続いて、和行列が含まれる検査行列Ｈによる復号での動作の違いについて、図３２から図３５を参照して説明する。ここに図３２は、行メッセージ格納先メモリ番号ＲＯＭに格納された情報を示す概念図であり、図３３は、行メッセージ格納先アドレスＲＯＭに格納された情報を示す概念図である。また図３４は、列メッセージ格納先メモリ番号ＲＯＭに格納された情報を示す概念図であり、図３５は、列メッセージ格納先アドレスＲＯＭに格納された情報を示す概念図である。
【０１７３】
図３２において、基礎行列Ｈｂａｓｅの各要素が、行メッセージ格納先メモリ番号ＲＯＭ１０６に並べて格納される際には、要素が２つの値を持つ場合、２つの要素は連続した２つの要素として扱われる。具体的には、図に示すように左から右へ情報が格納される場合、０、３、４、１・・・の順番で格納される。２つの要素の格納順（この場合、３、４か４、３か）はどちらでも構わないが、後述する行メッセージ格納先アドレスＲＯＭ１０８に格納する列処理番号の付与の順序がこれと一致する必要がある。
【０１７４】
図３３において、基礎行列Ｈｂａｓｅの負でない要素に対して各列で上から下に、左の列から右の列に向かって列処理番号を付与する。要素が２つの値を持つ場合には２つ夫々に番号を付与する。２つの要素に番号を付与する順番は、前述の行メッセージ格納先メモリ番号ＲＯＭへ２つの値を格納する順番と同じにする。そして付与した番号を各行で左から右に、上の行から下の行に向かって行メッセージ格納先アドレスＲＯＭ１０８に格納する。２つの値に付与した番号は番号の付与と同じ順序で格納される。
【０１７５】
図３４に示す列メッセージ格納先メモリ番号ＲＯＭ１０７及び図３５に示す列メッセージ格納先アドレスＲＯＭ１０９においても同様にＨｂａｓｅの負でない要素及び負でない要素に付与した番号を格納する。このように情報が格納されることで、上述した第１実施形態及び第２実施形態と同様の処理によって、データを復号することが可能となる。
【０１７６】
尚、Ｈｂａｓｅの要素が３つ以上の値を持つ場合でも同様の格納方法を用いれば第１実施形態及び第２実施形態と同様の処理によって、データを復号することが可能となる。
【０１７７】
以上説明したように、第３実施形態に係る復号装置及び復号方法によれば、構成行列に巡回シフト量が互いに異なる複数の巡回シフト行列の和行列を含むような検査行列Ｈを用いる場合であっても、第１実施形態及び第２実施形態と同様に、Ｐ個の枝に対応したメッセージを同時に更新するＬＤＰＣ復号を確実かつ効率的に行うことが可能である。
【０１７８】
＜第４実施形態＞
次に、第４実施形態に係る復号装置について、図３６及び図３７を参照して説明する。尚、第４実施形態は、上述の第１実施形態ないし第３実施形態と比べて、基礎行列から検査行列を得る際に要素の置き換えに用いる構成行列の元となる基本構成行列が２種類以上存在する点が異なり、装置の構成及び動作については概ね同様である。このため第４実施形態では、第１実施形態ないし第３実施形態と異なる部分について詳細に説明し、その他の重複する部分については適宜説明を省略する。
【０１７９】
先ず、第４実施形態で用いられる基本構成行列について、図３６を参照して説明する。図３６は、５種類の基本構成行列を含んだ構成行列の一例であり、５種類の基本構成行列は夫々パターン０、パターン１、パターン２、パターン３、パターン４とする。パターン０〜パターン４は互いに同じ位置に‘１’が存在しないようになっている。尚、パターン４はパターン０を右に４つ巡回シフトしたものとなっているが、このようにいくつかのパターンが他のパターンを巡回シフトしたものとなっていても構わないが、すべてのパターンが１つのパターンを巡回シフトしたものである場合は第２実施形態と全く同じになる。
【０１８０】
第４実施形態においては、例えば図８に示す基礎行列Ｈｂａｓｅの各要素を、ゼロ行列もしくはその要素の値に対応した図３６に示すパターンの基本構成行列で置き換えることで検査行列が得られる。第４実施形態においては、行処理装置群１０１及び列処理装置群１０２から同時にＰ個ずつ出力される行メッセージ及び列メッセージを適切な格納先メモリに割り振るために巡回シフト回路１１０及び１１１の代わりに例えば図３７に示すような並べ替え回路を用いる。
【０１８１】
図３７は、図３６に示す５種類の基本構成行列を用いた場合の行メッセージ並べ替え回路の一例である。列メッセージ並べ替え回路については行メッセージ並べ替え回路と同様の考え方で実現できるので省略する。
【０１８２】
図３７において、図３６に示す基本構成行列の第０行目の‘１’に注目すると、パターン０では第０列目に存在するので、第０列目のメッセージを格納するαＲＡＭ０への出力に繋がるマルチプレクサのパターン値が０の場合に選択される入力に行処理装置０の出力が入力されるようになっている。パターン１では第０行目の‘１’は第１列目に存在するので、第１列目のメッセージを格納するαＲＡＭ１への出力に繋がるマルチプレクサのパターン値が１の場合に選択される入力にも行処理装置０からの出力が入力されるようになっている。同様に行処理装置０からの出力は、αＲＡＭ２への出力に繋がるマルチプレクサのパターン値が２の場合に選択される入力、αＲＡＭ３への出力に繋がるマルチプレクサのパターン値が３の場合に選択される入力、αＲＡＭ４への出力に繋がるマルチプレクサのパターン値が４の場合に選択される入力にも入力されるようになっている。行処理装置１〜４からの出力に関しても図３６における基本構成行列の第１〜４行目に存在する‘１’の列番号に注目して行処理装置０からの出力の場合と同様に考えれば図３７に示すような接続になる。
【０１８３】
以上説明したように、第４実施形態に係る復号装置及び復号方法によれば、基本構成行列が２種類以上存在する場合であっても、第１実施形態ないし第３実施形態と同様に、Ｐ個の枝に対応したメッセージを同時に更新するＬＤＰＣ復号を確実かつ効率的に行うことが可能である。
【０１８４】
本発明は、上述した実施形態に限られるものではなく、特許請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴う復号装置及び復号方法もまた本発明の技術的範囲に含まれるものである。
【図面の簡単な説明】
【０１８５】
【図１】ＬＤＰＣ符号を定義する検査行列の一例を示す行列図である。
【図２】図１に示す検査行列に係るタナーグラフの図である。
【図３】行処理について対数外部値比及び対数事前値比を用いて示す概念図である。
【図４】列処理について対数外部値比及び対数事前値比を用いて示す概念図である。
【図５】第１実施形態に係る復号装置の構成を示すブロック図である。
【図６】行処理装置の構成を示すブロック図である。
【図７】列処理装置の構成を示すブロック図である。
【図８】検査行列Ｈの基礎となる基本行列Ｈｂａｓｅの一例を示す行列図である。
【図９】基本行列Ｈｂａｓｅから変換された検査行列Ｈの一例を示す行列図である。
【図１０】第１実施形態に係る復号装置の初期化段階及び反復０回目の動作について示すフローチャートである。
【図１１】第１実施形態に係る復号装置の反復１回目以降の動作について示すフローチャートである。
【図１２】対数事前値比βの一例を示す行列図である。
【図１３】対数事前値比βの各要素の格納について示す概念図である。
【図１４】対数外部値比αの一例を示す行列図である。
【図１５】対数外部値比αの各要素の格納について示す概念図である。
【図１６】対数外部値比αの格納先メモリの選択について示す概念図である。
【図１７】対数事前値比βの格納先メモリの選択について示す概念図である。
【図１８】行メッセージ格納先メモリ番号ＲＯＭに格納された情報を示す概念図である。
【図１９】行メッセージ格納先アドレスＲＯＭに格納された情報を示す概念図である。
【図２０】列メッセージ格納先メモリ番号ＲＯＭに格納された情報を示す概念図である。
【図２１】列メッセージ格納先アドレスＲＯＭに格納された情報を示す概念図である。
【図２２】行メッセージ格納先メモリ番号ＲＯＭ及び列メッセージ格納先アドレスＲＯＭと、列メッセージ格納先メモリ番号ＲＯＭとの関係を示す概念図である。
【図２３】行メッセージ記憶装置及び列メッセージ記憶装置がＲＡＭの代わりにシフトレジスタを含むような構成にした場合について示す概念図である。
【図２４】行メッセージ格納先シフトレジスタ番号ＲＯＭに格納される情報を示す概念図である。
【図２５】列メッセージ格納先シフトレジスタ番号ＲＯＭに格納される情報を示す概念図である。
【図２６】第２実施形態に係る基本構成行列及び構成行列の一例を示す行列図である。
【図２７】第２実施形態に係る検査行列の一例を示す行列図である。
【図２８】第２実施形態に係る行メッセージ格納先メモリの選択について示す概念図である。
【図２９】図２８に示す処理を行う回路の一例を示す回路図である。
【図３０】第３実施形態に係る基礎行列の一例を示す行列図である。
【図３１】第３実施形態に係る検査行列の一例を示す行列図である。
【図３２】第３実施形態に係る行メッセージ格納先メモリ番号ＲＯＭに格納される情報を示す概念図である。
【図３３】第３実施形態に係る行メッセージ格納先アドレスＲＯＭに格納される情報を示す概念図である。
【図３４】第３実施形態に係る列メッセージ格納先メモリ番号ＲＯＭに格納される情報を示す概念図である。
【図３５】第３実施形態に係る列メッセージ格納先アドレスＲＯＭに格納される情報を示す概念図である。
【図３６】第４実施形態に係る基本構成行列及び構成行列の一例を示す行列図である。
【図３７】第４実施形態に係る並べ替え回路について示す回路図である。
【符号の説明】
【０１８６】
１０１…行処理装置群、１０２…列処理装置群、１０３…行メッセージ記憶装置、１０４…列メッセージ記憶装置、１０５…受信ＬＬＲλ格納用メモリ、１０６…行メッセージ格納先メモリ番号ＲＯＭ、１０７…列メッセージ格納先メモリ番号ＲＯＭ、１０８…行メッセージ格納先アドレスＲＯＭ、１０９…列メッセージ格納先アドレスＲＯＭ、１１０，１１１…巡回シフト回路、１１２…推定符号語計算部、１１３…検査方程式チェック部、１１４…制御部、２００…行処理装置、２０１…絶対値計算部、２０２，２０７…ｆ関数計算部、２０３，３０１…積算器、２０４，２１０，３０２…イネーブル付きレジスタ、２０５，２１１，３０３…遅延素子、２０６…減算器、２０８…符号（±）計算部２０８、２０９，２１２…ＸＯＲ計算部、３００…列処理装置、３０４…加減算器
【図１】
2009260692.tif 000015
【図２】
2009260692.tif 000016
【図３】
2009260692.tif 000017
【図４】
2009260692.tif 000018
【図５】
2009260692.tif 000019
【図６】
2009260692.tif 000020
【図７】
2009260692.tif 000021
【図８】
2009260692.tif 000022
【図９】
2009260692.tif 000023
【図１０】
2009260692.tif 000024
【図１１】
2009260692.tif 000025
【図１２】
2009260692.tif 000026
【図１３】
2009260692.tif 000027
【図１４】
2009260692.tif 000028
【図１５】
2009260692.tif 000029
【図１６】
2009260692.tif 000030
【図１７】
2009260692.tif 000031
【図１８】
2009260692.tif 000032
【図１９】
2009260692.tif 000033
【図２０】
2009260692.tif 000034
【図２１】
2009260692.tif 000035
【図２２】
2009260692.tif 000036
【図２３】
2009260692.tif 000037
【図２４】
2009260692.tif 000038
【図２５】
2009260692.tif 000039
【図２６】
2009260692.tif 000040
【図２７】
2009260692.tif 000041
【図２８】
2009260692.tif 000042
【図２９】
2009260692.tif 000043
【図３０】
2009260692.tif 000044
【図３１】
2009260692.tif 000045
【図３２】
2009260692.tif 000046
【図３３】
2009260692.tif 000047
【図３４】
2009260692.tif 000048
【図３５】
2009260692.tif 000049
【図３６】
2009260692.tif 000050
【図３７】
2009260692.tif 000051