(57)【特許請求の範囲】
【請求項１】
ワード線、及びビット線に接続された複数のメモリセルがマトリックス状に配置されたメモリセルアレイと、
前記ワード線、及びビット線の電位を制御する第１の制御回路と、
前記ビット線に接続され、前記メモリセルアレイ内のメモリセルに２ｋ個（ｋは３以上の自然数）の閾値を設定する書込み動作のために、書込みデータを記憶するデータ記憶回路を有し、前記データ記憶回路は、少なくとも１ビットのデータをそれぞれ記憶するｋ個のラッチ回路で構成され、
前記データ記憶回路は、少なくとも１つのスタティックラッチ回路と、
複数のダイナミックラッチ回路を有し、
前記少なくとも１つのスタティックラッチ回路は外部に接続され、前記少なくとも１つのスタティックラッチ回路及び前記複数のダイナミックラッチ回路は、外部から入力された書き込みデータを入力するとともに、書込み動作に対応した内部書込みデータをラッチすることを特徴とする半導体記憶装置。
【請求項２】
複数の前記ダイナミックラッチ回路うちの１つのデータを前記スタティックラッチ回路に移動し、前記スタティックラッチ回路のデータを前記複数のダイナミックラッチ回路の１つに移動することによりデータをリフレッシュする第２の制御回路を
さらに具備することを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記少なくとも１つのスタティックラッチ回路は外部に接続されることを特徴とする請求項１記載の半導体記憶装置。
【請求項４】
前記データ記憶回路は、少なくとも第１、第２のスタティックラッチ回路と、
複数のダイナミックラッチ回路を有し、
複数の前記ダイナミックラッチ回路うちの１つのデータを前記第１のスタティックラッチ回路に移動し、前記第１のスタティックラッチ回路のデータを前記複数のダイナミックラッチ回路の１つに移動することによりデータをリフレッシュする第２の制御回路をさらに具備し、
前記第２のスタティックラッチ回路は、外部に接続されることを特徴とする請求項１記載の半導体記憶装置。
【請求項５】
前記書き込み動作により、前記メモリセルの閾値電圧を、第１の閾値電圧、第２の閾値電圧乃至第２ｋの閾値電圧に設定し、前記少なくとも１つのスタティックラッチ回路及び前記複数のダイナミックラッチ回路は、それぞれ１ビットのデータを記憶する第１のラッチ回路、第２のラッチ回路乃至第ｋのラッチ回路を構成し、
前記第１ラッチ回路は、第１乃至第２（ｋ−１）の閾値電圧、又は第２（ｋ−１）＋１乃至第２ｋの閾値電圧を区別し、
前記第２ラッチ回路は、第２（ｋ−１）＋１乃至第２（ｋ−１）＋２（ｋ−２）の閾値電圧、又は第２（ｋ−１）＋２（ｋ−２）＋１の閾値電圧を区別し、
前記第ｋのラッチ回路は、第２ｋ−１の閾値電圧、又は第２ｋの閾値電圧を区別するためのデータを記憶することを特徴とする請求項１記載の半導体記憶装置。
【請求項６】
前記少なくとも１つのスタティックラッチ回路及び前記複数のダイナミックラッチ回路は、それぞれ１ビットのデータを記憶する第１のラッチ回路、第２のラッチ回路乃至第ｋのラッチ回路を構成し、
前記書き込み動作の途中において、第１乃至第２（ｋ−１）の閾値電圧への書き込みが終了した場合、前記第１のラッチ回路は、次の書き込みデータを記憶し、前記第２（ｋ−１）＋１乃至第２（ｋ−１）＋２（ｋ−２）の閾値電圧への書き込みが終了した場合、前記第２のラッチ回路は、次の書き込みデータを記憶し、第２ｋ−１の閾値電圧への書き込みが終了した場合、前記第ｋのラッチ回路は、次の書き込みデータを記憶することを特徴とする請求項１記載の半導体記憶装置。
【請求項７】
第１ページ乃至第ｋページとして複数ビットのデータ記憶する場合、外部より入力されるアドレスが前記ｋページのアドレスの場合、２ｋレベルの書き込みを行うことを特徴とする請求項１記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＮＡＮＤ型フラッシュＥＥＰＲＯＭに係り、特に、１つのメモリセルに多値データを記憶することが可能な半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ形フラッシュメモリは、ロウ方向に配置された複数のセル全て、又は半数のセルが、それぞれビット線に接続され、各ビット線に書き込み、及び読み出し用のラッチ回路が接続されている。ロウ方向に配置された全てのセル又は半数のセルに対してデータを一括して書き込み、又は読み出し動作を行なう。近時、メモリの大容量化に伴い、１セルに２ビット以上のデータを記憶する多値メモリが開発されている（例えば、特許文献１参照）。この多値メモリにおいて、２ビットを記憶する場合、メモリセルに４つの閾値電圧を設定する必要があり、３ビットを記憶する場合、８つの閾値電圧を設定する必要があり、４ビット記憶する場合、１６個の閾値電圧を設定する必要がある。
【０００３】
このように、メモリセルに複数ビットのデータを記憶する場合、書き込みデータあるいは読み出しデータを記憶するために、ビット線にデータ記憶回路を接続する必要がある。このデータ記憶回路は、複数のラッチ回路により構成されている。
【０００４】
しかし、１つのメモリセルに記憶する閾値電圧の数が増加するに従い、データ記憶回路を構成するラッチ回路の数が増加し、書き込み速度が低下するという問題を有している。
【特許文献１】特開２００４−１９２７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、ラッチ回路の増加を抑制して多値データを記憶することができ、高速な書き込みが可能な半導体記憶装置を提供しようとするものである。
【課題を解決するための手段】
【０００６】
本発明の半導体記憶装置の態様はワード線、及びビット線に接続された複数のメモリセルがマトリックス状に配置されたメモリセルアレイと、前記ワード線、及びビット線の電位を制御する第１の制御回路と、前記ビット線に接続され、前記メモリセルアレイ内のメモリセルに２ｋ個（ｋは３以上の自然数）の閾値を設定する書込み動作のために、書込みデータを記憶するデータ記憶回路を有し、前記データ記憶回路は、少なくとも１ビットのデータをそれぞれ記憶するｋ個のラッチ回路で構成され、前記データ記憶回路は、少なくとも１つのスタティックラッチ回路と、複数のダイナミックラッチ回路を有し、前記少なくとも１つのスタティックラッチ回路は外部に接続され、前記少なくとも１つのスタティックラッチ回路及び前記複数のダイナミックラッチ回路は、外部から入力された書き込みデータを入力するとともに、書込み動作に対応した内部書込みデータをラッチすることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ラッチ回路の増加を抑制して多値データを記憶することができ、高速な書き込みが可能な半導体記憶装置を提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１１】
（第１の参考例）
図２は、例えば４ビット、１６値のデータを記憶するＮＡＮＤ型フラッシュメモリの概略構成を示している。
【００１２】
メモリセルアレイ１は、複数のビット線と複数のワード線と共通ソース線を含み、例えばＥＥＰＲＯＭセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ１には、ビット線を制御するためのビット制御回路２とワード線制御回路６が接続されている。
【００１３】
ビット線制御回路２は、ビット線を介してメモリセルアレイ１中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ１中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路２には、カラムデコーダ３、データ入出力バッファ４が接続されている。ビット線制御回路２内のデータ記憶回路はカラムデコーダ３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ４を介してデータ入出力端子５から外部へ出力される。
【００１４】
また、外部からデータ入出力端子５に入力された書き込みデータは、データ入出力バッファ４を介して、カラムデコーダ３によって選択されたデータ記憶回路に入力される。
【００１５】
ワード線制御回路６は、メモリセルアレイ１に接続されている。このワード線制御回路６は、メモリセルアレイ１中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
【００１６】
メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、及びワード線制御回路６は、制御信号及び制御電圧発生回路７に接続され、この制御信号及び制御電圧発生回路７によって制御される。制御信号及び制御電圧発生回路７は、制御信号入力端子８に接続され、外部から制御信号入力端子８を介して入力される制御信号ＡＬＥ（アドレス・ラッチ・イネーブル）、ＣＬＥ（コマンド・ラッチ・イネーブル）、ＷＥ（ライト・イネーブル）によって制御される。
【００１７】
前記ビット線制御回路２、カラムデコーダ３、ワード線制御回路６、制御信号及び制御電圧発生回路７は書き込み回路、及び読み出し回路を構成している。
【００１８】
また、制御信号及び制御電圧発生回路７は、ダイナミックデータキャッシュ（ＤＤＣ）制御回路７−１を有している。このＤＤＣ制御回路７−１は、後述するように、データ記憶回路に含まれるダイナミックラッチ回路としての複数のＤＲＡＭのリフレッシュ動作を制御する制御信号を発生する。
【００１９】
図３は、図２に示すメモリセルアレイ１及びビット線制御回路２の構成を示している。メモリセルアレイ１には複数のＮＡＮＤセルが配置されている。１つのＮＡＮＤセルは、直列接続された例えば３２個のＥＥＰＲＯＭからなるメモリセルＭＣと、選択ゲートＳ１、Ｓ２とにより構成されている。選択ゲートＳ２はビット線ＢＬ０ｅに接続され、選択ゲートＳ１はソース線ＳＲＣに接続されている。各ロウに配置されたメモリセルＭＣの制御ゲートはワード線ＷＬ０〜ＷＬ２９、ＷＬ３０、ＷＬ３１に共通接続されている。また、選択ゲートＳ２はセレクト線ＳＧＤに共通接続され、選択ゲートＳ１はセレクト線ＳＧＳに共通接続されている。
【００２０】
ビット線制御回路２は複数のデータ記憶回路１０を有している。各データ記憶回路１０には、一対のビット線（ＢＬ０ｅ、ＢＬ０ｏ）、（ＢＬ１ｅ、ＢＬ１ｏ）…（ＢＬｉｅ、ＢＬｉｏ）、（ＢＬ８ｋｅ、ＢＬ８ｋｏ）が接続されている。
【００２１】
メモリセルアレイ１は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のＮＡＮＤセルにより構成され、例えばこのブロック単位でデータが消去される。また、イレーズ動作は、データ記憶回路１０に接続されている２本のビット線について同時に行なわれる。
【００２２】
また、ビット線の１つおきに配置され、１つのワード線に接続された複数のメモリセル（破線で囲まれた範囲のメモリセル）は、１セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。
【００２３】
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路１０に接続されている２本のビット線（ＢＬｉｅ、ＢＬｉｏ）のうち外部より供給されるアドレス信号（ＹＡ０、ＹＡ１…ＹＡｉ…ＹＡ８ｋ）に応じて１本のビット線が選択される。さらに、外部アドレスに応じて、１本のワード線が選択され、破線で示す、４ページが選択される。この４ページの切り替えはアドレスによって行われる。
【００２４】
図４（ａ）（ｂ）はメモリセル及び選択トランジスタの断面図を示している。図４（ａ）はメモリセルを示している。基板５１（後述するＰ型ウェル領域５５）にはメモリセルのソース、ドレインとしてのｎ型拡散層４２が形成されている。Ｐ型ウェル領域５５の上にはゲート絶縁膜４３を介して浮遊ゲート（ＦＧ）４４が形成され、この浮遊ゲート４４の上には絶縁膜４５を介して制御ゲート（ＣＧ）４６が形成されている。図４（ｂ）は選択ゲートを示している。Ｐ型ウェル領域５５にはソース、ドレインとしてのｎ型拡散層４７が形成されている。Ｐ型ウェル領域５５の上にはゲート絶縁膜４８を介して制御ゲート４９が形成されている。
【００２５】
図５は、ＮＡＮＤ型フラッシュメモリの断面図を示している。例えばＰ型半導体基板５１内には、Ｎ型ウェル領域５２、５３、５４、Ｐ型ウェル領域５６が形成されている。Ｎ型ウェル領域５２内にはＰ型ウェル領域５５が形成され、このＰ型ウェル領域５５内にメモリセルアレイ１を構成する低電圧ＮチャネルトランジスタＬＶＮＴｒが形成されている。さらに、前記Ｎ型ウェル領域５３、Ｐ型ウェル領域５６内に、データ記憶回路１０を構成する低電圧ＰチャネルトランジスタＬＶＰＴｒ、低電圧ＮチャネルトランジスタＬＶＮＴｒが形成されている。前記基板５１内には、ビット線とデータ記憶回路１０を接続する高電圧ＮチャネルトランジスタＨＶＮＴｒが形成されている。また、前記Ｎ型ウェル領域５４内には例えばワード線駆動回路等を構成する高電圧ＰチャネルトランジスタＨＶＰＴｒが形成されている。図５に示すように、高電圧トランジスタＨＶＮＴｒ、ＨＶＰＴｒは、低電圧トランジスタＬＶＮＴｒ、ＬＶＰＴｒに比べて例えば厚いゲート絶縁膜を有している。
【００２６】
図６は、図５に示す各領域に供給される電圧の例を示している。消去、プログラム、リードにおいて、各領域に図６に示すような電圧が供給される。ここで、Ｖｅｒａはデータの消去時に基板に印加される電圧、Ｖｓｓは接地電圧、Ｖｄｄは電源電圧、Ｖｐｇｍｈはデータの書き込み時にワード線に供給される電圧Ｖｐｇｍ＋Ｖｔｈ、Ｖｆｉｘはデータの読み出し時にメモリセルが形成されたウェルに供給される電圧、Ｖｒｅａｄｈは、データの読み出し時にワード線に供給される電圧Ｖｒｅａｄ＋Ｖｔｈである。
【００２７】
図１は、図３に示すデータ記憶回路１０の一例を示す回路図である。
【００２８】
このデータ記憶回路１０は、例えば４ビット、１６値のデータを書き込み、読み出す場合を示しており、プライマリデータキャッシュ（ＰＤＣ）、セコンダリデータキャッシュ（ＳＤＣ）、ダイナミックデータキャッシュ（ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ）、テンポラリデータキャッシュ（ＴＤＣ）を有している。ＳＤＣ、ＰＤＣ、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。ＴＤＣは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。
【００２９】
ＳＤＣは、スタティックラッチ回路を構成するクロックドインバータ回路６１ａ、６１ｂ、及びトランジスタ６１ｃ、６１ｄにより構成されている。トランジスタ６１ｃはクロックドインバータ回路６１ａの入力端と、クロックドインバータ回路６１ｂの入力端の間に接続されている。このトランジスタ６１ｃのゲートには信号ＥＱ２が供給されている。トランジスタ６１ｄはクロックドインバータ回路６１ａの出力端と接地間に接続されている。このトランジスタ６１ｄのゲートには信号ＰＲＳＴが供給されている。ＳＤＣのノードＮ２ａは、カラム選択トランジスタ６１ｅを介して入出力データ線ＩＯｎに接続され、ノードＮ２ｂは、カラム選択トランジスタ６１ｆを介して入出力データ線ＩＯに接続される。これらトランジスタ６１ｅ、６１ｆのゲートにはカラム選択信号ＣＳＬｉが供給されている。ＳＤＣのノードＮ２ａは、トランジスタ６１ｇ、６１ｈを介してＰＤＣのノードＮ１ａに接続されている。トランジスタ６１ｇのゲートには信号ＢＬＣ２が供給され、トランジスタ６１ｈのゲートには信号ＢＬＣ１が供給されている。
【００３０】
ＰＤＣは、スタティックラッチ回路を構成するクロックドインバータ回路６１ｉ、６１ｊ及びトランジスタ６１ｋにより構成されている。トランジスタ６１ｋは、クロックドインバータ回路６１ｉの入力端とクロックドインバータ回路６１ｊの入力端の相互間に接続されている。このトランジスタ６１ｋのゲートには信号ＥＱ１が供給されている。ＰＤＣのノードＮ１ｂはトランジスタ６１ｌのゲートに接続されている。このトランジスタ６１ｌの電流通路の一端はトランジスタ６１ｍを介して接地されている。このトランジスタ６１ｍのゲートには信号ＣＨＫ１が供給されている。また、トランジスタ６１ｌの電流通路の他端はトランスファーゲートを構成するトランジスタ６１ｎ、６１ｏの電流通路の一端に接続されている。このトランジスタ６１ｎのゲートには信号ＣＨＫ２ｎが供給されている。また、トランジスタ６１ｏのゲートはノードＮ３に接続されている。トランジスタ６１ｎ、６１ｏの電流通路の他端は、信号線ＣＯＭｉに接続されている。この信号線ＣＯＭｉは全データ記憶回路１０に共通に接続され、この信号線ＣＯＭｉのレベルにより、全データ記憶回路１０のベリファイが完了したかどうかを判定できる。すなわち、後述するように、ベリファイが完了すると、ＰＤＣのノードＮ１ｂがローレベル（ノードＮ１ａがハイレベル）となる。この状態において、信号ＣＨＫ１、ＣＨＫ２ｎをハイレベルとすると、ベリファイが完了している場合、信号ＣＯＭｉがハイレベルとなる。
【００３１】
さらに、前記ＴＤＣは、例えばＭＯＳキャパシタ６１ｐにより構成されている。このキャパシタ６１ｐは、一端が前記トランジスタ６１ｇ、６１ｈの接続ノードＮ３に接続され、他端に後述する信号ＢＯＯＳＴが供給されている。また、接続ノードＮ３には、トランジスタ６１ｑＡ〜６１ｑＤを介してＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤが接続される。前記トランジスタ６１ｑＡ〜６１ｑＤのゲートには、信号ＲＥＧＡ〜ＲＥＧＤが供給されている。
【００３２】
ダイナミックラッチ回路を構成するＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤは、トランジスタ６１ｒＡ〜６１ｒＤにより構成されている。トランジスタ６１ｒＡ〜６１ｒＤの電流通路の一端には信号ＶＰＲＥが供給され、他端は前記トランジスタ６１ｑＡ〜６１ｑＤの電流通路にそれぞれ接続されている。このトランジスタ６１ｒＡ〜６１ｒＤのゲートはトランジスタ６１ｓＡ〜６１ｓＤを介して前記ＰＤＣのノードＮ１ａにそれぞれ接続されている。このトランジスタ６１ｓＡ〜６１ｓＤのゲートには信号ＤＴＧＡ〜ＤＴＧＤがそれぞれ供給されている。
【００３３】
さらに、前記接続ノードＮ３にはトランジスタ６１ｔ、６１ｕの電流通路の一端が接続されている。トランジスタ６１ｕの電流通路の他端には信号ＶＰＲＥが供給され、ゲートにはＢＬＰＲＥが供給されている。前記トランジスタ６１ｔのゲートには信号ＢＬＣＬＡＭＰが供給されている。このトランジスタ６１ｔの電流通路の他端はトランジスタ６１ｖを介してビット線ＢＬｏの一端に接続され、トランジスタ６１ｗを介してビット線ＢＬｅの一端に接続されている。ビット線ＢＬｏの一端はトランジスタ６１ｘの電流通路の一端に接続されている。このトランジスタ６１ｘのゲートには信号ＢＩＡＳｏが供給されている。ビット線ＢＬｅの一端はトランジスタ６１ｙの電流通路の一端に接続されている。このトランジスタ６１ｙのゲートには信号ＢＩＡＳｅが供給されている。これらトランジスタ６１ｘ、６１ｙの電流通路の他端には、信号ＢＬＣＲＬが供給されている。トランジスタ６１ｘ、６１ｙは、信号ＢＩＡＳｏ、ＢＩＡＳｅに応じてトランジスタ６１ｖ、６１ｗと相補的にオンとされ、非選択のビット線に信号ＢＬＣＲＬの電位を供給する。
【００３４】
尚、前記ノードＮ３と接地間には、例えばＭＯＳキャパシタ６１ｚが接続されている。このキャパシタ６１ｚは、後述するＴＤＣのキャパシタ６１ｐを信号ＢＯＯＳＴにより昇圧する際、カップリングにより、ノードＮ３の電位が上昇し過ぎないように、ノードＮ３の電位を調整する。以後、ＰＤＣのデータはノードＮ１ａの電位、ＳＤＣのデータはノードＮ２ａの電位、ＴＤＣのデータはノードＮ３の電位とする。ＤＤＣＡ〜ＤＤＣＤのデータは、トランジスタ６１ｒＡ〜６１ｒＤのゲートの電位とする。
【００３５】
上記各信号及び電圧は、図２に示す制御信号及び制御電圧発生回路７により生成され、この制御信号及び制御電圧発生回路７の制御に基づき、データの書き込み、ベリファイ、読み出し動作が制御される。さらに、ＤＤＣＡ〜ＤＤＣＤは、ＤＤＣ制御回路７−１により、発生された制御信号によりリフレッシュされる。
【００３６】
本メモリは、１つのセルに１６個の閾値電圧により、４ビットのデータを記憶する。この４ビットの切り替えはアドレス（第１ページ、第２ページ、第３ページ、第４ページ）によって制御される。
【００３７】
図７は、アドレス入力サイクルを示すタイミング図を示している。図７に示すコマンド・ラッチ・イネーブル信号ＣＬＥをローレベル（以下、Ｌレベル又はＬと記す）、アドレス・ラッチ・イネーブル信号ＡＬＥをハイレベル（以下、Ｈレベル又はＨと記す）として、ライトイネーブル信号ＷＥｎをＬレベルからＨレベルとした時、外部から入力されるＩ／Ｏ０−７がアドレスとして読み取られる。
【００３８】
図８は、入力サイクルとアドレスの割当てを示している。図８に示すように、第１、第２サイクルはカラムアドレス、第３サイクルのＩ／Ｏ０−１（Ａ１６，Ａ１７）は、ページアドレスを切り替えるＭＬＣ（Multi Level Cell）アドレスであり、（Ａ１６，Ａ１７）＝（Ｌ，Ｌ）のときロワーページ、（Ａ１６，Ａ１７）＝（Ｈ，Ｌ）のときアッパーページ、（Ａ１６，Ａ１７）＝（Ｌ，Ｈ）のときハイアーページ、（１６，Ａ１７）＝（Ｈ，Ｈ）のときトップページとなる、第３サイクルのＩ／Ｏ３（Ａ１８）は、２本のビット線（ＢＬｉｅ、ＢＬｉｏ）の一方を選択し、第３サイクルのＩ／Ｏ３−７（Ａ１９−Ａ２３）は、ＮＡＮＤセル内の３２本のワード線の１つを選択する。第４、５サイクルはブロックアドレスを示している。
【００３９】
図９は、メモリセルアレイ（プレーン０、１）とブロックの関係を示している。図９に示すように、本ＮＡＮＤ型フラッシュメモリは、２つのプレーン０、１を有している。各プレーン０，１は、例えば図２に示すメモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、ワード線制御回路６有している。制御信号及び制御電圧発生回路７、制御信号入力端子８、データ入出力バッファ４、データ入出力端子５は、各プレーンに共有される。尚、図９には、ビット線制御回路２のみを示している。
【００４０】
また、プレーン０にブロック０〜２０４７が配置され、プレーン１にブロック２０４８〜４０９５が配置されている。このように、プレーン０、１に対して複数のブロックが配置されているため、プレーンを第５サイクルのＩ／Ｏ３（Ａ３６）で選択する。また、各プレーン内の任意のブロックを１ずつ、合計２ブロック同時に選択して、リード、プログラム、イレーズすることが可能とされている。
【００４１】
通常のメモリは、図９に示すブロック０〜４０９５以外に、リダンダンシーブロックがあり、ブロック０〜４０９５に不良があると、この不良をアクセスした場合、リダンダンシーのブロックが選択される。しかし、リダンダンシーの切り替え回路が大きいため、図４９に示すように、ブロックＥＸ０〜３１を追加しておき、元々のブロック数を多くする。ブロック０〜４０９５及びブロックＥＸ０〜３１に不良がある場合、不良ブロックは、使用しないようにする。しかし、余分にブロックを設けているため、最低限必要な良品のブロックは存在する。この場合、不良ブロックをアクセスした時、ブロック非選択となり、どのワード線も選択されない。また、例えばリードの場合、ビット線は充電されるが、放電しないため、一番高いレベルのデータが読み出されることにより不良ブロックを区別することができる。
【００４２】
しかし、ユーザーは、特定のブロック、例えばブロック０、ブロック２０４８等に、重要なデータを記憶したい。このため、これら特定ブロックは良品である必要がある。例えばブロック０が不良の場合、ブロックＥＸ３１と交換するようにし、ブロック０をアクセスした場合、ブロックＥＸ３１（良品）が選択され、ブロックＥＸ３１をアクセスした場合、ブロック０を選択しようとする。しかし、ブロック０は不良であるため、どのワード線も選択されない。また、例えばリードの場合、ビット線は充電されるが、放電しない。このため、一番高いレベルのデータが読み出されることにより不良ブロックを区別することができる。無論、特定のブロック、例えばブロック０、ブロック２０４８等にそれぞれ専用のリダンダンシーブロックを用意しておくことも可能である。
【００４３】
図１０は、メモリセルのデータとメモリセルの閾値の関係を示している。イレーズ動作を行なうと、メモリセルのデータは一番左に示す閾値電圧の分布となる。この後、書き込み動作に応じて、１つのセルに４ビット（１６値）のデータが記憶される。すなわち、先ず、図１０に示すように、第１ステージの書き込み動作により、ロワーページ、アッパーページの２ビットのデータによって、メモリセルに“０”〜“３”の４つの閾値電圧が設定される。
【００４４】
次に、図１１に示すように、第２ステージ、第３ステージの書き込み動作により、ロワーページ、アッパーページ、ハイアーページ及びトップページの４ビットのデータにより、メモリセルに“０”〜“Ｆ”の１６個の閾値電圧が設定される。
【００４５】
尚、図１０、図１１において、Ｒ＆Ｖレベルは、リード及びベリファイレベルを示し、ＶＬ（３）〜ＶＬ（０）は、レベル０〜Ｆをビットで表している。すなわち、レベル０は（００００）、レベル１は（０００１）、レベル２は（００１０）…レベルＦは（１１１１）で表している。
【００４６】
（プログラム及びプログラムベリファイ）
（プログラム順序）
図１２は、本参考例におけるメモリセルに対する書き込み順序を示している。書き込み動作は、ブロック内において、ソース線に近いメモリセルからページ毎に行なわれる。このとき、隣接するメモリセルの書き込みにより、閾値電圧が変化することを防止する。つまり、先に書き込まれたメモリセルの閾値電圧が、後から書き込まれたメモリセルの閾値電圧の影響を低減するため、一定の順序により書き込み動作が行われる。
【００４７】
図１３（ａ）〜図１３（ｆ）は、書き込み動作に伴うメモリセルの閾値電圧の遷移を示している。第１ステージ、第２ステージ、第３ステージの３回の書き込み動作により、１つのセルに４ビット（１６値）のデータが書き込まれる。
【００４８】
まず、図１２に示す第１回目の書き込み[０]において、ワード線ＷＬ０と偶数ビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。この結果、図１３（ａ）に示すような閾値電圧となる。
【００４９】
次に、第２回目の書き込み［１］において、ワード線ＷＬ０と奇数ビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００５０】
次に、第３回目の書き込み［２］において、ワード線ＷＬ１と偶数ビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００５１】
次に、第４回目の書き込み［３］において、ワード線ＷＬ１と奇数ビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００５２】
このように、隣接セルにデータが書き込まれると、例えばワード線ＷＬ０とビット線ＢＬｅにより選択されるメモリセルの閾値分布は、図１３（ｂ）に示すように、隣接セルの閾値電圧の変化の影響を受けて広がってしまう。
【００５３】
次に、第５回目の書き込み［４］において、ワード線ＷＬ０とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第２ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１６値）のデータが書き込まれる。この結果、図１３（ｃ）に示すような閾値電圧の分布となる。
【００５４】
次に、第６回目の書き込み［５］において、ワード線ＷＬ０とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第２ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１６値）のデータが書き込まれる。
【００５５】
次に、第７回目の書き込み［６］において、ワード線ＷＬ２とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００５６】
次に、第８回目の書き込み［７］において、ワード線ＷＬ２とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００５７】
次に、第９回目の書き込み［８］において、ワード線ＷＬ１とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第２ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１６値）のデータが書き込まれる。
【００５８】
次に、第１０回目の書き込み［９］において、ワード線ＷＬ１とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第２ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１６値）のデータが書き込まれる。
【００５９】
すると、例えばワード線ＷＬ０とビット線ＢＬｅにより選択されるメモリセルの閾値電圧の分布は、図１３（ｄ）に示すように、隣接セルの閾値電圧が変化することにより、広がってしまう。
【００６０】
次に、第１１回目の書き込み［１０］において、ワード線ＷＬ０とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第３ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１５値）のデータが書き込まれる。すると、図１３（ｅ）に示すように、各閾値電圧の分布が狭まってくる。
【００６１】
次に、第１２回目の書き込み［１１］において、ワード線ＷＬ０とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第３ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１５値）のデータが書き込まれる。
【００６２】
次に、第１３回目の書き込み［１２］において、ワード線ＷＬ３とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００６３】
次に、第１４回目の書き込み［１３］において、ワード線ＷＬ３とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第１ステージの書き込み動作により、ロワーページとアッパーページの２ビット（３値）のデータが書き込まれる。
【００６４】
次に、第１５回目の書き込み［１４］において、ワード線ＷＬ２とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第２ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１６値）のデータが書き込まれる。
【００６５】
次に、第１６回目の書き込み［１５］において、ワード線ＷＬ２とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第２ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１６値）のデータが書き込まれる。
【００６６】
次に、第１７回目の書き込み［１６］において、ワード線ＷＬ１とビット線ＢＬｅによりメモリセルが選択される。このメモリセルに第３ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１５値）のデータが書き込まれる。
【００６７】
次に、第１８回目の書き込み［１７］において、ワード線ＷＬ１とビット線ＢＬｏによりメモリセルが選択される。このメモリセルに第３ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの４ビット（１５値）のデータが書き込まれる。
【００６８】
すると、例えばワード線ＷＬ０とビット線ＢＬｅにより選択されるメモリセルの閾値電圧の分布は、図１３（ｆ）に示すように、隣接セルの閾値電圧が変化することにより、若干広がってしまう。
【００６９】
このような順番で書き込むことにより、隣接セルの閾値電圧が変化し、セルの閾値電圧が広がりを抑制でき、狭い閾値電圧の分布とすることが可能である。
【００７０】
図１４、図１５は、図１２、図１３の第１の変形例を示している。
【００７１】
図１４、図１５に示す第１の変形例は、第１ステージの書き込み動作において、ロワーページの１ビット（２値）のデータのみを書き込んでいる。この書き込み方法は、隣接セルとのカップリング容量が小さく、閾値電圧の変化が小さい場合に有効である。
【００７２】
図１６、図１７は、図１２、図１３の第２の変形例を示している。
【００７３】
図１６、図１７に示す第２の変形例は、第１ステージの書き込み動作において、ロワーページ、アッパーページ、ハイアーページの３ビット（８値）のデータを書き込んでいる。この書き込み方法は、隣接セルとのカップリング容量が大きく、閾値電圧の変化が大きい場合に有効である。
【００７４】
（アドレス入力及びデータ入力）
本参考例は、図１３乃至図１７に示すように、先ず、第１ステージの書き込み動作で、メモリセルに２ビット（４値）、又は１ビット（２値）又は３ビット（８値）のデータを書き込み、この後、隣接セルに同様にデータを書き込む。次いで、第２ステージの書き込み動作において、４ビット（１６値）のデータを本来のベリファイレベルより低いレベルまでラフに書き込む。この後、さらに、隣接セルにデータを書き込み。第３ステージの書き込み動作において、４ビット（１６値）のデータを本来のベリファイレベルに書き込む。
【００７５】
図１８は、第３ステージの書き込み動作を示すタイミング図である。先ず、図１８に示すように、図２に示す制御信号入力端子８に供給される制御信号において、コマンド・ラッチ・イネーブル信号ＣＬＥをＨレベルとし、アドレス・ラッチ・イネーブル信号ＡＬＥをＬレベル、ライトイネーブル信号ＷＥｎをＬレベルとしてデータロードコマンド（８０ｈ、ｈは１６進を示す）を取り込む。この後、コマンド・ラッチ・イネーブル信号ＣＬＥをＬレベルとし、アドレス・ラッチ・イネーブル信号ＡＬＥをＨレベルとし、ライトイネーブル信号ＷＥｎをＬレベルとして、前述したように、アドレスと、書き込みデータを入力する。書き込みデータは、アドレスで指定されたプレーンに対応するデータ記憶回路（図９に示す）内のＳＤＣ（図１に示す）に記憶される。この後、書き込みコマンド（１５ｈ又は１０ｈ）又は、データ転送コマンド（１Ａｈ）が入力されると、選択されたプレーンのデータ記憶回路２内のＳＤＣのデータがＰＤＣに転送され、さらにＤＤＣＡ〜ＤＤＣＤに転送される。外部よりデータ“１”（書き込まない）が入力されると、ＰＤＣのノードＮ１ａはＨレベルとなり、データ“０”（書き込む）が入力されるとＬレベルとなる。以後、ＰＤＣのデータはノードＮ１ａの電位、ＳＤＣのデータはノードＮ２ａの電位とする。
【００７６】
図１９（ａ）〜図１９（ｋ）は、第１ステージ乃至第３ステージにおけるコマンドとデータの関係を示している。
【００７７】
図１９（ａ）は、第１ステージにおいて、２ビット（４値）の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力した後、アッパーページアドレスとデータを入力し、書き込みコマンド（１０ｈ又は１５ｈ）を入力する。回路内部では、アッパーページのアドレスが入力されているため、４値の書き込みであることが分かる。
【００７８】
図１９（ｂ）は、第１ステージにおいて、１ビット（２値）の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、書き込みコマンド（１０ｈ又は１５ｈ）を入力する。回路内部は、ロワーページのアドレスのみが入力されているため、２値の書き込みであることが分かる。
【００７９】
図１９（ｃ）は、第１ステージで３ビット（８値）の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力する。この後、アッパーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力する。この後、ハイアーページアドレスとデータを入力し、書き込みコマンド（１０ｈ又は１５ｈ）を入力する。回路内部は、ハイアーページのアドレスが入力されているため、８値の書き込みであることが分かる。
【００８０】
図１９（ｄ）は、第１ステージで２ビット（４値）の書き込みを行う場合を示している。ロワーページとアッパーページを替えても、アッパーページが入力されているため、４値の書き込みと認識できる。すなわち、図１９（ｅ）は、第１ステージで２ビット（４値）の書き込みを行う場合を示している。先ず、図１９（ｂ）に示すように、１ビット（２値）を書き込み、図１９（ｅ）に示すように、アッパーページのみのアドレス及びデータを入力する。書き込みコマンド（１０ｈ又は１５ｈ）を入力した場合、アッパーページのアドレスが入力されているため、４値の書き込みと認識できる。この場合、ロワーページのデータが入力されていないが、回路内部で前に書き込んだロワーページのデータを、内部でリード動作により読み出す（内部データロード）することも可能である。
【００８１】
図１９（ｆ）は、第２ステージで４ビット（１６値）の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力した後、アッパーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力した後、ハイアーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力した後、トップページのアドレスとデータを入力し、書き込みコマンド（１０ｈ又は１５ｈ）を入力する。この場合、トップページのアドレスが入力されているため、４ビット（１６値）の書き込みであることを認識できる。しかし、このシーケンスは第３ステージで４ビット（１６値）の書き込みを行う場合と同様となる。したがって、第２ステージと第３ステージを区別するため、例えば第２ステージの場合、書き込み前にコマンド０Ｄｈを入力する。
【００８２】
図１９（ｇ）は、ハイアーページのアドレスとデータ、及びトップページのアドレスとデータのみを入力し、ロワーページとアッパーページのデータは、先に入力したデータを内部データロードする場合を示している。
【００８３】
図１９（ｈ）は、第３ステージにおいて、４ビット（１６値）の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力する。この後、アッパーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力する。次いで、ハイアーページのアドレスとデータを入力し、データ転送コマンド（１Ａｈ）を入力する。この後、トップページのアドレスとデータを入力し、書き込みコマンド（１５ｈ又は１０ｈ）を入力する。トップページのアドレスが入力されているため、４ビット（１６値）の書き込みであることを認識できる。第３ステージの動作は、図１９（ｉ）に示すように、入力するアドレス及びデータの順序を変えてもよい。
【００８４】
図１９（ｊ）は、図１９（ｈ）の場合で、２プレーン同時書き込みの場合を示している。さらに、図１９（ｋ）に示すように、任意の順序で入力することも可能である。コマンド１１ｈ入力により、短いビジーを出力するが、省くことも可能である。
【００８５】
尚、第２ステージの書き込みにおいて、消去されているセルにも書き込みを行いレベル０への書込へ書き込みを行う。後述するＲＥＡＳＢ（Erased Area Self Boost）の書き込みの場合、選択ワード線をＶｐｇｍ（２４Ｖ）に設定し、選択ワード線に対してソース側に隣接するワード線をＶｐａｓｓ又は中間電位に設定し、さらにそのワード線に隣接するワード線の電位をＶｓｓ（接地電位）に設定してセルをオフ状態とする。このようにして、誤書き込みを防止するが、消去セルの閾値電圧が低く過ぎるとオフしなくなってしまう。したがって、消去されているセルにも書き込みを行いレベル０への書込へ書き込みを行う。
【００８６】
図２０は、図２に示すＤＤＣ制御回路７−１の一例を示している。ＤＤＣ制御回路７−１は、ページアドレスと選択信号ＳＬＤＤＣ（０：３）に応じて、図１に示す信号ＤＴＧＡ〜ＤＴＧＤ及び信号ＲＥＧＡ〜ＲＥＧＤを順次生成し、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤの動作を制御する。さらに、ＤＤＣ制御回路７−１は、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤに記憶されたデータとページアドレスとの関係を変更する。すなわち、書き込みデータは、任意の順にデータ記憶回路に供給され、ＳＤＣ、ＰＤＣを介して、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤのいずれかに記憶される。このため、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤに記憶されているデータがどのページアドレスに対応しているかを認識する必要がある。また、ＤＤＣＡ〜ＤＤＣＤは、ダイナミックキャッシュであり、記憶したデータを定期的にリフレッシュする必要がある。この際、ＤＤＣＡ〜ＤＤＣＤ、ＰＤＣに記憶されたデータをＤＤＣＡ〜ＤＤＣＤ、ＴＤＣ，ＰＤＣを用いて転送することにより、リフレッシュされる。このリフレッシュ動作を行う場合、ＤＤＣＡ〜ＤＤＣＤ、ＰＤＣに転送されたデータがどのデータであるかを認識する必要がある。ＤＤＣ制御回路７−１は、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ、ＰＤＣにどのページのデータが記憶されているかを記憶することにより、複数のデータの位置を正確に制御可能としている。
【００８７】
図２０において、コンバータ７ａ〜７ｅは、それぞれＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ、ＰＤＣに対応している。これらコンバータ７ａ〜７ｄは、ロワーページ、アッパーページ、ハイアーページ、トップページ、ＰＤＣに応じて、論理的なキャッシュ名を示すデータＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、ＬＤＤＣＰを保持し、このデータをコンバータ７ａ〜７ｅ間で転送可能とされている。
【００８８】
各コンバータ７ａ〜７ｄは、それぞれ第１乃至第５の入力端と第１、第２の出力端を有し、コンバータ７ｅは、入力端、及び出力端を有している。コンバータ７ａ〜７ｄの第１の入力端には、例えばデコーダ７ｆにより４ビットのデータに変換された、ロワーページ（Ｌ）、アッパーページ（Ｕ）、ハイアーページ（Ｈ）、トップページ（Ｔ）の何れかが供給される。デコーダ７ｆは、コマンドに応じて入力されたページアドレスが順次デコードする。第２の入力端には、ＤＤＣセット信号ＤＤＣＳＥＴが供給される。このＤＤＣセット信号ＤＤＣＳＥＴは、前記デコーダ７ｆからページアドレスの入力を許容するＤＤＣセットモードを設定する。コンバータ７ａ〜７ｄの第３の入力端には、前記ＤＤＣＡ〜ＤＤＣＤを選択するための例えば４ビットの選択信号ＳＬＤＤＣ（０：３）が供給される。コンバータ７ａ〜７ｄの第４の入力端には、モード切り替え信号ＭＥＸＣが供給されている。このモード切り替え信号ＭＥＸＣは、リフレッシュモードを設定する。コンバータ７ａ〜７ｄの第５の入力端は、コンバータ７ｅの出力端に接続されている。リフレッシュモードにおいて、コンバータ７ｅの出力信号は、コンバータ７ａ〜７ｄの１つに転送される。
【００８９】
コンバータ７ａ〜７ｄの第１の出力端は、信号ＲＥＧＡ〜ＲＥＧＤを選択的に出力するアンド回路７ｇ〜７ｊの一方入力端に接続されるとともに、信号ＤＴＧＡ〜ＤＴＧＤを選択的に出力するアンド回路７ｋ〜７ｎの一方入力端に接続されている。アンド回路７ｇ〜７ｊの他方入力端には信号ＲＥＧが供給され、アンド回路７ｋ〜７ｎの他方入力端には信号ＤＴＧが供給されている。アンド回路７ｇ〜７ｊは、前記ＤＤＣＡからＤＤＣＤを選択するための信号ＳＬＤＤＣが供給され、コンバータ７ａ〜７ｄのうちの１つ乃至複数の第１の出力端から信号ＤＤＣＡＳＬ〜ＤＤＣＤＳＬが出力されたとき、これに応じた信号ＲＥＧＡ〜ＲＥＧＤを出力する。アンド回路７ｋ〜７ｎは、前記ＤＤＣＡからＤＤＣＤを選択するための信号ＳＬＤＤＣが供給され、コンバータ７ａ〜７ｄのうちの１つ乃至複数の第１の出力端から信号ＤＤＣＡＳＬ〜ＤＤＣＤＳＬが出力されたとき、これに応じた信号ＤＴＧＡ〜ＤＴＧＤを出力する。
【００９０】
コンバータ７ａ〜７ｄの第２の出力端は、コンバータ７ｅの入力端に接続されている。ＤＤＣＡ〜ＤＤＣＤのリフレッシュ時、モード切り替え信号ＭＥＸＣに応じて、コンバータ７ａ〜７ｄのうちの１つの第２の出力端から出力されたデータＬＤＤＣは、コンバータ７ｅの入力端に供給される。また、コンバータ７ｅから出力されたデータLDDCは、コンバータ７ａ〜７ｄの１つのコンバータに供給される。リフレッシュ動作の詳細は後述する。
【００９１】
図２１は、コンバータ７ａの構成を示している。コンバータ７ａ〜７ｄは、ほぼ同一構成であり、入力信号のみが相違している。したがって、コンバータ７ａのみ構成を説明する。
【００９２】
コンバータ７ａは、レジスタを構成する４つのフリップフロップ回路７ａ−１〜７ａ−４と、各フリップフロップ回路７ａ−１〜７ａ−４の入力信号を選択するセレクタ７ａ−５と、比較回路７ａ−６を有している。各フリップフロップ回路７ａ−１〜７ａ−４は、４ビットのデータの１つをそれぞれ保持する。各フリップフロップ回路７ａ−１〜７ａ−４は、デフォルトデータをプリセット可能とされている。各フリップフロップ回路７ａ−１〜７ａ−４の出力信号は、比較回路７ａ−６に供給されるとともに、図示せぬ出力セレクタに供給される。出力セレクタは、前記モード切り替え信号ＭＥＸＣに応じて、コンバータ７ａ〜７ｄのうち、リフレッシュ動作中のＤＤＣＡ〜ＤＤＣＤに対応するコンバータから出力コンバータ７ｅにＬＤＤＣ信号を供給する。
【００９３】
比較回路７ａ−６は、フリップフロップ回路７ａ−１〜７ａ−４の出力信号と選択信号ＳＬＤＤＣ（０：３）とを比較し、両者が一致した場合、選択信号ＤＤＣＡＳＬをアクティブ状態、例えばハイレベルとする。
【００９４】
セレクタ７ａ−５は、モード切り替え信号ＭＥＸＣに応じてフリップフロップ回路７ａ−１〜７ａ−４の入力信号を切り替える。すなわち、セレクタ７ａ−５は、ＤＤＣセット信号ＤＤＣＳＥＴがアクティブ状態、例えばハイレベルのとき、前記デコーダ７ｆから供給されるページアドレスを選択し、モード切り替え信号ＭＥＸＣがアクティブ状態、例えばハイレベルで、比較回路７ａ−６の出力信号がアクティブ状態のとき、コンバータ７ｅから供給されるデータＬＤＤＣ（０：３）を選択する。したがって、コンバータ７ｅから出力されたデータＬＤＤＣ（０：３）が選択された１つのコンバータに供給される。
【００９５】
図２２は、コンバータ７ｅの一例を示している。このコンバータ７ｅは、フリップフロップ回路７ｅ−１〜７ｅ−４により構成されている。前記モード切り替え信号ＭＥＸＣに応じて、コンバータ７ａ〜７ｄのうち、リフレッシュ動作中のＤＤＣＡ〜ＤＤＣＤに対応するコンバータから出力されるデータＬＤＤＣ（０：３）が各フリップフロップ回路７ｅ−１〜７ｅ−４に供給される。各フリップフロップ回路７ｅ−１〜７ｅ−４に記憶されているデータは、リフレッシュ動作中のＤＤＣＡ〜ＤＤＣＤに対応するコンバータ７ａ〜７ｄの何れかに供給される。
【００９６】
上記構成において、ＤＤＣ制御回路７−１の動作について説明する。コンバータ７ａ〜７ｄは、ＤＤＣＡ〜ＤＤＣＤに対応している。デフォルト状態において、コンバータ７ａ、７ｂ、７ｃ、７ｄは、それぞれＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、コンバータ７ｅは、ＬＤＤＣＰと設定されている。書き込むためのアドレス及びデータ入力時に、選択信号ＳＬＤＤＣ（０：３）は、ＳＬＤＤＣ２、ＳＬＤＤＣ１、ＳＬＤＤＣ０、ＳＬＤＤＣＱの順にアクティブ状態となる。このため、コンパレータは７ｃ、７ｂ、７ａ、７ｄの順に、図２１に示す比較回路７ａ−６の入力条件が満足される。したがって、コンパレータ７ｃ、７ｂ、７ａ、７ｄの比較回路７ａ−６から選択信号がＤＤＣＣＳＬ、ＤＤＣＢＳＬ、ＤＤＣＡＳＬ、ＤＤＣＤＳＬの順に出力される。このとき、図２０に示す信号ＤＴＧがアクティブ状態、例えばハイレベルとなっており、アンド回路は７ｍ、７ｌ、７ｋ、７ｎの順に入力条件が満足し、信号がＤＴＧＣ、ＤＴＧＢ、ＤＴＧＡ、ＤＴＧＤの順に出力される。このため、データの転送コマンドに応じて、図１のＳＤＣからＰＤＣに転送されたデータは、ＤＤＣＣ、ＤＤＣＢ、ＤＤＣＡ、ＤＤＣＤの順に記憶される。
【００９７】
この後、書き込みコマンド入力後、図２０に示すＤＤＣセット信号ＤＤＣＳＥＴがアクティブ状態、例えばハイレベルのとき、前記デコーダ７ｆから供給されるページアドレスがコンバータ７ａ〜７ｄに供給される。このとき、選択信号ＳＬＤＤＣ（０：３）により、コンバータが７ｃ、７ｂ、７ａ、７ｄの順に選択される。このため、デコーダ７ｆのデータは、コンバータ７ｃ、７ｂ、７ａ、７ｄの順に供給される。したがって、デコーダ７ｆから供給されるページデータが、例えば図２０に示すように、トップページ（Ｔ）、ハイアーページ（Ｈ）、アッパーページ（Ｕ）、ロワーページ（Ｌ）である場合、コンバータ７ｃ、７ｂ、７ａ、７ｄの各フリップフロップ回路にトップページ（Ｔ）、ハイアーページ（Ｈ）、アッパーページ（Ｕ）、ロワーページ（Ｌ）のデータが設定される。
【００９８】
このようにして、図１に示すＤＤＣＡ〜ＤＤＣＤに記憶されたデータと、ページアドレスの関係が一致される。
【００９９】
（リフレッシュ）
次に、リフレッシュ動作について説明する。
【０１００】
データ転送コマンド１Ａｈが入力されると、上記のように、選択されているプレーンのデータ記憶回路２内のＳＤＣのデータがＰＤＣに転送され、さらにＤＤＣＡ〜ＤＤＣＤに転送される。しかし、ＤＤＣＡ〜ＤＤＣＤは、トランジスタのゲート容量によりデータを記憶するキャパシタンスであるためリフレッシュ動作が必要である。したがって、転送コマンド１Ａｈが入力された後、ＤＤＣＡ〜ＤＤＣＤへの転送動作が済むと、次のデータの入力を待つため、チップはビジー状態からレディ状態となるが、データ記憶回路２の内部では、リフレッシュ動作が繰り返される。
【０１０１】
例えば、図１において、ＤＤＣＡのデータをリフレッシュする場合、先ず、信号ＶＰＲＥ＝Ｖｓｓ（接地電圧）、信号ＢＬＰＲＥ＝Ｖｓｓとしてトランジスタ６１ｕをオンさせ、ＴＤＣのノードＮ３をＶｓｓとする。この後、信号ＶＰＲＥ＝Ｖｄｄ、信号ＲＥＧＡ＝Ｈレベルとしてトランジスタ６１ｑＤをオンさせる。すると、ＤＤＣＡ＝Ｈレベルの場合、ＴＤＣはＨレベルとなり、ＤＤＣＡ＝Ｌレベルの場合、ＴＤＣはＬレベルのままとなる。この後、信号ＤＴＧＡを一旦Ｈレベルとして、ＰＤＣのデータをＤＤＣＡにコピーした後、ＢＬＣ１＝Ｈレベルとして、ＴＤＣのデータをＰＤＣに移す。これらの動作によりＤＤＣＡのデータはＰＤＣに、ＰＤＣのデータはＤＤＣＡに移動する。これらの動作をもう一度行なうことにより、ＤＤＣＡのデータが元に戻る。このように、ＤＤＣＡのデータをリフレッシュする場合、２回のリフレッシュ動作を必要とする。
【０１０２】
本参考例における１６値のデータを書き込むメモリの場合、データ記憶回路２は、図１に示すように、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤの４つのダイナミックデータラッチを有している。このため、上記の動作によりデータを移動すると、８回のリフレッシュ動作が必要となる。しかし、第１の参考例は、リフレッシュ動作を高速化可能としている。
【０１０３】
図２３は、リフレッシュ動作の一例を示している。図２３に示すように、例えばリフレッシュ前にＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ、ＰＤＣに保持されたデータが、例えばＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、ＬＤＤＣＰ（それぞれ論理的なキャッシュ名を示）であると仮定した場合を考える。これらデータが図２３に示すように、ＤＤＣＡ〜ＤＤＣＤ、ＰＤＣを移動した場合（図５において、ＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、ＬＤＤＣＰは、単に０、１、２、Ｐ、Ｑで示している）、５回目のデータの移動により全てのデータが移動する。データは、１回移動することによりリフレッシュされる。このため、５回目のデータの移動により全てのデータがリフレッシュされたこことなる。しかし、５回目のデータの移動後、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ、ＰＤＣに、ＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、ＬＤＤＣＰが記憶される。つまり、ＬＤＤＣ０が記憶されているデータキャッシュは、リフレッシュ前はＤＤＣＡであったが、リフレッシュ後、ＤＤＣＢとなる。したがって、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ、ＰＤＣのデータの位置関係がリフレッシュ前と、リフレッシュ後では異なっている。しかし、上記リフレッシュ動作を図２０、２１、２２に示すＤＤＣ制御回路７を用いて行なうことにより、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤ、ＰＤＣに記憶されたデータとページアドレスとの対応関係を常に一致させることができる。
【０１０４】
すなわち、図２０に示す各コンバータ７ａ〜７ｅの各レジスタに記憶されたデータが図２３に示すリフレッシュ前のように、ＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、ＬＤＤＣＰであると仮定する。
【０１０５】
この状態において、図２０、図２１に示すモード切り替え信号ＭＥＸＣをアクティブ状態とし、例えば選択信号ＳＬＤＤＣ（０：３）により、ＬＤＤＣ０を選択すると、コンバータ７ａの比較回路７ａ−６の入力条件を満足させる。このため、コンバータ７ａより信号ＤＤＣＡＳＬが出力される。このとき、図２０に示す信号ＲＥＧ、ＤＴＧがＨレベルとされ、信号ＲＥＧＡ、ＤＴＧＡがＨレベルとされる。
【０１０６】
一方、ＤＤＣＡのデータを転送する以前に、図１に示す信号ＢＬＰＲＥがＨレベル、信号ＶＰＲＥがＬレベル、例えばＶｓｓ（接地電位）とされ、ノードＮ３が接地電位にリセットされる。この後、信号ＶＰＲＥがＨレベル、例えばＶｄｄとされる。前記信号ＲＥＧＡがＨレベルとされるとトランジスタ６１ｑＡがオンし、ＤＤＣＡのデータがＴＤＣに転送される。すなわち、トランジスタ６１ｒＡのゲートがＨレベルの場合、ノードＮ３がＨレベルとされ、トランジスタ６１ｒＡのゲートがＬレベルの場合、ノードＮ３はＬレベルのままとされる。
【０１０７】
また、図２０に示す信号ＤＴＧＡに伴い、トランジスタ６１ｓＡがオンし、ＰＤＣのデータがＤＤＣＡに転送される。この後、信号ＢＬＣ１がＨレベルとされ、トランジスタ６１ｈを介してＴＤＣのデータがＰＤＣに転送される。
【０１０８】
このとき、図２０に示すコンバータ７ｅのＰＤＣに対応するデータＬＤＤＣＰがコンバータ７ａに転送され、コンバータ７ａに記憶されたＤＤＣＡに対応するデータＬＤＤＣ０がコンバータ７ｅに転送される。
【０１０９】
上記のようにして、１回目の転送動作が実行されると、図２３の１回後に示すようになる。このような動作をＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＱ、ＬＤＤＣＰについて順次行なうことにより、５回の転送動作により、ＤＤＣＡ〜ＤＤＣＤのデータをリフレッシュすることができる。しかも、リフレッシュ後のデータの位置は、コンバータ７ａ〜７ｅにより保持されているため、データを正確に制御することができる。
【０１１０】
（書き込みシーケンス、データロード、プログラム）
図２４は、書き込みシーケンスを示し、図２５（ａ）（ｂ）（ｃ）（ｄ）（ｅ）は、図２４に示す書き込みシーケンスに伴う１６値、８値、４値、２値における入力データと書き込みレベルの関係を示している。
【０１１１】
図２４に示すように、８０ｈ（データロードコマンド）−Ａｄｄ（アドレス）−Ｄ（データ）により、任意のページ（例えば２ｋＢ）のデータが外部より、データ記憶回路１０のＳＤＣに入力される（Ｓ１、図２５（ａ））。１ページのみのデータ入力の場合は、書き込みコマンドである１０ｈ又はキャッシ書き込みコマンド１５ｈが入力される（Ｓ２）。複数ページのデータが入力される場合、１Ａｈコマンドが入力される。１Ａｈの場合、ＳＤＣのデータは、ＰＤＣを介してＤＤＣＡ〜ＤＤＣＤに転送される。前述したように、本参考例において、第１回目の１Ａｈのときは、ＳＤＣのデータはＬＤＤＣ２（ＤＤＣＣ）へ転送され（Ｓ３）、第２回目の１Ａｈのときは、ＳＤＣのデータはＬＤＤＣ１（ＤＤＣＢ）へ転送され（Ｓ４）、第３回目の１Ａｈのときは、ＳＤＣのデータはＬＤＤＣ０（ＤＤＣＡ）へ転送する（Ｓ５）。この後、書き込みコマンドである１０ｈ又はキャッシ機能つき書き込みコマンド１５ｈが入力されると（Ｓ６）、ＳＤＣのデータはＬＤＤＣＱ（ＤＤＣＤ）へ転送され、ビジー状態となる（図１８参照）。また、データをＳＤＣ、ＰＤＣ、ＤＤＣＡ〜ＤＤＣＤに転送するとき、書き込みレベルが１６値、８値、４値、２値（１６ＬＶ／８ＬＶ／４ＬＶ／２ＬＶ）のいずれであるかを判別する。
【０１１２】
図１に示すデータ記憶回路１０は、ＤＤＣ制御回路７−１の出力信号に従って、ＳＤＣのデータをＰＤＣ、ＤＤＣＡ〜ＤＤＣＤに転送する。以下、ＤＤＣＡ〜ＤＤＣＤ、ＰＤＣに記憶されるデータをＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２、ＬＤＤＣＰ、ＬＤＤＣＱとして説明する。
【０１１３】
ＳＤＣのデータを図２０に示すＤＤＣ制御回路７−１のデータに従ってＬＤＤＣＱへ転送する。この後、書き込みレベルに対してデータ入力回数が少ない場合、内部データをロードして空いているＬＤＤＣにデータを入力する（Ｓ７）。外部より入力されたデータ、及び内部データロードにより入力されたデータと入力後のデータキャッシュに記憶されるデータの関係を、図２５（ｂ）に示す。図２５（ｂ）において、Ｌ又はＵで示すデータは、書き込みレベルに対してデータ入力回数が少ない場合、内部データをロードして空いているＬＤＤＣにデータを入力したことを示している。また、Ｗ、Ｘ、Ｙ、Ｚは、任意の順序で入力されるデータの順番を便宜的に示している。
【０１１４】
この後、データキャッシュＤＤＣＡ〜ＤＤＣＢの定義が行なわれる（Ｓ８、図２５（ｃ），２５（ｄ））。
【０１１５】
すなわち、前述したように、ＤＤＣＡ〜ＤＤＣＢに記憶されたデータとページアドレスとの対応関係が定義される。具体的には、１６値の場合、ロワーページのデータを記憶しているＤＤＣをＬＤＤＣ２と定義し、アッパーページを記憶しているＤＤＣをＬＤＤＣ１と定義し、ハイアーページを記憶しているＤＤＣをＬＤＤＣ０と定義し、トップページを記憶しているＤＤＣをＬＤＤＣＱと定義する。また、８値の場合、ロワーページのデータを記憶しているＤＤＣをＬＤＤＣ２と定義し、アッパーページのデータを記憶しているＤＤＣをＬＤＤＣ０と定義し、ハイアーページのデータを記憶しているＤＤＣをＬＤＤＣＱと定義する。さらに、４値の場合、ロワーページのデータを記憶しているＤＤＣをＬＤＤＣ１と定義し、アッパーページのデータを記憶しているＤＤＣをＬＤＤＣＱと定義する。さらに、２値の場合、ロワーページのデータを記憶しているＤＤＣをＬＤＤＣ０と定義する。
【０１１６】
本参考例において、書き込み及び非書き込みの区別をＰＤＣに記憶する。書き込みの場合、ＰＤＣ＝Ｌレベル、非書き込みの場合、ＰＤＣ＝Ｈレベルとなっている。本来のベリファイレベルの他に低めのベリファイレベルを設定し、この低めのベリファイレベルを超えた場合、以降の書き込み電圧の増分を小さくすることにより、書き込み分布を狭める方法が提案されている。この低めのベリファイレベルを超えたかどうかの区別をＬＤＤＣＱとして記憶する。低めのベリファイレベルを超えていない場合、ＬＤＤＣＱ＝Ｌレベル、低めのベリファイレベルを超えた場合、ＬＤＤＣＱ＝Ｈレベルとする。１６値の書き込みにおいて、１６値を区別するために４ビットのデータが必要であり、これらのデータは、ＬＤＤＣ２，ＬＤＤＣ１，ＬＤＤＣ０，ＳＤＣとして記憶される。８値の書き込みの場合、８値を区別するために３ビットのデータが必要であり、これらのデータはＬＤＤＣ２，ＬＤＤＣ１，ＬＤＤＣ０として記憶される。４値の書き込みの場合、４値を区別するために２ビットのデータが必要であり、これらのデータはＬＤＤＣ１，ＬＤＤＣ０として記憶される。
【０１１７】
図２５（ｅ）は、これら書き込みレベルとデータキャッシ内に設定されるデータを示している。図２４、ステップＳ９、図２５（ｃ）に示すデータキャッシュＤＤＣＡ、ＤＤＣＢの操作により、各閾値電圧におけるデータを並び変える。このように、各閾値電圧に対するデータを設定することにより、データの書き込みが進むに従って、ＳＤＣやＬＤＤＣ２等を順次書き込み動作から開放することが可能となる。従って、開放されたＳＤＣやＬＤＤＣ２等に次のデータを設定することができるため、書き込み速度を高速化することが可能となる。このような効果を得るため、図２５（ｅ）に示すようにデータを設定している。
【０１１８】
図２５（ｅ）において、閾値電圧が低い側から高い側へ、０−レベル乃至ｆ−レベルと定義している。イレーズ動作により、セルの閾値電圧は０−レベルとなり、書き込み動作により１−レベルからｆ−レベルへ上昇される。
【０１１９】
データの書き込み中、低い閾値への書き込みは高い閾値への書き込みより早く書き込みが完了する。このため、キャッシ機能つき書き込みコマンド１５ｈが入力された場合、１６値の書き込みでは、０−レベルから７−レベルへの書き込みが完了すると、ＳＤＣのデータデータが不要になる。したがって、チップ外部にはレディ状態を示し、次の書き込みデータを入力する。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２０】
また、１Ａｈコマンドの場合、８−レベルからｂ−レベルへの書き込みが完了すると、ＬＤＤＣ２のデータデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ２に移した後、チップ外部にレディ状態を示し、次の書き込みデータ入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２１】
１Ａｈコマンドの場合、ｃ−レベルとｄ−レベルへの書き込みが完了すると、ＬＤＤＣ１のデータデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ１に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２２】
１Ａｈコマンドの場合、ｅ−レベルへの書き込みが完了すると、ＬＤＤＣ０のデータデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ０に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである１５ｈコマンド又は１０ｈコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
【０１２３】
８値の書き込みの場合、もともとＳＤＣは使用しないため、データキャッシュ操作後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２４】
１Ａｈコマンドの場合、０−レベルから３−レベルへの書き込みが完了すると、ＬＤＤＣ２のデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ２に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２５】
１Ａｈコマンドの場合、４−レベルと５−レベルへの書き込みが完了すると、ＬＤＤＣ１のデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ１に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２６】
１Ａｈコマンドの場合、６−レベルへの書き込みが完了すると、ＬＤＤＣ０のデータデータが不要となるため、ＳＤＣに入力されているデータをＬＤＤＣ０に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである１５ｈコマンド又は１０ｈコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
【０１２７】
４値の書き込みの場合、もともとＳＤＣは使用しない。このため、データキャッシュ操作後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１２８】
１Ａｈコマンドの場合、４値の書き込みにおいて、ＬＤＤＣ２は使用しない。このため、ＳＤＣに入力されているデータをＬＤＤＣ２に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、１Ａｈコマンド入力によりビジー状態となる。
【０１２９】
１Ａｈコマンドの場合、１−レベルへの書き込みが完了すると、ＬＤＤＣ１のデータデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ１に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１３０】
１Ａｈコマンドの場合、２−レベルへの書き込みが完了すると、ＬＤＤＣ１のデータデータが不要となる。このため、ＳＤＣに入力されているデータをＬＤＤＣ１に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである１５ｈコマンド又は１０ｈコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
【０１３１】
２値の書き込みの場合、もともとＳＤＣは使用しない。このため、データキャッシュ操作後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”１Ａｈ／１０ｈ／１５ｈ”コマンド入力によりビジー状態となる。
【０１３２】
１Ａｈコマンドの場合、２値の書き込みにおいて、ＬＤＤＣ２は使用しない。このため、ＳＤＣに入力されているデータをＬＤＤＣ２に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、１Ａｈコマンド入力によりビジー状態となる。
【０１３３】
１Ａｈコマンドの場合、２値の書き込みでは、ＬＤＤＣ１は使用しない。このため、ＳＤＣに入力されているデータをＬＤＤＣ１に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、１Ａｈコマンド入力によりビジー状態となる。
【０１３４】
１Ａｈコマンドの場合、２値の書き込みにおいて、ＬＤＤＣ０は使用しない。このため、ＳＤＣに入力されているデータをＬＤＤＣ０に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである１５ｈコマンド又は１０ｈコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
【０１３５】
このような動作によれば、１Ａｈ転送コマンドが３回続くこと、すなわち、次の書き込みデータが４ページ、１６値の場合にも使用できる。しかし、例えば次の書き込みが２値の場合、１ページのデータ入力後、書き込みコマンドである１０ｈ／１５ｈが入力される。しかし、例えば別の書き込みコマンド１６ｈを用意し、コマンド１６ｈが入力された後、ＳＤＣに入力されているデータをＬＤＤＣに転送する。この後、次のデータを外部から入力することも可能である。ＬＤＤＣは２、１、０とＳＤＣがあるため、４ページ先のデータまでデータをロードすることも可能である。
【０１３６】
同様に、４値、８値の時も、次の書き込みデータだけでなく、その次の書き込みデータ若しくは、さらに、その次の書き込みデータまで、データロードすることが可能である。
【０１３７】
（プログラム動作）
データキャッシュの操作及びデータキャッシュの定義後、プログラム動作が行なわれる（Ｓ１０）。
【０１３８】
図１において、信号ＢＬＣ１をＶｄｄ＋Ｖｔｈ（トランジスタの閾値電圧）に設定し、ＰＤＣにデータ“１”（書き込みを行なわない）が記憶されている時、ビット線はＶｄｄとなり、データ“０”（書き込みを行なう）時、ビット線はＶｓｓとなる。また、選択されたワード線に接続され、非選択ページ（ビット線が非選択）のセルは、書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線にも電圧Ｖｄｄを供給する。
【０１３９】
次いで、信号ＢＬＣ１＝Ｖｓｓとした後、データＬＤＤＣＱを記憶したＤＤＣが選択される。すなわち、図２０に示すＤＤＣ制御回路７−１により、ＤＤＣＡ〜ＤＤＣＥのうちからＬＤＤＣＱを記憶したＤＤＣに対応する信号ＲＥＧＡ〜ＲＥＧＤのうちの１つがＨレベルとされる。低めのベリファイレベルをパスしている場合、ビット線を中間電位とする。但し、プログラムベリファイのループ１回目は、１度もベリファイ動作を行なっていないため、ビット線を中間電位にすることは無い。
【０１４０】
ここで、選択されているブロックのセレクト線ＳＧ１をＶｄｄ、選択ワード線にＶｐｇｍ（２４Ｖ）、非選択ワード線にＶｐａｓｓ（１０Ｖ）を供給する。すると、ビット線がＶｓｓである場合、セルのチャネルがＶｓｓ、ワード線がＶｐｇｍとなるため、書き込みが行なわれる。一方、ビット線がＶｄｄである場合、セルのチャネルがＶｓｓではなく、Ｖｐｇｍを上昇することとなり、カップリングによりＶｐｇｍ／２程度となる。このため、プログラムされない。また、ビット線が中間電位になっている場合、少しのみ書き込みが行われる。
【０１４１】
（プログラム動作、書き込みデータ検知）
図１に示す信号線ＣＯＭｉは全てのデータ記憶回路１０に共通接続されている。書き込み動作中、信号線ＣＯＭｉを一旦充電し、信号ＣＨＫ２ｎ＝Ｈレベル、信号ＣＨＫ１＝Ｈレベルとする。書き込み中のデータ記憶回路１０のＰＤＣのノードＮ１ａがＬレベルであるため、トランジスタ６１ｌがオンし、信号線ＣＯＭｉの電位がＬレベルとなる。一方、全てのデータ記憶回路のＰＤＣのノードＮ１ａがＨレベルであると、信号線ＣＯＭｉの電位はＨレベルのままである。このため、全ての書き込みが完了したことが分かる。
【０１４２】
また、信号線ＣＯＭｉに電流検出回路を接続することにより、オンとなっているデータ記憶回路の数を数えることもできる。例えば書き込み未完成のデータ記憶回路が僅かである場合、この僅かなセルの書き込みは残して、書き込み終了にすることにより、書き込みスピードを向上させることができる。これらのセルは、データを読み出した時、エラーとなるが、エラー訂正回路により訂正できる。
【０１４３】
（プログラム動作、リフレッシュ）
ＤＤＣＡ〜ＤＤＣＤは、前述したようにキャパシタンスであるため、書き込み途中、及び書き込みリカバリー中に、リフレッシュ動作が必要である。リフレッシュ動作は、前述したように、１Ａｈ入力後のリフレッシュ動作と同じである。
【０１４４】
図２６（ａ）に示すように、ＰＤＣにデータＬＰＤＣ（書き込み又は非書き込みの区別）、ＤＤＣＡにＬＤＤＣＱ（低めのベリファイレベルを超えているかどうかの区別）、ＤＤＣＢにＬＤＤＣ０、ＤＤＣＣにＬＤＤＣ１、ＤＤＣＤにＬＤＤＣ２がそれぞれ記憶されていると仮定する。５回目のリフレッシュ動作により、ＰＤＣにＬＰＤＣ、ＤＤＣＡにＬＤＤＣ２、ＤＤＣＢにＬＤＤＣＱ、ＤＤＣＣにＬＤＤＣ０、ＤＤＣＤにＬＤＤＣ１のデータがそれぞれ記憶される。
【０１４５】
（プログラムとプログラムベリファイリード）
図２７、図２８、図２９は、書き込みシーケンス中のプログラムとベリファイの関係の一例を表している。
【０１４６】
また、図３６は、プログラムベリファイにおける１つのレベルでのワード線とビット線の電位を示している。図３６は、本来のベリファイレベルより低いレベル（ＶＬ）のベリファイと、本来のベリファイレベル（Ｖ）でのベリファイの２つのシーケンスによりベリファイされることを示している。
【０１４７】
図２７は、第１ステージで３レベルを書き込み、図２８は、第２ステージで１６レベルを書き込み、図２９は、第３ステージで１５レベルを書き込む例を示している。
【０１４８】
例えば図２９に示す第３ステージの書き込みシーケンスは、第１回目の書き込み（ループ回数１のプログラム（Ｐ））後、閾値の低いレベルより書き込まれるため、レベル１によりベリファイする。この後、第２回目の書き込み（ループ回数２のプログラム（Ｐ））、レベル１のベリファイ、第３回目の書き込み、レベル１のベリファイを行なった後、第４回目の書き込み後、レベル１のベリファイとレベル２のベリファイを行なう。このように書き込みループ回数が増加するに従って、高いレベルのベリファイを開始する。
【０１４９】
また、第２２回目の書き込み後、レベル１からレベル８のベリファイが行なわれる。次いで、第２３目の書き込み後、レベル２からレベル８のベリファイを行い、レベル１のベリファイを省略する。すなわち、レベル１への書き込みビットが存在し、書き込みが未完成の場合においても、第２３回目以降は、レベル１のベリファイは行なわないこととすることもできる。このように、各レベルのベリファイにベリファイ回数の最大回数を設けた場合、最大回数に達しても書き込みが完了しないセルは、当然読み出し時にエラーとなる。しかし、このエラーは、エラー訂正回路により訂正できる。このようにすると、ベリファイ回数を削減することができ、書き込み時間を高速化することが可能である。また、ＳＤＣ、ＤＤＣを開放することが可能であるため、次の書き込みデータを入力することも可能である。
【０１５０】
また、第６１回目の書き込み後、レベルＥとレベルＦのベリファイ後、第６２回目の書き込み、及びレベルＦのみのベリファイを行い、第６３回目、第６４回目の書き込み、及びレベルＦのみのベリファイを行い終了する。書き込み中に行っている、書き込みデータ検知により、全てのデータ記憶回路１０の書き込みが完了し、信号線ＣＯＭｉがＨレベルとなった場合、つまり、書き込みセルが無くなった場合、若しくは、書き込みセルが規定値数以下となった場合、以降の書き込み及びベリファイは行なわれない。
【０１５１】
また、各レベルのベリファイは、このレベルへの書き込みビットが存在しない場合、以降このレベルのベリファイは行なわない。この各レベルへの書き込みビットが存在するかどうかは、各レベルのベリファイ中に検知する。
【０１５２】
図３０は、プログラム（書き込み）中、又はプログラムベリファイ中に、プログラム及びプログラムベリファイ動作と並行して行なわれ、次にプログラムを行うか、ベリファイを行なうかを決める。さらに、プログラムベリファイを行なう場合、どのレベルを実行するかを決定する。
【０１５３】
ＰＣは、プログラムのループ回数をカウントするプログラムカウンタであり、ＰＣＶは、プログラムベリファイの開始回数を記憶するレジスタである。ＰＣＶ＝ＰＣＶ＋ＤＰＣＶ＋ＤＤＰＣＶ（ＶＬ）（ＶＬはベリファイレベル）で決まる。ＤＰＣＶ、ＤＤＰＣＶ（０）からＤＤＰＣＶ（Ｆ）は、チップ内の図示せぬＲＯＭに記憶された値であり、例えば図２９において、ＤＰＣＶ＝３、ＤＤＰＣＶ（０）からＤＤＰＣＶ（Ｆ）＝０、図２８においてＤＰＣＶ＝２、ＤＤＰＣＶ（０）＝１、ＤＤＰＣＶ（１）からＤＤＰＣＶ（Ｆ）＝０、図２７において、ＤＰＣＶ＝４、ＤＤＰＣＶ（１）からＤＤＰＣＶ（３）＝０となる。
【０１５４】
ステップＳ２１において、先ずＶＬ（次のベリファイレベル）＝０、ＰＣＶ＝０とする。ステップＳ２２において、ＰＣがＰＣＶ以上となったかどうかが判断される。この結果達していない場合、プログラム電圧がステップアップされ、再びプログラムが実行される。
【０１５５】
また、ＰＣがＰＣＶ以上となった場合、ステップ２３において、次のベリファイレベルが書き込み完了になっているかどうかが判断される。次のベリファイレベルの書き込みが完了していない場合、ＣＯＭＰ（０）＝Ｌである。このため、プログラムベリファイが実行される。このとき、ベリファイレベルはＶＬ＝０であるため、レベル０のベリファイが実行される。
【０１５６】
次のベリファイレベルの書き込みが完了となっている場合、ＣＯＭＰ（０）＝Ｈである。このため、ステップＳ２５において、ＶＬ＝ＶＬ＋１が実行され、その次のプログラムベリファイを行なうかどうかの判断をする（Ｓ２６）。例えばレベル０のベリファイを行なうと、先ず、ステップＳ２４において、ＶＬがＶＬＸ（現在のベリファイレベルを示す）に移され、ＶＬＸがＶＬＸＸ（前のベリファイレベルを示す）に移される。
【０１５７】
つまり、ＶＬ＝０であったら、ＶＬＸ＝０となる。ここで、ＰＣがベリファイ毎に設定されている最大ループ回数に達したかどうかが判断され（ＰＣ≧ＤＰＣＶＭＡＸ＋ＰＣＶ）、達している場合、このレベルのＣＯＭＰ（ＶＬ）＝Ｈとする。最大ループ回数は、例えば図２７において８回、図２８において１１回、図２３において２２回となっている。この後、ステップＳ２５において、ＶＬ＝ＶＬ＋１とされる。次いで、ステップＳ２６において、１６値の書き込みの場合、ＶＬ＝０、８値の書き込みの場合、ＶＬ＝８、４値の書き込みの場合、ＶＬ＝４、２値の書き込みの場合、ＶＬ＝２となっているかが判断され、これらの条件を満足する場合、プログラム電圧がステップアップされ、再度、プログラムが実行される。前記条件を満足しない場合、ステップＳ２２に移行し、次のプログラムベリファイを行なうかどうかが判断される。
【０１５８】
（プログラムベリファイ：ビット線プリチャージ）
図３１（ａ）（ｂ）（ｃ）は、図２９に示す第３ステージのレベル１、レベル２のベリファイを示し、図３２（ａ）（ｂ）は、第３ステージのレベルＢのベリファイ時の書き込みレベルと各データキャッシュに記憶されたデータＳＤＣ、ＬＤＤＣ２〜ＬＤＤＣ０、ＰＤＣの関係を示している。第１回目の書き込み動作後、データキャッシュは図３１（ａ）、図３２（ａ）に示すようになっている。
【０１５９】
例えば図３１（ａ）（ｂ）（ｃ）に示すように、レベル１のベリファイ動作を行う場合、選択されているセルのウェル、ソース線、非選択ビット線、非選択ブロックのセレクトゲートに制御信号及び制御電圧発生回路７より、電圧Ｖｆｉｘ（例えば１．６Ｖ）が供給される。選択ワード線にリードの時の電位レベル１より少し高い電位レベル１’が供給される。以後“’”は、リードの電位より若干高いベリファイ電位を示すものとする。したがって、リード及びベリファイ時、選択ワード線に供給される電位がＶｆｉｘより低い場合、見かけ上セルのゲートに負電位が供給さているようになる。これと同時に、選択ブロックの非選択ワード線にＶｒｅａｄ（読み出し時の電位）、選択ブロックのセレクトゲートＳＧＤに所定の電位が供給される。
【０１６０】
次に、図１に示すデータ記憶回路１０の信号ＶＰＲＥがＶｄｄ（例えば２．５Ｖ）、信号ＢＬＰＲＥがＶｓｇ（Ｖｄｄ＋Ｖｔｈ）に設定され、信号ＢＬＣＬＡＭＰを例えば（０．６Ｖ＋Ｖｔｈ）＋Ｖｆｉｘの電位に一旦設定し、ビット線を例えば０．６Ｖ＋Ｖｆｉｘ＝２．２Ｖにプリチャージする。この後、信号ＢＬＰＲＥ＝Ｖｓｓ、信号ＢＬＣＬＡＭＰ＝Ｖｓｓとした後、セレクトゲートＳＧＳに所定の電位が供給される。
【０１６１】
セルの閾値が、ベリファイレベル１’より高い時は、セルがオフする。このため、ビット線はＨレベル（例えば２．２Ｖ）のままである。また、ベリファイレベル１’より低い場合、セルがオンする。このため、ビット線は放電され、ソースと同電位つまりＶｆｉｘ（例えば１．６Ｖ）となる。
【０１６２】
（プログラムベリファイ：データ反転、順転リフレッシュ）
前記ビット線放電時間中に、図２６（ｂ）に示すように、データキャッシをリフレッシュする。この時、例えば図３１（ｂ）に示すように、レベル１のベリファイで、レベル１に書き込んでいるデータ記憶回路のデータが０となるよう、ＬＤＤＣ０のデータのみが反転されるようリフレッシュ動作が実行される。また、図３１（ｂ）に示すレベル１の後に、図３１（ｃ）に示すレベル２のベリファイを行なうとき、レベル２に書き込んでいるデータ記憶回路のデータが０となるよう、ＬＤＤＣ１とＬＤＤＣ０のデータが反転されるよう、リフレッシュ動作が実行される。したがって、図２６（ｂ）に示すように、ＬＤＤＣ（ｋ）は、前のベリファイＶＬＸＸ（ｋ）と現在のベリファイＶＬＸ（ｋ）のＸＯＲ（排他的論理和）＝１の場合、反転動作によりリフレッシュ動作を実行する。
【０１６３】
ここで、低めのベリファイレベルでベリファイを行う場合、ＰＤＣにデータＬＰＤＣが記憶され、ＤＤＣにデータＬＤＤＣＱが記憶されるように操作する。また、本来のベリファイレベルでベリファイする場合、ＰＤＣにデータＬＤＤＣＱが記憶され、ＤＤＣにデータＬＰＤＣが記憶されるように操作する。
【０１６４】
（プログラムベリファイ：ビット線電位読み出し）
図２６（ｃ）に示すように、０〜７レベルのベリファイ時、ＳＤＣ＝Ｈとし、レベル０〜７に書き込んでいるデータ記憶回路のＴＤＣのノードＮ３をＶｄｄにプリチャージする。レベル８〜Ｆのベリファイ時は、信号ＢＬＰＲＥを一旦Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）に設定し、ＴＤＣのノードＮ３をＶｄｄにプリチャージする。信号ＢＯＯＳＴをＬレベルからＨレベルに設定した後、信号ＢＬＣＬＡＭＰを例えば（０．４５Ｖ＋Ｖｔｈ）＋Ｖｆｉｘに設定する。ＴＤＣのノードＮ３は、ＴＤＣが始めにＶｄｄにプリチャージされ、ビット線の電位が０．４５Ｖ＋Ｖｆｉｘより低い場合、Ｌレベル（Ｖｆｉｘ（例えば１．６Ｖ））となり、ビット線の電位が０．４５Ｖより高い場合、Ｈのまま（αＶｄｄ（例えば４．２５Ｖ））となる。信号ＢＬＣＬＡＭＰ＝Ｖｔｒ（例えば０．１Ｖ＋Ｖｔｈ）とした後、信号ＢＯＯＳＴをＨレベルからＬレベルに設定する。
【０１６５】
この後、信号ＶＰＲＥをＶｓｓに設定し、例えば図３１（ｂ）に示すレベル１（ＶＬＸ＝１、０００１）のベリファイにおいて、ＬＤＤＣ２とＬＤＤＣ１に対応する信号ＲＥＧをＨレベルとする。各データ記憶回路のデータは図３１（ｂ）に示すようになっている。このため、レベル１に書き込んでいるデータ記憶回路において、ベリファイレベルに達した場合のみ、ＴＤＣがＨレベルとなる。ベリファイレベルに達していない場合、ＴＤＣはＬレベルのままである。また、レベル８〜Ｆに書き込んでいる場合、ＳＤＣのデータが０である。このため、ＴＤＣは初めからＶｓｓになっている。さらに、レベル２〜７に書き込んでいる場合、信号ＲＥＧをＨレベルとすることにより、強制的にＴＤＣ＝Ｖｓｓとなる。例えば図３２（ａ）（ｂ）に示すレベルＢ（ＶＬＸ＝Ｂ、１０１１）のベリファイにおいて、データＬＤＤＣ２に対応する信号ＲＥＧをＨレベルとする。各データ記憶回路のデータは図３２（ｂ）に示すようになっている。このため、レベルＢに書き込んでいるデータ記憶回路において、ベリファイレベルに達した場合のみ、ＴＤＣがＨレベルとなる。ベリファイレベルに達していない場合、ＴＤＣはＬレベルのままである。また、レベルＢより低いレベルに書き込んでいる場合、セルはオンする。このため、ＴＤＣはＬレベルである。このため、レベルＢに書き込んでいるデータ記憶回路において、ベリファイレベルに達した場合のみＴＤＣはＨレベルとなる。ベリファイレベルに達していない場合、ＴＤＣはＬレベルのままである。また、レベルＣ〜Ｆに書き込んでいる場合、信号ＲＥＧをＨレベルとすることにより、強制的にＴＤＣはＶｓｓとなる。
【０１６６】
つまり、レベルｎ（ＶＬＸ＝ＶＬＸ（３）、ＶＬＸ（２）、ＶＬＸ（１）、ＶＬＸ（０））とすると、レベルｎでのベリファイは、ＶＬＸ（３）＝０の場合、ＳＤＣからＴＤＣをプリチャージし、ＶＬＸ（３）＝１の場合、信号ＢＬＰＲＥを一旦Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）に設定し、ＴＤＣのノードＮ３をＶｄｄにプリチャージする。ＶＬＸ（２）、ＶＬＸ（１）、ＶＬＸ（０）は、ＬＤＤＣ２、ＬＤＤＣ１、ＬＤＤＣ０に対応し、ＶＬＸ（２）＝０、ＶＬＸ（１）＝０、ＶＬＸ（０）＝０のＬＤＤＣの信号ＲＥＧをＨレベルとし、強制的にＴＤＣ＝Ｖｓｓとする。
【０１６７】
ここで、信号ＶＲＥＧ＝Ｈとし、低めのレベルでベリファイを行う場合、ＬＤＤＣＱに対応する信号ＲＥＧをＨレベルとし、本来のレベルでベリファイを行う場合、ＬＰＤＣに対応する信号ＲＥＧをＨレベルとして強制的にＴＤＣをＶｄｄに設定する。この後、信号ＢＬＣ１をＶｓｇ（Ｖｄｄ＋Ｖｔｈ）に設定して、ＴＤＣの電位をＰＤＣに読み込む。この結果、低めのレベルでベリファイを行う場合、ＰＤＣにはＬＤＤＣＱのデータが記憶され、ベリファイをパスする場合、ＰＤＣはＨレベルとなる。また、ベリファイレベルに未到達の場合、ＰＤＣはＬレベル、本来のベリファイレベルでベリファイを行う場合、ＰＤＣにはＬＰＤＣのデータが記憶され、ベリファイをパスする場合、ＰＤＣはＨレベル、ベリファイレベルに未到達の場合、ＰＤＣはＬレベルとなる。
【０１６８】
（プログラムベリファイ：Ｃｏｍｐ）
この後、このベリファイレベルによる書き込みが完了したかどうかが検証される。この動作は、本来のベリファイレベルによるベリファイシーケンスのリカバリー中に実行される。この検証によりベリファイデータの有無が検知される。
【０１６９】
図２６（ｄ）は、検証動作のシーケンスを示している。すなわち、レベル０〜７のベリファイ時において、信号ＢＬＣ２をＨレベルに設定し、レベル８〜Ｆのベリファイ時において、信号ＶＰＲＥをＶｄｄに設定し、この状態において、信号ＢＬＰＲＥをＨレベルとしてＴＤＣを充電する。ＴＤＣがＨレベルとなるのは、レベル８〜Ｆのベリファイ時と、レベル０〜７のベリファイ時でレベル０〜７に書き込んでいるデータ記憶回路のみである。この後、信号ＶＰＲＥをＬレベルとして、ＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２に対応する信号ＲＥＧをＨレベルとする。すると、例えば図３１（ｂ）に示すレベル１のベリファイにおいて、レベル８〜Ｆに書き込んでいるデータ記憶回路のＴＤＣは元々Ｌレベルであり、レベル０、２〜７に書き込んでいるデータ記憶回路のＬＤＤＣ２からＬＤＤＣ０は何れかが、Ｈレベルであるため、ＴＤＣはＬレベルとなる。さらに、レベル１に書き込んでいるデータ記憶回路のＴＤＣのみＨレベルとなる。
【０１７０】
例えば図３２（ｂ）に示すレベルＢのベリファイの場合、レベル３、レベルＢに書き込んでいるデータ記憶回路のＬＤＤＣ２からＬＤＤＣ０は何れかが、Ｈレベルである。このため、ＴＤＣはＬレベルとなり、レベル３、レベルＢに書き込んでいるデータ記憶回路のＴＤＣのみがＨレベルとなる。
【０１７１】
この後、書き込み中のデータ検知と同様に、全てのデータ記憶回路に共通に接続されている信号線ＣＯＭｉを一旦充電し、信号ＣＨＫ２ｎをＬレベル、信号ＣＨＫ１をＨレベルとする。すると、書き込み中のデータ記憶回路のＰＤＣはＬレベルであり、且つ、ＴＤＣがＨレベルの場合のみトランジスタ６１ｌがオンし、信号線ＣＯＭｉの電位が下がる。したがって、このレベルを書き込んでいて、書き込み不完全のセルがあるかどうかを判断することができる。
【０１７２】
しかし、図３２（ｂ）に示す場合、レベルＢのベリファイの時に、レベル３で書き込み不十分のデータ記憶回路が残っていると、レベルＢでのデータ検知はパスしない。
【０１７３】
（データキャッシュ設定）
図２７、２８、２９にそれぞれ示すように、プログラムとプログラムベリファイを何度か繰り返すと、低いレベルの書き込みが完了するはずである。しかし、たまたま数ビットの書き込みの遅いセルがある場合、このセルの書き込みが終了するまでベリファイを繰り返す。このため、ある回数以上はベリファイをしないようにする。しかし、例えば図３２（ｂ）に示す例の場合、レベルＢのベリファイの時に、レベル３で書き込み不十分のデータ記憶回路が残っていると、レベルＢでのデータ検知はパスとならなくなってしまう。したがって、１６値の書き込みの場合、レベル０〜７の書き込みが終了するか、若しくは所定の最大ループ回数に達成した場合、ＳＤＣを開放する。但し、この前にレベル０〜７となっているデータ記憶回路をレベルＦの書き込みとしてからＳＤＣを開放する。
【０１７４】
また、１６値の書き込みの場合、レベル８〜Ｂ、８値の書き込みの場合、レベル０〜３の書き込みが終了するか、若しくは所定の最大ループ回数に達成した場合、を開放する。但し、この前にこれらの書き込み状態なっているデータ記憶回路をレベルＦ（１６値）、レベル７（８値）の書き込みとしてからＬＤＤＣ２を開放する。
【０１７５】
また、１６値の書き込みの場合、レベルＣとレベルＤ、８値の書き込みの場合、レベル４とレベル５、４値の書き込みの場合、レベル１の書き込みが終了するか、若しくは所定の最大ループ回数に達成すると、ＬＤＤＣ１を開放する。しかし、この前にこれら書き込み状態となっているデータ記憶回路をレベルＦ（１６値）、レベル７（８値）、レベル３（４値）の書き込みとしてからＬＤＤＣ１開放する。
【０１７６】
また、１６値の書き込みの場合、レベルＥ、８値の書き込みの場合、レベル６、４値の書き込みの場合、レベル２の書き込みが終了するか、若しくは所定の最大ループ回数に達成した場合、ＬＤＤＣ０を開放する。但し、この前にこれら書き込み状態となっているデータ記憶回路をレベル１５（１６値）、レベル７（８値）、レベル３（４値）の書き込みとしてからＬＤＤＣ０を開放する。
【０１７７】
一方、レベル０の書き込みは、消去セルの深い閾値電圧を浅くすることのみ行っている。このため、レベル０の書き込みが終了するか、若しくは所定の最大ループ回数に達成した後、ＰＤＣを強制的にＨレベル（非書き込み）とし、前述した書き込み未完成のデータ記憶回路が僅かであるかどうかの数の対象にしないようにすることもできる。この場合（ＯＭＩＴＯＰＳＰＡＳＳ＝Ｈレベル：ＯＭＩＴＯＰＳＰＡＳＳは、所定の最大ループ回数に達した後、ＰＤＣを強制的にＨレベルとするためのパラメータである）も、レベル０の書き込みが終了するか、若しくは所定の最大ループ回数に達成した後に、ＰＤＣを強制的にＨレベルとする。
【０１７８】
図３３（ａ）（ｂ）（ｃ）は、データキャッシュに対するデータ設定のシーケンスを示している。先ず、図３３（ａ）に示すように、ＬＤＤＣ０，１，２のデータが反転している場合もあるため、全てのＬＤＤＣ０，１，２のデータを元に戻す。しかし、ＬＤＤＣ２を開放する場合、ＬＤＤＣ２のデータは反転するようにし、ＬＤＤＣ１を開放す場合、ＬＤＤＣ１のデータは反転するようにする。
【０１７９】
次に、図３３（ｂ）に示すように、通常のリフレッシュ動作時は、先ず、ＶＰＲＥ＝Ｖｓｓ、ＢＬＰＲＥ＝ＨレベルとしてＴＤＣ＝Ｖｓｓとしていた。しかし、ＳＤＣを開放する場合、ＢＬＣ２＝ＨレベルとしてＴＤＣを充電し、ＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２をリフレッシュさせる。すると、ＳＤＣ＝Ｈレベル、つまりレベル０〜７への書き込みとなっているデータ記憶回路のＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２を“１”にする。つまり、レベルＦの書き込みとすることができる。
【０１８０】
また、ＬＤＤＣ２を開放する場合、ＬＤＤＣ２は“１”となっているため、信号ＶＰＲＥ＝Ｖｓｓ、信号ＢＬＰＲＥ＝ＨレベルとしてＴＤＣ＝Ｖｓｓとした後、信号ＶＰＲＥ＝Ｖｄｄ、ＬＤＤＣ２の信号ＲＥＧ＝Ｈレベルとする。このようにして、ＴＤＣを充電し、ＬＤＤＣ０、ＬＤＤＣ１をリフレッシュさせると、レベル１５（１６値）、レベル７（８値）の書き込みとすることができる。
【０１８１】
また、ＬＤＤＣ１を開放する場合、ＬＤＤＣ１は“１”となっている。このため、信号ＶＰＲＥ＝Ｖｓｓ、信号ＢＬＰＲＥ＝ＨレベルとしてＴＤＣ＝Ｖｓｓとした後、信号ＶＰＲＥ＝Ｖｄｄ、ＬＤＤＣ１の信号ＲＥＧ＝Ｈレベルとする。このようにして、ＴＤＣを充電し、ＬＤＤＣ０をリフレッシュさせると、レベル１５（１６値）、レベル７（８値）、レベル３（４値）の書き込みとすることができる。
【０１８２】
この後、図３３（ｃ）に示すように、ＯＭＩＴＯＰＳＰＡＳＳがＨレベルの場合で、１６レベルの場合、信号ＢＬＣ２をＨレベルとして、ＳＤＣのデータをＴＤＣにコピーする。この後、信号ＶＰＲＥをＬレベルとし、全ての信号ＲＥＧをＨレベルとして、レベル０に書き込んでいる場合のみＴＤＣをＨレベルにする。
【０１８３】
ＯＭＩＴＯＰＳＰＡＳＳがＨレベルの場合で、８レベルの場合、信号ＶＰＲＥをＨレベル、信号ＢＬＰＲＥをＨレベルとして、ＴＤＣを一旦Ｖｄｄにプリチャージした後、信号ＶＰＲＥをＬレベルとし、全ての信号ＲＥＧをＨレベルとして、レベル０に書き込んでいる場合のみＴＤＣをＨレベルにする。この後、ＬＤＤＣＱをＴＤＣにコピーし、ＰＤＣをＤＤＣに転送した後、ＴＤＣをＰＤＣに移す。再び同じようにＴＤＣをＨレベルとし、ＬＤＤＣＰをＴＤＣにコピー、ＰＤＣをＤＤＣに転送した後、ＴＤＣをＰＤＣに移す。
【０１８４】
このようにして、レベル０へ書き込むデータ記憶回路のＰＤＣを、強制的に書込み非選択であるＨレベルとする。図２６（ｃ）において、ベリファイのビット線のデータをＴＤＣに取り出した後、信号ＲＥＧをＨレベルとする。これにより、ベリファイ対象レベル以外のデータ記憶回路を強制的にフェイルとしていた。しかし、ＬＤＤＣ２を開放した後、ＬＤＤＣ２には次のページの書込みデータなどが入力してくるはずであるため、ＬＤＤＣ２は動かさない。同様に、ＬＤＤＣ１を開放した後、ＬＤＤＣ１は動かさず、ＬＤＤＣ０を開放した後、ＬＤＤＣ０は動かさない。
【０１８５】
ＰＤＣがＬレベルの場合、再び書き込み動作を行ない全てのデータ記憶回路のデータがＨレベルになるまで、このプログラム動作とベリファイ動作を繰り返す。
【０１８６】
本例では、第２ステージにおいてレベル０への書き込みを行い、第３ステージにおいて、レベル０への書き込みを行わなかった。つまり、図２７、図２８、図２９に示すように、第１ステージでレベル３を書き込み、第２ステージでレベル１６を書き込み、第３ステージでレベル１５を書き込んでいた。しかし、第２ステージにおいて、レベル０への書き込みを行わず、第３ステージにおいて、レベル０への書き込みを行うことも可能である。この場合、第１ステージにおいて、３値のレベルに書き込み、第２ステージにおいて１５値のレベルに書き込み、第３ステージにおいて、１６値のレベルに書き込む。また、第１ステージにおいてレベル０への書き込みを行うことも可能である。
【０１８７】
各レベルでのベリファイは、それぞれのベリファイレベルより低めのベリファイレベルを設定し、この低めのレベルを超えた場合、書き込みスピードを遅くして書き込みを行うことにより、狭い閾値電圧の分布幅に書き込むことが可能である。
【０１８８】
図１３、図１５、図１７において、ワード線の電圧が最も低い電圧になるベリファイは、レベル０のベリファイであり、低めのベリファイのレベル０のベリファイが最も低い電圧、つまり０Ｖとなる。しかし、レベル０のベリファイのみ、他のベリファイレベルで行っている。低めのベリファイレベルを設けずに、レベル０のベリファイを０Ｖとし、低めのレベルを超えた場合、書き込みスピードを遅くして書き込みをやめることも可能である。これにより、レベル０のベリファイレベルを下げることが可能である。また、低めのレベルのベリファイ動作がなくなるため書き込み速度の高速化が可能である。
【０１８９】
無論、レベル０のみでなく、任意の数レベルのみ、低めのベリファイレベルを超えた場合、書き込みスピードを遅くして書き込み動作を停止することも可能である。
【０１９０】
低めのベリファイレベルを超えた場合、書き込みスピードを遅くして書き込み動作を遅くする動作を、高いレベル（例えば、レベルＦ、レベルＦとレベルＥ、レベルＦとレベルＥとレベルＤとレベルＣ）の書き込みの時に停止する。すると、書き込みスピードが遅くならない。このため、プログラムとプログラムベリファイのループが少なくなり、書き込み電圧を低くできる。したがって、高い書き込み電圧による誤書き込みを防止することが可能である。
【０１９１】
また、図２６（ｂ）に示すように、ＰＤＣ⇔ＬＤＤＣ０、ＰＤＣ⇔ＬＤＤＣ１、ＰＤＣ⇔ＬＤＤＣ２のリフレッシュ動作の後に、ＰＤＣ⇔ＬＤＤＣＱ、又はＰＤＣ⇔ＬＤＤＣＰのリフレッシュ動作を必ず行い、ＰＤＣのデータを、ＬＤＤＣＱ、又はＬＤＤＣＰとしていた。この理由は、読み出したビット線の電位を、ＤＤＣＡ乃至ＤＤＣＤ、及びＳＤＣに記憶されているデータにより操作するためである。すなわち、あるレベルのベリファイ時、このレベルより上のレベルに書き込んでいるセルが、書き込み完了となってしまうことを防止するため、信号ＲＥＧＡ〜ＲＥＧＤをＨレベルとし、ＴＤＣに読み出されたビット線の電位を強制的にＬレベル、すなわち、書き込み未完了とする必要があるためである。
【０１９２】
これに対して、図１に破線で示すように、ＴＤＣの放電回路を接続することにより、リフレッシュ回数を削減できる。この放電回路は、例えば電源ＶＰＲＥ又はＶｓｓが供給されるノードとノードＮ３の間に直列接続されたＮチャネルＭＯＳトランジスタ６２ａ、６２ｂにより構成されている。トランジスタ６２ａのゲートはノードＮ１ａに接続され、トランジスタ６２ｂのゲートには、信号ＲＥＧＰが供給されている。ＰＤＣのノードＮ１ａがハイレベルで、信号ＲＥＧＰをハイレベルとすることにより、ＴＤＣの電荷を放電させることができる。
【０１９３】
このような構成とすることにより、ＬＤＤＣ０、ＬＤＤＣ１、ＬＤＤＣ２のデータがＰＤＣ内にあっても、信号ＲＥＧＰをＨレベルとすることにより、ＴＤＣを放電させることができる。この後、信号ＶＰＲＥをＨレベルとし、ＬＰＤＣ又はＬＤＤＣＱの信号ＲＥＧをＨレベルとする。これにより、元々非書き込みの場合、ＴＤＣを強制的に“Ｈレベル”とし、ＰＤＣのデータをＤＤＣＡ〜Ｂの何れかに転送した後、ＴＤＣのデータをＰＤＣに転送する。このため、元々非書込みの場合、ＰＤＣは“Ｈレベル”となる。また、書き込みの場合で、ベリファイレベルより高いレベルに書き込んでいる場合、ＰＤＣは“Ｌレベル”となり、ベリファイが強制的に完了しないようにすることができる。したがって、ＰＤＣのデータを、ＬＤＤＣＱ、又はＬＤＤＣＰとしなくとも信号ＲＥＧＰをハイレベルとすることにより、ベリファイが強制的に完了しない状態にＰＤＣを設定できる。このため、リフレッシュ回数を減らすことができる。
【０１９４】
尚、書き込み動作において、低めのベリファイレベルを使用しない場合、ＤＤＣＡ〜ＤＤＣＤの内の１つを削除することができる。
【０１９５】
さらに、本参考例は、図１２、図１４、図１６に示す書き込み順序で隣接セルを書き込みながら、第１ステージ、第２ステージ、第３ステージと３回のデータ入力により書き込んでいる。しかし、隣接セルのフローティングゲート間のカップリング容量が少ない場合、隣接セルを書き込まず、選択されたセルに、第１ステージ、第２ステージ、第３ステージの書き込みを続けて行うことも可能である。この場合、続けて書き込みを行うため、例えば第２ステージで１６値のレベルを、本来のベリファイレベルより低めに書き込む。全てのＰＤＣは書き込み完了状態となっているが、ＤＤＣ０，ＤＤＣ１，ＤＤＣ２，ＳＤＣのデータを残しておくと、次回の第３ステージの書き込みデータを再生することができる。このようにすることで、第３ステージのデータロードを省略することもできる。さらに、第１ステージ又は第２ステージの書き込みを省略したり、第１ステージ及び第２ステージの書き込みを省略し、第３ステージの書き込みのみとすることも可能である。
【０１９６】
図１３（ｆ）、図１５、図１７にそれぞれ示すベリファイレベルの差分を図４６に示す。図４７に示すように、中性閾値電圧から離れるに従い、必要なデータリテンションマージン多くなる。このため、図４６に示す差分は、中性閾値電圧から離れるに従って、増加する。レベル０とレベル１の間の差分が、他のレベルとの間の差分より広いが、これはレベル０の分布は、例えば図１３（ｃ）に示すｄｖｐｇｍ０．３Ｖと大きいステップサイズの第２ステージで書き込みを行っているためである。また、レベル０の閾値電圧の分布が、他のレベルを書き込んでいる間に誤書き込みにより、広がった場合においてもレベル１の閾値電圧の分布に達しないようにマージンを設定している。
【０１９７】
しかし、通常の書込みシーケンスにおいて、下の閾値レベルの書き込みが上の閾値レベルの書き込みより先に完了する。このため、上の閾値レベルを書いている間に、既に書き込みが完了した、下の閾値レベルの閾値分布が、誤書き込みにより、広がってしまうことがある。この閾値分布の拡大が大きい場合、図４６に示すように、差分に補正値を加えて、補正後の差分とする。さらに、下の閾値レベルのほうが、誤書き込みが発生し易いため、下の閾値レベルに対応する補正値を、大きい値とすることも可能である。
【０１９８】
また、この問題を抑えるために、本参考例では、１６レベル乃至１５レベルを同時に書き込んでいた。しかし、１６レベル乃至１５レベルの内、最初に上のレベル８〜Ｆ、又はレベルＣ〜Ｆ、又はレベルＥ，Ｆ、又はレベルＦのみ書き込み、この後、残りのレベルを書き込むことも可能である。
【０１９９】
本参考例では、図１２、図１４、図１６に示すように、ＮＡＮＤセル内のソース側のセルからドレイン側セルの順で書き込んでいた。しかし、図４８（ａ）に実線（ａ）で示すように、ソース側セル（例えばＷＬ０に接続されたセル）ベリファイレベルまで書き込んだ後、ドレイン側セル（ＷＬ１〜３１）が書き込まれると、ドレイン側セル（例えばＷＬ３１に接続されたセル、図４８（ａ）に実線（ｃ）で示す）は、ベリファイレベルまで書き込まれる。しかし、ソース側セル（例えばＷＬ０に接続されたセル、図４８（ａ）に破線（ｂ）で示す）の閾値分布が高くなる。このため、次のレベルのリードレベルに近くなり、正しく読み出すことができなくなるという問題がある。
【０２００】
このため、ソース側のセルを書き込む場合、図４８（ｂ）に実線（ａ）で示すように、ベリファイレベルを図４８（ａ）に示すベリファイレベルより予め少し下げておく。この後、ドレイン側セル（ＷＬ１〜３１）が書き込まれると、ソース側セル（例えばＷＬ０に接続されたセル、図４８（ｂ）に破線（ｂ）で示す）の閾値分布が、次のレベルのリードレベルより低くなる。
【０２０１】
このようにすることで、ソース側セルの閾値分布（図４８（ｂ）に破線（ｂ）で示す）と、ドレイン側セルの閾値分布（図４８（ａ）に実線（ｃ）で示す）を、ほぼ同じレベルに設定することができる。ソース側セルの閾値が高くシフトするシフト量は、ソース側セルからドレイン側セルに向かって徐々に小さくなる。このため、ベリファイレベルを下げる大きさは、ソース側からドレイン側に向かって徐々に小さくするとよい。徐々に小さくするのが困難なときは、例えばＷＬ０〜７を１セット、ＷＬ８〜１５を１セット、ＷＬ１６〜２３を１セット、ＷＬ２４〜３１を１セット（ベリファイレベルは下げない）とすることも可能である。
【０２０２】
（イレーズ動作）
イレーズ動作は、図３に破線で示すブロック単位に行なわれる。また、データ記憶回路に接続されている２本のビット線（ＢＬｉｅ、ＢＬｉｏ）について同時に行う。消去後、セルの閾値は、図１０、図１３に示すように、レベル０（負電位）となる。ＥＡＳＢ（Erased Area Self Boost）書き込み方法の場合、消去セルの閾値電圧を浅くする必要がある。
【０２０３】
図３４（ａ）は、ＥＡＳＢ書き込み方法を示している。この書き込み方法は、必ずソース側のメモリセルから書き込みを行う。先ず、ビット線を書き込みの場合Ｖｓｓ、非書き込みの場合Ｖｄｄに設定する。次に、例えばワード線ＷＬ７に接続されたセルを書き込む場合、ワード線ＷＬ０〜ＷＬ４はＶｐａｓｓ、ワード線ＷＬ５はＶｓｓ、ワード線ＷＬ６はＶｄｄ、中間電位、又はＶｐａｓｓ、ワード線ＷＬ７はＶｐｇｍ、ワード線ＷＬ８〜３１はＶｐａｓｓにそれぞれ設定される。このとき、書き込みの場合、ワード線ＷＬ７のゲートがＶｐｇｍ、チャネルがＶｓｓとなり、書き込みが行なわれる。
【０２０４】
しかし、一般に、非書き込みの場合、チャネルは、ブーストされて例えばＶｐａｓｓ／２となるが、書き込まれたセルの数が多いと、チャネルはブーストされにくくなる。このため、誤書き込みが発生し易くなる。ところが、ＥＡＳＢ書き込み方法の場合、必ずソース側から書き込まれている。したがって、ワード線ＷＬ５を０Ｖとしてブーストすると、ワード線ＷＬ４〜ＷＬ３１に接続されたセルは消去されているため、チャネルはブーストされ、書き込まれなくなる。
【０２０５】
このように、既に書き込まれたセルにブーストした電荷が移動しないようにしなくてはならないが、ワード線ＷＬ５に接続されたセルが消去状態の場合で、閾値電圧が深い場合、オフしなくなってしまう。したがって、消去セルの閾値電圧を浅くする必要がある。
【０２０６】
本参考例は、第２ステージでの書き込み時、レベル０のセルに対して書き込みを行い、閾値電圧を浅くする。このため、以下に示すように、消去後、ブロック単位で、閾値電圧が深いセルを浅くする書き込みを必要としない。しかし、第１ステージの書き込みなどにおいて、隣接セルの閾値電圧が低いレベルから高いレベルへ移動すると、閾値電圧が大きく変動する。このため、カップリング容量により既に書き込まれたメモリセルの閾値電圧が変動してしまうなどの問題がある。したがって、イレーズ動作後、ブロック内の全ワード線を選択して、プログラム及びプログラムベリファイリードを行ない、図１３に示すように、各セルの消去後の閾値電圧を一定のレベルまで書き込むこともできる。この時の、プログラム及びプログラムベリファイリード動作は、全ワード線を選択状態にし、通常のプログラム及びプログラムベリファイリードと全く同じに行なえばよい。
【０２０７】
図３４（ｂ）は、図３４（ａ）を変形したものである。選択ワード線ＷＬ７よりソース側の２つのメモリセルのワード線ＷＬ６、ＷＬ５をＶｄｄ、中間電位、又はＶｐａｓｓとし、３つ目のワード線ＷＬ４をＶｓｓとしてオフとする。その他のワード線はＶｐａｓｓ又は中間電位とする。この場合、第２ステージにおいて、レベル０のセルに対して書き込みを行なわず、第３ステージの書き込み時にレベル０のセルに対して書き込みを行なう。
【０２０８】
（読み出し動作）
図３５は、１６レベル書き込み後における閾値電圧の分布と、各ページにおけるデータの割付を示している。
【０２０９】
ロワーページのデータを読む場合、リード及びベリファイレベル（R&V Level）のレベル８で読み出し動作を行う。すると、セルがオンし、ビット線の電位がＬレベルとなった場合、出力データはＨレベル（“１”）、セルがオフし、ビット線の電位がＨレベルとなった場合、出力データはＬレベル（“０”）となる。
【０２１０】
アッパーページのデータを読む場合、レベルＣとレベル４で読み出し動作を行う。したがって、２シーケンスの読み出しが必要である。
【０２１１】
ハイアーページのデータを読む場合、レベルＥ、レベルＡ、レベル６、レベル２で読み出し動作を行えばよい。したがって、４シーケンスの読み出しが必要である。
【０２１２】
トップページのデータを読む場合、レベルＦ、レベルＤ、レベルＢ、レベル９、レベル７、レベル５レベル３、レベル１で読み出し動作を行う。したがって、８シーケンスの読み出しが必要である。
【０２１３】
図３７は、１シーケンスの読み出し動作におけるワード線とビット線の波形を示し、図３８は、読み出しのアルゴリズムを示している。
【０２１４】
第１回目のリード動作について説明する。読み出しアドレス及びリードコマンドが入力されると（Ｓ３１）、選択されたメモリセルのウェル、ソース線、非選択ビット線、非選択ブロックのセレクトゲートに制御信号及び制御電圧発生回路７より、電圧Ｖｆｉｘ（例えば１．６Ｖ）を供給する（Ｓ３２）。選択ワード線には、ロワーページの場合、レベル８の電位を供給し、アッパーページ場合、レベルＣの電位を与え、ハイアーページの場合、レベルＥの電位を供給し、トップページの場合、レベルＦの電位を供給する（Ｓ３３）。これらワード線の電位がウェル、ソース線の電位Ｖｆｉｘより低い場合、見かけ上セルのゲートには負電位が印加されたこととなる。これと同時に、選択ブロックの非選択ワード線にＶｒｅａｄを供給し、選択ブロックのセレクトゲートＳＧＤに所定の電圧を供給する。
【０２１５】
次に、図１に示すデータ記憶回路１０の信号ＶＰＲＥをＶｄｄ（例えば２．５Ｖ）に設定し、信号ＢＬＰＲＥをＶｓｇ（Ｖｄｄ＋Ｖｔｈ）に設定し、信号ＢＬＣＬＡＭＰを例えば（０．６Ｖ＋Ｖｔｈ）＋Ｖｆｉｘに一旦設定し、ビット線を例えば０．６Ｖ＋Ｖｆｉｘ＝２．２Ｖにプリチャージする。次に、セルのソース側のセレクト線ＳＧＳに所定の電圧を供給する。ウェル及びソースがＶｆｉｘとなっているため、セルがオフする場合、ビット線の電位はＨレベル（例えば２．２Ｖ）のままであり、セルがオンする場合、ビット線の電位は放電され、ソースと同電位つまりＶｆｉｘ（例えば１．６Ｖ）となる。
【０２１６】
この後、信号ＢＬＰＲＥに一旦Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）を供給し、ＴＤＣのノードＮ３をＶｄｄにプリチャージする。この後、信号ＢＯＯＳＴをＬレベルからＨレベルとし、ＴＤＣのノードＮ３の電位をαＶｄｄ（例えばα＝１．７、αＶｄｄ＝４．２５Ｖ）に設定する。
【０２１７】
ここで、信号ＢＬＣＬＡＭＰを例えば（０．４５Ｖ＋Ｖｔｈ）＋Ｖｆｉｘに設定する。ＴＤＣのノードＮ３は、ビット線の電位が０．４５Ｖ＋Ｖｆｉｘより低い場合、Ｌレベル（Ｖｆｉｘ（例えば１．６Ｖ））となり、ビット線の電位が０．４５Ｖより高い場合、Ｈレベルのまま（αＶｄｄ（例えば４．２５Ｖ））となる。次いで、信号ＢＬＣＬＡＭＰをＶｔｒ（例えば０．１Ｖ＋Ｖｔｈ）とした後、信号ＢＯＯＳＴをＨレベルからＬレベルとする。ここで、ＴＤＣはＬレベルの場合、ノードＮ３の電位がＶｆｉｘ（例えば１．６Ｖ）から下がるが、信号ＢＬＣＬＡＭＰをＶｔｒ（例えば０．１Ｖ＋Ｖｔｈ）に設定しているため、０．１Ｖよりは下がらない。ＴＤＣはＨレベルの場合、ノードＮ３の電位が（αＶｄｄ（例えば４．２５Ｖ））からＶｄｄとなる。
【０２１８】
ここで、信号ＢＬＣ１をＶｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣの電位をＰＤＣに読み込む。したがって、セルの閾値電圧が、８レベルより低い場合、ＰＤＣはＬレベル、高い場合ＰＤＣはＨレベルとなり、読み出しが行なわれる。
【０２１９】
ロワーページの読み出し（Ｓ３３）は、リードシーケンスが１回だけである。このため、リードシーケンスの後、ステップＳ４１（ｄｔ＿ｐ２ｓシーケンス）に移行され、このステップ４１において、ＰＤＣのデータがＳＤＣに移動され、ＳＤＣのデータは出力バッファ近くに転送される。
【０２２０】
アッパーページの読み出し（Ｓ３４）は、リードシーケンスが２回必要であり、ハイアーページの読み出しは、リードシーケンスが４回必要である（Ｓ３３〜Ｓ３６）。さらに、トップページの読み出しは、リードシーケンスが８回必要である（Ｓ３３〜Ｓ４０）。このため、リードシーケンスの後、アッパーページの場合１回、ハイアーページの場合３回、トップページの場合７回の（後述するリードアッド）シーケンスが実行される（Ｓ３４〜Ｓ４０）。この後、ステップＳ４１に移行され、ステップＳ４１において、ＰＤＣのデータがＳＤＣに転送され、このＳＤＣのデータが出力バッファ近くに転送される。
【０２２１】
（リードアッド：Read Add）
第２回目以降のリード動作も１回目のリード動作と同様であり、選択ワード線には、次のような電位が供給される。
【０２２２】
アッパーページの２回目：レベル４の電位、
ハイアーページの２回目：レベルＡの電位、
ハイアーページの３回目：レベル６の電位、
ハイアーページの４回目：レベル２の電位、
トップページの２回目：レベルＤの電位、
トップページの３回目：レベルＢの電位、
トップページの４回目：レベル９の電位、
トップページの５回目：レベル７の電位、
トップページの６回目：レベル５の電位、
トップページの７回目：レベル３の電位、
トップページの８回目：レベル１の電位。
【０２２３】
上記のように選択ワード線の電位を設定した後、ビット線をプリチャージして、放電させ、ビット線の電位をＴＤＣに転送する。１回目のリードでは信号ＢＬＣ１をＶｓｇ（Ｖｄｄ＋Ｖｔｈ）に設定して、ＴＤＣの電位をＰＤＣに読み込んだ。これに対して、２回目のリードの場合、ＰＤＣに読み込む前に、信号ＤＴＧＡ〜ＤＴＧＤのうちの１つがＨレベルに設定され、信号ＶＰＲＥをＬレベルとされる。ＰＤＣのデータがＨレベルの場合、強制的にＴＤＣをＬレベルとした後、信号ＢＬＣ１をＶｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣの電位をＰＤＣに読み込む。リードアッドにおいて、ハイアーページは３回同じ動作を行い、トップページは７回同じ動作を行なう。図３５に示すデータは、ＰＤＣに読み込まれたデータを示している。
【０２２４】
上記第１の参考例によれば、メモリセルに４ビット、１６値のデータを記憶する場合、データ記憶回路に４つのダイナミックデータキャッシュにより構成されたＤＤＣＡ、ＤＤＣＢ、ＤＤＣＣ、ＤＤＣＤと、スタティックデータキャッシュにより構成されたＰＤＣ，ＳＤＣを設けることにより、これらのデータをメモリセルに書き込むことが可能となる。このため、メモリセルに設定する閾値電圧の数より少ないラッチ回路により、１６値のデータを書き込むことができる。したがって、データ記憶回路の面積を削減することが可能である。
【０２２５】
しかも、４つのデータは４つのＤＤＣＡ〜ＤＤＣＤにより記憶している。ＤＤＣＡ〜ＤＤＣＤのそれぞれは、３つのトランジスタにより構成されているため、フリップフロップ回路により構成されたＳＤＣ，ＰＤＣに比べて回路構成が簡単である。したがって、ダイナミックデータキャッシュを多用することによりデータ記憶回路の面積を削減することが可能である。
【０２２６】
さらに、書き込み途中において、閾値電圧の低い値は、書き込みが完了する。この場合、このＰＤＣ、ＳＤＣ、ＤＤＣＡ〜ＤＤＣＤの何れかを順次開放して、次のデータの入力を可能としている。したがって、入力データをプリフェッチすることができるため、高速な書き込みが可能となる。
【０２２７】
また、複数のＤＤＣを用いる場合、これらＤＤＣに記憶されたデータをリフレッシュする必要があり、一般に、このリフレッシュ回数はＤＤＣの数だけ必要である。しかも、１つのＤＤＣに対するリフレッシュ動作は、ＤＤＣ→ＰＤＣ、ＰＤＣ→ＤＤＣの２動作が必要であり、４つのＤＤＣを用いたデータ記憶回路の場合、通常８回のリフレッシュ動作を必要とする。しかし、第１の参考例の場合、ＤＤＣ制御回路７−１を設け、ＤＤＣをリフレッシュする毎に、各ＤＤＣが記憶しているデータの定義を変更することにより、５回のリフレッシュ動作に抑えている。したがって、第１の参考例によれば、書き込み時間を短縮することが可能となる。
【０２２８】
また、ＤＤＣ制御回路７−１は、任意の順序で入力されるデータを予め設定された順序でＤＤＣＡ〜ＤＤＣＤに転送し、この後、入力されたページアドレスに応じてＤＤＣＡ〜ＤＤＣＤのデータの定義を変更している。このため、任意の順序で入力されるデータとＤＤＣＡ〜ＤＤＣＤ及びＰＤＣの関係を確実に制御することができる。
【０２２９】
（第２の参考例）
上記第１の参考例は、図３６、図３７に示すように、１つのレベルのベリファイ動作は２回のリードで行なった。しかし、これに限定されるものではない。
【０２３０】
図３９は、第２の参考例を示している。図３９に示すように、ビット線ＢＬをプリチャージした後、ワード線ＷＬに低めのベリファイ電圧ＶＬを設定し、第１のベリファイ動作を行う。これに続いて、ワード線ＷＬに本来のベリファイ電圧Ｖを設定し、第２のベリファイ動作を行なう。
【０２３１】
第２の参考例によれば、ビット線ＢＬを１回プリチャージし、この状態において、低めのベリファイ電圧による第１のベリファイ動作と本来のベリファイ電圧による第２のベリファイ動作を連続して行っている。このため、ビット線の充電時間を短縮することができ、第１、第２のベリファイ動作毎にビット線をプリチャージする場合に比べてプログラム動作を高速化することができる。
【０２３２】
図４０は、第２の参考例に係るリード動作の例を示している。図４０に示すように、ビット線ＢＬをプリチャージした後、ワード線ＷＬに低めのリード電圧ＲＬを供給し、ダミーリードとしての第１のリード動作を行う。これに続いて、本来のリード電圧Ｒをワード線ＷＬに供給し、本来のリード電圧Ｒによる第２のリード動作を行なうようにしてもよい。ダミーリードを行なうのは、ベリファイと同様の動作とするためである。
【０２３３】
（第３の参考例）
図４１は、第３の参考例を示している。図４１は、ビット線をプリチャージした後、例えば４レベルを続けて読み出す例を示している。すなわち、ビット線ＢＬをプリチャージした後、ワード線ＷＬに複数の異なる低めのベリファイ電圧ＡＶＬ、ＢＶＬ、ＣＶＬ、ＤＶＬを順次供給し、これらベリファイ電圧ＡＶＬ、ＢＶＬ、ＣＶＬ、ＤＶＬにより、連続して低めの第１乃至第４のベリファイを行なう。この後、再度、ビット線ＢＬをプリチャージした後、ワード線ＷＬに複数の異なる本来のベリファイ電圧ＡＶ、ＢＶ、ＣＶ、ＤＶを順次供給し、これら本来のベリファイ電圧ＡＶ、ＢＶ、ＣＶ、ＤＶにより、本来の第１乃至第４のベリファイを行なう。
【０２３４】
上記第３の参考例によれば、１回のビット線のプリチャージに対して４回のベリファイを行っている。したがって、ビット線のプリチャージ回数を削減することができ、４値のデータの書き込み速度を高速化することが可能である。
【０２３５】
また、図４２は、第３の参考例に係るリード動作の例を示している。リード動作は、ベリファイにおいてまとめたレベルと同じレベルでまとめる。すなわち、第２ステージは、レベル０〜Ｆの１６レベルのベリファイを行い、第３ステージは、レベル１〜Ｆの１５レベルのベリファイを行う。このため、例えばレベル０は１レベルのみで、図３９に示すように、ベリファイ及びリードし、レベル１〜３は３レベル連続的にベリファイ及びリードする。さらに、レベル４〜７は３レベル連続的にベリファイ及びリードし、レベル８〜Ｂは４レベル連続的にベリファイ及びリードする。さらに、レベルＣ〜Ｆは４レベル連続的にベリファイ及びリードする。
【０２３６】
このように複数レベルをまとめてベリファイ及びリードすることにより、ベリファイ及びリード動作を高速化することが可能である。
【０２３７】
（第４の参考例）
上記第１乃至第３の参考例は、プログラム時に、非書き込みのビット線に信号ＢＬＣ１＝Ｖｓｇを設定し、非選択ビット線に信号ＢＬＣＲＬ＝Ｖｄｄとして、ビット線をＶｄｄに充電していた。しかし、信号ＢＩＡＳo（又はＢＩＡＳe）をＶＬＩＭＩＴ（ＶＬＩＭＩＴ≦Ｖｄｄ＋Ｖｔｈ）に設定し、信号ＢＬＳo（又はＢＬＳe）をＶＬＩＭＩＴに設定し、ビット線の電位をＶｄｄより低く設定することも可能である。
【０２３８】
このようにプログラム時において、非選択ビット線の電位をＶｄｄより低く設定することにより、プログラム時におけるビット線の充電量を抑えることもができ、充電時のピーク電流を抑制でき、消費電流を削減することが可能である。
【０２３９】
（第５の実施形態）
第１の実施形態の場合、図２５（ｅ）に示すように、１６レベルの書き込みは、１つのデータ記憶回路に、合計６個のデータキャッシュが必要であった。すなわち、書き込み／非書き込みを区別するためのＰＤＣ、低めのベリファイレベルを超えているかどうかを区別するためのＬＤＤＣＱ、１６ビットのデータを区別するためのＳＤＣ、ＬＤＤＣ２、ＬＤＤＣ１、ＬＤＤＣ０が必要であった。しかし、レベル０は、元々消去セルであり、このレベル０のプログラムが必要でない場合、低めのベリファイレベルを超えているかどうかをＰＤＣにより区別し、１５ビットのデータをＳＤＣ、ＬＤＤＣ２、ＬＤＤＣ１、ＬＤＤＣ０により区別する。さらに、非書き込み時は、ＳＤＣ、ＬＤＤＣ２、ＬＤＤＣ１、ＬＤＤＣ０を全て“０”にセットする。
【０２４０】
図４３は、第１の実施形態に係わるデータキャッシュとデータの関係を示している。
【０２４１】
図４３に示すようにデータを設定し、プログラム時、非選択ビット線に対応する信号ＢＩＡＳo（又はＢＩＡＳe）をＶｄｄ＋Ｖｔｈ（又は＜Ｖｄｄ＋Ｖｔｈ）として、ビット線にＶｄｄを供給する。この状態において、選択されたビット線のみをフローティング状態とし、ＬＤＤＣ２，ＬＤＤＣ１，ＬＤＤＣ０のいずれかが“１”となっている場合、信号ＶＰＲＥをＶｓｓに設定し、信号ＲＥＧをＶｄｄに設定し、さらにＳＤＣがＬレベルになっているとする。すると、非書き込みビット線以外に対応するビット線がＶｓｓになり書き込み状態となる。
【０２４２】
一方、ＳＤＣがＨレベルで、ＬＤＤＣ２，ＬＤＤＣ１，ＬＤＤＣ０の全てが“０”の場合、ビット線はフローティングのままである。しかし、非選択ビット線をＶｄｄに充電することにより、カップリングによってビット線の電位がＶｄｄに近い電位となり、書き込み非選択となる。この後、信号ＢＬＣＬＡＭＰをＶｓｓとした後、信号ＶＰＲＥをＶｓｓに設定し、信号ＢＬＰＲＥをＶｄｄとし、信号ＴＤＣをＶｓｓとし、信号ＶＰＲＥをＶｄｄ，信号ＲＥＧｉをＨレベルとし、ＬＤＤＣｉ（ｉは０〜２のうち任意）のデータをＴＤＣに移動し、信号ＤＴＧｉをＨレベルとして、ＰＤＣに記憶されているデータ（低めのベリファイレベルを超えているかどうかの区別を示す）をＬＤＤＣｉにコピーする。この状態において、信号ＢＬＣ１をＨレベルとしてＴＤＣのデータをＰＤＣに移動した後、信号ＶＰＲＥをＶｄｄ、信号ＲＥＧｉを中間電位とする。すると、低めのベリファイをパスしている場合、ビット線に中間電位が供給され、少しのみ書き込みを行う。
【０２４３】
上記第１の実施形態によれば、レベル０のプログラムが必要でない場合、低めのベリファイレベルを超えているかどうかをＰＤＣにより区別し、１５ビットのデータをＳＤＣ、ＬＤＤＣ２、ＬＤＤＣ１、ＬＤＤＣ０により区別している。このため、データキャッシュの数を１つ削減することが可能である。
【０２４４】
図４４は、第１の実施形態の変形例を示し、７レベルの書き込みの場合を示している。７レベルの場合、４つのデータキャッシュを必要とする。すなわち、低めのベリファイレベルを超えているかどうかをＰＤＣにより区別し、７ビットのデータをＳＤＣ、ＬＤＤＣ１、ＬＤＤＣ０により区別する。非書き込み時、ＳＤＣがＨレベル、ＬＤＤＣ１、ＬＤＤＣ０は全て“０”に設定され、ＰＤＣは１に設定される。
【０２４５】
図４５は、第１の実施形態の別の変形例を示し、３レベルの書き込みの場合を示している。３レベルの場合、３つのデータキャッシュを必要とする。すなわち、低めのベリファイレベルを超えているかどうかはＰＤＣにより区別し、３ビットのデータはＳＤＣ、ＬＤＤＣ０により区別する。非書き込み時、ＳＤＣがＨレベル、ＬＤＤＣ１、ＬＤＤＣ０は全て“０”に設定され、ＰＤＣは１に設定される。
【０２４６】
さらに、低めのベリファイをパスした後、ビット線に中間電位が供給され、少しのみ書き込みを行う書き込みを行わない場合、低めのベリファイレベルを超えているかどうかを区別するためのデータを記憶する必要がない。この場合、図４３、図４４、図４５に示す例からさらに１つずつデータキャッシュを削減することが可能である。
【０２４７】
その他、本発明は、上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【０２４８】
【図１】本発明に係るデータ記憶回路の一例を示す回路図。
【図２】本発明に係るＮＡＮＤ型フラッシュメモリの概略構成を示す図。
【図３】図２に示すメモリセルアレイ及びビット線制御回路の構成を示す回路図。
【図４】図４（ａ）はメモリセルを示す断面図、図４（ｂ）は選択トランジスタを示す断面図。
【図５】ＮＡＮＤ型フラッシュメモリを示す断面図。
【図６】図５に示す各領域に供給される電圧の例を示す図。
【図７】図２に示すメモリのアドレス入力サイクルを示すタイミング図。
【図８】入力サイクルとアドレスの割当てを示す図。
【図９】メモリセルアレイ（プレーン０、１）とブロックの関係を示す概略構成図。
【図１０】メモリセルのデータとメモリセルの閾値の関係を示す図。
【図１１】メモリセルのデータとメモリセルの閾値の関係を示す図。
【図１２】第１の参考例におけるメモリセルに対する書き込み順序を示す図。
【図１３】図１３は、書き込み動作に伴うメモリセルの閾値電圧の遷移を示す図
【図１４】図１２の第１の変形例を示す図。
【図１５】図１３の第１の変形例を示す図。
【図１６】図１２の第２の変形例を示す図。
【図１７】図１３の第２の変形例を示す図。
【図１８】第３ステージの書き込み動作を示すタイミング図。
【図１９】図１９（ａ）乃至図１９（ｋ）は、第１ステージ乃至第３ステージにおけるコマンドとデータの関係を示す図。
【図２０】図２に示すＤＤＣ制御回路の一例を示す回路図。
【図２１】図２０に示すコンバータの一例を示す構成図。
【図２２】図２０に示す他のコンバータの一例を示す構成図。
【図２３】リフレッシュ動作の一例を示す図。
【図２４】書き込みシーケンスを示す図。
【図２５】図２５（ａ）乃至図２５（ｅ）は、図２４に示す書き込みシーケンスに伴う１６値、８値、４値、２値における入力データと書き込みレベルの関係を示す図。
【図２６】図２６（ａ）乃至図２６（ｄ）は、プログラム動作及びリフレッシュ動作を説明するために示す図。
【図２７】第１ステージのプログラムベリファイ動作を示す図。
【図２８】第２ステージのプログラムベリファイ動作を示す図。
【図２９】第３ステージのプログラムベリファイ動作を示す図。
【図３０】各レベルへの書き込みビットが存在するかどうかを検出するためのサブルーチンを示す図。
【図３１】図３１（ａ）乃至図３１（ｃ）は、図２９に示す第３ステージのレベル１、レベル２のベリファイを示す図。
【図３２】図３２（ａ）、図３２（ｂ）は、第３ステージのレベルＢのベリファイ時の書き込みレベルと各データキャッシュに記憶されたデータの関係を示す図。
【図３３】図３３（ａ）乃至図３３（ｃ）は、データキャッシュに対するデータ設定のシーケンスを示す図。
【図３４】図３４（ａ）は、ＥＡＳＢ書き込み方法を示す図、図３４（ｂ）は図３４（ａ）の変形例を示す図。
【図３５】１６レベル書き込み後における閾値電圧の分布と、各ページにおけるデータの割付を示す図。
【図３６】プログラムベリファイにおける１つのレベルでのワード線とビット線の電位を示す波形図。
【図３７】１シーケンスの読み出し動作におけるワード線とビット線の電位を示す波形図。
【図３８】読み出し動作のアルゴリズムを示す図。
【図３９】第２の参考例に係わるベリファイ動作の電位を示す波形図。
【図４０】第２の参考例に係わるリード動作の電位を示す波形図。
【図４１】第３の参考例に係わるベリファイ動作の電位を示す波形図。
【図４２】第４の参考例に係わるリード動作の電位を示す波形図。
【図４３】第１の実施形態に係わり、データキャッシュを削減するためのデータキャッシュとデータの関係を示す図。
【図４４】第１の実施形態の変形例に係わり、データキャッシュを削減するためのデータキャッシュとデータの関係を示す図。
【図４５】第１の実施形態の別の変形例に係わり、データキャッシュを削減するためのデータキャッシュとデータの関係を示す図。
【図４６】第１の参考例に係り、ベリファイレベルの差分を示す図。
【図４７】第１の参考例に係り、中性閾値電圧と必要なデータリテンションマージンの関係を示す図。
【図４８】図４８（ａ）（ｂ）は、第１の参考例の変形例を示す図。
【図４９】メモリセルアレイの変形例を示す概略構成図。
【符号の説明】
【０２４９】
１…メモリセルアレイ、２…ビット線制御回路、５…データ入出力端子、７…制御信号及び制御電圧発生回路、８…制御信号入力端子、７−１…ダイナミックデータキャッシュ（ＤＤＣ）制御回路、７ａ〜７ｅ…コンバータ、７ａ−１〜７ａ−４…フリップフロップ回路、７ａ−６…比較回路。
【図１】
0004679490.tif 000002
【図２】
0004679490.tif 000003
【図３】
0004679490.tif 000004
【図４】
0004679490.tif 000005
【図５】
0004679490.tif 000006
【図６】
0004679490.tif 000007
【図７】
0004679490.tif 000008
【図８】
0004679490.tif 000009
【図９】
0004679490.tif 000010
【図１０】
0004679490.tif 000011
【図１１】
0004679490.tif 000012
【図１２】
0004679490.tif 000013
【図１３】
0004679490.tif 000014
【図１４】
0004679490.tif 000015
【図１５】
0004679490.tif 000016
【図１６】
0004679490.tif 000017
【図１７】
0004679490.tif 000018
【図１８】
0004679490.tif 000019
【図１９】
0004679490.tif 000020
【図２０】
0004679490.tif 000021
【図２１】
0004679490.tif 000022
【図２２】
0004679490.tif 000023
【図２３】
0004679490.tif 000024
【図２４】
0004679490.tif 000025
【図２５】
0004679490.tif 000026
【図２６】
0004679490.tif 000027
【図２７】
0004679490.tif 000028
【図２８】
0004679490.tif 000029
【図２９】
0004679490.tif 000030
【図３０】
0004679490.tif 000031
【図３１】
0004679490.tif 000032
【図３２】
0004679490.tif 000033
【図３３】
0004679490.tif 000034
【図３４】
0004679490.tif 000035
【図３５】
0004679490.tif 000036
【図３６】
0004679490.tif 000037
【図３７】
0004679490.tif 000038
【図３８】
0004679490.tif 000039
【図３９】
0004679490.tif 000040
【図４０】
0004679490.tif 000041
【図４１】
0004679490.tif 000042
【図４２】
0004679490.tif 000043
【図４３】
0004679490.tif 000044
【図４４】
0004679490.tif 000045
【図４５】
0004679490.tif 000046
【図４６】
0004679490.tif 000047
【図４７】
0004679490.tif 000048
【図４８】
0004679490.tif 000049
【図４９】
0004679490.tif 000050