(57)【要約】【課題】ＬＤＰＣ符号の誤り訂正能力を向上させる。【解決手段】実施形態に係る誤り訂正復号器は、非正則ＬＤＰＣ符号を利用して符号化されたデータに対して繰り返し復号を実施する。誤り訂正復号器は、チェックノードから変数ノードへの外部値に基づいて一時推定語を生成し、一時推定語にパリティ検査を行い、全てのチェックノードがパリティ検査を満たす場合に一時推定語を符号語と判定するパリティ検査部１０４を含む。誤り訂正復号器は、繰り返し復号の実施回数が所定の繰り返し回数を超えても符号語が得られないことを含む所定の条件が満たされる場合に、変数ノードの列重みの降順に応じてより大きな値或いは等しい値を持ち、最大値が最小値と等しくない複数の外部値重みを用いて、パリティ検査を満たさないチェックノードから変数ノードへの外部値の絶対値を拡大する重み付けを行う尤度制御部１０６を含む。【選択図】図１
2012060450.tif 000002
【特許請求の範囲】
【請求項１】
非正則ＬＤＰＣ符号を利用して符号化されたデータに対して繰り返し復号を実施する誤り訂正復号器において、
チェックノードから変数ノードへの外部値を生成する行処理部と、
前記外部値に基づいて一時推定語を生成し、前記一時推定語にパリティ検査を行い、全てのチェックノードがパリティ検査を満たす場合に前記一時推定語を符号語と判定するパリティ検査部と、
前記繰り返し復号の実施回数が所定の繰り返し回数を超えても前記符号語が得られないことを含む所定の条件が満たされる場合に、変数ノードの列重みの降順に応じてより大きな値或いは等しい値を持ち、最大値が最小値と等しくない複数の第１の外部値重みを用いて、前記パリティ検査を満たさないチェックノードから変数ノードへの外部値の絶対値を拡大する重み付けを行う尤度制御部と
を具備する誤り訂正復号器。
【請求項２】
前記第１の外部値重みの最小値は１よりも大きく、
前記尤度制御部は、前記所定の条件が満たされる場合に、前記パリティ検査を満たさないチェックノードから変数ノードへの外部値に前記第１の外部値重みを乗算する、
請求項１の誤り訂正復号器。
【請求項３】
前記所定の条件は、前記繰り返し復号の実施回数が所定の繰り返し回数を超えているにも関わらず符号語が得られず、かつ、前記パリティ検査を満たさないチェックノードの総数が所定の最大数以下であることを含む、請求項１の誤り訂正復号器。
【請求項４】
前記尤度制御部は、前記所定の条件が満たされる場合に、変数ノードの列重みの降順に応じてより小さな値或いは等しい値を持ち、最大値が最小値と等しくない複数の第２の外部値重みを用いて、前記パリティ検査を満たすチェックノードから前記パリティ検査を満たさないチェックノードに繋がっている変数ノードへの外部値の絶対値を縮小する重み付けを行う、請求項１記載の誤り訂正復号器。
【請求項５】
前記第２の外部値重みの最大値は１よりも小さく、
前記尤度制御部は、前記所定の条件が満たされる場合に、前記パリティ検査を満たすチェックノードから前記パリティ検査を満たさないチェックノードに繋がっている変数ノードへの外部値に前記第２の外部値重みを乗算する、
請求項４の誤り訂正復号器。
【請求項６】
前記第２の外部値重みの最大値は０以下であり、
前記尤度制御部は、前記所定の条件が満たされる場合に、前記パリティ検査を満たすチェックノードから前記パリティ検査を満たさないチェックノードに繋がっている変数ノードへの外部値の絶対値に前記第２の外部値重みを加算する、
請求項４の誤り訂正復号器。
【請求項７】
前記第１の外部値重みの最小値は０以上であり、
前記尤度制御部は、前記所定の条件が満たされる場合に、前記パリティ検査を満たさないチェックノードから変数ノードへの外部値の絶対値に前記第１の外部値重みを加算する、
請求項１の誤り訂正復号器。
【請求項８】
前記非正則ＬＤＰＣ符号を用いて符号化されたデータを不揮発性メモリから受ける読み出し部と、
請求項１記載の誤り訂正復号器と
を具備する、メモリコントローラ。
【請求項９】
受信信号を復調し、前記非正則ＬＤＰＣ符号を用いて符号化されたデータを得る復調部と、
請求項１記載の誤り訂正復号器と
を具備する、受信機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、非正則低密度パリティ検査（ＬＤＰＣ；Low Density Parity Check）符号を用いた誤り訂正に関する。
【背景技術】
【０００２】
情報を送信する場合、情報を記録する場合などに、情報に誤り訂正符号が付加されることがある。誤り訂正符号が付加された情報は、受信機、メモリコントローラなどに組み込まれた誤り訂正復号器によって復号される。誤り訂正符号を利用することにより、受信された情報、読み出された情報などにある程度のビット誤りが含まれていても、ビット誤りを訂正して正しい情報を復元できる。
【０００３】
誤り訂正符号の一種としてＬＤＰＣ符号が知られている。ＬＤＰＣ符号は、優れた誤り訂正能力を持つ。一方、ＬＤＰＣ符号に関して、復号前ビット誤り率がある程度低い領域において復号誤り率が殆ど低減しなくなるエラーフロアと呼ばれる現象が知られている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Zhengya Zhang, Dolecek L., Nikolic B., Anantharam V., and Wainwright M.J., "Lowering LDPC Error Floors by Postprocessing," Global Telecommunications Conference, 2008. IEEE GLOBECOM 2008. IEEE, vol., no., pp. 1-6, Nov. 30 2008-Dec. 4 2008
【発明の概要】
【発明が解決しようとする課題】
【０００５】
エラーフロアを低減させることにより、ＬＤＰＣ符号は更に優れた誤り訂正能力を発揮できる。実施形態は、ＬＤＰＣ符号の誤り訂正能力を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
一実施形態に係る誤り訂正復号器は、非正則ＬＤＰＣ符号を利用して符号化されたデータに対して繰り返し復号を実施する。誤り訂正復号器は、チェックノードから変数ノードへの外部値を生成する行処理部を含む。誤り訂正復号器は、外部値に基づいて一時推定語を生成し、一時推定語にパリティ検査を行い、全てのチェックノードがパリティ検査を満たす場合に一時推定語を符号語と判定するパリティ検査部を含む。誤り訂正復号器は、繰り返し復号の実施回数が所定の繰り返し回数を超えても符号語が得られないことを含む所定の条件が満たされる場合に、変数ノードの列重みの降順に応じてより大きな値或いは等しい値を持ち、最大値が最小値と等しくない複数の第１の外部値重みを用いて、パリティ検査を満たさないチェックノードから変数ノードへの外部値の絶対値を拡大する重み付けを行う尤度制御部を含む。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る誤り訂正復号器を例示するブロック図。
【図２】ＬＤＰＣ検査行列の説明図。
【図３】図２のＬＤＰＣ検査行列のタナ−グラフ表現の説明図。
【図４】図２のＬＤＰＣ検査行列を用いたパリティ検査結果の一例の説明図。
【図５】図１の誤り訂正復号器の動作の一例を示すフローチャート。
【図６】図１の誤り訂正復号器の動作の別の例を示すフローチャート。
【図７】図１の誤り訂正復号器の動作の別の例を示すフローチャート。
【図８】第２の実施形態に係る記憶装置を例示するブロック図。
【図９】第３の実施形態に係る受信機を例示するブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、各実施形態について説明する。  
（第１の実施形態）  
第１の実施形態に係る誤り訂正復号器は、図１に示されるように、入力尤度保持部１０１、行処理部１０２、列処理部１０３、パリティ検査部１０４、検査行列保持部１０５及び尤度制御部１０６を有する。この誤り訂正復号器は、基本的には、いわゆるメッセージパッシング復号アルゴリズム（Sum-ProductアルゴリズムやMin-Sumアルゴリズム復号法）に基づく繰り返し復号を実施する。
【０００９】
入力尤度保持部１０１には、前段の信号処理部（図示しない）によって得られた符号データの尤度Ｆｎが入力される。入力尤度保持部１０１は、入力尤度Ｆｎを符号データの復号が完了するまで保持する。この符号データは、検査行列保持部１０５が保持する非正則ＬＤＰＣ検査行列Ｈ（以降、単に検査行列Ｈとも称する）によって定義されるＬＤＰＣ符号である。即ち、この符号データは、いわゆる組織符号であり、データビットとパリティビットとで構成される。
【００１０】
一例として、２つのデータビットＣ１，Ｃ２と、４つのパリティビットＣ３，・・・，Ｃ６とで構成される符号データを仮定する。このとき、入力尤度保持部１０１は、各ビットＣ１，・・・，Ｃ６に対応する入力尤度Ｆ１，・・・，Ｆ６を保持する。これら入力尤度Ｆ１，・・・，Ｆ６は、行処理部１０２及びパリティ検査部１０４によって必要に応じて読み出される。
【００１１】
ここで、尤度とは、次の数式（１）に示されるように、データビットが「１」である確率Ｐ（ｘ＝１）に対するデータビットが「０」である確率Ｐ（ｘ＝０）の比の対数値（底は自然対数）である。また、以降の説明において、事前尤度とは、事前確率の尤度を意味する。
【数１】
2012060450.tif 000003
【００１２】
検査行列保持部１０５は、Ｍ行Ｎ列の検査行列Ｈの情報を予め保持している。検査行列Ｈは、符号化側と復号化側との間で共通である。検査行列Ｈ（の情報）は、行処理部１０２、列処理部１０３、パリティ検査部１０４及び尤度制御部１０６によって必要に応じて読み出される。
【００１３】
一例として、Ｍ＝４、Ｎ＝６の場合の検査行列Ｈを図２に示す。図２の４行６列の検査行列Ｈによって定義される符号データの符号長は６ビットであり、この符号データのパリティ長は４ビットである。検査行列Ｈの第ｍ行に含まれる「１」の数を第ｍ（１以上４以下の整数）行の行重みと呼ぶ。また、検査行列Ｈの第ｎ（１以上６以下の整数）列に含まれる「１」の数を第ｎ列の列重みと呼ぶ。尚、非正則ＬＤＰＣ符号は、その検査行列Ｈの行重み及び列重みが非一様である。
【００１４】
更に、以降の説明では、第ｍ行目に含まれる「１」の列位置を示す列インデックスの集合をＡ（ｍ）、第ｎ列目に含まれる「１」の行位置を示す行インデックスの集合をＢ（ｎ）と呼ぶ。図２の例であれば、Ａ（２）＝｛１，２，５｝、Ｂ（３）＝｛１，４｝である。ＬＤＰＣ符号の検査行列Ｈは、行列のサイズに対して「１」の総数が非常に少ない（「１」の密度が低い）ので、行列中の「１」の位置情報のみで検査行列Ｈの情報を表現することにより検査行列Ｈの情報量を節約できる。即ち、検査行列保持部１０５の回路規模を抑えることができる。
【００１５】
図２の検査行列Ｈは、図３に示されるように、タナ−グラフによって表現することもできる。タナ−グラフは、２種類のノードグループで構成される。具体的には、タナ−グラフは、変数ノードグループ（図３の変数ノードＶ１，・・・，Ｖ６）及びチェックノードグループ（図３のチェックノードＰ１，・・・，Ｐ４）で構成される。検査行列Ｈの第ｍ行第ｎ列の要素が「１」であるならば、チェックノードＰｍと変数ノードＶｎとが辺（エッジ）で結ばれる。
【００１６】
行処理部１０２は、入力尤度保持部１０１からの入力尤度Ｆ１，・・・，Ｆ６と、検査行列保持部１０５からの検査行列Ｈの情報と、列処理部１０３からの事前尤度βｍｎとを用いて外部値αｍｎを生成する。具体的には、行処理部１０２は、次の数式（２）に従って、外部値αｍｎを生成する。行処理部１０２は、生成した外部値αｍｎをパリティ検査部１０４及び尤度制御部１０６に入力する。
【数２】
2012060450.tif 000004
【００１７】
尚、数式（２）において、事前尤度βｍｎは、一回目の復号では全て０に設定されるが、二回目以降の復号では列処理部１０３からフィードバックされる最新の値が設定される。また、数式（２）における関数sign(x)及び関数f(x)は、次の数式（３）及び（４）で夫々表される。
【数３】
2012060450.tif 000005
【００１８】
【数４】
2012060450.tif 000006
【００１９】
パリティ検査部１０４は、検査行列保持部１０４からの検査行列Ｈの情報と、行処理部１０２からの外部値αｍｎと、入力尤度保持部１０１からの入力尤度Ｆｎとに基づいて一時推定語を生成する。具体的には、パリティ検査部１０４は、一時推定語の第ｎ番目の要素を次の数式（５）に従って生成する。
【数５】
2012060450.tif 000007
【００２０】
そして、パリティ検査部１０４は、生成した一時推定語が、検査行列Ｈによって定義される符号語であるか否かを検査する。具体的には、パリティ検査部１０４は、次の数式（６）に従ってパリティ検査ベクトルＵを計算する。
【数６】
2012060450.tif 000008
【００２１】
パリティ検査ベクトルＵの各要素は、対応するチェックノードがパリティ検査を満たすか否か（対応するチェックノードのパリティが正しいか否か）を示す。具体的には、パリティ検査ベクトルＵの第ｍ番目の要素が「０」であれば第ｍ番目のチェックノードＰｍはパリティ検査を満たす。一方、パリティ検査ベクトルＵの第ｍ番目の要素が「１」であれば第ｍ番目のチェックノードＰｍはパリティ検査を満たさない。また、パリティ検査ベクトルＵに含まれる「１」の総数は、パリティ検査を満たさないチェックノードの総数ＵＣＮと等しい。
【００２２】
以降の説明では、パリティ検査を満たさないチェックノードの集合をＵＣ（Ｐ）と定義し、パリティ検査を満たさないチェックノードと（辺を介して）繋がっている変数ノードと（辺を介して）繋がっている、パリティ検査を満たすチェックノードの集合をＳＤ（Ｐ）と定義する。尚、ＵＣＮは、集合ＵＣ（Ｐ）に含まれる要素の総数と等しい。
【００２３】
例えば、図４に示されるように、変数ノードＶ２，Ｖ４及びＶ６においてビット誤りが生じ、パリティ検査ベクトルＵ＝［１１１０］というパリティ検査結果が得られたとする。この場合には、ＵＣＮ＝３、ＵＣ（Ｐ）＝｛Ｐ１，Ｐ２，Ｐ３｝、ＳＤ（Ｐ）＝｛Ｐ４｝である。尚、図４において、ビット誤りが生じている変数ノードＶ２，Ｖ４及びＶ６を黒い丸印で、これら変数ノードＶ２，Ｖ４及びＶ６と任意のチェックノードとを繋ぐ辺を破線で、パリティ検査を満たさないチェックノードを黒い四角印で夫々表している。
【００２４】
パリティ検査ベクトルＵが零ベクトルとなることは、全てのチェックノードがパリティ検査を満たすことを意味する。パリティ検査ベクトルＵが零ベクトルとなれば、パリティ検査部１０４は、一時推定語を符号語として出力する。一方、パリティ検査ベクトルＵが零ベクトルでなければ、後述するように、予め定められる最大繰り返し回数Ｌmaxを上限として外部値αｍｎの更新と、更新後の外部値αｍｎに基づくパリティ検査とが繰り返し行われる。パリティ検査部１０４は、パリティ検査ベクトルＵが零ベクトルでなく、かつ、繰り返し復号の実施回数Ｌが最大繰り返し回数Ｌmaxに達していなければ、集合ＵＣ（Ｐ）の情報及び集合ＳＤ（Ｐ）の情報を尤度制御部１０６に通知する。尚、繰り返し復号の実施回数Ｌは、例えば行処理部１０２によってカウントされる。
【００２５】
尤度制御部１０６は、所定の条件が満たされる場合には、行処理部１０２からの外部値αｍｎに重み付けを行って、重み付けされた外部値αｍｎを列処理部１０３に入力する。一方、尤度制御部１０６は、上記所定の条件が満たされない場合には、行処理部１０２からの外部値αｍｎをそのまま列処理部１０３に入力する。上記所定の条件は、例えば、繰り返し復号の実施回数Ｌが所定の繰り返し回数Ｌｉｎを超えているという第１の条件及びＵＣＮが所定の最大数ＵＣＮｍａｘ以下であるという第２の条件の一方のみまたは両方の組み合わせである。
【００２６】
列処理部１０３は、検査行列保持部１０５からの検査行列Ｈの情報と、尤度制御部１０６からの（必要に応じて重み付けされた）外部値αｍｎとを用いて事前尤度βｍｎを計算する。具体的には、列処理部１０３は、次の数式（７）に従って、事前尤度βｍｎを計算する。列処理部１０３は、計算した事前尤度βｍｎを行処理部１０２にフィードバックする。  
【数７】
2012060450.tif 000009
【００２７】
尚、数式（７）において、外部値αｍｎは、尤度制御部１０６から入力される外部値αｍｎであり、重み付けされている場合とそうでない場合とがある。
【００２８】
図１の誤り訂正復号器は、基本的には、尤度制御部１０６による外部値αｍｎの重み付けを伴わない通常の繰り返し復号を行って誤り訂正復号を実現する。しかしながら、図１の誤り訂正復号器は、通常の繰り返し復号を例えばＬｉｎ回実施しても符号語を得られない場合に、尤度制御部１０６によって以下に説明するような外部値αｍｎの重み付けを行うことでエラーフロアの低減（即ち、誤り訂正能力の向上）を試みる。
【００２９】
以下、外部値αｍｎの重み付けの技術的意義と、外部値αｍｎの重み付けにおける具体的な処理内容とを説明する。  
通常の繰り返し復号を例えばＬｉｎ回実施した結果、図４に示されるようなパリティ検査結果が得られたと仮定する。変数ノードＶ２，Ｖ４及びＶ６においてビット誤りが生じているので、チェックノードＰ１，Ｐ２及びＰ３はパリティ検査を満たさないが、チェックノードＰ４はパリティ検査を満たす。但し、チェックノードＰ４は、変数ノードＶ２及びＶ４の両方においてビット誤りが生じたことによりパリティ検査を一時的に満たしているに過ぎない。例えば、変数ノードＶ２及びＶ４のいずれかの誤りが訂正されれば、チェックノードＰ４はパリティ検査を満たさなくなる。故に、図４の例に関して、パリティ検査を満たすチェックノードＰ４から変数ノードＶ２に送られる外部値α４２は実際には不適切な値であり、パリティ検査を満たさないチェックノードＰ２から変数ノードＶ２に送られる外部値α２２は実際には適切な値であると考えられる。そこで、例えば不適切な外部値α４２の影響（具体的には、絶対値など）を縮小するような重み付けを行ったり、適切な外部値α２２の影響を拡大するような重み付けを行ったりすることにより、変数ノードＶ２のビット誤りが訂正される可能性が高くなる。但し、図１の誤り訂正復号器は、パリティ検査を満たすチェックノード（図４のチェックノードＰ４など）が、パリティ検査を真に満たしているのか、或いは、偶数個の変数ノードにおいてビット誤りが生じたことによりパリティ検査を一時的に満たしているに過ぎないのかを判別できない。
【００３０】
図１の誤り訂正復号器は、パリティ検査を満たさないチェックノード（即ち、集合ＵＣ（Ｐ）の各要素）から各変数ノードへの外部値αｍｎに関して、これらの影響を拡大するような重み付けを行う。一方、図１の誤り訂正復号器は、パリティ検査を満たさないチェックノードと繋がっている変数ノードと繋がっている、パリティ検査を満たすチェックノード（即ち、集合ＳＤ（Ｐ）の各要素）から上記パリティ検査を満たさないチェックノードと繋がっている変数ノードへの外部値αｍｎに関して、これらの影響を縮小するような重み付けを行う。この集合ＳＤ（Ｐ）には、偶数個の変数ノードにおいてビット誤りが生じたことによりパリティ検査を一時的に満たしているに過ぎない要素が含まれると推定される。尚、図１の誤り訂正復号器は、集合ＵＣ（Ｐ）の各要素から各変数ノードへの外部値αｍｎの重み付けと、集合ＳＤ（Ｐ）の各要素からパリティ検査を満たさないチェックノードと繋がっている変数ノードへの外部値αｍｎの重み付けとのうちのいずれか一方のみを行ってもよいが、以降の説明では両方の重み付けを行うこととする。
【００３１】
また、前述のように、本実施形態では非正則ＬＤＰＣ符号の利用が想定されている。非正則ＬＤＰＣ符号は、列重み及び行重みが非一様である。一般に、列重みが小さい変数ノードほどビット誤りが発生しやすい。故に、本実施形態では、外部値αｍｎの重み付けにおいて、列重みに応じたビット誤りの発生傾向が考慮される。具体的には、本実施形態では、列重みｗｃ（ｎ）の値毎に個別の外部値重みを外部値αｍｎに適用する。一例として、チェックノードＰ３から列重みが小さい（信頼度の低い）変数ノードＶ１に送られる外部値α３１にはより大きな外部値重み（＞１）が乗算されるが、同じチェックノードＰ３から列重みが大きい（信頼度の高い）変数ノードＶ６に送られる外部値α３６にはより小さな外部値重み（＞１）が乗算される。
【００３２】
具体的には、尤度制御部１０６は、次の数式（８）に従って、集合ＵＣ（Ｐ）の各要素から各変数ノードへの外部値αｍｎの重み付けを行うことができる。  
【数８】
2012060450.tif 000010
【００３３】
尚、数式（８）における各外部値重みＷｕ１，Ｗｕ２及びＷｕ３は、次の条件式（９）を満たす。  
【数９】
2012060450.tif 000011
【００３４】
尚、数式（８）及び条件式（９）は、列重みｗｃ（ｎ）が３種類の場合を例示しているが、列重みｗｃ（ｎ）が２種類または４種類以上である場合に一般化できる。列重みｗｃ（ｎ）の種類によらず、列重みの値ｉの降順に応じて、対応する外部値重みＷｕｉは等しい値になるか、或いは、より大きな値になる。即ち、列重みの値ｉの降順に応じて、対応する外部値重みＷｕｉはより小さな値にならない。また、列重みｗｃ（ｎ）の種類によらず、外部値重みの最大値Ｗｕｉ＿ｍｉｎは外部値重みの最小値Ｗｕｉ＿ｍａｘよりも大きい（即ち、外部値重みの最大値Ｗｕｉ＿ｍｉｎは外部値重みの最小値Ｗｕｉ＿ｍａｘと等しくない）。ここで、ｉ＿ｍａｘは列重みの最大値を示し、ｉ＿ｍｉｎは列重みの最小値を示す。このような外部値重みＷｕｉを用いた重み付けによって、集合ＵＣ（Ｐ）の各要素から各変数ノードへの外部値αｍｎの絶対値が列重みの値ｉに応じて適切に拡大される。
【００３５】
また、尤度制御部１０６は、次の数式（１０）に従って、集合ＳＤ（Ｐ）の各要素からパリティ検査を満たさないチェックノードと繋がっている変数ノードへの外部値αｍｎの重み付けを行うことができる。  
【数１０】
2012060450.tif 000012
【００３６】
尚、数式（１０）における各外部値重みＷｓ１，Ｗｓ２及びＷｓ３は、次の条件式（１１）を満たす。  
【数１１】
2012060450.tif 000013
【００３７】
尚、数式（１０）及び条件式（１１）は、列重みｗｃ（ｎ）が３種類の場合を例示しているが、列重みｗｃ（ｎ）が２種類または４種類以上である場合に一般化できる。列重みｗｃ（ｎ）の種類によらず、列重みの値ｉの降順に応じて、対応する外部値重みＷｓｉは等しい値になるか、或いは、より小さな値になる。即ち、列重みの値ｉの降順に応じて、対応する外部値重みＷｓｉはより大きな値にならない。また、列重みｗｃ（ｎ）の種類によらず、外部値重みの最大値Ｗｓｉ＿ｍａｘは外部値重みの最小値Ｗｓｉ＿ｍｉｎよりも大きい（即ち、外部値重みの最大値Ｗｓｉ＿ｍａｘは外部値重みの最小値Ｗｓｉ＿ｍｉｎと等しくない）。このような外部値重みＷｓｉを用いた重み付けによって、集合ＳＤ（Ｐ）の各要素からパリティ検査を満たさないチェックノードと繋がっている変数ノードへの外部値αｍｎの絶対値が列重みの値ｉに応じて適切に縮小される。
【００３８】
また、尤度制御部１０６は、前述の数式（８）の代わりに次の数式（１２）に従って、集合ＵＣ（Ｐ）の各要素から各変数ノードへの外部値αｍｎの重み付けを行うこともできる。  
【数１２】
2012060450.tif 000014
【００３９】
尚、数式（１２）における各外部値重み｜Ｖｕ１｜，｜Ｖｕ２｜及び｜Ｖｕ３｜は、次の条件式（１３）を満たす。  
【数１３】
2012060450.tif 000015
【００４０】
尚、数式（１２）及び条件式（１３）は、列重みｗｃ（ｎ）が３種類の場合を例示しているが、列重みｗｃ（ｎ）が２種類または４種類以上である場合に一般化できる。列重みｗｃ（ｎ）の種類によらず、列重みの値ｉの降順に応じて、対応する外部値重み｜Ｖｕｉ｜は等しい値になるか、或いは、より大きな値になる。即ち、列重みの値ｉの降順に応じて、対応する外部値重み｜Ｖｕｉ｜はより小さな値にならない。また、列重みｗｃ（ｎ）の種類によらず、外部値重みの最大値｜Ｖｕｉ＿ｍｉｎ｜は外部値重みの最小値｜Ｖｕｉ＿ｍａｘ｜よりも大きい（即ち、外部値重みの最大値｜Ｖｕｉ＿ｍｉｎ｜は外部値重みの最小値｜Ｖｕｉ＿ｍａｘ｜と等しくない）。このような外部値重み｜Ｖｕｉ｜を用いた重み付けによって、集合ＵＣ（Ｐ）の各要素から各変数ノードへの外部値αｍｎの絶対値が列重みの値ｉに応じて適切に拡大される。
【００４１】
更に、尤度制御部１０６は、数式（８）に示される１より大きい重み係数の乗算による重み付けと、数式（１２）に示される絶対値の加算による重み付けとを組み合わせた重み付けを行ってもよい。
【００４２】
また、尤度制御部１０６は、前述の数式（１０）の代わりに次の数式（１４）に従って、集合ＳＤ（Ｐ）の各要素からパリティ検査を満たさないチェックノードと繋がっている変数ノードへの外部値αｍｎの重み付けを行うこともできる。  
【数１４】
2012060450.tif 000016
【００４３】
尚、数式（１４）における各外部値重み（−｜Ｖｓ１｜），（−｜Ｖｓ２｜）及び（−｜Ｖｓ３｜）は、次の条件式（１５）を満たす。  
【数１５】
2012060450.tif 000017
【００４４】
尚、数式（１４）及び条件式（１５）は、列重みｗｃ（ｎ）が３種類の場合を例示しているが、列重みｗｃ（ｎ）が２種類または４種類以上である場合に一般化できる。列重みｗｃ（ｎ）の種類によらず、列重みの値ｉの降順に応じて、対応する外部値重み（−｜Ｖｓｉ｜）は等しい値になるか、或いは、より小さな値になる。即ち、列重みの値ｉの降順に応じて、対応する外部値重み（−｜Ｖｓｉ｜）はより大きな値にならない。また、列重みｗｃ（ｎ）の種類によらず、外部値重みの最大値（−｜Ｖｓｉ＿ｍａｘ｜）は外部値重みの最小値（−｜Ｖｓｉ＿ｍｉｎ｜）よりも大きい（即ち、外部値重みの最大値（−｜Ｖｓｉ＿ｍａｘ｜）は外部値重みの最小値（−｜Ｖｓｉ＿ｍｉｎ｜）と等しくない）。このような外部値重み（−｜Ｖｓｉ｜）を用いた重み付けによって、集合ＳＤ（Ｐ）の各要素からパリティ検査を満たさないチェックノードと繋がっている変数ノードへの外部値αｍｎの絶対値が列重みの値ｉに応じて適切に縮小される。
【００４５】
更に、尤度制御部１０６は、数式（１０）に示される１より小さい重み係数の乗算による重み付けと、数式（１４）に示される絶対値の減算（絶対値の符号反転値の加算）による重み付けとを組み合わせた重み付けを行ってもよい。
【００４６】
以上のように、列重みが小さい変数ノードほどビット誤りが発生しやすいという傾向を考慮して、列重みの値ｉ毎に個別の外部値重み（Ｗｕｉ、Ｗｓｉ、｜Ｖｕｉ｜、（−｜Ｖｓｉ｜）など）を設定して外部値αｍｎを重み付けすることにより、例えば図４に示される状況において誤り訂正能力を効果的に向上させることができる。
【００４７】
以下、図５を用いて、図１の誤り訂正復号器の動作の一例を説明する。図５の処理は、前段の信号処理部によって得られた尤度Ｆｎが入力尤度保持部１０１に入力されると開始し、ステップＳ２０１に遷移する。この処理は、符号語（誤り訂正復号結果）が得られる（復号成功）か、繰り返し復号の実施回数Ｌが最大繰り返し回数Ｌmaxに達しても符号語が得られない（復号失敗）ならば終了し、次の処理対象に関する尤度Ｆｎが入力保持部１０１に入力される。
【００４８】
ステップＳ２０１において、行処理部１０２は、前述のように、入力尤度保持部１０１からの入力尤度Ｆｎと、検査行列保持部１０５からの検査行列Ｈの情報と、列処理部１０３からの（最新の）事前尤度βｍｎとを用いて外部値αｍｎを生成する。尚、ステップＳ２０１の処理が実行される毎に、行処理部１０２は繰り返し復号の実施回数Ｌをカウントしてもよい。次に、パリティ検査部１０４は、前述のように、検査行列保持部１０４からの検査行列Ｈの情報と、行処理部１０２からの外部値αｍｎとに基づいて一時推定語を生成し、生成した一時推定語が検査行列Ｈによって定義される符号語であるか否かを検査する（ステップＳ２０２）。一時推定語が符号語であれば処理は終了（復号成功）し、そうでなければ処理はステップＳ２０３に進む。
【００４９】
ステップＳ２０３において、尤度制御部１０６は、繰り返し復号の実施回数Ｌが所定の最大繰り返し回数Ｌmaxに達しているか否かを判定する。繰り返し復号の実施回数Ｌが所定の最大繰り返し回数Ｌmaxに達していれば処理は終了（復号失敗）し、そうでなければ処理はステップＳ２０４に進む。ステップＳ２０４において、尤度制御部１０６は、繰り返し復号の実施回数Ｌが所定の繰り返し回数Ｌｉｎ以下であるか否かを判定する。尚、Ｌｉｎ＜Ｌmaxである。繰り返し復号の実施回数Ｌが所定の繰り返し回数Ｌｉｎ以下であれば処理はステップＳ２０５に進み、そうでなければ処理はステップＳ２０６に進む。ステップＳ２０６において、尤度制御部１０６は、パリティ検査を満たさないチェックノードの総数ＵＣＮが所定の最大数ＵＣＮｍａｘより大きいか否かを判定する。パリティ検査を満たさないチェックノードの総数ＵＣＮが所定の最大数ＵＣＮｍａｘより大きければ処理はステップＳ２０５に進み、そうでなければ処理はステップＳ２０７に進む。
【００５０】
ステップＳ２０７では、尤度制御部１０６が前述のように外部値αｍｎに重み付けを行い、処理はステップＳ２０５に進む。ステップＳ２０５では、列処理部１０３が検査行列保持部１０５からの検査行列Ｈの情報と、尤度制御部１０６からの（ステップＳ２０７を経由する場合には重み付けされた）外部値αｍｎとを用いて事前尤度βｍｎを計算し、処理はステップＳ２０１に戻る。
【００５１】
尚、図５の例では、尤度制御部１０６が重み付け（ステップＳ２０７）を行うか否かの分岐条件として、繰り返し復号の実施回数Ｌが所定の繰り返し回数Ｌｉｎを超えているという第１の条件（ステップＳ２０４）及びパリティ検査を満たさないチェックノードの総数ＵＣＮが所定の最大数ＵＣＮｍａｘ以下であるという第２の条件（ステップＳ２０６）の両方の組み合わせが採用されている。しかしながら、第１の条件及び第２の条件のいずれか一方のみによって尤度制御部１０６が重み付け（ステップＳ２０７）を行うか否かを分岐させる設計も可能である。第１の条件のみを利用する変形例を図６に示し、第２の条件のみを利用する変形例を図７に示す。第１の条件及び第２の条件の少なくとも一方を利用すれば、外部値αｍｎの重み付けによる誤り訂正能力の向上が期待できる状況（例えば、図４の状況）を絞り込むことが可能となる。例えば、外部値αｍｎの重み付けを伴わない通常の繰り返し復号を十分に行ってから外部値の重み付けを行うことによって、誤り訂正能力の向上が期待できる。また、パリティ検査を満たさないチェックノードの総数ＵＣＮが十分に少なくなってから外部値の重み付けを行うことによって、誤り訂正能力の向上が期待できる。
【００５２】
以上説明したように、第１の実施形態に係る誤り訂正復号器は、所定の条件を満たす場合（例えば、繰り返し復号を十分に実施した場合）に、列重みの値毎に個別の外部値重みを設定して外部値を重み付けする。従って、本実施形態に係る誤り訂正復号器によれば、繰り返し復号を十分に実施したにも関わらず符号語が得られない場合に、列重みが小さい変数ノードほどビット誤りが発生しやすいという傾向を利用して誤り訂正能力を効果的に向上させることができる。
【００５３】
（第２の実施形態）  
第２の実施形態に係る記憶装置は、前述の第１の実施形態に係る誤り訂正復号器の応用例である。本実施形態に係る記憶装置は、典型的には、フラッシュメモリなどの不揮発性メモリと、これを制御するメモリコントローラとを含むメモリカードである。
【００５４】
図８のメモリカード３０３は、不揮発性メモリである半導体メモリ部３０５と、半導体メモリ部３０５を制御するメモリコントローラ３０２とを有する。メモリカード３０３は、ホスト３０４（例えば、パーソナルコンピュータ、デジタルカメラ、携帯電話機など）とリムーバブルに接続し、ホスト３０４との間でデータを送受信する。例えば、ホスト３０４はメモリカード３０３からデータを読み出したり、メモリカード３０３にデータを書き込んだりすることができる。
【００５５】
メモリコントローラ３０２は、ＲＯＭ（Read Only Memory）３０７、ＣＰＵ（Central Processing Unit）コア３０８、ＲＡＭ（Random Access Memory）３０９、ホストＩ／Ｆ（インタフェース）３１０、誤り訂正部３１１及びメモリＩ／Ｆ３１２を含む。メモリコントローラ３０２の各要素は、バス３０６によって互いに接続されている。
【００５６】
ＣＰＵコア３０８は、ホストＩ／Ｆ３１０を介してホスト３０４との間でデータを送受信したり、メモリＩ／Ｆ３１２を介して半導体メモリ部３０５との間でデータを送受信したりする。即ち、ＣＰＵコア３０８は、半導体メモリ部３０５からデータを受ける読み出し部として機能したり、半導体メモリ部３０５にデータを送る書き込み処理部として機能したりする。また、ＣＰＵコア３０８上で実行されるＦＷ（Firm Ware）は、書き換え回数の制限を含む半導体メモリ部３０５のアドレス管理を実現する。更に、ＦＷは、ホスト３０４からのコマンド入力に応じたメモリカード３０３全体の制御も実現する。
【００５７】
ＲＯＭ３０７には、メモリカード３０３の制御プログラムなどが記憶されている。ＲＡＭ３０９には、アドレス管理において必要となるアドレス変換テーブル、異常回路の情報などが記憶される。
【００５８】
誤り訂正部３１１は、復号器３０１と符号化器３１３とを含む。復号器３０１には、第１の実施形態に係る誤り訂正復号器が組み込まれる。復号器３０１は、半導体メモリ部３０５から読み出されたデータの誤り訂正復号を行う。一方、符号化器３１３は、半導体メモリ３０５に書き込まれるデータに誤り訂正符号を付加する。
【００５９】
以上説明したように、第２の実施形態に係る記憶装置は、メモリコントローラに前述の第１の実施形態に係る誤り訂正復号器を組み込んでいる。従って、本実施形態に係る記憶装置によれば、読み出されたデータに対して優れた誤り訂正能力を発揮できる。
【００６０】
（第３の実施形態）  
第３の実施形態に係る受信機は、前述の第１の実施形態に係る誤り訂正復号器の応用例である。本実施形態に係る受信機は、図９に示されるように、アンテナ３２０、周波数変換器３２１、Ａ／Ｄ（アナログ／デジタル）変換器３２２、復調器３２３及び復号器３２４を有する。図９の受信機は、符号化及び変調された信号を受信し、復調及び復号することにより受信データを復元する。図９の受信機は、典型的には、（セルラ、無線ＬＡＮ（Local Area Network）などをサポートする）無線受信機、放送波受信機などである。また、図９には示されていないが、低雑音増幅器、フィルタなどを含むことも可能である。
【００６１】
アンテナ３２０は、高周波の無線信号を受信する。周波数変換器３２１は、アンテナ３２０からの受信信号をダウンコンバートする（中間周波数信号に変換する）。Ａ／Ｄ変換器３２２は、周波数変換器３２１からの中間周波数信号をアナログドメインからデジタルドメインに変換する。復調器３２３は、送信側の変調方式に対応する復調方式に従って、Ａ／Ｄ変換器３２２からのデジタル信号を復調する。
【００６２】
復号器３２４には、前述の第１の実施形態に係る誤り訂正復号器が組み込まれる。復号器３２４は、送信側の符号化方式に対応する復号方式に従って、復調器３２３からの復調データに誤り訂正復号を含む復号化処理を行い、受信データを復元する。
【００６３】
以上説明したように、第３の実施形態に係る受信機は、復号器に前述の第１の実施形態に係る誤り訂正復号器を組み込んでいる。従って、本実施形態に係る受信機によれば、受信データに対して優れた誤り訂正能力を発揮できる。尚、図９の要素群と図示しない送信機のための要素群とを組み合わせて送受信機を構成することも可能である。
【００６４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００６５】
例えば、上記各実施形態の処理を実現するプログラムを、コンピュータで読み取り可能な記憶媒体に格納して提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなど、プログラムを記憶でき、かつ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
【００６６】
また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【符号の説明】
【００６７】
１０１・・・入力尤度保持部
１０２・・・行処理部
１０３・・・列処理部
１０４・・・パリティ検査部
１０５・・・検査行列保持部
１０６・・・尤度制御部
３０１・・・復号器
３０２・・・メモリコントローラ
３０３・・・メモリカード
３０４・・・ホスト
３０５・・・半導体メモリ部
３０６・・・バス
３０７・・・ＲＯＭ
３０８・・・ＣＰＵコア
３０９・・・ＲＡＭ
３１０・・・ホストＩ／Ｆ
３１１・・・誤り訂正部
３１２・・・メモリＩ／Ｆ
３１３・・・符号化器
３２０・・・アンテナ
３２１・・・周波数変換器
３２２・・・Ａ／Ｄ変換器
３２３・・・復調器
３２４・・・復号器
【図１】
2012060450.tif 000018
【図２】
2012060450.tif 000019
【図３】
2012060450.tif 000020
【図４】
2012060450.tif 000021
【図５】
2012060450.tif 000022
【図６】
2012060450.tif 000023
【図７】
2012060450.tif 000024
【図８】
2012060450.tif 000025
【図９】
2012060450.tif 000026