(57)【要約】【課題】LDPC符号をmin-sum復号法により復号する復号装置の回路規模の増大を抑制する。【解決手段】チェックノードメッセージ格納用メモリには、全枝数×符号１ビットと、各バリアブルノードからそれぞれ入力されるメッセージの絶対値の最小値と第２最小値×行数と、最小値の位置情報×行数を格納する。チェックノードメッセージudを演算する場合、ステップＳ２１で、符号１ビットsign(ud)を読み出し、ステップＳ２２で、最小値の位置情報を読み出し、vdが最小値であるか否かを判定する。vdが最小値であると判定した場合、ステップＳ２３で第２最小値を読み出す。ステップＳ２５で、符号１ビットsign(ud)と第２最小値を乗算してチェックノードメッセージudを取得する。本発明は、LDPC符号をmin-sum復号法により復号する復号装置に適用できる。【選択図】図１１
2010028408.tif 000002
【特許請求の範囲】
【請求項１】
LDPC(Low Density Parity Check codes)符号を復号する復号装置において、
前記LDPC符号の復号のためのチェックノード演算およびバリアブルノード演算を行なう演算手段と、
前記演算手段による演算結果であるメッセージを保持する保持手段とを含み、
前記保持手段は、前記演算手段による前記バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットを保持し、
前記演算手段は、前記保持手段に保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージを演算する
復号装置。
【請求項２】
前記演算手段は、min-sum演算復号法に従い、前記チェックノード演算を行なう
請求項１に記載の復号装置。
【請求項３】
前記演算手段は、前記最小値の前記位置情報に基づき、演算する前記チェックノードメッセージに対応する前記バリアブルノードメッセージが最小値であるか否かを判定し、
演算する前記チェックノードメッセージに対応する前記バリアブルノードメッセージが最小値であると判定した場合、前記第２最小値を採用して、前記チェックノードメッセージを演算し、
演算する前記チェックノードメッセージに対応する前記バリアブルノードメッセージが最小値ではないと判定した場合、前記最小値を採用して、前記チェックノードメッセージを演算する
請求項２に記載の復号装置。
【請求項４】
LDPC(Low Density Parity Check codes)符号の復号のためのチェックノード演算およびバリアブルノード演算を行なう演算手段と、
前記演算手段による演算結果であるメッセージを保持する保持手段とを備える復号装置の復号方法において、
前記保持手段による、前記演算手段による前記バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットを保持する保持ステップと、
前記演算手段による、前記保持手段に保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージを演算する演算ステップと
を含む復号方法。
【請求項５】
LDPC(Low Density Parity Check codes)符号を復号するコンピュータに、
前記LDPC符号の復号のためのチェックノード演算およびバリアブルノード演算を行なう演算手段と、
前記演算手段による演算結果であるメッセージを保持する保持手段とを含み、
前記保持手段は、前記演算手段による前記バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットを保持し、
前記演算手段は、前記保持手段に保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージを演算する
ように機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号装置、復号方法、およびプログラムに関し、特に、低密度パリティ検査符号（LDPC符号）によって符号化されている符号を復号する復号装置、復号方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、例えば、移動体通信や深宇宙通信といった通信分野、および地上波または衛星ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤り訂正符号化および復号の効率化を目的として符号理論に関する研究も盛んに行われている。
【０００３】
符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されている。
【０００４】
また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)（以下、LDPC符号と称する）が脚光を浴びている。
【０００５】
LDPC符号は、R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check Codes", Cambridge, Massachusetts: M. I. T. Press, 1963」において最初に提案されたものである。その後、非特許文献１、非特許文献２等において再注目されるに至ったものである。
【０００６】
LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くするにしたがって、シャノン限界に近い性能が得られることがわかりつつある。また、LDPC符号は、最小距離が符号長に比例するという性質があることから、その特徴として、ブロック誤り確率特性がよく、さらに、ターボ符号等の復号特性において観測される、いわゆるエラーフロア現象が殆ど生じないことも利点として挙げられる。
【０００７】
以下、このようなLDPC符号について具体的に説明する。なお、LDPC符号は、線形符号であり、必ずしも２元である必要はないが、ここでは、２元であるものとして説明する。
【０００８】
LDPC符号は、そのLDPC符号を定義する検査行列(parity check matrix)が疎なものであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポーネントの"1"の個数が非常に少なく構成されるものであり、疎な検査行列をHで表すものとすると、そのような検査行列としては、例えば、図１に示すように、各列のハミング重み（"1"の数）(weight)が"3"であり、且つ、各行のハミング重みが"6"であるもの等がある。
【０００９】
このように、各行および各列のハミング重みが一定である検査行列Hによって定義されるLDPC符号は、レギュラーLDPC符号と称される。一方、各行および各列のハミング重みが一定でない検査行列Hによって定義されるLDPC符号は、イレギュラーLDPC符号と称される。
【００１０】
このようなLDPC符号による符号化は、検査行列Hに基づいて生成行列Gを生成し、この生成行列Gを２元の情報メッセージに対して乗算することによって符号語を生成することで実現される。具体的には、LDPC符号による符号化を行う符号化装置は、まず、検査行列Hの転置行列HTとの間に、式GHT=0が成立する生成行列Gを算出する。
【００１１】
ここで、生成行列Gが、k×n行列である場合には、符号化装置は、生成行列Gに対してkビットからなる情報メッセージ（ベクトルu）を乗算し、nビットからなる符号語ｃ（＝uＧ）を生成する。この符号化装置によって生成された符号語は、値が"0"の符号ビットが"+1"に、値が"1"の符号ビットが"−1"にといったようにマッピングされて送信され、所定の通信路を介して受信側において受信されることになる。
【００１２】
一方、LDPC符号の復号は、Gallagerが確率復号(Probabilistic Decoding)と称して提案したアルゴリズムであって、バリアブルノード(variable node（メッセージノード(message node)とも称される）)と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードそれぞれを、単にノードとも称する。
【００１３】
しかしながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値であることから、解析的に解くためには、連続した値をとるメッセージの確率分布そのものを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、Gallagerは、LDPC符号の復号アルゴリズムとして、アルゴリズムＡまたはアルゴリズムＢを提案している。
【００１４】
LDPC符号の復号は、一般的には、図２に示すような手順にしたがって行われる。なお、ここでは、受信値をU0(u0i)とし、チェックノードから出力されるメッセージをujとし、バリアブルノードから出力されるメッセージをviとする。また、ここでは、メッセージとは、値の"0"らしさを、いわゆる対数尤度比(log likelihood ratio)で表現した実数値である。
【００１５】
まず、LDPC符号の復号においては、ステップＳ１１において、受信値U0(u0i)が受信され、メッセージujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、ステップＳ１２に進む。ステップＳ１２において、受信値U0(u0i)に基づいて、次式（１）に示す演算を行うことによってメッセージviが求められ、さらに、このメッセージviに基づいて、次式（２）に示す演算を行うことによってメッセージujが求められる。
【００１６】
【数１】
2010028408.tif 000003
・・・（１）
【００１７】
【数２】
2010028408.tif 000004
・・・（２）
【００１８】
ここで、式（１）と式（２）におけるdvとdcは、それぞれ、検査行列Hの縦方向（行方向）と横方向（列方向）の"1"の個数を示す任意に選択可能とされるパラメータであり、例えば、(3,6)符号の場合には、dv=3，dc=6となる。
【００１９】
なお、式（１）または（２）の演算においては、それぞれ、メッセージを出力しようとする枝(edge)から入力されたメッセージを、和または積演算のパラメータとしては用いないことから、和または積演算の範囲が、１乃至dv-1または１乃至dc-1となっている。また、式（２）に示す演算は、実際には、２入力v1，v2に対する１出力で定義される次式（３）に示す関数R(v1,v2)のテーブルを予め作成しておき、これを次式（４）に示すように連続的（再帰的）に用いることによって行われる。
【００２０】
【数３】
2010028408.tif 000005
・・・（３）
【００２１】
【数４】
2010028408.tif 000006
・・・（４）
【００２２】
ステップＳ１２では、さらに、変数kが"1"だけインクリメントされ、ステップＳ１３に進む。ステップＳ１３では、変数kが所定の繰り返し復号回数N以上であるか否かが判定される。ステップＳ１３において、変数kがN以上ではないと判定された場合、ステップＳ１２に戻り、以下、同様の処理が繰り返される。
【００２３】
また、ステップＳ１３において、変数kがN以上であると判定された場合、ステップＳ１４に進み、次式（５）に示す演算を行うことによって最終的に出力する復号結果としてのメッセージvが求められて出力され、LDPC符号の復号処理が終了する。
【００２４】
【数５】
2010028408.tif 000007
・・・（５）
【００２５】
ここで、式（５）の演算は、式（１）の演算とは異なり、バリアブルノードに接続している全ての枝からの入力メッセージを用いて行われる。
【００２６】
このようなLDPC符号の復号は、例えば(3,6)符号の場合には、図３に示すように、各ノード間でメッセージの授受が行われる。なお、図３における"="で示すノード（バリアブルノード）では、式（１）に示した演算が行われ、"+"で示すノード（チェックノード）では、式（２）に示した演算が行われる。特に、アルゴリズムＡでは、メッセージを２元化し、"+"で示すノードにおいて、dc-1個の入力メッセージの排他的論理和演算を行い、"="で示すノードにおいて、受信値Rに対して、dv-1個の入力メッセージが全て異なるビット値であった場合には、符号を反転して出力する。
【００２７】
上述したLDPC符号の復号法は、Belief Propagation，Sum Product Algorithm 等の複数の呼び名を持つが、その演算内容はどれも共通である。
【００２８】
また、一方で、近年、LDPC符号の復号の実装方法に関する研究も行われている。実装方法について述べる前に、まず、LDPC符号の復号を摸式化して説明する。
【００２９】
図４は、(3,6)LDPC符号（符号化率1/2、符号長12）の検査行列(parity check matrix)Hの例である。LDPC符号の検査行列Hは、図５のように、タナーグラフを用いて書き表すことができる。ここで、図５において、"+"はチェックノードを表し、"="はバリアブルノードを表している。チェックノードとバリアブルノードは、それぞれ、検査行列の行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列の"1"に相当する。
【００３０】
即ち、検査行列の第ｊ行第ｉ列のコンポーネントが１である場合には、図５において、上からｉ番目のバリアブルノード（"="のノード）と、上からｊ番目のチェックノード（"+"のノード）とが、枝により接続される。枝は、バリアブルノードに対応する符号ビットが、チェックノードに対応する拘束条件を持つことを表わす。なお、図５は、図４の検査行列のタナーグラフとなっている。
【００３１】
LDPC符号の復号方法であるサムプロダクトアルゴリズム(Sum Product Algorithm)は、バリアブルノードの演算とチェックノードの演算とを繰り返し行う。
【００３２】
バリアブルノードでは、図６のように、式（１）の演算を行う。すなわち、図６において、計算しようとしている枝に対応するメッセージviは、バリアブルノードに繋がっている残りの枝からのメッセージu1およびu2と、受信情報u0iを用いて計算される。他の枝に対応するメッセージも同様に計算される。
【００３３】
チェックノードの演算について説明する前に、式（２）を、
a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)
の関係を用いて、次式（６）のように書き直す。ただし、sign(x)は、x≧0のとき1であり、x＜0のとき-1である。
【００３４】
【数６】
2010028408.tif 000008
・・・（６）
【００３５】
さらに、x≧0において、φ(x)=ln(tanh(x/2))と定義すると、φ-1(x)=2tanh-1(e-x)であるから、式（６）は、次式（７）に示すように表記される。
【００３６】
【数７】
2010028408.tif 000009
・・・（７）
【００３７】
チェックノードでは、図７のように、式（７）の演算を行う。すなわち、図７において、計算しようとしている枝に対応するメッセージujは、チェックノードに繋がっている残りの枝からのメッセージv1,v2,v3,v4,v5を用いて計算される。他の枝に対応するメッセージも同様に計算される。
【００３８】
なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x＞0において、φ(x)=φ-1(x)である。関数φ(x)および関数φ-1(x)をハードウェアとしての復号装置に実装する際には、LUT(Look Up Table)が用いられる。
【００３９】
しかしながら、並列の復号装置を想定した場合、その並列数が多いときなどには、LUTが非常に大きくなってしまい、復号装置の回路規模が大きくなってしまう。そこで、上述した式（７）で表されるチェックノード演算の代わりに、式（７）を簡略化した次式（８）を用いるmin-sum復号法を適用することにより、復号装置の回路規模を抑えることができる。
【００４０】
以下、min-sum復号法について説明する。min-sum復号では、チェックノード演算時のメッセージの更新に次式（８）を用いる。
【００４１】
【数８】
2010028408.tif 000010
・・・（８）
【００４２】
式（８）中のmin=|vi|は、|vi|の中の最小値を意味している。この式（８）には、式（７）中に存在する関数φ(x)および関数φ-1(x)が存在しないので、ハードウェアとしての並列復号装置にLUTを保持する必要がない。したがって、並列復号装置の回路規模をより小さくすることができる。
【００４３】
また、バリアブルノード演算は、式（１）で表わされるが、式（５）と次式（９）を組合せたものとして考えることができる。
【００４４】
【数９】
2010028408.tif 000011
・・・（９）
【００４５】
すなわち、min-sum復号では、式（８）で表されるチェックノード演算と、式（１）で表されるバリアブルノード演算とから復号結果を得ることができる。あるいは、式（９）と式（８）で表される復号結果からメッセージの演算とチェックノード演算の組合せと、式（５）で表される復号結果計算から復号結果を得ることができる。
【００４６】
図８は、図４に示された検査行列Hで表現されるLDPC符号をmin-sum復号法により復号する復号装置の構成の一例を示している。
【００４７】
この復号装置１０は、各部に対して制御信号を供給する制御信号生成部１１、前段から入力される受信データ（通信を経たLDPC符号の対数尤度比LLR）を保持する受信用メモリ１２、受信データまたは復号途中結果の一方を選択して後段に供給するスイッチ１３、式（９）と式（８）を合わせた演算を行なうチェックノード演算部１４、チェックノードメッセージ格納用メモリ１５、式（５）の計算を行なう復号結果計算部１６、および復号途中結果格納メモリ１７から構成される。
【００４８】
復号装置１０においては、チェックノード演算部１４は、復号途中結果格納メモリ１７から供給された復号途中結果と、チェックノードメッセージ格納用メモリ１５から供給された１回前のチェックノードメッセージを用いて式（９）と式（８）を合わせた演算を行い、その結果得られるメッセージをチェックノードメッセージ格納用メモリ１５に格納させる。
【００４９】
なお、式（８）の演算については、例えば図９に示すように、チェックノードに接続されている枝数が６本であり、各バリアブルノードからそれぞれ入力されるバリアブルノードメッセージをva=-4，vb=5，vc=-2，vd=-3，ve=7，vf=-4とする。また、チェックノード演算後の各バリアブルノードへのチェックノードメッセージをua，ub，uc，ud，ue，ufとすると、uaは、式（８）に基づく次式（１０）によって算出される。
【００５０】
【数１０】
2010028408.tif 000012
・・・（１０）
【００５１】
同様に、ub=2，uc=-3，ud=-2，ue=2，uf=-2が算出される。
【００５２】
復号結果計算部１６は、チェックノードメッセージと受信データを用いて式（５）の演算を行い、その演算結果を復号途中結果として復号途中結果格納メモリ１７に格納させる。
上述した処理を１巡することで１回の復号となり、この復号を所定回数だけ繰り返し、最終復号回数のときには、復号結果計算部１６による演算結果を、復号途中結果格納メモリ１７を介して復号結果として後段に出力する。
【００５３】
【非特許文献１】D. J. C. MacKay, "Good error correcting codes based on very sparse matrices", Submitted to IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999
【非特許文献２】M. G. Luby, M. Mitzenmacher, M. A. Shokrollahi and D. A. Spielman, "Analysis of low density codes and improved designs using irregular graphs", in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998
【発明の開示】
【発明が解決しようとする課題】
【００５４】
上述した復号装置１０においては、式（８）の演算を実行するため、チェックノードメッセージ格納用メモリ１５に、検査行列Hに対応する全枝数分のメッセージを格納する必要がある。したがって、検査行列Hに対応する全枝数が増加するに伴い、また、符号長（量子化ビット長）が長くなるに伴い、チェックノードメッセージ格納用メモリ１５の容量が大きくなり、復号装置の回路規模が増大してしまうことになる。
【００５５】
本発明はこのような状況に鑑みてなされたものであり、LDPC符号をmin-sum復号法により復号する復号装置の回路規模の増大を抑制できるようにするものである。
【課題を解決するための手段】
【００５６】
本発明の一側面である復号装置は、LDPC符号を復号する復号装置において、前記LDPC符号の復号のためのチェックノード演算およびバリアブルノード演算を行なう演算手段と、前記演算手段による演算結果であるメッセージを保持する保持手段とを含み、前記保持手段は、前記演算手段による前記バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットを保持し、前記演算手段は、前記保持手段に保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージを演算する。
【００５７】
前記演算手段は、min-sum演算復号法に従い、前記チェックノード演算を行なうようにすることができる。
【００５８】
前記演算手段は、前記最小値の前記位置情報に基づき、演算する前記チェックノードメッセージに対応する前記バリアブルノードメッセージが最小値であるか否かを判定し、演算する前記チェックノードメッセージに対応する前記バリアブルノードメッセージが最小値であると判定した場合、前記第２最小値を採用して、前記チェックノードメッセージを演算し、演算する前記チェックノードメッセージに対応する前記バリアブルノードメッセージが最小値ではないと判定した場合、前記最小値を採用して、前記チェックノードメッセージを演算するようにすることができる。
【００５９】
本発明の一側面である復号方法は、LDPC符号の復号のためのチェックノード演算およびバリアブルノード演算を行なう演算手段と、前記演算手段による演算結果であるメッセージを保持する保持手段とを備える復号装置の復号方法において、前記保持手段による、前記演算手段による前記バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットを保持する保持ステップと、前記演算手段による、前記保持手段に保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージを演算する演算ステップとを含む。
【００６０】
本発明の一側面であるプログラムは、LDPC符号を復号するコンピュータに、前記LDPC符号の復号のためのチェックノード演算およびバリアブルノード演算を行なう演算手段と、前記演算手段による演算結果であるメッセージを保持する保持手段とを含み、前記保持手段は、前記演算手段による前記バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットを保持し、前記演算手段は、前記保持手段に保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージを演算するように機能させる。
【００６１】
本発明の一側面においては、バリアブルノード演算の結果であるバリアブルノードメッセージの絶対値の最小値、前記最小値の次に小さな第２最小値、前記最小値の位置情報、および、前記チェックノード演算の結果となるチェックノードメッセージの符号ビットが保持され、保持されている、前記最小値、前記第２最小値、前記最小値の位置情報、および、前記符号ビットに基づいて、前記チェックノードメッセージが演算される。
【発明の効果】
【００６２】
本発明の一側面によれば、LDPC符号を復号することができる。また、本発明の一側面によれば、LDPC符号を復号する復号装置の回路規模の増大を抑制することができる。
【発明を実施するための最良の形態】
【００６３】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００６４】
図１０、本発明の一実施の形態である復号装置の構成例を示している。この復号装置２０は、図８に示された復号装置１０のチェックノードメッセージ格納用メモリ１５を、チェックノードメッセージ格納用メモリ２１で置換したものであり、その他の構成要素について共通であって同一の番号を付している。
【００６５】
すなわち、本発明を適用した復号装置２０は、各部に対して制御信号を供給する制御信号生成部１１、前段から入力される受信データ（通信を経たLDPC符号の対数尤度比LLR）を保持する受信用メモリ１２、受信データまたは復号途中結果の一方を選択して後段に供給するスイッチ１３、式（９）と式（８）を合わせた演算を行なうチェックノード演算部１４、チェックノードメッセージ格納用メモリ２１、式（５）の計算を行なう復号結果計算部１６、および復号途中結果格納メモリ１７から構成される。
【００６６】
受信用メモリ１２には、符号長の数だけ、受信データが格納される。従って、例えば、図４に示された検査行列Hに対応する(3,6)LDPC符号（符号化率1/2、符号長12）の受信データの場合、１２個の受信データを格納する。
【００６７】
チェックノードメッセージ格納用メモリ２１には、全枝数×符号１ビットと、各バリアブルノードからそれぞれ入力されるメッセージの絶対値の最小値と第２最小値（最小値の次に小さな値）×行数（チェックノード数）と、最小値の位置情報×行数（チェックノード数）を格納する。
【００６８】
例えば図９に示されたように、ある１つのチェックノードに注目した場合、このチェックノードに接続されている枝数が６本であり、各バリアブルノードからそれぞれ入力されるバリアブルノードメッセージをva=-4，vb=5，vc=-2，vd=-3，ve=7，vf=-4とする。また、チェックノード演算後の各バリアブルノードへのチェックノードメッセージをua，ub，uc，ud，ue，ufとすると、上述したように、ua=-2，ub=2，uc=-3，ud=-2，ue=2，uf=-2となる。
【００６９】
ua乃至ufの絶対値とva乃至vfを比較すると、ua乃至ufの絶対値は、va乃至vfの絶対値の最小値(2)または第２最小値(3)のいずれかであることがわかる。従って、チェックノードメッセージ格納用メモリ２１には、ua乃至ufを求めるために必要な、va乃至vfの絶対値の最小値(2)および第２最小値(3)を格納するようにし、絶対値が第２最小値よりも大きな値（いまの場合、-4，5，7，-4）については格納しない。ただし、va乃至vfの符号（正負）に基づいてua乃至ufの符号（正負）を求め、ua乃至ufの符号（正負）を示す符号１ビットsign(ua)乃至sign(uf)を格納するようにする。さらに、va乃至vfの絶対値の最小値が、va乃至vfのいずれに位置しているのかを示す位置情報（例えば、図９の場合、vcが最小値であることを示す情報）も格納する。
【００７０】
次に、復号装置２０の動作について説明する。チェックノード演算部１４は、復号途中結果格納メモリ１７から供給された復号途中結果と、チェックノードメッセージ格納用メモリ２１から供給された１回前のチェックノードメッセージを用いて式（９）の演算を行なった後、式（８）の演算を行い、その結果得られるメッセージをチェックノードメッセージ格納用メモリ２１に格納させる。
【００７１】
ただし、式（８）の演算については、図９を参照して上述したように、式（１０）の演算を実行するのではなく、チェックノードメッセージ格納用メモリ２１に格納されている情報を用いて演算する（図１１を参照して後述する）。
【００７２】
復号結果計算部１６は、チェックノードメッセージと受信データを用いて式（５）の演算を行い、その演算結果を復号途中結果として復号途中結果格納メモリ１７に格納させる。
【００７３】
上述した処理を１巡することで１回の復号となり、この復号を所定回数だけ繰り返し、最終復号回数のときには、復号結果計算部１６による演算結果を、復号途中結果格納メモリ１７を介して復号結果として後段に出力する。
【００７４】
次に、チェックノード演算部１４によるチェックノードメッセージ演算処理について、図９の例を用い、図１１のフローチャートを参照して説明する。
【００７５】
例えば、図９に示されたチェックノードにおいて、チェックノードメッセージudを演算する場合、ステップＳ２１において、チェックノード演算部１４は、チェックノードメッセージ格納用メモリ２１から、符号１ビットsign(ud)を読み出す。いまの場合、sign(ud)=-1が読み出される。
【００７６】
ステップＳ２２において、チェックノード演算部１４は、チェックノードメッセージ格納用メモリ２１から、最小値の位置情報を読み出して、読み出した最小値の位置情報に基づいて、vdが最小値であるか否かを判定する。vdが最小値であると判定した場合、チェックノード演算部１４は、処理をステップＳ２３に進め、チェックノードメッセージ格納用メモリ２１からva乃至vfの絶対値の第２最小値（図９の場合、(3)）を読み出す。この後、処理をステップＳ２５に進める。
【００７７】
なお、ステップＳ２２において、vdが最小値ではないと判定した場合、チェックノード演算部１４は、処理をステップＳ２４に進め、チェックノードメッセージ格納用メモリ２１からva乃至vfの絶対値の最小値（図９の場合、(2)）を読み出す。この後、処理をステップＳ２５に進める。
【００７８】
いまの場合、vdが最小値ではないと判定され、ステップＳ２４において、チェックノードメッセージ格納用メモリ２１からva乃至vfの絶対値の最小値（図９の場合、(2)）が読み出される。
【００７９】
ステップＳ２５において、チェックノード演算部１４は、ステップＳ２１で読み出した符号１ビットsign(ud)と、ステップＳ２３で読み出した第２最小値、またはステップＳ２４で読み出した最小値とを乗算して、チェックノードメッセージudを取得する。
【００８０】
いまの場合、ステップＳ２１で読み出された符号１ビットsign(ud)=-1と、ステップＳ２４で読み出した最小値(2)とが乗算されて、チェックノードメッセージud=-2が取得される。以上で、チェックノード演算部１４によるチェックノードメッセージ演算処理の説明を終了する。
【００８１】
以上説明したように、本発明を適用した復号装置２０のチェックノードメッセージ格納用メモリ２１は、図８に示された従来の復号装置１０のチェックノードメッセージ格納用メモリ１５に比較して、その容量を削減することができる。
【００８２】
例えば、図４に示された検査行列Hに対応する(3,6)LDPC符号で量子化ビット数を６ビットとした場合、従来の復号装置１０のチェックノードメッセージ格納用メモリ１５では、２１６（＝３６×６）ビットの容量を要する。これに対して、本発明を適用した復号装置２０のチェックノードメッセージ格納用メモリ２１では、全枝数×符号１ビット＝３６（＝３６×１）ビット、各バリアブルノードからそれぞれ入力されるメッセージの絶対値の最小値と第２最小値×行数（チェックノード数）＝６０（＝２×５×６）ビット、最小値の位置情報×行数（チェックノード数）＝１８ビット（３×６）の合計１１４ビットの容量で済むことになり、その分だけメモリ容量を削減することができる。
【００８３】
また例えば、図１１に示す検査行列Hに対応する(4,9)LDPC符号で量子化ビット数を６ビットとした場合、従来の復号装置１０のチェックノードメッセージ格納用メモリ１５では、４８０（＝８０×６）ビットの容量を要する。これに対して、本発明を適用した復号装置２０のチェックノードメッセージ格納用メモリ２１では、全枝数×符号１ビット＝８０（＝８０×１）ビット、各バリアブルノードからそれぞれ入力されるメッセージの絶対値の最小値と第２最小値×行数（チェックノード数）＝１００（＝２×５×１０）ビット、最小値の位置情報×行数（チェックノード数）＝３０ビット（３×１０）の合計２１０ビットの容量で済むことになり、その分だけメモリ容量を削減することができる。
【００８４】
なお、本発明によるチェックノードメッセージ格納用メモリの容量削減率は、特に、一般的にLDPC符号が運用されるときのように、符号長が数千乃至数万と大きくなり、行重みが数十と大きくなるに伴って増大する。したがって、本発明による効果も非常に大きなものとなる。
【００８５】
ところで、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のコンピュータなどに、プログラム記録媒体からインストールされる。
【００８６】
コンピュータでは、CPUが、例えば、ハードディスクに記憶されているプログラムをRAMにロードして実行することにより、上述した一連の処理が行われる。
【００８７】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００８８】
【図１】LDPC符号の検査行列Hを説明する図である。
【図２】LDPC符号の復号手順を説明するフローチャートである。
【図３】メッセージの流れを説明する図である。
【図４】LDPC符号の検査行列Hの例を示す図である。
【図５】検査行列Hのタナーグラフを示す図である。
【図６】バリアブルノードを示す図である。
【図７】チェックノードを示す図である。
【図８】LDPC符号を復号する従来の復号装置の構成例を示すブロック図である。
【図９】チェックノードメッセージの演算を説明するための図である。
【図１０】本発明を適用した復号装置の構成例を示すブロック図である。
【図１１】チェックノードメッセージの演算を説明するフローチャートである。
【図１２】LDPC符号の検査行列Hの例を示す図である。
【符号の説明】
【００８９】
２０  復号装置，  １１  制御信号生成部，  １２  受信用メモリ，  １３  スイッチ，  １４  チェックノード演算部，  １６  復号結果部，  １７  復号途中結果格納メモリ，２１  チェックノードメッセージ用格納メモリ
【図１】
2010028408.tif 000013
【図２】
2010028408.tif 000014
【図３】
2010028408.tif 000015
【図４】
2010028408.tif 000016
【図５】
2010028408.tif 000017
【図６】
2010028408.tif 000018
【図７】
2010028408.tif 000019
【図８】
2010028408.tif 000020
【図９】
2010028408.tif 000021
【図１０】
2010028408.tif 000022
【図１１】
2010028408.tif 000023
【図１２】
2010028408.tif 000024