(57)【要約】【課題】  低密度パリティ検査符号の復号装置において、チェックノードの計算を効率的に行う方式を提供する。【解決手段】  符号語ビットに対応する変数ノードの計算を行う変数ノード関数手段１０３と、パリティ検査行列の行に対応するチェックノードの計算を行うチェックノード関数手段１０４と、これら変数ノード関数手段１０３およびチェックノード関数手段１０４の出力を格納するメッセージメモリ手段１０１と、チェックノードの計算に付加した計算の値を格納する補助メモリ手段１０２と、これらの手段を制御する制御手段１０５とを含んで構成される。チェックノードの計算は逐次的に処理される。その逐次処理において、１回のチェックノードの計算に簡単な計算が付加される。その付加計算結果は補助メモリ手段１０２に格納され、次回のチェックノードの計算に事前計算値として用いられる。【選択図】      図１
2006191246.tif 000002
【特許請求の範囲】
【請求項１】
符号語ビットに対応する変数ノードとパリティ検査行列の行に対応するチェックノードとについて、前記変数ノードの全体を複数のグループに分割し、前記グループ単位に変数ノードからチェックノードへのメッセージおよびチェックノードから変数ノードへのメッセージを計算する低密度パリティ検査符号のメッセージパッシング復号方式を実行する復号装置であって、
前記復号方式における変数ノード処理を行う変数ノード関数手段と、
前記復号方式におけるチェックノード処理を行うチェックノード関数手段と、
前記変数ノード関数手段および前記チェックノード関数手段の出力を格納する第一のメモリ手段と、
第二のメモリ手段とを含み、
前記チェックノード関数手段の入力は、現在処理中のグループに属する変数ノードからのメッセージおよび現在処理中のグループに対して他のグループ単位に得られた事前計算値であり、前記チェックノード関数手段の出力は、現在処理中のグループに属する変数ノードへのメッセージおよび現在処理中のグループに属する変数ノードからのメッセージを用いて算出される前記事前計算値であり、前記事前計算値は前記第二のメモリ手段に格納されることを特徴とする復号装置。
【請求項２】
前記変数ノード関数手段の処理グループと前記チェックノード関数手段の処理グループとが互いに異なり、かつ前記変数ノード関数手段と前記チェックノード関数手段とを同時に動作しつつ逐次処理を進めるよう制御する制御手段を、更に含むことを特徴とする請求項１に記載の復号装置。
【請求項３】
前記チェックノード関数手段はｍｉｎ−ｓｕｍアルゴリズムを実現するよう構成されており、前記グループに属する変数ノードからのメッセージの絶対値の最小値およびメッセージの硬判定値の排他的論理和を前記事前計算値とすることを特徴とする請求項１または２に記載の復号装置。
【請求項４】
前記チェックノード関数手段はｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムを実現するよう構成されており、前記グループに属する変数ノードからのメッセージに対してｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムに付随する指数領域への変換を施した値の和およびメッセージの硬判定値の排他的論理和を前記事前計算値とすることを特徴とする請求項１または２に記載の復号装置。
【請求項５】
符号語ビットに対応する変数ノードとパリティ検査行列の行に対応するチェックノードとについて、前記変数ノードの全体を複数のグループに分割し、前記グループ単位に変数ノードからチェックノードへのメッセージおよびチェックノードから変数ノードへのメッセージを計算する低密度パリティ検査符号のメッセージパッシング復号方式を実行する復号方法であって、
前記復号方式における変数ノード処理を行う変数ノード関数ステップと、
前記復号方式におけるチェックノード処理を行うチェックノード関数ステップと、
前記変数ノード関数ステップおよび前記チェックノード関数ステップによる出力を第一のメモリ手段へ格納するステップと、
前記チェックノード関数ステップへの入力は、現在処理中のグループに属する変数ノードからのメッセージおよび現在処理中のグループに対して他のグループ単位に得られた事前計算値であり、前記チェックノード関数ステップからの出力は、現在処理中のグループに属する変数ノードへのメッセージおよび現在処理中のグループに属する変数ノードからのメッセージを用いて算出される前記事前計算値であり、
前記事前計算値を第二のメモリ手段に格納するステップとを含むことを特徴とする復号方法。
【請求項６】
前記変数ノード関数手段の処理グループと前記チェックノード関数手段の処理グループとが互いに異なり、かつ前記変数ノード関数手段と前記チェックノード関数手段とを同時に動作しつつ逐次処理を進めるよう制御する制御ステップを、更に含むことを特徴とする請求項５に記載の復号方法。
【請求項７】
前記チェックノード関数ステップはｍｉｎ−ｓｕｍアルゴリズムを実現するよう構成されており、前記グループに属する変数ノードからのメッセージの絶対値の最小値およびメッセージの硬判定値の排他的論理和を前記事前計算値とすることを特徴とする請求項５または６に記載の復号方法。
【請求項８】
前記チェックノード関数ステップはｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムを実現するよう構成されており、前記グループに属する変数ノードからのメッセージに対してｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムに付随する指数領域への変換を施した値の和およびメッセージの硬判定値の排他的論理和を前記事前計算値とすることを特徴とする請求項５または６に記載の復号方法。
【請求項９】
符号語ビットに対応する変数ノードとパリティ検査行列の行に対応するチェックノードとについて、前記変数ノードの全体を複数のグループに分割し、前記グループ単位に変数ノードからチェックノードへのメッセージおよびチェックノードから変数ノードへのメッセージを計算する低密度パリティ検査符号のメッセージパッシング復号方式を実行する復号方法をコンピュータにより実行させるためのプログラムであって、
前記復号方式における変数ノード処理を行う変数ノード関数処理と、
前記復号方式におけるチェックノード処理を行うチェックノード関数処理と、
前記変数ノード関数ステップおよび前記チェックノード関数ステップによる出力を第一のメモリ手段へ格納する処理と、
前記チェックノード関数ステップへの入力は、現在処理中のグループに属する変数ノードからのメッセージおよび現在処理中のグループに対して他のグループ単位に得られた事前計算値であり、前記チェックノード関数ステップからの出力は、現在処理中のグループに属する変数ノードへのメッセージおよび現在処理中のグループに属する変数ノードからのメッセージを用いて算出される前記事前計算値であり、
前記事前計算値を第二のメモリ手段に格納する処理とを含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は復号装置及びその方法並びにプログラムに関し、特に低密度パリティ検査符号（Low-Density Parity-Check Code ：以下、ＬＤＰＣ符号と略記する）の復号方式に関するものである。
【背景技術】
【０００２】
誤り訂正符号はデータ伝送時に混入するノイズの影響を符号化処理および復号処理によって低減する技術である。前者の符号化処理は、送信されるデータに冗長を付加する処理であり、符号化されたデータを符号語と呼ぶ。通信路に送出された符号語はノイズの影響を受けることにより、符号語の一部のビットが反転する現象すなわちエラーが起こる。後者の復号処理は、エラーの影響を受けた受信語から、冗長性を利用して送信データを復元する処理である。
【０００３】
図２は誤り訂正符号化および復号の流れを表した機能ブロック図である。送信側では、情報源２０１からの送信データは誤り訂正符号化処理２０２を受けて符号語となって通信路２０３へ送出される。通信路２０３では、ノイズの影響を受けることになる。受信側では、このような通信路２０３を経た受信語が、誤り訂正復号処理２０４を受けて復元データとなって受信者２０５へ供給されることになる。
【０００４】
ＬＤＰＣ符号は１９６０年代に提案された誤り訂正符号であり、１９９３年に発明された高性能符号であるターボ符号との関連が指摘されたのを機に、１９９０年代後半になって広く注目を集めるようになった（非特許文献１参照）。
【０００５】
誤り訂正符号は、推定処理である復号処理が符号化処理と比較して複雑となる。特に、訂正能力の高い大きな符号長で最尤復号もしくはそれに近い高性能復号を行おうとする場合には、非常に複雑度の高い処理が必要となる。
【０００６】
ＬＤＰＣ符号は０の多いパリティ検査行列を持つ符号として特徴付けられており、この性質から比較的効率の良い高性能復号法が存在する符号である。この復号法はメッセージパッシング復号（Message-Passing Decoding：以下、ＭＰ復号と略記する）と呼ばれている。以下にこのＬＤＰＣ符号のＭＰ復号について説明する。
【０００７】
ＬＤＰＣ符号のＭＰ復号はＴａｎｎｅｒグラフと呼ばれるグラフのエッジに対応する数値の更新として説明される。エッジは向きも区別される。ＴａｎｎｅｒグラフはＬＤＰＣ符号のパリティ検査行列を一つ固定すると一つ定まる。
【０００８】
図３はパリティ検査行列の一例および対応するＴａｎｎｅｒグラフを示している。３０１で示す行列の各列に変数ノード（variable node ）が、また各行にチェックノード（check node）が、それぞれ一対一に対応付けられており、行列の第（ｉ，ｊ）成分が１の時、その時に限って第ｉチェックノードと第ｊ変数ノードとがエッジで結ばれる。その結果できるグラフが３０２で示されるＴａｎｎｅｒグラフである。
【０００９】
ＭＰ復号の処理はＴａｎｎｅｒグラフの各エッジに対応する数値を更新する処理として説明される。この各数値はそのエッジ上のメッセージと呼ばれる。すなわちＭＰ復号とはＴａｎｎｅｒグラフのエッジ上のメッセージの更新のことである。メッセージの更新方法は更新アルゴリズムおよび更新スケジュールの２つの観点から幾つかの種類に分けられる。
【００１０】
更新アルゴリズムとは変数ノードから出るエッジ上のメッセージの更新処理である変数ノード処理とチェックノードから出るエッジ上のメッセージの更新処理であるチェックノード処理の組のことである。更新アルゴリズムとしては、ｓｕｍ−ｐｒｏｄｕｃｔアルゴリズム、ｍｉｎ−ｓｕｍアルゴリズムなど、幾つかのアルゴリズムが知られている。
【００１１】
例として、ｍｉｎ−ｓｕｍアルゴリズムを図３を参照して説明する。変数ノードＶから出るエッジ上のメッセージの一つｖ０についての変数ノード処理は式１で与えられる。
ｖ０＝ｒ＋Σｕｉ      ……（式１）
但し、総和の項ｕｉはＶに入るエッジ上のメッセージの集合からｖ０に対応するエッジと反対向きのエッジ上のメッセージを除いたものを亘る（図３では、ｕ１のみ）。また、ｒは通信路から受信した受信値である。
【００１２】
また、チェックノードＣから出るエッジ上のメッセージの一つｕ０についてのチェックノード処理は式２で与えられる。
ｕ０＝（Πｓｉｇｎ（ｖｊ））×ｍｉｎ｛｜ｖｊ｜；ｊ＝１，…，７｝
……（式２）
但し、ｓｉｇｎ（ｖｊ）はＣに入るエッジ上のメッセージｖｊ，ｊ＝１，…，７の正負であり、正の場合＋１、負の場合−１の値を取る。
【００１３】
また、総積に現れるｖｊはＣに入るエッジ上のメッセージの集合からｕ０に対応するエッジと反対向きのエッジ上のメッセージを除いたものを亘る。また、｜ｖｊ｜はｖｊの絶対値であり、
ｍｉｎ｛｜ｖｊ｜；ｊ＝１，…，７｝
は｜ｖ１｜，…，｜ｖ７｜の内の最小値である。
【００１４】
次に、更新スケジュールとはメッセージ全体の更新順のことであり、図４はこの更新スケジュールの一例を示している。この例では、各変数ノードから出るエッジ上のメッセージについて変数ノード処理を１回ずつ行った（４０１；全変数ノード処理）後、各チェックノードから出るエッジ上のメッセージについてチェックノード処理を１回ずつ行い（４０２；全チェックノード処理）、かつそれぞれの処理が復号器動作の交互のタイミングで行われる更新スケジュールが示されている。この更新スケジュールはフルパラレルな（あるいはオールパラレルな）更新スケジュールと呼ばれる。４０３はフルパラレルな更新スケジュールを示すタイミングチャートである。
【００１５】
フルパラレルな更新スケジュールのＭＰ復号器の長所は、復号器スループットが速くなることである。フルパラレルな更新スケジュールのＭＰ復号器を説明する文献としては、例えば非特許文献２がある。
【００１６】
しかし、フルパラレルな更新スケジュールのＭＰ復号器には回路規模が大きくなるという短所がある。特に、ＬＤＰＣ符号が高符号化利得を示す長い符号長の符号については、フルパラレルな更新スケジュールの復号器の回路規模は非現実的な程大きい。
【００１７】
そこで、回路規模を小さくする更新スケジュールとして、復号器が１回のタイミングで処理するメッセージの数を少なくする更新スケジュールが自然に考えられる。この方式はセミパラレルな更新スケジュールと呼ばれ、例えば非特許文献３で示されている。
【００１８】
このセミパラレルな更新スケジュールにより、１つのチェックノードから出るエッジ数が少ない場合、例えば非特許文献３で説明されているようなエッジ数が６の場合では、回路を比較的小規模に構成することが可能となる。
【００１９】
【非特許文献１】D.J.C.MacKay and R.M.Neal,“Good error-correcting codes based on very sparse matrices ”,IEEE Transactions on Information Theory, Vol.45, pp.399-431, 1999
【非特許文献２】A.J.Blanksby and C.J.Howland, “A 690-mW 1-Gb/s 1024-b, Rate-1/2 Low-Density Parity-Check Code Decoder”,IEEE J. of Solid-State Circuits, Vol.37, No.3, pp.404-412, March 2002
【非特許文献３】M.Karkooti and J.R.Cavallaro, “Semi-Parallel Reconfigurable Architectures for Real-Time LDPC Decoding”,Proc. of the Int. Conf. on Information Technology: Coding and Computing, Vol.1, pp.579-585, 2004
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかしながら、一般に、符号化率の高い符号では１つのチェックノードから出るエッジ数は多くなる。Ｔａｎｎｅｒグラフを定めているパリティ検査行列の行サイズがＭ行、列サイズがＮ列で、かつそのパリティ検査行列がフルランクのとき、符号化率は１−Ｍ／Ｎである。エッジ数が多くなる理由は、１つのチェックノードから出るエッジ数の平均値が、１つの変数ノードから出るエッジ数の平均値のＮ／Ｍ倍となるからである。
【００２１】
例えば、Ｍ＝２００，Ｎ＝１０００、従って符号化率が０．８の場合に、１つのチェックノードから出るエッジ数の平均値は、１つの変数ノードから出るエッジ数の平均値の５倍となる。それ故に、１つの変数ノードから出るエッジ数が４である一般的なＬＤＰＣ符号について、１つのチェックノードから出るエッジ数は４×５＝２０と多くなる。
【００２２】
また、ｍｉｎ−ｓｕｍアルゴリズムやｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムなどの代表的更新アルゴリズムでは、１エッジ当たりのチェックノード処理計算量あるいは遅延は、１エッジ当たりの変数ノード処理計算量あるいは遅延より大きくなる。その理由は、上記更新アルゴリズムでは変数ノード処理が加算であるのに対し、チェックノード処理は、ｍｉｎ−ｓｕｍアルゴリズムでは、多段の比較演算、ｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムでは、ＲＯＭテーブル参照演算などとなるからである。
【００２３】
符号化率が高い場合には、１つのチェックノードから出るエッジの数が多いことと、１エッジ当たりのチェックノード処理計算量あるいは遅延が大きいことの２点から、特に符号化率の高い符号について、チェックノード処理は変数ノード処理と比べて非常に複雑となる。その結果、大きな処理遅延が発生する。よって、特に符号化率の高いＬＤＰＣ符号のＭＰ復号器について、チェックノード処理を分割して逐次処理することによつて、遅延を少なくし、復号器スループットの劣化を抑制することが必要となる。
【００２４】
本発明は、上記の課題に鑑みて発明されたものであって、その目的とするところは、ＬＤＰＣ符号のＭＰ復号処理において、チェックノード処理手段の逐次処理を効率的に行うことが可能な復号装置及びその方法並びにプログラムを提供することにある。
【課題を解決するための手段】
【００２５】
本発明による復号装置は、符号語ビットに対応する変数ノードとパリティ検査行列の行に対応するチェックノードとについて、前記変数ノードの全体を複数のグループに分割し、前記グループ単位に変数ノードからチェックノードへのメッセージおよびチェックノードから変数ノードへのメッセージを計算する低密度パリティ検査符号のメッセージパッシング復号方式を実行する復号装置であって、前記復号方式における変数ノード処理を行う変数ノード関数手段と、前記復号方式におけるチェックノード処理を行うチェックノード関数手段と、前記変数ノード関数手段および前記チェックノード関数手段の出力を格納する第一のメモリ手段と、第二のメモリ手段とを含み、前記チェックノード関数手段の入力は、現在処理中のグループに属する変数ノードからのメッセージおよび現在処理中のグループに対して他のグループ単位に得られた事前計算値であり、前記チェックノード関数手段の出力は、現在処理中のグループに属する変数ノードへのメッセージおよび現在処理中のグループに属する変数ノードからのメッセージを用いて算出される前記事前計算値であり、前記事前計算値は前記第二のメモリ手段に格納されることを特徴とする。
【００２６】
本発明による復号方法は、符号語ビットに対応する変数ノードとパリティ検査行列の行に対応するチェックノードとについて、前記変数ノードの全体を複数のグループに分割し、前記グループ単位に変数ノードからチェックノードへのメッセージおよびチェックノードから変数ノードへのメッセージを計算する低密度パリティ検査符号のメッセージパッシング復号方式を実行する復号方法であって、前記復号方式における変数ノード処理を行う変数ノード関数ステップと、前記復号方式におけるチェックノード処理を行うチェックノード関数ステップと、前記変数ノード関数ステップおよび前記チェックノード関数ステップによる出力を第一のメモリ手段へ格納するステップと、前記チェックノード関数ステップへの入力は、現在処理中のグループに属する変数ノードからのメッセージおよび現在処理中のグループに対して他のグループ単位に得られた事前計算値であり、前記チェックノード関数ステップからの出力は、現在処理中のグループに属する変数ノードへのメッセージおよび現在処理中のグループに属する変数ノードからのメッセージを用いて算出される前記事前計算値であり、前記事前計算値を第二のメモリ手段に格納するステップとを含むことを特徴とする。
【００２７】
本発明によるプログラムは、符号語ビットに対応する変数ノードとパリティ検査行列の行に対応するチェックノードとについて、前記変数ノードの全体を複数のグループに分割し、前記グループ単位に変数ノードからチェックノードへのメッセージおよびチェックノードから変数ノードへのメッセージを計算する低密度パリティ検査符号のメッセージパッシング復号方式を実行する復号方法をコンピュータにより実行させるためのプログラムであって、前記復号方式における変数ノード処理を行う変数ノード関数処理と、前記復号方式におけるチェックノード処理を行うチェックノード関数処理と、前記変数ノード関数ステップおよび前記チェックノード関数ステップによる出力を第一のメモリ手段へ格納する処理と、前記チェックノード関数ステップへの入力は、現在処理中のグループに属する変数ノードからのメッセージおよび現在処理中のグループに対して他のグループ単位に得られた事前計算値であり、前記チェックノード関数ステップからの出力は、現在処理中のグループに属する変数ノードへのメッセージおよび現在処理中のグループに属する変数ノードからのメッセージを用いて算出される前記事前計算値であり、前記事前計算値を第二のメモリ手段に格納する処理とを含むことを特徴とする。
【発明の効果】
【００２８】
本発明によれば、従来例である、例えば非特許文献３で知られている方式よりも、チェックノード関数手段の複雑度を下げることができ、結果としてチェックノード処理の処理遅延を小さくすることが可能となるという効果がある。また、本発明によれば、符号化率が高い符号ほどチェックノード処理が複雑となる傾向があるので、符号化率が高いほど有効となるという効果がある。
【発明を実施するための最良の形態】
【００２９】
以下に、図面を参照しつつ本発明の実施の形態について説明する。図１は本発明の実施の形態の機能ブロック図である。図１を参照すると、本発明の実施の形態は、メッセージメモリ手段１０１、補助メモリ手段１０２、変数ノード関数手段１０３、チェックノード関数手段１０４および制御手段１０５を含んで構成されている。
【００３０】
これらの構成要素の概略を述べる。メッセージメモリ手段１０１は、受信値およびＭＰ復号において必要なメッセージを格納するものである。補助メモリ手段１０２は、本発明の特徴である、逐次的かつ効率的なチェックノード処理を行うための事前計算値を格納するためのものである。変数ノード関数手段１０３は、メッセージメモリ手段１０１に格納されているチェックノードからのメッセージを読み込み、変数ノード処理を行い、処理結果のメッセージを変数ノードからのメッセージとしてメッセージメモリ手段１０１に書き込むものである。
【００３１】
チェックノード関数手段１０４は、メッセージメモリ手段１０１に格納されている変数ノードからのメッセージと補助メモリ手段１０２に格納されている事前計算値とを読み込み、チェックノード処理および付加計算を行い、処理結果のメッセージをチェックノードからのメッセージとしてメッセージメモリ手段１０１に書き込み、また付加計算値を事前計算値として補助メモリ手段１０２に書き込むものである。制御手段１０５は、メッセージメモリ手段１０１、補助メモリ手段１０２、変数ノード関数手段１０３およびチェックノード関数手段１０４の動作を制御するものである。
【００３２】
次に、図５〜図７を参照して本実施の形態の全体の動作について詳細に説明する。図５は符号を定義するパリティ検査行列と、パリティ検査行列の各列に対応する変数ノードと、各行に対応するチェックノードを示し、かつ本発明の特徴である変数ノード全体の分割を示す。例として、５０１は行列の列の分割による変数ノード全体の４つのグループ（１），（２），（３），（４）（図では丸数字として示している）への分割を示している。
【００３３】
図６は本発明の実施の形態の動作の概略を示したフローチャートである。本復号装置が動作し始める（ステップ６０１）と、制御手段１０５がメッセージメモリ手段１０１を値０および受信値で初期化し、また補助メモリ手段１０２をメッセージ更新アルゴリズムに応じて初期化し、また整数値を取る補助変数ｂ，ｂ’，ｋを初期化する（ステップ６０２）。但し、ｂ≠ｂ’とする。
【００３４】
ここで、変数ｂはどの変数ノードグループの変数ノード処理が行われているかを指し、また変数ｂ’はどの変数ノードグループへのチェックノード処理が行われているかを指す。ｂ，ｂ’は整数Ｂを法とする１からＢのいずれかの値を取り、常にｂ≠ｂ’とする。また、変数ｋはメッセージ更新回数であり、その最大値として更新最大回数Ｋを取る。
【００３５】
次のステップ６０３として、制御手段１０５の制御により、グループｂに属する変数ノードの受信値およびグループｂの変数ノードに入るエッジ上のメッセージが、メッセージメモリ手段１０１から読み込まれ、変数ノード関数手段１０３に入力される。この入力を元に、例えば式１に示される変数ノード処理が行われ、処理結果がグループｂの変数ノードから出るエッジ上のメッセージとして、メッセージメモリ手段１０１に格納される（この処理を以後グループｂの変数ノード処理と呼ぶ）。
【００３６】
また同時に、グループｂ’に属する変数ノードから出るエッジ上のメッセージがメッセージメモリ手段１０１から読み込まれ、かつ事前計算値が補助メモリ手段１０２から読み込まれ、チェックノード関数手段１０４に入力される。この入力を元に、例えば式２に示される計算とこれに付加された計算とが行われる。式２に示される計算の結果は、グループｂ’の変数ノードに入るエッジ上のメッセージとして、メッセージメモリ手段１０１に格納される。また、付加計算の結果は補助メモリ手段１０２に格納される（この処理を以後グループｂ’へのチェックノード処理と呼ぶ）。
【００３７】
なお、ステップ６０３における補助メモリ手段１０２の役割およびチェックノード関数手段１０４の入出力については、後で詳述する。
【００３８】
次のステップ６０４として、補助変数ｂの値がＢに等しいか否かが調べられる。もしｂがＢに等しくないならば、ｂの値が１だけインクリメントされ（ステップ６０５）、ステップ６０７に進む。もしｂがＢに等しいならば、ｂに１が代入され（ステップ６０６）、ステップ６１０に進む。ステップ６０７では、補助変数ｂ’の値がＢに等しいか否かが調べられる。
【００３９】
もし、ｂ’がＢに等しくないならば、ｂ’の値が１だけインクリメントされ（ステップ６０８）、ステップ６０３に戻る。もし、ｂ’がＢに等しいならば、ｂ’に１が代入され（ステップ６０９）、ステップ６０３に戻る。ステップ６１０では、補助変数ｋの値がＫに等しいか否かが調べられる。もし、ｋがＫに等しくないならば、ｋの値が１だけインクリメントされ（ステップ６１１）、ステップ６０３に戻る。もし、ｋがＫに等しいならば、符号語ビットあるいは情報ビットの判定処理が行われ、復号結果が出力され（ステップ６１２）、復号が終了する。他の復号終了条件としては、シンドロームと呼ばれるデータが０ベクトルになったときに直ちに終了する方法が考えられる。
【００４０】
図７は上記に説明した動作を行う本発明の実施の形態の復号器のメッセージ更新スケジュールを、図４のフルパラレルなメッセージ更新スケジュールと対比して示した図である。７０１は、例としてグループ（２）（図では丸数字で示す）の変数ノード処理およびグループ（１）（図では丸数字で示す）へのチェックノード処理を示す。
【００４１】
グループ（２）の変数ノード処理として、グループ（２）の変数ノードから出るエッジ上のメッセージのみについて、例えば式１に示される計算が行われる。また同時に、グループ（１）へのチェックノード処理として、グループ（１）の変数ノードに入るエッジ上のメッセージのみについて、例えば式２に示される計算が行われる。
【００４２】
７０２は、７０１の次のタイミングで行われるグループ（３）の変数ノード処理およびグループ（２）へのチェックノード処理を示す。７０３はこれらの動作のタイミングを示し、特に、グループｂの変数ノード処理およびグループｂ’へのチェックノード処理が、復号器動作の同一のタイミングで行われることを示す。
【００４３】
次に、図８を参照して、本発明の特徴である、ステップ６０３のグループｂ’へのチェックノード処理におけるチェックノード関数手段１０４の入出力および補助メモリ手段１０２の役割を詳細に説明する。図８は、変数ノードのグループの個数Ｂが４の場合、すなわち変数ノード全体が（１）〜（４）の４つのグループに分割された場合を示している。また、説明の簡単のために、図８のチェックノードＣのみについて図示しているが、全てのチェックノードについて同様の処理が行われる。
【００４４】
グループｂ’へのチェックノード処理においてチェックノード関数手段１０４への入力は２種類ある。第１種の入力は、変数ノードグループｂ’から出るエッジ上のメッセージである。８０１に示されるように、変数ノードグループ（２）へのチェックノード処理では、第１種の入力は変数ノードグループ（２）から出るエッジ上のメッセージａ21，ａ22である。また、８０２に示されるように、（３）へのチェックノード処理では、第１種の入力は（３）から出るエッジ上のメッセージａ31，ａ32である。第２の入力はｂ’以外の変数ノードグループｂ’’とチェックノードＣの組（ｂ’’，Ｃ）に対応する事前計算値である。
【００４５】
８０１に示されるように、変数ノードグループ（２）へのチェックノード処理では、第２種の入力は（（１），Ｃ），（（３），Ｃ），（（４），Ｃ）に対応する値ｘ’1 ，ｘ3 ，ｘ4 である。また、８０２に示されるように、（３）へのチェックノード処理では、第２種の入力は（（１），Ｃ），（（２），Ｃ），（（４），Ｃ）に対応する値ｘ’1 ，ｘ’2 ，ｘ4 である。
【００４６】
上記２種類の入力を元に、チェックノード関数手段１０４はチェックノード処理を実行して２種類の計算結果を出力する。第１種の出力は、変数ノードグループｂ’に入るエッジ上のメッセージである。８０１に示されるように、変数ノードグループ（２）へのチェックノード処理では、第１種の出力は（２）に入るエッジ上のメッセージｂ21，ｂ22である。また、８０２に示されるように、（３）へのチェックノード処理では、第１種の出力は（３）に入るエッジ上のメッセージｂ31，ｂ32である。
【００４７】
第２種の出力は、変数ノードグループｂ’とチェックノードＣの組（ｂ’，Ｃ）に対応する付加計算値である。８０１に示されるように、変数ノードグループ（２）へのチェックノード処理では、第２種の出力は（（２），Ｃ）に対応する値ｘ’２である。８３）へのチェックノード処理では、第２種の出力は（（３），Ｃ）に対応する値ｘ’3 である。第２種の出力は上記の第１種の入力のみから定まり、簡易な計算の付加のみで行われる。付加計算値（すなわち事前計算値）ｘ3 とｘ’3 との差異は、ｘ3 が更新前の値、ｘ’3 が更新後の値である点である。
【００４８】
以上の入出力を式を用いて整理する。チェックノード関数手段１０４の入出力を入力から出力への写像φで書き表すと、例えば変数ノードグループ（２）へのチェックノード処理の入出力は式３で表される。
φ（ａ21，ａ22；ｘ’1 ，ｘ3 ，ｘ4 ）＝（ｂ21，ｂ22；ｘ’2 ）
……（式３）
【００４９】
また、（３）へのチェックノード処理の入出力は式４で表される。
φ（ａ31，ａ32；ｘ’1 ，ｘ’2 ，ｘ4 ）＝（ｂ31，ｂ32；ｘ’3 ）
……（式４）
但し、写像φとしては、ｓｕｍ−ｐｒｏｄｕｃｔアルゴリズムの場合は、指数領域での計算、ｍｉｎ−ｓｕｍアルゴリズムの場合は多段の比較演算となるなど、更新アルゴリズムに応じた写像が用いられる。
【００５０】
これら４つの入出力のうち、第２種のものは補助メモリ手段１０２において格納または読み出しされる。
【００５１】
以上、図５〜図７を参照して説明した本実施の形態の復号器の動作の特徴は、変数ノードグループ（１）〜（４）毎にチェックノード処理が行われる点、付加計算値が補助メモリ手段１０２に格納される点、および格納された付加計算値が事前計算値として補助メモリ手段１０２から読み出されて次回のチェックノード処理の入力とされる点にある。
【実施例】
【００５２】
次に、図９を参照して本実施の形態の実施例を詳細に説明する。図９はＭＰ復号の更新アルゴリズムがｍｉｎ−ｓｕｍアルゴリズムである場合の本発明の復号装置のチェックノード関数手段１０４の回路のブロック図を示している。この場合、式３および式４の写像φは正負ビットのＸＯＲ演算と絶対値の最小値の組み合わせ演算の２つからなる。
【００５３】
但し、説明の簡単のために、正負ビットのＸＯＲ（排他的論理和）演算は省略しており、絶対値の最小値の組み合わせ演算のみ示している。チェックノード処理回路９０３は、メッセージメモリ手段９０１（図１の１０１に相当）から読み込んだメッセージａ1 ，…，ａp を第１種の入力とし、また補助メモリ手段９０２（図１の１０２に相当）から読み込んだ事前計算値ｘ1 ，…，ｘq を第２種の入力とする。但し、図８を参照して説明したように、これらの入力は、チェックノード処理が行われている変数ノードグループに応じて定められる。なお、９０４〜９０６は比較回路である。
【００５４】
また、チェックノード処理回路９０３は、メッセージｂ1 ，…，ｂp を第１種の出力とし、また付加計算値（すなわち事前計算値）ｘ’を第２種の出力とする。第１種の出力ｂi,i ＝１，…，ｐの計算式は式５〜式７で与えられる。
【００５５】
ｍi ＝ｍｉｎ｛ａ1 ，…，＜ａi ＞，…，ａp ｝  ，ｉ＝１，…，ｐ
……（式５）
ｎ＝ｍｉｎ｛ｘ1 ，…，ｘq ｝                    ……（式６）
ｂi ＝ｍｉｎ｛ｍｉ，ｎ｝  ，ｉ＝１，…，ｐ      ……（式７）
但し、ｍｉｎ｛  ｝は｛  ｝内の数値のうち最小のものを表す。また、＜ｍi ＞はｍi を除くことを表す。
【００５６】
式５〜式７に示されるように、ｂi はａi を除く第１種の入力および第２種の入力全部のうちの最小値となる。第２種の出力ｘ’は式８で与えられる。
ｘ’＝ｍｉｎ｛ａ1 ，…，ａp ｝      ……（式８）
式８に示されるように、ｘ’は第１種の入力ａ1 ，…，ａp のうちの最小値となる。
【００５７】
式５〜式７で算出されたチェックノードからのメッセージは、メッセージメモリ手段９０１に格納される。また、式８で算出された付加計算値は補助メモリ手段９０２に格納される。
【００５８】
次に、本実施例による効果を説明する。従来から知られている方式、例えば非特許文献３で知られている方式によれば、９０３のチェックノード処理回路は、比較回路９０４と９０６の直列回路および比較回路９０５と９０６の直列回路からなる。これらの直列回路における比較回路の直列段数は、例として、チェックノードから出るエッジの数が６４の場合、ｌｏｇ＿２（６４）＝６段となる。
【００５９】
これに対して、本発明においてＢ＝８，ｐ＝８，ｑ＝７と設定することにより、９０３の回路の比較器の直列段数は４段となる。その結果、回路の複雑度が大幅に下がる。つまり、チェックノード関数手段１０４の遅延の削減度は比較器の直列段数の削減度以上であるから、（６−４）／６＝１／３＝３３．３…％以上の遅延削減が達成されるのである。
【００６０】
上記実施の形態や実施例における動作は、予めその動作手順をプログラムとしてＲＯＭなどの記録媒体に格納しておき、これをコンピュータにより読み取らせて実行させるようにすることができることは明白である。
【図面の簡単な説明】
【００６１】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】誤り訂正符号化および復号の概念を示す図である。
【図３】パリティ検査行列および対応するＴａｎｎｅｒグラフを示す図である。
【図４】ＭＰ復号のフルパラレルなメッセージ更新スケジュールを示す図である。
【図５】本発明の特徴である、変数ノード全体の複数のグループへの分割を示す図である。
【図６】本発明の実施の形態の動作を示すフローチャートである。
【図７】本発明の実施の形態のメッセージ更新スケジュールを示す図である。
【図８】本発明の実施の形態において、チェックノード関数手段の入出力をＴａｎｎｅｒグラフを使って示した図である。
【図９】本発明の実施の形態の実施例を示す回路ブロック図である。
【符号の説明】
【００６２】
１０１，９０１  メッセージメモリ手段
１０２，９０２  補助メモリ手段
１０３  変数ノード関数手段
１０４，９０３  チェックノード関数手段
１０５  制御手段
【図１】
2006191246.tif 000003
【図２】
2006191246.tif 000004
【図３】
2006191246.tif 000005
【図４】
2006191246.tif 000006
【図５】
2006191246.tif 000007
【図６】
2006191246.tif 000008
【図７】
2006191246.tif 000009
【図８】
2006191246.tif 000010
【図９】
2006191246.tif 000011