(57)【特許請求の範囲】
【請求項１】
ｎ値（ｎは２以上の自然数）の閾値電圧により複数のデータを記憶するメモリセルと、
前記メモリセルに接続され、外部より入力された第１論理レベル又は第２論理レベルのデータを記憶する第１のデータ記憶回路と、
前記第１のデータ記憶回路に接続され、前記第１のデータ記憶回路のデータを記憶する第２のデータ記憶回路と、
前記第１、第２のデータ記憶回路に接続され、前記メモリセルから読み出された第１論理レベル又は第２論理レベルのデータを記憶するデータ保持回路と、
前記メモリセルにデータを書き込む書き込み回路を有し、
前記書き込み回路は、前記メモリセルにデータを書き込む書き込み動作時に、前記第１のデータ記憶回路に記憶された第１論理レベルのデータに基づきメモリセルに本来の閾値電圧より低い閾値電圧によりｈ値（ｈ＜ｎ）を書き込み、次のデータによりそのメモリセルに（ｈ＋１）値以上を書き込み、前記次のデータを書き込む前に、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第２のデータ記憶回路に記憶されたデータと前記データ保持回路に記憶された前記メモリセルから読み出されたデータとに基づいて変換したデータを前記第１のデータ記憶回路に保持するベリファイ動作を行い、前記ベリファイ動作後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第１のデータ記憶回路の第１論理レベルのデータに基づき前記ｈ値の閾値電圧を本来の閾値電圧にする書き込みを行なうことを特徴とする不揮発性半導体記憶装置。
【請求項２】
ｎ値（ｎは２以上の自然数）の閾値電圧により複数のデータを記憶するメモリセルと、
前記メモリセルに接続され、外部より入力された第１論理レベル又は第２論理レベルのデータを記憶する第１のデータ記憶回路と、
前記第１のデータ記憶回路に接続され、前記第１のデータ記憶回路のデータを記憶する第２のデータ記憶回路と、
前記第１、第２のデータ記憶回路に接続され、前記メモリセルから読み出された第１論理レベル又は第２論理レベルのデータを記憶するデータ保持回路と、
前記メモリセルにデータを書き込む書き込み回路を有し、
前記書き込み回路は、前記第１のデータ記憶回路に記憶された第１論理レベルのデータに基づき前記ｋ（ｎ＝２ｋ）ビットのビット毎にデータをメモリセルに書き込み、各ビットのデータは本来の閾値電圧より低い閾値電圧に書き込む書き込みと、本来の閾値電圧に書き込む書き込みとを有し、
前記書き込み回路は、前記本来の閾値電圧より低い閾値電圧に書き込む書き込み後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第２のデータ記憶回路に記憶されたデータと前記データ保持回路に記憶された前記メモリセルから読み出されたデータとに基づいて変換したデータを前記第１のデータ記憶回路に保持するベリファイ動作を行い、前記ベリファイ動作後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第１のデータ記憶回路の第１論理レベルのデータに基づき前記本来の閾値電圧に書き込む書き込みを行うことを特徴とする不揮発性半導体記憶装置。
【請求項３】
ｎ値（ｎは２以上の自然数）の閾値電圧により複数のデータを記憶するメモリセルと、
前記メモリセルに接続され、外部より入力された第１論理レベル又は第２論理レベルのデータを記憶する第１のデータ記憶回路と、
前記第１のデータ記憶回路に接続され、前記第１のデータ記憶回路のデータを記憶する第２のデータ記憶回路と、
前記第１、第２のデータ記憶回路に接続され、前記メモリセルから読み出された第１論理レベル又は第２論理レベルのデータを記憶するデータ保持回路と、
前記メモリセルにデータを書き込む書き込み回路を有し、
前記書き込み回路は、第ｉページ（ｉ＜＝ｋ、ｎ＝２ｋ）の書込みにおいて、メモリセルへ１ビットデータを書込み、第ｉページ（ｉ＝ｋ）の書き込み時、１度の書き込み動作により、本来の閾値電圧に書き込み、第１ページ（１＜ｋ）の書き込み時、本来の閾値電圧より低い閾値電圧の書き込みと本来の閾値電圧での書き込みに分けて書き込み、
前記書き込み回路は、前記第１のデータ記憶回路に記憶された第１論理レベルのデータに基づき前記本来の閾値電圧より低い閾値電圧に書き込む書き込み後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第２のデータ記憶回路に記憶されたデータと前記データ保持回路に記憶された前記メモリセルから読み出されたデータとに基づいて変換したデータを前記第１のデータ記憶回路に保持するベリファイ動作を行い、前記ベリファイ動作後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第１のデータ記憶回路の第１論理レベルのデータに基づき前記本来の閾値電圧に書き込む書き込みを行うことを特徴とする不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば２ビット以上のデータを記憶することが可能な不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
ＥＥＰＲＯＭを用いたＮＡＮＤ型フラッシュメモリであって、多値データを記憶可能な不揮発性半導体記憶装置が提案されている（例えば、特許文献１参照）。
【０００３】
ＮＡＮＤ型フラッシュメモリは、ロウ方向に配列された複数のセル全て、または半数のセルが一括して書き込み、または読み出し動作される。このため、各ＮＡＮＤ型フラッシュメモリを構成するＮＡＮＤセルはビット線を介して書き込み及び読み出し用のラッチ回路に接続されている。
【特許文献１】特開２０００−１９５２８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、多値データを記憶するＮＡＮＤ型フラッシュメモリは、書き込みデータに応じた閾値電圧をメモリセルに設定することにより、複数ビットのデータをメモリセルに記憶可能としている。閾値電圧の分布を抑制するために第１回目の書き込みにおいて、本来の閾値電圧より低い閾値電圧により書き込み、第２回目の書き込みにおいて、本来の閾値電圧まで書き込んでいる。しかし、ビット数の増加に伴い書き込み速度の高速化が望まれている。
【０００５】
本発明は、多値データを高速且つ確実に書き込むことが可能な不揮発性半導体記憶装置を提供しようとするものである。
【課題を解決するための手段】
【０００６】
本発明の第１の態様に係る不揮発性半導体記憶装置は、ｎ値（ｎは２以上の自然数）の閾値電圧により複数のデータを記憶するメモリセルと、前記メモリセルに接続され、外部より入力された第１論理レベル又は第２論理レベルのデータを記憶する第１のデータ記憶回路と、前記第１のデータ記憶回路に接続され、前記第１のデータ記憶回路のデータを記憶する第２のデータ記憶回路と、前記第１、第２のデータ記憶回路に接続され、前記メモリセルから読み出された第１論理レベル又は第２論理レベルのデータを記憶するデータ保持回路と、前記メモリセルにデータを書き込む書き込み回路を有し、前記書き込み回路は、前記メモリセルにデータを書き込む書き込み動作時に、前記第１のデータ記憶回路に記憶された第１論理レベルのデータに基づきメモリセルに本来の閾値電圧より低い閾値電圧によりｈ値（ｈ＜ｎ）を書き込み、次のデータによりそのメモリセルに（ｈ＋１）値以上を書き込み、前記次のデータを書き込む前に、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第２のデータ記憶回路に記憶されたデータと前記データ保持回路に記憶された前記メモリセルから読み出されたデータとに基づいて変換したデータを前記第１のデータ記憶回路に保持するベリファイ動作を行い、前記ベリファイ動作後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第１のデータ記憶回路の第１論理レベルのデータに基づき前記ｈ値の閾値電圧を本来の閾値電圧にする書き込みを行なうことを特徴とする。
【０００７】
本発明の第２の態様に係る不揮発性半導体記憶装置は、ｎ値（ｎは２以上の自然数）の閾値電圧により複数のデータを記憶するメモリセルと、前記メモリセルに接続され、外部より入力された第１論理レベル又は第２論理レベルのデータを記憶する第１のデータ記憶回路と、前記第１のデータ記憶回路に接続され、前記第１のデータ記憶回路のデータを記憶する第２のデータ記憶回路と、前記第１、第２のデータ記憶回路に接続され、前記メモリセルから読み出された第１論理レベル又は第２論理レベルのデータを記憶するデータ保持回路と、前記メモリセルにデータを書き込む書き込み回路を有し、前記書き込み回路は、前記第１のデータ記憶回路に記憶された第１論理レベルのデータに基づき前記ｋ（ｎ＝２ｋ）ビットのビット毎にデータをメモリセルに書き込み、各ビットのデータは本来の閾値電圧より低い閾値電圧に書き込む書き込みと、本来の閾値電圧に書き込む書き込みとを有し、前記書き込み回路は、前記本来の閾値電圧より低い閾値電圧に書き込む書き込み後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第２のデータ記憶回路に記憶されたデータと前記データ保持回路に記憶された前記メモリセルから読み出されたデータとに基づいて変換したデータを前記第１のデータ記憶回路に保持するベリファイ動作を行い、前記ベリファイ動作後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第１のデータ記憶回路の第１論理レベルのデータに基づき前記本来の閾値電圧に書き込む書き込みを行うことを特徴とする。
【０００８】
本発明の第３の態様に係る不揮発性半導体記憶装置は、ｎ値（ｎは２以上の自然数）の閾値電圧により複数のデータを記憶するメモリセルと、前記メモリセルに接続され、外部より入力された第１論理レベル又は第２論理レベルのデータを記憶する第１のデータ記憶回路と、前記第１のデータ記憶回路に接続され、前記第１のデータ記憶回路のデータを記憶する第２のデータ記憶回路と、前記第１、第２のデータ記憶回路に接続され、前記メモリセルから読み出された第１論理レベル又は第２論理レベルのデータを記憶するデータ保持回路と、前記メモリセルにデータを書き込む書き込み回路を有し、前記書き込み回路は、第ｉページ（ｉ＜＝ｋ、ｎ＝２ｋ）の書込みにおいて、メモリセルへ１ビットデータを書込み、第ｉページ（ｉ＝ｋ）の書き込み時、１度の書き込み動作により、本来の閾値電圧に書き込み、第１ページ（１＜ｋ）の書き込み時、本来の閾値電圧より低い閾値電圧の書き込みと本来の閾値電圧での書き込みに分けて書き込み、前記書き込み回路は、前記第１のデータ記憶回路に記憶された第１論理レベルのデータに基づき前記本来の閾値電圧より低い閾値電圧に書き込む書き込み後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第２のデータ記憶回路に記憶されたデータと前記データ保持回路に記憶された前記メモリセルから読み出されたデータとに基づいて変換したデータを前記第１のデータ記憶回路に保持するベリファイ動作を行い、前記ベリファイ動作後、前記第１のデータ記憶回路に記憶されたデータと前記第２のデータ記憶回路に記憶されたデータとを前記データ保持回路を用いて入れ替え、前記第１のデータ記憶回路の第１論理レベルのデータに基づき前記本来の閾値電圧に書き込む書き込みを行うことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、多値データを高速且つ確実に書き込むことが可能な不揮発性半導体記憶装置を提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について図面を参照して説明する。
【００１１】
（第１の実施形態）
図２は、本発明の不揮発性半導体記憶装置の概略構成を示すものであり、例えば４値（２ビット）を記憶するＮＡＮＤフラッシュメモリの構成を示している。
【００１２】
メモリセルアレイ１は複数のビット線と複数のワード線と共通ソース線を含み、例えばＥＥＰＲＯＭセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ１には、ビット線を制御するためのビット制御回路２とワード線制御回路６が接続されている。
【００１３】
ビット線制御回路２は、後述するように複数のデータ記憶回路を含んでいる。このビット線制御回路２は、ビット線を介してメモリセルアレイ１中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ１中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路２には、カラムデコーダ３、データ入出力バッファ４が接続されている。ビット線制御回路２内のデータ記憶回路はカラムデコーダ３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ４を介してデータ入出力端子５から外部へ出力される。
【００１４】
また、外部からデータ入出力端子５に入力された書き込みデータは、データ入出力バッファ４を介して、カラムデコーダ３によって選択されたデータ記憶回路に入力される。
【００１５】
ワード線制御回路６は、メモリセルアレイ１に接続されている。このワード線制御回路６は、メモリセルアレイ１中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
【００１６】
メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、及びワード線制御回路６は、制御信号及び制御電圧発生回路７に接続され、この制御信号及び制御電圧発生回路７によって制御される。制御信号及び制御電圧発生回路７は、制御信号入力端子８に接続され、外部から制御信号入力端子８を介して入力される制御信号によって制御される。
【００１７】
前記ビット線制御回路２、カラムデコーダ３、ワード線制御回路６、制御信号及び制御電圧発生回路７は書き込み回路、及び読み出し回路を構成している。
【００１８】
図３は、図２に示すメモリセルアレイ１及びビット線制御回路２の構成を示している。メモリセルアレイ１には複数のＮＡＮＤセルが配置されている。１つのＮＡＮＤセルは、直列接続された例えば１６個のＥＥＰＲＯＭからなるメモリセルＭＣと、第１、第２の選択ゲートＳ１、Ｓ２とにより構成されている。第１の選択ゲートＳ１はビット線ＢＬ０に接続され、第２の選択ゲートＳ２はソース線ＳＲＣに接続されている。各ロウに配置されたメモリセルの制御ゲートはワード線ＷＬ１、ＷＬ２、ＷＬ３〜ＷＬ１６に共通接続されている。また、第１の選択ゲートＳ１はセレクト線ＳＧ１に共通接続され、第２の選択ゲートＳ２はセレクト線ＳＧ２に共通接続されている。
【００１９】
メモリセルアレイ１は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のＮＡＮＤセルにより構成され、このブロック単位でデータが消去される。また、消去動作は、データ記憶回路１０に接続されている２本のビット線について同時に行なわれる。
【００２０】
また、ビット線の１つ置きに配置され、１つのワード線に接続された複数のメモリセル（破線で囲まれた範囲のメモリセル）は、１セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。１セクタには例えば２ページ分のデータが記憶される。
【００２１】
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路１０に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち外部より指定されたアドレス信号（ＹＡ１、ＹＡ２…ＹＡｉ、ＹＡ4023）に応じて１本のビット線が選択される。さらに、外部アドレスに応じて、１本のワード線が選択され、１セクタ（２ページ分）が選択される。この２ページの切り替えはアドレスによって行われる。
【００２２】
図４（ａ）（ｂ）はメモリセル及び選択トランジスタの断面図を示している。図４（ａ）はメモリセルを示している。基板４１にはメモリセルのソース、ドレインとしてのｎ型拡散層４２が形成されている。基板４１の上にはゲート絶縁膜４３を介して浮遊ゲート（ＦＧ）４４が形成され、この浮遊ゲート４４の上には絶縁膜４５を介して制御ゲート（ＣＧ）４６が形成されている。図４（ｂ）は選択ゲートを示している。基板４１にはソース、ドレインとしてのｎ型拡散層４７が形成されている。基板４１の上にはゲート絶縁膜４８を介して制御ゲート４９が形成されている。
【００２３】
図５は、メモリセルアレイの１つのＮＡＮＤセルの断面を示している。この例において、１つのＮＡＮＤセルは、図４（ａ）に示す構成の１６個のメモリセルＭＣが直列接続されて構成されている。ＮＡＮＤセルのドレイン側、ソース側には、図４（ｂ）に示す構成の第１の選択ゲートＳ１及び第２の選択ゲートＳ２が設けられている。
【００２４】
図１は、図３に示すデータ記憶回路１０の一例を示す回路図である。フラグ用データ記憶回路１０ａもデータ記憶回路１０と同様の構成とされている。
【００２５】
このデータ記憶回路１０は、プライマリデータキャッシュ（ＰＤＣ）、ダイナミックデータキャッシュ（ＤＤＣ）、テンポラリデータキャッシュ（ＴＤＣ）を有している。ＰＤＣ、ＤＤＣは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。ＴＤＣは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。
【００２６】
ＰＤＣは、クロックドインバータ回路６１ｉ、６１ｊ及びトランジスタ６１ｋにより構成されている。トランジスタ６１ｋは、クロックドインバータ回路６１ｉの入力端とクロックドインバータ回路６１ｊの入力端の相互間に接続されている。このトランジスタのゲートには信号ＥＱ１が供給されている。クロックドインバータ回路６１ｉ、６１ｊの入力端としてのノードＮ１ａ、Ｎ１ｂは、カラム選択トランジスタ６１ａ、６１ｂを介して入出力データ線ＩＯ、ＩＯｎに接続されている。これらトランジスタ６１ａ、６１ｂのゲートにはカラム選択信号ＣＳＬｉが供給されている。
【００２７】
さらに、ＰＤＣのノードＮ１ｂはトランジスタ６１ｌのゲートに接続されている。このトランジスタ６１ｌの電流通路の一端には、信号ＣＯＭｉが供給されている。また、トランジスタ６１ｌの電流通路の他端はトランジスタ６１ｍを介して接地されている。さらに、トランジスタ６１ｌの電流通路の他端はトランジスタ６１ｇ、トランジスタ６１ｄを介して接地されている。トランジスタ６１ｍのゲートには信号ＣＨＫ１が供給されている。トランジスタ６１ｇのゲートは後述するノードＮ３に接続され、トランジスタ６１ｄのゲートには信号ＣＨＫ２が供給されている。
【００２８】
前記信号ＣＯＭｉは全データ記憶回路１０に共通の信号であり、全データ記憶回路１０のベリファイが完了したかどうかを示す信号である。すなわち、後述するように、ベリファイが完了すると、全てのデータ記憶回路１０のＰＤＣのノードＮ１ａがハイレベルとなる。この状態において、信号ＣＨＫ１、ＣＨＫ２をハイレベルとすると、ベリファイが完了している場合、信号ＣＯＭｉがハイレベルとなる。
【００２９】
前記インバータ回路６１ｉの出力端と接地間には、トランジスタ６１ｃが接続されている。このトランジスタ６１ｃのゲートにはプリセット信号ＰＲＳＴが供給されている。このトランジスタ６１ｃはプリセット信号ＰＲＳＴに応じて動作し、ＰＤＣのノードＮ１ｂをＶＳＳ（ローレベル）に設定する。つまり、ＰＤＣのノードＮ１ａをＶｄｄ（ハイレベル）にセットする。
【００３０】
前記ＴＤＣは、例えばＭＯＳキャパシタ６１ｐにより構成されている。このキャパシタ６１ｐは、トランジスタ６１ｇ、６１ｈの接続ノードＮ３と接地間に接続されている。また、接続ノードＮ３には、トランジスタ６１ｑ、６１ｈを介してＤＤＣが接続されている。トランジスタ６１ｑのゲートには、信号ＲＥＧが供給され、トランジスタ６１ｈのゲートには信号ＢＬＣ１が供給されている。
【００３１】
ＤＤＣは、トランジスタ６１ｒ、６１ｓにより構成されている。トランジスタ６１ｒの電流通路の一端には信号ＶＲＥＧが供給され、他端は前記トランジスタ６１ｑの電流通路に接続されている。このトランジスタ６１ｒのゲートはトランジスタ６１ｓを介して前記ＰＤＣのノードＮ１ａに接続されている。このトランジスタ６１ｓのゲートには信号ＤＴＧが供給されている。
【００３２】
さらに、前記接続ノードＮ３にはトランジスタ６１ｔ、６１ｕの電流通路の一端が接続されている。トランジスタ６１ｕの電流通路の他端には信号ＶＰＲＥが供給され、ゲートにはＢＬＰＲＥが供給されている。前記トランジスタ６１ｔのゲートには信号ＢＬＣＬＡＭＰが供給されている。このトランジスタ６１ｔの電流通路の他端はトランジスタ６１ｖを介してビット線ＢＬｏの一端に接続され、トランジスタ６１ｗを介してビット線ＢＬｅの一端に接続されている。ビット線ＢＬｏの他端はトランジスタ６１ｘの電流通路の一端に接続されている。このトランジスタ６１ｘのゲートには信号ＢｌＡＳｏが供給されている。ビット線ＢＬｅの他端はトランジスタ６１ｙの電流通路の一端に接続されている。このトランジスタ６１ｙのゲートには信号ＢｌＡＳｅが供給されている。これらトランジスタ６１ｘ、６１ｙの電流通路の他端には、信号ＢＬＣＲＬが供給されている。トランジスタ６１ｘ、６１ｙは、信号ＢｌＡＳｏ、ＢｌＡＳｅに応じてトランジスタ６１ｖ、６１ｗと相補的にオンとされ、非選択のビット線に信号ＢＬＣＲＬの電位を供給する。
【００３３】
上記各信号及び電圧は、図２に示す制御信号及び制御電圧発生回路７により生成され、この制御信号及び制御電圧発生回路７の制御に基づき、以下の動作が制御される。
【００３４】
本メモリは、多値メモリであり、１セルに２ビットのデータを記憶することができる。この２ビットの切り替えはアドレス（第１ページ、第２ページ）によって行なわれる。
【００３５】
（動作説明）
上記構成において、動作について説明する。
【００３６】
図６（ａ）は、メモリセルのデータとメモリセルの閾値電圧の関係を示している。消去動作を行なうとメモリセルのデータは“０”となる。第１ページの書き込みにより、メモリセルのデータはデータ“０”とデータ“１”になる。第２ページの書き込み後、メモリセルのデータはデータ“０”〜“３”となる。第１の実施形態において、メモリセルのデータは閾値電圧の低い方から高い方へと、定義されている。
【００３７】
（プログラム及びプログラムベリファイ）
プログラム動作は、先ずアドレスを指定し、図３に示す２ページが選択される。本メモリは、この２ページのうち、第１ページ、第２ページの順序でしかプログラムできない。したがって、初めにアドレスで第１ページを選択する。近年、複数ビットを記憶する多値フラッシュメモリの書き込み動作において、閾値電圧の分布を狭くするため、１回のプログラムシーケンスが２回のプログラム動作を含む書き込み方式が採用されている。この方式において、第１回目のプログラム動作は、本来の閾値電圧より低いベリファイ電位を設定して、書き込み及びベリファイ動作を行なう。第１回目のプログラム動作がパスした後、第２回目のプログラム動作が行なわれる。第２回目のプログラム動作は、ベリファイ電位を本来の値に設定して、書き込み及びベリファイ動作が行なわれる。この方式は、一旦書き込みが行なわれたメモリセルに対して再書き込みし、最初に書き込まれた閾値電圧より若干高い閾値電圧を設定する。このため、書き込み時の閾値電圧の変動率が小さいため、閾値電圧分布が小さくなる。また、ＮＡＮＤ型フラッシュメモリの場合、同一ワード線に接続された複数のセルのうち、半分のセルを一度に書き込む。このため、書き込みベリファイのループにおいて、最初のベリファイ時は、閾値電圧の低いセルが多い。したがって、ソース線が浮いており、最初に書き込みが完了するセルはこの状態で閾値電圧が決まる。この後、他のセルの書き込みが終了すると、ソース線が所定の電位に固定される。このため、最初に書き込みが完了したセルの閾値電圧が低くなったようになり、閾値電圧の分布が広がる問題もなくなる。さらに、第１回目の書き込みの、書き込み電圧の増加分ΔＶｐｇｍを大きくし、第２回目の書き込みの、書き込み電圧の増加分ΔＶｐｇｍを小さくすることにより、書き込み動作を高速化することができる利点を有している。
【００３８】
第１の実施形態においても、上記方式を用いてプログラム動作を実行する。図８は、第１ページの書き込み動作を示し、図９は、第２ページの書き込み動作を示している。第１ページ、第２ページの書き込み動作とも、２回のプログラム及びベリファイ動作を含んでいる。図１０（ａ）（ｂ）、図１１は、第１ページの書き込み動作における各データキャッシュの内容を示し、図１２（ａ）（ｂ）、図１３（ａ）（ｂ）は、第２ページの書き込み動作における各データキャッシュの内容を示している。尚、図において、“Ｌ”はローレベル、“Ｈ”はハイレベルを示している。
【００３９】
（第１ページ書き込み動作）
先ず、図８、図１０（ａ）（ｂ）、図１１を参照して第１ページの書き込み動作について説明する。
【００４０】
（第１ページデータロード）（Ｓ１０）
先ず、書き込みデータを外部より入力し、全てのデータ記憶回路１０内のＰＤＣに記憶する。外部より書き込みを行なわないことを示すデータ“１”が入力されると、図１に示すＰＤＣのノードＮ１ａがハイレベルに設定される。また、外部より書き込みを行なうことを示すデータ“０”が入力されると、ＰＤＣのノードＮ１ａがローレベルに設定される。以後、ＰＤＣのデータはノードＮ１ａの電位、ＤＤＣのデータはトランジスタ６１ｒのゲート電位とする。
【００４１】
（第１ページデータキャッシュ設定）（Ｓ１１）
書き込みコマンドが入力されると、信号ＤＴＧが一瞬ハイレベルとなり、ＤＤＣを構成するトランジスタ６１ｓが一瞬オンとされる。このため、ＰＤＣのデータがトランジスタ６１ｓを介してＤＤＣにコピーされる。したがって、トランジスタ６１ｒのゲート電位がハイレベルとなる（図１０（ａ））。
【００４２】
（第１ページプログラム第１回目）（Ｓ１２）
次に、図１に示す信号ＢＬＣ１、ＢＬＣＬＡＭＰ、ＢＬＳｏ又はＢＬＳｅの電位をＶｄｄ＋Ｖｔｈ（Ｖｄｄ：電源電圧（例えば３Ｖ又は１．８Ｖ、しかし、この電圧に限定されるものではない）、Ｖｔｈ：ＮチャネルＭＯＳトランジスタの閾値電圧）とする。すると、トランジスタ６１ｈがオンとなり、ＰＤＣに書き込みを行なわないことを示すデータ“１”が記憶されている時、ビット線がＶｄｄになり、書き込みを行なうことを示すデータ“０”の時、ビット線がＶｓｓ（接地電位）となる。また、選択されたワード線に接続され、非選択ページ（ビット線が非選択）のセルは書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線もデータ“１”と同じＶｄｄとする。ここで、選択されているブロックのセレクト線ＳＧ１をＶｄｄ、選択ワード線にＶｐｇｍ（２０Ｖ）、非選択ワード線にＶｐａｓｓ（１０Ｖ）を供給すると、ビット線がＶｓｓになっている場合、セルのチャネルがＶｓｓ、ワード線がＶｐｇｍであるため書き込みが行なわれる。一方、ビット線がＶｄｄになっている場合、Ｖｐｇｍによりセルのチャネルが、カップリングによってＶｐｇｍ／２程度となる。このため、ビット線がＶｄｄになっているメモリセルはプログラムされない。
【００４３】
図６（ｂ）に示すように、第１ページのデータが“０”の時、メモリセルのデータは“１”に設定される。また、第１ページのデータが“１”の時、メモリセルのデータは“０”のままである。
【００４４】
書き込みが終了すると、Ｖｐｇｍ、Ｖｐａｓｓの電位になっていたワード線をリカバリーする。このリカバリー中に以下の動作をする。
【００４５】
（ＰＤＣとＤＤＣデータの入れ替え）
信号ＢＬＰＲＥを一旦Ｖｄｄとし、信号ＶＰＲＥをＶｓｓとして、ＴＤＣをＶｓｓにする。次に、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧを一旦ハイレベルとしてトランジスタ６１ｑをオンさせる。すると、ＤＤＣがハイレベルを記憶している場合、トランジスタ６１ｒがオンし、トランジスタ６１ｒ、６１ｑを介してＴＤＣがＶｄｄとなる。また、ＤＤＣがローレベルを記憶している場合、トランジスタ６１ｒがオフであるため、ＴＤＣはＶｓｓのままとなる。この動作により、ＤＤＣのデータがＴＤＣにコピーされる。次に、信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣにコピーする。この後、信号ＢＬＣ１を一旦ハイレベルとし、ＴＤＣのデータをＰＤＣにコピーする。この結果、ＰＤＣに記憶されていたデータはＤＤＣに移動し、ＤＤＣに記憶されていたデータはＰＤＣに移動する（図１０（ｂ））。
【００４６】
（第１ページプログラムベリファイ第１回目）（Ｓ１３）
第１ページプログラムベリファイは、図６（ｂ）に示すように、選択されているワード線にベリファイ電位“ａ＊’”を与える。本来のベリファイ電位“ａ’”はリードレベルより若干高くする。しかし、第１ページプログラムの第１回目のベリファイ電位“ａ＊’”は、本来のベリファイ電位“ａ’”より若干低い電位にする。
【００４７】
次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に電圧Ｖｒｅａｄを供給し、図１に示すデータ記憶回路の信号ＶＰＲＥをＶｄｄ、信号ＢＬＰＲＥをＶｄｄ＋Ｖｔｈ、信号ＢＬＣＬＡＭＰを例えば１Ｖ＋Ｖｔｈとして、ビット線を例えば１Ｖにプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルにする。セルの閾値電圧が“ａ＊’”より高い時、セルはオフする。このため、ビット線はハイレベルのままである。また、セルの閾値電圧が“ａ＊’”に達していない場合、セルはオンする。このためビット線はＶｓｓとなる。
【００４８】
この後、信号ＢＬＣＬＡＭＰをＶｓｓ、信号ＶＰＲＥをＶｄｄ、信号ＢＬＰＲＥをＶｄｄ＋ＶｔｈとしてＴＤＣをＶｄｄに充電する。次いで、信号ＢＬＣＬＡＭＰを例えば１Ｖ＋Ｖｔｈとする。すると、ビット線がローレベルの場合、ＴＤＣはローレベルとなり、ビット線がハイレベルの場合、ＴＤＣはハイレベルのままとなる。
【００４９】
ここで、書き込みを行なう場合、ＤＤＣにローレベルが記憶され、書き込みを行なわない場合、ＤＤＣにハイレベルが記憶されている。このため、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧを一旦ハイレベルにすると、書き込みを行なわない場合、ＴＤＣが強制的にハイレベルになる。この後、信号ＤＴＧを一旦ハイレベルとし、ＰＤＣに記憶されているデータをＤＤＣにコピーする。次に、信号ＢＬＣ１をハイレベルとすると、セルが閾値電圧“ａ＊’”に達した場合と、書き込みを行なわない場合、ＰＤＣにハイレベルがラッチされる。また、セルの閾値電圧が“ａ＊’”に達しない場合だけ、ＰＤＣにローレベルがラッチされる（図１０（ｂ））。
【００５０】
ＰＤＣがローレベルの場合、再び書き込み動作を行ない全てのＰＤＣのデータがハイレベルになるまでプログラム動作とベリファイ動作を繰り返す（Ｓ１４〜Ｓ１２）。このとき、プログラムの電圧Ｖｐｇｍは、例えば＋０．４Ｖづつ増加させる。
【００５１】
このようにして、全てのＰＤＣのデータがハイレベルになると第１ページの第２回目の書き込み動作が実行される。
【００５２】
（第１ページデータキャッシュ設定第２回目）（Ｓ１５）（図１１）
全てのＰＤＣのデータがハイレベルになった状態において、先ず、前述したと同様の動作を実行し、ＰＤＣのデータとＤＤＣのデータを入れ替える。すなわち、ＤＤＣに記憶されたデータをＰＤＣに移す。ＤＤＣのデータは、もともとＰＤＣに記憶されていたデータであり、書き込みを行なわない場合はデータ“１”、書き込みを行なう場合はデータ“０”となっている。
【００５３】
この状態において、上記と同様の動作により、第２回目の第１ページプログラム（Ｓ１６）、第２回目の第１ページプログラムベリファイ（Ｓ１７）が実行される。但し、ベリファイ動作におけるベリファイレベルは、本来のベリファイレベルである“ａ’”である（図６（ｃ））。
【００５４】
この後、ＰＤＣがローレベルの場合、再び書き込み動作を行ない全てのＰＤＣのデータがハイレベルになるまで、プログラム動作とベリファイ動作を繰り返す（Ｓ１８〜Ｓ１６）（図１１）。このとき、プログラムの電圧Ｖｐｇｍの増加分ΔＶｐｇｍは、第１回目のプログラム動作より少なくし、例えば＋０．２Ｖづつ増加させる。
【００５５】
上記のようにして、第１ページのデータを書き込んだ後、第２ページのデータが書き込まれる。
【００５６】
（第２ページ書き込み動作）
次に、図９、図１２（ａ）（ｂ）、図１３（ａ）（ｂ）を参照して第２ページの書き込み動作について説明する。
【００５７】
（第２ページデータロード）（Ｓ２０）
第２ページプログラムも第１ページプログラムと同様に、外部より書き込みデータを入力し、全てのデータ記憶回路１０のＰＤＣに記憶する。
【００５８】
（内部データロード第１回目）（Ｓ２１）（図１２（ａ））
図７（ａ）に示すように、第１ページの書き込み動作によりメモリセルのデータが“０”になっている（第１ページに書き込み動作を行なわなかった）場合で、第２ページのデータが“０”（書き込みを行なう）の時は、メモリセルのデータを“３”とし、第２ページのデータが“１”（書き込みを行なわない）の時は、メモリセルのデータを“０”のままとする。また、第１ページの書き込み動作によりメモリセルのデータが“１”になっている（第１ページに書き込み動作を行なった）場合で、第２ページのデータが“０”（書き込みを行なう）の時は、メモリセルのデータを“２”とし、第２ページのデータが“１”（書き込みを行なわない）の時は、メモリセルのデータを“１”のままとする。このため、第２ページのデータをメモリセルに書き込む前に、予めメモリセルのデータが“０”か“１”かを調べておく必要がある。
【００５９】
そこで、内部データロードにおいて、先ず、図６（ａ）に示すように、ワード線に電位“ａ”を与えて読み出し動作を行なう。次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に読み出し電位Ｖｒｅａｄを供給し、データ記憶回路１０の信号ＶＰＲＥ，ＢＬＰＲＥに第１ページの書き込み動作と同様の電位を供給してビット線をプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルにする。メモリセルの閾値電圧が“ａ”より高い時、セルはオフする。このため、ビット線の電位はハイレベルのままである。一方、メモリセルの閾値電圧が“ａ”より低い時、セルはオンする。このため、ビット線の電位はＶｓｓとなる。ビット線の放電中に信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣにコピーする（図１２（ａ））。
【００６０】
次に、第１ページの書き込み動作と同様にＴＤＣをＶｄｄに充電した後、信号ＢＬＣＬＡＭＰを例えば１Ｖ＋Ｖｔｈとしてトランジスタ６１ｔをオンとする。ビット線の電位がローレベルの場合（メモリセルのデータが“０”の場合）、ＴＤＣはローレベルになり、ビット線の電位がハイレベルの場合（メモリセルのデータが“１”の場合）、ＴＤＣはハイレベルのままである。
【００６１】
ここで、書き込みを行なう場合、ＤＤＣにローレベルがラッチされ、書き込みを行なわない場合、ＤＤＣにハイレベルがラッチされている。このため、信号ＶＲＥＧをＶｓｓとし、信号ＲＥＧを一旦ハイレベルにすると、書き込みを行なわない場合、トランジスタ６１ｑがオンし、ＴＤＣが強制的にローレベルになる。この後、ＤＴＧを一旦ハイレベルとしてＰＤＣに記憶されているデータをＤＤＣにコピーする。この後、信号ＢＬＣ１をハイレベルとすると、ＰＤＣにハイレベルがラッチされるのは、メモリセルにデータ“２”を書き込む場合のみである。第２ページにおいてデータを書き込まない場合、及びメモリセルにデータ“３”を書き込む場合、ＰＤＣはローレベルとなる。
【００６２】
この後、ＰＤＣとＤＤＣのデータが入れ替えられ、ＰＤＣに書き込みデータがラッチされ、ＤＤＣにメモリセルにデータ“２”を書き込む場合のみハイレベルがラッチされる。
【００６３】
（第２ページプログラム第１回目）（Ｓ２３）（図１２（ｂ））
第２ページプログラムの第１回目は、第１ページプログラムの第１回目と同様の動作により、ＰＤＣにハイレベルがラッチされている場合、メモリセルにデータを書き込まず、ＰＤＣにローレベルがラッチされている場合、メモリセルにデータを書き込む。
【００６４】
書き込みが終了すると、Ｖｐｇｍ、Ｖｐａｓｓになっていたワード線の電位をリカバリーする。このリカバリー中に第１ページプログラムと同様に、ＰＤＣのデータとＤＤＣのデータを入れ替える。
【００６５】
（第１回目の第２ページプログラムベリファイ：データ“２”のベリファイ）（Ｓ２４）
第２ページプログラムベリファイにおいて、メモリセルにデータ“２”が書き込まれたかどうかのベリファイを、第１ページプログラムベリファイの第１回目と同様に実行した場合、正しくベリファイできない。すなわち、メモリセルにデータ“３”を書き込んでいるセルの閾値電圧は、データ“２”を書き込んでいるメモリセルの閾値電圧より高いため、データ“２”の書き込みが不十分の場合においてもパスしてしまう。したがって、データ“２”のベリファイは、以下のように実行する。
【００６６】
メモリセルにデータ“２”が書き込まれたかどうかのベリファイは、図７（ａ）に示すように、選択されているワード線にベリファイ電位“ｂ＊’”を供給する。データ“２”の本来のベリファイ電位“ｂ’”は、リードレベルより若干高くする。しかし、プログラムベリファイにおける第１回目のベリファイ電位“ｂ＊’”は、本来のベリファイ電位“ｂ’”より若干低い電位である。
【００６７】
次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に読み出し電位Ｖｒｅａｄを供給し、図１に示すデータ記憶回路の信号ＢＬＣ１をＶｄｄ＋Ｖｔｈとする。さらに、トランジスタ６１ｔ、６１ｖ又は６１ｗをオンとして、ビット線をプリチャージする。ここで、プリチャージされるビット線は、メモリセルにデータ“２”を書き込んでいるセルが接続されたビット線のみである。すなわち、ＰＤＣにハイレベルがラッチされている場合、ビット線がプリチャージされる。この後、セルのソース側のセレクト線ＳＧ２をハイレベルにする。閾値電圧が“ｂ＊’”より高い時、セルはオフする。このため、ビット線の電位はハイレベルのままである。閾値電圧“ｂ＊’”に達していない場合、セルはオンする。このため、ビット線の電位はＶｓｓとなる。
【００６８】
この後、前述したようにしてＴＤＣをＶｄｄに充電する。この後、信号ＢＬＣＬＡＭＰに前記所定の電圧を供給してオンさせる。ビット線の電位がローレベルの場合、ＴＤＣはローレベルになり、ビット線の電位がハイレベルの場合、ＴＤＣはハイレベルのままである。ここで、図１２（ｂ）に示すように、書き込みを行なう場合、ＤＤＣにローレベルがラッチされ、書き込みを行なわない場合、ＤＤＣにハイレベルがラッチされている。このため、信号ＶＲＥＧをＶｃｃとし、信号ＲＥＧを一旦ハイレベルにすると、書き込みを行なわない場合、ＴＤＣが強制的にハイレベルになる。この後、ＤＴＧを一旦ハイレベルとし、ＰＤＣに記憶されているデータをＤＤＣにコピーする。この後、信号ＢＬＣ１をハイレベルとすると、ＰＤＣにハイレベルがラッチされるのは、セルが閾値電圧に達した場合と、書き込みを行なわない場合である。また、ＰＤＣにローレベルがラッチされるのは、メモリセルにデータ“２”を書き込んでいて、閾値電圧“ｂ＊’”に達しない場合だけである。
【００６９】
（第２ページプログラムベリファイ第１回目：データ“３”のベリファイ）（Ｓ２５）
メモリセルにデータ“３”が書き込まれたかどうかのベリファイは、第１ページプログラムベリファイの第１回目と同様に実行する。但し、ベリファイレベルは“ｃ＊’”である。ベリファイレベル“ｃ＊’”は、本来のベリファイリード時のレベル“ｃ’”より若干低く設定されている。データ“２”のベリファイ後、ＰＤＣには、書くか書かないかを示すデータがラッチされ、ＤＤＣにはメモリセルにデータ“２”を書き込む時、ハイレベルとなっている。このため、ベリファイ前に、以下の操作をし、ＰＤＣとＤＤＣのデータの入れ替える。
【００７０】
（ＰＤＣとＤＤＣデータの入れ替え）
先ず、信号ＢＬＰＲＥを一旦Ｖｄｄとし、信号ＶＲＥＧをＶｓｓとしてＴＤＣをＶｓｓにする。次に、信号ＶＲＥＧをＶｄｄとし、一旦信号ＲＥＧをハイレベルとすると、ＤＤＣがハイレベルの場合、ＴＤＣはＶｄｄとなり、ＤＤＣがローレベルの場合、ＴＤＣはＶｓｓのままとなる。つまり、ＤＤＣのデータがＴＤＣにコピーされる。次に信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣにコピーする。この後、信号ＢＬＣを一旦ハイレベルとしＴＤＣのデータをＰＤＣにコピーする。この結果、ＰＤＣに記憶されていたデータはＤＤＣに移り、ＤＤＣに記憶されていたデータはＰＤＣに移動する。
【００７１】
ＰＤＣがローレベルの場合、再び書き込み動作を行ない全てのＰＤＣのデータがハイレベルになるまでこのプログラム動作とベリファイ動作を繰り返す（Ｓ２６〜Ｓ２３）。このとき、プログラム電圧Ｖｐｇｍは、例えば＋０．４Ｖづつ増加させる。
【００７２】
（内部データロード第２回目）（Ｓ２７）（図１３（ａ））
図７（ａ）に示すように、第１回目のプログラムにおいて、データ“２”とデータ“３”をメモリセルに書き込んでいる。これらデータ“２”とデータ“３”の閾値電圧は、本来の閾値電圧より低く設定されている。したがって、第２回目のプログラムにより、図７（ｂ）に示すように、データ“２”とデータ“３”を本来の閾値電圧に書き込む。しかし、第１回目プログラム及びプログラムベリファイが完了すると、ＰＤＣのデータが全てハイレベルになっている。したがって、書き込みデータが無くなってしまうため、リード動作を行ないメモリセルにデータ“２”又はデータ“３”に書き込んでいるかどうかを調べる。
【００７３】
まず、ワード線ＷＬに読み出し電位“ｂ”（“ｂ”＜“ｂ’”）又は前記第１回目のベリファイ電位“ｂ＊’”を供給し、リード動作をする（Ｓ２７）。これによりメモリセルがデータ“２”及びデータ“３”を書き込んでいるセルであるかどうかが分かる。しかし、データ“２”を書き込んでいるセルは、第１回目のプログラムにおいて、本来より低い閾値電圧“ｂ＊’”までしか書きこまれていない。このため、データ“２”を書き込むセルは、分からない場合もある。しかし、データ“２”を書き込むセルは、図１２（ｂ）に示すように、ＤＤＣもハイレベルとなっているため、データ“２”の書き込みセルを認識することができる。
【００７４】
第２回目の内部データロードの具体的な動作は、次の通りである。先ず、選択されているワード線に読み出し電位“ｂ”を供給する。次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に読み出し電位Ｖｒｅａｄを供給する。データ記憶回路１０の信号ＶＰＲＥ、ＢＬＰＲＥに前述したビット線をプリチャージする際の電圧を供給し、ビット線をプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルにする。メモリセルの閾値電圧が“ｂ”又は“ｂ＊’”より高い時、セルがオフする。このため、ビット線の電位はハイレベルのままである。一方、メモリセルの閾値電圧が“ｂ”又は“ｂ＊’”より低い時、セルがオンする。このため、ビット線の電位はＶｓｓとなる。
【００７５】
次に再び、ＴＤＣをＶｄｄに充電した後、信号ＢＬＣＬＡＭＰに前述した電位を供給し、トランジスタ６１ｔを介してビット線の電位を通過可能とする。ビット線の電位がローレベルの場合、ＴＤＣはローレベルになり、ビット線の電位がハイレベルの場合（メモリセルの閾値電圧が“ｂ”又は“ｂ＊’”より高い場合）、ＴＤＣはハイレベルになる。ここで、メモリセルにデータ“２”を書き込む場合、ＤＤＣがハイレベルにラッチされ、それ以外は、ＤＤＣにローレベルがラッチされている（図１３（ａ））。このため、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧを一旦ハイレベルにすると、メモリセルにデータ“２”を書き込む場合、ＴＤＣが強制的にハイレベルになる。この後、信号ＢＬＣ１をハイレベルにすると、ＰＤＣにハイレベルがラッチされるのは、メモリセルにデータ“２”を書き込み場合と、データ“３”を書き込む場合のみである。
【００７６】
（第２ページデータキャッシュ設定第２回目）（Ｓ２８）
第２ページにおいてデータを書き込む場合、ＰＤＣはハイレベルをラッチし、書き込まない場合、ＰＤＣはローレベルラッチしている。このため、ＰＤＣのデータを反転させなくてはならない。したがって、以下の操作を行なう。
【００７７】
（ＰＤＣデータとＤＤＣデータの入れ替え）
先ず、信号ＢＬＰＲＥを一旦Ｖｄｄとし、ＶＰＲＥをＶｓｓとしてＴＤＣをＶｓｓにする。次に、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧを一旦ハイレベルとする。ＤＤＣがハイレベルの場合、ＴＤＣはＶｄｄとなり、ＤＤＣがローレベルの場合、ＴＤＣはＶｓｓのままとなる。つまり、ＤＤＣのデータがＴＤＣにコピーされる。次に、信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣにコピーする。この後、信号ＢＬＣ１を一旦ハイレベルとし、ＴＤＣのデータをＰＤＣにコピーする。
【００７８】
（ＰＤＣとＤＤＣデータの入れ替え：ＤＤＣからＰＤＣは反転転送）
先ず、信号ＢＬＰＲＥを一旦Ｖｄｄとし、信号ＶＰＲＥをＶｄｄとしてＴＤＣをＶｄｄにする。次に、信号ＶＲＥＧをＶｓｓとし、信号ＲＥＧを一旦ハイレベルとする。ＤＤＣがハイレベルの場合、ＴＤＣはＶｓｓとなり、ＤＤＣがローレベルの場合、ＴＤＣはＶｄｄのままとなる。つまり、ＤＤＣのデータがＴＤＣに反転してコピーされる。次に信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣにコピーする。この後、信号ＢＬＣ１を一旦ハイレベルとし、ＴＤＣのデータをＰＤＣにコピーする。この結果、ＰＤＣに記憶されていた書き込みデータは反転してＰＤＣに移り、ＤＤＣに記憶されていたデータは、変わらない。したがって、第２ページで書き込む場合、ＰＤＣにローレベルラッチされ、書き込まない場合、ＰＤＣにハイレベルがラッチされる。
【００７９】
（第２ページプログラム第２回目）（Ｓ２９）（図１３（ｂ））
第２ページプログラムの第２回目は、第２ページプログラムの第１回目と同様の動作である。すなわち、ＰＤＣにハイレベルがラッチされている場合、書き込まず、ＰＤＣにローレベルがラッチされている場合、書き込む。
【００８０】
（データ“２”、データ“３”のベリファイ第２回目）（Ｓ３０、Ｓ３１）
第２ページプログラムにおいて、データ“２”とデータ“３”の第２回目のベリファイ動作は、第１回目のデータ“２”とデータ“３”のベリファイ動作と同様であり、ベリファイ電位のみが相違している。すなわち、２回目のベリファイは、図７（ｂ）に示すように、本来のベリファイ電位“ｂ’”及び“ｃ’”をワード線に印加する。
【００８１】
このベリファイの結果、ＰＤＣがローレベルの場合、再び書き込み動作を行ない全てのＰＤＣのデータがハイレベルになるまで、プログラム動作とベリファイ動作を繰り返す（Ｓ３２〜Ｓ２９）。このとき、プログラム電圧Ｖｐｇｍの増加分は、第１回目のΔＶｐｇｍより少なくする。例えば第１回目において、＋０．４Ｖづつ増加している場合、第２回目では＋０．２Ｖづつ増加させる。
【００８２】
上記第２回目の書き込み動作により、図７（ｂ）に示すように、メモリセルにデータが書き込まれる。
【００８３】
（リード動作）
（第２ページリード）（図１４（ａ））
第２ページのリードは、選択されているワード線にリードの時の電位“ｂ”を印加する。次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に読み出し電位Ｖｒｅａｄ（例えば４．５Ｖ）を印加する。また、信号ＶＰＲＥをＶｄｄ、信号ＢＬＰＲＥ、ＢＬＣＬＡＭＰに所定の電圧を与え、データ記憶回路１０のＴＤＣを前述した動作により、ハイレベルに設定するとともに、ビット線をプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルにする。メモリセルの閾値電圧が“ｂ”より高い時、セルがオフする。このため、ビット線はハイレベルのままである。一方、メモリセルの閾値電圧が“ｂ”に達していない場合、セルはオンする。このため、ビット線はＶｓｓとなる。図６（ａ）に示すように、メモリセルのデータとメモリセルの閾値電圧を定義しているため、メモリセルのデータが“０”、“１”であるとＴＤＣはローレベルとなり、メモリセルのデータが“２”、“３”であるとハイレベルのままである。
【００８４】
次に、ＴＤＣの電位をＰＤＣに転送する。メモリセルのデータが“０”、“１”である場合、ＰＤＣはローレベルをラッチし、メモリセルのデータが“２”、“３”であるとＰＤＣはハイレベルをラッチする（図１４（ａ））。ＰＤＣからデータ線ＩＯに読み出されたデータは、例えばデータ入出力バッファ４で反転される。このため、メモリセルのデータが“０”、“１”である場合、データ“１”となり、メモリセルのデータが“２”、“３”である場合、データ“０”が出力される。以上の動作は２値データを記憶するメモリの読み出し動作と同様である。
【００８５】
（第１ページリード）（図１４（ｂ））
第１ページのリードで出力されるデータが“１”の場合、図６（ａ）に示すように、メモリセルのデータが“０”、“３”と離れた領域になっている。したがって、最初にメモリセルのデータが“２”以下か、“３”であるかを判断し、次にメモリセルのデータが“０”か、“２”以上であるかを判断しなければならない。
【００８６】
（リード動作（１））
先ず、メモリセルのデータが“２”以下か、“３”であるかを調べる。このため、ワード線にリード電位“ｃ”を印加してメモリセルのデータをビット線に読み出す。この読み出されたデータは、ＴＤＣに記憶され、ＰＤＣに転送される。この結果、ＰＤＣにハイレベルがラッチされるのは、メモリセルのデータが“３”の場合だけである。また、ＰＤＣにローレベルがラッチされる場合は、メモリセルのデータが“０”、“１”、“２”の場合である。
【００８７】
（リード動作（２））
次に、メモリセルのデータが“１”か、“２”以上であるかを調べる。このため、ワード線にリード電位“ａ”を印加してメモリセルのデータをビット線に読み出す。この結果、ビット線の電位はメモリセルのデータが“０”の場合、ローレベルし、メモリセルのデータが“１”、“２”、“３”であるとハイレベルとなる。
【００８８】
上記ビット線の放電時間中に、信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣに移す。次いで、ビット線の電位をＴＤＣに転送した後、信号ＶＲＥＧをＶｓｓとして信号ＲＥＧを一旦ハイレベルとする。ＤＤＣがハイレベルの場合、ＴＤＣは強制的にローレベルとなる。この結果、メモリセルのデータが“０”、“３”の場合、ＴＤＣはローレベルになり、メモリセルのデータが“１”、“２”の場合、ＴＤＣがハイレベルになる。
【００８９】
次に、これらＴＤＣの電位をＰＤＣに読み込む。メモリセルのデータが“０”、“３”であると、ＰＤＣはローレベルをラッチし、メモリセルのデータが“２”、“３”であると、ＰＤＣはハイレベルをラッチする。ＰＤＣからデータ線ＩＯに読み出されたデータは、例えばデータ入出力バッファ４で反転される。このため、メモリセルのデータが“０”、“３であるとデータ“１”が出力され、メモリセルのデータが“１”、“２”であると、データ“０”が出力される。
【００９０】
上記第１の実施形態によれば、データ記憶回路１０は、ＰＤＣ、ＤＤＣ、ＴＤＣを有し、外部より入力された書き込みデータは、これらＰＤＣ、ＤＤＣ、ＴＤＣにおいてデータを操作することにより再生される。このため、書き込みデータを保持するデータキャッシュを設ける必要がないため、回路構成を削減することができる。
【００９１】
また、書き込みデータを一度データ記憶回路１０に取り込んだ後、再度同じ書き込みデータを取り込む必要がないため、書き込み動作を高速化できる。
【００９２】
（第２の実施形態）
次に、第２の実施形態について説明する。
【００９３】
第１の実施形態において、第２ページプログラム時、データ“２”の書き込みと、データ“３”の書き込みのそれぞれについて、パスライト方式により２回の書き込み動作を実行していた。しかし、データ“３”の書き込みは、第２ページプログラムの第１回目の書き込みで、本来の閾値電圧“ｃ’”まで書き込み、データ“２”のみ、パスライト方式により２回の書き込み動作で書き込むことも可能である。
【００９４】
図１５は、第２の実施形態を示すものであり、図９と同一部分には同一符号を付している。図１５は、第２ページのプログラム動作のみを示している。
【００９５】
第２ページプログラムの第１回目において、データ“２”のプログラムは、第１の実施形態と同様に本来の閾値電圧より若干低い“ｂ＊’”まで書き込まれる。これに対して、データ“３”のプログラムは本来の閾値電圧“ｃ’”まで書き込まれる。このため、データ“３”のベリファイは、ベリファイ電位として“ｃ’”がワード線に供給される（Ｓ２５）。このようにして、データ“３”は本来の閾値電圧まで書き込まれる。
【００９６】
データ“３”は本来の閾値電圧まで書き込まれているため、第２ページプログラムの第２回目は、データ“２”のみ書き込まれる。ここで、第１回目のプログラム後、外部から入力された書き込みデータは、データ記憶回路１０内に残っていない。しかし、データ“２”を書き込んでいる場合、第１回目の書き込み後、ＤＤＣがハイレベルとなっている（図１３（ａ））。このため、ＤＤＣのデータをＰＤＣに反転して転送することにより、このＰＤＣのデータを書き込みデータとすることができる（Ｓ２８）。したがって、内部データロード、すなわち、第１の実施形態におけるリード電位“ｂ”又は“ｂ＊’”を用いたリード動作（Ｓ２７）を省略できる。
【００９７】
このようにデータキャッシュを設定した後、第２回目のプログラムを行なう（Ｓ２９）。このプログラムはデータ“２”を本来の閾値電圧に設定するものである。このため、ベリファイ電位“ｂ’”を用いたベリファイのみが実行される。このプログラム及びベリファイ動作により、全てのＰＤＣがハイレベルとなると、書き込み動作が終了される。
【００９８】
上記第２の実施形態によれば、データ“３”を１度のプログラム動作により本来の閾値電圧まで書き込んでいるため、データ“３”の閾値電圧の分布が広がってしまう。しかし、データ“３”のベリファイ回数を削減できるため、高速な書き込みが可能となる。
【００９９】
また、第２ページの第１回目のプログラム後、ＤＤＣのデータをＰＤＣに反転して転送することにより、このＰＤＣのデータを書き込みデータとして、第２回目のプログラムを行なうことができる。このため、内部データロード、すなわち、第１の実施形態におけるリード電位“ｂ”又は“ｂ＊’”を用いたリード動作を省略できる。したがって、プログラム時間を短縮できる。
【０１００】
尚、第２の実施形態は４値のデータのうち、最大値としてのデータ“３”を書き込む際、１度のプログラムにより書き込んでいた。しかし、１度のプログラムにより書き込むデータはデータ“３”に限定されるものではない。すなわち、４値以上のデータを書き込む際においても、書き込みデータのうち最大のデータの書き込みに第２の実施形態の方法を適用することが可能である。
【０１０１】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。第１、第２の実施形態は、４値のデータを書き込む場合について説明した。しかし、図１に示す構成のデータ記憶回路１０を用いて、メモリセルに４値（２ビット）以上のデータを記憶することが可能である。
【０１０２】
この書き込みアルゴリズムについて説明する。ところで、浮遊ゲートと浮遊ゲート間の容量によって、隣接セルのデータが変化するとメモリセルの閾値電圧が変動してしまうことを抑えるため、次のような書き込み方式が提案されている。
【０１０３】
例えば閾値電圧の低い方から順にデータが“０”，“１”，“２”，“３”と定義された４値のメモリセルにおいて、第１ページの書き込みによりデータ“０”のセルを“２”とするが、本来の閾値電圧より低い閾値電圧“２＊”とする。この後、隣接セルの第１ページの書き込みを行なった後に、“２＊”を本来の閾値電圧“２”にする。隣接するセルの浮遊ゲートと浮遊ゲート（ＦＧ−ＦＧ）間容量によりセルの閾値電圧が上がった場合、本来の閾値電圧“２”にする書き込みでは、閾値電圧はあまり変化しない。ＦＧ−ＦＧ間容量により閾値電圧が上がらない場合、本来の閾値電圧“２”にする書き込みで閾値電圧が上がるため、閾値電圧が一定となる。第３の実施形態では、この書き込み動作により８値の例で説明する。
【０１０４】
第３の実施形態において、不揮発性半導体記憶装置の概略構成は、図２に示すように、第１、第２の実施形態と同様である。
【０１０５】
図１６は、メモリセルアレイ及びデータ記憶回路の構成を示している。第３の実施形態において、メモリセルアレイ及びデータ記憶回路の構成は、図３とほぼ同様である。しかし、各メモリセルには、３ビットのデータが記憶される。
【０１０６】
図１７（ａ）（ｂ）（ｃ）、図１８（ａ）（ｂ）は、第３の実施形態の動作を示している。図１９は、メモリセルに対する書き込み順序を示している。図１９も説明の便宜上、１つのＮＡＮＤセルが直列接続された４個のメモリセルにより構成された場合を示している。
【０１０７】
ここで、図１８（ｂ）は、８値の場合におけるメモリセルの閾値電圧とデータの対応関係を示している。８値の場合、メモリセルのデータは、例えば閾値電圧が低い方から順に“０”“１”“２”〜“７”と設定される。メモリセルを消去すると、メモリセルのデータは“０”になる。第１ページの書き込みにより、メモリセルのデータを“０”又は“４”とし、第２ページの書き込みにより、メモリセルのデータを“０”、“２”、“４”、“６”とする。さらに、第３ページの書き込みにより、メモリセルのデータを“０”〜“７”にする。
【０１０８】
ここでは、説明を簡略化するため、図１７（ｃ）に示すように、４値、２ビットのデータがメモリセルに記憶されている状態から、さらに、１ビットのデータを書き込む場合について説明する。
【０１０９】
図１７（ａ）は、第１ページのデータを書き込んだ後、第２ページのデータを書き込む前の状態を示している（図１９に示す書き込み順序“１〜４”の後）。図１７（ｂ）は、第１ページのデータを隣接セルに書き込んだ後の状態を示している。これらの書き込み動作は、第１、第２の実施形態と同様であるため、ここでは説明を省略する。図１９に示す書き込み順序“５、６”において、第２ページのデータを書き込んだ後、メモリセル３，４とビット線方向に隣接するメモリセル５，６に第１ページのデータを書き込む。この後、メモリセル３，４に第２ページのデータを書き込む（図１９に示す書き込み順序“９，１０”）。図１７（ｃ）は、第３ページのデータを書き込む前で、第２ページのデータを書き込んだ後の状態を示している（図１９に示す書き込み順序“１０”の後）。このように、４値、２ビットのデータが記憶されている状態から、さらに、１ビットのデータを記憶する方法について、以下に説明する。
【０１１０】
図２０は、第２ページのデータを書き込んだ後、第２ページの隣接セルにデータを書き込む場合を示している。図１９に示す書き込み順序“１１”のように、メモリセル１に第３ページのデータを書き込む直前は、図１９に示す書き込み順序“１０”のように、メモリセル４に第２ページのデータを書き込んでいる。この書き込みが終了した後、メモリセル１の閾値電圧分布は、図１８（ａ）に示すようになっている。
【０１１１】
ここで、データ“２”、“４”、“６”が書き込まれるセルについて、第３ページの本来のベリファイレベルである“ｂ’”，“ｄ’”，“ｆ’”まで書き込みを行なう。このため、先ず、ワード線の電位を“ａ”としてメモリセルに書き込まれたデータを読み出す（図２０（Ｓ４１））。図２２（ａ）は、このリード動作により読み出されたデータを示している。メモリセルのデータが“０”以外の場合、ＰＤＣはデータ“１”をラッチする。この後、データキャッシュを操作し、ＰＤＣを図２２（ｂ）に示すようにセットする（Ｓ４２）。この結果、メモリセルに書き込まれたデータが“２”、“４”、“６”の場合、ＰＤＣはデータ“０”をラッチする。
【０１１２】
図１８（ａ）に示すように、第２ページの書き込みにおいて、本来のベリファイ電位より低いベリファイ電位“ｂ＊’”、“ｄ＊’”、“ｆ＊’”まで書き込みが行なわれていて、その後、隣接セルの書き込みにより閾値電圧が上昇している場合もある。また、本来のベリファイ電位“ｂ’”、“ｄ’”、“ｆ’”に達しているセルもある。このため、先ず、本来のベリファイ電位“ｂ’”、“ｄ’”、“ｆ’”によりベリファイ動作を行なう（Ｓ４３、Ｓ４４、Ｓ４５）。
【０１１３】
（最も閾値電圧が高いセルのベリファイ）
先ず、最も閾値電圧が高いセル、すなわち、データ“６”を書き込んでいるセルをベリファイする。この場合、選択されているワード線にリードの時の電位“ｆ”より少し高い電位“ｆ’”を印加する。選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に読み出し電位Ｖｒｅａｄを供給し、データ記憶回路１０の信号ＢＬＣＬＡＭＰ、及び信号ＢＬＰＲＥに前述した所定の電圧を供給し、ビット線をプリチャージする。メモリセルの閾値電圧が“ｆ’”より高い時、セルはオフする。このため、ビット線はハイレベルのままである。また、メモリセルの閾値電圧が“ｆ’”より低い場合、セルはオンする。このため、ビット線はＶｓｓとなる。このビット線の放電中、ＴＤＣを一旦Ｖｓｓとし、この後、信号ＲＥＧをハイレベルとして、トランジスタ６１ｑをオンさせ、ＤＤＣのデータをＴＤＣに移す。
【０１１４】
次に、信号ＤＴＧを一旦ハイレベルとしてトランジスタ６１ｓをオンさせ、ＰＤＣのデータをＤＤＣに移す。この後、信号ＢＬＣ１をハイレベルとしてトランジスタ６１ｈをオンさせ、ＴＤＣのデータをＰＤＣに移す。
【０１１５】
次に、データ記憶回路１０の信号ＶＰＲＥをＶｄｄとし、信号ＢＬＰＲＥをハイレベルとすることにより、ＴＤＣをＶｄｄにプリチャージする。この後、信号ＢＬＣＬＡＭＰをハイレベルとする。ＴＤＣはビット線がローレベルの場合、ローレベルとなり、ビット線がハイレベルの場合、ハイレベルとなる。
【０１１６】
ここで、書き込みを行なう場合、ＤＤＣにローレベルがラッチされ、書き込みを行なわない場合、ＤＤＣにハイレベルがラッチされている。このため、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルとすると、書き込みを行なわない場合、トランジスタ６１ｒがオンするため、ＴＤＣが強制的にハイレベルとなる。この後、ＰＤＣのデータをＤＤＣに移し、ＴＤＣの電位をＰＤＣに転送する。ＰＤＣにハイレベルがラッチされる場合は、書き込みを行なわない場合と、メモリセルにデータ“６”を書き込んでいて、セルの閾値電圧がベリファイ電位“ｆ’”に達した場合だけである。ＰＤＣにローレベルがラッチされる場合は、セルの閾値電圧が“ｆ’”に達しない場合と、メモリセルにデータ“４”又は“２”を書き込んでいる場合である。
【０１１７】
（中間の閾値電圧を有するセルのベリファイ）（図２０（Ｓ４４，Ｓ４５））
中間の閾値電圧を有するセル、すなわち、メモリセルにデータ“２”、“４”を書き込んでいるセルのベリファイは、前記最も閾値電圧の高いセルのベリファイと同様にベリファイすることは困難である。なぜなら、中間の閾値電圧を有するセルよりも高い閾値電圧を書き込んでいるセルの閾値電圧は、これら中間の閾値電圧より高いため、これら高い閾値電圧のセルもベリファイがＯＫとなってしまうからである。そこで、リード動作を行ない、中間の閾値電圧のベリファイ電位より高い閾値電圧のセルがあるかどうかを調べ、このようなセルがある場合、ベリファイ結果をＮＧとしなくてはならない。
【０１１８】
このため、先ず、選択されているワード線にリードの時の電位“ｄ”又は“ｂ”より少し高い電位“ｄ’”又は“ｂ’”を供給する。選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に読み出し電位Ｖｒｅａｄを供給し、データ記憶回路１０の信号ＢＬＣＬＡＭＰ、信号ＢＬＰＲＥに前記所定の電圧を供給して、ビット線をプリチャージする。メモリセルの閾値電圧が“ｄ’”又は“ｂ’”より高い時、セルはオフする。このため、ビット線はハイレベルのままである。また、メモリセルの閾値電圧が“ｄ’”又は“ｂ’”より低い場合、セルはオンする。このため、ビット線はＶｓｓとなる。
【０１１９】
次に、データ記憶回路１０の信号ＶＰＲＥをＶｄｄとし、信号ＢＬＰＲＥをハイレベルとすることにより、ＴＤＣをＶｄｄにプリチャージする。この後、信号ＢＬＣＬＡＭＰに所定のハイレベルを供給する。ＴＤＣはビット線がローレベルの場合、ローレベルとなり、ビット線がハイレベルの場合、ハイレベルとなる。この後、ＰＤＣのデータをＤＤＣに移し、ＴＤＣの電位をＰＤＣに転送する。ＰＤＣがハイレベルとなるのは、セルの閾値電圧が“ｄ’”又は“ｂ’”より高い場合、つまり、ベリファイＯＫの場合と、メモリセルにデータ“６”を書き込んでいる場合、又はメモリセルにデータ“４”又は“６”を書き込んでいる場合である。
【０１２０】
次に、ワード線の電位を“ｄ’”又は“ｂ’”より、少し高い電位“ｅ”又は“ｃ”に上げる。ビット線は、セルの閾値電圧が“ｄ’”又は“ｂ’”以上である場合、ハイレベルとなる。しかし、閾値電圧が“ｅ”又は“ｃ”より低い場合、セルがオンするため、ビット線はＶｓｓとなる。このため、閾値電圧が“ｅ”又は“ｃ”より高い時のみ、セルがオフするため、ビット線はハイレベルのままとなる。
【０１２１】
（ＰＤＣとＤＤＣのデータの入れ替え）
上記ビット線の放電中、ＴＤＣを一旦Ｖｓｓとし、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルとしてＤＤＣのデータをＴＤＣに移す。この後、信号ＤＴＧを一旦ハイレベルとして、ＰＤＣのデータをＤＤＣに移す。この後、ＴＤＣのデータをＰＤＣに転送する。
【０１２２】
（ＰＤＣとＤＤＣのデータの入れ替え：ＤＤＣからＰＤＣへデータを反転して転送）
ＴＤＣを一旦Ｖｄｄとし、信号ＶＲＥＧをＶｓｓとし、信号ＲＥＧをハイレベルとして、ＤＤＣのデータをＴＤＣに反転して転送する。この後、信号ＤＴＧを一旦ハイレベルとして、ＰＤＣのデータをＤＤＣに移す。この後、ＴＤＣのデータをＰＤＣに移す。
【０１２３】
（ＰＤＣとＤＤＣのデータの入れ替え）
ＴＤＣを一旦Ｖｓｓとし、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルとして、ＤＤＣのデータをＴＤＣに移す。この後、信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣに転送する。この後、ＴＤＣのデータをＰＤＣに転送する。
【０１２４】
この操作の結果、ＤＤＣがハイレベルとなるのは、前にビット線を放電させたとき、セルの閾値電圧がワード線の電位“ｄ’”又は“ｂ’”より低いときである。また、ＤＤＣがローレベルとなるのは、前にビット線を放電させたとき、セルの閾値電圧がワード線の電位“ｄ’”又は“ｂ’”より高いときである。ＰＤＣにラッチされたデータは、初めからラッチされていたデータがラッチされる。すなわち、書き込みセルの場合、データ“０”がラッチされ、書き込み非選択のセルの場合、データ“１”がラッチされる。
【０１２５】
次に、データ記憶回路１０の信号ＶＰＲＥをＶｄｄとし、信号ＢＬＰＲＥを所定のハイレベルとすることにより、ＴＤＣをＶｄｄにプリチャージする。この後、信号ＢＬＣＬＡＭＰに所定のハイレベルを供給する。ＴＤＣはビット線がローレベルの場合、ローレベルとなり、ビット線がハイレベルの場合、ハイレベルとなる。ここで、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルにすると、ＤＤＣにハイレベルが記憶されている場合、ＴＤＣが強制的にハイレベルになる。この結果、ＴＤＣがハイレベルになるのは、セルの閾値電圧が“ｄ’”又は“ｂ’”より低いか、セルの閾値電圧が“ｅ”又は“ｃ”より高い時であり、ＴＤＣがローレベルになるのは、セルの閾値電圧が“ｄ’”又は“ｂ’”より高く、“ｅ”又は“ｃ”より低いときである。つまり、メモリセルにデータ“４”又は“２”を書き込んでいてベリファイがＯＫの時である。この後、ＰＤＣのデータをＤＤＣに移し、ＴＤＣの電位をＰＤＣに転送する。
【０１２６】
（ＰＤＣとＤＤＣデータの入れ替え）
ＴＤＣを一旦Ｖｓｓとし、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルとして、ＤＤＣのデータをＴＤＣに移す。この後、信号ＤＴＧを一旦ハイレベルとして、ＰＤＣのデータをＤＤＣに移す。次いで、ＴＤＣのデータをＰＤＣに転送する。
【０１２７】
（ＰＤＣとＤＤＣのデータの入れ替え：ＤＤＣからＰＤＣへデータを反転して転送）
ＴＤＣを一旦Ｖｄｄとし、信号ＶＲＥＧをＶｓｓとし、信号ＲＥＧをハイレベルとして、ＤＤＣのデータをＴＤＣに反転して移す。信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣに移す。この後、ＴＤＣのデータをＰＤＣに移す。
【０１２８】
ＴＤＣを一旦Ｖｓｓとし、信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルとしてＤＤＣのデータをＴＤＣに移す。信号ＤＴＧを一旦ハイレベルとし、ＰＤＣのデータをＤＤＣに移す。信号ＶＲＥＧをＶｄｄとし、信号ＲＥＧをハイレベルにする。すると、ＤＤＣにハイレベルがラッチされている場合、ＴＤＣが強制的にハイレベルになる。この結果、ＴＤＣがハイレベルになるのは、メモリセルにデータ“４”又は“２”を書き込んでいて、ベリファイがＯＫの時と、元々データ“１”（書き込み非選択）の場合である。この後、ＴＤＣのデータをＰＤＣに転送する。
【０１２９】
（プログラム動作）（Ｓ４７）
プログラム動作は、第１、第２の実施形態のプログラム動作と同様であり、ＰＤＣにデータ“１”が記憶されている場合、書き込みが行なわれず。データ“０”が記憶されている場合、書き込みが行なわれる。
【０１３０】
（プログラムベリファイ）（Ｓ４３〜Ｓ４６，Ｓ４７）
上記プログラム後、本来のベリファイ電位“ｂ’”、“ｄ’”、“ｆ’”により、ベリファイする。上記プログラム及びベリファイ動作を、全てのＰＤＣのデータが“１”になるまで繰り返す。プログラム及びベリファイ動作は、前述した最も高い閾値電圧のセルのベリファイ、及び中間の閾値電圧のセルのベリファイと同様である。
【０１３１】
プログラム及びベリファイ動作の結果、メモリセルのデータ“０”，“２”，“４”，“６”の閾値電圧の分布は、図１８（ｂ）に示すようになる。
【０１３２】
（第３ページの書き込み）
次に、図２１を参照して、第３ページの書き込み動作について説明する。
【０１３３】
（データロード、リード動作、及びデータキャッシュ設定）
次に、第３ページの書き込みデータを外部よりＰＤＣにロードする（Ｓ５１）。図２３（ａ）は、ＰＤＣにロードされたデータを示している。書き込みコマンドが入力された後、リード時の電位“ａ”“ｄ”“ｆ”を選択されたワード線に供給し、メモリセルのデータを読み出す（Ｓ５２〜Ｓ５４）。この読み出したデータにより、データキャッシュを設定する（Ｓ５５）。この結果、ＰＤＣにラッチされるデータは図２３（ｂ）に示すようになる。ここで、データ“１”は書き込み非選択、データ“０”は書き込みを示している。
【０１３４】
（プログラム動作）（Ｓ５６）
プログラム動作は、第１、第２の実施形態と同様であり、ＰＤＣにデータ“１”が記憶されている場合、書き込みが行なわれず。データ“０”が記憶されている場合、書き込みが行なわれる。
【０１３５】
（プログラムベリファイ）（Ｓ５７〜Ｓ６０）
プログラム後、本来のベリファイ電位“ａ’”、“ｃ’”、“ｅ’”、“ｇ’”によりベリファイ動作を行なう。このバリファイ動作は、全てのＰＤＣのデータが“１”になるまで繰り返される（Ｓ６１〜Ｓ５６）。プログラムベリファイ動作において、ベリファイ電位“ｇ’”でのベリファイ動作は、前述した最も高い閾値電圧のセルのベリファイと同様である。ベリファイ電位“ａ’”、“ｃ’”、“ｅ’”のベリファイ動作は、前述した中間の閾値電圧のセルのベリファイと同様である。これらベリファイ後、ワード線の電位を読み出し電圧“ｂ”、“ｄ”、“ｆ”としてメモリセルのデータを読み出し、これより高い閾値電圧のセルに書き込んでいるセルがベリファイＯＫとならないように操作する。
【０１３６】
上記第３の実施形態によれば、３個のデータキャッシュにより構成されたデータ記憶回路を用いて、８値、３ビットのデータを記憶するＮＡＮＤ型フラッシュメモリを構成することができる。このため、小さな回路構成により、一層多くのデータを記憶することができる。
【０１３７】
尚、第３の実施形態は、説明を簡略化するため、図１７（ｃ）に示す４値、２ビットのデータが記憶されている状態から、さらに、１ビットのデータを記憶し、８値、３ビットのデータ記憶する例を示した。しかし、図１７（ａ）に示す２値、１ビットのデータが記憶されている状態から、さらに、１ビットのデータを記憶して、４値、２ビットのデータ記憶する場合も、第３の実施形態の動作を適用できる。
【０１３８】
また、８値、３ビットに限らず、１６値以上のデータも、第３の実施形態とほぼ同様の動作により書き込むことが可能である。
【０１３９】
（第４の実施形態）
第４の実施形態は第３の実施形態を変形したものである。上記第３の実施形態は、第３ページ（３ビット目のデータ）の書き込み前に、第２ページと第１ページ（４値、２ビット）のメモリセルのデータを、本来のベリファイ電位“ｂ’”、“ｄ’”、“ｆ’”に書き込んでいた。しかし、閾値電圧の分布に余裕のある場合、この動作を省略することが可能である。この場合、図２０に示す動作を省略し、図２１に示す、第３ページのデータ“１”、“３”、“５”、“７”の書き込みのみを行なう。
【０１４０】
第４の実施形態によれば、第２ページと第１ページのメモリセルのデータを本来のベリファイ電位“ｂ’”、“ｄ’”、“ｆ’”に書き込む必要がないため、プログラム動作を高速化することが可能である。
【０１４１】
（第５の実施形態）
第１乃至第４の実施形態において、データ記憶回路１０は、図１、図３に示すように、２つのビット線に共有されていた。しかし、これに限定されるものではない。
【０１４２】
図２４は、第５の実施形態を示している。第５の実施形態において、データ記憶回路１０は、各ビット線に接続されている。このような構成とすることにより、高耐圧トランジスタとしてのトランジスタ数を半分に削減できる。図１に示す構成の場合、ビット線ＢＬｏの両端に高耐圧トランジスタ６１ｘ、６１ｖを接続し、ビット線ＢＬｅの両端に高耐圧トランジスタ６１ｙ、６１ｗを接続している。トランジスタ６１ｘ、６１ｙは、信号ＢＬＣＲＬの電位を供給するためのトランジスタである。これらトランジスタ６１ｘ、６１ｙ、６１ｖ、６１ｗのサイズは、ＰＤＣ等を構成するトランジスタのサイズより格段に大きい。しかし、図２４に示すように、各ビット線にデータ記憶回路１０を接続する場合、トランジスタ６１ｘ、６１ｙを省略できる。このため、データ記憶回路を各ビット線に接続した場合においても、チップサイズの増大を防止できる。
【０１４３】
本発明は、上記各実施形態に限定されるものではなく、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【０１４４】
【図１】本発明の第１の実施形態に係るデータ記憶回路を示す回路図。
【図２】本発明の不揮発性半導体記憶装置を示す概略構成図。
【図３】図２に示すメモリセルアレイ及びビット線制御回路の構成を示す回路図。
【図４】図４（ａ）（ｂ）はメモリセル及び選択トランジスタを示す断面図。
【図５】ＮＡＮＤセルを示す断面図。
【図６】図６（ａ）（ｂ）（ｃ）は、メモリセルのデータとメモリセルの閾値電圧の関係を示す図。
【図７】図７（ａ）（ｂ）は、メモリセルのデータとメモリセルの閾値電圧の関係を示す図。
【図８】第１ページの書き込み動作を示すフローチャート。
【図９】第２ページの書き込み動作を示すフローチャート。
【図１０】図１０（ａ）（ｂ）は、第１ページの書き込み動作における各データキャッシュとメモリセルのデータとの関係を示す図。
【図１１】図１１は、第１ページの書き込み動作における各データキャッシュとメモリセルのデータとの関係を示す図。
【図１２】図１２（ａ）（ｂ）は、第２ページの書き込み動作における各データキャッシュとメモリセルのデータとの関係を示す図。
【図１３】図１３（ａ）（ｂ）は、第２ページの書き込み動作における各データキャッシュとメモリセルのデータとの関係を示す図。
【図１４】図１４（ａ）は、第２ページのリード動作後にデータキャッシュに記憶されるデータを示す図、図１４（ｂ）は、第１ページのリード動作後にデータキャッシュに記憶されるデータを示す図。
【図１５】第２の実施形態を示すものであり、第２ページのプログラム動作を示すフローチャート。
【図１６】第３の実施形態に適用されるメモリセルアレイ及びデータ記憶回路の構成を示す図。
【図１７】図１７（ａ）（ｂ）（ｃ）は、第３の実施形態に係るメモリセルのデータとメモリセルの閾値電圧の関係を示す図。
【図１８】図１８（ａ）（ｂ）は、第３の実施形態に係るメモリセルのデータとメモリセルの閾値電圧の関係を示す図。
【図１９】第３の実施形態に係り、メモリセルに対する書き込み順序を示す図。
【図２０】第３の実施形態に係り、第２ページのデータを書き込んだ後、第２ページの隣接セルにデータを書き込む場合を示すフローチャート。
【図２１】第３の実施形態に係り、第３ページの書き込み動作を示すフローチャート。
【図２２】図２２（ａ）（ｂ）は、図２１に示す第３ページの書き込み動作に伴いデータキャッシュに記憶されるデータを示す図。
【図２３】図２３（ａ）（ｂ）は、図２１に示す第３ページの書き込み動作に伴いデータキャッシュに記憶されるデータを示す図。
【図２４】第５の実施形態に係るデータ記憶回路を示す回路構成図。
【符号の説明】
【０１４５】
１…メモリセルアレイ、２…ビット線制御回路、３…カラムデコーダ、４…データ入出力バッファ、５…データ入出力端子、６…ワード線制御回路、７…制御信号及び制御電圧発生回路、ＢＬ０〜ＢＬ８０４５…ビット線、ＷＬ１〜ＷＬ１６…ワード線、１０…データ記憶回路、ＰＤＣ…プライマリデータキャッシュ、ＤＤＣ…ダイナミックデータキャッシュ、ＴＤＣ…テンポラリデータキャッシュ。
【図１】
0004489084.tif 000002
【図２】
0004489084.tif 000003
【図３】
0004489084.tif 000004
【図４】
0004489084.tif 000005
【図５】
0004489084.tif 000006
【図６】
0004489084.tif 000007
【図７】
0004489084.tif 000008
【図８】
0004489084.tif 000009
【図９】
0004489084.tif 000010
【図１０】
0004489084.tif 000011
【図１１】
0004489084.tif 000012
【図１２】
0004489084.tif 000013
【図１３】
0004489084.tif 000014
【図１４】
0004489084.tif 000015
【図１５】
0004489084.tif 000016
【図１６】
0004489084.tif 000017
【図１７】
0004489084.tif 000018
【図１８】
0004489084.tif 000019
【図１９】
0004489084.tif 000020
【図２０】
0004489084.tif 000021
【図２１】
0004489084.tif 000022
【図２２】
0004489084.tif 000023
【図２３】
0004489084.tif 000024
【図２４】
0004489084.tif 000025