(57)【特許請求の範囲】
【請求項１】
検査行列で定義される複数のビットノードと複数の検査ノードとの間でメッセージを反復伝搬させることで低密度パリティ検査符号を復号する復号装置において、
符号化された入力信号を取得し、前記入力信号と前記検査ノードから前記ビットノードに伝搬されるメッセージとに基づいて前記メッセージに対数尤度比に代えて前記入力信号が加算される計算を含む演算を使用して前記ビットノードから前記検査ノードに伝搬されるメッセージを計算する列演算手段と、
前記入力信号に与えられる雑音の分散を取得し、前記雑音の分散に基づいて所定のパラメータの値を特定し、前記パラメータの値と前記列演算手段で計算される前記ビットノードから前記検査ノードに伝搬されるメッセージとに基づいて前記パラメータを係数として含む線形関数を使用して前記検査ノードから前記ビットノードに伝搬されるメッセージを計算する行演算手段と、
を有し、
前記行演算手段は、前記雑音の分散と前記パラメータの値とを対応付けた変換テーブルを有し、前記変換テーブルを参照して前記パラメータの値を特定する、
ことを特徴とする復号装置。
【請求項２】
検査行列で定義される複数のビットノードと複数の検査ノードとの間でメッセージを反復伝搬させることで低密度パリティ検査符号を復号する復号装置において、
符号化された入力信号を取得し、前記入力信号と前記検査ノードから前記ビットノードに伝搬されるメッセージとに基づいて前記メッセージに対数尤度比に代えて前記入力信号が加算される計算を含む演算を使用して前記ビットノードから前記検査ノードに伝搬されるメッセージを計算する列演算手段と、
前記入力信号に与えられる雑音の分散を取得し、前記雑音の分散に基づいて所定のパラメータの値を特定し、前記パラメータの値と前記列演算手段で計算される前記ビットノードから前記検査ノードに伝搬されるメッセージとに基づいて前記パラメータを係数として含む線形関数を使用して前記検査ノードから前記ビットノードに伝搬されるメッセージを計算する行演算手段と、
を有し、
前記行演算手段は、前記パラメータに依存する所定の線形関数を用いて前記検査ノードから前記ビットノードに伝搬されるメッセージを計算する、
ことを特徴とする復号装置。
【請求項３】
前記演算は、
【数２７】
0004845846.tif 000028
であり、
前記線形関数は、
【数２８】
0004845846.tif 000029
であり、
Ｋ0は固定値であるとともに、係数（σ2／２）Ｋ1は前記パラメータに基づいて前記変換テーブルから特定される、
ことを特徴とする請求項１または請求項２に記載の復号装置。
【請求項４】
検査行列で定義される複数のビットノードと複数の検査ノードとの間でメッセージを反復伝搬させることで低密度パリティ検査符号を復号する復号プログラムにおいて、
コンピュータを、
符号化された入力信号を取得し、前記入力信号と前記検査ノードから前記ビットノードに伝搬されるメッセージとに基づいて前記メッセージに対数尤度比に代えて前記入力信号が加算される計算を含む演算を使用して前記ビットノードから前記検査ノードに伝搬されるメッセージを計算する列演算手段、
前記入力信号に与えられる雑音の分散を取得し、前記雑音の分散に基づいて所定のパラメータの値を特定し、前記パラメータの値と前記列演算手段で計算される前記ビットノードから前記検査ノードに伝搬されるメッセージとに基づいて前記パラメータを係数として含む線形関数を使用して前記検査ノードから前記ビットノードに伝搬されるメッセージを計算する行演算手段、
として機能させ、
前記行演算手段は、前記雑音の分散と前記パラメータの値とを対応付けた変換テーブルを有し、前記変換テーブルを参照して前記パラメータの値を特定する、
ことを特徴とする復号プログラム。
【請求項５】
検査行列で定義される複数のビットノードと複数の検査ノードとの間でメッセージを反復伝搬させることで低密度パリティ検査符号を復号する復号プログラムにおいて、
コンピュータを、
符号化された入力信号を取得し、前記入力信号と前記検査ノードから前記ビットノードに伝搬されるメッセージとに基づいて前記メッセージに対数尤度比に代えて前記入力信号が加算される計算を含む演算を使用して前記ビットノードから前記検査ノードに伝搬されるメッセージを計算する列演算手段、
前記入力信号に与えられる雑音の分散を取得し、前記雑音の分散に基づいて所定のパラメータの値を特定し、前記パラメータの値と前記列演算手段で計算される前記ビットノードから前記検査ノードに伝搬されるメッセージとに基づいて前記パラメータを係数として含む線形関数を使用して前記検査ノードから前記ビットノードに伝搬されるメッセージを計算する行演算手段、
として機能させ、
前記行演算手段は、前記パラメータに依存する所定の線形関数を用いて前記検査ノードから前記ビットノードに伝搬されるメッセージを計算する、
ことを特徴とする復号プログラム。
【請求項６】
前記演算は、
【数２９】
0004845846.tif 000030
であり、
前記線形関数は、
【数３０】
0004845846.tif 000031
であり、
Ｋ0は固定値であるとともに、係数（σ2／２）Ｋ1は前記パラメータに基づいて前記変換テーブルから特定される、
ことを特徴とする請求項４または請求項５に記載の復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は復号装置および復号プログラムに関し、特に低密度パリティ検査符号を復号する復号装置および復号プログラムに関する。
【背景技術】
【０００２】
現在、ネットワーク上でのデータ通信や記録媒体に対するデータの読み書きにおいて、誤り訂正符号技術が一般的に用いられている。誤り訂正符号は、データを構成する一部の符号ビットについて読み取り誤りが生じても、読み取り側で正しい符号ビットを推定することを可能にする符号である。誤り訂正符号技術を用いることで、雑音の影響を受けて歪んだ信号から正しいデータを再現することが可能となる。
【０００３】
特に近年では、誤り訂正能力が極めて高い低密度パリティ検査（ＬＤＰＣ：Low Density Parity Check）符号が注目されている。低密度パリティ検査符号では、複数の符号ビットからなる符号語（コードワード）単位で符号化および復号が行われる。低密度パリティ検査符号を復号する復号装置は、数式（１）に示す検査行列Ｈのような検査行列を用いる。低密度パリティ検査符号で用いる検査行列は、各成分が１または０の行列であり、一般には成分１は行列内に疎な割合で現れる（例えば、非特許文献１参照）。
【０００４】
【数１】
0004845846.tif 000002
【０００５】
図９は、低密度パリティ検査符号の復号原理を示す図である。低密度パリティ検査符号の復号は、検査行列で定義されるビットノードと検査ノードとの間でメッセージを反復伝搬させることで行われる。ビットノードが検査行列の列に対応し、検査ノードが検査行列の行に対応する。ビットノードと検査ノードとを接続するリンクが検査行列の成分１に対応する。ビットノード、検査ノード、および、ビットノードと検査ノードとを接続するリンクで構成されるグラフをタナーグラフという。図９のタナーグラフは、数式（１）の検査行列Ｈに対応している。
【０００６】
低密度パリティ検査符号の復号では、最初に各符号ビットの対数尤度比（ＬＬＲ：Log Likelihood Ratio）をビットノードに対応付ける。対数尤度比は、値の確からしさを示す指標であり、信号が受ける雑音の分散を用いて入力信号を補正することで計算される。そして、ビットノードを介したメッセージの更新（列演算）と検査ノードを介したメッセージの更新（行演算）とを交互に繰り返す。
【０００７】
具体的には、ビットノードから検査ノードに伝搬されるメッセージをαとし検査ノードからビットノードに伝搬されるメッセージをβとすると、列演算では数式（２）に示すような計算が行われる。数式（２）においてＣ（ｎ）はｎ番目のビットノードに接続されている検査ノードの番号の集合である。例えば、ビットノードｂ1から検査ノードｃ1に渡される値α11は、検査ノードｃ2からビットノードｂ1に渡される値β21と１番目の符号ビットの対数尤度比λ1との和として計算される。なお、メッセージβの各値の初期値は０である。
【０００８】
【数２】
0004845846.tif 000003
【０００９】
また、行演算では、数式（３）に示すような双曲線関数を用いた計算が行われる。数式（３）においてＢ（ｍ）はｍ番目の検査ノードに接続されているビットノードの番号の集合である。例えば、検査ノードｃ2からビットノードｂ1に渡される値β21は、ビットノードｂ3から検査ノードｃ2に渡される値α23とビットノードｂ5から検査ノードｃ2に渡される値α25とに基づいて計算される。
【００１０】
【数３】
0004845846.tif 000004
【００１１】
このように、列演算と行演算とを繰り返すことで、メッセージαおよびメッセージβが次第に一定の値に収束する。ここで、数式（４）に示すような計算を行うことで、誤り訂正処理の結果としてメッセージζが得られる。例えば、１番目の符号ビットに対応する誤り訂正処理後の値ζ1は、最新のβ11，β21とλ1の和として計算される。
【００１２】
【数４】
0004845846.tif 000005
【００１３】
図１０は、低密度パリティ検査符号の復号装置例を示す図である。図１０に示す復号装置２は、ＬＬＲ変換手段２ａ、列演算手段２ｂ、行演算手段２ｃおよび硬判定手段２ｄを有する。ＬＬＲ変換手段２ａは、入力信号δと雑音の分散σ2とから各符号ビットに対応する対数尤度比λを計算する。入力信号δが受ける雑音が加法的白色ガウス雑音（ＡＷＧＮ：Additive White Gaussian Noise）と仮定すると、対数尤度比λは数式（５）に従って計算できる。なお、入力信号δの各符号ビットは、０または１の２値（ハードな値）ではなく、１．２４のような量子化幅の小さい値（ソフトな値）である。対数尤度比λに基づいて、列演算手段２ｂは列演算を行い、行演算手段２ｃは行演算を行う。硬判定手段２ｄは、誤り訂正処理後のソフトな値をハードな値に変換し復号信号εとして出力する。
【００１４】
【数５】
0004845846.tif 000006
【００１５】
ところで、上記の伝統的な復号方法では、双曲線関数を用いる行演算の計算負荷が非常に大きくなる。そこで、数式（３）の双曲線関数ｆ（ｘ）を線形関数で近似する試みが行われている（例えば、非特許文献２，３参照）。このように線形関数を用いて行演算を行うことで、低密度パリティ検査符号の復号の計算負荷が大きく軽減され、様々な用途に低密度パリティ検査符号を用いることが可能となる。
【非特許文献１】Jinghu Chen et al, "Reduced-Complexity Decoding of LDPC Codes", IEEE Transactions on communications, 2005, vol. 53, No. 8, p. 1288-1299
【非特許文献２】松本渉  他２名、「巡回近似ＭＩＮアルゴリズム」、電子情報通信学会  信学技法、2005年、RCS2005-40、p. 1-6
【非特許文献３】阪井塁  他２名、「ＬＤＰＣ符号の簡易復号法とその離散化密度発展法」、電子情報通信学会  信学技法、2005年、RCS2005-42、p. 13-18
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかし、上記非特許文献２，３に記載の技術では、列演算と行演算とを繰り返す処理の計算負荷は軽減されるが、事前処理として必要な入力信号から対数尤度比への変換の計算負荷が依然として大きいという問題がある。これは、符号ビット１つ１つに対して対数尤度比への変換処理が必要なためである。
【００１７】
一方、関数による計算を行う代わりに変換テーブルを予め用意しておく方法も考えられるが、この方法では、入力信号と雑音の分散の２つの入力から対数尤度比を特定することから少なくとも２次元の変換テーブルが必要となる。このため、変換テーブルを保持するために非常に大きな記憶領域が必要になるという問題がある。
【００１８】
本発明はこのような点に鑑みてなされたものであり、低密度パリティ検査符号の復号において計算負荷または記憶領域を削減することが可能な復号装置および復号プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明では上記課題を解決するために、図１に示すような復号装置が提供される。本発明に係る復号装置は、検査行列で定義される複数のビットノードと複数の検査ノードとの間でメッセージを反復伝搬させることで低密度パリティ検査符号を復号するものである。この復号装置１は、列演算手段１ａと行演算手段１ｂとを有する。列演算手段１ａは、符号化された入力信号δを取得し、入力信号δと検査ノードからビットノードに伝搬されるメッセージとに基づいてビットノードから検査ノードに伝搬されるメッセージを計算する。行演算手段１ｂは、入力信号δに与えられる雑音の分散σ2を取得し、雑音の分散σ2に基づいて所定のパラメータの値を特定し、パラメータの値と列演算手段１ａで計算されるビットノードから検査ノードに伝搬されるメッセージとに基づいて検査ノードからビットノードに伝搬されるメッセージを計算する。
【００２０】
このような復号装置１によれば、列演算手段１ａにより、符号化された入力信号δと検査ノードからビットノードに伝搬されるメッセージとに基づいてビットノードから検査ノードに伝搬されるメッセージが計算される。また、行演算手段１ｂにより、入力信号δに与えられる雑音の分散σ2に基づいて所定のパラメータの値が特定され、パラメータの値と列演算手段１ａで計算されるビットノードから検査ノードに伝搬されるメッセージとに基づいて検査ノードからビットノードに伝搬されるメッセージが計算される。
【００２１】
また、上記課題を解決するために、検査行列で定義される複数のビットノードと複数の検査ノードとの間でメッセージを反復伝搬させることで低密度パリティ検査符号を復号する復号プログラムにおいて、コンピュータを、符号化された入力信号を取得し、入力信号と検査ノードからビットノードに伝搬されるメッセージとに基づいてビットノードから検査ノードに伝搬されるメッセージを計算する列演算手段、入力信号に与えられる雑音の分散を取得し、雑音の分散に基づいて所定のパラメータの値を特定し、パラメータの値と列演算手段で計算されるビットノードから検査ノードに伝搬されるメッセージとに基づいて検査ノードからビットノードに伝搬されるメッセージを計算する行演算手段、として機能させることを特徴とする復号プログラムが提供される。
【００２２】
このような復号プログラムを実行するコンピュータによれば、列演算手段により、符号化された入力信号と検査ノードからビットノードに伝搬されるメッセージとに基づいてビットノードから検査ノードに伝搬されるメッセージが計算される。また、行演算手段により、入力信号に与えられる雑音の分散に基づいて所定のパラメータの値が特定され、パラメータの値と列演算手段で計算されるビットノードから検査ノードに伝搬されるメッセージとに基づいて検査ノードからビットノードに伝搬されるメッセージが計算される。
【発明の効果】
【００２３】
本発明では、符号化された入力信号に基づいて列演算を行うと共に、雑音の分散に依存したパラメータの値に基づいて行演算を行うこととした。これにより、誤り訂正能力の低下を防止しつつ、入力信号の各符号ビットを雑音の分散に応じた値に変換する事前処理を省略することができる。従って、復号の際の計算負荷または記憶領域を大きく削減することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態を図面を参照して詳細に説明する。まず、本発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示す復号装置１は、低密度パリティ検査符号を復号する装置である。復号装置１は、列演算手段１ａ、行演算手段１ｂおよび硬判定手段１ｃを有する。これらの機能は、コンピュータに所定の復号プログラムを実行させることによっても実現できる。
【００２５】
列演算手段１ａは、低密度パリティ検査符号に符号化された入力信号δを取得する。入力信号δは、符号語を構成する符号ビットの集合である。各符号ビットは、１．２４や−０．２３のようなソフトな値で表現されている。
【００２６】
そして、列演算手段１ａは、予め設定された検査行列に基づいて、符号語単位で列演算を行う。すなわち、列演算手段１ａは、符号ビットの集合と行演算手段１ｂで計算された最新の行演算後のメッセージ（検査ノードからビットノードに伝搬されるメッセージ）とに基づいて列演算を行い、得られたメッセージを保持する。なお、誤り訂正処理の開始時には、行演算後のメッセージの各値は初期値０が設定されている。
【００２７】
また、列演算手段１ａは、符号ビットの集合と最新の行演算後のメッセージとに基づいて、誤り訂正処理後のメッセージを計算する。このメッセージは、入力信号δの各符号ビットの値が補正されたものに相当し、各値は０．８７や２．３６のようなソフトな値で表現されている。
【００２８】
行演算手段１ｂは、予め設定された検査行列に基づいて、符号語単位で行演算を行う。すなわち、行演算手段１ｂは、列演算手段１ａで計算された最新の列演算後のメッセージ（ビットノードから検査ノードに伝搬されるメッセージ）に基づいて行演算を行い、得られたメッセージを保持する。行演算では、例えば、線形関数が用いられる。
【００２９】
ここで、行演算手段１ｂは、行演算に際して、復号装置１への入力前に入力信号δが受ける雑音の分散σ2に依存したパラメータを使用する。具体的には、行演算手段１ｂは、雑音の分散σ2とパラメータの値とを対応付けた変換テーブル１ｄを予め保持している。そして、行演算手段１ｂは、誤り訂正処理の開始前に雑音の分散σ2を取得し、変換テーブル１ｄを参照して、行演算に用いるパラメータの値を特定する。特定されたパラメータの値は、例えば、行演算で用いる線形関数における係数として使用される。
【００３０】
なお、雑音の分散σ2は、入力信号δが経由する伝送媒体や記録媒体に応じた固定的な値であってもよいし、入力信号δに基づいて随時測定される値であってもよい。また、行演算手段１ｂは、パラメータの値を特定する際に、変換テーブル１ｄのようなテーブルを用いるのではなく、所定の関数を用いて計算するようにしてもよい。
【００３１】
硬判定手段１ｃは、列演算手段１ａで計算される誤り訂正処理後のメッセージを取得して、ソフトな値を０または１のハードな値に変換する。例えば、硬判定手段１ｃは、正数を０と判定し、非正数（負数および０）を１と判定する。そして、硬判定手段１ｃは、変換後の２値化データを、入力信号δに対応する復号信号εとして出力する。
【００３２】
このように、列演算手段１ａによる列演算と行演算手段１ｂによる行演算とが繰り返し実行され、ビットノードと検査ノードとの間でメッセージが反復伝搬されることにより、雑音の影響により生じた入力信号δ内の誤りが訂正される。列演算および行演算は、処理結果が誤り検出に合格するまで（誤りが完全に除去されるまで）繰り返してもよいし、所定の回数繰り返した時点で打ち切るようにしてもよい。
【００３３】
このような復号装置１によれば、列演算手段１ａにより、入力信号δと行演算手段１ｂで計算される最新のメッセージとに基づいて列演算後のメッセージが計算される。また、行演算手段１ｂにより、入力信号δが受けた雑音の分散σ2と変換テーブル１ｄとに基づいてパラメータの値が特定され、パラメータの値と列演算手段１ａで計算される最新のメッセージとに基づいて行演算後のメッセージが計算される。そして、硬判定手段１ｃにより、列演算手段１ａで計算される誤り訂正後のメッセージが２値化されて、復号信号εとして出力される。
【００３４】
これにより、誤り訂正能力の低下を防止しつつ、入力信号δに含まれる各符号ビットを雑音の分散に応じた値に変換する事前処理を省略することができる。従って、復号の際の計算負荷または記憶領域を大きく削減することが可能となる。
【００３５】
このような機能を有する復号装置は、無線通信を行う受信装置に組み込むことが可能である。すなわち、低密度パリティ検査符号を含む無線信号を受信した際に、上記のような復号方法によって復号を行うことが考えられる。以下、無線通信の受信装置を例に挙げて、本発明の実施の形態を具体的に説明する。
【００３６】
図２は、本実施の形態に係る受信装置の機能を示すブロック図である。本実施の形態に係る受信装置１０は、低密度パリティ検査符号への符号化がなされた無線信号を受信する装置である。受信装置１０は、受信アンテナ１１、復調部１２、列演算部１３、行演算部１４、硬判定部１５および誤り検出部１６を有する。
【００３７】
受信アンテナ１１は、図示しない送信装置によって無線送信された信号を受信する。そして、受信アンテナ１１は、受信信号を復調部１２に出力する。
復調部１２は、受信アンテナ１１から取得した受信信号を所定の復調方法に従って復調する。そして、復調部１２は、所定個の符号ビットからなる符号語単位で、復調した信号を入力信号δとして列演算部１３に出力する。このとき、各符号ビットはソフトな値で表現されている。また、復調部１２は、符号語単位で、受信信号が受けた雑音の分散σ2を測定し、行演算部１４に通知する。雑音の分散σ2は、例えば、既知信号（パイロット信号）に基づいて測定することができる。
【００３８】
列演算部１３は、復調部１２から１符号語に相当する入力信号δを取得して保持する。そして、列演算部１３は、予め設定された検査行列に基づいて列演算を行う。すなわち、列演算部１３は、入力信号δと行演算部１４から取得する最新のメッセージβとに基づいて、メッセージαを計算して保持する。具体的には、メッセージαは数式（６）に従って計算される。数式（６）は、数式（２）の対数尤度比λを入力信号δに置き換えたものに相当する。なお、メッセージβの各値の初期値は０である。
【００３９】
【数６】
0004845846.tif 000007
【００４０】
また、列演算部１３は、入力信号δと最新のメッセージβとに基づいてメッセージζを計算し、硬判定部１５に対して出力する。具体的には、メッセージζは数式（７）に従って計算される。数式（７）は、数式（４）の対数尤度比λを入力信号δに置き換えたものに相当する。列演算部１３は、入力信号δを取得した直後にメッセージζを計算し、その後、列演算部１３による列演算と行演算部１４による行演算とが１回ずつ行われる毎にメッセージζを再計算する。なお、メッセージβの各値の初期値は０であるため、最初に得られるメッセージζは入力信号δに等しい。
【００４１】
【数７】
0004845846.tif 000008
【００４２】
行演算部１４は、雑音の分散σ2とパラメータの値とを対応付けた変換テーブルを保持している。行演算部１４は、新たな符号語に対する誤り訂正処理を開始する際に、復調部１２から雑音の分散σ2を取得し、変換テーブルを参照して行演算で用いるパラメータの値を特定する。ここで特定したパラメータの値は、その符号語に対する誤り訂正処理が終了するまで使用される。
【００４３】
そして、行演算部１４は、予め設定された検査行列に基づいて行演算を行う。すなわち、行演算部１４は、列演算部１３から取得する最新のメッセージαと特定したパラメータの値とに基づいて、メッセージβを計算して保持する。具体的には、メッセージβは数式（８）に従って計算される。数式（８）は双曲線関数を含む数式（３）を線形関数を用いて近似した式である。
【００４４】
数式（８）において、ｓｉｇｎ関数は引数の数値の符号を返す関数である。ｍｉｎ関数は２つの引数のうち小さい方の値を返す関数である。ｍａｘ関数は２つの引数のうち大きい方の値を返す関数である。数式（８）で定義される演算子＋（ここでは、「丸付き＋」に代えて「＋」と表記する）は２項演算子であり、αmkが３つ以上存在する場合は、αm1＋αm2＋αm3＋…＝（（αm1＋αm2）＋αm3）＋…のように演算を行う。
【００４５】
また、数式（８）にはＫ0と（σ2／２）Ｋ1の２つの係数が存在する。Ｋ0，Ｋ1は予め設定される固定値であり、例えばＫ0＝−０．５，Ｋ1＝０．９である。係数（σ2／２）Ｋ1は雑音の分散σ2に依存しており、変換テーブルに基づいて特定されたパラメータの値が適用される。
【００４６】
【数８】
0004845846.tif 000009
【００４７】
硬判定部１５は、列演算部１３から取得する最新のメッセージζに対して２値化処理を行う。すなわち、硬判定部１５は、メッセージζの各値を０または１に変換する。具体的には、０より大きい値を０に変換し、０および０より小さい値を１に変換する。そして、硬判定部１５は、２値化データを誤り検出部１６に出力する。
【００４８】
誤り検出部１６は、誤り訂正処理の中間結果としての２値化データを硬判定部１５から取得する。すると、誤り検出部１６は、予め定義された検査行列に基づいて誤り検出処理を行う。具体的には、誤り検出部１６は、１符号語に相当する２値化データと検査行列との行列積を計算し、計算結果が０であれば誤りなしと判定し、計算結果が０以外であれば誤りありと判定する。
【００４９】
そして、誤り検出部１６は、誤り訂正処理の継続が必要か否か判断する。具体的には、誤りなしと判定された場合、または、列演算および行演算の繰り返し回数が所定回数を超えた場合は、処理の継続は不要と判断する。一方、誤りありと判定され、かつ、繰り返し回数が所定回数以内である場合は、処理の継続が必要と判断する。処理の継続が必要な場合、誤り検出部１６は、列演算部１３に対して処理の継続を指示する。処理の継続が不要な場合、誤り検出部１６は、硬判定部１５から取得した２値化データを、入力信号δに対応する復号信号εとして出力する。
【００５０】
図３は、変換テーブルのデータ構造を示す図である。変換テーブル１４ａは、行演算部１４によって保持されている。変換テーブル１４ａには、雑音の分散σ2を示す項目とパラメータ（σ2／２）Ｋ1の値を示す項目とが設けられている。各項目の横方向に並べられた情報同士が対応付けられている。
【００５１】
雑音の分散を示す項目には、無線信号が伝送路で受ける雑音の分散を示す数値が設定される。パラメータの値を示す項目には、行演算で用いる数式に適用するパラメータの値を示す数値が設定される。図３はＫ1＝０．９としたときの数値例を示している。例えば、雑音の分散σ2が０．２のときパラメータの値が０．０９、雑音の分散σ2が０．４のときパラメータの値が０．１８という情報が変換テーブル１４ａに予め登録されている。
【００５２】
なお、変換テーブル１４ａではパラメータの値を示す項目が１つ設けられているが、これは雑音の分散に依存する係数が数式（８）中に１つ存在するためである。行演算で用いる数式中に雑音の分散に依存する係数が複数存在する場合には、その数だけパラメータの値を示す項目が設けられる。
【００５３】
図４は、復号処理の手順を示すフローチャートである。以下、図４に示す処理をステップ番号に沿って説明する。
［ステップＳ１］復調部１２は、受信信号から雑音の分散σ2を測定する。そして、復調部１２は、測定した雑音の分散σ2を行演算部１４に通知する。行演算部１４は、取得した雑音の分散σ2を用いて変換テーブル１４ａを検索し、（σ2／２）Ｋ1の値を特定する。また、復調部１２は、受信信号を復号して得られる入力信号δを列演算部１３に出力する。
【００５４】
［ステップＳ２］列演算部１３は、現時点での誤り訂正処理の結果を出力する。すなわち、列演算部１３は、ステップＳ１で取得した入力信号δとステップＳ７で行演算部１４によって計算されるメッセージβとに基づいて、数式（７）に従ってメッセージζを計算する。そして、列演算部１３は、メッセージζを硬判定部１５に出力する。なお、最初にステップＳ２を実行する際には、入力信号δ＝メッセージζとなる。
【００５５】
［ステップＳ３］硬判定部１５は、ステップＳ２で取得したメッセージζに対して２値化処理を行う。すなわち、硬判定部１５は、メッセージζを構成するソフトな値それぞれを０または１のハードな値に変換する。そして、硬判定部１５は、変換結果を誤り検出部１６に出力する。
【００５６】
［ステップＳ４］誤り検出部１６は、ステップＳ３で取得した２値化データと検査行列とに基づいて誤り検出処理を行う。すなわち、誤り検出部１６は、取得した２値化データにビット誤りが含まれているか否か判定する。
【００５７】
［ステップＳ５］誤り検出部１６は、ステップＳ４の判定結果とステップＳ６，Ｓ７の繰り返し回数とに基づいて、再計算が必要か否か判断する。具体的には、誤り検出部１６は、ステップＳ４でビット誤りが含まれていると判定し、かつ、繰り返し回数が所定回数を超えていないときは、再計算が必要と判断する。それ以外のときは、再計算が必要でないと判断する。再計算が必要である場合には、処理がステップＳ６に進められる。再計算が必要でない場合には、処理がステップＳ８に進められる。
【００５８】
［ステップＳ６］誤り検出部１６は、列演算部１３に再計算が必要である旨を通知する。列演算部１３は、列演算を行う。すなわち、列演算部１３は、ステップＳ１で取得した入力信号δとステップＳ７で行演算部１４によって計算されたメッセージβとに基づいて、数式（６）に従ってメッセージαを計算する。そして、列演算部１３は、メッセージαを行演算部１４に出力する。なお、ステップＳ７が未実行である場合には、メッセージβの各値を０として計算する。
【００５９】
［ステップＳ７］行演算部１４は、行演算を行う。すなわち、行演算部１４は、ステップＳ１で特定した（σ2／２）Ｋ1の値とステップＳ６で取得したメッセージαとに基づいて、数式（８）に従ってメッセージβを計算する。そして、行演算部１４は、メッセージβを列演算部１３に出力する。その後、処理がステップＳ２に進められる。
【００６０】
［ステップＳ８］誤り検出部１６は、ステップＳ３で取得した２値化データを、入力信号δに対応する復号信号εとして出力する。これにより、その符号語に対する誤り訂正処理が終了する。
【００６１】
このようにして、１符号語に相当する信号が受信されると、受信信号に与えられた雑音の分散σ2が測定され、雑音の分散σ2に依存する係数の値が特定される。そして、入力信号δを用いて列演算が行われると共に、特定された係数の値を用いて行演算が行われる。この列演算および行演算は、全てのビット誤りが訂正されるかまたは所定の繰り返し回数を超えるまで繰り返し実行される。
【００６２】
なお、図４に示した復号処理において、ステップＳ２〜Ｓ５とステップＳ６，Ｓ７とを並行して実行するようにしてもよい。すなわち、誤り検出処理の結果を待たずに、次回分の列演算および行演算を先行して実行してもよい。
【００６３】
ここで、図２〜４に示した受信装置１０の復号方法では、図１０に示した復号装置２の復号方法と異なり、入力信号δの各符号ビットを対数尤度比に変換する事前処理を行わない。その一方で、受信装置１０の復号方法では、誤り訂正能力の低下が防止されている。以下、受信装置１０の復号方法が復号装置２の復号方法と等価であることを証明する。
【００６４】
図５は、復号処理の等価性を示す第１の図である。受信装置１０では、列演算部１３により入力信号δからメッセージαとメッセージζとが計算される（列演算２１）。また、行演算部１４によりメッセージαからメッセージβが計算される（行演算２２）。また、硬判定部１５によりメッセージζから復号信号εが計算される（硬判定２３）。
【００６５】
ここで、入力信号δの入力、列演算２１、行演算２２および硬判定２３の相互の間に、２／σ2を掛ける乗算とσ2／２を掛ける乗算とを挿入すると、図５に示すような処理の流れとなる。
【００６６】
すなわち、入力信号δに２／σ2を掛けて（乗算２４ａ）対数尤度比λを得て、更にσ2／２を掛けて（乗算２４ｂ）入力信号δに戻す。列演算２１により得られるメッセージαに２／σ2を掛けて（乗算２５ａ）メッセージｘを得て、更にσ2／２を掛けて（乗算２５ｂ）メッセージαに戻す。行演算２２により得られるメッセージβに２／σ2を掛けて（乗算２６ａ）メッセージｙを得て、更にσ2／２を掛けて（乗算２６ｂ）メッセージβに戻す。列演算２１によって得られるメッセージζに２／σ2を掛けて（乗算２７ａ）メッセージｗを得て、更にσ2／２を掛けて（乗算２７ｂ）メッセージζに戻す。
【００６７】
このとき、（２／σ2）×（σ2／２）＝１であるため、乗算２４ａ，２４ｂ，２５ａ，２５ｂ，２６ａ，２６ｂ，２７ａ，２７ｂの挿入前後で処理全体の意味は変化しない。なお、２／σ2およびσ2／２を掛けるとしたのは、伝送路で生じる雑音の分布がＡＷＧＮモデルに従うと仮定したことによる。他の雑音モデルを仮定する場合、その雑音モデルに応じた演算を挿入すればよい。
【００６８】
ところで、（２／σ2）×（σ2／２）＝１より、列演算２１で用いる数式（６）を変形して数式（９）が得られる。そして、前述の定義ｘmn＝（２／σ2）×αmn，ｙmn＝（２／σ2）×βmn，λn＝（２／σ2）×δnと数式（９）とから、数式（１０）が得られる。同様に、（２／σ2）×（σ2／２）＝１より、列演算２１で用いる数式（７）を変形すると数式（１１）が得られる。そして、前述の定義ｙmn＝（２／σ2）×βmn，λn＝（２／σ2）×δn，ｗn＝（２／σ2）×ζnと数式（１１）とから、数式（１２）が得られる。
【００６９】
【数９】
0004845846.tif 000010
【００７０】
【数１０】
0004845846.tif 000011
【００７１】
【数１１】
0004845846.tif 000012
【００７２】
【数１２】
0004845846.tif 000013
【００７３】
数式（１０）（１２）は数式（２）（４）と等価である。以上より、図５に示した列演算２１および乗算２４ｂ，２５ａ，２６ｂ，２７ａが図１０に示した復号装置２における列演算と等価であることがわかる。すなわち、列演算２１および乗算２４ｂ，２５ａ，２６ｂ，２７ａを合わせて１つの列演算とみなすことができる。そして、受信装置１０における列演算と復号装置２における列演算とでは、計算アルゴリズムは同一であり、入力が入力信号δであるか対数尤度比λであるかの差異しかないことがわかる。
【００７４】
また、（２／σ2）×（σ2／２）＝１であること、および、２／σ2＞０よりｓｉｇｎ（αmn）＝ｓｉｇｎ（（２／σ2）×αmn）が成立することから、行演算２２で用いる数式（８）を変形して数式（１３）が得られる。ここで、メッセージｘを入力として行演算を行う際に用いる式を数式（１４）のように定義する。この数式（１４）とメッセージαを入力として行演算を行う際に用いる数式（８）とは、第２の係数が（σ2／２）×Ｋ1であるかＫ1であるかの点のみが異なる。すると、前述の定義ｘmn＝（２／σ2）×αmnと数式（１３）（１４）とから、数式（１５）が得られる。更に、前述の定義ｙmn＝（２／σ2）×βmnと数式（８）（１５）とから、数式（１６）が得られる。
【００７５】
数式（１６）は、図１０に示した復号装置２における行演算で用いるべき線形関数と等価である。以上より、図５に示した行演算２２および乗算２５ｂ，２６ａが図１０に示した復号装置２における行演算と等価であることがわかる。すなわち、行演算２２および乗算２５ｂ，２６ａを合わせて１つの行演算とみなすことができる。そして、受信装置１０における行演算と復号装置２における行演算とでは、線形関数中の係数が雑音の分散σ2に依存するか否かの差異しかないことがわかる。復号装置２における行演算では、線形関数中の係数は全て固定値である。一方、受信装置１０における行演算では、線形関数中の少なくとも一部の係数が雑音の分散σ2に依存する。
【００７６】
【数１３】
0004845846.tif 000014
【００７７】
【数１４】
0004845846.tif 000015
【００７８】
【数１５】
0004845846.tif 000016
【００７９】
【数１６】
0004845846.tif 000017
【００８０】
図６は、復号処理の等価性を示す第２の図である。以上検討した通り、図６に示す復号処理の流れは、図５に示した復号処理の流れと等価である。行演算２９は、行演算２２で用いる線形関数中の係数を雑音の分散σ2に依存しない係数に変更したものに相当する。ここで、図６に示す復号処理では、列演算２１と硬判定２３との間で乗算２７ｂを実行している。しかし、σ2／２＞０であり、硬判定２３は各値の正負に基づいて２値化処理を行うことから、乗算２７ｂの有無は硬判定２３の処理結果に影響を与えない。
【００８１】
以上より、受信装置１０の復号方法が復号装置２の復号方法と等価であること、すなわち、同一の入力信号δに対して、受信装置１０の復号方法で復号したときの復号信号と復号装置２の復号方法で復号したときの復号信号とが同一になることが証明された。
【００８２】
その一方で、受信装置１０の行演算部１４が保持する変換テーブルと復号装置２のＬＬＲ変換手段２ａが保持する変換テーブルとは、そのサイズが大きく異なる。受信装置１０の行演算部１４が保持する変換テーブルは、雑音の分散σ2から行演算で用いるパラメータの値を特定する１次元のテーブルであるのに対し、復号装置２のＬＬＲ変換手段２ａが保持する変換テーブルは、入力信号δと雑音の分散σ2とから対数尤度比λを特定する２次元のテーブルである。
【００８３】
図７は、対数尤度比への変換に用いるテーブルのデータ構造を示す図である。図７に示す変換テーブル１４ｂは、図１０に示した復号方法において入力信号δを対数尤度比λに変換するために必要となるテーブル例である。変換テーブル１４ｂを用いることで、雑音の分散σ2と入力信号δの各値とから、対数尤度比の値を一意に特定することができる。
【００８４】
例えば、雑音の分散σ2が０．６で変換前の入力値が０．２であるとき、変換後の値（対数尤度比）が０．６７と特定される。このようにして特定された値に基づいて列演算が行われる。図７から明らかなように、テーブルを参照して入力信号δを対数尤度比λに変換するためには、サイズの大きなテーブルが必要になる。
【００８５】
次に、受信装置１０で実行される復号処理の具体例を、復号装置２を用いた場合と比較しつつ説明する。ここでは、１符号語の符号長が６であり数式（１）に示す３行６列の検査行列Ｈを用いて復号可能な低密度パリティ符号を想定する。また、行演算で用いる固定値をＫ0＝−０．５，Ｋ1＝０．９とし、雑音の分散をσ2＝０．５とする。この条件下で、数式（１７）に示す入力信号δが入力されたとする。
【００８６】
【数１７】
0004845846.tif 000018
【００８７】
このとき、受信装置１０の列演算部１３により、数式（６）に従って数式（１８）に示すメッセージαが生成される。次に、行演算部１４により、数式（８）に従って数式（１９）に示すメッセージβが生成される。その後、列演算部１３により、数式（７）に従って数式（２０）に示すメッセージζが生成される。ここで、メッセージζを硬判定すると（０，０，０，０，０，０）という２値化データが得られる。なお、その後に再度列演算を行う場合、列演算部１３により数式（２１）に示すメッセージαが生成される。
【００８８】
【数１８】
0004845846.tif 000019
【００８９】
【数１９】
0004845846.tif 000020
【００９０】
【数２０】
0004845846.tif 000021
【００９１】
【数２１】
0004845846.tif 000022
【００９２】
一方、上記と同一条件で、復号装置２の復号方法を採用した場合を考える。このとき、数式（５）または変換テーブル１４ｂに従って数式（２２）に示す対数尤度比λが生成される。次に、数式（１０）に従って数式（２３）に示すメッセージｘが生成される。そして、数式（１６）に従って数式（２４）に示すメッセージｙが生成される。その後、数式（１２）に従って数式（２５）に示すメッセージｗが生成される。ここで、メッセージｗを硬判定すると（０，０，０，０，０，０）という２値化データが得られる。なお、その後に再度列演算を行うと、数式（２６）に示すメッセージｘが生成される。
【００９３】
【数２２】
0004845846.tif 000023
【００９４】
【数２３】
0004845846.tif 000024
【００９５】
【数２４】
0004845846.tif 000025
【００９６】
【数２５】
0004845846.tif 000026
【００９７】
【数２６】
0004845846.tif 000027
【００９８】
ここで、数式（１８）〜（２１）と数式（２３）〜（２６）とを比較すると、受信装置１０の復号方法で得られる各値は復号装置２の復号方法で得られる各値の１／４であることがわかる。しかし、硬判定では値の正負に基づいて０または１を判定するため、数式（１８）〜（２１）で示される復号結果と数式（２３）〜（２６）で示される復号結果とは等価である。
【００９９】
なお、上記の処理機能はコンピュータによって実現することもできる。その場合、受信装置１０が有すべき機能の処理内容を記述した復号プログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータで実現される。
【０１００】
図８は、コンピュータのハードウェア構成を示す図である。コンピュータ３０は、ＣＰＵ（Central Processing Unit）３１によって装置全体が制御されている。ＣＰＵ３１には、バス３７を介してＲＡＭ（Random Access Memory）３２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）３３、グラフィック処理装置３４、入力インタフェース３５および通信インタフェース３６が接続されている。
【０１０１】
ＲＡＭ３２には、ＣＰＵ３１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ３２には、ＣＰＵ３１による処理に必要な各種データの少なくとも一部が一時的に格納される。ＨＤＤ３３には、ＯＳプログラムやアプリケーションプログラムが格納される。また、ＨＤＤ３３には、ＣＰＵ３１による処理に必要な各種データが格納される。例えば、ＲＡＭ３２やＨＤＤ３３には、受信信号、入力信号δ、雑音の分散σ2、メッセージα，β，ζ、復号信号εや変換テーブル１４ａが格納される。
【０１０２】
グラフィック処理装置３４には、モニタ４１が接続されている。グラフィック処理装置３４は、ＣＰＵ３１からの命令に従って、画像をモニタ４１の画面に表示させる。入力インタフェース３５には、キーボード４２とマウス４３とが接続されている。入力インタフェース３５は、キーボード４２やマウス４３から送られてくる信号をバス３７を介してＣＰＵ３１に送信する。通信インタフェース３６は、ネットワーク４４に接続されている。通信インタフェース３６は、ネットワーク４４を介して、他のコンピュータとの間でデータの送受信を行う。
【０１０３】
処理内容を記述したプログラムは、コンピュータ３０で読み取り可能な記録媒体に記録しておくことができる。コンピュータ３０で読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１０４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワーク４４を介して、サーバコンピュータからコンピュータ３０にそのプログラムを転送することもできる。
【０１０５】
プログラムを実行するコンピュータ３０は、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータ３０は、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータ３０は、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータ３０は、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１０６】
このような受信装置１０を用いることで、入力信号δを対数尤度比λに変換する事前処理を省略することができる。このとき、１符号語に対して１回、雑音の分散σ2に依存するパラメータの値を更新することで、誤り訂正能力の低下を確実に防止できる。従って、変換テーブルを用いる場合には復号処理に要する記憶領域を抑制でき、変換テーブルに代えて関数を用いる場合でも復号処理に要する計算負荷を抑制できる。
【０１０７】
なお、上記では無線信号を受信する受信装置の例を挙げたが、本実施の形態で示した復号方法を他の種類の装置に応用することもできる。例えば、光ディスクなどの記録媒体から信号を読み取る読み取り装置に応用することも容易である。また、上記では雑音の分散がＡＷＧＮモデルに従うと仮定した場合の演算例を示したが、他の雑音モデルを仮定してその雑音モデルに応じた演算を行うようにしてもよい。また、行演算に用いる上記の線形関数に代えて、他の関数を採用してもよい。その場合、採用する関数に応じて、雑音の分散に依存するパラメータの値の特定方法が定義される。
【０１０８】
以上、本発明の復号装置および復号プログラムを図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。また、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【図面の簡単な説明】
【０１０９】
【図１】本実施の形態の概要を示す図である。
【図２】本実施の形態に係る受信装置の機能を示すブロック図である。
【図３】変換テーブルのデータ構造を示す図である。
【図４】復号処理の手順を示すフローチャートである。
【図５】復号処理の等価性を示す第１の図である。
【図６】復号処理の等価性を示す第２の図である。
【図７】対数尤度比への変換に用いるテーブルのデータ構造を示す図である。
【図８】コンピュータのハードウェア構成を示す図である。
【図９】低密度パリティ検査符号の復号原理を示す図である。
【図１０】低密度パリティ検査符号の復号装置例を示す図である。
【符号の説明】
【０１１０】
１  復号装置
１ａ  列演算手段
１ｂ  行演算手段
１ｃ  硬判定手段
１ｄ  変換テーブル
【図１】
0004845846.tif 000032
【図２】
0004845846.tif 000033
【図３】
0004845846.tif 000034
【図４】
0004845846.tif 000035
【図５】
0004845846.tif 000036
【図６】
0004845846.tif 000037
【図７】
0004845846.tif 000038
【図８】
0004845846.tif 000039
【図９】
0004845846.tif 000040
【図１０】
0004845846.tif 000041