(57)【要約】【課題】隣接セルの容量結合の影響を抑制でき、且つ高速な書き込みが可能な半導体記憶装置と半導体記憶システムを提供する。【解決手段】第１メモリセルは、１セルにｋビットのデータを記憶する。第２メモリセルは、１セルにｈビット（ｈ＜ｋ）のデータを記憶する。第１メモリセルにｉビット（ｉ＜＝ｋ）のデータを記憶し、第２メモリセルにｉビットのデータより生成されるｈビット（ｈ＜ｉ）のデータを記憶する。【選択図】      図１４
2010160873.tif 000002
【特許請求の範囲】
【請求項１】
ｋビットのデータを記憶する第１メモリセルと、ｈビット（ｈ＜ｋ）のデータを記憶する第２メモリセルを有し、前記第１メモリセルにｉビット（ｉ＜＝ｋ）のデータを記憶し、前記第２メモリセルに前記ｉビットのデータより生成されるｈビット（ｈ＜ｉ）のデータを記憶することを特徴とする半導体記憶装置。
【請求項２】
前記第１メモリセルに隣接する第３メモリセルを有し、前記第１メモリセル及び前記第２メモリセルにデータを記憶した後、前記第３メモリセルにデータを記憶し、前記第１メモリセル及び前記第２メモリセルによりデータを読み出すことを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記第１メモリセル及び前記第２メモリセルによりデータを読み出した後、この読み出されたデータに基づき、再度、前記第１メモリセルにデータを記憶することを特徴とする請求項１記載の半導体記憶装置。
【請求項４】
前記第２メモリセルに書き込まれるｈビットのデータは、前記第１メモリセルに記憶されるｉビットのデータを排他的ＮＯＲしたデータであることを特徴とする請求項１記載の半導体記憶装置。
【請求項５】
前記第１メモリセルにｉビットのデータと、前記第２メモリセルにｈビットのデータを記憶した後、読み出し動作により、読み出された前記第１メモリセルのｉビットのデータと前記第２メモリセルから読み出されたｈビットのデータの（ｉ＋ｈ）ビットのデータによる２（ｉ＋ｈ）通りの組み合わせの内、前記第１メモリセルに書き込まれるｉビットのデータと前記第２メモリセルに書き込まれるｈビットの（ｉ＋ｈ）ビットのデータによる２ｉ通りの組み合わせは、正しいデータとされ、２ｉ通りの組み合わせで無い場合、読み出されたデータは正しくないデータとされることを特徴とする請求項１記載の半導体記憶装置。
【請求項６】
前記第１メモリセルは２ビットのデータを記憶し（ｉ＝２）、前記第２メモリセルは１ビットのデータを記憶（ｈ＝１）し、前記第１メモリの書き込みベリファイ読み出しレベルをＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）とする場合、前記第１メモリセルの読み出し動作の読み出しレベルは、Ａ、Ｂ、Ｃ及び、Ｅ（Ａ＜Ｅ＜Ｂ）、Ｆ（Ｂ＜Ｆ＜Ｃ）であることを特徴とする請求項１記載の半導体記憶装置。
【請求項７】
前記第１メモリセルにＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）の書き込みベリファイ読み出しレベルにより２ビットのデータ（ｉ＝２）を記憶し、前記第２メモリセルに１ビットのデータ（ｈ＝１）を記憶した後、読み出し動作により、読み出しレベルをＡ、Ｂ、Ｃとして読み出された前記第１メモリセルの２ビットのデータと、前記第２メモリセルから読み出された１ビットのデータの３ビットのデータによる８通りの組み合わせの内、前記第１メモリセルに書き込まれる２ビットのデータと前記第２メモリセルに書き込まれる１ビットの２ビットのデータによる４通りの組み合わせは、正しいデータとされ、４通りの組み合わせ以外の場合、読み出されたデータは正しくないデータとされることを特徴とする請求項１記載の半導体記憶装置。
【請求項８】
前記読み出されたデータが正しくない場合、前記第１メモリの読み出しレベルをＥ（Ａ＜Ｅ＜Ｂ）及びＦ（Ｂ＜Ｆ＜Ｃ）で再度読み出すことを特徴とする請求項７記載の半導体記憶装置。
【請求項９】
１セルにｋビットのデータを記憶する第１メモリセルと、前記第１メモリセルに記憶するｉビット（ｉ＜＝ｋ）のデータを有し、前記ｉビットのデータを前記第１メモリセルに記憶後、前記ｉビットのデータよりｈビット（ｈ＜ｉ）のデータを生成した後、前記ｈビットのデータを使用して、前記第1メモリセルからｉビットのデータを読出し、読み出されたｉビットのデータを再度、第１メモリセルに記憶することを特徴とする半導体記憶システム。
【請求項１０】
前記第１メモリセルより読み出されたデータと前記ｈビットのデータに基づき、再度、前記第１メモリセルにデータを記憶することを特徴する請求項９記載の半導体記憶システム。
【請求項１１】
前記第１メモリセルに、再度、データを記憶する前に、前記第１メモリセルに隣接する第２メモリセルに、データを記憶する請求項１０記載の半導体記憶システム。
【請求項１２】
前記ｈビットのデータは、前記第１メモリセルに記憶されるｉビットのデータを排他的ＮＯＲしたデータであることを特徴とする請求項９記載の半導体記憶システム。
【請求項１３】
前記第１メモリセルにｉビットのデータを記憶した後、読み出し動作により、読み出されたｉビットのデータと前記ｈビットのデータの（ｉ＋ｈ）ビットのデータによる２（ｉ＋ｈ）通りの組み合わせの内、前記第１メモリセルに書き込まれるｉビットのデータと前記ｈビットの（ｉ＋ｈ）ビットのデータによる２ｉ通りの組み合わせは、正しいデータとされ、２ｉ通りの組み合わせで無い場合、読み出されたデータは正しくないデータとされることを特徴とする請求項９記載の半導体記憶システム。
【請求項１４】
前記第１メモリセルは２ビットのデータを記憶し（ｉ＝２）、前記第１メモリの書き込みベリファイ読み出しレベルをＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）とする場合、前記第１メモリセルの読み出し動作の読み出しレベルは、Ａ、Ｂ、Ｃ及び、Ｅ（Ａ＜Ｅ＜Ｂ）、Ｆ（Ｂ＜Ｆ＜Ｃ）であることを特徴とする請求項９記載の半導体記憶システム。
【請求項１５】
前記第１メモリセルにＡ、Ｂ、Ｃの書き込みベリファイ読み出しレベルにより２ビットのデータ（ｉ＝２）を記憶し、前記第１メモリセルに記憶した２ビットのデータより１ビットのデータ（ｈ＝１）を生成し、読み出し動作により、読み出しレベルをＡ、Ｂ、Ｃで読み出された前記第１メモリセルの２ビットのデータと、前記生成した１ビットのデータの３ビットのデータによる８通りの組み合わせの内、前記第１メモリセルに書き込まれる２ビットのデータと前記生成した１ビットのデータによる４通りの組み合わせは、正しいデータとされ、４通りの組み合わせで無い場合、読み出されたデータは正しくないデータとされることを特徴とする請求項９記載の半導体記憶システム。
【請求項１６】
前記読み出されたデータが正しくない場合、前記第１メモリの読み出しレベルをＥ（Ａ＜Ｅ＜Ｂ）及びＦ（Ｂ＜Ｆ＜Ｃ）で再度読み出すことを特徴とする請求項１５記載の半導体記憶システム。
【請求項１７】
１セルにｋビットのデータを記憶する第１メモリセルと、
１セルにｈビット（ｈ＜ｋ）のデータを記憶する第２メモリセルを有し、
前記第１メモリセルにｉビット（ｉ＝ａ＋ｂ）（ｉ＜＝ｋ）のデータを記憶する場合、前記第１メモリセルに第１回目の書き込みでａビットのデータと、前記第２メモリセルにｂビットのデータを記憶した後、前記第２メモリセルのｂビットのデータと、前記第１メモリセルのａビットのデータを読出し、前記第１メモリセルの第２回目の書き込みでｉ＝（ａ＋ｂ）ビットのデータを記憶し、前記第２メモリセルのｂビットのデータにより、前記第１メモリセルから読み出し、前記ｉ＝（ａ＋ｂ）ビットのデータを復元させたデータに基づき、前記第１メモリセルの第３回目の書き込みで前記ｉ＝（ａ＋ｂ）ビットのデータを記憶することを特徴とする半導体記憶装置。
【請求項１８】
前記第１メモリセルは、２ビットのデータを記憶し（ｉ＝２）、前記第２メモリセルは１ビットのデータ（ｈ＝１）を記憶し、前記第１メモリの書き込みベリファイ読み出しレベルをＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）とする場合、前記第１メモリセルの読み出し動作の読み出しレベルは、Ａ、Ｂ、Ｃ及び、Ｅ（Ａ＜Ｅ＜Ｂ）、Ｆ（Ｂ＜Ｆ＜Ｃ）であることを特徴とする請求項１７記載の半導体記憶装置。
【請求項１９】
前記第１メモリセルにＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）の書き込みベリファイ読み出しレベルにより２ビットのデータ（ｉ＝２）を記憶し、前記第２メモリセルに１ビットのデータ（ｈ＝１）を記憶した後、読み出し動作により、読み出しレベルをＡ、Ｂ、Ｃとして読み出された前記第１メモリセルの２ビットのデータと、前記第２メモリセルから読み出された１ビットのデータの３ビットのデータによる８通りの組み合わせの内、前記第１メモリセルに書き込まれる２ビットのデータと前記第２メモリセルに書き込まれる１ビットの２ビットのデータによる４通りの組み合わせは、正しいデータとされ、４通りの組み合わせ以外の場合、読み出されたデータは正しくないデータとされることを特徴とする請求項１７記載の半導体記憶装置。
【請求項２０】
前記読み出されたデータが正しくない場合、前記第１メモリの読み出しレベルをＥ（Ａ＜Ｅ＜Ｂ）及びＦ（Ｂ＜Ｆ＜Ｃ）で再度読み出すことを特徴とする請求項１９記載の半導体記憶装置。
【請求項２１】
１セルにｋビットのデータを記憶する第１メモリセルを有し、
前記第１メモリセルにｉビット（ｉ＝ａ＋ｂ）（ｉ＜＝ｋ）のデータを記憶する場合、前記第１メモリセルに第１回目の書き込みでａビットのデータを記憶した後、第２回目の書き込みでｉ＝（ａ＋ｂ）ビットのデータを記憶し、前記第１メモリセルから読み出し、前記ｉ＝（ａ＋ｂ）ビットのデータを前記ｂビットのデータにより復元させた、復元させたデータに基づき、前記第１メモリセルの第３回目の書き込みで前記ｉ＝（ａ＋ｂ）ビットのデータを記憶することを特徴とする半導体記憶装置。
【請求項２２】
前記第２回目の書き込み時の前記ａビットのデータは、前記第１メモリセルから読み出されることを特徴とする請求項２１の半導体記憶装置。
【請求項２３】
前記第１メモリセルは、２ビットのデータを記憶し（ｉ＝２、ａ＝１、ｂ＝１）、前記第１メモリの書き込みベリファイ読み出しレベルをＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）とする場合、前記第２回目の書き込み後、前記第1メモリセルから前記ｉビットのデータを復元させる読出し動作の読み出しレベルは、Ａ、Ｂ、Ｃ及び、Ｅ（Ａ＜Ｅ＜Ｂ）、Ｆ（Ｂ＜Ｆ＜Ｃ）であることを特徴とする請求項２１記載の半導体記憶装置。
【請求項２４】
前記第２回目の書き込みで、前記第１メモリセルにＡ、Ｂ、Ｃ（Ａ＜Ｂ＜Ｃ）の書き込みベリファイ読み出しレベルにより２ビットのデータ（ｉ＝２）を記憶した後、読み出し動作により、読み出しレベルをＡ、Ｂ、Ｃとして読み出された前記第１メモリセルの２ビットのデータと、前記ｂ（ｂ＝１）ビットのデータの３ビットのデータによる８通りの組み合わせの内、前記第１メモリセルに書き込まれる２ビットのデータと前記ｂ（ｂ＝１）ビットのデータによる４通りの組み合わせは、正しいデータとされ、４通りの組み合わせ以外の場合、読み出されたデータは正しくないデータとされることを特徴とする請求項２１記載の半導体記憶装置。
【請求項２５】
前記読み出されたデータが正しくない場合、前記第１メモリの読み出しレベルをＥ（Ａ＜Ｅ＜Ｂ）及びＦ（Ｂ＜Ｆ＜Ｃ）で再度読み出すことを特徴とする請求項２４記載の半導体記憶装置。
【請求項２６】
前記第１メモリセルに隣接する第３メモリセルを有し、前記第１メモリセルに第１回目の書き込み後、第２回目の書き込み前に、前記第３メモリセルに書き込みを行うことを特徴とする請求項１７又は２１記載の半導体記憶装置。
【請求項２７】
前記第１メモリセルに隣接する第３メモリセルを有し、前記第１メモリセルに第２回目の書き込み後、第３回目の書き込み前に、前記第３メモリセルに書き込みを行うことを特徴とする請求項１７又は２１記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＮＡＮＤ型フラッシュメモリに係わり、多値データを記憶することが可能な半導体記憶装置と半導体記憶システムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、ロウ方向に並んだ複数のセルの全て、又は半数のセルがそれぞれビット線を介して各書き込み、及び読み出し用のラッチ回路に接続され、このロウ方向に並んだ全てのセル、又は半数のセル（例えば２〜８ｋＢのセル）に対して一括して書き込み、又は読み出し動作が行なわれる。
【０００３】
書き込み、及び読み出し単位をページと言い、複数のページによりブロックが構成される。メモリセルの消去はブロック単位に行われる。消去動作によりメモリセルから電子が引き抜かれて閾値電圧が負とされ、書き込み動作によりメモリセル内に電子を導入することにより閾値電圧が正に設定される。
【０００４】
近時、１つのメモリセルに複数の閾値電圧（以下、閾値レベルとも言う）の１つを設定し、複数ビットのデータを記憶する多値メモリが開発されている。例えば、４つの閾値レベルを設けた場合、１セルに２ビットのデータを記憶でき、８つの閾値レベルを設けた場合１セルに３ビットのデータを記憶できる。さらに、１６個の閾値レベルを設けた場合、１セルに４ビットのデータを記憶することが可能である。
【０００５】
一方、素子の微細化に伴い、隣接セル間の容量結合が増大する傾向にある。このため、先に書き込んだセルの閾値レベルが、隣接セルの書き込みに伴い変動してしまうという問題がある。これを防止するため、メモリセルの閾値レベルをターゲットレベルに正確（fine）に書き込む前に、隣接セルをターゲットの閾値レベルより低いレベルにラフに書き込んでおき、この後、メモリセルの閾値レベルをターゲットレベルにファインに書き込むことにより、隣接セルの書き込みによる閾値レベルの変動を抑えることが提案されている（例えば特許文献１参照）。
【０００６】
しかし、ＮＡＮＤ型フラッシュメモリは、外部よりページ単位でデータが送られてくる。このため、次に書き込まれる隣接セルのデータが分からない。そこで、１セルにｎビットのデータを多値レベルとして書き込む多値ブロックとは別に、ｎビット以下データ、例えば１ビットを２値レベルで書き込む２値ブロックを用意し、先ず、２値ブロックに数ページ分のデータを２値レベルで書き込み、この後、このデータを多値ブロックに移す技術が開発されている（例えば、特許文献２参照）。
【０００７】
しかし、例えば、１セルに４ビットを記憶する場合、又は１セルに３ビットを記憶する場合の書き込みは、２値の書き込みに比べて書き込み速度が遅い。このため、２値ブロックへの書き込みの増加分は大きくない。しかし、１セルに２ビット（４値）を書き込む場合、２値ブロックへの書き込み時間は、４値への書き込み時間と大差がない。このため、２値ブロックへの書き込みの増加分が相対的に大きくなり、書き込みパフォーマンスが劣化するという問題がある。
【０００８】
このため、隣接セルの容量結合の影響を抑制でき、且つ高速な書き込みが可能な半導体記憶装置が望まれている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−３２３７３１号公報
【特許文献２】特開２００７−３０５２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、隣接セルの容量結合の影響を抑制でき、且つ高速な書き込みが可能な半導体記憶装置と半導体記憶システムを提供しようとするものである。
【課題を解決するための手段】
【００１１】
本発明の半導体記憶装置の態様は、１セルにｋビットのデータを記憶する第１メモリセルと、１セルにｈビット（ｈ＜ｋ）のデータを記憶する第２メモリセルを有し、前記第１メモリセルにｉビット（ｉ＜＝ｋ）のデータを記憶し、前記第２メモリセルに前記ｉビットのデータより生成されるｈビット（ｈ＜ｉ）のデータを記憶することを特徴とする。
【００１２】
本発明の半導体記憶システムの態様は、１セルにｋビットのデータを記憶する第１メモリセルと、前記第１メモリセルに記憶するｉビット（ｉ＜＝ｋ）のデータを有し、前記ｉビットのデータを前記第１メモリセルに記憶後、前記ｉビットのデータよりｈビット（ｈ＜ｉ）のデータを生成した後、前記ｈビットのデータを使用して、前記第1メモリセルからｉビットのデータを読出し、読み出されたｉビットのデータを再度、第１メモリセルに記憶することを特徴とする。
【００１３】
本発明の半導体記憶装置の態様は、１セルにｋビットのデータを記憶する第１メモリセルと、１セルにｈビット（ｈ＜ｋ）のデータを記憶する第２メモリセルを有し、前記第１メモリセルにｉビット（ｉ＝ａ＋ｂ）（ｉ＜＝ｋ）のデータを記憶する場合、前記第１メモリセルに第１回目の書き込みでａビットのデータと、前記第２メモリセルにｂビットのデータを記憶した後、前記第２メモリセルのｂビットのデータと、前記第１メモリセルのａビットのデータを読出し、前記第１メモリセルの第２回目の書き込みでｉ＝（ａ＋ｂ）ビットのデータを記憶し、前記第２メモリセルのｂビットのデータにより、前記第１メモリセルから読み出し、前記ｉ＝（ａ＋ｂ）ビットのデータを復元させたデータに基づき、前記第１メモリセルの第３回目の書き込みで前記ｉ＝（ａ＋ｂ）ビットのデータを記憶することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、隣接セルの容量結合の影響を抑制でき、且つ高速な書き込みが可能な半導体記憶装置と半導体記憶システムを提供できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に適用される半導体記憶装置としてのＮＡＮＤ型フラッシュメモリを示す構成図。
【図２】図１に示すメモリセルアレイ１及びビット線制御回路２の構成の一例を示す回路図。
【図３】図１に示すメモリセルアレイ１及びビット線制御回路２の構成の他の例を示す回路図。
【図４】図４（ａ）はメモリセルの断面図、図４（ｂ）は選択ゲートの断面図。
【図５】第１の実施形態に対応する半導体記憶装置の断面図。
【図６】図５の消去、プログラム、リード時における各部の電圧を示す図。
【図７】図２、図３に示すデータ記憶回路の一部を示すものであり、センスアンプユニットを示す回路図。
【図８】図２、図３に示すデータ記憶回路の一部を示すものであり、データ制御ユニットを示す回路図。
【図９】メモリセルアレイの記憶領域を概略的に示す構成図。
【図１０】図９に示す２値領域としてのブロックＳＬＢの閾値分布の例を示す図。
【図１１】メモリセルの書き込み順序の例を示す図。
【図１２】第１の実施形態の書き込み動作を示す図。
【図１３】多値領域としてのブロックＭＬＢのメモリセルに書き込まれる閾値レベルの変化を概略的に示す図。
【図１４】第１の実施形態のプログラム動作を示す図。
【図１５】第１の実施形態の書き込みシーケンスを示すタイミング図。
【図１６】図１４の変形例を示すものであり、プログラム動作を示す図。
【図１７】データ復元動作を示す図。
【図１８】データ復元動作を示す図。
【図１９】図１５に示す書き込みシーケンスの第１の変形例を示すタイミング図。
【図２０】書き込みシーケンス作の第２の変形例を示すタイミング図。
【図２１】第２の実施形態に係る書き込みシーケンスを示すタイミング図。
【図２２】第３の実施形態に係る書き込み順序を示す図。
【図２３】第３の実施形態に係る書き込みシーケンスを示すタイミング図。
【図２４】第３の実施形態の変形例を示すタイミング図。
【図２５】第４の実施形態を示すタイミング図。
【図２６】第５の実施形態に適用されるページ内のデータの割り当て方式を示す図。
【図２７】第５の実施形態に係る書き込み動作を示すフローチャート。
【図２８】第５の実施形態に係る読み出し動作を示すフローチャート。
【図２９】第６の実施形態に適用されるページ内のデータの割り当て方式を示す図。
【図３０】第７の実施形態に係り、８値のデータを記憶する場合の例を示す図。
【図３１】第９の実施形態に係り、８値のデータを記憶する場合の例を示す図。
【図３２】実施形態に係る半導体記憶装置が適用されるアプリケーションを示す構成図。
【図３３】他のアプリケーションの例を示す構成図。
【図３４】他のアプリケーションの例を示す構成図。
【図３５】他のアプリケーションの例を示す構成図。
【図３６】他のアプリケーションの例を示す構成図。
【図３７】他のアプリケーションの例を示す構成図。
【図３８】他のアプリケーションの例を示す構成図。
【図３９】他のアプリケーションの例を示す構成図。
【図４０】他のアプリケーションの例を示す構成図。
【図４１】他のアプリケーションの例を示す構成図。
【図４２】第８の実施形態に係り、多値領域としてのブロックＭＬＢのメモリセルに書き込まれる閾値レベルの変化を概略的に示す図。
【図４３】第８の実施形態に係る書き込み順序を示す図。
【図４４】第８の実施形態に係る書き込みシーケンスの例を示すタイミング図。
【図４５】第１０の実施形態に係る書き込みシーケンスの例を示すタイミング図。
【図４６】第８の実施形態に係る書き込みシーケンスの例を示すタイミング図。
【図４７】第１１の実施形態に係る書き込み順序を示す図。
【図４８】第１１の実施形態に係る書き込み動作に伴う閾値レベルの変化を示す図。
【図４９】第１１の実施形態に係る書き込みシーケンスの例を示すタイミング図。
【図５０】図４９に続く書き込みシーケンスを示すタイミング図。
【図５１】図５０に続く書き込みシーケンスを示すタイミング図。
【図５２】図４９の変形例を示すタイミング図。
【図５３】図４９の他の変形例を示すタイミング図。
【図５４】図４９の他の変形例を示すタイミング図。
【図５５】図４９の他の変形例を示すタイミング図。
【図５６】第１２の実施形態に係る書き込みシーケンスの例を示すタイミング図。
【図５７】第１３の実施形態に係る書き込み順序を示す図。
【図５８】第１３の実施形態に係る書き込み動作に伴う閾値レベルの変化を示す図。
【図５９】第１３の実施形態に係る書き込みシーケンスの例を示すタイミング図。
【図６０】図５９に続く書き込みシーケンスを示すタイミング図。
【図６１】第１４の実施形態に係る書き込みデータと、読み出しデータとの関係を示す図。
【図６２】第１５の実施形態に係る書き込みデータと、読み出しデータとの関係を示す図。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１７】
（第１の実施形態）
図１は、メモリセルに２値（１ビット）、又は４値（２ビット）を記憶する半導体記憶装置としてのＮＡＮＤ型フラッシュメモリの構成を示している。
【００１８】
メモリセルアレイ１は、複数のビット線と複数のワード線と共通ソース線を含み、例えばＥＥＰＲＯＭセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ１には、ビット線を制御するためのビット制御回路２とワード線制御回路６が接続されている。
【００１９】
ビット線制御回路２は、ビット線を介してメモリセルアレイ１中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ１中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路２には、カラムデコーダ３、データ入出力バッファ４が接続されている。ビット線制御回路２内のデータ記憶回路はカラムデコーダ３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ４を介してデータ入出力端子５から外部へ出力される。データ入出力端子５は、メモリチップ外部のホストに接続される。このホストは例えばマイクロコンピュータにより構成され、前記データ入出力端子５から出力されたデータを受ける。さらに、ホストは、ＮＡＮＤ型フラッシュメモリの動作を制御する各種コマンドＣＭＤ、アドレスＡＤＤ、及びデータＤＴを出力する。ホストからデータ入出力端子５に入力された書き込みデータは、データ入出力バッファ４を介して、カラムデコーダ３によって選択されたデータ記憶回路に供給され、コマンド及びアドレスは制御信号及び制御電圧発生回路７に供給される。
【００２０】
ワード線制御回路６は、メモリセルアレイ１に接続されている。このワード線制御回路６は、メモリセルアレイ１中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
【００２１】
メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、及びワード線制御回路６は、制御信号及び制御電圧発生回路７に接続され、この制御信号及び制御電圧発生回路７によって制御される。制御信号及び制御電圧発生回路７は、制御信号入力端子８に接続され、ホストから制御信号入力端子８を介して入力される制御信号ＡＬＥ（アドレス・ラッチ・イネーブル）、ＣＬＥ（コマンド・ラッチ・イネーブル）、ＷＥ（ライト・イネーブル）によって制御される。この制御信号及び制御電圧発生回路７は、データの書き込み時にワード線やビット線の電圧を発生するとともに、後述するように、ウェルに供給される電圧を発生する。制御信号及び制御電圧発生回路７は、例えばチャージポンプ回路のような昇圧回路を含み、プログラム電圧等の高電圧を生成可能とされている。
【００２２】
前記ビット線制御回路２、カラムデコーダ３、ワード線制御回路６、制御信号及び制御電圧発生回路７は書き込み回路、及び読み出し回路を構成している。
【００２３】
図２は、図１に示すメモリセルアレイ１及びビット線制御回路２の構成の一例を示している。メモリセルアレイ１には複数のＮＡＮＤユニットが配置されている。１つのＮＡＮＤユニットは、例えば直列接続された例えば６４個のＥＥＰＲＯＭからなるメモリセルＭＣと、選択ゲートＳ１、Ｓ２とにより構成されている。選択ゲートＳ２はビット線ＢＬ０ｅに接続され、選択ゲートＳ１はソース線ＳＲＣに接続されている。各ロウに配置されたメモリセルＭＣの制御ゲートはワード線ＷＬ０〜ＷＬ６３に共通接続されている。また、選択ゲートＳ２はセレクト線ＳＧＤに共通接続され、選択ゲートＳ１はセレクト線ＳＧＳに共通接続されている。
【００２４】
ビット線制御回路２は複数のデータ記憶回路１０を有している。各データ記憶回路１０には、一対のビット線（ＢＬ０ｅ、ＢＬ０ｏ）、（ＢＬ１ｅ、ＢＬ１ｏ）…（ＢＬｉｅ、ＢＬｉｏ）、（ＢＬｎｅ、ＢＬｎｏ）が接続されている。
【００２５】
メモリセルアレイ１は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のＮＡＮＤユニットにより構成され、例えばこのブロック単位でデータが消去される。また、消去動作は、データ記憶回路１０に接続されている２本のビット線について同時に行なわれる。
【００２６】
また、ビット線の１つおきに配置され、１つのワード線に接続された複数のメモリセル（破線で囲まれた範囲のメモリセル）は、１セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。すなわち、ロウ方向に配置された複数のメモリセルのうち半数のメモリセルが対応するビット線に接続される。このため、ロウ方向に配置された複数のメモリセルの半数ずつに対して書き込み又は読み出し動作が実行される。
【００２７】
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路１０に接続されている２本のビット線（ＢＬｉｅ、ＢＬｉｏ）のうち外部より供給されるアドレス信号（ＹＡ０、ＹＡ１…ＹＡｉ…ＹＡｎ）に応じて１本のビット線が選択される。さらに、外部アドレスに応じて、１本のワード線が選択され、破線で示す、２ページが選択される。この２ページの切り替えはアドレスによって行われる。
【００２８】
１セルに２ビット記憶する場合は２ページであるが、１セルに１ビット記憶する場合は１ページ、１セルに３ビット記憶する場合は３ページ、１セルに４ビット記憶する場合は４ページとなる。
【００２９】
図３は、図１に示すメモリセルアレイ１及びビット線制御回路２の構成の他の例を示している。図２に示す構成の場合、データ記憶回路１０に２本のビット線（ＢＬｉｅ、ＢＬｉｏ）が接続されていた。これに対して、図３に示す構成の場合、各ビット線にデータ記憶回路１０が接続され、ロウ方向に配置された複数のメモリセルは、全て対応するビット線に接続される。このため、ロウ方向に配置された全てのメモリセルに対して書き込み又は読み出し動作を行うことができる。
【００３０】
尚、以下の説明は、図２に示す構成、及び図３に示す構成のいずれも適用することが可能であるが、図３を使用する場合について説明する。
【００３１】
図４（ａ）（ｂ）はメモリセル及び選択トランジスタの断面図を示している。図４（ａ）はメモリセルを示している。基板５１（後述するＰ型ウェル領域５５）にはメモリセルのソース、ドレインとしてのｎ型拡散層４２が形成されている。Ｐ型ウェル領域５５の上にはゲート絶縁膜４３を介して浮遊ゲート（ＦＧ）４４が形成され、この浮遊ゲート４４の上には絶縁膜４５を介して制御ゲート（ＣＧ）４６が形成されている。図４（ｂ）は選択ゲートを示している。Ｐ型ウェル領域５５にはソース、ドレインとしてのｎ型拡散層４７が形成されている。Ｐ型ウェル領域５５の上にはゲート絶縁膜４８を介して制御ゲート４９が形成されている。
【００３２】
図５は、ＮＡＮＤ型フラッシュメモリの断面図を示している。例えばＰ型半導体基板５１内には、Ｎ型ウェル領域５２、５３、５４、Ｐ型ウェル領域５６が形成されている。Ｎ型ウェル領域５２内にはＰ型ウェル領域５５が形成され、このＰ型ウェル領域５５内にメモリセルアレイ１を構成する低電圧ＮチャネルトランジスタＬＶＮＴｒが形成されている。さらに、前記Ｎ型ウェル領域５３、Ｐ型ウェル領域５６内に、データ記憶回路１０を構成する低電圧ＰチャネルトランジスタＬＶＰＴｒ、低電圧ＮチャネルトランジスタＬＶＮＴｒが形成されている。前記基板５１内には、ビット線とデータ記憶回路１０を接続する高電圧ＮチャネルトランジスタＨＶＮＴｒが形成されている。また、前記Ｎ型ウェル領域５４内には例えばワード線駆動回路等を構成する高電圧ＰチャネルトランジスタＨＶＰＴｒが形成されている。図５に示すように、高電圧トランジスタＨＶＮＴｒ、ＨＶＰＴｒは、低電圧トランジスタＬＶＮＴｒ、ＬＶＰＴｒに比べて例えば厚いゲート絶縁膜を有している。
【００３３】
図６は、図５に示す各領域に供給される電圧の例を示している。消去、プログラム、リードにおいて、各領域に図６に示すような電圧が供給される。ここで、Ｖｅｒａは、データの消去時に基板に印加される電圧、Ｖｓｓは接地電圧、Ｖｄｄは電源電圧である。ＶＸはＶｄｄより高い昇圧電圧又は降圧した電圧、ＶｐｇｍＨはデータの書き込み時に、ローデコーダ内のＮチャネルＭＯＳトランジスタのゲートに印加される電圧であり、ＮチャネルＭＯＳトランジスタの閾値電圧分低下せずに、ワード線の書き込み電圧Ｖｐｇｍを通すための電位である。つまり、ワード線に供給される電圧Ｖｐｇｍ＋Ｖｔｈ（Ｖｔｈ：ＮチャネルＭＯＳトランジスタの閾値電圧）である。ＶｒｅａｄＨは読み出し時に、ローデコーダ内のＮチャネルＭＯＳトランジスタのゲートに印加される電圧であり、ＮチャネルＭＯＳトランジスタの閾値電圧分低下せずに、Ｖｒｅａｄを通すための電位である。つまり、ワード線に供給される電圧であり、読み出し時にＶｒｅａｄ＋Ｖｔｈ（Ｖｔｈ：ＮチャネルＭＯＳトランジスタの閾値電圧）である。
【００３４】
その他、データの書き込み時、非選択セルのワード線の供給される電圧としてＶｐａｓｓ、データの読み出し時に非選択ワード線に供給される電圧としてＶｒｅａｄがある。
【００３５】
図７、図８は、図２及び図３に示すデータ記憶回路１０の一例を示している。データ記憶回路１０は、図７に示すセンスアンプユニット（ＳＡＵ）１０ａと、図８に示すデータ制御ユニット（ＤＣＵ）１０ｂと、により構成されている。
【００３６】
図７において、センスアンプユニット１０ａは、複数のＮチャネルＭＯＳトランジスタ（以下、ＮＭＯＳと称す）２１〜２７と、複数のＰチャネルＭＯＳトランジスタ（以下、ＰＭＯＳと称す）２８、２９と、トランスファーゲート３０、３１、ラッチ回路３２、及びキャパシタ３３とにより構成されている。ラッチ回路３２は例えばクロックドインバータ回路３２ａ、３２ｂにより構成されている。
【００３７】
ＮＭＯＳ２１の電流通路の一端は、電源Ｖｄｄが供給されるノードに接続され、他端はトランスファーゲート３０、ＮＭＯＳ２４、トランスファーゲート３１を介して接地されている。ＮＭＯＳ２４とトランスファーゲート３１の接続ノードにはＮＭＯＳ２５の電流通路の一端が接続されている。このＮＭＯＳ２５の他端は、メモリセルアレイに配置されたビット線ＢＬに接続されている。ＮＭＯＳ２１には、ＮＭＯＳ２２、２３の直列回路が並列接続されている。
【００３８】
また、ＰＭＯＳ２８の電流通路の一端は、電源Ｖｄｄが供給されるノードに接続され、他端はＰＭＯＳ２９を介してラッチ回路３２を構成するインバータ回路３２ａの入力端に接続されるとともに、ＮＭＯＳ２６を介して接地されている。このインバータ回路３２ａと交差接続されたクロックドインバータ回路３２ｂの入力端は、ＮＭＯＳ２７を介してデータ制御ユニット（ＤＣＵ）１０ｂに接続されている。また、ＰＭＯＳ２９のゲートは、ＮＭＯＳ２２，２３の接続ノードに接続され、この接続ノードにキャパシタ３３の一端が接続されている。このキャパシタ３３の他端にはクロック信号ＣＬＫが供給されている。
【００３９】
ＮＭＯＳ２１のゲートには信号ＢＬＸが供給されている。トランスファーゲート３０を構成するＮＭＯＳのゲートにはラッチ回路３２を構成するインバータ回路３２ａの出力端の信号ＬＡＴが供給され、ＰＭＯＳトランジスタのゲートには、インバータ回路３２ａの入力端の信号ＩＮＶが供給されている。ＮＭＯＳ２４のゲートには、信号ＢＬＣが供給され、ＮＭＯＳ２５のゲートには信号ＢＬＳが供給されている。
【００４０】
ＮＭＯＳ２２のゲートには信号ＨＬＬが供給され、ＮＭＯＳ２３のゲートには、信号ＸＸＬが供給されている。
【００４１】
ＰＭＯＳ２８のゲートには信号ＳＴＢが供給され、ＮＭＯＳ２６のゲートにはリセット信号ＲＳＴが供給されている。ＮＭＯＳ２７のゲートには信号ＮＣＯが供給されている。
【００４２】
上記センスアンプユニットの動作について概略的に説明する。
【００４３】
（書き込み動作）
メモリセルにデータを書き込む場合、先ず、信号ＳＴＢがハイレベル（以下、Ｈレベルと記す）、リセット信号ＲＳＴが一旦Ｈレベルとされ、ラッチ回路３２がリセットされてＬＡＴがＨレベル、信号ＩＮＶがローレベル（以下、Ｌレベルと記す）とされる。
【００４４】
この後、信号ＮＣＯがＨレベルとされ、データ制御ユニット１０ｂからデータが取り込まれる。このデータが書き込みを示すＬレベル（“０”）である場合、信号ＬＡＴがＬレベル，信号ＩＮＶがＨレベルとなる。また、データが非書き込みを示すＨレベル（“１”）である場合、ラッチ回路３２のデータは変わらず、ＬＡＴがＨレベル、信号ＩＮＶがＬレベルに保持される。
【００４５】
次いで、信号ＢＬＸ、ＢＬＣ、ＢＬＳをＨレベルとすると、ラッチ回路の信号ＬＡＴがＬレベル、信号ＩＮＶがＨレベル（書き込み）の場合、トランスファーゲート３０がオフ、トランスファーゲート３１がオンしてビット線ＢＬはＶｓｓとなる。この状態において、ワード線がプログラム電圧Ｖｐｇｍとなると、メモリセルにデータが書き込まれる。
【００４６】
一方、ラッチ回路３２において、信号ＬＡＴがＨレベル、信号ＩＮＶがＬレベル（非書き込み）の場合、トランスファーゲート３０がオン、トランスファーゲート３１がオフであるため、ビット線ＢＬはＶｄｄに充電される。このため、ワード線がＶｐｇｍとなった場合、セルのチャネルが高い電位にブーストされるため、メモリセルにデータが書き込まれない。
【００４７】
（読み出し動作、プログラムベリファイ読み出し動作）
メモリセルからデータを読み出す場合、先ず、セット信号ＲＳＴが一旦Ｈレベルとされ、ラッチ回路３２がリセットされ、信号ＬＡＴがＨレベル、信号ＩＮＶがＬレベルとされる。この後、信号ＢＬＳ、ＢＬＣ、ＢＬＸ、ＨＬＬ、ＸＸＬが所定の電圧とされ、ビット線ＢＬが充電される。これとともに、キャパシタ３３のＮｏｄｅがＶｄｄに充電される。ここで、メモリセルの閾値電圧が読み出しレベルより高い場合、メモリセルはオフ状態であり、ビット線はＨレベルに保持される。つまり、ＮｏｄｅはＨレベルに保持される。また、メモリセルの閾値電圧が読み出しレベルより低い場合、メモリセルはオン状態となり、ビット線ＢＬの電荷が放電される。このため、ビット線ＢＬはＬレベルとなる。このため、ＮｏｄｅはＬレベルとなる。
【００４８】
次いで、信号ＳＴＢがＬレベルされると、メモリセルがオンしている場合、ＮｏｄｅはＬレベルであるため、ＰＭＯＳ２９がオンし、ラッチ回路３２の信号ＩＮＶがＨレベル、信号ＬＡＴがＬレベルとなる。一方、メモリセルがオフしている場合、ラッチ回路３２の信号ＩＮＶがＬレベル、信号ＬＡＴがＨレベルに保持される。
【００４９】
この後、信号ＮＣＯがＨレベルとされると、ＮＭＯＳ２７がオンし、ラッチ回路３２のデータがデータ制御ユニット１０ｂへ転送される。
【００５０】
書き込み動作後、メモリセルの閾値電圧を検証するプログラムベリファイ動作は、上記読み出し動作とほぼ同様である。
【００５１】
図８は、データ制御ユニット（ＤＣＵ）１０ｂの一例を示している。
【００５２】
図８に示すデータ制御ユニット１０ｂは、演算回路４０と複数のデータラッチ回路ＡＤＬ、ＢＤＬ、ＸＤＬ、及びＮＭＯＳ４１により構成されている。
【００５３】
演算回路４０は、バス（以下、ＩＢＵＳと記す）と、ＩＢＵＳの両端に接続され、相補的に動作するトランスファーゲート４２、４３と、ＩＢＵＳのデータをラッチするラッチ回路４４、このラッチ回路４４のデータに応じてデータラッチ回路ＡＤＬ、ＢＤＬ、ＸＤＬのレベルを設定する設定回路４５とにより構成されている。
【００５４】
トランスファーゲート４２は、相補的な信号ＣＯＮＤと信号ＣＯＮＳにより動作し、センスアンプユニットＳＡＵ１０ａのバス（ＳＢＵＳと記す）とＩＢＵＳを接続する。トランスファーゲート４３は、相補的な信号ＣＯＮＳと信号ＣＯＮＤにより動作し、ＩＢＵＳとデータラッチ回路ＡＤＬ、ＢＤＬ、ＸＤＬが接続されたバス（以下、ＤＢＵＳと記す）とを接続する。トランスファーゲート４２がオンのとき、トランスファーゲート４３はオフであり、トランスファーゲート４２のオフのとき、トランスファーゲート４３がオンである。
【００５５】
ラッチ回路４４は、複数のＰＭＯＳ４６〜４９と、複数のＮＭＯＳ５０〜５６及びインバータ回路６８により構成されている。ＰＭＯＳ４６とＮＭＯＳ５０のゲートにはセット信号ＳＥＴが供給され、ＰＭＯＳ４８のゲートにはリセット信号ＲＥＳＴが供給されている。ＮＭＯＳ５３のゲートには信号ＩＦＨが供給され、ＮＭＯＳ５５のゲートには信号ＩＦＬが供給されている。ＮＭＯＳ５４のゲートはインバータ回路６８を介してＩＢＵＳに接続され、ＮＭＯＳ５６のゲートはＩＢＵＳに接続されている。
【００５６】
設定回路４５は、ＰＭＯＳ５７〜６０と、ＮＭＯＳ６１〜６４により構成されている。ＰＭＯＳ５７のゲート及びＮＭＯＳ６１のゲートには、信号ＦＡＩＬが供給されている。この信号ＦＡＩＬは、ラッチ回路４４の一方の出力端としてのＰＭＯＳ４７とＮＭＯＳ５１の接続ノードの信号である。ＰＭＯＳ５９とＮＭＯＳ６３のゲートには、信号ＭＴＣＨが供給されている。この信号ＭＴＣＨは、ラッチ回路４４の他方の出力端としてのＰＭＯＳ４９とＮＭＯＳ５２の接続ノードの信号である。さらに、ＰＭＯＳ５８のゲートには信号Ｍ２ＨＢが供給され、ＰＭＯＳ６０のゲートには信号Ｆ２ＨＢが供給されている。ＮＭＯＳ６２のゲートにはＦ２Ｌが供給され、ＮＭＯＳ６４のゲートには信号Ｍ２Ｌが供給されている。
【００５７】
データラッチ回路ＡＤＬ、ＢＤＬ、ＸＤＬは、同一の構成であり、ラッチ回路６６と、このラッチ回路６６をＤＢＵＳに接続するトランスファーゲート６５と、により構成されている。各トランスファーゲート６５は、信号ＢＬＣＡ、ＢＬＣＢ、ＢＬＣＸにより制御されている。データラッチ回路ＸＤＬは、ＮＭＯＳ４１を介して外部のＩＯに接続される。ＮＭＯＳ４１のゲートには信号ＣＳＬが供給されている。
【００５８】
データ制御ユニット１０ｂは、前述したように、書き込みデータを保持するとともに読み出し時に、メモリセルから読み出されたデータを保持する。
【００５９】
データ入出力バッファ６から供給された２ビットの書き込みデータは、データラッチ回路ＸＤＬを介して、例えばデータラッチ回路ＡＤＬ、ＢＤＬに１ビットずつラッチされる。
【００６０】
図８に示す演算回路４０は、データラッチ回路ＡＤＬ、ＢＤＬのデータに対してＡＮＤやＯＲ、排他的ＮＯＲ等の演算を実行することが可能である。例えばＡＮＤの場合、データラッチ回路ＡＤＬ、ＢＤＬに保持されたデータがＤＢＵＳ及びＩＢＵＳに出力される。この場合、データラッチ回路ＡＤＬ、ＢＤＬに保持されたデータが共に“１”である場合のみ、ＩＢＵＳがＨレベルとなり、その他の場合、Ｌレベルとなる。すなわち、非書き込み時だけＩＢＵＳが“１”となり、書き込み時、ＩＢＵＳが“０”となる。このデータを、ＳＢＵＳを介し、図７に示すセンスアンプユニット１０ａに転送することで、書き込みが行われる。
【００６１】
図８に示す演算回路４０は、複数の図７に示すセンスアンプユニット（ＳＡＵ）１０ａ及び、複数の図８に示すデータ制御ユニット（ＤＣＵ）１０ｂに対し、１つの割合で配置することも可能である。これにより、回路面積を削減することが出来る。
【００６２】
演算回路４０の動作は種々変形可能であり、例えば１つの論理演算も種々の制御方法が適用可能であり、必要に応じて制御方法を変えることが可能である。
【００６３】
本ＮＡＮＤ型フラッシュメモリは、多値メモリである。ため、１セルに２ビットのデータを記憶することができる。この２ビットの切り替えはアドレス（第１ページ、第２ページ）によって行なわれる。１セルに２ビット記憶する場合、２ページであるが、１セルに３ビットを記憶する場合は、アドレス（第１ページ、第２ページ、第３ページ）によって各ビットが切り替えられる。さらに、１セルに４ビットを記憶する場合は、アドレス（第１ページ、第２ページ、第３ページ、第４ページ）によってビットが切り替えられる。
【００６４】
図９は、メモリセルアレイの記憶領域の構成を概略的に示している。メモリセルアレイ１は、前述したように複数のブロックを有している。本実施形態において、これらブロックは、ブロックＭＬＢと、ブロックＳＬＢと定義される。ブロックＭＬＢは、１つのメモリセルにｎビットを記憶する多値レベルセル（ＭＬＣ）により構成され、ブロックＳＬＢは、１つのメモリセルにｋビット（ｋ＜ｎ）を記憶するセルにより構成される。本実施形態では、簡単のために、例えばｋ＝１とし、ブロックＳＬＢは、２値データ（１ビット）を記憶するセル（ＳＬＣ）により構成されたブロックとする。多値領域としてのブロックＭＬＢ、及び２値領域としてのブロックＳＬＢの数や、メモリセルアレイ１内における位置は任意である。ブロックＭＬＢ及びブロックＳＬＢのアドレスは、例えば外部のコントローラにより制御される。
【００６５】
また。本実施形態は、図３に示すように、ロウ方向に並んだ全てのセルを一括して書き込み読み出す場合について説明する。
【００６６】
図１０は、ブロックＳＬＢ内のメモリセルに書き込まれる閾値レベルと読み出しレベルの一例を示している。消去動作によりメモリセルのデータは、“１”の閾値レベルとなり、“０”データが書き込まれることにより、“０”の閾値レベルとなる。
【００６７】
データの読み出しは、“１”と“０”の閾値レベルの間のレベルＳＬＣ＿Ｒに基づき、メモリセルの閾値レベルが判別される。書き込み時のベリファイレベルは、データリテンションマージンを持たせるため、読み出し時のレベルと若干異なった値とする。すなわち、本実施形態において、読み出し時のレベルはＳＬＣ＿Ｒ、ベリファイ読み出し時のレベルはＳＬＣ＿Ｖとする。
【００６８】
図１１は、メモリセルの書き込み順序の例を示している。ＮＡＮＤ型フラッシュメモリは、ソース線側のメモリセルから順に選択されて書き込まれる。すなわち、図１１に示すように、メモリセル“ａ”“ｂ”“ｃ”“ｄ”の順にメモリセルが選択される。
【００６９】
図１２は、第１の実施形態の書き込み動作を示している。ここでは、例えば４値（２ビット）のデータを書き込む場合について説明する。本実施形態において、ブロックＭＬＢのメモリセルにデータを書き込む場合、その一部がブロックＳＬＢのメモリセルに書き込まれる。図１２において、（１）（２）（３）…は、ブロックＭＬＢ及びＳＬＢのメモリセルの書き込み順序を示している。すなわち、
（１）ブロックＭＬＢのセル“ａ”に２ビットのデータがラフ（概略的）に書き込まれる。
【００７０】
（２）ブロックＳＬＢのセル“ａ”にデータが書き込まれる。このデータは、後述するように、ブロックＭＬＢのセル“ａ”に書き込まれた２ビットのデータの排他的ＮＯＲに相当するデータである。
【００７１】
（３）ブロックＭＬＢのセル“ａ”に隣接するセル“ｂ”に２ビットのデータがラフに書き込まれる。
【００７２】
（４）ブロックＳＬＢのセル“ａ”に隣接するセル“ｂ”にデータが書き込まれる。このデータは、後述するように、ブロックＭＬＢのセル“ｂ”に書き込まれた２ビットのデータの排他的ＮＯＲに相当するデータである。
【００７３】
（５）ブロックＭＬＢのセル“ａ”に２ビットのデータがファイン（正確）に書き込まれる。
【００７４】
このような動作が繰り返されることにより、各メモリセルにデータが書き込まれる。
【００７５】
図１３は、ブロックＭＬＢのメモリセルに書き込まれる閾値レベルの変化を概略的に示している。図１３において、（１）（３）（５）は、図１２の書き込み順序に対応している。
【００７６】
図１３（１）に示すように、消去動作によりメモリセルのデータは、“１１”の閾値レベルとなる。第１ページとしてのロアーページ（Lower Page）と、第２ページとしてのアッパーページ（Upper Page）の２ビットのデータがメモリセルに書き込まれることにより、メモリセルは、“０１”“００”“１０”のいずれかの閾値レベルとなる。この書き込みは、ラフであるため、各閾値レベルの分布は、ターゲットレベルの分布に比べて広がっている。
【００７７】
この後、隣接セルにデータが書き込まれると、先に書き込まれたメモリセルの閾値レベルは、図１３（３）に示すように、シフトする。この際、各閾値レベルの境界が不明確になることがある。
【００７８】
この後、ロアーページとアッパーページの２ビットのデータがメモリセルに再度書き込まれる。この書き込みにより、メモリセルの閾値レベルが図１３（５）に示すように、高精度に設定される。
【００７９】
データの読み出しは、各閾値レベルの間のレベルとしてのレベル“Ａ＿Ｒ”、“Ｂ＿Ｒ”、“Ｃ＿Ｒ”が用いられる。書き込みの時のベリファイレベルは、データリテンションマージンを持たせるために、読み出しときの値と若干異なった値とされる。すなわち、本実施形態において、読み出し時はＡ＿Ｒ、Ｂ＿Ｒ、Ｃ＿Ｒ、ベリファイ読み出し時はＡ＿Ｖ、Ｂ＿Ｖ、Ｃ＿Ｖが用いられる。
【００８０】
（プログラム動作）
図１４は、プログラム動作を示し、図１５はプログラム（書き込み）シーケンスを示している。図１５において、図１２、図１３と同一部分には同一符号を付している。また、“０Ｌ”“０Ｕ”“１Ｌ”“１Ｕ”…の数字“０”“１”…は、ワード線ＷＬ０、ＷＬ１…をそれぞれ示し、アルファベット“Ｌ”は、ロアーページ、“Ｕ”はアッパーページをそれぞれ示している。
【００８１】
（ワード線ＷＬ０のラフ４値書き込み、２値書き込み：図１５（１）（２））
図１５に示すように、先ず、信号Ｒｅａｄｙ／ＢｕｓｙがＨレベル（Ｒｅａｄｙ）とされて、ロアーページのデータ“０Ｌ”が外部のコントローラより、図８に示すデータラッチ回路ＸＤＬ（以下、単にＸＤＬと記す）にロードされる。この後、ＸＤＬのデータはデータラッチ回路ＡＤＬ（以下、単にＡＤＬと記す）に転送される。次に、アッパーページのデータが、外部のコントローラよりＸＤＬにロードされる。
【００８２】
この後、信号Ｒｅａｄｙ／ＢｕｓｙがＬレベル（Ｂｕｓｙ）とされて、選択されたブロックＭＬＢの１本のワード線ＷＬ０に接続されたメモリセルに、図１３（１）に示すように、２ページのデータがラフに書き込まれる。この後、図１４に示すように、２ページのデータが排他的ＮＯＲ（ＸＮＯＲ）されたデータＳＢが、図８に示すデータ制御ユニット１０ｂにより作成される。このデータＳＢは、ブロックＳＬＢの選択されたメモリセルに書き込まれる。
【００８３】
（ワード線ＷＬ１のラフ４値書き込み、２値書き込み：図１５（３）（４））
次に、信号Ｒｅａｄｙ／ＢｕｓｙがＲｅａｄｙ状態とされ、選択されたブロックＭＬＢのワード線ＷＬ１に書き込まれる２ページ分のデータ“１Ｌ”“１Ｕ”が、前述したように外部のコントローラからＸＤＬ、ＡＤＬにロードされる。
【００８４】
この後、信号Ｒｅａｄｙ／ＢｕｓｙがＢｕｓｙ状態とされ、ワード線ＷＬ１に、図１３（１）に示すように、ラフに２ページのデータが書き込まれる。この後、２ページのデータがＸＮＯＲされてデータＳＢが生成される。このデータＳＢが選択されたブロックＳＬＢの１本のワード線に接続されたメモリセルに書き込まれる。
【００８５】
（ワード線ＷＬ０の４値データ復元：図１５（ＲＣＶ））
この後、読み出し動作によりブロックＭＬＢのＷＬ０に接続されたメモリセルに書き込まれたデータが復元される。しかし、図１３（１）に示すように、ラフな書き込みは、書き込み時間を短縮するため、書き込み電圧のステップアップ幅を大きく設定している場合もある。このため、ラフに書き込まれた４値の閾値分布は広い。しかも、図１３（３）に示すように、隣接セルの書き込みにより、容量結合の影響を受けている。また、時間経過による閾値分布の広がりなどによって閾値分布が一層広がり、場合によっては、隣接データの閾値分布が重なってしまっている。このため、メモリセルのデータを正確に読み出すことができない場合がある。しかし、図１３（３）に示す読み出しレベル“Ａ＿Ｒ”、“Ｂ＿Ｒ”、“Ｃ＿Ｒ”を用いてデータが読み出される。読み出されたデータは、ＸＤＬ、ＡＤＬに保持される。
【００８６】
次に、ブロックＭＬＢのワード線ＷＬ０のデータに対応する２値のデータＳＢがブロックＳＬＢから読み出される。このデータＳＢはデータラッチ回路ＢＤＬ（以下、単にＢＤＬと記す）に保持される。
【００８７】
図１４に示すように、書き込み時のアッパーページ、ロアーページ、ＳＢのデータの組み合わせは、（“１”，“１”，“１”）、（“０”，“１”，“０”）、（“０”，“０”，“１”）、（“１”，“０”，“０”）の４通りだけであった。しかし、図１３（５）に示すように、閾値分布が重なった状態から読み出されたアッパーページ、ロアーページのデータ、ＳＢのデータは（“１”，“１”，“１”）、（“１”，“１”，“０”）、（“０”，“１”，“１”）、（“０”，“１”，“０”）、（“０”，“０”，“１”）、（“０”，“０”，“０”）、（“１”，“０”，“１”）、（“１”，“０”，“０”）の８通り存在する。このうち、（“１”，“１”，“１”）、（“０”，“１”，“０”）、（“０”，“０”，“１”）、（“１”，“０”，“０”）は、書き込みデータと同じであるために、正しいデータと認識される。
【００８８】
ここで、読み出されたデータのアッパーページ、ロアーページ、ＳＢのデータが（“０”，“１”，“１”）である場合について考える。ＳＢのデータ“１”は、ブロックＳＬＢに書き込んでいる。ブロックＳＬＢの閾値分布は重なっていないため、信頼性が高い。したがって、ＳＢのデータ“１”は、正しいデータと考える。すると、アッパーページ、ロアーページ、ＳＢのデータが（“１”，“１”，“１”）、（“０”，“０”，“１”）のどちらか一方データである可能性が高い。
【００８９】
そこで、図１４に示すように、読み出しレベルＡ＿ＲとＢ＿Ｒの間のレベルＤ＿Ｒ（Ａ＿Ｒ＜Ｄ＿Ｒ＜Ｂ＿Ｒ）を用いて、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルが読み出される（ソフトビットリード）。この結果、読み出されたデータが、読み出しレベルＡ＿Ｒ側にある場合、アッパーページ、ロアーページ、ＳＢのデータは、（“１”，“１”，“１”）であると判別される。また、読み出しレベルＢ＿Ｒ側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“０”，“０”，“１”）であると判別される。
【００９０】
次に、アッパーページ、ロアーページ、ＳＢのデータが（“０”，“０”，“０”）である場合について考える。ＳＢのデータは、ブロックＳＬＢに書き込まれているため、ＳＢのデータ“０”は信頼性が高いため、正しいデータと考えられる。すると、アッパーページ、ロアーページ、ＳＢのデータが（“０”，“１”，“０”）、（“１”，“０”，“０”）のどちらか一方が正しい可能性が高い。
【００９１】
そこで、図１４に示すように、読み出しレベルＢ＿ＲとＣ＿Ｒの間のレベルＥ＿Ｒ（Ｂ＿Ｒ＜Ｅ＿Ｒ＜Ｃ＿Ｒ）を用いて、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルが読み出される（ソフトビットリード）。この結果、読み出されたデータが、読み出しレベルＢ＿Ｒ側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“０”，“１”，“０”）であると判別される。また、読み出しレベルＣ＿Ｒ側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“１”，“０”，“０”）であると判別される。
【００９２】
ところで、アッパーページ、ロアーページ、ＳＢのデータが（“１”，“１”，“０”）である場合、ＳＢのデータ“０”は正しいデータと考える。すると、アッパーページ、ロアーページ、ＳＢのデータが（“０”，“１”，“０”）であると判別される。また、アッパーページ、ロアーページ、ＳＢのデータが（“１”，“０”，“１”）である場合、ＳＢのデータ“１”は信頼性が高いため、正しいデータと考える。すると、アッパーページ、ロアーページ、ＳＢのデータが（“０”，“０”，“１”）であると判別される。
【００９３】
図１６は、図１４の変形例を示している。図１４に示す例の場合、読み出しレベルＤ＿Ｒ、Ｅ＿Ｒを用いてデータを再度読み出した。これに対して、図１６に示す例の場合、更に、Ｆ＿Ｒ、Ｇ＿Ｒを用いてデータを読み出す。
【００９４】
図１４の場合、メモリセルから読み出されたアッパーページ、ロアーページ、ＳＢのデータが（“１”，“１”，“０”）、（“１”，“０”，“１”）である場合、ＳＢのデータは正しいデータと考えて、夫々、アッパーページ、ロアーページ、ＳＢのデータを（“０”，“１”，“０”）、（“０”，“０”，“１”）と判断した。しかし、図１６では、メモリセルから読み出されたアッパーページ、ロアーページ、ＳＢのデータが（“１”，“１”，“０”）の場合、読み出しレベルＦ＿Ｒ（Ｆ＿Ｒ＜Ａ＿Ｒ）を用いて、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルが読み出される（ソフトビットリード）。この結果、読み出されたデータが、読み出しレベルＡ＿Ｒ側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“０”，“１”，“０”）であると判別される。また、読み出しレベルＦ＿Ｒより低い側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“１”，“１”，“１”）であると判別される。また、メモリセルから読み出されたアッパーページ、ロアーページ、ＳＢのデータが（“１”，“０”，“１”）の場合、読み出しレベルＧ＿Ｒ（Ｃ＿Ｒ＜Ｇ＿Ｒ）を用いて、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルが読み出される（ソフトビットリード）。この結果、読み出されたデータが、読み出しレベルＣ＿Ｒ側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“０”，“０”，“１”）であると判別される。また、読み出しレベルＧ＿Ｒより高い側にある場合、アッパーページ、ロアーページ、ＳＢのデータは（“１”，“０”，“０”）であると判別される。尚、データ復元での読み出しレベル“Ａ＿Ｒ”、“Ｂ＿Ｒ”、“Ｃ＿Ｒ”は、読み出し動作のときの読み出しレベル“Ａ＿Ｒ”、“Ｂ＿Ｒ”、“Ｃ＿Ｒ”に、オフセットをつけても良い。例えば、データ復元での読み出しレベル“Ａ＿Ｒ”、“Ｂ＿Ｒ”、“Ｃ＿Ｒ”は、読み出し動作のときの読み出しレベル“Ａ＿Ｒ”、“Ｂ＿Ｒ”、“Ｃ＿Ｒ”より低くなるようにする。
【００９５】
データの復元動作の詳細については後述する。
【００９６】
（ワード線ＷＬ０の４値ファイン書き込み：図１５（５））
上記のように、復元された２ページ分のデータに基づき、ブロックＭＬＢのメモリセルに、図１３（５）に示すように、ファイン書き込みが行われる。このファイン書き込みにおいて、ベリファイレベルは、ターゲットの閾値レベルに対応するＡ＿Ｖ、Ｂ＿Ｖ、Ｃ＿Ｖが用いられる。また、書き込み電圧のステップアップ幅は、ラフな書き込み時に用いた書き込み電圧のステップアップ幅より小さく設定される。このようにすることにより、ターゲットの閾値レベルに関して狭い閾値分布を得ることができる。尚、ファインのときのベリファイレベルＡ＿Ｖ、Ｂ＿Ｖ、Ｃ＿Ｖは、ラフの書込み時のベリファイレベルＡ＿Ｖ、Ｂ＿Ｖ、Ｃ＿Ｖｔに、オフセットをつけても良い。例えば、ファインのときのベリファイレベルＡ＿Ｖ、Ｂ＿Ｖ、Ｃ＿Ｖは、ラフの書込み時のベリファイレベルＡ＿Ｖ、Ｂ＿Ｖ、Ｃ＿Ｖよりも高くなるようにする。
【００９７】
（ワード線ＷＬ２の４値ラフ書き込み、２値書き込み：図１５（６）（７））
次に、図１４に示すように、ワード線ＷＬ２に書き込まれる２ページ分のデータが外部のコントローラからＸＤＬ、ＡＤＬにロードされる。この後、選択されたブロックＭＬＢのメモリセルに、図１３（１）に示すように、４値のデータがラフに書き込まれる。この後、２ページのデータのＸＮＯＲのデータＳＢが、選択されたブロックＳＬＢのメモリセルに書き込まれる。
【００９８】
（ワード線ＷＬ１の４値データ復元：図１５（ＲＣＶ））
ワード線ＷＬ０と同様に、ＳＢのデータ及び、ソフトビットの読み出し動作によりワード線ＷＬ１の４値、２ページ分のデータが復元される。
【００９９】
（ワード線ＷＬ１の４値ファイン書き込み：図１５（８））
ワード線ＷＬ１と同様に、復元されたワード線ＷＬ１の２ページ分のデータに基づき、４値のデータがファイン書き込みされる。
【０１００】
以下、ブロックＭＬＢから読み出された４値のデータを復元するための具体的な動作について説明する。
【０１０１】
（セル→センスアンプユニット）
データの読み出し動作は、先ず、図７に示すセンスアンプユニット１０ａの信号ＲＳＴがＨレベルとされ、ラッチ回路３２の信号ＩＮＶがＬレベル、信号ＬＡＴがＨレベルとされる。この後、選択ワード線に読み出し電圧が供給され、非選択ワード線に電圧Ｖｒｅａｄが供給される。さらに、メモリセルアレイ内の選択ゲートＳ１，Ｓ２、センスアンプユニット１０ａの信号ＢＬＳ，ＢＬＣ，ＢＬＸ，ＸＸＬ，ＨＬＬがＨレベルとされ、ビット線ＢＬが充電される。これとともに、キャパシタ３３のＮｏｄｅがＶｄｄに充電される。すると、Ｎｏｄｅは電圧Ｖｄｄとなる。メモリセルの閾値電圧が、選択ワード線の電圧より低い場合、メモリセルはオンとなり、選択ワード線の電圧より高い場合メモリセルはオフとなる。この状態において、信号ＨＬＬをＬレベルとした後、信号ＣＬＫをＬレベルからＨレベルとすると、Ｎｏｄｅの電圧は、２Ｖｄｄ程度の高い電位となる。しかし、メモリセルがオフである場合、この状態が保持される。一方。メモリセルがオンである場合、Ｎｏｄｅの電圧は下がる。
【０１０２】
ここで、信号ＣＬＫをＨレベルからＬレベルに戻した後、信号ＳＴＢがＬレベルとされると、セルがオフの場合、ＮｏｄｅがＨレベルであるため、ＰＭＯＳ２９がオフとされ、ラッチ回路３２の信号ＩＮＶはＬレベルに保持される。また、セルがオンである場合、ＮｏｄｅがＬレベルであるため、ＰＭＯＳ２９がオンとされ、ラッチ回路３２の信号ＩＮＶはＨレベルとなる。信号ＬＡＴのデータは信号ＩＮＶの反転信号であるため、セルがオンである場合、信号ＬＡＴはＬレベル、セルがオフである場合、信号ＬＡＴはＨレベルとされる。
【０１０３】
（センスアンプユニット→データ制御ユニット）
ラッチ回路３２の信号ＬＡＴのデータは、データ制御ユニット１０ｂに転送される。このとき、先ず、図８に示す信号ＳＥＴがＨレベルとされ、信号ＦＡＩＬがＬレベルに設定される。このため、信号ＭＴＣＨがＨレベルに設定される。
【０１０４】
ここで、図７に示す信号ＮＣＯがＨレベル、図８に示す信号ＣＯＮＤがＬレベル、信号ＣＯＮＳがＨレベルとされるとＮＭＯＳ２７、トランスファーゲート４２を介してセンスアンプユニット１０ａのデータがＩＢＵＳに転送される。この後、信号ＩＦＬが一旦、Ｈレベルとされる。すると、信号ＬＡＴ（ＩＢＵＳ）がＬレベルである場合、ＮＭＯＳ５６がオフであるため、信号ＭＴＣＨはＨレベルに保持される。また、信号ＬＡＴ（ＩＢＵＳ）がＨレベルである場合、ＮＭＯＳ５６がオンとなるため、信号ＭＴＣＨはＬレベルとなる。
【０１０５】
次に、信号ＣＯＮＤがＨレベル、信号ＣＯＮＳがＬとされてトランスファーゲート４２が閉じられ、トランスファーゲート４３が開けられた後、信号Ｆ２ＬがＨレベル、信号Ｍ２ＨＢがＬレベルに設定される。すると、信号ＭＴＣＨのデータがＤＢＵＳに充電される。ここで、例えば信号ＢＬＣＡをＨレベル、信号ＢＬＣＡ_ＢをＬレベルとすると、信号ＭＴＣＨのデータがＡＤＬにラッチされる。つまり、メモリセルがオンである場合、ＡＤＬがＨレベルに設定され、メモリセルがオフである場合、ＡＤＬがＬレベルに設定される。
【０１０６】
（多値データの読み出し）
図１７は、多値の閾値レベルとＸＤＬ、及びＡＤＬにラッチされたデータの関係を示している。先ず、ブロックＭＬＢのメモリセルから読み出しレベルＡ＿Ｒによりデータが読み出される。セルの閾値電圧がＡ＿Ｒより低い場合、セルがオンする。このため、ＡＤＬがＨレベルに設定される。セルの閾値電圧がＡ＿Ｒより高い場合、セルがオフするため、ＡＤＬがＬレベルに設定される。
【０１０７】
次に、読み出しレベルＢ＿Ｒによる読み出し後、セルの閾値電圧がＢ＿Ｒより低い場合、ＸＤＬにＨレベルが設定され、セルの閾値電圧がＢ＿Ｒより高い場合、ＸＤＬにＬレベルが設定される。このようにして、ロアーページのデータがＸＤＬにラッチされる。
【０１０８】
次に、読み出しレベルＣ_Ｒによる読み出し後、セルの閾値電圧がＣ＿Ｒより低い場合セルがオンし、信号ＬＡＴがＬレベルに設定され、セルの閾値電圧がＣ＿Ｒより高い場合セルがオフして、信号ＬＡＴがＨレベルに設定される。
【０１０９】
この状態において、図８に示すデータ制御ユニット１０ｂの信号ＳＥＴがＨレベルとされる。すると、信号ＦＡＩＬがＬレベル、信号ＭＴＣＨがＨレベルとなる。ここで、信号ＮＣＯがＨレベル、信号ＣＯＮＤがＬレベル、ＣＯＮＳがＨレベルとされて、センスアンプユニット１０ａのラッチ回路３２のデータがＩＢＵＳに転送される。この後、信号ＩＦＬが一旦Ｈレベルとされる。すると、信号ＬＡＴがＬレベルの場合、ＭＴＣＨはＨレベルに保持され、信号ＬＡＴがＨレベルの場合、信号ＭＴＣＨがＬレベルとなる。
【０１１０】
次に、信号ＣＯＮＤがＨレベル、信号ＣＯＮＳがＬレベルに設定された後、信号Ｆ２ＬがＨレベル、信号Ｍ２ＨＢがＬレベルとされる。すると、信号ＭＴＣＨがＨレベルのときＤＢＵＳがＶｄｄ（Ｈレベル）に充電され、信号ＭＴＣＨがＬレベルのときＤＢＵＳがＶｓｓに充電される。ここで、信号ＢＬＣＡ＿Ｂ＝Ｌとして、ＡＤＬのトランスファーゲート６５のＰＣＨ側のみをオンさせる。すると、信号ＭＴＣＨがＨレベルとなっている場合のみ、ＡＤＬのデータが強制的にＨレベルとなる。
【０１１１】
（２値読み出し）
図１８は、２値の閾値レベルとＢＤＬにラッチされたデータの関係を示している。多値の読み出しと同様にして、ブロックＳＬＢのメモリセルからＳＢのデータが読み出される。このデータはＢＤＬに保持される。
【０１１２】
（データ操作１）
例えばＡＤＬ（アッパーページ）、ＸＤＬ（ロアーページ）、ＢＤＬ（ＳＢ）のデータが（“１”，“１”，“０”）である場合、アッパーページ，ロアーページ，ＳＢのデータを（“１”，“１”，“１”）に変換する操作について説明する。
【０１１３】
ブロックＭＬＢ、ＳＬＢの各メモリセルから読み出されたアッパーページ，ロアーページ、ＳＢのデータは、ＡＤＬ，ＸＤＬ，ＢＤＬにそれぞれラッチされている。
【０１１４】
先ず、図８に示すデータ制御ユニット１０ｂの信号ＳＥＴがＨレベルとされ、信号ＭＴＣＨがＨレベルとされる。次に、信号ＣＯＮＤがＨレベル、信号ＣＯＮＳがＬレベルとされた後、信号ＢＬＣＡがＨとされ、ＡＤＬのデータがＤＢＵＳ，ＩＢＵＳに転送される。ここで、信号ＩＦＨがＨレベルとされると、ＡＤＬが“０”の場合、信号ＭＴＣＨがＬレベルとなり、ＡＤＬがＨレベルであると、信号ＭＴＣＨがＨレベルに保持される。
【０１１５】
次に、信号ＢＬＣＸがＨレベルとされ、ＸＤＬのデータがＤＢＵＳ、ＩＢＵＳに転送される。ここで、信号ＩＦＨがＨレベルとされると、ＸＤＬが“０”の場合、信号ＭＴＣＨがＬレベルとされ、ＡＤＬが“１”の場合、信号ＭＴＣＨがＨレベルに保持される。
【０１１６】
次に、信号ＢＬＣＢがＨレベルとされ、ＢＤＬのデータがＤＢＵＳ、ＩＢＵＳに転送される。ここで、信号ＩＦＬがＨレベルとされると、ＸＤＬが“１”の場合、信号ＭＴＣＨがＬレベルとなり、ＸＤＬが“０”の場合、信号ＭＴＣＨがＨレベルに保持される。したがって、ＡＤＬ（アッパーページ）が“１”，ＸＤＬ（ロアーページ）が“１”，ＢＤＬ（ＳＢ）が“０”となっている場合のみ、信号ＭＴＣＨがＨレベルとなり、それ以外の場合、信号ＭＴＣＨがＬレベルとなる。
【０１１７】
ここで、信号Ｆ２ＬがＨレベル、信号Ｍ２ＨＢがＬレベルとされる。すると、信号ＭＴＣＨがＨレベルのときＩＢＵＳ、ＤＢＵＳはＨレベルとされ、信号ＭＴＣＨがＬレベルのときＩＢＵＳ、ＤＢＵＳはＬレベルとされる。この状態において、信号ＢＬＣＢ＿ＢをＬレベルとして、ＢＤＬのトランスファーゲート６５のＰＣＨ側のみをオンさせる。すると、ＩＢＵＳ、ＤＢＵＳのデータがＨレベルとなっている場合のみ、ＢＤＬのデータが強制的にＨレベルとなる。この動作により、ＡＤＬ（アッパーページ）が“１”，ＸＤＬ（ロアーページ）が“１”，ＢＤＬ（ＳＢ）が“０”となっていた場合、ＡＤＬ（アッパーページ）が“１”，ＸＤＬ（ロアーページ）が“１”，ＢＤＬ（ＳＢ）が“１”にセットされる。
【０１１８】
（データ操作２）
例えばＡＤＬ（アッパーページ）、ＸＤＬ（ロアーページ）、ＢＤＬ（ＳＢ）のデータが（“０”，“０”，“０”）である場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“１”，“０”）又は（“１”，“０”，“０”）に変換する操作について説明する。
【０１１９】
この場合、選択ワード線が読み出しレベルＥ＿Ｒに設定され、上記と同様に、ブロックＭＬＢのメモリセルからデータが読み出される。この結果、セルの閾値レベルがＥ＿Ｒより低い場合、セルがオンされ、ラッチ回路３２の信号ＬＡＴがＬレベルとなる。また、セルの閾値レベルがＥ＿Ｒより高い場合、セルがオフされる。このため、ラッチ回路３２の信号ＬＡＴがＨレベルとなる。
【０１２０】
（アッパーページ，ロアーページ，ＳＢのデータが（“０”，“０”，“０”）で、セルの閾値レベルがＥ＿Ｒより低い場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“１”，“０”）に変換する操作）
メモリセルからデータを読み出している間に、前述したアッパーページ，ロアーページ，ＳＢのデータ（“１”，“１”，“０”）を、（“１”，“１”，“１”）にするデータ操作と同様の操作により、アッパーページ，ロアーページ，ＳＢのデータが（“０”，“０”，“０”）となっている場合のみ、信号ＭＴＣＨをＨレベル、それ以外の場合、信号ＭＴＣＨをＬレベルとする。
【０１２１】
メモリセルのデータが信号ＬＡＴに読み出された後、信号ＮＣＯがＨレベル、ＣＯＮＤがＬレベル、ＣＯＮＳがＨレベルとされ、信号ＩＦＬがＨレベルとされる。すると、信号ＬＡＴがＨレベルの場合、信号ＭＴＣＨがＬレベルとなり、信号ＬＡＴがＬレベルの場合、信号ＭＴＣＨがＨレベルに保持される。つまり、アッパーページ，ロアーページ，ＳＢのデータが（“０”，“０”，“０”）で、セルの閾値がＥ＿Ｒより低い場合のみ、信号ＭＴＣＨはＨレベル、それ以外の場合、Ｌレベルとなる。
【０１２２】
ここで、信号ＣＯＮＤがＨレベル、信号ＣＯＮＳがＬレベルとされ、信号Ｆ２ＬがＨレベル、信号Ｍ２ＨＢがＬレベルとされる。すると、信号ＭＴＣＨがＨレベルのときＩＢＵＳ、ＤＢＵＳはＨレベルとなる。また、信号ＭＴＣＨがＬレベルのときＩＢＵＳ，ＤＢＵＳはＬレベルとなる。この後、信号ＢＬＣＸ＝Ｌとして、ＸＤＬのトランスファーゲート６５のＰＣＨ側のみをオンさせる。すると、ＩＢＵＳ、ＤＢＵＳのデータがＨレベルとなっている場合のみ、ＸＤＬのデータが強制的にＨレベルとなる。この動作により、ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）が（“０”，“０”，“０”）であり、且つセルの閾値レベルがＥ＿Ｒより低い場合、ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）が（“０”，“１”，“０”）セットされる。
【０１２３】
（アッパーページ，ロアーページ，ＳＢのデータが（“０”，“０”，“０”）で、セルの閾値レベルがＥ＿Ｒより高い場合、アッパーページ，ロアーページ，ＳＢのデータを（“１”，“０”，“０”）に変換する操作）
アッパーページ，ロアーページ，ＳＢのデータが（“０”，“０”，“０”）で、セルの閾値レベルがＥ＿Ｒより低い場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“１”，“０”）にする操作と同様にして、ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）のデータが（“０”，“０”，“０”）となっていて、且つセルの閾値レベルがＥ＿Ｒより高い場合、ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）のデータは（“１”，“０”，“０”）にセットされる。
【０１２４】
（ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）のデータが（“１”，“０”，“１”）の場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“０”，“１”）に変換する操作）
この操作は、ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）のデータが（“１”，“１”，“０”）の場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“１”，“０”）に変換する操作と同様である。
【０１２５】
（ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）のデータが（“０”，“１”，“１”）の場合、アッパーページ，ロアーページ，ＳＢのデータを（“１”，“１”，“１”）又は（“０”，“０”，“１”）に変換する操作）
この操作は、ＡＤＬ（アッパーページ），ＸＤＬ（ロアーページ），ＢＤＬ（ＳＢ）のデータが（“０”，“０”，“０”）の場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“１”，“０”）又は（“１”，“０”，“０”）に変換する操作と同様である。
【０１２６】
但し読み出しレベルは、Ｄ＿Ｒであり、セルの閾値レベルが読み出しレベルＤ＿Ｒより低い場合、アッパーページ，ロアーページ，ＳＢのデータを（“１”，“１”，“１”）とし、読み出しレベルＤ＿Ｒより高い場合、アッパーページ，ロアーページ，ＳＢのデータを（“０”，“０”，“１”）にする。
【０１２７】
ＩＢＵＳ、ＤＢＵＳのデータがＨレベルの場合、ＡＤＬ、ＸＤＬ、ＢＤＬのデータを強制的にＨレベルに設定する場合は、信号ＢＬＣＡ＿Ｂ＝Ｌ、ＢＬＣＸ＿Ｂ＝Ｌ、ＢＬＣＢ＿Ｂ＝Ｌとして、トランスファーゲート６５のＰＣＨ側のみをオンさせる。
【０１２８】
また、ＩＢＵＳ、ＤＢＵＳのデータがＬレベルの場合、ＡＤＬ、ＸＤＬ、ＢＤＬのデータを強制的にＬレベルに設定する場合は、信号ＢＬＣＡ＝Ｈ、ＢＬＣＸ＝Ｈ、ＢＬＣＢ＝Ｈとして、トランスファーゲート６５のＮＣＨ側のみをオンさせる。
【０１２９】
（リード動作）
上記のようにして、図１３（５）に示すように、ターゲットレベルの閾値レベルにファインに書き込まれた４値のメモリセルからデータを読み出す場合、読み出しレベルＡ＿Ｒ、Ｂ＿Ｒ、Ｃ＿Ｒが用いられる。メモリセルから読み出されたデータは、図８に示すＸＤＬ、又はＡＤＬに転送されて、ＸＤＬから外部に出力される。
【０１３０】
また、図１３（５）に示すファイン書き込みまで行われていない、途中の書き込み状態のメモリセルからデータを読み出す場合、書き込み途中において、４値、２ページのデータを復元する際の読み出し動作と同様の動作が行われる。すなわち、４値領域としてのブロックＭＬＢのメモリセルから読み出しレベルＡ＿Ｒ、Ｂ＿Ｒ、Ｃ＿Ｒで読み出したデータと、２値領域のブロックＳＬＢのメモリセルから読み出されたデータが正しくない場合、ブロックＭＬＢのメモリセルから読み出しレベルＥ＿Ｒ、Ｆ＿Ｒで読み出されたデータにより訂正される。この訂正されたデータがＸＤＬ、又はＡＤＬに転送されて、外部に出力される。
【０１３１】
上記第１の実施形態によれば、多値領域としてのブロックＭＬＢと、２値領域としてのブロックＳＬＢを設け、メモリセルに４値のデータを記憶する場合、先ず、ブロックＭＬＢに４値のデータをラフに書き込み、ブロックＳＬＢに４値のデータとしての２ビットより生成した１ビットのバイナリデータを書き込み、この１ビットのデータと４値のラフのデータを読み出し、読み出したデータが正しいデータでない場合、読み出しレベルを変えて、４値のセルからデータを読み出し、この読み出したデータにより、元の４値のデータを復元し、ターゲットの閾値レベルにファイン書き込んでいる。このため、２値データの書き込み時間を１／２にすることができる。したがって、ブロックＭＬＢへの書き込み時間及びブロックＳＬＢへの書き込み時間を合計したトータルの書き込み時間を短縮することができる。
【０１３２】
また、ブロックＳＬＢに書き込むビット数は、ロアーページとアッパーページ分の２ページ分必要であったのが、ロアーページとアッパーページから生成したバイナリデータの１ページ分のみで良くなる。このため、ＳＬＢのブロックの記憶容量を１／２に低減できる。
【０１３３】
図１９は、図１５に示す書き込みシーケンスの第１の変形例を示している。図１５に示す書き込みシーケンスは、４値のラフな書き込みに続けて２値の書き込みを、信号Ｒｅａｄｙ／ＢｕｓｙをＢｕｓｙ状態のまま行っている。これに対して、図１９に示す変形例の場合、４値のラフな書き込みの後、信号Ｒｅａｄｙ／Ｂｕｓｙを一旦Ｒｅａｄｙ状態として、ブロックＳＬＢのメモリセルにデータを書き込んでいる。アドレスの入力制御は、外部のコントローラにより実行される。なお、ブロックＳＬＢに書き込むデータ“ＳＢ”もコントローラで生成し、データを外部より入力し、ブロックＳＬＢのメモリセルにデータを書き込むことも可能である。
【０１３４】
図２０は、書き込みシーケンス作の第２の変形例を示している。図１５、図１９に示す例は、ブロックＳＬＢの書き込みに続けて、４値データの復元を行っている。これに対して、図２０に示す例の場合、ブロックＳＬＢの書き込み後、信号Ｒｅａｄｙ／Ｂｕｓｙを一旦Ｒｅａｄｙ状態として、アドレスを入力しても良い。さらに、４値データの復元の後に、４値のファイン書き込みを連続して行っているが、破線で示すように、信号Ｒｅａｄｙ／Ｂｕｓｙを一旦Ｒｅａｄｙ状態として、外部のコントローラからアドレスを入力しても良い。
【０１３５】
第１、第２の変形例のように、書き込み途中において、次の書き込みのためのアドレスを入力する場合、ＮＡＮＤ型フラッシュメモリにおいて、次の書き込みアドレスを保持するラッチ回路を削除することができる。このため、構成を簡単化することが可能である。
【０１３６】
（第２の実施形態）
図２１は第２の実施形態に係る書き込みシーケンスを示している。第１の実施形態において、４値データの読み出し及び復元は、隣接セルのブロックＳＬＢの書き込み後に行なった。これに対して、第２の実施形態において、４値データの読み出し復元は、隣接セルに対する４値データのラフな書き込み前に行っている。４値データの読み出しを隣接セルの書き込み前に行っているため、４値データは、隣接セルの書き込みによる容量結合の影響を受けていない。したがって、図１３（３）に示すように閾値分布がシフトしていため、読み出しマージンが広がる。しかし、この場合、読み出した２ビットのデータを保持する必要がある。このため、図８に示すデータ制御ユニット１０ｂにおいて、データラッチ回路を２個増加させる必要がある。すなわち、第１の実施形態において、データラッチ回路はＡＤＬ，ＢＤＬ、ＸＤＬであるが、さらに、ＣＤＬ、ＤＤＬを必要とする。
【０１３７】
この場合の（プログラム）の流れは、以下のようになる。
【０１３８】
（１）ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに４値データがラフに書き込まれ、ブロックＳＬＢのブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに対応するメモリセルに２値データが書き込まれる（図２１（１）（２））。
【０１３９】
（２）ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに書き込まれた４値データが復元される（２値リード＆ソフトビットリード）（図２１（ＲＣＶ））。
【０１４０】
（３）ブロックＭＬＢのワード線ＷＬ１に接続されたメモリセルに４値データがラフに書き込まれ、ブロックＳＬＢのブロックＭＬＢのワード線ＷＬ１に接続されたメモリセルに対応するメモリセルに２値データが書き込まれる（図２１（３）（４））。
【０１４１】
（４）ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに４値データをファイン書き込み（図２１（５））。
【０１４２】
（５）ブロックＭＬＢのワード線ＷＬ１に接続されたメモリセルに書き込まれた４値データが復元される（２値リード＆ソフトビットリード）（図２１（ＲＣＶ））。
【０１４３】
（６）ブロックＭＬＢのワード線ＷＬ２に接続されたメモリセルに４値データがラフに書き込まれ、ブロックＳＬＢのブロックＭＬＢのワード線ＷＬ２に接続されたメモリセルに対応するメモリセルに２値データが書き込まれる（図２１（６）（７））。
【０１４４】
（７）ブロックＭＬＢのワード線ＷＬ１に接続されたメモリセルに４値データをファイン書き込み（図２１（８））。
【０１４５】
上記第２の実施形態によれば、隣接セルにデータが書き込まれる前に先に書き込んだブロックＭＬＢのメモリセルのデータを読み出している。このため、容量結合の影響が少なく、データを正確に復元できる。しかも、復元に要する時間を短縮できるため、トータルの書き込み時間を短縮することができる。
【０１４６】
（第３の実施形態）
図２２、図２３は、第３の実施形態を示している。第１、第２の実施形態は、ブロックＭＬＢのメモリセルに４値データをラフに書き込んだ後、ブロックＳＬＢのメモリセルに２値データを書き込んだ。これに対して、第３の実施形態は、先ずブロックＳＬＢのメモリセルに２値データを書き込んだ後、ブロックＭＬＢのメモリセルに４値データをラフに書き込むことを特徴としている。第３の実施形態において、書き込み動作は第１、第２の実施形態と同一であるため、説明は省略する。
【０１４７】
第３の実施形態によっても第１、第２の実施形態と同様の効果を得ることができる。
【０１４８】
図２４は、第３の実施形態の変形例を示している。コントローラにおいて、２ページ分のデータの排他的ＮＯＲのデータを生成する場合、図２４に示すように、コントローラから先ずブロックＳＬＢのアドレスと排他的ＮＯＲのデータをＮＡＮＤ型フラッシュメモリに供給する。この後、先ず、ブロックＳＬＢの書き込みが行われる（図２４（１））。このブロックＳＬＢの書き込み中に、コントローラからブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルの書き込みデータ“０Ｌ”“０Ｕ”がＸＤＬ，ＡＤＬにロードされる。この後、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに４値データがラフに書き込まれる（図２４（２））。
【０１４９】
この変形例によれば、ブロックＳＬＢの書き込み中にブロックＭＬＢのデータをＸＤＬ，ＡＤＬにロードできるため、データのロード時間を短縮でき、トータルの書き込み時間を短縮することができる。
【０１５０】
（第４の実施形態）
図２５は、第４の実施形態を示している。第４の実施形態は、図８に示すデータ制御ユニットのＡＤＬ、ＢＤＬ、ＸＤＬのうち、１つ乃至複数のデータラッチ回路が、書き込みに不要となった場合、このデータラッチ回路を次のデータの書き込み用のキャッシュとして使用する。例えば信号Ｒｅａｄｙ／ＢｕｓｙがＢｕｓｙ状態、すなわち、ブロックＭＬＢ又はＳＬＢの書き込み状態である場合において、データラッチ回路が空いた場合、この空いたデータラッチ回路に次の書き込みデータが外部のコントローラからロードされる。
【０１５１】
第４の実施形態によれば、書き込みに平行して次のデータをロードできるため、書き込みを高速化することができる。
【０１５２】
第４の実施形態の書き込みシーケンスは、第１、第２、第３の実施形態のいずれにも適用可能である。
【０１５３】
２値領域に記憶するデータは、ＥＣＣによる訂正は行わなかったが、さらに信頼性を上げるためＥＣＣを用いても良い。
【０１５４】
（第５の実施形態）
上記各実施形態は、半導体記憶装置としてのＮＡＮＤ型フラッシュメモリの外部に接続されたコントローラによりブロックＳＬＢのアドレス制御を行った。これに対して、第５の実施形態は、ＮＡＮＤ型フラッシュメモリ内に外部のコントローラと同様の機能を持たせている。
【０１５５】
図２６は、第５の実施形態に適用されるページ内のデータの割り当て方式を示している。図２６（ａ）は、多値領域としてのブロックＭＬＢのページ内のデータの割り当てを示している。図２６（ａ）に示すように、ブロックＭＬＢのページは、データ及びＥＣＣ（Error correction code）データの記憶領域２０１、ファイン書き込みが完了したかどうかを示すフラグデータの記憶領域２０２、及びブロックＭＬＢに対応するブロックＳＬＢのページアドレスの記憶領域２０３を含んでいる。ラフ書き込み後で、ファイン書き込み前に、ラフ書き込みデータに対応するデータＳＢがブロックＳＬＢに書き込まれている。このため、ブロックＳＬＢのページアドレスをブロックＭＬＢの対応するページに保存することにより、ブロックＭＬＢとブロックＳＬＢの対応関係をＮＡＮＤ型フラッシュメモリ内に保存することができる。
【０１５６】
図２６（ｂ）は、２値領域としてのブロックＳＬＢのページ内のデータの割り当てを示している。ブロックＳＬＢのページは、データにより構成されている。しかし、ＥＣＣデータを含んでいてもよい。ブロックＳＬＢのデータは２値であり、エラーが生じ難い。したがって、ブロックＳＬＢのＥＣＣデータは、ブロックＭＬＢのＥＣＣデータに比べて訂正能力が低く設定してもよい。
【０１５７】
図２７は、第５の実施形態に係る書き込み動作を示すフローチャートである。図２７を参照して第５の実施形態の書き込み動作について説明する。
【０１５８】
先ず、ブロックＭＬＢのワード線ＷＬｎに接続されたメモリセル（ＭＬＣ）に、４値のデータがラフに書き込まれる（Ｓ１１）。この書き込みにより、２ページ（２ビット）分のデータとＥＣＣデータ、このページに対応するブロックＳＬＢのページアドレスがラフに書き込まれる。このブロックＳＬＢのページアドレスは、例えば１ビットのデータとして、例えば図１３（１）に示す“Ｅｒａｓｅ”（“１１”）と“ｂ”（“００”）の閾値レベルに書き込まれる。この後、多値の２ページ分のデータにより生成される１ビットのＳＢのデータがブロックＳＢに書き込まれる。
【０１５９】
この後、ブロックＭＬＢのワード線ＷＬｎ−１に接続されたメモリセルのデータが復元される（Ｓ１２）。先ず、読み出しレベルＡ＿Ｒ，Ｂ＿Ｒ，Ｃ＿Ｒによりメモリセルからデータが読み出される。この後、読み出しレベルＤ＿Ｒによりメモリセルからデータが読み出される（Ｓ１３）。このとき、閾値分布は、図１３（２）に示すようになっているため、読み出されたデータは正しくない可能性がある。しかし、読み出されたデータのうち、このページに対応するブロックＳＬＢのアドレスは、図１３（１）に示すように、“Ｅｒａｓｅ”と“ｂ”の２値の閾値レベルで書き込まれている。このため、読み出しレベルＤ＿Ｒで読み出されたデータは、正確なデータとすることができる。この読み出されたブロックＳＬＢのアドレスに基づき、ブロックＳＬＢに書き込まれた２値データが読み出される（Ｓ１４）。この読み出された２値データに基づき４値のデータが補正される（Ｓ１５）。
【０１６０】
次に、再度ブロックＭＬＢのワード線ＷＬ（ｎ−１）に接続されたメモリセルから読み出しレベルＥ＿Ｒよりデータが読み出される（Ｓ１６）。この読み出されたデータにより、４値のデータを補正される（Ｓ１７）。
【０１６１】
このようにしてワード線ＷＬｎ−１に接続されたメモリセルのデータが復元された後、ワード線ＷＬｎ−１に接続されたメモリセルがファイン書き込みされる。これと同時に、多値の書き込みが完了していることを示すフラグデータが同時に書き込まれる（Ｓ１８）。フラグデータは、図１３（１）に示す“Ｅｒａｓｅ”から“ａ”又は“ｂ”のレベルに書き込まれる。フラグデータは、ラフな書き込みを行っていない。このため、フラグデータが書き込まれるセルと隣接するセルのフローティングゲートの容量結合により、フラグデータの閾値レベルがシフトする恐れがある。したがって、フラグデータが書き込まれるセルと隣接するセルは、例えばデータが書き込まれないダミーセルとして、容量結合の影響を無くすことが好ましい。
【０１６２】
尚、フラグデータが書き込まれるセル、及びブロックＳＬＢのアドレスを記憶するセルは、１つのセルに限定されるものではない。フラグデータやアドレスの信頼性を向上するため、フラグデータやアドレスをそれぞれ複数のセルにより記憶し、これら複数のセルから読み出されたデータの多数決により、フラグデータやアドレスを決定することも可能である。
【０１６３】
図２８は、第５の実施形態に係る読み出し動作のフローチャートを示している。第５の実施形態において、ブロックＭＬＢの各ページは、フラグデータを含んでいる。このフラグデータは、ファイン書き込みが行われたかどうかを示している。このため、データの読み出しシーケンスは、フラグデータの内容により異なる。
【０１６４】
データの読み出し時、先ず、ブロックＭＬＢから読み出しレベルＡ＿Ｒ，Ｂ＿Ｒ，Ｃ＿Ｒによりデータが読み出される（Ｓ２１）。読み出されたデータより、フラグデータが書かれているかどうかが判別される（Ｓ２２）。すなわち、読み出されたデータが“０”であればフラグデータが書かれており、“１”であれば書かれていない。この結果、フラグデータが書かれていると判別された場合、ブロックＭＬＢの読み出しページは、ファイン書き込みが完了している。このため、ステップＳ２１において読み出されたデータが正しいデータとして外部に出力される（Ｓ２３）。
【０１６５】
一方、フラグデータが書かれていない場合、ステップＳ２１において読み出されたデータは正確ではないため、読み出しレベルＤ＿ＲによりブロックＭＬＢからデータが読み出される（Ｓ２４）。次に、ブロックＳＬＢのブロックＭＬＢの読み出しページに対応するアドレスからデータが読み出される（Ｓ２５）。この読み出されたデータにより、ブロックＭＬＢから読み出されたデータが補正される（Ｓ２６）。次いで、読み出しレベルＥ＿ＲによりブロックＭＬＢからデータが読み出される（Ｓ２７）。この読み出されたデータにより多ブロックＭＬＢからの読み出しレベルＡ＿Ｒ，Ｂ＿Ｒ，Ｃ＿Ｒにより読み出されたデータが補正され（Ｓ２８）、外部に出力される（Ｓ２３）。
【０１６６】
上記第５の実施形態によれば、ブロックＭＬＢのページ内に、このページ対応するブロックＳＬＢのアドレスが書き込まれている。このため、このアドレスに基づき、ブロックＳＬＢからデータＳＢを読み出すことができる。したがって、外部のコントローラからブロックＳＬＢのアドレスを供給する必要がないため、コントローラの制御を容易化することができる。
【０１６７】
また、ブロックＭＬＢのページはファイン書き込みが完了したがどうかを示すフラグデータの書き込み領域２０２を有している。このため、データの読み出し時、この領域２０２にフラグデータが書き込まれている場合、読み出されたデータは正しいデータとして外部に即出力できるため、データの読み出し動作を正確且つ高速に実行できる。また、この領域２０２にデータが書き込まれていない場合、読み出されたデータを補正することにより、正確なデータを出力することができる。
【０１６８】
（第６の実施形態）
上記第５の実施形態において、多値領域のページ内には、データとＥＣＣデータ以外にフラグデータ及びブロックＳＬＢのアドレスを書き込んでいた。また、データの信頼性を向上させるため、多値領域のエラー訂正能力を強くすることが望まれる。この場合、ＥＣＣデータを多くする必要がある。一方、２値領域のページ内には、データとＥＣＣデータのみを書き込んでいた。しかも、多値のＥＣＣより訂正能力が弱くてよいため、必要なＥＣＣデータは少なくてよい。２値領域及び多値領域とも同じメモリセルアレイに配置した方が、レイアウトの都合上望ましい場合が多く、この場合、２値領域及び多値領域のページ長は同じとなる。したがって、２値領域のページには、使用されない領域が多い。また、多値領域のページ内の、ブロックＳＬＢのアドレスは、多値のファイン書き込みが完了すると不要になっていた。
【０１６９】
図２９（ａ）は、第６の実施形態に係る多値領域としてのブロックＭＬＢ内のページのデータの割り当てを示している。ブロックＭＬＢ内のページは、データとＥＣＣデータの記憶領域２０１とフラグデータの記憶領域２０２のみとし、ブロックＳＬＢのアドレスを記憶する領域は有してない。このため、ページ長を第５の実施形態より短くすることが可能である。
【０１７０】
図２９（ｂ）は２値領域としてのブロックＳＬＢのデータの割り当てを示している。ブロックＳＬＢのページは、データの記憶領域２０４と、書き込み途中のブロックＭＬＢのページアドレスを記憶する領域２０５を有している。データの記憶領域２０４は、僅かなＥＣＣデータを含むことも可能である。
【０１７１】
さらに、例えばブロックＳＬＢのページに、図示せぬフラグデータの記憶領域を設け、この記憶領域に記憶されるフラグデータにより、ブロックＳＬＢが使用中かどうかを判断可能とできるようにしてもよい。
【０１７２】
第６の実施形態の場合、ブロックＭＬＢ内の書き込み途中のページがあるかどうか判別する必要がある。このため、電源立ち上げ後、又は、最初の多値のファイン書き込みが必要なとき、メモリセルアレイ１内に存在する全てのブロックＳＬＢからデータを読み出し、ここに書き込まれているブロックＭＬＢのページアドレスを読み出される。このブロックＭＬＢのページアドレスと、アドレスが記憶されていたブロックＳＬＢのページアドレスとを含むテーブルが例えば図７の制御信号及び制御電圧発生回路の内の記憶回路に保存される。ここで、保存されているアドレスは、多値の書き込み途中のセル（ラフな書き込みが終了し、ファインが行われていないセル）のアドレスと、これに対応したデータＳＢを記憶しているブロックＳＬＢのページアドレスである。
【０１７３】
ここで、例えばブロックアドレスＡ番地、ワード線ＷＬｎに接続されたメモリセルのラフな書き込みが行われた後、ブロックアドレスＡ番地、ワード線ＷＬｎ−１に接続されたメモリセルのファイン書き込みが次に行われなくてはならない。このブロックアドレスＡ番地は、データラッチ回路ＡＤＬ，ＸＤＬに存在しているため、ブロックＳＬＢのアドレスが特定される。
【０１７４】
上記第６の実施形態によれば、ブロックＭＬＢにブロックＳＬＢのアドレスを記憶していない。このため、ページサイズを小さくすることが可能である。
【０１７５】
尚、第５、第６の実施形態において、１つのブロックＭＬＢに対して、１つのブロックＳＬＢを割り当てた場合は、ブロックＭＬＢのアドレス、又は、ブロックＳＬＢのアドレスは、ブロックアドレスのみ記憶すればよい。このため、例えば６４本のワード線の内、特定のワード線に接続されたメモリセルのみにこれらのデータを記憶し、読み出せばよい。
【０１７６】
また、信頼性を向上させため、特定の複数のワード線に接続されるセルにこれらのデータを記憶し、読み出したデータから多数決をとって決めてもよい。
【０１７７】
更に、特定の複数のワード線にこれらのデータとパリティビットを付加し、あるワード線により選択されたセルからデータを読み出した場合において、読み出し結果がエラーと判断されたとき、別のワード線により選択されたセルからデータを読み出すことも可能である。
【０１７８】
また、多値の書き込みの時において、未使用のセルにデータＳＢを一時的に記憶していた。この２値のデータを記憶するブロックは、任意であるが、特定のセルのみ書き込み、消去回数が多くならないようにする必要がある。このため、データＳＢを一時的に記憶するブロックのアドレスを例えば循環させることにより、特定のセルの書き込み、消去回数が増加することを防止できる。
【０１７９】
（第７の実施形態）
図３０は、第７の実施形態を示している。上記各実施形態は、１つのメモリセルに４値のデータを記憶する場合について説明した。そこで、第７の実施形態では、１つのメモリセルに８値のデータを記憶する場合について説明する。
【０１８０】
８値のデータを記憶する場合の書き込み動作は、基本的に４値のデータの書き込み動作と同様である。８値のデータを記憶する場合、ロアーページ、ミドルページ、アッパーページに対応する３ビットのデータに基づき、１ビットのデータＳＢが生成される。このデータＳＢは、８値のデータのラフな書き込み時に、ブロックＳＬＢのブロックＭＬＢに対応するアドレスに書き込まれる。８値データのファイン書き込みの前に、８値データのラフに書き込まれた３ビットのデータが読み出しレベル“Ａ＿Ｒ”〜“Ｇ＿Ｒ”のデータにより読み出され、さらに、１ビットのデータＳＢが読み出される。これらのデータに基づき、読み出されたデータが正しいか判別される。判別の結果、正しくないデータは、読み出しレベル“Ｈ＿Ｒ”，“Ｉ＿Ｒ”，“Ｊ＿Ｒ”，及び、“Ｋ＿Ｒ”，“Ｌ＿Ｒ”，“Ｍ＿Ｒ”により読み出されたデータにより補正される。この補正されたデータに基づき、８値データのファイン書き込みが行われる。
【０１８１】
８値のデータの読み出しは、４値のデータの読み出しとほぼ同様であり、正しくないデータの補正が、読み出しレベル“Ｈ＿Ｒ”，“Ｉ＿Ｒ”，“Ｊ＿Ｒ”，及び、“Ｋ＿Ｒ”，“Ｌ＿Ｒ”，“Ｍ＿Ｒ”により読み出されたデータにより補正される。
【０１８２】
第７の実施形態によれば、８値のデータも４値のデータと同様に書き込み、読み出すことができ、４値のデータと同様の効果を得ることができる。
【０１８３】
また、８値のデータに対して、上記第２乃至第６の実施形態を適用することも可能である。
【０１８４】
（第８の実施形態）
図４２、図４３、図４４は、第８の実施形態を示すものであり、８値の別の例を示している。第８の実施形態は、図４２に示すように、ブロックＭＬＢに注目すると、４値の書き込み、８値のラフ書き込み、８値のファイン書き込みが順次実行される。以下に具体的に説明する。尚、ワード線ＷＬ０〜ＷＬ３に接続されたメモリセルをそれぞれＣｅｌｌ“ａ”〜Ｃｅｌｌ“ｄ”とし、ブロックＭＬＢのセルをＭＬＣ、ブロックＳＬＢのセルをＭＬＣとして説明する。
【０１８５】
（４値ＳＬＣ書き込み、４値書き込み  Ｃｅｌｌ“ａ”）
先ず、Ｃｅｌｌ“ａ”に書き込むロアーページ、ミドルページの２ビットのデータにより、１ビットの４値用のデータＳＢが生成される。この４値用のデータＳＢは、多値用ブロックアドレスに対応する４値データ保持用の２値領域のブロックに書き込まれる（１）。また、ロアーページ、ミドルページの２ビットのデータが多値領域としてのブロックＭＬＢに書き込まれる（２）。
【０１８６】
（４値ＳＬＣ書き込み、４値書き込み  Ｃｅｌｌ“ｂ”）
次に、Ｃｅｌｌ“ｂ”に書き込むロアーページ、ミドルページの２ビットのデータにより、１ビットのデータＳＢが生成される。このデータＳＢは、多値用ブロックアドレスに対応する４値データ保持用の２値領域のブロックＳＬＢに書き込まれる（３）。また、ロアーページ、ミドルページの２ビットのデータより、多値領域としてのブロックＭＬＢに書き込まれる（４）。
【０１８７】
（４値ＳＬＣリード、８値ラフ書き込み  Ｃｅｌｌ“ａ”）
先ず、Ｃｅｌｌ“ａ”に書き込むアッパーページの１ビットのデータと、多値用ブロックＭＬＢのＣｅｌｌ“ａ”に４値として書き込まれているデータと、４値データ保持用の２値領域としてのブロックＳＬＢに書き込まれているデータＳＢが読み出され、８値のデータが復元される。これら３ページのデータにより、１ビットのデータ８値のＳＢが生成される。この８値用のデータＳＢは、多値用ブロックアドレスに対応する８値データ保持用の２値領域のブロックＳＬＢに書き込まれる（５）。また、ロアーページ、ミドルページ、アッパーページの３ビットのデータより、多値領域としてのブロックＭＬＢに書き込まれる（６）。
【０１８８】
（４値ＳＬＣ書き込み、４値書き込み  Ｃｅｌｌ“Ｃ”）
次に、Ｃｅｌｌ“Ｃ”に書き込むロアーページ、ミドルページの２ビットのデータにより、１ビットのデータＳＢが生成される。このデータＳＢは、多値領域のブロックアドレスに対応する４値データ保持用の２値領域のブロックＳＬＢに書き込まれる（７）。また、ロアーページ、ミドルページの２ビットのデータが、多値領域としてのブロックＭＬＢに書き込まれる（８）。
【０１８９】
（４値ＳＬＣリード、８値ラフ書き込み  Ｃｅｌｌ“ｂ”、８値ＳＬＣリード、８値ファイン書き込み）
先ず、Ｃｅｌｌ“ｂ”に書き込むアッパーページの１ビットのデータと、多値領域としてのブロックＭＬＢのＣｅｌｌ“ａ”に４値として書き込まれているデータと、４値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢが読み出され、８値のデータが復元される。これらの３ページのデータにより、１ビットのデータ８値のＳＢが生成される。この８値用のデータＳＢは、多値用ブロックアドレスに対応する８値データ保持用の２値領域のブロックＳＬＢに書き込まれる（９）。また、ロアーページ、ミドルページ、アッパーページの３ビットのデータより、ブロックＭＬＢに書き込まれる（１０）。最後に、多値領域のブロックＭＬＢのＣｅｌｌ“ａ”にラフに８値として書き込まれているデータと、８値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢが読み出され、８値のデータが復元される。このロアーページ、ミドルページ、アッパーページの３ビットのデータが、多値領域のブロックＭＬＢにファイン書き込みされる（１１）。
【０１９０】
ここで、多値領域のブロックＭＬＢのＣｅｌｌ“ａ”にラフに８値として書き込まれているデータと、８値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢが読み出され、８値のデータが復元されたが、多値領域のブロックＭＬＢのＣｅｌｌ“ａ”にラフに８値として書き込まれているデータと、８値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢと、４値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢを読み出して、８値のデータが復元するとさらに信頼性を高めることが可能である。
【０１９１】
図４６は、ＭＬＢのデータと８値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢと、４値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢを表している。８値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢと、４値データ保持用の２値領域のブロックＳＬＢに書き込まれているデータＳＢのデータを正しいデータと考える。例えば読み出したデータが、アッパーページ、ミドルページ、ロアーページ、４値データ保持用ＳＢのデータ、８値データ保持用ＳＢのデータは（“１”，“０”，“０”，“１”，“０”）が読み出された場合、４値データ保持用ＳＢのデータ“１”、８値データ保持用ＳＢのデータ“０”は正しいと考える。４値データ保持用ＳＢのデータ“１”、８値データ保持用ＳＢのデータ“０”となるのは、閾値電圧が“ａ”又は“ｅ”のどちらかであるため、読み出しレベルＢ＿Ｒと読み出しレベルＥ＿Ｒの中間、つまり、読み出しレベルＩ＿Ｒで読み出し、Ｂ＿Ｒ側である場合、“ａ”、Ｅ＿Ｒ側である場合、“ｅ”と判断できる。
【０１９２】
上記第８の実施形態によっても、第７の実施形態と同様の効果を得ることができる。
【０１９３】
（第９の実施形態）
図３１は、第９の実施形態を示すものであり、８値の別の例を示している。第９の実施形態の場合、アッパーページの１ビットのデータは、そのままブロックＳＬＢのブロックＭＬＢに対応するアドレスに書き込まれる。ロアーページ、ミドルページの２ビットのデータにより、１ビットのデータＳＢが生成される。このデータＳＢは、ブロックＳＬＢの別のアドレスに書き込まれる。この動作は、４値のデータを書き込む場合と同様である。
【０１９４】
第９の実施形態の場合、ブロックＳＬＢの記憶容量が第７の実施形態に比べて、２倍必要となるが、８値のデータを確実に記憶することが可能である。
【０１９５】
さらに、上記各実施形態は、多値データの書き込み前に、ブロックＭＬＢのメモリセルにラフな書き込みを行うとともに、多値データより生成されたデータＳＢをブロックＳＬＢに一旦記憶した後、隣接セルに多値データをラフに書き込み、次いで、ラフな書き込みのデータとＳＬＢのデータとにより、書き込みデータを復元し、先に書き込んだメモリセルに多値データをファイン書き込んだ。
【０１９６】
しかし、次のページの書き込みデータが分かっている場合は、ブロックＳＬＢへの書き込み及びデータの復元を行わず、隣接セルにラフな書き込みを行い、コントローラから再度データを送ることで、多値データのファイン書き込みを行うことも可能である。
【０１９７】
（第１０の実施形態）
上記各実施形態は、１つのメモリセルにｎビットを記憶する多値レベルセル（ＭＬＣ）の記憶領域のほかに、１つのメモリセルにｋビット（ｋ＜ｎ）を記憶するセルにより構成される記憶領域を設けていた。しかし、コントローラ側に複数のページ分のデータを保持できるＲＡＭ（ランダムアクセスメモリ）が存在する場合は、半導体記憶装置内に、１つのメモリセルにｋビット（ｋ＜ｎ）を記憶するセルを設ける必要はない。このような場合においても、本実施形態を適用することが可能である。
【０１９８】
図４５は、第１０の実施形態に係わり、１つのメモリセルにｋビット（ｋ＜ｎ）を記憶するセルを設けていない。ここでは４値の例について説明する。
【０１９９】
（４値ラフ書き込み  Ｃｅｌｌ“ａ”）
先ず、Ｃｅｌｌ“ａ”（ワード線ＷＬ０）に書き込むロアーページ、アッパーページの２ビットのデータにより、ラフに４値のデータが記憶される。コントローラは、ファイン書き込みのため、従来はＣｅｌｌ“ａ”（ワード線ＷＬ０）に書き込むロアーページ、アッパーページの２ページ分のデータを保持しなくてはならなかった。しかし、ロアーページ、アッパーページの２ビットのデータより、１ビットＳＢのデータを生成し、このデータのみを保持する。したがって、コントローラ側のＲＡＭを削減することが可能である。
【０２００】
（４値ラフ書き込み  Ｃｅｌｌ“ｂ”）
先ず、Ｃｅｌｌ“ｂ”（ワード線ＷＬ１）に書き込むロアーページ、アッパーページの２ビットのデータにより、ラフに４値のデータが記憶される。コントローラは、ロアーページ、アッパーページの２ビットのデータより、１ビットＳＢのデータを生成し、このデータのみを保持する。
【０２０１】
（４値ファイン書き込み  Ｃｅｌｌ“ａ”）
コントローラ側から、Ｃｅｌｌ“ａ”に記憶するロアーページ、アッパーページの２ビットのデータより生成した１ビットＳＢのデータを半導体記憶装置に送る。コントローラは、従来、ロアーページ、アッパーページの２ページ分のデータを再度送る必要があった。しかし、本実施形態の場合、１度の転送でよいため、転送時間が半分となる。また、ファインの書き込みが行われるまで、ロアーページ、アッパーページの２ページ分のデータを保持する必要があったが、ラフの書き込み後は、ＳＢのデータの１ページ分のデータを保持すればよい。このため、コントローラ側のＲＡＭのサイズを削減することも可能である。次いで、このＳＢのデータと、ラフに４値として書き込まれているデータを読み出し、４値のデータを復元する。このロアーページ、アッパーページの２ビットのデータが、多値領域のブロックＭＬＢにファイン書き込みされる。
【０２０２】
（第１１の実施形態）
第１乃至第６の実施形態は、図１２、図１３に示すように、ブロックＭＬＢのメモリセルに４値データをラフに書き込み、ブロックＳＬＢのメモリセルに２値データを書き込んだ。
【０２０３】
これに対して、第１１の実施形態は、ブロックＭＬＢのメモリセルに２値データをラフに書き込み、隣接セルに書き込みを行った後、４値データをラフに書き込み、更に隣接セルに隣接するセル及び隣接セルに書き込みを行った後、４値データをファインに書き込むことを特徴としている。
【０２０４】
図４７乃至図５１において、ｎ（ＳＬＣ）（ｎは０，１，２…）は、ＳＬＣの２値書き込みを示し、ｎ（Ｒ）は、ＳＬＣの２値読み出しを示している。ｎ（４ＬＣ−ＬＭ）は、ＭＬＣに対するラフな２値書き込みを示し、ｎ（４ＬＣ−Ｒｏｕｇｈ）は、ＭＬＣからのラフに書き込まれた２値データの内部読み出しと、ラフな４値書き込みを示している。ｎ（４ＬＣ−Ｆｉｎｅ）は、ＭＬＣからのラフに書き込まれた４値データの内部データ読み出しと、データ復元、及び４値のファイン書き込みを示している。
【０２０５】
第１１の実施形態において、書き込み動作は上記各実施形態と同様であるため、詳細な説明は省略する。図４７、図４８は、ブロックＭＬＢ及びブロックＳＬＢの書き込み順序及び、閾値分布の遷移を示し、図４９乃至図５１は、書き込みシーケンスを示している。図４７乃至図５１を参照して書き込みシーケンスについて説明する。図４７乃至図５１において、（１）（２）（３）…は、書き込み順序を示している。
【０２０６】
（１）先ず、外部よりワード線ＷＬ０のロアーページのデータ（０Ｌ）が入力され、ブロックＭＬＢのメモリセルに２値データがラフに書き込まれる。
【０２０７】
（２）外部よりワード線ＷＬ０のアッパーページのデータ（０Ｕ）が入力される。（１）の書き込みは、２値の書き込みであるため、書き込みに使用しないデータラッチ回路にワード線ＷＬ０のロアーページのデータが保存される。ロアーページのデータとアッパーページのデータが例えばＸＮＯＲされてブロックＳＬＣへの書き込みデータが作成され、ブロックＳＬＣへ書き込まれる。
【０２０８】
（３）外部よりワード線ＷＬ１のロアーページのデータ（１Ｌ）が入力され、ブロックＭＬＢのメモリセルに２値データがラフに書き込まれる。
【０２０９】
（４）外部よりワード線ＷＬ１のアッパーページのデータ（１Ｕ）が入力される。ワード線ＷＬ０の（２）と同様に、（３）の書き込みは、２値の書き込みである。このため、書き込みに使用しないデータラッチ回路にワード線ＷＬ１のロアーページのデータを保存するようにしておく。ロアーページのデータとアッパーページのデータが例えばＸＮＯＲされてブロックＳＬＣへの書き込みデータが作成され、ブロックＳＬＣへ書き込まれる。
【０２１０】
（５）この後、ブロックＳＬＣに書き込まれたワード線ＷＬ０用の２値データと、ブロックＭＬＢのラフに書き込まれたワード線ＷＬ０用の２値データが読み出される。これらの２ページ分のデータにより、ブロックＭＬＢのワード線ＷＬ０にラフに４値の書き込みが行われる。
【０２１１】
ここで、ワード線ＷＬ０のブロックＭＬＢのラフに書き込まれた２値データから、ロアーページのデータを読み出す動作は、（３）ブロックＭＬＢのメモリセルのワード線ＷＬ１の２値書き込み前に行うことも可能である。
【０２１２】
（６）外部よりワード線ＷＬ２のロアーページのデータ（２Ｌ）が入力され、ブロックＭＬＢのメモリセルに２値データがラフに書き込まれる。
【０２１３】
（７）外部よりワード線ＷＬ２のアッパーページのデータ（２Ｕ）が入力される。ワード線ＷＬ１と同様に、（６）の書き込みは、２値の書き込みである。このため、書き込みに使用しないデータラッチ回路にワード線ＷＬ２のロアーページのデータを保存するようにしておく。この後、ロアーページのデータとアッパーページのデータのＸＮＯＲにより、ブロックＳＬＣへの書き込みデータが作成され、このデータがブロックＳＬＣに書き込まれる。
【０２１４】
（８）この後、ブロックＳＬＣに書き込まれたワード線ＷＬ１用の２値データと、ブロックＭＬＢのラフに書き込まれたワード線ＷＬ１用の２値データが読み出される。これらの２ページ分のデータにより、ブロックＭＬＢのワード線ＷＬ１にラフに４値の書き込みが行われる。
【０２１５】
（９）この後、さらに、ブロックＳＬＣに書き込まれたワード線ＷＬ０用の２値データと、ブロックＭＬＢのラフに書き込まれたワード線ＷＬ０用の４値データからワード線ＷＬ０のロアーページとアッパーページのデータが読出され、データが復元される。これら２ページ分のデータにより、ブロックＭＬＢのワード線ＷＬ０にファインに４値の書き込みが行われる。上記の説明では、ブロックＭＬＢのＷＬ０，１，２・・・の書き込みに対するデータを、ブロックＳＬＢのＷＬ０，１，２・・・に書き込んだが、ブロックＭＬＢとブロックＳＬＢのワード線ＷＬの番号を合わせる必要はない。例えば、ブロックＭＬＢのＷＬ０，１，２・・・の書き込みに対するデータを、ブロックＳＬＢのワード線ＷＬ３２，３４，３６，・・・に書き込むようにしても良い。また、１つのブロックＭＬＢの書き込みに対するデータを複数のブロックＳＬＢに書き込んでも良い。
【０２１６】
尚、図４９に示すように、（１）の書き込み動作は、２値の書き込み動作である。このため、図５２に示すように、信号Ｒｅａｄｙ／ＢｕｓｙをＬレベルから直ちにＨレベル（Ｒｅａｄｙ）として、次の書き込みデータを、書き込みに使用しないデータラッチ回路に入力することも可能である。
【０２１７】
また、図５３、図５４に示すように、ブロックＳＬＢへの書き込み（２）の前に、ブロックＭＬＢのラフに書き込まれた２値データから、ロアーページのデータを読み出すことも可能である（０（ＲＭ））。すなわち、０（ＲＭ）は、ＭＬＣからラフに書き込まれた２値データを読み出すことを示している。このようにすると、外部よりロアーページのデータが入力された後、他の動作により時間が経過した後、アッパーページのデータが入力された場合、ロアーページのデータがＤＬに残っていない場合がある。しかし、図５３、図５４に示す動作の場合、ＭＬＣからラフに書き込まれた２値データを読み出すことにより、ロアーページのデータをＤＬに戻すことができ、アッパーページのデータが長時間経過後に入力された場合も、書き込み動作が可能になる。
【０２１８】
図５５は、更なる変形例であり、外部でロアーページのデータとアッパーページのデータのＸＮＯＲ（排他的ＮＯＲ）を取ることで、ブロックＳＬＢへの書き込みデータ（０ＬＵ）を作成し、ブロックＳＬＢへ書き込んだ後に、ロアーページのデータを書き込むことも可能である。
【０２１９】
上記第１１の実施形態によれば、ブロックＭＬＢのメモリセルに２値データをラフに書き込み、隣接セルに書き込みを行った後、４値データをラフに書き込み、更に隣接セルに隣接するセル及び隣接セルに書き込みを行った後、４値データをファインに書き込んでいる。この書き込みシーケンスによれば、隣接するメモリセルの浮遊ゲート間のカップリングの影響を抑制することができ、正確な閾値電圧を設定することが可能な書き込み動作を実現することができる。
【０２２０】
尚、図４９に示す４値のラフ書き込み（８）は、ラフ２値データ内部データ読出しと、４値のラフ書き込みを含み、４値のファイン書き込み（９）は、ラフ４値データ内部データ読出しと、データ復元、及び４値のファイン書き込みを含んでいる。４値のラフ書き込み（８）、及び４値のファイン書き込み（９）は、これら複数の動作を、それぞれ１つのＢｕｓｙ信号内で実行している。しかし、これに限定されるものではなく、４値のラフ書き込み（８）、及び４値のファイン書き込み（９）に破線で示すように、夫々の動作毎に、Ｒｅａｄｙ／Ｂｕｓｙ信号をハイレベル（Ｒｅａｄｙ）に戻してコントローラ側から、各動作に対応するコマンドを入力しても良い。
【０２２１】
さらに、これらの動作以外は、各動作毎にＲｅａｄｙ／Ｂｕｓｙ信号をハイレベルとしている。しかし、これに限らず、Ｒｅａｄｙ／Ｂｕｓｙ信号をハイレベルとせず、図４９に破線で示すように、Ｒｅａｄｙ／Ｂｕｓｙ信号をローレベルとし、複数の動作を続けて行うことも可能である。
【０２２２】
（第１２の実施形態）
図５６は、第１２の実施形態を示している。第１の実施形態乃至第６に実施形態は、図１２、図１３に示すように、ブロックＭＬＢのメモリセルに４値データをラフに書き込み、この後、ブロックＳＬＢのメモリセルに２値データを書き込んだ。この場合も、ブロックＳＬＢのメモリセルに２値データを書き込むとき、図５６に示すように、外部から供給されるロアーページとアッパーページのデータをＸＮＯＲして得られた１ページのデータのみを転送する。この後、ブロックＳＬＢのメモリセルにＸＮＯＲされた１ページの２値データが書き込まれる。この書き込みは２値の書き込みである。このため、書き込みに使用しないデータラッチ回路にＸＮＯＲされたデータが保持される。この保存されたデータと、外部より入力されるワード線ＷＬ０のロアーページのデータが、２ページ分のデータとしてブロックＭＬＢのメモリセルに４値データとしてラフに書き込まれる。
【０２２３】
図２３に示すシーケンスでは、ロアーページとアッパーページの２ページのデータが転送された後、書き込みが行われていた。これに対して、第１２の実施形態によれば、外部から１ページ分のデータが入力された時点で書き込みを開始することができる。また、この書き込み中に、空いたデータラッチ回路を用いて次の書き込みデータを外部から入力することができるため、書き込み速度を高速化することが可能である。
【０２２４】
（第１３の実施形態）
第１３の実施形態は、ブロックＳＬＢを用いず、例えばコントローラに設けられたＲＡＭを用いて、第１１の実施形態に示す書き込み動作を可能としている。
【０２２５】
図５７、図５８、図５９、図６０は、第１３の実施形態の書き込み順序を示している。（１）先ず、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに２値データがラフに書き込まれる。（２）この後、隣接セル、すなわち、ワード線ＷＬ１に接続されたメモリセルに２値データがラフに書き込まれる。コントローラは、データ（０Ｌ）、（１Ｌ）をメモリに供給した後、（３）の書き込み前に、０ＬＵ＝ＸＮＯＲ（０Ｌ,０Ｕ）の演算を実行し、NANDにデータを転送する。（３）次いで、ＭＬＣからラフに書き込まれた２値データの内部読み出しが行われ、ブロックＭＬＢのワード線ＷＬ０の接続されたメモリセルに４値データがラフに書き込まれる。（４）隣隣セルに隣接するセル、すなわち、ワード線ＷＬ２に接続されたセルに２値データがラフに書き込まれる。（５）（３）と同様に、コントローラは、１ＬＵ＝ＸＮＯＲ（１Ｌ,１Ｕ）の演算を実行し、NANDにデータを転送する。次いで、ＭＬＣからラフに書き込まれた２値データの内部読み出しが行われ、隣接セル、すなわち、ワード線ＷＬ１に接続されたメモリセルに４値データがラフに書き込まれる。（６）この後、再び、コントローラからNANDに０ＬＵ＝ＸＮＯＲ（０Ｌ,０Ｕ）のデータを転送する。また、ＭＬＣからラフに書き込まれた４値データの内部データ読み出しが行われて、データが復元され、ブロックＭＬＢのワード線ＷＬ０に接続されたメモリセルに４値データがファインに書き込まれる。
【０２２６】
第１３の実施形態は、図４７に示す第１１の実施形態と異なり、ロアーページのデータを書き込んだ後、ロアーページとアッパーページのデータがＸＮＯＲされた後の１ページ分のデータがコントローラのＲＡＭに記憶される。この後、４値のラフ書き込み（３）と、４値のファイン書き込み（６）の前に、コントローラからメモリにデータが転送され、（３）と（６）書き込み動作がそれぞれ実行される。
【０２２７】
第１３の実施形態によれば、ブロックＳＬＢを使用せず、ＸＮＯＲされたロアーページとアッパーページのデータがコントローラのＲＡＭに保持されている。したがって、ブロックＳＬＢの書き込み動作を削減できるため、第１１の実施形態に比べて書き込み速度を高速化することが可能である。
【０２２８】
（第１４の実施形態）
第１乃至第１３の実施形態は、ロアーページとアッパーページのデータをＸＮＯＲして、ＳＬＣに書き込むデータ生成又は、ＸＮＯＲのデータを再度ＮＡＮＤに転送していた。これに対して、第１４の実施形態は、データの割付けを変更することにより、ロアーページとアッパーページのデータのＸＮＯＲを不要としている。
【０２２９】
図６１は、第１４の実施形態を示すものである。図６１に示すように、書き込みデータにおいて、アッパーページのデータが（“１”“０”“１”“０”）、ロアーページのデータが（“１”“１”“０”“０”）、ＳＬＣのデータが（“１”“０”“１”“０”）とされている。このようなデータ割付けとすることにより、読み出しデータにおけるアッパーページのデータ（“１”“０”“１”“０”）と、書き込みデータにおけるＳＬＣのデータ（“１”“０”“１”“０”）を同一とすることができる。したがって、第１乃至第１３の実施形態のように、ロアーページとアッパーページのデータをＸＮＯＲする必要がなくなる。
【０２３０】
第１４の実施形態によれば、データの書き込み動作において、ロアーページとアッパーページのデータをＸＮＯＲする必要がない。したがって、書き込み動作を高速化することが可能である。尚、第１４の実施形態のようなデータの割付けは、第１乃至第１３の実施形態、及び、第１５の実施形態の全ての実施形態についても可能である。
【０２３１】
（第１５の実施形態）
図６２は、第１５の実施形態を示している。ブロックＳＬＢを使用した書き込みの場合、ブロックＭＬＢに比べてブロックＳＬＢの消去回数が増加する。このため、ブロックＳＬＢのセルの寿命が短くなることが懸念される。
【０２３２】
そこで、第１５の実施形態は、図６２に示すように、ブロックＳＬＢについて、例えばワード線に接続された３セルに２ビットのデータを２回書くことにより、消去回数を抑えようとするものである。
【０２３３】
例えばワード線ＷＬ０が選択された場合において、第１回目の２ビットの書き込みデータと３セルへの書き込みデータの関係は次のようである。
【０２３４】
“１”“１”の場合“１”“１”“１”
“１”“０”の場合“１”“１”“０”
“０”“１”の場合“１”“０”“１”
“０”“０”の場合“０”“１”“１”
上記１回目のデータに基づき３セルに書き込みを行った後、３セルから読み出されたデータは、上記の２ビットのデータとなる。
【０２３５】
また、第２回目の２ビットの書き込みデータと３セルへの書き込みデータの関係は次のようである。第２回目の３セルへの書き込みデータは、第１回目の書き込みと全く異なっている。
【０２３６】
“１”“１”の場合“０”“０”“０”
“１”“０”の場合“０”“０”“１”
“０”“１”の場合“０”“１”“０”
“０”“０”の場合“１”“０”“０”
第１回目の書き込みで“０”に書き込んだセルは、“１”にすることはできない。このため、例えば第１回目の書き込みデータが“１”“０”で“１”“１”“０”と書き込んだセルで、第２回目の書き込みデータが“１”“０”の場合、“１”“１”“０”のままにする。即ち、第１回目の書き込みデータと第２回目の書き込みデータが同じ場合、第２回目の書き込みでは、書き込まない。
【０２３７】
上記２回目のデータに基づき３セルに書き込みを行った後、３セルから読み出されたデータは、次のようになる。
【０２３８】
“０”“０”“０”又は“１”“１”“１”の場合“１”“１”
“０”“０”“１”又は“１”“１”“０”の場合“１”“０”
“０”“１”“０”又は“１”“０”“１”の場合“０”“１”
“１”“０”“０”又は“０”“１”“１”の場合“０”“０”
第２回目の書き込みを行うと、第１回目に書き込んだデータは読み出すことができなくなる。しかし、ブロックＭＬＢへ書き込みが完了した場合、ブロックＳＬＢのデータは読み出す必要がなくなるため問題とはならない。
【０２３９】
例えば、第１１の実施形態の場合、図４７に（２）で示すブロックＳＬＢのワード線ＷＬ０に対する書き込みにおいて、上記第１回目のデータに基づき、２ビットのデータが３セルに書き込まれる。この後、図４７に（９）で示すように、ブロックＭＬＢのワード線ＷＬ０に対する４値のファイン書き込みが完了すると、図４７に（２）で示すブロックＳＬＢのワード線ＷＬ０のデータは読み出す必要がなくなる。このため、図４７に（１１）で示すように、ワード線ＷＬ３のデータは、ブロックＳＬＢのワード線ＷＬ３の書き込みを行わず、ブロックＳＬＢのワード線ＷＬ０に、上記第２回目のデータに基づき、２ビットのデータが３セルに書き込まれる。ワード線ＷＬ０の第２回目の書き込み時、ワード線ＷＬ１とＷＬ２にデータが書き込まれるため、プログラムディスターブなどの問題が生じることがある。この場合、例えば複数のブロックＳＬＢに交互に書き込むことにより、ドレイン側のセルが書き込まれないようにすることができ、プログラムディスターブなどの問題を抑制できる。
【０２４０】
また、第１５の実施形態の場合、２ビットのデータを３セルに書いている。このため、ブロックＳＬＢの１ページの容量が足りなくなる場合がある。しかし、ブロックＳＬＢは、ＥＣＣが弱く設定されている。このため、例えばＥＣＣのビット数を削減することにより、書き込みが可能となる。
【０２４１】
尚、ブロックＳＬＢの書き込みを高速化するため、複数のワード線ＷＬに分散させて使用することも可能である。
【０２４２】
上記第１５の実施形態によれば、２ビットのデータと３セルに書き込まれるデータの関係を、１回目の書き込みと２回目の書き込みとで変え、１回目の書き込み後、その書き込まれたデータが使用されなくなった場合、２回目のデータで１回目のデータをオーバーライトしている。このため、２回目のデータは１回目のデータを消去せずに書き込むことができる。したがって、ブロックＳＬＢの消去回数を削減することができ、セルの寿命を延ばすことができる。さらに、消去回数を削減することにより、書き込み時間を短縮化することが可能である。
【０２４３】
尚、上記実施形態は、半導体記憶装置内にＳＬＣを含むブロックＳＬＢを設け、ブロックＳＬＢにデータを一旦保持させたり、再度コントローラから半導体記憶装置内にデータを転送させた。しかし、半導体記憶装置内に、ＲＡＭを余分に設けておき、このＲＡＭにデータを保持させることも可能である。
【０２４４】
また、複数のメモリセルアレイがある場合において、書き込み時に、使用しないメモリセルアレイある場合、この使用しないメモリセルアレイのデータ記憶回路に、ブロックＳＬＢにデータを一旦保持させたり、再度コントローラから半導体記憶装置内にデータを転送したデータを保持させるこことも可能である。
【０２４５】
上記第１乃至第１５の実施形態のラフ２値データの読出し、及びラフ４値データの読み出し等の内部データの読み出しは、通常の読み出しと同じ動作で選択されたワード線ＷＬｎに所定の電位を与え、選択ブロックの非選択ワード線ＷＬにはセルがオンする電圧（Ｖｒｅａｄ）を加えていた。しかし、隣接セル間のフロティングゲート間のカップリングにより閾値が変動してしまう。この問題を、例えば特開２００４−３２６８６６号公報に記載されるように、選択ワード線ＷＬｎの隣のワード線の電圧を変えることにより、データを精度良く読み出すことができる。ここでは、詳細な説明は省略するが内部データ読み出しで読み出されたデータは、ＥＣＣなどで訂正しようとすると、外部にデータを出力したり、半導体記憶装置内にＥＣＣ回路を搭載させる必要があり、デメリットがある。このため、内部データ読み出しは、なるべく精度よく読み出し動作を行う必要がある。
【０２４６】
尚、特開２００４−３２６８６６号公報記載の発明は、選択ワード線ＷＬｎの隣のワード線の電圧を変えることにより、データを精度良く読み出すことが可能であるが、通常の読み出し動作に行うと、読み出し時間が遅くなる。しかし、本実施形態の内部データの読み出し動作は、書き込み時の読み出し動作のときのみに行われるため、読み出し時間が多少遅くなっても問題にならない場合が多い。
【０２４７】
第１の実施形態は、４値の例、第２乃至第４及び第１１乃至第１４の実施形態は変形例、第５、第６の実施形態は、半導体記憶装置内で２値領域のアドレスを管理する場合、第７、第８、第９の実施形態は８値の場合、第１０及び第１５は半導体記憶装置内にＳＬＣ領域を設けない場合であるが、１６値以上のデータもこれら実施形態と同様にしてメモリセルに書き込み、読み出すことが可能である。また、４値の例では、ラフに４値を書き込んだ後、ファインに４値を書き込む、又は、２値をラフに書き込んだ後、ラフに４値を書き込む、さらにファインに４値で書き込んだ。また、８値の例でも３ステップで書き込んだが、２ステップ又は３ステップには限定されず、例えばさらにステップを増やしても良い、また、実施例では、２値−４値−４値と書き込んだが、例えば４値−４値−４値としても良い。また、２値領域としてのグロックＳＬＢは２値とは限らず、多値領域としてのＭＬＢより１ビット当たり少ないビットで信頼性が高ければよい。つまり、２セルで１ビットなど、複数セルで１ビットのデータを記憶してもよい。
【０２４８】
また、ブロックＳＬＢに書き込んだデータは、ブロックＭＬＢのファイン書き込みが終了すると不要となるため、別のページ又はブロックのブロックＭＬＢの書き込みのためのブロックＳＬＢとして使用する。このため、ブロックＳＬＢのセルの書き込み／消去（Ｗ／Ｅ）回数は、ブロックＭＬＢのセルのＷ／Ｅ回数より多くなる。元々ブロックＳＬＢのセルのＷ／Ｅ回数は、ブロックＭＬＢのセルのＷ／Ｅ回数より多いため問題にはなりにくい。しかし、ブロックＳＬＢのＷ／Ｅ回数に制限がある場合は、ブロックＳＬＢの数を多くし、ブロックＳＬＢがまんべんなくＷ／Ｅが書かれるようにすることで、ブロックＳＬＢのＷ／Ｅ回数を削減することができる。例えばブロックＳＬＢの数を５０ブロックから１００ブロックに増加した場合、各ブロックＳＬＢ内のセルのＷ／Ｅ回数を半分に抑えることができる。ブロックＳＬＢ内のセルのＷ／Ｅ回数は、ブロックＭＬＢ内のセルのＷ／Ｅ回数より多いため、ブロックＭＬＢのセルのＷ／Ｅ回数が多くなったブロックは、ブロックＳＬＢとして使用することも可能である。この場合、Ｗ／Ｅ回数が多くなるに従い、ブロックＳＬＢが増えるため、半導体記憶装置の容量が低減する。半導体記憶装置がカード等に適用されている場合、このように記憶容量が低減したことは、半導体記憶装置の劣化が進んでいることと認識できるため、ユーザにとって都合が良い。
【０２４９】
また、上記各実施形態は組み合わせて実施することも可能である。
【０２５０】
（アプリケーションの例）
次に、上記半導体記憶装置が適用されるアプリケーションについて説明する。
【０２５１】
図３２は、半導体記憶装置が適用されるメモリカードの例を示している。図３２において、メモリカード９００は、上記実施形態で説明したＮＡＮＤ型フラッシュメモリを含む半導体記憶装置９０１を有している。半導体記憶装置９０１は、図示せぬ外部装置から所定の制御信号及びデータを受け取る。また、図示せぬ外部装置へ所定の制御信号及びデータを出力する。
【０２５２】
すなわち、メモリカード９００に搭載された半導体記憶装置９０１には、データ、アドレス、若しくは、コマンドを転送する信号線（ＤＡＴ）、信号線ＤＡＴにコマンドが転送されている事を示すコマンドラインイネーブル信号線（ＣＬＥ）、信号線ＤＡＴにアドレスが転送されている事を示すアドレスラインイネーブル信号線（ＡＬＥ）、及び、フラッシュメモリが動作可能か否かを示すレディービジー信号線（Ｒ／Ｂ）が接続される。
【０２５３】
図３３は、別のメモリカードの例を示している。このメモリカードは、図３２に示したメモリカードと異なり、フラッシュメモリ９０１を制御し、図示せぬ外部装置と信号を授受するコントローラ９１０を有している。
【０２５４】
コントローラ９１０は、例えば図示せぬ外部装置から信号を入力し、若しくは、外部装置へ信号を出力するインターフェース部（Ｉ／Ｆ）９１１と、ＮＡＮＤ型フラッシュメモリを含む半導体記憶装置９０１と信号を授受するインターフェース部９１２と、外部装置から入力された論理アドレスを物理アドレスに変換するなどの計算を行うマイクロプロセッサ（ＭＰＵ）９１３と、データを一時的に記憶するバッファとしてのＲＡＭ９１４と、誤り訂正符合を生成する誤り訂正部（ＥＣＣ）９１５を有している。また、メモリカード９００のインターフェース部９１１には、コマンド信号線（ＣＭＤ）、クロック信号線（ＣＬＫ）、信号線（ＤＡＴ）が接続されている。
【０２５５】
尚、上記メモリカードにおいて、各種信号線の数、信号線のビット幅、及びコントローラの構成は変形可能である。また、この構成を適用してハードディスクに変わるＳＳＤ（Solid State Drive）を構成することも可能である。
【０２５６】
図３４は、別のアプリケーションを示している。図３４に示すように、前述したメモリカード９００は、カードホルダー９２０に挿入され、図示せぬ電子機器に接続される。カードホルダー９２０は、コントローラ９１０の機能の一部を有していても良い。
【０２５７】
図３５は、別のアプリケーションを示している。メモリカード９００、若しくは、メモリカード９００が挿入されたカードホルダー９２０は、接続装置１０００に挿入される。接続装置１０００は接続配線１１００、及びインターフェース回路１２００を介してボード１３００に接続される。ボード１３００にはＣＰＵ１４００やバス１５００が搭載される。
【０２５８】
図３６は、別のアプリケーションを示している。メモリカード９００、若しくは、メモリカード９００が挿入されたカードホルダー９２０が接続装置１０００に挿入される。接続装置１０００は接続配線１１００を介して、パーソナルコンピュータ２０００に接続されている。
【０２５９】
図３７、図３８は、別のアプリケーションを示している。図３７、図３８に示すように、ＩＣカード２１００は、ＭＣＵ２２００を搭載している。ＭＣＵ２２００は、上記実施形態に従ったＮＡＮＤ型フラッシュメモリを含む半導体記憶装置９０１と、例えばＲＯＭ２３００、ＲＡＭ２４００、及びＣＰＵ２５００を備えている。ＩＣカード２１００は、図３７に示すように、その一表面に露出されたプレーンターミナル（plane terminal）２６００を有し、プレーンターミナル２６００はＭＣＵ２２００に接続されている。ＣＰＵ２５００は、演算部２５１０と、フラッシュメモリ３、ＲＯＭ２３００及びＲＡＭ２４００に接続された制御部２５２０を備えている。
【０２６０】
図３９は、他のアプリケーションを示すものであり、例えば携帯音楽記録再生装置３０００の例を示している。この携帯音楽記録再生装置３０００は、例えば本体内に上記実施形態に従ったＮＡＮＤ型フラッシュメモリを含む半導体記憶装置９０１を内蔵している。さらに、上記ＮＡＮＤ型フラッシュメモリを含むメモリカード９００が装着可能とされている。
【０２６１】
図４０は、他のアプリケーションを示すものであり、例えば携帯電話等の携帯端末装置４０００を示している。携帯端末装置４０００は、例えば本体内に上記実施形態に従ったＮＡＮＤ型フラッシュメモリを含む半導体記憶装置９０１を内蔵している。さらに、上記ＮＡＮＤ型フラッシュメモリを含むメモリカード９００が装着可能とされている。
【０２６２】
図４１は、他のアプリケーションを示すものであり、例えばＵＳＢメモリ５０００を示している。ＵＳＢメモリ５０００は、例えば本体内に上記実施形態に従ったＮＡＮＤ型フラッシュメモリを含む半導体記憶装置９０１を内蔵している。
【０２６３】
その他、本発明の要旨を変えない範囲において、種々変形実施可能なことは勿論である。
【符号の説明】
【０２６４】
１…メモリセルアレイ、１０…データ記憶回路、１０a…センスアンプユニット、１０ｂデータ制御ユニット、１１…コントローラ、ＭＣ…メモリセル、ＭＬＢ…多値記憶領域、ＳＬＢ…２値記憶領域。
【図１】
2010160873.tif 000003
【図２】
2010160873.tif 000004
【図３】
2010160873.tif 000005
【図４】
2010160873.tif 000006
【図５】
2010160873.tif 000007
【図６】
2010160873.tif 000008
【図７】
2010160873.tif 000009
【図８】
2010160873.tif 000010
【図９】
2010160873.tif 000011
【図１０】
2010160873.tif 000012
【図１１】
2010160873.tif 000013
【図１２】
2010160873.tif 000014
【図１３】
2010160873.tif 000015
【図１４】
2010160873.tif 000016
【図１５】
2010160873.tif 000017
【図１６】
2010160873.tif 000018
【図１７】
2010160873.tif 000019
【図１８】
2010160873.tif 000020
【図１９】
2010160873.tif 000021
【図２０】
2010160873.tif 000022
【図２１】
2010160873.tif 000023
【図２２】
2010160873.tif 000024
【図２３】
2010160873.tif 000025
【図２４】
2010160873.tif 000026
【図２５】
2010160873.tif 000027
【図２６】
2010160873.tif 000028
【図２７】
2010160873.tif 000029
【図２８】
2010160873.tif 000030
【図２９】
2010160873.tif 000031
【図３０】
2010160873.tif 000032
【図３１】
2010160873.tif 000033
【図３２】
2010160873.tif 000034
【図３３】
2010160873.tif 000035
【図３４】
2010160873.tif 000036
【図３５】
2010160873.tif 000037
【図３６】
2010160873.tif 000038
【図３７】
2010160873.tif 000039
【図３８】
2010160873.tif 000040
【図３９】
2010160873.tif 000041
【図４０】
2010160873.tif 000042
【図４１】
2010160873.tif 000043
【図４２】
2010160873.tif 000044
【図４３】
2010160873.tif 000045
【図４４】
2010160873.tif 000046
【図４５】
2010160873.tif 000047
【図４６】
2010160873.tif 000048
【図４７】
2010160873.tif 000049
【図４８】
2010160873.tif 000050
【図４９】
2010160873.tif 000051
【図５０】
2010160873.tif 000052
【図５１】
2010160873.tif 000053
【図５２】
2010160873.tif 000054
【図５３】
2010160873.tif 000055
【図５４】
2010160873.tif 000056
【図５５】
2010160873.tif 000057
【図５６】
2010160873.tif 000058
【図５７】
2010160873.tif 000059
【図５８】
2010160873.tif 000060
【図５９】
2010160873.tif 000061
【図６０】
2010160873.tif 000062
【図６１】
2010160873.tif 000063
【図６２】
2010160873.tif 000064