(57)【要約】【課題】本発明は、書き込みエラーの発生率が高くなった場合であっても誤りを検出し訂正することが可能な不揮発性半導体記憶システムを提供する。【解決手段】メモリセルアレイ１は、複数ビットデータを記憶可能なメモリセルを複数のビット線及び複数のワード線に沿ってマトリクス状に配置されて構成される。  ワード線制御回路６により、ワード線に印加される電圧が複数の閾値分布間の複数ビットデータ読み出し電圧に設定されてメモリセルに格納された複数ビットデータが読み出される。第１誤り訂正回路は、冗長データを用いてデータ誤り検出及び訂正を実行する。一方、複数の閾値分布の各々の上限と下限との間の複数の電圧にワード線電圧を設定し、メモリセルに格納された複数ビットデータの確かさを示す軟値が生成され、第２の誤り訂正回路１０３においてこの軟値を用いた誤り訂正がなされる。【選択図】図４
2008016092.tif 000002
【特許請求の範囲】
【請求項１】
閾値電圧の差により複数ビットを記憶することが可能なメモリセルが複数のビット線及び複数のワード線に沿ってマトリクス状に配置されて構成されたメモリセルアレイと、
前記ビット線の各々に接続され前記ビット線を制御するビット線制御回路と、
前記複数ビットのデータを表現する複数の閾値分布のうちの１つの上限より大きくその閾値分布より上の閾値電圧を有する他の閾値分布の下限より小さい大きさを有する複数ビットデータ読み出し電圧をワード線電圧として前記ワード線に印加する制御を行うと共に、前記複数の閾値分布の各々の上限より小さく下限より大きい閾値電圧を有し複数通りの軟値を生成する軟値読み出し電圧をワード線電圧として前記ワード線に印加する制御を行うワード線制御回路と、
前記軟値読み出し電圧に前記ワード線電圧が設定されることにより生成される軟値に基づいて前記メモリセルに格納された複数ビットのデータの尤度を計算する尤度計算回路とを備えることを特徴とする不揮発性半導体記憶システム。
【請求項２】
前記複数ビットのデータに対し前記尤度に基づいてデータ誤り訂正を実行する誤り訂正回路を有することを特徴とする請求項１記載の不揮発性半導体記憶システム。
【請求項３】
前記誤り訂正回路は、前記軟値の読み出しを行っている間、並行して前記複数ビットのデータと冗長データによる誤り検出及び誤り訂正を実行可能に構成されていることを特徴とする請求項２記載の不揮発性半導体記憶システム。
【請求項４】
前記誤り訂正回路は、前記複数のメモリセルの持つ複数ビットのデータと冗長データに基づく誤り訂正を実行可能に構成され、これが失敗したと判定される場合に前記複数ビットのデータ及び前記冗長データに加え前記軟値を用いて計算された尤度に基づく誤り訂正を開始するように構成されたことを特徴とする請求項２記載の不揮発性半導体記憶システム。
【請求項５】
前記軟値を用いて計算した尤度に基づく誤り訂正が失敗したと判定される場合、前記軟値読み出し電圧の数を増加させて改めて前記軟値を取得して前記尤度計算回路による尤度を計算するように構成されたことを特徴とする請求項１記載の不揮発性半導体記憶システム。
【請求項６】
最初に前記閾値分布の各々の中間付近の値を有する第１電圧に前記軟値読み出し電圧を設定して第１軟値を生成し、続いて前記第１電圧と前記閾値分布の上限又は下限との間の値を有する第２電圧に前記軟値読み出し電圧を設定して第２軟値を生成し、これら第１軟値及び第２軟値に基づいて前記尤度を前記尤度計算回路により計算するように構成され、
前記第１軟値及び前記第２軟値は、
前記第１電圧及び前記第２電圧を高い方から低い方へ段階的に下げていき、ある第１電圧及び第２電圧が設定された場合において読み出されるデータの状態に基づき、これより１段階低い第１電圧及び第２電圧が設定された場合において読み出されるデータを反転させることにより生成されることを特徴とする請求項１記載の不揮発性半導体記憶システム。
【請求項７】
前記軟値を用いて計算した尤度に基づく誤り訂正が失敗したと判定される場合、前記第２電圧の数を増加させて新たに前記軟値を取得して前記尤度計算回路による尤度を計算するように構成されたことを特徴とする請求項６記載の不揮発性半導体記憶システム。  
【請求項８】
前記軟値読み出し電圧は、時間経過に従って変化するように設定されることを特徴とする請求項１記載の不揮発性半導体記憶システム。
【請求項９】
時間経過に伴うメモリセルの閾値電圧の変化を抑えるためメモリセルのデータの書き直しを実行するデータリフレッシュ回路を更に備えたことを特徴とする請求項１記載の不揮発性半導体記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶システムに関し、特に、１つのメモリセルに２ビット以上のデータ（複数ビットデータ）を記憶可能な不揮発性半導体記憶装置を備えた不揮発性半導体記憶システムに関する。
【背景技術】
【０００２】
不揮発性半導体記憶装置の一つとして、ＮＡＮＤセル型フラッシュメモリが知られている。このＮＡＮＤセル型フラッシュメモリは、複数のＮＡＮＤセルユニットから構成されるメモリセルアレイを有する。各ＮＡＮＤセルユニットは、直列接続される複数のメモリセルと、その両端に接続される２つの選択トランジスタとから構成される。メモリセルは、消去状態においては、閾値電圧が負の“１”データを保持している。データ書き込み時には、フローティングゲートに電子が注入され閾値電圧が正である“０”データに書き換えられる。ＮＡＮＤセル型フラッシュメモリは、書き込み時には閾値電圧を低い方から高い方へ移動させることのみが可能であり、逆の移動（閾値電圧の高い方から低い方）はブロック単位での消去動作によってのみ行うことができる。
【０００３】
近年、メモリ容量の増加を目的として、１つのメモリセルに２ビット以上の情報を記憶するいわゆる多値（ｎ値：ｎ≧３）ＮＡＮＤセル型フラッシュメモリの開発が進んでいる。一例として４値ＮＡＮＤセル型ＥＥＰＲＯＭでは、メモリセルに４値（２ビット）のデータ（“００”，“０１”，“１０”，“１１”）を記憶できる。
【０００４】
多値ＮＡＮＤセル型フラッシュメモリでは、選択されたメモリセルに接続される１本のビット線に対応して、複数個のラッチ回路が設けられる（例えば、特許文献１参照）。即ち、選択されたメモリセルに対して、ｎ値（ｎ≧３）データを書き込んだり又は読み出したりする場合に、複数個のラッチ回路は、ｎ値データを一時的に記憶する役割を果たす。例えば、４値ＮＡＮＤセル型フラッシュメモリでは、書き込み時又は読み出し時に、４値（２ビット）データを一時的に記憶しておくために、選択されたメモリセルに接続される１本のビット線に対応して、２個のラッチ回路が設けられる。
【０００５】
しかし、このような多値記憶方式は、メモリセルの微細化と共に、メモリセルアレイにおける不良ビットの発生率を飛躍的に増加させており、不揮発性メモリチップの歩留まりを低下させる原因となっている。こうした状況に鑑み、メモリセルのデータの信頼性を保証するため、誤り訂正符号（ＥＣＣ）を用いた誤り訂正回路を組み込んだメモリも提案されている（例えば、特許文献２参照）。
【０００６】
しかし、ｎ値記憶方式のフラッシュメモリでは、ｎ個の閾値電圧分布を設定する必要があり、２値（１ビット）記憶の場合に比べ、閾値電圧分布間の距離、即ちデータマージンが小さくなる。ｎが大きくなるほどデータマージンが小さくなり（場合によっては分布が重なりマージンが無くなり）、それだけ書き込みエラーが大きくなる可能性が高くなる。書き込みエラーの発生率が高くなると、従来のＥＣＣ回路では対応が困難になる。
【特許文献１】特開２００５−６３５１６号公報
【特許文献２】特開２００２−２５１８８４号公報（段落００２６〜００３０他）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、書き込みエラーの発生率が高くなった場合であっても誤りを検出し訂正することが可能な不揮発性半導体記憶システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一の態様に係る不揮発性半導体記憶システムは、閾値電圧の差により複数ビットを記憶することが可能なメモリセルが複数のビット線及び複数のワード線に沿ってマトリクス状に配置されて構成されたメモリセルアレイと、前記ビット線の各々に接続され前記ビット線を制御するビット線制御回路と、前記複数ビットのデータを表現する複数の閾値分布のうちの１つの上限より大きくその閾値分布より上の閾値電圧を有する他の閾値分布の下限より小さい大きさを有する複数ビットデータ読み出し電圧をワード線電圧として前記ワード線に印加する制御を行うと共に、前記複数の閾値分布の各々の上限より小さく下限より大きい閾値電圧を有し複数通りの軟値を生成する軟値読み出し電圧をワード線電圧として前記ワード線に印加する制御を行うワード線制御回路と、前記軟値読み出し電圧に前記ワード線電圧が設定されることにより生成される軟値に基づいて前記メモリセルに格納された複数ビットのデータの尤度を計算する尤度計算回路とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、書き込みエラーの発生率が高くなった場合であっても誤りを検出し訂正することが可能な不揮発性半導体記憶システムを提供することが可能になる。
【発明を実施するための最良の形態】
【００１０】
次に、本発明の実施の形態を、４値ＮＡＮＤセル型フラッシュメモリを備えたシステムを例として、図面を参照して詳細に説明する。
【００１１】
［基本原理］
４値ＮＡＮＤセル型フラッシュメモリは、１つのメモリセルにおける閾値電圧が、４通りの分布を持ち得るように構成されている。図１は、４値ＮＡＮＤセル型フラッシュメモリのメモリセルに記憶される２ビットの４値データ（データ“１１”、“１０”、“０１”、“００”）とメモリセルの閾値電圧（Ｖｔｈ）の分布を示している。なお、図１において、ＶＡ、ＶＢ、ＶＣは４つのデータを読み出す場合に選択ワード線に印加される電圧（複数ビットデータ読み出し電圧）であり、ＶＡｖ、ＶＢｖ、ＶＣｖは書き込み動作の完了を確認するためのベリファイ電圧を示している。
【００１２】
ブロック消去後のメモリセルは、データ“１１”とされており、負の閾値電圧Ｖｔｈを有する。また、書き込み状態のデータ“０１”、“１０”、“００”のメモリセルは、正の閾値電圧Ｖｔｈを有する。また、書き込み状態のうち、データ“０１”が最も閾値電圧が低く、データ“００”が最も閾値電圧が高く、データ“１０”は、データ“０１”とデータ“００”の中間の閾値電圧を有する。
【００１３】
１つのメモリセルの２ビットデータは、下位（Lower）ページデータと上位（upper）ページデータからなり、下位ページデータと上位ページデータは別々の書き込み動作、つまり、２回の書き込み動作により、メモリセルに書き込まれる。データ“＊＠”と標記するとき、＊は上位ページデータを、＠は下位ページデータを表している。
【００１４】
まず、下位ページデータの書き込みを、図２を参照して説明する。全てのメモリセルは、消去状態、即ち、データ“１１”であるものとする。図２に示すように、下位ページデータの書き込みを行うと、メモリセルの閾値電圧Ｖｔｈの分布は、下位ページデータの値（“１”、或いは“０”）に応じて、２つの閾値電圧分布に分けられる。すなわち、下位ページデータの値が“１”の場合には、メモリセルのトンネル酸化膜に高電界がかからないようにし、メモリセルの閾値電圧Ｖｔｈの上昇を防止する。その結果、メモリセルは、消去状態のデータ（データ“１１”）を維持する。
【００１５】
一方、下位ページデータの値が“０”の場合には、メモリセルのトンネル酸化膜に高電界を印加し、フローティングゲート電極に電子を注入して、メモリセルの閾値電圧Ｖｔｈを所定量だけ上昇させる。具体的には、ベリファイ電位ＶＢｖ´を設定し、このベリファイ電位ＶＢｖ´以上の閾値電圧となるまで書き込み動作が繰り返される。その結果、メモリセルは、書き込み状態（データ“１０”）に変化する。なお、データ“１０”の閾値電圧分布は、隣接セルへの書き込み動作の影響のため、データ“１１”に比べ広い分布となっている。
【００１６】
次に、上位ページデータの書き込みを、図３を参照して説明する。上位ページデータの書き込みは、チップの外部から入力される書き込みデータ（上位ページデータ）と、メモリセルに既に書き込まれている下位ページデータとに基づいて行われる。
【００１７】
即ち、図３に示すように、上位ページデータの値が“１”の場合には、メモリセルのトンネル酸化膜に高電界がかからないようにし、メモリセルの閾値電圧Ｖｔｈの上昇を防止する。その結果、データ“１１”（消去状態）のメモリセルは、データ“１１”をそのまま維持し、データ“０１”のメモリセルは、データ“０１”をそのまま維持する。
【００１８】
一方、上位ページデータの値が“０”の場合には、メモリセルのトンネル酸化膜に高電界を印加し、フローティングゲート電極に電子を注入して、メモリセルの閾値電圧Ｖｔｈを所定量だけ上昇させる。その結果、データ“１１”（消去状態）のメモリセルは、データ“０１”に変化し、データ“０１”のメモリセルは、データ“００”に変化する。
【００１９】
以上の動作を要約すると、次のようになる。
（１）下位ページデータが“１”、上位ページデータが“１”のときには、消去状態のセルのデータは“１１”に維持される。
（２）下位ページデータが“０”、上位ページデータが“１”のときには、データ“１０”がメモリセルに書き込まれる。
（３）下位ページデータが“１”、上位ページデータが“０”のときには、データ“０１”がメモリセルに書き込まれる。
（４）下位ページデータが“０”、上位ページデータが“０”のときには、データ“００”がメモリセルに書き込まれる。
（５）上記（１）〜（４）の書き込みは、下位ページデータの書き込み動作をまず行い、続いて上位データの書き込み動作を行うという、計２回の書き込み動作により実行される。
【００２０】
なお、メモリセルＭＣが、下位ページデータの書き込みのみが終了し上位ページデータの書き込みが未了である段階であるのか、それとも上位ページデータの書き込みも終了した段階であるのかを、データとしていずれかの記憶手段に記憶しておく必要がある。このため、これを示すためのフラグデータＦＬＡＧが、データを記憶するメモリセルと同様のメモリセル（フラグセル）に記憶される。図２〜図３に示すように、前者の段階である場合にはフラグデータＦＬＡＧは“１”（負の閾値電圧）であり、後者の段階である場合にはフラグデータＦＬＡＧは“０”（閾値電圧ＶＢ以上）である。
【００２１】
［メモリ構成］
図４は、不揮発性半導体記憶システムの一例として、４値（２ビット）を記憶するＮＡＮＤセル型フラッシュメモリを備えたシステムの構成を示している。このフラッシュメモリは、データを記憶するメモリセルをマトリックス状に配置してなるメモリセルアレイ１を備えている。メモリセルアレイ１は複数のビット線と複数のワード線と共通ソース線を含み、ビット線とワード線の交点に電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。メモリセルには、情報ビットとしての多値データに加え、情報ビットに誤り訂正のために付加される冗長データ、上述のフラグデータＦＬＡＧが格納され得る。
【００２２】
このメモリセルアレイ１には、ビット線を制御するためのビット制御回路２、及びワード線電圧を制御するためのワード線制御回路６が接続されている。すなわち、ビット線制御回路２は、ビット線を介してメモリセルアレイ１中のメモリセルのデータを読み出す機能に加え、読み出しデータや書き込みデータを保持するデータラッチ機能を有するセンスアンプ兼データラッチ回路である。またビット線制御回路２は、ビット線を介してメモリセルアレイ１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。
【００２３】
ビット線制御回路２には、カラムデコーダ３、データ入出力バッファ４及びデータ入出力端子５及びコントローラ１１が接続されている。
メモリセルアレイ１から読み出されたメモリセルのデータは、ビット線制御回路２、データ入出力バッファ４及びコントローラ１１を介してデータ入出力端子５から外部へ出力される。メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、ワード線制御回路６及び制御信号入力端子８が不揮発性半導体記憶装置１００を構成し、これにコントローラ１１及びデータ入出力端子５が加わって不揮発性半導体記憶システムが構成されている。  また、外部からデータ入出力端子５に入力された書き込みデータは、データ入出力バッファ４を介して、カラムデコーダ３によってビット線制御回路２に入力され、指定されたメモリセルへの書き込みが行われる。
【００２４】
また、メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、ワード線制御回路６及びコントローラ１１は、制御回路７に接続されている。制御回路７は、制御信号入力端子８に入力される制御信号に従い、メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、ワード線制御回路６及びコントローラ１１を制御するための制御信号及び制御電圧を発生させる。
【００２５】
ワード線制御回路６は、読み出し動作において、４値データの４つの閾値分布（図１）のうちの１つの上限と、より値の大きい他の閾値分布の下限との間の複数ビットデータ読み出し電圧（図１ではＶＡ、ＶＢ、ＶＣ）やベリファイ電圧をワード線電圧としてワード線ＷＬに印加する制御を行う。
【００２６】
これに加え、ワード線制御回路６は、後述する軟値の生成のため、４つの閾値分布の各々の上限と下限との間の大きさを有する複数通りの電圧（軟値読み出し電圧）をワード線電圧としてワード線ＷＬに印加する制御を行う。詳しくは後述する。
【００２７】
また、コントローラ１１は、第１誤り訂正回路１０１、尤度計算回路１０２、第２誤り訂正回路１０３、及び出力制御回路１０４を備えている。
【００２８】
第１誤り訂正回路１０１は、複数ビットデータ読み出し電圧ＶＡ、ＶＢ、ＶＣがワード線ＷＬに印加されて読み出される複数ビットデータ（上位ページデータ、下位ページデータ）を、この複数ビットデータに付加された誤り訂正のための冗長データに基づいて誤り訂正するものである。冗長データは、例えば読み出された複数ビットデータが格納されるのと同一のセクタ内のメモリセルに格納されて同時に読み出すようにすることができるが、これに特に限定されるものではない。
【００２９】
ｋビットの情報ビットに対し冗長データｍを付加した場合における訂正可能な訂正ビット数は限定されており、訂正ビット数を超えたデータ誤りが生じると、第１誤り訂正回路１０１による訂正は不可能になる。冗長データｍを増やすことにより対処することも可能であるが、メモリの集積度の向上の障害となり、複数ビット化の意義が薄れてしまう。そこで、本実施の形態では、尤度計算回路１０２、及び第２誤り訂正回路１０３により、第１誤り訂正回路１０１により訂正し切らず、誤り訂正が失敗したデータの誤りを訂正する。
【００３０】
尤度計算回路１０２は、ビット線制御回路２において生成される軟値データに基づいて、読み出された複数ビットデータの「確かさ」（尤度）を計算する。軟値データは、上述の軟値読み出し電圧をワード線ＷＬに印加した場合に読み出されるデータに基づいてビット線制御回路２において生成される。この軟値データの具体例については後述する。尤度計算回路１０２は一例として、軟値データと尤度とを関連付けて記憶する尤度テーブル（図示せず）を有しており、これを参照することにより尤度を判定し出力することができる。
【００３１】
また第２誤り訂正回路１０３は、「確かさ」の程度（尤度）が低いと判定されたデータを訂正して、第１誤り訂正回路１０１を補完する役割を有する。
【００３２】
出力制御回路１０４は、第１誤り訂正回路１０１、又は第２誤り訂正回路１０３による誤り訂正がなされたデータをデータ入出力端子５に向けて出力する制御を行う。第１誤り訂正回路１０１によりデータ誤り訂正が完了した場合には、第２誤り訂正回路１０３による訂正を経ることなく、第１誤り訂正回路１０１によるデータ誤り訂正後の複数ビットデータをデータ入出力端子５に出力する。一方、第１誤り訂正回路１０１のみによってはデータ誤り訂正が完了しなかった場合に、第２誤り訂正回路１０３からの出力データをデータ入出力端子５に出力する。
【００３３】
図５は、図１に示すメモリセルアレイ１及びビット線制御回路２の構成を示している。メモリセルアレイ１はＮＡＮＤセル型メモリセルアレイであり、複数のＮＡＮＤセルを含んで構成されている。１つのＮＡＮＤセルは、直列接続された例えば１６個のＥＥＰＲＯＭからなるメモリセルＭＣと、その両端に接続される選択ゲートＳ１、Ｓ２とにより構成されている。選択ゲートＳ１はビット線ＢＬ０に接続され、選択ゲートＳ２はソース線ＳＲＣに接続されている。
【００３４】
同一のロウに配置されたメモリセルＭＣの制御ゲートはワード線ＷＬ１、ＷＬ２、ＷＬ３・・・ＷＬ１６に共通接続されている。また、第１の選択ゲートＳ１はセレクト線ＳＧ１に共通接続され、第２の選択ゲートＳ２はセレクト線ＳＧ２に共通接続されている。
【００３５】
メモリセルアレイ１は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のＮＡＮＤセルにより構成され、このブロック単位でデータが消去される。また、消去動作は、データ記憶回路１０、フラグ用データ記憶回路１０ａに接続されている２本のビット線について同時に行なわれる。
【００３６】
ビット線制御回路２は、複数のデータ記憶回路１０及びフラグ用データ記憶回路１０ａを有している。各データ記憶回路１０及びフラグ用データ記憶回路１０ａには、一対のビット線（ＢＬ０、ＢＬ１）、（ＢＬ２、ＢＬ３）…（ＢＬｉ、ＢＬｉ＋１）、（ＢＬ、ＢＬ）が接続されている。各データ記憶回路１０は、メモリセルＭＣから読み出されるデータを保持する機能を有すると共に、メモリセルＭＣに書き込まれるデータを保持する機能を有する。また、後述するように、複数ビットデータ記憶及び複数ビットデータ読み出しを行う際、また後述するように軟値データの生成を行なう際、内部データを操作する役割を有する。
【００３７】
また、ビット線ＢＬｉの１つおきに配置され、１つのワード線ＷＬｉに接続された複数のメモリセル（破線で囲まれた範囲のメモリセル）は、１セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。１セクタには例えば２ページ分のデータが記憶される。また、各ワード線ＷＬには、フラグデータＦＬＡＧを記憶するためのフラグセルＦＣが接続されている。前述したように、このフラグセルＦＣに記憶されるフラグデータＦＬＡＧは、メモリセルＭＣに対する下位ページデータの書き込み動作が終了した段階では“１”とされ、上位ページデータの書き込みが終了した段階では“０”とされる。
【００３８】
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路１０に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち外部より指定されたアドレス信号（ＹＡ１、ＹＡ２…ＹＡｉ、ＹＡｆｌａｇ）に応じて１本のビット線が選択される。さらに、外部アドレスに応じて、１本のワード線が選択され、１セクタ（２ページ分）が選択される。この２ページの切り替えはアドレスによって行われる。
【００３９】
図６及び図７は、メモリセルＭＣ、ならびに選択ゲートＳ１及びＳ２の断面構造を示している。図６はメモリセルＭＣの断面構造を示している。基板４１にはメモリセルＭＣを構成するＭＯＳＦＥＴのソース、ドレインとして機能するｎ型拡散層４２が形成されている。また基板４１の上にはゲート絶縁膜４３を介して浮遊ゲート（ＦＧ）４４が形成され、この浮遊ゲート４４の上には絶縁膜４５を介して制御ゲート（ＣＧ）４６が形成されている。
【００４０】
選択ゲートＳ１、Ｓ２は、基板４１と、この基板４１に形成されたソース、ドレインとしてのｎ型拡散層４７を備えている。基板４１の上にはゲート絶縁膜４８を介して制御ゲート４９が形成されている。
【００４１】
図８は、メモリセルアレイの１つのＮＡＮＤセルの断面を示している。この例において、１つのＮＡＮＤセルは、図６に示す構成の１６個のメモリセルＭＣが直列接続されて構成されている。ＮＡＮＤセルのドレイン側、ソース側には、図７に示す構成の第１の選択ゲートＳ１、Ｓ２が設けられている。
【００４２】
データ記憶回路１０の構成例を図９を参照して説明する。なお、データ記憶回路１０ａの構成も略同様であるので説明を省略する。このデータ記憶回路１０は、プライマリデータキャッシュ（ＰＤＣ）、セコンダリデータキャッシュ（ＳＤＣ）、ダイナミックデータキャッシュ（ＤＤＣ）、テンポラリデータキャッシュ（ＴＤＣ）を有している。
【００４３】
ＳＤＣ、ＰＤＣ、ＤＤＣは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、複数ビットデータを記憶する際に内部データの操作のためのデータ記憶を司る。ＴＤＣは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、複数ビットデータを記憶する際に内部データの操作に使用される。
【００４４】
ＳＤＣは、ラッチ回路を構成するクロックドインバータ回路６１ａ、６１ｂと、トランジスタ６１ｃ、６１ｄとにより構成されている。トランジスタ６１ｃはクロックドインバータ回路６１ａの入力端と、クロックドインバータ回路６１ｂの入力端の間に接続され、そのゲートに信号ＥＱ２を供給されている。
【００４５】
トランジスタ６１ｄはクロックドインバータ回路６１ｂの出力端と接地間に接続され、そのゲートには信号ＰＲＳＴが供給されている。
【００４６】
また、ＳＤＣのノードＮ２ａ（クロックドインバータ回路６１ａの出力端）は、カラム選択トランジスタ６１ｅを介して入出力データ線ＩＯｎに接続されている。また、ノードＮ２ｂ（クロックドインバータ回路６１ｂの出力端）は、カラム選択トランジスタ６１ｆを介して入出力データ線ＩＯに接続される。これらカラム選択トランジスタ６１ｅ、６１ｆのゲートにはカラム選択信号ＣＳＬｉが供給されている。
【００４７】
ＰＤＣは、ラッチ回路を構成するクロックドインバータ回路６１ｉ、６１ｊと、トランジスタ６１ｋとにより構成されている。トランジスタ６１ｋは、クロックドインバータ回路６１ｉの入力端とクロックドインバータ回路６１ｊの入力端の相互間に接続されている。このトランジスタ６１ｋのゲートには信号ＥＱ１が供給されている。このＰＤＣのノードＮ１ａとＳＤＣのノードＮ２ａとは、トランジスタ６１ｇ、６１ｈにより接続されている。トランジスタ６１ｇのゲートには信号ＢＬＣ２が供給され、トランジスタ６１ｈのゲートには信号ＢＬＣ１が供給されている。
【００４８】
また、ＰＤＣのノードＮ１ｂ（クロックドインバータ回路６１ｊの入力端）はトランジスタ６１ｌのゲートに接続されている。このトランジスタ６１ｌの電流通路の一端はトランジスタ６１ｍを介して接地されている。このトランジスタ６１ｍのゲートには信号ＣＨＫ１が供給されている。また、トランジスタ６１ｌの電流通路の他端はトランスファーゲートを構成するトランジスタ６１ｎ、６１ｏの電流通路の一端に接続されている。このトランジスタ６１ｎのゲートには信号ＣＨＫ２ｎが供給されている。また、トランジスタ６１ｏのゲートはトランジスタ６１ｇと６１ｈの接続ノードに接続されている。
【００４９】
トランジスタ６１ｎ、６１ｏの電流通路の他端には、信号ＣＯＭｉが供給されている。この信号ＣＯＭｉは全データ記憶回路１０に共通の信号であり、全データ記憶回路１０のベリファイが完了したかどうかを示す信号である。すなわち、後述するように、ベリファイが完了すると、ＰＤＣのノードＮ１ｂが”Ｌ”となる。この状態において、信号ＣＨＫ１、ＣＨＫ２ｎを”Ｈ”とすると、ベリファイが完了している場合、信号ＣＯＭｉが”Ｈ”となる。
【００５０】
ＴＤＣは、例えば電荷保持用ＭＯＳキャパシタ６１ｐとブースト用ＭＯＳキャパシタ６１ｐｂにより構成されている。このＭＯＳキャパシタ６１ｐは、前記トランジスタ６１ｇ、６１ｈの接続ノードＮ３と接地間に接続されている。また、接続ノードＮ３には、トランジスタ６１ｑＡ、６１ｑＢを介してＤＤＣが接続されている。トランジスタ６１ｑＡ、６１ｑＢのゲートには、それぞれ信号ＲＥＧＡ、ＲＥＧＢが供給されている。また、ＭＯＳキャパシタ６１ｐｂは、一端をノードＮ３に接続され、他端はブースト電圧ＢＯＯＳＴを与えられる。
【００５１】
ＤＤＣは、トランジスタ６１ｒＡ、６１ｓＡ、６１ｒＢ、６１ｓＢにより構成されている。トランジスタ６１ｒＡ及び６１ｓＡにより１つのデータキャッシュＤＤＣＡが構成され、トランジスタ６１ｒＢ及び６１ｓＢによりもう1つのデータキャッシュが構成されている。
【００５２】
トランジスタ６１ｒＡ、６１ｒＢの電流通路の一端には信号ＶＰＲＥが供給され、他端はそれぞれトランジスタ６１ｑＡ、６１ｑＢの電流通路に接続されている。このトランジスタ６１ｒＡ、６１ｒＢのゲートはそれぞれトランジスタ６１ｓＡ、６１ｓＢを介してＰＤＣのノードＮ１ａに接続されている。このトランジスタ６１ｓＡ、６１ｓＢのゲートにはそれぞれ信号ＤＴＧＡ、ＤＴＧＢが供給されている。さらに、接続ノードＮ３にはトランジスタ６１ｔ、６１ｕの電流通路の一端が接続されている。トランジスタ６１ｕの電流通路の他端には信号ＶＰＲＥが供給され、ゲートには信号ＢＬＰＲＥが供給されている。
【００５３】
トランジスタ６１ｔのゲートには信号ＢＬＣＬＡＭＰが供給されている。このトランジスタ６１ｔの電流通路の他端はトランジスタ６１ｖを介してビット線ＢＬｉに接続され、またトランジスタ６１ｗを介してビット線ＢＬｉ＋１に接続されている。
【００５４】
ビット線ＢＬｉの他端はトランジスタ６１ｘの電流通路の一端に接続されている。このトランジスタ６１ｘのゲートには信号ＢｌＡＳｏが供給されている。ビット線ＢＬｉ＋１の他端はトランジスタ６１ｙの電流通路の一端に接続されている。このトランジスタ６１ｙのゲートには信号ＢｌＡＳｅが供給されている。これらトランジスタ６１ｘ、６１ｙの電流通路の他端には、信号ＢＬＣＲＬが供給されている。トランジスタ６１ｘ、６１ｙは、信号ＢｌＡＳｏ、ＢｌＡＳｅに応じてトランジスタ６１ｖ、６１ｗと相補的にオンとされ、非選択のビット線に所定のバイアスＢＬＣＲＬを供給して、非選択ビット線を選択ビット線のシールド線とする。
【００５５】
［書き込み動作及びベリファイ動作］
次に、このＮＡＮＤセル型フラッシュメモリにおける複数ビット書き込み動作及び書き込みベリファイ動作を、図１０及び図１１を参照して説明する。上述したように、書き込み動作は、下位ページデータの書き込み、上位ページデータの書き込みという２段階で行なわれる。
【００５６】
図１０に示すように、まず図５の１セクタの下位ページを選択するため、アドレスを指定し、続いて、書き込みデータを外部より入力し全てのデータ記憶回路１０内のＳＤＣに記憶する（Ｓ１１）。
【００５７】
書き込みコマンドが入力されると、トランジスタ６１ｈ、６１ｇがオンとされ、これにより全てのデータ記憶回路１０内のＳＤＣのデータがＰＤＣに転送される（Ｓ１２）。外部より下位ページデータとしてデータ“１”が入力された場合、ＰＤＣのノードＮ１ａは、”Ｈ”になり、データ“０”が入力された場合、ＰＤＣのノードＮ１ａは、”Ｌ”となる。なお、この下位ページデータの書き込み動作においては、フラグセルＦＣにはデータが書き込まれない。このため、フラグ用データ記憶回路１０ａ内のＰＤＣはデータ“１”となる。
【００５８】
続いて、メモリセルＭＣへの書き込み（プログラム）動作に移行する（Ｓ１３）。具体的には、トランジスタ６１ｈ、６１ｔ及び６１ｖ又は６１ｗがオンとなり、ＰＤＣに保持されたデータがビット線ＢＬｉ又はＢＬｉ＋１に供給される。ＰＤＣにデータ“１”が保持されている時、ビット線がＶｄｄになり、データ“０”が保持されている時、ビット線がＶｓｓ（接地電位）になる。また、非選択ページのセルには書き込みが行なわれないようにするため、非選択ページのビット線にもＶｄｄを供給する。
【００５９】
ここで、選択されているブロックのセレクト線ＳＧ１にＶｄｄ、選択されたセルのワード線に電位ＶＰＧＭ（２０Ｖ）、非選択のセルのワード線に電位ＶＰＡＳＳ（１０Ｖ）を印加する。これにより、選択セルに書き込みを行うと共に、非選択セルに対する書き込みを防止する。
【００６０】
続いて、書き込みベリファイ動作に移行する（Ｓ１４）。まず、非選択ワード線及びセレクト線ＳＧ１に読み出し時の電位Ｖｒｅａｄを与えると共に、ビット線を１Ｖにプリチャージする。また、選択ワード線にベリファイ電位ＶＢｖ´を与える。続いて、メモリセルのソース側のセレクト線ＳＧ２を”Ｈ”にする。
選択したメモリセルＭＣの閾値電圧がベリファイ電位ＶＢｖ´より高ければ、そのメモリセルＭＣはオフを維持し、従ってビット線は”Ｈ”のままである。
一方、選択したメモリセルＭＣの閾値電圧がベリファイ電位ＶＢｖ´より低ければ、そのメモリセルＭＣはオンとなり、ビット線は”Ｌ”となる。ＴＤＣのノードＮ３は、ビット線が”Ｌ”の場合、”Ｌ”となり、ビット線が”Ｈ”の場合、”Ｈ”となる。
【００６１】
ここで、ＤＤＣには“０”書き込みを行う場合”Ｌ”が記憶され、“０”書き込みを行わない場合”Ｈ”が記憶されている。信号ＶＰＲＥをＶｄｄとし、信号ＲＥＧＡを”Ｈ”にすると、“０”書き込みを行わない場合のみＴＤＣのノードＮ３が強制的に”Ｈ”となる。この動作の後、ＰＤＣのデータをＤＤＣに移し、ＴＤＣの電位をＰＤＣに転送する。
【００６２】
以上の動作の下、ＰＤＣが”Ｌ”の場合、再び書き込み動作を行い全てのデータ記憶回路１０のデータが”Ｈ”になるまでこのプログラム動作とベリファイ動作を繰り返す（Ｓ１５−Ｓ１３）。その後、隣接するメモリセルにも書き込みが順次行なわれると、書き込みデータによっては、ＦＧ−ＦＧ間容量によって、メモリセルの閾値電圧が上がり、データ“１０”の閾値電圧分布が高いほうに広がる。
【００６３】
次に、上位ページデータの書き込み（プログラム）動作を図１１を参照して説明する。上位ページデータの書き込み動作でも、まずアドレスを指定し、続いて、書き込みデータを外部より入力し全てのデータ記憶回路１０内のＳＤＣに記憶する（Ｓ２１）。
【００６４】
この後、書き込みコマンドが入力されると、フラグセルＦＣにフラグデータＦＬＡＧとして“０”を書き込むため、フラグセル用データ記憶回路１０ａ内のＳＤＣにデータ“０”が入力される（Ｓ２２）。
【００６５】
続いて、上位ページ書き込み後のデータが“１１”（下位ページデータが“１”）であるのか“１０”（下位ページデータが“０”）であるのかを判断するため、内部リード動作が行なわれる（Ｓ２３）。選択ワード線には、電位ＶＡ（図１）を供給する。非選択ワード線及びセレクト線ＳＧ１には電位Ｖｒｅａｄを供給する。
【００６６】
メモリセルのデータが“１０”である場合、ＰＤＣに”Ｈ”がラッチされ、メモリセルのデータが“１１”である場合、ＰＤＣに”Ｌ”がラッチされる。
【００６７】
その後、書き込みたいデータが“１１”、“０１”、“１０”、“００”のいずれであるのかに従い、各データキャッシュＳＤＣ、ＰＤＣ、ＴＤＣ、ＤＤＣに記憶されるデータが設定される（Ｓ２４）。
【００６８】
続いて、書き込み動作に先立ってデータ“１０”のベリファイを行う（Ｓ２５）。その後、下位ページデータの書き込み動作と同様にして書き込み動作を実行する（Ｓ２６）。
【００６９】
更に、データ“０１”、“１０”、“００”についても、それぞれ電位をＶＡｖ、ＶＢｖ、ＶＣｖに設定してベリファイ動作を行い（Ｓ２７〜Ｓ２９）、全てのデータ記憶回路１０のＰＤＣのデータが“Ｈ”になるまでこの書き込み動作とベリファイ動作を繰り返す（Ｓ３０）。
【００７０】
［読出し動作］
続いて、通常の４値データの読出し動作を、下位ページデータの読出しと上位ページデータの読出しに分けて説明する。
【００７１】
図１３は、下位ページデータの読出しの手順をフローチャートで示している。まず、アドレスを指定し、図５に示す１セクタを選択する。続いて選択ワード線の電位をＶＡとして読み出し動作を行い（Ｓ３１）、フラグセルＦＣのフラグデータＦＬＡＧが“０”か“１”であるかを判別する（Ｓ３２）。
【００７２】
フラグセルＦＣから読み出されたフラグデータＦＬＡＧが“１”の場合、上位ページデータの書き込みは完了しておらず、このため、メモリセルＭＣの閾値電圧の分布は、図２のようになっている。このデータは、ワード線の電位をＶＡにして読み出し動作をすればよく、従って既にデータ記憶回路１０に読み出されている。このため、データ記憶回路１０に記憶されているデータを外部に出力して読み出しを行う（Ｓ３３）。
【００７３】
一方、フラグセルＦＣから読み出されたフラグデータＦＬＡＧが“０”（メモリセルのデータが“１”）の場合、上位ページデータの書き込みが行われており、したがってメモリセルＭＣの閾値電圧分布は、図３に示すようになっている。従って、ワード線の電位をＶＢに設定して読み出し動作を行い（Ｓ３４）、この後、データ記憶回路１０に読み出されたデータを外部に出力する（Ｓ３３）。このときのデータ記憶回路１０中の各データキャッシュの動作は、書き込みベリファイ動作のときと略同様である。
【００７４】
続いて、上位ページデータの読出し動作の手順を図１３のフローチャートを参照して説明する。上位ページデータの読み出しでは、まず、アドレスを指定し、図５に示す１セクタを選択する。続いて、ワード線の電位をＶＣとして読み出しを行う（Ｓ３５）。これにより、閾値電圧がＶＣより低いメモリセルからは“１”が読み出され、閾値電圧がＶＣより高いメモリセルからは“０”が読み出され、このデータは、仮の上位ページデータＵｐｐｅｒ（ｐｒｅ１）としてＴＤＣに保持される。ＴＤＣに保持されたデータＵｐｐｅｒ（ｐｒｅ１）は、一端トランジスタ６１ｈがオンとされてＰＤＣに転送された後、トランジスタ６１ｓＡをオンとすることによりＤＤＣＡに保持される。
【００７５】
この後、ワード線電位をＶＡとして読み出し動作を行って（Ｓ３６）、フラグセルＦＣのフラグデータＦＬＡＧが“０”か“１”であるかを判別する（Ｓ３７）。
【００７６】
この結果、フラグセルＦＣのフラグデータＦＬＡＧが“１”で、上位ページの書き込みが行なわれていない場合、出力データを“１”に固定する（Ｓ３８）。出力を“１”にするには、データ記憶回路１０の信号ＰＲＳＴを”Ｈ”とし、ＳＤＣを“１”に設定する。あるいは、データ入出力バッファ４よりデータ“１”しか出力させないようにする。
【００７７】
また、フラグセルのフラグデータＦＬＡＧが“０”の場合、ＤＤＣＡに保持されているデータＵｐｐｅｒ（ｐｒｅ１）と、新たに読み出されるデータＵｐｐｅｒ（ｐｒｅ２）とに基づいて、上位ページデータＵｐｐｅｒを読み出す（Ｓ３９）。この読み出しにおけるデータ記憶回路１０の具体的な動作を以下に説明する。
【００７８】
新たに読み出されたデータＵｐｐｅｒ（ｐｒｅ２）はＴＤＣに保持される。このとき、ＶＰＲＥを接地電位とした状態において、トランジスタ６１ｑＡのゲートの信号ＲＥＧＡを“Ｈ”とする。このとき、ＤＤＣＡに保持されているデータＵｐｐｅｒ（ｐｒｅ１）が“０”すなわちトランジスタ６１ｒＡのゲートの電位が“Ｈ”である場合には、ノードＮ３の電圧は放電される。一方、ＤＤＣＡに保持されているデータＵｐｐｅｒ（ｐｒｅ１）が“１”すなわちトランジスタ６１ｒＡのゲートの電位が“Ｌ”である場合には、ノードＮ３の電圧は変化しない。すなわち、ＤＤＣＡに保持されているデータＵｐｐｅｒ（ｐｒｅ１）が“０”である場合において、新たなデータＵｐｐｅｒ（ｐｒｅ２）は強制的に“１”に反転させられる。
【００７９】
以上のような動作が行なわれた後におけるＴＤＣの保持データをＳＤＣに転送後外部へ上位ページデータＵｐｐｅｒとして出力する。データＵｐｐｅｒ（ｐｒｅ１）と、出力される上位ページデータＵｐｐｅｒとの関係は、図１４に示すようになっている。以上のような手順で下位ページデータＬｏｗｅｒと、上位ページデータＵｐｐｅｒとが読み出され、４値データの読み出しが完了する。
【００８０】
このような手順により読み出された４値データは、データ誤りが発生した場合（例えば、データ“００”が、閾値分布が隣接するデータ“１０”として誤って読み出された場合）、第１誤り訂正回路１０１により冗長データに基づいた誤り検出及び誤り訂正が行なわれる。
【００８１】
しかしながら単純に４値データをビットデータとして読み出しただけでは、閾値分布に対する正当性が厳密に”０”か”１”かという点でしか判断ができず、訂正能力は情報ビットに対して付加された冗長データの量のみで厳密に決まってしまう。メモリセルの微細化が進展し、更に１つのメモリセルに記憶されるｎ値データのｎが大きくされると、書き込みエラーの発生率が高くなり、冗長データを用いた第１誤り訂正回路１０１のみでは対応が困難になる場合が生じ得る。
そこで本実施の形態では、第１の誤り訂正回路１０１によっては誤りを訂正し切らず誤り訂正が失敗した場合において、複数ビットデータの確かさを示す尤度を尤度計算回路１０２により生成し、この尤度を用いて第２誤り訂正回路１０３により誤り訂正を実行する。これにより、冗長データのビット数を増やすことなく誤り訂正を実行することを可能にする。軟値データは、例えば図１５に示すように、データ“１１”、“０１”、“１０”、“００”の各々の閾値分布の上限と下限の間の大きさを有する、複数の軟値読み出し電圧（４）〜（１５）をワード線電圧としてワード線制御回路６により生成して読み出しを行うことにより生成される。このような軟値データにより、読み出し対象とされたメモリセルが、４値データ（“１１”、“０１”、“１０”、“００”）のうちのいずれであるのかということのみならず、１つの閾値分布の中の中心（頂点）付近の閾値電圧を有するのか、それとも閾値分布の上限又は下限に近い閾値電圧を有するのかを判定することができる。閾値電圧が閾値分布の上限又は下限に近い場合には、閾値分布の中心付近である場合に比べ、データ誤りが生じている可能性が高い。換言すれば、前者は後者に比べ、複数ビットデータの「確かさ」の程度（尤度）が低い。第２誤り訂正回路１０３は、「確かさ」の程度（尤度）が低いと判定される軟値データが得られたメモリセルの４値データの訂正と、この訂正後のシンドローム計算とを、シンドロームがすべて“０”となるまで繰り返す。
【００８２】
この図１５では、軟値読み出し電圧（４）〜（７）は、それぞれデータ“１１”、“０１”、“１０”、“００”それぞれの閾値分布の中点付近（上限と下限の略中間）の電圧である。また、その他の軟値読み出し電圧（８）〜（１５）は、軟値読み出し電圧（４）〜（７）と共に、各閾値分布を略等間隔に分割するように設定している。すなわち、
（ｉ）軟値読み出し電圧（４）、（８）、（９）は、データ“００”の閾値分布を略等間隔に分割するように設定されており、
（ｉｉ）軟値読み出し電圧（５）、（１０）、（１１）は、データ“１０”の閾値分布を略等間隔に分割するように設定されており、
（ｉｉｉ）軟値読み出し電圧（６）、（１２）、（１３）は、データ“００”の閾値分布を略等間隔に分割するように設定されており、
（ｉｖ）軟値読み出し電圧（７）、（１４）、（１５）は、データ“１１”の閾値分布を略等間隔に分割するように設定されている。
【００８３】
これは、あくまでも閾値分布が略ガウス分布形状とされている場合の一例でありこの例に限定されるものではない。分布の形状によっては、各閾値分布においてやや偏った間隔で分割してもよい。また、各閾値分布の分割数すなわち各閾値分布に含まれる軟値読み出し電圧の数も、３つに限らず４つ又はそれ以上にしてもよい。
【００８４】
次に、この軟値データの具体的な生成手順を図１５を参照して説明する。まず、図１２、図１３で説明したように、ワード線電圧を順に（１）複数ビットデータ読み出し電圧ＶＢ、（２）複数ビットデータ読み出し電圧ＶＣ、（３）複数ビットデータ読み出し電圧ＶＡに設定して、下位ページデータＬｏｗｅｒ、仮の上位ページデータＵｐｐｅｒ（ｐｒｅ１）、上位ページデータＵｐｐｅｒを読み出す。
【００８５】
図１５の下半分に記載された“１”、“０”のマトリクス表示は、ワード線電圧が（１）、（２）、・・・、（１５）と変化された場合における、当該メモリセルの閾値電圧の大きさと、得られるページデータ、及び軟値（軟値１（ｐｒｅｉ）、軟値２（ｐｒｅｉ）、軟値１、軟値２）を示している。
【００８６】
次に、ワード線電圧は、各閾値分布の上限と下限の中間付近の軟値読み出し電圧（４）〜（７）に、その順で（すなわち段階的に高い方から低い方へ下げられて）設定される。まず軟値読み出し電圧（４）が設定された場合に読み出される軟値データ軟値１（ｐｒｅ１）は、データ“００”の閾値分布の右半分より大きい閾値電圧を有するメモリセルについてのみデータ”０“として読み出され、それ以外では”１“として読み出される。この読み出された軟値１（ｐｒｅ１）は、一旦ＴＤＣに保持され、ＰＤＣを経てＤＤＣＡに保持される。
【００８７】
次に、軟値読み出し電圧（５）を設定して軟値データ軟値１（ｐｒｅ２）を読み出す。この軟値１（ｐｒｅ２）は、データ“１０”の閾値分布の右半分より大きい閾値電圧を有するメモリセルについてのみがデータ”０“として読み出され、それ以外は”１“として読み出されて、ＴＤＣに保持される。ただし、軟値１（ｐｒｅ１）はＤＤＣＡに保持されており、もし、ＤＤＣＡに保持されている軟値１（ｐｒｅ１）が”０“であった場合には、ＴＤＣに保持されたデータは強制的に”１“に反転させられる（図１５の矢印参照）。すなわち、軟値読み出し電圧を段階的に小さくしていった場合に、第１の軟値読み出し電圧と、これより一段階小さい第２の軟値読み出し電圧とがいずれもメモリセルを導通させなかった場合に、第２の軟値読み出し電圧で得られたデータを反転させて軟値とするものである。
【００８８】
以下同様に、軟値読み出し電圧（６）、（７）がワード線電圧として印加され、１つ前の軟値１（ｐｒｅｉ）が“０”であった場合にはデータ反転がなされる。軟値読み出し電圧（７）により生成されるデータが軟値１であり、これが後述する軟値２と共に、尤度計算回路１０２における尤度計算に用いられる。
【００８９】
続いて、ワード線電圧は、軟値読み出し電圧（８）〜（１５）に、その順で（すなわち段階的に高い方から低い方へ下げられて）設定される。ＤＤＣＡに保持されている１つ前の軟値が“０”であった場合にデータ反転がなされる点は（４）〜（７）の場合と同様である。軟値読み出し電圧（１５）がワード線電圧として印加されて生成される軟値２が、軟値１とともに尤度計算回路１０２において尤度計算のために用いられる。
【００９０】
本実施の形態の不揮発性半導体記憶装置では、以上の軟値生成手順の実行と並行して、軟値取得に先立って取得済みの複数ビットデータ及び冗長データに基づく第１誤り訂正回路１０１における誤り検出及び誤り訂正を実行することができる。第１誤り訂正回路１０１における誤り検出・訂正の結果、誤りがすべて訂正された場合には、並行して生成されていた軟値は不要となるので廃棄され、第１誤り訂正回路１０１による訂正データが出力制御回路１０４から出力される。第２誤り訂正回路１０３は、冗長データに基づく第１誤り訂正回路１０１により誤り訂正が失敗したと判定される場合に、複数ビットデータ及び冗長データに加え、尤度計算回路１０２で軟値を用いて計算された尤度に基づく誤り訂正を開始する。このような並行処理が実行されることにより、データ転送のスループット向上を図ることができる。
【００９１】
第２誤り訂正回路１０３は、計算された尤度に基づいてトライアンドエラーで訂正を繰り返す。しかし、所定回数訂正を繰り返しても訂正が完了しない場合には訂正は失敗と判定し、一旦計算された尤度は廃棄する。そして、軟値読み出し電圧の数を、上記の（４）〜（１５）の１２個より増加（例えば１６個）として新たに軟値を取得して尤度計算回路１０２により尤度を計算する。これにより、複数ビットデータの確かさ（尤度）をより正確に判定し、誤りを訂正することができる可能性を高くすることができる。このように、軟値読み出し電圧の数を段階的に増加させることは、不揮発性半導体装置のデータ読み出し速度を、データ誤りをなくしつつ維持するという観点から好ましい。
【００９２】
以上、発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加等が可能である。例えば、上記実施の形態では、複数ビットデータとして４値データを例にとって説明したが、本発明はこれに限定されるものでないことはいうまでもなく、８値、１６値のようなＮ値(N は１以上の整数)においても適用可能であることはいうまでもない。
【００９３】
また、複数ビットデータを構成する複数ページデータの誤り検出及び訂正は、それぞれに付加されている冗長データに基づいて独立に実行してもよいし、一体として実行してもよい。後者の場合には、データ入出力バッファ４にページデータの数に応じた記憶素子（シフトレジスタ）を設け、これらに複数ページデータを各々記憶させた後読み出すことが可能である。
【００９４】
また、メモリセルの閾値電圧は時間の経過と共に変化し、従って閾値分布も例えば図１６に示すように変化する。この場合、軟値読み出し電圧（例えばデータ“００”については電圧（４）、（８）、（９））の大きさが不変であると、軟値読み出し電圧が閾値分布を適切な間隔で分割しないこととなり、軟値に基づく「確かさ」の計算が正しく行なわれない虞がある。このため、図１６に示すように、時間の経過と共に軟値読み出し電圧を（４）、（８）、（９）からシフトした（４）´、（８）´、（９）´に変化させ、変化した閾値分布に対応した値に設定する。これにより、軟値に基づく「確かさ」の計算を一層正確に行なうことが可能になる。時間の経過に伴う各軟値読み出し電圧の変化量は、シミュレーションに基づいてあらかじめ計算された値をテーブルに格納しておき、このテーブルの値に基づいて決定することが好適である。
【００９５】
また、図１７に示すように、このような閾値電圧の変化を抑制するため、ユーザからの命令により、又は定期的にメモリセルのデータの書き直しを実行し、図１６右側のように変化した閾値電圧の分布を図１６左側のように修正するデータリフレッシュ回路１１０を設けることも可能である。
【００９６】
また、上記の実施の形態では、冗長データに基づく複数ビットデータの誤り訂正を行なう第１の誤り訂正回路１０１と、軟値に基づいて計算された尤度に基づく誤り訂正を行なう第２誤り訂正回路１０３とを設けていたが、本発明はこれに限定されるものではない。図１８は、変形例の１つを示すものであり、この例では、複数ビットデータと冗長データに基づいて複数ビットデータの尤度を計算する第１尤度計算回路１１２と、軟値に基づいて複数ビットデータの尤度を計算する第２尤度計算回路１１３とを備えている。尤度計算回路１１２、１１３は、それぞれ冗長データ、軟値データと尤度とを関連付けて記憶する尤度テーブル（図示せず）を有しており、これを参照することにより尤度を判定し出力することができる。
【００９７】
そして、誤り訂正回路１１４は、第１尤度計算回路１１２で計算された尤度、または第２尤度計算回路１１３で計算された尤度に基づいて誤り訂正を実行する。このように、冗長データに基づいて複数ビットデータの尤度を計算しているため、誤り訂正回路１１４を１つだけ設ければよい。
【図面の簡単な説明】
【００９８】
【図１】４値記憶のフラッシュメモリにおける書き込みデータの例を示す。
【図２】４値記憶のフラッシュメモリにおけるデータ書き込み手順を示す概念図である。
【図３】４値記憶のフラッシュメモリにおけるデータ書き込み手順を示す概念図である。
【図４】本発明の第１の実施の形態によるＮＡＮＤセル型フラッシュメモリを含む不揮発性半導体記憶システムの概略構成を示す構成図である。
【図５】図４に示すメモリセルアレイ１及びビット線制御回路２の構成を示す回路図である。
【図６】図５のメモリセルＭＣの断面図である。
【図７】図５の選択ゲートＳ１、Ｓ２の断面図である。
【図８】メモリセルアレイの１つのＮＡＮＤセルを示す断面図である。
【図９】図５に示すに示すデータ記憶回路１０の一構成例を示す回路図である。
【図１０】４値データを構成する下位ページデータの書き込みの手順を示すフローチャートである。
【図１１】４値データを構成する上位ページデータの書き込みの手順を示すフローチャートである。
【図１２】４値データの下位ページデータの読出しの手順を示すフローチャートである。
【図１３】４値データの上位ページデータの読出しの手順を示すフローチャートである。
【図１４】下位ページデータＬｏｗｅｒ、上位ページデータＵｐｐｅｒの関係を示す概念図である。
【図１５】軟値データの具体的な生成手順を説明する。
【図１６】本実施の形態の変形例を示す。
【図１７】本実施の形態の変形例を示す。
【図１８】本実施の形態の変形例を示す。
【符号の説明】
【００９９】
１・・・メモリセルアレイ、  ２・・・ビット制御回路、  ３・・・カラムデコーダ、  ４・・・データ入出力バッファ、  ５・・・データ入出力端子、  ６・・・ワード線制御回路、  ７・・・制御回路、  ８・・・制御信号入力端子、  ９・・・不良ブロック判定回路、  １０、１０ａ・・・データ記憶回路、  １１・・・コントローラ、  １０１・・・第１誤り訂正回路、  １０２・・・尤度計算回路、  １０３・・・第２誤り訂正回路、  １０４・・・出力制御回路、  １１０・・・データリフレッシュ回路、  １１２・・・第１尤度計算回路、  １１３・・・第２尤度計算回路、  １１４・・・誤り訂正回路、  ＰＤＣ・・・プライマリデータキャッシュ、  ＳＤＣ・・・セコンダリデータキャッシュ、  ＤＤＣ・・・ダイナミックデータキャッシュ、  ＴＤＣ・・・テンポラリデータキャッシュ、  ＦＣ・・・フラグセル。
【図１】
2008016092.tif 000003
【図２】
2008016092.tif 000004
【図３】
2008016092.tif 000005
【図４】
2008016092.tif 000006
【図５】
2008016092.tif 000007
【図６】
2008016092.tif 000008
【図７】
2008016092.tif 000009
【図８】
2008016092.tif 000010
【図９】
2008016092.tif 000011
【図１０】
2008016092.tif 000012
【図１１】
2008016092.tif 000013
【図１２】
2008016092.tif 000014
【図１３】
2008016092.tif 000015
【図１４】
2008016092.tif 000016
【図１５】
2008016092.tif 000017
【図１６】
2008016092.tif 000018
【図１７】
2008016092.tif 000019
【図１８】
2008016092.tif 000020