(57)【要約】【課題】処理速度の速いメモリシステムおよびメモリシステムの制御方法を提供する。【解決手段】複数のセクタデータからなるフレームデータを記憶するメモリカード１０と、メモリカード１０とフレームデータを送受信するホスト２とを有し、メモリカード１０が、セクタデータ単位で、硬判定符号によるＢＣＨ復号処理を行うＥＣＣ１デコーダ３０と、フレームデータ単位でＬＤＰＣ符号によるＬＤＰＣ復号処理を行うＥＣＣ２デコーダ４０と、ＢＣＨ復号処理における誤りデータ有無の情報を記憶するセクタエラーフラグ部４４と、セクタエラーフラグ部４４の情報に基づき、ＬＤＰＣ復号処理における誤りデータの無いセクタデータの信頼度を増加する制御を行うＥＣＣ制御部２１と、を具備する。【選択図】図１０
2011065599.tif 000002
【特許請求の範囲】
【請求項１】
複数のセクタデータからなるフレームデータが符号化された符号化フレームデータを記憶する記憶装置と、前記記憶装置と前記フレームデータを送受信するホストと、を有するメモリシステムであって、
前記記憶装置が、
セクタデータ単位で、硬判定符号による硬判定符号復号処理を行う第１のＥＣＣデコーダと、
フレームデータ単位でＬＤＰＣ符号によるＬＤＰＣ復号処理を行う第２のＥＣＣデコーダと、
それぞれのセクタ毎に、前記硬判定符号復号処理における誤りデータ有無の情報を記憶するセクタエラーフラグを設定するセクタエラーフラグ部と、
前記セクタエラーフラグ部の情報に基づき、前記ＬＤＰＣ復号処理において誤りデータの無いセクタデータの信頼度を増加する制御を行うＥＣＣ制御部と、を具備することを特徴とするメモリシステム。
【請求項２】
前記ＥＣＣ制御部が、全ての前記セクタデータを用いてイタレーション処理を行う第１のＬＤＰＣ復号処理と、前記セクタエラーフラグが設定されていないセクタデータを用いないでイタレーション処理を行う第２のＬＤＰＣ復号処理と、のいずれかを選択し、前記ＬＤＰＣ復号処理を行うことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記ＥＣＣ制御部が、前記イタレーション処理毎に新たに訂正したエラービット数をカウントし、その計測結果に基づいて、前記選択をすることを特徴とする請求項３に記載のメモリシステム。
【請求項４】
前記ＥＣＣ制御部が、前記ＬＤＰＣ復号処理において、符号が変化したビットデータがあるセクタデータに対して、前記硬判定符号を用いて誤り訂正処理を行い、誤りが訂正されたセクタデータの前記セクタエラーフラグを解除することを特徴とする請求項４に記載のメモリシステム。
【請求項５】
フレームデータを構成する複数のセクタデータの、それぞれのＣＲＣパリティを生成し付与するＣＲＣ符号化工程と、
それぞれの前記セクタデータの硬判定符号パリティを生成し付与する硬判定符号化工程と、
前記ＣＲＣパリティおよび前記硬判定符号パリティを含む前記フレームデータのＬＤＰＣパリティを生成し符号化フレームデータを生成するＬＤＰＣ符号化工程と、
前記符号化フレームデータをＮＡＮＤメモリ部に記憶する記憶工程と、
前記ＮＡＮＤメモリ部から前記符号化フレームデータを読み出す読み出し工程と、
前記符号化フレームデータを構成する複数のセクタデータの、それぞれの前記ＣＲＣパリティから、それぞれの前記セクタデータの誤りの有無を検出するＣＲＣ誤り検出工程と、
前記符号化フレームデータを構成する複数のセクタデータの、それぞれの前記硬判定符号パリティを用いて誤り訂正を行う硬判定符号復号工程と、
前記ＣＲＣ誤り検出工程または前記硬判定符号復号工程で誤りがあることが確認された前記セクタデータを識別するためにセクタエラーフラグを設定するセクタエラーフラグ設定工程と、
前記符号化フレームデータを前記ＬＤＰＣパリティにより復号処理するときに、前記セクタエラーフラグが設定されていないセクタデータの信頼度を増加するＬＬＲ変更工程と、を具備することを特徴とするメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムおよびメモリシステムの制御方法に関し、特に代数系の誤り訂正符号と確率に基づく反復計算による誤り訂正符号とを使用した誤り訂正部を具備するメモリシステムおよび前記メモリシステムの制御方法に関する。
【背景技術】
【０００２】
半導体メモリ分野では誤り訂正符号に関する開発が盛んに行われている。その誤り訂正符号の中で、確率に基づく反復計算による誤り訂正符号である低密度パリティ検査符号(Low Density Parity Check codes、以下、「ＬＤＰＣ符号」という。）が、近年、特に注目されている。ＬＤＰＣ符号は符号性能の理論的限界であるシャノン限界に迫る優れた性能が報告されている。
【０００３】
従来から広く実用化されているＢＣＨ符号やリードソロモン（ＲＳ）符号といった硬判定符号を用いる代数系の誤り訂正方式は、訂正できるビット誤り率を高くするためには、パリティ部の増大または訂正回路の増大といった問題点が伴うものの、所定数以下の誤りであれば確実に訂正可能なことが数学的に証明されている。
【０００４】
これに対して、確率に基づく反復計算による誤り訂正方式であるＬＤＰＣ符号は、その訂正能力自体を明確に定義することが難しく、ビット誤りが、それ程多く無い場合でも誤り訂正ができないことがまれにある。
【０００５】
このため、ＬＤＰＣ符号とＢＣＨ符号とを併用した連接符号を用いた誤り訂正方式が知られている。例えば、電波法（昭和二十五年法律第百三十一号）第三十八条の規定に基づく、標準テレビジョン放送等のうちデジタル放送に関する送信の標準方式、別表第三十九号 高度狭帯域伝送デジタル放送の誤り訂正方式（第４９条第３項関係）には、外符号としてＢＣＨ符号を、内符号としてＬＤＰＣ符号を用いた連接符号を用いた誤り訂正方式が定められている。
【０００６】
しかし、ＬＤＰＣ符号の復号処理は後述のようにイタレーション処理を繰り返すことによって行われるために多くの回数のイタレーション処理を行うことがある。この場合には復号処理時間が長くなり、復号処理に要する消費電力も増加する。
【０００７】
また、ＬＤＰＣ符号を用いる誤り検出訂正（以下、「ＥＣＣ」という。）回路においては、符号長を長くすると、それに比例して処理時間が長くなるとともに、イタレーション処理回路だけでなくパリティチェック回路も増大する。
【０００８】
ここで、特開２００８−２１９５２８号公報には、信頼度が所定値を超えたデータのイタレーション処理を省くＥＣＣ回路が提案されている。しかし、このＥＣＣ回路では、演算をパラレル処理するためには、ビットノード信頼度の閾値判定回路が複数個必要であるために、回路規模が増大する。例えば、２５６×２５６サイズの単位行列によるレギュラー型パリティ検査行列を使った方式では、２５６個の演算ユニットにおいて２５６個のビットノードの演算を並列処理するためには、全演算ユニットのそれぞれに閾値判定回路（例えばマグニチュードコンパレータ）が必要になる。このため、著しく回路規模が増大する。
【０００９】
更に、前記ＥＣＣ回路ではイタレーション処理回数が所定の最大イタレーション回数を超えて誤り訂正が収束しないと分かった時点で、信頼度がしきい値を超えたデータも含めてイタレーション処理を再度、実行する。このため、例えば最大イタレーション回数が８ならば８回のイタレーション処理終了後に、再度、イタレーション処理を実行するため、処理速度が遅くなることがあった。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−２１９５２８号公報
【非特許文献】
【００１１】
【非特許文献１】電波法（昭和二十五年法律第百三十一号）第三十八条の規定に基づく標準テレビジョン放送等のうちデジタル放送に関する送信の標準方式、別表第三十九号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、処理速度の速いメモリシステムおよびメモリシステムの制御方法を実現することを目的とする。
【課題を解決するための手段】
【００１３】
本願発明の一態様のメモリシステムは、複数のセクタデータからなるフレームデータが符号化された符号化フレームデータを記憶する記憶装置と、記憶装置とフレームデータを送受信するホストと、を有するメモリシステムであって、記憶装置が、セクタデータ単位で、硬判定符号による硬判定符号復号処理を行う第１のＥＣＣデコーダと、フレームデータ単位でＬＤＰＣ符号によるＬＤＰＣ復号処理を行う第２のＥＣＣデコーダと、それぞれのセクタ毎に、硬判定符号復号処理における誤りデータ有無の情報を記憶するセクタエラーフラグを設定するセクタエラーフラグ部と、セクタエラーフラグ部の情報に基づき、ＬＤＰＣ復号処理において誤りデータの無いセクタデータの信頼度を増加する制御を行うＥＣＣ制御部と、を具備する。
【００１４】
また本願発明の別の一態様のメモリシステムの制御方法は、フレームデータを構成する複数のセクタデータの、それぞれのＣＲＣパリティを生成し付与するＣＲＣ符号化工程と、それぞれのセクタデータの硬判定符号パリティを生成し付与する硬判定符号化工程と、ＣＲＣパリティおよび硬判定符号パリティを含むフレームデータのＬＤＰＣパリティを生成し符号化フレームデータを生成するＬＤＰＣ符号化工程と、符号化フレームデータをＮＡＮＤメモリ部に記憶する記憶工程と、ＮＡＮＤメモリ部から符号化フレームデータを読み出す読み出し工程と、符号化フレームデータを構成する複数のセクタデータの、それぞれのＣＲＣパリティから、それぞれのセクタデータの誤りの有無を検出するＣＲＣ誤り検出工程と、符号化フレームデータを構成する複数のセクタデータの、それぞれの硬判定符号パリティを用いて誤り訂正を行う硬判定符号復号工程と、ＣＲＣ誤り検出工程または硬判定符号復号工程で誤りがあることが確認されたセクタデータを識別するためにセクタエラーフラグを設定するセクタエラーフラグ設定工程と、符号化フレームデータをＬＤＰＣパリティにより復号処理するときに、セクタエラーフラグが設定されていないセクタデータの信頼度を増加するＬＬＲ変更工程と、を具備する。
【発明の効果】
【００１５】
本発明によれば、処理速度の速いメモリシステムおよびメモリシステムの制御方法することができる。
【図面の簡単な説明】
【００１６】
【図１】ＬＤＰＣ符号における反復復号について説明するための図である。
【図２】タナーグラフＧの一部を示している図である。
【図３】対数尤度比を説明するための説明図である。
【図４】データ階層構造とＥＣＣ１、ＥＣＣ２の誤り検出／訂正範囲とを説明するための図である。
【図５】第１の実施の形態のメモリシステムの構成を示す構成図である。
【図６】第１の実施の形態のメモリシステムにおける符号化処理の流れを示すフローチャートである。
【図７】第１の実施の形態のメモリシステムにおける符号化処理のタイミングチャートである。
【図８】第１の実施の形態のメモリシステムのＥＣＣ１デコーダの処理の流れを示すフローチャートである。
【図９】第１の実施の形態のメモリシステムのＥＣＣ１デコーダのタイミングチャートである。
【図１０】第１の実施の形態のメモリシステムのＥＣＣ２デコーダの処理の流れを示すフローチャートである。
【図１１】第２の実施の形態のメモリシステムの構成を示す構成図である。
【図１２】第２の実施の形態のメモリシステムのＥＣＣ２デコーダの処理の流れを示すフローチャートである。
【図１３】第３の実施の形態のメモリシステムの構成を示す構成図である。
【図１４】第３の実施の形態のメモリシステムのＥＣＣ２デコーダの処理の流れを示すフローチャートである。
【図１５】第３の実施の形態のメモリシステムのＥＣＣ２デコーダのタイミングチャートである。
【図１６】第１変形例のメモリシステムのＥＣＣ２デコーダの処理の流れを示すフローチャートである。
【図１７】第２変形例のメモリシステムのＥＣＣ２デコーダの処理の流れを示すフローチャートである。
【図１８】第３変形例のメモリシステムのＥＣＣ２デコーダの処理の流れを示すフローチャートである。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明の実施の形態を説明する。  
＜ＬＤＰＣ符号について＞
最初に、図１および図２を用いて、ＬＤＰＣ符号における反復復号について簡単に説明する。図１はＬＤＰＣ符号における反復復号について説明するための図であり、図１（Ａ）は、パリティ検査行列Ｈの例を示しており、図１（Ｂ）は、パリティ検査行列Ｈに対応するタナーグラフＧであり、図２は、タナーグラフＧの一部を示している図である。
【００１８】
図１に示すように、ＬＤＰＣ符号における反復復号は、パリティ検査行列Ｈに対応する２部グラフであるタナーグラフを用いると分かりやすい。図１において、タナーグラフＧのノードは、変数ノードとチェックノードとの２種類に分類される。変数ノードは行列Ｈの列に対応し、チェックノードは行列Ｈの行に対応している。そして行列Ｈの要素の中で、「１」であるノード間をエッジで結ぶことによりタナーグラフＧが構成されている。
【００１９】
ＬＤＰＣ符号の復号処理はタナーグラフのエッジに割り当てられた対数尤度比情報をノードにおいて反復的に更新することで実行される。対数尤度比情報には、チェックノードから変数ノードへの対数尤度比情報（以下、記号「α」で表示する。）と、変数ノードからチェックノードへの対数尤度比情報（以下、「β」で表示する。）の２種類が存在する。ＬＤＰＣ符号の復号処理では、変数ノード処理（行処理）とチェックノード処理（列処理）とを１回ずつ実行した単位のことを１イタレーション処理（１ラウンド）と呼び、復号処理はイタレーション処理を繰り返すことで行われる。
【００２０】
変数ノードおよびチェックノードにおける対数尤度比情報更新アルゴリズム、すなわち、メッセージ伝達アルゴリズムについては、Sum-Productアルゴリズム、Min-Sumアルゴリズム等の方法が知られている。ここでは対数尤度比情報更新アルゴリズムとして、比較的計算量の少ないMin-Sumアルゴリズムについて説明する。
【００２１】
最初に、図２（Ａ）および図２（Ｂ）を用いて、変数ノード処理について説明する。図２（Ａ）および図２（Ｂ）は、図１（Ｂ）のタナーグラフにおいて、変数ノード３に関係する部分を抜き出した図である。
【００２２】
ある変数ノード、例えば変数ノード３、に対応する符号語ビットの受信ときの対数尤度比（Log Likelihood Ratio  ：  以下、「ＬＬＲ」といい、記号「λ」で表示する。）、をλ（３）とし、この変数ノード３へのチェックノードからの対数尤度比情報を、α（ｊ、３）とする。ここで、ｊは変数ノード３に接続しているチェックノード番号を示し、図１（Ｂ）に示したタナーグラフＧでは「１」および「２」に該当する。
【００２３】
ここで、図３を用いて、対数尤度比（ＬＬＲ）について説明する。図３に示すように、数直線上で、ビット「０」に対応するマッピング点を、「Ｄ」とし、ビット「１」に対応するマッピング点を、「−Ｄ」としたときに、受信データの位置が、「Ｘ」であったとする。このときの、対数尤度比λは以下の式を用いて計算される。
λ＝−（Ｄ−Ｘ）２＋（−Ｄ−Ｘ）２
【００２４】
ただし、対数尤度比λの絶対値には、上限値、Ｍｘ、を設ける。すなわち、もし｜λ｜＞＝Ｍｘならば、｜λ｜＝Ｍｘ、へクリッピング処理を行う。
【００２５】
ここで、対数尤度比λの絶対値｜λ｜を信頼度といい、信頼度が、Ｍｘ、に近いほど信頼性が高く、反対に、信頼度が０に近いほど信頼性が低いことを意味する。
【００２６】
そして、変数ノード３は、α（１、３）に対応するエッジのチェックノードすなわち、チェックノード１に対して、以下の（式１）で表される計算を行う。
β（３、１）＝  λ（３）＋α（２、３）    ・・・（式１）
【００２７】
同様に、ノード番号ｊのチェックノードに対して、以下の（式２）で表される計算を行う。
β（３、ｊ）＝  λ（３）＋Σα（ｋ、３）    ・・・（式２）
ここで、Σは変数ノード３に接続しているチェックノードの中で、ｋ＝ｊ以外の総和を意味する。
【００２８】
以上の計算を全ての変数ノードに対して行い、以下の（式３）で表されるβ（i、ｊ）を計算する。なお、ここで、符号長をＮ、ノード番号を、iとすると、i＝１〜Ｎである。また、Σは変数ノードiに接続しているチェックノードの中で、k＝ｊ以外の総和を意味する。
β（i、ｊ）＝  λ（i）＋Σα（ｋ、i）    ・・・（式３）
【００２９】
次に、図２（Ｃ）および図２（Ｄ）を用いて、チェックノード処理について説明する。図２（Ｃ）および図２（Ｄ）は、図１（Ｂ）のタナーグラフにおいて、チェックノード１に関係する部分を抜き出した図である。  
【００３０】
あるチェックノード、例えばチェックノード１、へのメッセージである対数尤度比情報を、β（ｋ、１）としたとき、このチェックノードはβ（１、１）に対応するエッジの変数ノードである変数ノード１に対して以下の（式４）で表されるα（１、１）を計算する。
α（１、１）＝ｓｉｇｎ（Πβ（ｍ、１））×ｍｉｎ（｜β（ｍ、１）｜）    ・・・（式４）
【００３１】
ただし、ｋはこのチェックノード１に接続されている変数ノード番号であり図１（Ｂ）の例では、「１」、「２」、「３」である。そして、ｍは「２」から「３」の中から選択される。ここで、ｓｉｇｎ（Πβ（ｍ、１））は、β（ｍ、１）を、ｍ＝２から３、まで乗算した結果の符合（「＋１」あるいは「−１」）を意味する。また、｜β（ｍ、１）｜は、β（ｍ、１）の絶対値であり、ｍｉｎは複数の｜β（ｍ、１）｜の中から最小値を選択する関数である。
【００３２】
同様にして、α（１、i）についても、以下の（式５）を使って算出する。
α（１、i）＝ｓｉｇｎ（Πβ（ｍ、１））×ｍｉｎ｛｜β（ｍ、１）｜｝    ・・・（式５）
ただし、ｉはチェックノード１に接続している変数ノード番号であり、図１（Ｂ）のタナーグラフの例では、「１」、「２」、「３」である。また、ｍはチェックノード１に接続した変数ノードの中で、ｍ＝i、以外とする。
【００３３】
以上の計算を全てのチェックノードに対して行い、α（ｊ、i）を以下の（式６）を使って計算する。
α（ｊ、i）＝ｓｉｇｎ（Πβ（ｍ、ｊ））×ｍｉｎ（｜β（ｍ、ｊ）｜）    ・・・（式６）
ただし、ｍはチェックノードｊに接続した変数ノードの中で、ｍ＝i、以外とする。
【００３４】
そして、反復復号では、以上に示した変数ノード処理とチェックノード処理とを１回ずつ実行した１イタレーション処理毎に、以下の（式７）によって、事後確率Ｐｂ（ｉ）を求める。
Ｐｂ（ｉ）＝λ（i）＋Σα（ｋ、i）    ・・・（式７）
ここで、i＝１〜Ｎであり、Ｎは符号長である。そして、Σは変数ノードiに接続された全ての和である。
【００３５】
この事後確率値Ｐｂを基にビット判定、すなわち、当該ビットが、「０」または「１」のいずれであるかが判定される。そして、この硬判定結果を使用して、ＬＤＰＣ符号のパリティチェックを行い、誤り無いことが確認された時点で反復処理を終了する。以上が、ＬＤＰＣ符号の反復復号方法である。
【００３６】
＜第１の実施の形態＞
次に、本発明の第１の実施の形態のメモリシステム１およびメモリシステム１の制御方法について説明する。
【００３７】
図４に示すように、本実施の形態のメモリシステム１では、データを記憶するときに、ＬＤＰＣのフレームデータ（クラスタ）をサブフレームデータ（セクタ）に分割し、セクタ単位ででＢＣＨ／ＣＲＣ方式（ＥＣＣ１）により符号化し、更にクラスタ単位でＬＤＰＣ方式（ＥＣＣ２）により符号化する。フレームデータは、例えば、セクタ０〜セクタ７の８個の５１２Ｂのセクタに分割され、それぞれのセクタにＣＲＣパリティとＢＣＨパリティとが付され、更にフレームデータにＬＤＰＣパリティが付される。
【００３８】
ＥＣＣ１のＣＲＣパリティ生成では５１２Ｂのセクタデータに対して生成多項式で符号化を行うことで４ＢのＣＲＣパリティを生成する。ＥＣＣ１のＢＣＨパリティ生成では（５１２Ｂのセクタデータ＋ＣＲＣパリティ）の５１６Bに対して３ビット訂正可能な符号化を行う場合には、５ＢのＢＣＨパリティを生成する。
【００３９】
ＥＣＣ２のＬＤＰＣパリティ生成では、（８セクタのセクタデータ＋ＣＲＣパリティ）に対してＬＤＰＣ方式で符号化を行い、３２０ＢのＬＤＰＣパリティを生成する。図４においてＢ１はＣＲＣパリティによる誤り検出範囲を示し、Ｂ２はＢＣＨパリティによる誤り検出訂正範囲を示し、Ｂ３はＬＤＰＣパリティによる誤り検出範囲を示している。なお図４に示した例では、ＢＣＨパリティを含まずに符号化しているが、含んで符号化してもよい。
【００４０】
そしてメモリシステム１では、符号化データを読み出して復号するときには、セクタ単位でＢＣＨ／ＣＲＣにより誤り検出訂正処理（ＥＣＣ１）を実行し、クラスタ単位でＬＤＰＣによる誤り検出訂正処理（ＥＣＣ２）を実行する。そして、ＥＣＣ２のとき、ＥＣＣ１で誤りが無かったセクタの信頼度を増加、特には信頼度を最大値に設定するとともに、そのセクタのイタレーション処理をスキップする。
【００４１】
次に、図５を用いてメモリシステム１の構成について説明する。図５に示すようにメモリシステム１はパソコンまたはデジタルカメラ等のホスト２と、ホスト２と着脱可能に接続される記憶装置であるメモリカード１０とを有する。ホスト２は、バス４を介して接続された不図示の各種の機能部をＣＰＵ３が制御することにより、メモリカード１０とデータの送受信を行う。
【００４２】
なお、メモリシステムとしてはホストとホストの内部に収納されホストの起動データ等を記憶する、いわゆるエンベデッドタイプの記憶装置とを有するものであってもよく、記憶装置は半導体ディスク：ＳＳＤ(Solid State Drive)等の形態であってもよい。あるいはメモリカード１０に相当する記憶装置とホストが一体化して、携帯音楽プレーヤとして機能するメモリシステムであってもよい。
【００４３】
図５に示すように、記憶装置であるメモリカード１０は、ＮＡＮＤメモリ部１５と、メモリコントローラ５０とを有する。ＮＡＮＤメモリ部１５はフラッシュメモリ部であり、単位セルである多数のメモリセルが、書き込みに用いるビット線および読み出しに用いるワード線等で接続された構成を有する。
【００４４】
そして、メモリコントローラ５０は、バス１３を介して接続された、ＣＰＵ１１とインターフェイス１２と誤り検出訂正部（ＥＣＣ部）２０とを有する。ＣＰＵ１１は、バス１３を介して接続された不図示の各種の機能部等を制御することによりインターフェイス１２を介してホスト２とデータの送受信を行うと同時に、ＮＡＮＤメモリ部１５ともデータの送受信を行う。
【００４５】
ＥＣＣ部２０は、ＥＣＣ制御部２１の制御により、後述する符号化処理および復号処理に加えて、インターフェイス２２を介してバス１３と、インターフェイス２４を介してＮＡＮＤメモリ部１５と、データの送受信を行う。
【００４６】
図５に示すように、ＥＣＣ部２０は、エンコーダ２５と、ＥＣＣ１デコーダ（第１のＥＣＣデコーダ）３０と、ＥＣＣ２デコーダ（第２のＥＣＣデコーダ）４０とバッファ２３とを有する。エンコーダ２５は、代数系の誤り訂正方式のＥＣＣ１エンコーダ（第１のＥＣＣエンコーダ）２６と、確率に基づく反復計算による誤り訂正方式のＥＣＣ２エンコーダ（第２のＥＣＣエンコーダ）２７とを有する。ＥＣＣ１デコーダ３０は、ＣＲＣシンドローム算出回路３１と、ＢＣＨデコーダ３２とを有する。ＥＣＣ２デコーダ４０は、ＬＤＰＣイタレーション処理回路４１と、中間値メモリであるバッファ４２と、ＬＬＲを算出しＬｎを記憶するＬＬＲ算出記憶部４３と、セクタエラーフラグを設定し記憶するセクタエラーフラグ（ＥＦ）部４４と、データメモリであるバッファ４７と、ＣＲＣシンドローム算出回路４５と、パリティチェック回路４６と、を有する。
【００４７】
次に図６および図７を用いてシステム１の符号化処理について詳細に説明する。以下、図６のフローチャートに従い説明する。図７において、「ｕｋ」はリセット前の不定状態を、「all０」はバッファがリセットされた状態を、「Ｖａｌｉｄ（有効）」は処理が完了し出力結果が有効となった状態を意味する。
【００４８】
＜ステップＳ１０＞
ホスト２のＣＰＵ３はインターフェイス１２、２２を介して、データバッファであるバッファ２３にＮＡＮＤメモリ部１５に記憶するフレームデータをセクタ単位で書き込む。すなわち、ＥＣＣ２０にフレームデータが入力され、８個のセクタデータに分割される。
【００４９】
＜ステップＳ１１＞
セクタ番号Ｋが初期化される。
【００５０】
＜ステップＳ１２＞
ＥＣＣ１エンコーダ２６により、セクタＫのＣＲＣパリティが生成される。なお、ＥＣＣ１エンコーダ２６のＣＲＣパリティ生成および  ＥＣＣ１デコーダ３０のＣＲＣシンドローム算出回路３１はメモリシステム１の必須の構成要素ではない。
【００５１】
＜ステップＳ１３＞
ＥＣＣ１エンコーダ２６により、セクタＫのＢＣＨパリティが生成される。
【００５２】
＜ステップＳ１４、Ｓ１５＞
８個のセクタ全てのパリティが生成されるまでＥＣＣ１エンコーダ２６による符号化処理が行われる。
【００５３】
＜ステップＳ１６＞
ＥＣＣ２エンコーダ２７により、フレームデータのＬＤＰＣパリティが生成される。なお、後述するように、ＥＣＣ１エンコーダ２６の処理とＥＣＣ２エンコーダ２７との処理は並列して行われる。
【００５４】
＜ステップＳ１７＞
ＥＣＣ制御部２１はバッファ２３に記憶されているデータをエンコーダ２５で計算したパリティとともにインターフェイス２４に転送し、ＮＡＮＤメモリ部１５にデータを書き込む。
【００５５】
ここで、図７のタイミングチャートに示すように、ＥＣＣ１エンコーダ２６のエンコード処理とＥＣＣ２エンコーダ２７のエンコード処理とは並列処理で実行される。ＥＣＣ２エンコーダ２７で例えばセクタ０のエンコードを実行する場合、最初にセクタ０のデータ（５１２Ｂ）をＥＣＣ２エンコーダ２７に入力した後にＣＲＣパリティ（４Ｂ）を入力するが、必要に応じてＣＲＣパリティが有効になるまで、エンコード処理を一時的に停止する。（８セクタ分のデータ＋ＣＲＣパリティ）をＥＣＣ２エンコーダ２７が入力された後に、ＥＣＣ２エンコーダ２７のパリティ計算は終了する。
【００５６】
次に図８、図９および図１０を用いて、メモリシステム１の復号処理について詳細に説明する。最初に、図８のフローチャートに従いＥＣＣ１デコーダ３０による復号処理について説明する。
【００５７】
＜ステップＳ２０＞
ＥＣＣ制御部２１は、ＮＡＮＤメモリ部１５に記憶されていた符号化フレームデータを、インターフェイス２４を介して読み出し、８個のセクタに分割してバッファ２３に記憶する。
【００５８】
＜ステップＳ２１＞
フレーム番号Ｋ、およびセクタエラーフラグ（ＥＦ（１）〜ＥＦ（７））が初期化される。
【００５９】
＜ステップＳ２２＞
ＥＣＣ１デコーダ３０のＣＲＣシンドローム算出回路３１およびＢＣＨデコーダ３２がＣＲＣおよびＢＣＨのシンドロームを計算して誤りの有無をチェックする。すなわち、ＢＣＨ符号の代数的な復号では、復号結果として誤り位置多項式が出力される。誤り位置多項式により、誤りが存在するかどうかのみ、言い換えれば誤りの有無が検出される。そして、誤り位置多項式を解くことで、ＢＣＨ符号中の誤りビット位置まで特定でき、誤り訂正をすることができる。なお誤りが無い場合には、出力されるシンドロームは「０」となる。
【００６０】
＜ステップＳ２３、２４＞
ＥＣＣ１デコーダ３０は誤りを検出した場合（Ｓ２３：Ｙｅｓ）には、Ｓ２４において、ＢＣＨデコーダ３２によるセクタ単位の誤り訂正処理を行う。誤りが無い場合（Ｓ２３：Ｎｏ）には、次のセクタの処理に移行する。
【００６１】
＜ステップＳ２５＞
ＥＣＣ１デコーダ３０はＢＣＨデコーダ３２による誤り訂正に成功した場合（Ｙｅｓ）には、次のセクタの処理に移行する。
【００６２】
＜ステップＳ２６＞
ＥＣＣ１デコーダ３０はＢＣＨデコーダ３２による誤り訂正に失敗した場合（Ｎｏ）には、次のセクタの処理に移行する。そしてＥＣＣ１デコーダ３０では誤りの訂正できなかったセクタ（エラーセクタ）に対応する、セクタエラーフラグ（ＥＦ（Ｋ））設定し記憶するＥＦ部４４に「１」をセットする。
【００６３】
＜ステップＳ２７、Ｓ２８＞
ＥＣＣ１デコーダ３０は、８セクタ（Ｋ＝０〜７）の誤り検出訂正処理が完了するまで、Ｓ１０からの処理を繰り返す。
【００６４】
＜ステップＳ２９＞
ＥＣＣ制御部２１は、８セクタの誤り検出訂正処理が終了した段階で、８セクタのエラーフラグが全て「０」の場合（Ｙｅｓ）には、デコード処理を完了し、ホスト２のＣＰＵ３に通知する。ＣＰＵ３はこれを受けて、バッファ２３からＮＡＮＤリードデータをリードし、例えばメインメモリに転送する。８セクタのエラーフラグでひとつでも「１」がセットされていた場合（Ｎｏ）には、（Ｉ）のＥＣＣ２デコーダ４０のＬＤＰＣによる誤り訂正処理を実行する。
【００６５】
なお、図９のタイミングチャートに示すように、ＣＲＣシンドローム算出回路３１、ＢＣＨデコーダ３２、およびＥＣＣ２デコーダ４０による復号処理はタイミングを調整しながら並行して行われる。
【００６６】
次に、図１０のフローチャートに従い、ＥＣＣ２デコーダ４０による復号処理について説明する。
【００６７】
＜ステップＳ４０＞
ＥＣＣ２デコーダ４０における復号処理では最初に最大イタレーション回数ＭＩｔｒが設定されるとともに、イタレーション回数を示すパラメータ、Ｉｔｒが、「０」に設定される。最大イタレーション回数は毎回、設定する必要は無く、あらかじめ設定された値を用いてもよい。また最大イタレーション回数は、例えば５０回、のように回数で定めてもよいし、時間、例えば、１／９０秒のように時間で制限しても良い。
【００６８】
＜ステップＳ４１＞
ＥＣＣ２デコーダ４０は、フレームデータから各ビットのオリジナルの対数尤度比ＬＬＲを生成する。
【００６９】
＜ステップＳ４２＞
ＥＣＣ制御部２１はＥＦ部４４に記憶されているエラーフラグを確認する。セクタＫのエラーフラグ：ＥＦ（Ｋ）が「０」の場合、すなわちセクタＫに誤りが無い場合には、オリジナルの尤度比にかかわらず、そのセクタデータの信頼度を増加、例えば、対数事後確率比Ｌｎを最大値となるように更新する。
【００７０】
＜ステップＳ４３＞
ＥＣＣ制御部２１は、ＥＣＣ２デコーダ４０により全てのセクタデータを用いて１回目のイタレーション処理を行う。
【００７１】
＜ステップＳ４４＞
ＥＣＣ２デコーダ４０は、パリティチェックを行うと同時に、Ｉｔｒの値を「１」増やす演算である１インクリメントを行う。
【００７２】
＜ステップＳ４５、Ｓ４６＞
パリティチェックがＯＫの場合（Ｙｅｓ）には、ステップＳ４６においてデコード処理を完了し、ホスト２のＣＰＵ３に通知する。ＣＰＵ３はこれを受けて、バッファ２３からＮＡＮＤリードデータをリードし、例えばメインメモリに転送する。
【００７３】
＜ステップＳ４７＞  
ＥＣＣ２デコーダ４０は、イタレーション処理回数（ラウンド回数）、Ｉｔｒの値をチェックする。
【００７４】
＜ステップＳ４８＞  
ＥＣＣ２デコーダ４０は、イタレーション処理回数、Ｉｔｒの値が、最大イタレーション回数ＭＩｔｒより大きい場合（Ｎｏ）には、これ以上のイタレーション処理を行わないでデコード処理を完了し、復号処理不可能であったことを、ホスト２のＣＰＵ３に通知する。
【００７５】
＜ステップＳ４９＞  
ＥＣＣ２デコーダ４０は、イタレーション処理回数、Ｉｔｒの値が、最大イタレーション回数ＭＩｔｒより小さい場合（Ｓ４８：Ｙｅｓ）には、ＬＬＲを更新する。
【００７６】
＜ステップＳ５０＞  
ＥＣＣ２デコーダ４０は、２回目のイタレーション処理では、ＥＦ＝０のセクタデータ、すなわち誤りの無いセクタデータを除いてイタレーション処理を行う。言い換えれば、ＥＦ＝０のセクタデータのＬｎ算出をスキップする。具体的にはＬｎ算出のために必要な事後確率β算出（列処理）と、β算出で使う外部情報αの算出（行処理）をスキップする。すなわち、エラーフラグがセットされていないＥＦ＝０のセクタデータの行処理／列処理をスキップする。
ＥＣＣ２デコーダ４０は、Ｓ４４からの処理を繰り返し行う。
【００７７】
上記の説明のように、メモリシステム１の制御方法は、全てのセクタデータを用いてイタレーション処理を行う第１のＬＤＰＣ復号工程と、セクタエラーフラグが設定されていないセクタデータを用いないでイタレーション処理を行う第２のＬＤＰＣ復号工程と、第１のＬＤＰＣ復号工程と第２のＬＤＰＣ復号工程とのいずれかを選択するＬＤＰＣ処理選択工程と、を具備する。
【００７８】
本実施の形態のメモリシステム１およびメモリシステム１の制御方法では、例えば、８セクタ中４セクタで誤りが無ければ、１ラウンドにおける行処理／列処理時間は略半分となる処理速度の速いメモリシステムおよびメモリシステムの制御方法である。
【００７９】
なお、本実施の形態のメモリシステム１が有するメモリカード１０（ＮＡＮＤメモリを有する半導体記憶装置）、メモリコントローラ５０、または誤り訂正部（誤り訂正回路）２０が、他の部材と組み合わされて使用された場合にも本実施の形態のメモリシステム１と同じ効果を有することは明らかである。すなわち前記の各構成要素は、それぞれが本発明の効果を有する。
【００８０】
＜第２の実施の形態＞
次に、本発明の第２の実施の形態のメモリシステム１Ｂおよびメモリシステム１Ｂの制御方法について説明する。本実施の形態のメモリシステム１Ｂおよびメモリシステム１Ｂの制御方法は第１の実施の形態のメモリシステム１およびメモリシステム１の制御方法と類似しているため、同じ構成要素には同じ符号を付し説明は省略する。
【００８１】
図１１に示すように、本実施の形態のメモリシステム１Ｂのメモリカード１０Ｂのメモリコントローラ５０ＢのＥＣＣ２０のＥＣＣ２デコーダ４０Ｂは、訂正ビット数計測機能を有する訂正ビット数カウンタ４８を有する。訂正ビット数カウンタ４８は、イタレーション処理終了毎に、そのイタレーション処理（ラウンド）で誤りが訂正された訂正ビット数を計測する。そして、メモリコントローラ５０Ｂでは、訂正ビット数カウンタ４８の計測結果に基づいて、誤り訂正ビット数が所定値以上増えずに訂正処理が滞っていることを検知したら、行処理／列処理（イタレーション処理）の対象外にしていた誤りの無いセクタデータも対象にして全てセクタデータを用いて次のラウンド処理を実行する。
【００８２】
以下、図１２のフローチャートに従い説明する。図１２のステップＳ６０〜ステップＳ６９は、すでに説明した図１０のステップＳ４０〜ステップＳ４９と同じであるので説明は省略する。
【００８３】
＜ステップＳ７０＞
訂正ビット数カウンタ４８は、誤り訂正ビット数を計測する。すなわち前回のイタレーション処理完了時の誤りビット数と、今回のイタレーション処理完了時の誤りビット数との差から、今回のイタレーション処理により訂正できた誤りビット数を計測する。
【００８４】
＜ステップＳ７１＞
誤り訂正ビット数が余り増えていない場合、例えば所定値Ｎビット以下の場合（Ｎｏ）には訂正処理が滞っていることを意味する。そして、この場合には、このままイタレーション処理を繰り返しても復号処理が完了するまでには長時間を要する可能性が高い。これに対して誤り訂正ビット数が所定値Ｎビットを超える場合（Ｙｅｓ）には、ＥＣＣ制御部２１はステップＳ６３からのイタレーション処理を繰り返し実行する。
【００８５】
＜ステップＳ７２＞
ＥＣＣ制御部２１は誤り訂正ビット数が所定値Ｎビット以下の場合には、全てセクタデータを用いて次のラウンド処理を実行する。これは、ＬＤＰＣ復号処理においては、信頼度の高いデータのα、βを信頼度の低いデータにメッセージとして伝播させることで誤りデータの信頼性を上げて誤り訂正を行う性質を備えるため、信頼度の高いセクタデータ全てをメッセージ伝播ループから外してしまうと、誤ったデータどうしのループ内で処理が閉塞し、誤り訂正処理が収束しない場合があるためである。
その後、ステップＳ６４からの処理を継続する。
【００８６】
なお、回路規模を削減する目的で、訂正ビット数カウンタ４８を使わずに、ラウンド終了時に誤りを含まないセクタの増加を検知する手段を設置してもよい。1セクタ内の誤りビット数が少ない場合には、この実装方法であっても訂正ビット数カウンタ４８を使った場合と同等の効果が得られる。
【００８７】
以上の説明のように本実施の形態のメモリシステム１Ｂの制御方法は、全てのセクタデータを用いてイタレーション処理を行う第１のＬＤＰＣ復号工程と、セクタエラーフラグが設定されていないセクタデータを用いないでイタレーション処理を行う第２のＬＤＰＣ復号工程と、第１のＬＤＰＣ復号工程と第２のＬＤＰＣ復号工程とのいずれかを選択するＬＤＰＣ処理選択工程を具備し、復号処理選択工程が、イタレーション処理毎に訂正したエラービット数をカウントする訂正ビット計測部の計測結果に基づいて選択をする。
【００８８】
本実施の形態のメモリシステム１Ｂは、訂正処理が滞っている場合には、一時的に処理負荷は増大するが、Ｌｎが最大値に設定されたセクタデータも処理に用いることにより、誤り訂正処理の効率を上げることができる。このため、メモリシステム１Ｂおよびメモリシステム１Ｂの制御方法は第１の実施の形態のメモリシステム１およびメモリシステム１の制御方法が有する効果に加えて、回路規模が小さく、かつ、より処理速度が速い。
【００８９】
＜第３の実施の形態＞
次に、本発明の第３の実施の形態のメモリシステム１Ｃおよびメモリシステム１Ｃの制御方法について説明する。本実施の形態のメモリシステム１Ｃおよびメモリシステム１Ｃの制御方法は第１の実施の形態のメモリシステム１およびメモリシステム１の制御方法と類似しているため、同じ構成要素には同じ符号を付し説明は省略する。
【００９０】
図１３に示すように、本実施の形態のメモリシステム１Ｃのメモリカード１０Ｃのメモリコントローラ５０ＣのＥＣＣ２０のＥＣＣ２デコーダ４０Ｃは、検査行列を使って誤り訂正の終了をチェックしているパリティチェック回路４６を削除し、誤り訂正可否チェックをＣＲＣシンドローム算出回路４５で代行させている。なお、更にＣＲＣシンドローム算出回路４５を削除し、ＥＣＣデコーダ３０のＣＲＣシンドローム算出回路３１で代代行してもよい。
【００９１】
更に、ＥＣＣ２デコーダ４０Ｃでは、エラーセクタの中で符号が変わったデータがあることをＥＣＣ制御部２１に通知する機能を有するセクタモディファイフラグ（以下「モディファイフラグ（ＭＦ）」ともいう）４８を有する。セクタモディファイフラグ４９は符号が変わったデータ、すなわち「０」が「１」にまたは「１」が「０」に変わったデータがあるエラーセクタ（ＥＦ＝１）に対して「１」を設定する。
【００９２】
このため、ＥＣＣ２デコーダ４０Ｃは、ＥＣＣ２デコーダ４０のＬＤＰＣ復号処理と連動して、ＥＣＣ１デコーダ３０のＢＣＨデコーダ３２の誤り訂正処理を実行し、誤り訂正処理を加速している。以下、図１４のフローチャートに従い説明する。図１４のステップＳ８０〜ステップＳ８９は、すでに説明した図１０のステップＳ４０〜ステップＳ４９と同じであるので説明は省略する。
【００９３】
＜ステップＳ９０＞
ＥＣＣ制御部２１はセクタモディファイフラグ４９により、エラーセクタ（ＥＦ＝１）でかつセクタモディファイフラグ（ＭＦ）＝１のセクタに対してＢＣＨデコーダ３２による誤り訂正処理を再実行するように制御する。
【００９４】
複数のエラーセクタで同時にセクタモディファイフラグが１になっている場合は、所定のアルゴリズムで1個のエラーセクタを選択し、ＢＣＨデコーダ３２による誤り訂正処理を実行すればよい。
【００９５】
＜ステップＳ９０、Ｓ９１＞
ＢＣＨデコーダ３２による誤り訂正に成功した場合（Ｓ９１：Ｙｅｓ）には、ＥＣＣ２デコーダ４０の処理と不整合の起きないタイミングで（例えば１イタレーション処理終了時）に、誤り訂正できたセクタに関連する尤度比等のデータを更新し、当該セクタエラーフラグもクリアする。
【００９６】
ＢＣＨデコーダ３２による誤り訂正に失敗した場合（Ｓ９１：Ｎｏ）には、通常処理を繰り返す。
【００９７】
ここで、図１５のタイミングチャートを例にメモリシステム１Ｃの制御方法について更に説明する。図１５は、セクタ１およびセクタ３がＥＣＣ１デコーダ３０での誤り訂正に失敗したときの動作を表している。ＥＣＣ１デコーダ３０の処理終了後に、ＥＣＣ２デコーダ４０によるＬＤＰＣ復号処理を開始する。処理の初めに、ＮＡＮＤメモリ部１５からリードしたデータを対数尤度比に変換する。この際、誤りを含まないセクタ０、２、４〜７の信頼度を増加、例えばＬｎを最大にして変換を行う。最初のＬＤＰＣ復号処理のイタレーション処理（ラウンド１）では、８セクタ全てを対象に処理を実行する。図１５の例では、ラウンド１が終了したタイミングで、エラーセクタ１のモディファイフラグが「１」にセットされたため、ラウンド２においてセクタ１のＢＣＨデコーダ３２による復号処理を再実行している。そして、セクタ１のＢＣＨデコーダ３２の復号が成功したため、セクタ１の信頼度を最大値に更新し、セクタ１のエラーフラグをクリアし「０」にしている。そしてラウンド３の処理により、セクタ３の誤り訂正ができたため、復号処理が完了している。
【００９８】
なお、上記説明では、図１５に示すように、ＥＣＣ１デコーダ３０の処理終了後にＥＣＣ２デコーダ４０が処理を開始するＥＣＣ１−ＥＣＣ２逐次デコード処理方式のメモリシステム１Ｃを例にしたが、ＥＣＣ１−ＥＣＣ２並列デコード処理方式であってもよい。ＥＣＣ１−ＥＣＣ２並列デコード処理方式では、ＥＣＣ１デコーダ３０の処理とＥＣＣ２デコーダ４０とが復号処理を、ほぼ同時に開始する。そのとき、ＥＣＣ２デコーダ４０による１回目のイタレーション処理は全セクタをエラーセクタ（ＥＦ＝１）として処理を行う。ＥＣＣ１デコーダ３０の処理結果に応じて、ＥＣＣ２デコーダ４０の１回目のイタレーション処理終了後にセクタエラーフラグを設定／信頼度更新処理を行う。以降の処理はすでに説明した通りである。
【００９９】
ここで、ＥＣＣ１−ＥＣＣ２並列デコード処理方式の場合には、ＥＣＣ１−ＥＣＣ２並列デコード処理方式の場合に比べて、１セクタのデータサイズは小さくし、更にＥＣＣ１デコーダ３０（ＥＣＣ１エンコーダ２６）の訂正処理能力も低く設定することが好ましい。訂正処理能力も低くすることはパリティサイズを小さくすることであり、これにより符号化率の低下を回避でき、処理高速化および低消費電力化を図るためである。ＥＣＣ１−ＥＣＣ２並列デコード処理方式の場合には、例えば、１セクタを１２８Ｂ、４ビット訂正可能パリティとする。
【０１００】
上記説明のように、メモリシステム１Ｃの制御方法は、全てのセクタデータを用いてイタレーション処理を行う第１のＬＤＰＣ復号工程とセクタエラーフラグが設定されていないセクタデータを用いないでイタレーション処理を行う第２のＬＤＰＣ復号工程と、第１のＬＤＰＣ復号工程と第２のＬＤＰＣ復号工程とのいずれかを選択するＬＤＰＣ処理選択工程と、第１のＬＤＰＣ復号工程または第２のＬＤＰＣ復号工程において、符号が変化したビットデータがあるセクタデータを識別するためにセクタモディファイフラグを設定するセクタモディファイフラグ設定工程と、セクタモディファイフラグおよびセクタエラーフラグが設定されているセクタデータに対して、硬判定符号パリティを用いて誤り訂正を行う第２の硬判定符号復号工程と、第２の硬判定符号復号工程で誤りが訂正されたセクタデータのセクタエラーフラグを解除するセクタエラーフラグ解除工程と、を更に具備することを特徴とする。
【０１０１】
メモリシステム１Ｃは、ＢＣＨデコーダ３２が、ＥＣＣ２デコーダ４０の復号処理を補完する。このため、このため、メモリシステム１Ｃおよびメモリシステム１Ｃの制御方法は第１の実施の形態のメモリシステム１またはメモリシステム１の制御方法が有する効果に加えて、回路規模が小さく、かつ、より処理速度を加速することができる。
【０１０２】
＜第１の変形例＞
上記説明の本発明の実施の形態のメモリシステム１等およびメモリシステム１等の制御方法では、ＥＣＣ１デコーダ３０による処理で誤りの無かったセクタをスキップして、言い換えればセクタエラーフラグ（ＥＦ）＝０のセクタを除いてイタレーション処理を行っていた。
【０１０３】
これに対して、図１６に示すように、本変形のメモリシステムにおいては、セクタエラーフラグ（ＥＦ）＝０のセクタのＬｎを最大値に設定し、全てのセクタを用いてイタレーション処理を行う。
【０１０４】
本変形のメモリシステムは、信頼度の高いデータを常に用いてＬＤＰＣ復号処理を行うため、高速処理が可能である。
【０１０５】
＜第２の変形例＞
上記説明の本発明の第３の実施の形態のメモリシステム１Ｃおよびメモリシステム１Ｃの制御方法では、ＥＣＣ１デコーダ３０による処理で誤りの無かったセクタをスキップして、言い換えればセクタエラーフラグ（ＥＦ）＝０のセクタを除いてイタレーション処理を行っていた。
【０１０６】
これに対して、図１７に示すように、本変形のメモリシステムにおいては、セクタエラーフラグ（ＥＦ）＝０のセクタの信頼度を増加、例えば、Ｌｎを最大値に設定し、全てのセクタを用いてイタレーション処理を行う。
【０１０７】
すなわち、本変形のメモリシステムは、複数のセクタデータからなるフレームデータを符号化した符号化フレームデータを記憶する記憶装置であるメモリカードと、前記記憶装置と前記フレームデータを送受信するホストと、を有するメモリシステムであって、前記記憶装置が、セクタデータ単位で、硬判定符号による硬判定符号化処理を行う第１のＥＣＣエンコーダと、フレームデータ単位でＬＤＰＣ符号によるＬＤＰＣ符号化処理を行う第２のＥＣＣエンコーダと、硬判定符号復号処理を行う第１のＥＣＣデコーダと、フレームデータ単位でＬＤＰＣ符号によるＬＤＰＣ復号処理を行う第２のＥＣＣデコーダと、それぞれのセクタ毎に、前記硬判定符号復号処理における誤りデータ有無の識別情報を記憶するセクタエラーフラグ部と、前記セクタエラーフラグ部の情報に基づき、前記ＬＤＰＣ復号処理における誤りデータの無いセクタデータの信頼度を増加する制御を行うＥＣＣ制御部と、を具備することを特徴とする。
【０１０８】
また、本変形のメモリシステムの制御方法は、フレームデータを構成する複数のセクタデータの、それぞれのＣＲＣパリティを生成し付与するＣＲＣ符号化工程と、それぞれの前記セクタデータの硬判定符号パリティを生成し付与する硬判定符号化工程と、前記ＣＲＣパリティおよび前記硬判定符号パリティを含む前記フレームデータのＬＤＰＣパリティを生成し符号化フレームデータを生成するＬＤＰＣ符号化工程と、前記符号化フレームデータをＮＡＮＤメモリ部に記憶する記憶工程と、前記ＮＡＮＤメモリ部から前記符号化フレームデータを読み出す読み出し工程と、前記符号化フレームデータを構成する複数のセクタデータの、それぞれの前記ＣＲＣパリティから、それぞれの前記セクタデータの誤りの有無を検出するＣＲＣ誤り検出工程と、前記ＣＲＣ誤り検出工程で誤りが検出された前記セクタデータを、前記硬判定符号パリティを用いて誤り訂正を行う硬判定符号復号工程と、前記ＣＲＣ誤り検出工程または前記硬判定符号復号工程で誤りがあることが確認された前記セクタデータを識別するためにセクタエラーフラグを設定するセクタエラーフラグ設定工程と、前記符号化フレームデータを前記ＬＤＰＣパリティにより復号処理するときに、前記セクタエラーフラグが設定されていないセクタデータの信頼度を増加するＬＬＲ変更工程と、を具備する。
【０１０９】
本変形のメモリシステムおよび本変形のメモリシステムの制御方法は、信頼度の高いデータを常に用いてＬＤＰＣ復号処理を行うため、高速処理が可能である。
【０１１０】
＜第３の変形例＞
上記説明の本発明の実施の形態のメモリシステム１等およびメモリシステム１等の制御方法では、ＥＣＣ１デコーダ３０による処理で誤りの無かったセクタをスキップして、言い換えればセクタエラーフラグ（ＥＦ）＝０のセクタを除いてイタレーション処理を行っていた。
【０１１１】
これに対して、図１８に示すように、本変形のメモリシステムにおいては、ラウンド回数（イタレーション回数：Ｉｔｒ）が奇数の場合には、全てのセクタを用いてイタレーション処理を行う。
【０１１２】
本変形のメモリシステムは、２回のイタレーション処理のうち、１回は信頼度の高いデータを用いてＬＤＰＣ復号処理を行うため、高速処理が可能である。
【０１１３】
なお、全てのセクタを用いる替わりに、エラーセクタ（ＥＦ＝１）とエラーセクタ（ＥＦ＝１）接する誤りの無いセクタ（ＥＦ＝０）とを用いたりしてもよいし、例えば３回のイタレーション処理のうち１回は信頼度の高いデータを用いてＬＤＰＣ復号処理を行ったりしても良い。
【０１１４】
上記のように、本発明は、上述した実施の形態、変形例に限定されるものでは無く、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。例えば、硬判定符号としてＢＣＨ符号に替えてＲＳ符号を用いてもよい。また上述した実施の形態、変形例を適宜、組み合わせても良く、例えば第１の実施の形態のメモリシステム１に、第３の変形例の制御方法を組み合わせたり、ＥＣＣ１−ＥＣＣ２並列デコード処理方式を用いたりしてもよい。
【符号の説明】
【０１１５】
１…メモリシステム
２…ホスト
３…ＣＰＵ
４…バス
１０…メモリカード
１２…インターフェイス
１３…バス
１５…ＮＡＮＤメモリ部
２０…ＥＣＣ部
２１…ＥＣＣ制御部
２２…インターフェイス
２３…バッファ
２４…インターフェイス
２５…エンコーダ
２６…ＥＣＣ１エンコーダ
２７…ＥＣＣ２エンコーダ
３０…ＥＣＣ１デコーダ
３１…シンドローム算出回路
３２…ＢＣＨデコーダ
４０…ＥＣＣ２デコーダ
４１…イタレーション処理回路
４２…バッファ
４３…ＬＬＲ算出記憶部
４４…セクタエラーフラグ部
４５…シンドローム算出回路
４６…パリティチェック回路
４７…バッファ
４８…訂正ビット数カウンタ
４９…セクタモディファイフラグ
５０…メモリコントローラ
【図１】
2011065599.tif 000003
【図２】
2011065599.tif 000004
【図３】
2011065599.tif 000005
【図４】
2011065599.tif 000006
【図５】
2011065599.tif 000007
【図６】
2011065599.tif 000008
【図７】
2011065599.tif 000009
【図８】
2011065599.tif 000010
【図９】
2011065599.tif 000011
【図１０】
2011065599.tif 000012
【図１１】
2011065599.tif 000013
【図１２】
2011065599.tif 000014
【図１３】
2011065599.tif 000015
【図１４】
2011065599.tif 000016
【図１５】
2011065599.tif 000017
【図１６】
2011065599.tif 000018
【図１７】
2011065599.tif 000019
【図１８】
2011065599.tif 000020