(57)【要約】本発明は、伝送及び記録システムにおいて、低密度パリティ検査符号を復号化するための復号化方法に関する。本方法はランニングミニマムループを有し、該ランニングミニマムループは、以下の反復するサブステップ：入力信頼度値の入力シーケンスから信頼度値を読み取るサブステップと、前記信頼度値を保存された値と比較するサブステップと、前記信頼度値が前記保存された値よりも小さい場合に、前記保存された値を前記信頼度値で上書きするサブステップとを有する。
2006508577.tif 000002
【特許請求の範囲】
【請求項１】
低密度パリティ検査符号を用いて符号化された符号語記号から軟判定出力を出力するための復号化方法であって、前記符号は、幾つかのパリティ検査方程式によって検査される幾つかの符号語記号を有し、各前記パリティ検査方程式は、限られた数の前記符号語記号を検査し、各前記符号語記号は、限られた数の前記パリティ検査方程式によって検査され、前記方法は、同一の前記パリティ検査方程式によって検査される前記符号語記号のセットに関連する入力信頼度値の入力シーケンスから最小値を決定するランニングミニマムステップを有し、前記ランニングミニマムステップは、以下の反復するサブステップ：
前記入力信頼度値の入力シーケンスから信頼度値を読み取るサブステップと、
前記信頼度値を保存された値と比較するサブステップと、
前記信頼度値が前記保存された値よりも小さい場合には、前記保存された値を前記信頼度値で上書きするサブステップと、
を有する復号化方法。
【請求項２】
低密度パリティ検査符号を用いて符号化された符号語記号から軟判定出力を出力するための復号化方法であって、前記符号は、幾つかのパリティ検査方程式によって検査される幾つかの符号語記号を有し、各前記パリティ検査方程式は、限られた数の前記符号語記号を検査し、各前記符号語記号は、限られた数の前記パリティ検査方程式によって検査され、前記方法は、同一の前記パリティ検査方程式によって検査される前記符号語記号のセットに関連する入力信頼度値の入力シーケンスから最小値を決定するランニングミニマムステップを有し、前記ランニングミニマムステップは、以下の反復するサブステップ：
前記入力信頼度値の入力シーケンスから信頼度値を読み取るサブステップと、
前記信頼度値を、第１及び第２の保存された値と比較するサブステップと、
前記信頼度値が前記第１及び第２の保存された値よりも小さい場合には、前記第１の保存された値を前記信頼度値で上書きするサブステップと、
前記信頼度値が前記第２の保存された値よりも小さく且つ前記第１の保存された値よりも大きい場合には、前記第２の保存された値を前記信頼度値で上書きするサブステップと、
を有する復号化方法。
【請求項３】
前記最小値を決定するステップは、少なくとも１つの基準値を保存する予備ステップを含む、請求項１に記載の復号化方法。
【請求項４】
前記入力信頼度値の入力シーケンスは、伝送チャネル又は記録チャネルから受信された前記符号語記号から生成される、請求項１に記載の復号化方法。
【請求項５】
前記入力信頼度値は、前記チャネルから受信される符号語記号の対数尤度比の絶対値から導出される、請求項４に記載の復号化方法。
【請求項６】
各前記パリティ検査方程式について、前記入力信頼度の入力シーケンスから出力信頼度の出力シーケンスを計算するステップを有し、前記出力シーケンスの各前記出力信頼度は、前記入力シーケンスにおける同一のインデクスを持つ１つを除く全ての入力信頼度の最小値に等しく、前記最小値は前記ランニングミニマムステップを用いて決定される、請求項１に記載の復号化方法。
【請求項７】
低密度パリティ検査符号を用いて符号化された符号語記号をチャネル媒体から受信する受信器であって、請求項１乃至６のいずれか一項に記載の方法を実行するための復号化器を有する受信器。
【請求項８】
記録システムにおける使用のための、請求項７に記載の受信器。
【請求項９】
請求項１乃至６のいずれか一項に記載の方法により処理されるべき符号語記号を保存する記憶媒体。
【請求項１０】
低密度パリティ検査符号を用いて符号化された符号語記号をチャネル媒体によって配信するための供給源と、前記チャネル媒体から前記符号語記号を受信するための受信器とを有するシステムであって、前記受信器は請求項７に記載のものであるシステム。
【請求項１１】
命令のセットを計算する受信器のためのコンピュータプログラムであって、前記命令は、前記受信器にロードされたときに、請求項１乃至６のいずれか一項に記載の方法を前記受信器に実行させるコンピュータプログラム。
【請求項１２】
コンピュータプログラムを担持するための信号であって、前記コンピュータプログラムは、請求項１乃至６のいずれか一項に記載の方法を実行するように構成される信号。
【請求項１３】
請求項１１に記載のコンピュータプログラムをダウンロードすることを可能とすること。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、低密度パリティ検査（Low-Density Parity Check、ＬＤＰＣ）符号を用いて符号化された符号語記号（codeword symbol）から軟判定出力を出力する復号化方法に関する。
【０００２】
本発明は、磁気記録、光記録、テレコミュニケーション（例えばモバイル及び光ネットワーク）、家庭内無線ネットワーク及び時空間符号化を含むシステム等のような、ディジタル伝送及び記録システムに適用される。本発明は、次世代の光記憶のための強力な技術の１つである、２次元光記憶に特に有利である。
【背景技術】
【０００３】
Marc P. C. Fossorier による論文「Reduced Complexity Iterative Decoding of Low-Density Parity Check Codes Based on Belief Propagation」（「IEEE Transactions on Communications」Vol.47、No.5、1999年5月［１］）は、ＬＤＰＣ符号を復号化するための反復アルゴリズムを記載している。ＬＤＰＣ符号はエラー訂正符号であり、該符号の復号化器は軟判定入力を受け入れる。ＬＤＰＣ復号化は、ビタビ（Viterbi）型のアルゴリズムを必要とせず、複雑でない。ＬＤＰＣ符号は、Gallagerによって1960年代に発明された。その後1990年代に、Berrouらがターボ（Turbo）符号を発明した。次いでMacKay他が、ターボ符号がＬＤＰＣ符号に類似していることを発見した。
【０００４】
その後、ＬＤＰＣという略語が、ターボ符号を含む低密度パリティ検査マトリクスを用いる全ての符号を示すために用いられることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、復号化器においてかなりの量のメモリスペースを節約することを可能とするＬＤＰＣ符号のための復号化方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明によれば、最初のパラグラフにおいて記載したようなＬＤＰＣ符号のための復号化方法が提供される。前記ＬＤＰＣ符号は、幾つかのパリティ検査方程式によって検査される幾つかの符号語記号によって定義される。各パリティ検査方程式は、限られた数の符号語記号を検査するように定められ、各符号語記号は、限られた数のパリティ検査方程式によって検査されるように定められる。本発明によれば、前記方法は、同一のパリティ検査方程式によって検査された符号語記号のセットに関連する入力信頼度値（reliability value）の入力シーケンスから最小値を決定するステップを有し、該ステップはランニングミニマム（running minimum）ループを意味する。前記ランニングミニマムループは、以下の反復するサブステップ：
−入力信頼度値の入力シーケンスから信頼度値を読み取るサブステップと、
−前記信頼度値を保存された値と比較するサブステップと、
−前記信頼度値が前記保存された値よりも小さい場合には、前記保存された値を前記信頼度値で上書きするサブステップと、
を有する。
【０００７】
複数の入力信頼度値の入力シーケンスから最小値を決定するために、かようなランニングミニマムステップを利用することは、全ての比較の結果を保存することを回避する。このことは実際には、単一のチップにおいては、全ての比較結果を保存するよりも適している。
【０００８】
本発明の特定の実施例によれば、各前記パリティ検査方程式について、前記入力信頼度の入力シーケンスから出力信頼度の出力シーケンスを計算するステップを有し、前記出力シーケンスの各前記出力信頼度は、前記入力シーケンスにおける同一のインデクスを持つ１つを除く全ての入力信頼度の最小値に等しく、前記最小値は前記ランニングミニマムステップを用いて決定される。この場合においては、全体の最小値のインデクスを持つものを除く、出力シーケンス中の全ての結果が、前記全体の最小値に等しい。ここで前記全体の最小値のインデクスを持つ前記結果は、２番目に小さい値に等しい。結果として、３つの値のみが保存される必要がある。即ち、前記全体の最小値と、前記全体の２番目に小さい値と、前記入力シーケンスにおける全体の最小値のインデクスである。
【０００９】
本発明の好適な実施例によれば、入力信頼度値の入力シーケンスは、伝送チャネル又は記録チャネルから受信された前記符号語記号から生成される。前記入力信頼度値は、前記符号語記号の対数尤度比（ＬＬＲ）の絶対値から導出される。一般に、バイナリのランダム的な値ＸのＬＬＲは、以下のように定義される：
ＬＬＲＸ＝ｌｏｇ（Ｐｒ｛Ｘ＝０｝／Ｐｒ｛Ｘ＝１｝）
ここでＰｒ｛Ｘ＝０｝は、Ｘ＝０である確率である。確率の対数尤度比表現を用いることは、復号化アルゴリズムが、前記チャネルを介して受信された入力対数尤度において線形に振舞うことを可能とする。このことは、復号化結果を、信号対ノイズ比の知識におけるエラーによる劣化を被りにくくする。
【００１０】
本発明はまた、
低密度パリティ検査符号を用いて符号化された符号語記号をチャネル媒体から受信する受信器、
かような受信器における使用のための光記憶媒体、
低密度パリティ検査符号を用いて符号化された符号語記号をチャネル媒体によって配信する供給源と、前記チャネル媒体から前記符号語記号を受信する受信器とを有するシステム、
前記復号化方法を実行するためのコンピュータプログラム、
前記コンピュータプログラムを担持するための信号、及び
前記コンピュータプログラムをダウンロードすることを可能とすること、
に関する。
【００１１】
本発明及び本発明を実施するために任意に利用され得る付加的な特徴は、以下に説明される図を参照しながら説明され明らかとなるであろう。
【発明を実施するための最良の形態】
【００１２】
以下の注記は参照記号に関する。全ての図において、同一のブロックのラベルは、通常同一の機能エンティティを示す。
【００１３】
本発明の核心を説明する前に、本発明が適用されるＬＤＰＣ符号の定義が以下に与えられる。ＬＤＰＣ符号は、例えばディジタル伝送及び記録システムにおける利用のための、疎行列エラー訂正符号である。ＬＤＰＣは、復号化器が供給源から配信された元の情報を受信することを可能とすることにおいて、非常に効率的であることが分かっている。エラー訂正符号のパリティ検査行列Ｈは、ｃが符号語である場合には、その場合に限り、Ｈｃ＝０となるようなバイナリ行列である。即ち、前記符号の空間は行列Ｈの零空間である。パリティ検査行列の「低密度」特性は、これらの符号のブロック長（即ち符号語長）が無限大に向かっても、行Ｋ当たりの１の数及び列Ｊ≧３当たりの１の数が有限のままであるという事実を意味する。ＬＤＰＣ符号のレートはＲ＝１−Ｊ／Ｋに等しい。
【００１４】
R. G. Gallagerによる「Low density parity check codes」（「IRE Transaction on Information Theory IT-8」、21-28頁、1962年［２］）に記載されたGallagerの構成方法は、列当たり正確にＪ個の１を持ち、行当たり正確にＫ個の１を持つ、パリティ検査行列Ｈを生成するために利用された。今日までに、より一般的なＬＤＰＣ符号の構成が知られている。これら一般化されたＬＤＰＣ符号においては、行当たり及び列当たりの１の数は、特定の確率分布によって変化し得る。本発明は、両方のタイプの符号に適用され、また同様の特性を持つターボ符号にも適用される。
【００１５】
これらの符号は、所謂メッセージパッシング（message-passing）アルゴリズムを利用して復号化される。ＬＤＰＣ復号化チップを作成する場合に、伝統的なサムプロダクト（sum-product）メッセージパッシングアルゴリズムの不利な点は、非常に多くの乗算を必要とする点である。この複雑さを回避するため、ターボ符号化の分野において良く知られた、「最小信頼度入力を用いたボックス関数（Box-function）の近似」と呼ばれる技法が適用されることができる。ボックス関数は、２つの要素の排他的ＯＲの信頼度を、両方の要素の信頼度の関数によって置換することに存する。その近似（符号を除く）は、所謂ボックス関数を、信頼度の絶対値の最小値と置換することに存する。本発明によれば同一の近似がメッセージパッシングアルゴリズムのために利用され、より広範囲に及ぶ良い結果を持つ。
【００１６】
図１は、本発明による所謂メッセージパッシングアルゴリズムを説明するための、パリティ検査行列のグラフィカルな表現である、２部ＬＤＰＣグラフである。当該２部グラフは、該グラフの両側に２種類のノードを有する。左側にある一方の種類のノードは、符号語記号ノードである。該符号語記号ノードは、入力符号語記号を表す。右側にある他方の種類のノードは、パリティ検査ノードである。該パリティ検査ノードは、パリティ検査方程式を表す。特定のパリティ検査方程式がＫ個の符号語記号をパリティ検査する場合、これらＫ個の符号語記号ノードは、本グラフにおいて関係するパリティ検査ノードとリンクされる。かくして、パリティ検査ノードの次数（接続された辺の数）はＫに等しい。パリティ検査行列Ｈの列における１の数はＪに等しいため、符号語記号ノードの次数はＪに等しい。
【００１７】
例えば、性能がシャノン（Shannon）容量限界に近づくようなＬＤＰＣ符号の長さは、例えば約10000ビットである。意図される光記憶の適用分野については、例えば0.90のレートのような高いレートの符号が必要とされる（例えば0.5のレートのような低いレートの符号についても本発明が有利であることは留意されたい）。このことは、(1-0.90)*10000=1000個のパリティ検査方程式があることを意味する。10000個の符号語記号は、本２部グラフの左側における多くのノードとして表されている。1000個のパリティ検査方程式は、本グラフの右側における多くのノードとして表されている。左側のノードと右側のノードとの間には、辺が配置されている。例えば左側のノードのそれぞれが３つの辺の終点である場合（Ｊ＝３）、右側のノードのそれぞれは３０個の辺の終点であり（Ｋ＝３０）、従って3×10,000＝30×1000個の辺がある。このことは、ノードがパリティ検査ノードに接続されている３０個の符号語記号の合計はゼロになる必要がある（モジュロ２）、即ち所定のパリティを持つ必要があることを意味する。各符号語記号は、３個の検査方程式に組み込まれる。より正確に言えば、符号語長（本例においては約10000）は、Gallager符号については、Ｋの倍数であるべきである。
【００１８】
かような２部グラフにおける復号化は、メッセージパッシングアルゴリズムを利用して為される。元となるＬＤＰＣメッセージパッシングアルゴリズムは、サムプロダクトアルゴリズムと呼ばれ、F. R. Kschischang、B. J. Frey及びH. A. Loeligerによる「Factor Graphs and the Sum-Product Algorithm」（「IEEE Trans. on Information Theory」Vol. IT-47、No.2、2001年２月［３］）において記載されている。サムミニマム（sum-minimum）アルゴリズムは、サムプロダクトアルゴリズムの、簡略化された乗算の無い変形である。サムプロダクトアルゴリム又はサムミニマムアルゴリズムの標準的な実装は、以下のように行われる。確率情報を担持するメッセージは、符号語ノードからパリティ検査ノードへ、及びその逆にと、交互に本グラフの辺を流れる。
【００１９】
典型的な実装においては、例えば一番最近に出発したメッセージ全て（若しくは到着したメッセージ全て又は両方とも）がノードに保存される。左側のノードにおいては、このことは、10000個のノードのそれぞれに対する、それぞれが約１バイトのサイズを持つ少なくとも３つのメッセージの記憶容量要件に導く。右側のノードについては、このことは、1000個のノードのそれぞれに対する、少なくとも３０個のメッセージの記憶容量要件へと導く。合わせて、30000個の２倍の数のメッセージが保存される。
【００２０】
ＬＤＰＣ復号化のアルゴリズム構造を説明する前に、サムプロダクト構造からサムミニマム構造への変換が以下に説明される。この種の変換は、ビタビ復号化器及びターボ復号化器のような、多くのエラー訂正の実装において利用される。当該変換は、確率の対数尤度比（ＬＬＲ）表現を利用するが、他の表現が利用されても良い。一般に、バイナリのランダム型の値ＸのＬＬＲは、以下のように定義される：
ＬＬＲＸ＝ｌｏｇ（Ｐｒ｛Ｘ＝０｝／Ｐｒ｛Ｘ＝１｝）
ここでＰｒ｛Ｘ＝０｝は、Ｘ＝０である確率である。
【００２１】
Ｘについての情報が入手可能でなく、値０と１とが共に同様に確からしい場合、ＬＬＲＸ＝０である。一般に、ＸについてのＬＬＲＸ情報が入手可能であるほど、ＬＬＲＸの絶対値はよりゼロから逸脱する。ＬＬＲＸからＸについての硬判定値を導出するために、ＬＬＲの符号を考慮する必要のみがある。ＬＬＲＸ＞０である場合、値Ｘ＝０がより確からしい。ＬＬＲＸ＜０である場合、値Ｘ＝１がより確からしい。それ故、簡略化された復号化アルゴリズム、即ちサムミニマムアルゴリズムにおいて実行される演算は、以下のようになる：
−（符号語記号ノードにおける）対数尤度の合計
−パリティ検査ノードにおける符号±１の乗算を用いた、対数尤度の絶対値の最小化（±１符号の乗算は、関係する硬判定ビット０／１の排他的ＯＲをとることに対応する）
【００２２】
本発明の好適な実施例による復号化アルゴリズムは、かような確率の対数尤度比表現を利用する。従って該アルゴリズムは、チャネルを介して受信された入力対数尤度において線形に振舞う。実際には、これらの対数尤度は、等化器とも呼ばれるビット検出器によって生成されることができる。前記復号化アルゴリズムの入力対数尤度を定数αで乗算すると、どれだけの繰り返しの後であっても、全ての対数尤度が同一のαを用いて比率増加する。従って、当該αは前記対数尤度の符号に影響を与えず、それ故全ての繰り返しが実行された後にも、符号語ビットの硬判定値に影響を与えない。かような未知のαを用いたスケーリングは、入力対数尤度が前記チャネルの正しい又は不正な信号対ノイズ比で正規化される場合に発生する。サムプロダクトアルゴリズムは、何らかの形態で、対数尤度比を確率に変換し戻し、従って前記信号対ノイズ比の推定におけるエラーに敏感である。従って、前記信号対ノイズ比が本発明の復号化器アルゴリズムにおいて知られている必要がないという事実は、復号化結果が前記信号対ノイズ比の知識におけるエラーによる劣化を被り難いものとする。加えて、更に後に説明するように、サムプロダクト復号化アルゴリズムの代わりにサムミニマムアルゴリズムを利用することにより、メモリアーキテクチャも好ましい方向に大きく影響を受ける。
【００２３】
図１の２部グラフにおいて、符号語記号ノード及びパリティ検査ノード内部で種々の演算が利用される。符号語記号ノードにおいて、ランダム的な変数についての複数の独立した（仮定される独立性は近似であり、符号語の復号化の開始時においてのみ成り立ち、次第に正しくなくなる）情報源の合成されたＬＬＲは、個々のＬＬＲの和に等しい。パリティ検査ノードにおいては、複数の独立した（ここでも独立性は近似である）バイナリのランダム型の変数の排他的ＯＲのＬＬＲは、入力ＬＬＲの所謂ボックス関数である。所謂ボックス関数は、例えば前記参考文献［３］並びにJ. Hagenauer、E. Offer及びL. Papkeによる「Iterative decoding of binary block and convolutional codes Information Theory」（「IEEE Transaction on Information Theory」、Vol.42、No.2、429-445頁、1996年３月［４］）に記載されている。符号語記号ノード及びパリティ検査ノードが共通して持つ原則は、特定の辺を通ってノードに流れる軟情報は、同一の辺を通って当該ノードから流れ出る軟情報に間違いなく寄与しないということである。
【００２４】
以下は、サムプロダクトアルゴリズムの疑似コードテキストである。該アルゴリズムは、全ての辺を通って全ての符号語ビットノードから全てのパリティ検査ノードへ、及びその逆方向に、交互に流れるＬＬＲを用いて動作する。該アルゴリズムを起動するために、全てゼロのＬＬＲがパリティ検査ノードによって送信され、符号語記号ノードによって受信されたと仮定する。ここで各符号語記号ノードについて、対応するチャネルＬＬＲは当該ノードへの入力辺でもあることに留意されたい。
「以下を45回繰り返す」
「全ての符号語ビットノードについて、以下を繰り返す」
「各入力辺Ａについて、以下を繰り返す」
「Ａ以外の全ての入力ＬＬＲを合計する」
「Ａを通して結果を返送する」
「次の辺に繰り返し」
「次の符号語ビットノードに繰り返し」
「全てのパリティ検査ノードについて、以下を繰り返す」
「各入力辺について、以下を繰り返す」
「Ａ以外の全ての入力ＬＬＲのボックス関数をとる」
「Ａを通して結果を返送する」
「次の辺に繰り返し」
「次のパリティ検査ノードに繰り返し」
「次の繰り返し」
【００２５】
本アルゴリズムの軟出力符号語記号は、符号語ビットノードにおける全ての入力ＬＬＲ（チャネルＬＬＲに加え、パリティ検査ノードから入力辺）の合計に等しい。サムプロダクトＬＤＰＣ復号化アルゴリズムの最初の研究は、ロードバランシング（load balancing）の後においても、過度の量の乗算が実行される必要があることを示している。共通の部分表現の最小化はこの数をおおよそ半分にできるが、それでもまだ不十分である。
【００２６】
サムプロダクトアルゴリズムにおいては、特定の所謂ボックス関数の多数のテーブル検索を行うための選択を持つ。代替として、パリティ検査ノードにおける尤度の確率差表現を利用し、多くの固定小数点乗算を実行することができる。最小化演算は、ハードウェア的に比較的安価である。一方、乗算を実行すること又は多くの固定小数点から固定小数点へのテーブル検索を実行することは、より多くのチップエリアを必要とし、より低速である。
【００２７】
例えばＮＪ／Ｋ＝1000個のパリティ検査ノードを持つ（Ｎ＝10000、Ｊ＝３）サムミニマムアルゴリズムを用いると、受信された符号語毎に例えば４５回に上る繰り返しについて、検査ノード毎にＫ＝３０個の入力項の最小値及び２番目に小さい値をとる必要がある。このことは、単一のチップにおいて実現可能となるが、多くの乗算を実行する必要がある場合には当てはまらない。サムミニマムアルゴリズムにおいては、１つのパリティ検索ノード演算は以下のようになる。接続されたパリティ検索ノードｋ＝０、１、・・・、Ｋ−１のそれぞれについて、
−ｋ番目のものを除く、接続された符号語記号ノードによって出力された全ての硬ビットの排他的ＯＲを計算する。
−ｋ番目のものを除く、パリティ検査ノードが接続された、符号語ビットノードの対数尤度比のＫ個の絶対値全ての最小値を計算する。
【００２８】
Ｋ個の排他的なＯＲ結果を計算するための（ハードウェア的に）安価な方法は、Ｋ個の入力ビット全ての排他的ＯＲを計算することである。ここで、１つを除く、Ｋ個の入力ビット全ての排他的ＯＲは、上述した全体の排他的ＯＲをとり、除外されるべき入力ビットと排他的ＯＲをとることにより得られる。
【００２９】
パリティ検査ノード演算の間に計算される必要のあるＫ個の最小値に対して、及び特定の辺を通ってノードに流入する軟情報が同一の辺によって当該ノードから流れ出る軟情報に寄与しないという上述の原則によって、本発明は以下を考慮に入れる。パリティ検査ノードへのｋ番目の入力を考え、当該入力の対数尤度の絶対値は、かようなＫ個の入力全ての最小値ではないことを仮定する。このとき、ｋ番目のものを除くＫ個全ての入力の最小値は、Ｋ個の値の全体の最小値に等しい。ｋ番目の対数尤度比が、Ｋ個全ての入力の絶対最小値を持つ場合、ｋ番目のものを除くＫ個の入力の最小値は、２番目に小さい値に等しい。
【００３０】
例として、所定の繰り返しにおいて、所定の右側のノードの３０個の入力信頼度が、以下の表１の入力シーケンスであると仮定する。
【００３１】
【表１】
2006508577.tif 000003
【００３２】
最初に第１のものが省略され、次いで第２のもの、次いで第３のもの、等のように、１つを除いた全ての入力信頼度の最小値は、以下の表２の出力シーケンスに帰着する。
【００３３】
【表２】
2006508577.tif 000004
【００３４】
前記出力シーケンスは、２つの異なる値のみを持つことに留意されたい。一方の値は全体の最小値であり、１つを除く全ての位置における出力結果に対応する。他方の値は全体の２番目に小さい値であり、インデクスは前記入力シーケンスにおける前記全体の最小値の位置に対応する。かくして、パリティ検査ノードにおいて、ｋ番目のもの（ｋ＝０、１、・・・Ｋ−１）を除くＫ個の値の最小値のシーケンスが、３つの数：
−全体の最小値、
−全体の２番目に小さい値、及び
−最小入力値が出現するインデクスｋ
のみを利用して保存されることができる。
【００３５】
復号化器におけるメモリスペースを節約するために上述の所見を利用して、本発明によるメッセージパッシングアルゴリズムが、以下のように要約されることができる。最初に、同一のパリティ検査方程式により検査される符号語記号のセットに関連する入力信頼度値の入力シーケンスから最小値が決定される。次いで本方法は、以下の繰り返しのサブステップを有する、所謂ランニングミニマムループを実行する。
−入力信頼度値の入力シーケンスから信頼度値を読み取る、
−前記信頼度値を保存された値と比較する、
−前記信頼度値が前記保存された値よりも小さい場合は、前記保存された値を前記信頼度値で上書きする。
【００３６】
かような所謂ランニングミニマムステップを利用することは、表２に対応する全ての比較の結果を保存することを回避する。その代わりに、ランニングの最小値が入力シーケンスの入力信頼度値が読み取られたときに更新され、メモリスペースを節約することを可能とする。実際には、ランニングミニマムステップを開始する際、最初に保存された値は予め保存された基準値であっても良く、当該基準値の値は適切に選択されたものであり、入力シーケンスから読み取られた値を用いて更新される。以降のループにおいては、前記保存された値は、入力シーケンスから上書きされた、入力シーケンスから他の信頼度値が読み取られたときに更新されるべき最初に保存された値よりも小さな信頼度値となり得る。上述のランニングミニマムステップは信頼度の入力シーケンスの全体のランニングの最小値に関連するという事実にかかわらず、全体の最小値及び２番目に小さい値の両方を決定するためにも同様の方法が利用されることができる。この場合には、ランニングミニマムステップは、以下の反復するサブステップを有する：
−入力信頼度値の入力シーケンスから信頼度値を読み取る、
−前記信頼度値を、第１及び第２の保存された値と比較する、
−前記信頼度値が前記第１及び第２の保存された値より小さい場合には、前記第１の保存された値を前記信頼度値で上書きする、
−前記信頼度値が前記第２の保存された値よりも小さく且つ前記第１の保存された値よりも大きい場合には、前記第２の保存された値を前記信頼度値で上書きする。
【００３７】
図１に関して以下に説明される例においては、符号語記号に関連する各入力信頼値は、前記符号語記号に対して実行されたパリティ検査から導出されることに留意されたい。
【００３８】
メッセージパッシングアルゴリズムが、各パリティ検査方程式について、入力信頼度の入力シーケンスから出力信頼度の出力シーケンスを計算するステップを有し、出力シーケンスの各出力信頼度が、前記入力シーケンスにおける同一のインデクスを持つ１つを除く全ての入力信頼度の最小値に等しい特定の場合においては、前記最小値は前記ランニングミニマムステップを用いて決定されることができる。この特定の場合においては、本発明は通常各記号ノードに３つのみの値、即ち全体の最小値、全体の２番目に小さい値、及び入力シーケンスにおける全体の最小値のインデクスを保存するように導く。なぜなら、全体の最小値のインデクスを持つものを除く出力シーケンスにおける全ての結果は全体の最小値に等しく、全体の最小値のインデクスを持つ結果は２番目に小さな値に等しいからである。
【００３９】
以上に要約された本発明を実装するために、以下の注記が為される。入力信頼度値の入力シーケンスは通常、供給源から受信された前記符号語記号から生成される。前記供給源は例えば、伝送チャネル又は記録チャネルであっても良い。既に説明したように、入力信頼度値は、前記符号語記号の対数尤度比の絶対値から、又は前記符号語記号の確率の他の表現から導出されても良い。同一のパリティ検査方程式によって検査されるセット中の全ての符号語記号の合計は、所定のパリティを持つ。
【００４０】
上述したメッセージパッシングアルゴリズムの振舞は、図１を用いて説明される。情報（例えば受信されたメッセージ又は受信されたメッセージから導出される情報）は、全てのノードに保存される。交互に、メッセージは左から右へと全ての辺を渡って流れ（前半の繰り返し）、次いで右から左へと全ての辺を渡って流れる（後半の繰り返し）。本図においては、情報が符号語ビットノードとパリティ検査ノードとの両方に保存されるという事実は、本グラフの２つの交差（点線）を用いて示されている。符号語ビットノードは左側にある。パリティ検査ノードは右側にある。実際には、レートＲ＝０．９、Ｊ＝３の符号については、各符号語記号ノードはＪ＝３個の接続された辺を持ち、各パリティ検査ノードはＫ＝Ｊ／（１−Ｒ）＝３０個の接続された辺を持つ。ＬＤＰＣグラフにおけるメッセージパッシングの既定の方法は、最初に符号語ビットノードに保存された情報を利用し、本グラフの右側へと流れる出力メッセージを計算することである。次いで、パリティ検査ノードに保存された情報（メッセージ）を利用し、本グラフの左側へと流れるメッセージを計算する。
【００４１】
３０個の値全てを保存するのではなく、最小値、２番目に小さな値、及びインデクスのみを保存することを可能とする本発明を利用するため、入力されるメッセージはパリティ検査ノードにおいて処理されるべきであり、準備された出力メッセージが保存されるべきである。このため、既に述べたように、パリティ検査ノードにつき３つの値（及び幾つかのビット）だけが保存される必要がある。前記準備された出力メッセージが符号語記号ノードにも保存される場合には、符号語ノードにつきＪ＝３個の数が保存されるべきである。パリティ符号ノードよりも１／（１−Ｒ）＝１０倍多い符号語記号ノードがあるという事実、及び各ノードについて同様の量のデータが保存されるという事実は、記憶容量要件が符号語記号ノードによって支配されることを明らかとする。
【００４２】
図２は、本発明の好適な（より最適な）実施例による２部グラフを示す。本実施例においては、左側のノードに関するメッセージ情報及び右側のノードに関するメッセージ情報は、左側のノード情報から新たな右側のノード情報を、及びその逆を連続的に計算するために保存されない。その代わりに、パリティ検査ノードの出力メッセージ情報が２度保存される。１つは古い（現在の）情報のシーケンスであり、もう１つは（古いシーケンスからの）計算の処理中の新たな情報のシーケンスである。本例の場合は、パリティ検査ノードの古い出力メッセージ情報と、同一の情報の新たなシーケンスとが保存される。前記計算は以下のように要約される：
−左側のノードに接続された右側のノードにおける「現在の」値から開始する、
−最小値、２番目に小さい値及びインデクスから右側のノードの出力メッセージを抽出し、該情報を所定の左側のノード（又は幾つかの左側のノード）に送る、
−左側のノードの処理を実行する、
−（Ｊ＝３個の）右側のノードの「新たな」値における左側のノードから入力される左側のノードの出力メッセージに即座に戻り組み込む。該右側のノードにおいて、ランニングの最小値及びランニングの２番目に小さな値が保持される。
【００４３】
以前に説明した最適でない実施例においては、符号語記号ノードについての記憶容量要件は、パリティ符号ノードの記憶容量要件よりも約１０（＝Ｋ／３）倍大きかった。ここでは全ての保存が本グラフの右側（パリティ検査ノード）へと移動されたため、およそ１０のファクターの記憶容量要件の削減が得られる。
【００４４】
記号ノードとパリティ検査ノードとの両方においてメモリスペースの節約を可能とするランニングミニマムアルゴリズムが、上述した数量的な例に関して、ここでより詳細に説明される。約10000個の符号語記号のそれぞれについて、１つの軟チャネル出力（ＬＬＲ）、即ち８ビットの固定小数点が保存される必要があり、これにより記憶容量要件は８０kbitとなる。パリティ検査ノードのメモリには２つの部分がある。一方の部分は、繰り返しの全ての入力値のためのものであり、もう一方の部分は、繰り返しの全ての出力値のためのものである。入力メモリ部と出力メモリ部は、１つの繰り返しの後に交換され、それにより前に出力だったものが入力データになる。
【００４５】
1000個のパリティ検査ノードのそれぞれについて、以下のものの２つのコピーを持つ：
−Ｍ（絶対対数尤度入力のランニングの最小値を示す（固定小数点））、
−ＭＭ（絶対対数尤度入力のランニングの２番目に小さい値を示す（固定小数点））、
−Ｉ（Ｋ＝３０個のうち絶対対数尤度入力が最小となるインデクス（辺番号）を示す）、
−Ｔ（Ｋ＝３０個の硬ビット入力全体の１ビット排他的ＯＲを示す）、
−Ｓ［３０］（検査ノードへのＫ＝３０個の入力の符号ビットを示す）。
これにより全体で、約1000×２×（８＋８＋５＋１＋３０）bit＝１００kbitとなる。ＬＤＰＣ復号化器当たりの全体のＲＡＭ記憶容量要件は、約８０kbit＋１００kbit＝１８０kbitとなる。最初に、入力パリティ検査ノードのメモリ部において、全ての（Ｍ，ＭＭ，Ｉ，Ｔ，Ｓ）を（０，０，Ｘ，Ｘ，Ｘ［３０］）によって置き換える。ここで「Ｘ」は、「無視せよ」を意味する。以下は、所謂ランニングミニマムアルゴリズムの疑似コードテキストである。
「以下を45回繰り返す」
出力パリティ検査ノードメモリ部において、以下を設定
（Ｍ，ＭＭ，Ｉ，Ｔ，Ｓ）＝（ＭＡＸ，ＭＡＸ，Ｘ，０，Ｘ［３０］）
ここでＭＡＸは、利用される固定小数点表現での最大値を示す。
【００４６】
「全ての符号語ビットノードについて、以下を繰り返す」
符号語記号ノードのＪ＝３個の入力をフェッチする。Ｊ＝３個の入力枝のそれぞれは、定数のラベル（１、・・・、３０＝Ｋ）を持ち、該ラベルはパリティ検査ノードにおいて何番目の辺であるかを示す。Ｊ＝３個の入力枝のそれぞれについて、右側のノードのＩフィールドが辺の定数のラベルに等しい場合、入力パリティ検査ノードのメモリ語から２番目に小さい値ＭＭをフェッチする。そうでない場合は最小値Ｍをフェッチする。Ｍ及びＭＭは、負でない信頼度（ＬＬＲの絶対値）である。フェッチされた信頼度に、
Ｔ＋Ｓ［辺のラベル］ｍｏｄ２
に等しい符号ビットを与える（このようにして、１つを除く３０個の硬ビット全ての排他的ＯＲを得る）。Ｊ＝３個の符号付きのフェッチされた数（これらの数は符号語ビットノードへの入力メッセージである）を合計し、当該左側のノード用に保存されたチャネル入力を加算する。この合計から、Ｊ＝３個の辺のそれぞれについて、当該辺についての入力メッセージとしてフェッチされた数を減算する。このようにして、Ｊ＝３個の部分和を得る。これらは、パリティ検査ノードに送信されるＪ＝３個の出力である。Ｊ＝３個の出力を、対応する出力パリティ検査ノードに返送する。考慮されている左側のノードのＪ＝３個の辺のそれぞれについて、出力メッセージの絶対値がＭよりも小さいか否かがチェックされる。そうであれば、ＭＭはＭによって置き換えられ、Ｍは前記符号語ビットノードの関係する出力メッセージによって置き換えられ、インデクスＩは当該辺の定数のラベルによって置き換えられる。そうでなければ、前記出力の絶対値が２番目に小さい値ＭＭよりも小さいか否かがチェックされる。そうであればＭＭを前記符号語ビットノードの出力メッセージの絶対値によって置き換える。Ｔビットを、Ｔビットと、関係する出力メッセージの硬決定ビットとの排他的ＯＲで置き換える。
【００４７】
「次の符号語ビットノードに繰り返し」
入力及び出力パリティ検査ノードのメモリ部を交換する。次の繰り返しを実行する。
「次の繰り返し」
何らかの停止条件が満たされると、レディ状態になる。停止条件の例は、例えばメッセージ又は符号語に対する巡回冗長検査ＣＲＣを含むことであっても良く、ＣＲＣ検査が正であれば停止しても良い。又は、全ての繰り返しで計算される復号化された記号のうち、前の繰り返しに対して変化していないものが無い場合に停止しても良い。
【００４８】
上述されたメッセージパッシングアルゴリズムは、本復号化方法を実行するためのコンピュータプログラムを利用した、例えば光読み取り器のような受信器において実装されても良い。
【００４９】
図３は、本発明による光システムの例を示す。該システムは、データ供給源及び受信器を有する。前記データ供給源は、例えば光ディスクのような記憶媒体３１であり、該媒体にディジタル符号化されたデータが保存される。前記受信器は、光ディスクに保存された符号化されたデータを読み取り復号化するための光読み取り器である。前記読み取り器は、図１又は図２を参照して説明された復号化方法を実装するデコーダ３３と、復号化の前に前記符号化されたデータを読み取るための光読み取り手段３４とを有する。前記復号化されたデータは次いで、処理のために前記受信器の出力部３５に誘導される。
【００５０】
本発明は、符号語記号が例えば整数モジュロｑ（ｑ＞２）の場合、又はより一般的に、環（ring）と呼ばれる数学的なオブジェクトの要素若しくはガロアフィールドの要素のように、バイナリでない場合にも同様に適用可能である。
【００５１】
ＬＤＰＣ復号化器は、ターボ復調方式の一部であっても良い。ここでは、ビット検出器及びＬＤＰＣ復号化器の単純な連結は無く、ビット検出器の繰り返し及びＬＤＰＣタイプの繰り返しが１つの大きなループに結び付けられる。
【００５２】
以上の図及び図の説明は、本発明を限定するものではなく説明するものである。添付する請求項の範囲内である多くの代替例があることは明らかであろう。この点に関し、最後に以下の注記が為される。
【００５３】
ハードウェア若しくはソフトウェア又はこれらの両方のアイテムによって機能を実装する多くの方法がある。この点に関し、前記図は非常に概略的なものであり、それぞれは本発明の１つのとり得る実施例を表すにすぎない。従って、図が異なる機能を異なるブロックとして示しているとしても、このことは決して、ハードウェア又はソフトウェアの単一のアイテムが幾つかの機能を実行することを除外するものではない。このことはまた、ハードウェア若しくはソフトウェア又はこれらの両方のアイテムの集合が１つの機能を実行することを除外するものでもない。
【００５４】
［１］乃至［４］で示した以下の参考文献は、ここで参照によって本明細書に組み込まれたものとする：
［１］Marc P. C. Fossorier による論文「Reduced Complexity Iterative Decoding of
Low-Density Parity Check Codes Based on Belief Propagation」（「IEEE Transactions on Communications」Vol.47、No.5、1999年5月）、
［２］R. G. Gallagerによる「Low density parity check codes」（「IRE Transaction
on Information Theory IT-8」、21-28頁、1962年）、
［３］F. R. Kschischang、B. J. Frey及びH. A. Loeligerによる「Factor Graphs and the Sum-Product Algorithm」（「IEEE Trans. on Information Theory」Vol. IT-47、No.2、2001年２月）、
［４］J. Hagenauer、E. Offer及びL. Papkeによる「Iterative decoding of binary block and convolutional codes Information Theory」（「IEEE Transaction on Information Theory」、Vol.42、No.2、429-445頁、1996年３月）。
【図面の簡単な説明】
【００５５】
【図１】本発明の第１の実施例によるＬＤＰＣ符号を復号化する方法の例を説明する概念図である。
【図２】本発明の第１の実施例によるＬＤＰＣ符号を復号化する方法の例を説明する概念図である。
【図３】本発明による受信器を有するシステムの例を説明する模式的なブロック図である。
【図１】
2006508577.tif 000005
【図２】
2006508577.tif 000006
【図３】
2006508577.tif 000007
【国際調査報告】
2006508577.tif 000008
2006508577.tif 000009