"n値nは2以上の自然数の閾値電圧によりデータを記憶するメモリセルと、前記メモリセルの一端に接続され、外部より入力される第1論理レベル又は第2論理レベルのデータを記憶する第1のデータ記憶回路と、前記第1論理レベル又は第2論理レベルを記憶する第2のデータ記憶回路と、前記第1のデータ記憶回路が第1論理レベルである場合で、前記第2のデータ記憶回路が第1論理レベルの場合、前記メモリセルの閾値電圧を上げる第1動作を行い、前記第2のデータ記憶回路が第2論理レベルの場合、前記第1動作より閾値電圧の変動が少ないが、前記メモリセルの閾値電圧を上げる第2動作を行い、前記第1のデータ記憶回路が第2論理レベルである場合、前記メモリセルの閾値電圧は変化させず保持し、前記メモリセルが所要の閾値電圧に達したかどうかをベリファイするベリファイ動作において、前記メモリセルの一端をプリチャージすると共に前記メモリセルのゲートに第1の電圧を加え、第1ステップにて、前記メモリセルの一端の電圧が第1の検知レベル以上の場合、前記第2のデータ記憶回路の論理レベルを第2論理レベルに変更し、所定時間経過後、前記メモリセルのゲートに前記第1の電圧を加えたまま、第2ステップにて、前記メモリセルの一端の電圧が第2の検知レベル以上の場合、前記第1のデータ記憶回路の論理レベルを第2論理レベルに変更する制御回路とを具備し、前記第1の検知レベルは、ページ、又はブロック毎に異なる値を有することを特徴とする半導体記憶装置。n値nは2以上の自然数の閾値電圧によりデータを記憶するメモリセルと、前記メモリセルの一端に接続され、外部より入力される第1論理レベル又は第2論理レベルのデータを記憶する第1のデータ記憶回路と、前記第1論理レベル又は第2論理レベルを記憶する第2のデータ記憶回路と、前記第1のデータ記憶回路が第1論理レベルである場合で、前記第2のデータ記憶回路が第1論理レベルの場合、前記メモリセルの閾値電圧を上げる第1動作を行い、前記第2のデータ記憶回路が第2論理レベルの場合、前記第1動作より閾値電圧の変動が少ないが、前記メモリセルの閾値電圧を上げる第2動作を行い、前記第1のデータ記憶回路が第2論理レベルである場合、前記メモリセルの閾値電圧は変化させず保持し、前記メモリセルが所要の閾値電圧に達したかどうかをベリファイするベリファイ動作において、前記メモリセルの一端をプリチャージすると共に前記メモリセルのゲートに第1の電圧を加え、第1ステップにて、前記メモリセルの一端の電圧が第1の検知レベル以上の場合、前記第2のデータ記憶回路の論理レベルを第2論理レベルに変更し、所定時間経過後、前記メモリセルのゲートに前記第1の電圧を加えたまま、第2ステップにて、前記メモリセルの一端の電圧が第2の検知レベル以上の場合、前記第1のデータ記憶回路の論理レベルを第2論理レベルに変更する制御回路とを具備し、前記第1ステップは、ページ、又はブロック毎に異なるタイミングで行うことを特徴とする半導体記憶装置。第1の検知レベルは第2の検知レベルより高いことを特徴とする請求項1又は2記載の半導体記憶装置。読み出し動作時に、前記メモリセルの一端をプリチャージすると共に前記メモリセルのゲートに第2の電圧を加え、前記メモリセルの一端の電圧を第3の検知レベルにより読み出し、所定時間経過後、前記メモリセルの一端の電圧を第4の検知レベルにより読み出すことを特徴とする請求項1又は2記載の半導体記憶装置。前記メモリセルのゲートに供給する第1の電圧は、読み出し時にメモリセルのゲートに供給する第2の電圧より高いことを特徴とする請求項1又は2記載の半導体記憶装置。前記制御回路は、書き込み回数を計数するカウンタを有し、前記カウンタにより計数された書き込み回数の平均値が規定値以上である場合、前記第1の検知レベルを変更することを特徴とする請求項1又は2記載の半導体記憶装置。前記制御回路は、書き込み回数を計数する第1のカウンタを有し、前記第1のカウンタにより計数された書き込み回数の平均値が規定値以上である場合、前記第1ステップのタイミングを変更することを特徴とする請求項1又は2記載の半導体記憶装置。前記第1ステップ時に、前記メモリセルの他端に第3の電圧を供給し、前記第2ステップ時に、前記メモリセルの他端に第4の電圧を供給することを特徴とする請求項1又は2記載の半導体記憶装置。前記第1ステップ時に、前記メモリセルのウェルに前記第3の電圧を供給することを特徴とする請求項8記載の半導体記憶装置。前記第3の電圧は、前記第4の電圧より高いことを特徴とする請求項9記載の半導体記憶装置。前記メモリセルが閾値電圧に達したかどうかをベリファイするベリファイ動作において、前記第1のデータ記憶回路の論理レベルが第1論理レベルの場合、前記メモリセルの一端をプリチャージし、第2論理レベルの場合、プリチャージ動作を行わないことを特徴とする請求項1又は2の半導体記憶装置。前記制御回路は、前記メモリセルの消去回数を計数する第2のカウンタを有し、前記第2のカウンタの計数値は、前記メモリセルに記憶され、前記メモリセルに記憶された消去回数が規定値以上である場合、前記第1の検知レベルを変更することを特徴とする請求項1又は2記載の半導体記憶装置。前記制御回路は、前記メモリセルの消去回数を計数する第2のカウンタを有し、前記第2のカウンタの計数値は、前記メモリセルに記憶され、前記メモリセルに記憶された消去回数が規定値以上である場合、前記第1ステップのタイミングを変更することを特徴とする請求項1又は2記載の半導体記憶装置。本発明は、ベリファイ時間の増大を抑えることが可能な半導体記憶装置を提供しようとするものである。本発明の半導体記憶装置の第1の態様は、n値nは2以上の自然数の閾値電圧によりデータを記憶するメモリセルと、前記メモリセルの一端に接続され、外部より入力される第1論理レベル又は第2論理レベルのデータを記憶する第1のデータ記憶回路と、前記第1論理レベル又は第2論理レベルを記憶する第2のデータ記憶回路と、前記第1のデータ記憶回路が第1論理レベルである場合で、前記第2のデータ記憶回路が第1論理レベルの場合、前記メモリセルの閾値電圧を上げる第1動作を行い、前記第2のデータ記憶回路が第2論理レベルの場合、前記第1動作より閾値電圧の変動が少ないが、前記メモリセルの閾値電圧を上げる第2動作を行い、前記第1のデータ記憶回路が第2論理レベルである場合、前記メモリセルの閾値電圧は変化させず保持し、前記メモリセルが所要の閾値電圧に達したかどうかをベリファイするベリファイ動作において、前記メモリセルの一端をプリチャージすると共に前記メモリセルのゲートに第1の電圧を加え、第1ステップにて、前記メモリセルの一端の電圧が第1の検知レベル以上の場合、前記第2のデータ記憶回路の論理レベルを第2論理レベルに変更し、所定時間経過後、前記メモリセルのゲートに前記第1の電圧を加えたまま、第2ステップにて、前記メモリセルの一端の電圧が第2の検知レベル以上の場合、前記第1のデータ記憶回路の論理レベルを第2論理レベルに変更する制御回路とを具備し、前記第1の検知レベルは、ページ、又はブロック毎に異なる値を有することを特徴とする。本発明の半導体記憶装置の第2の態様は、n値nは2以上の自然数の閾値電圧によりデータを記憶するメモリセルと、前記メモリセルの一端に接続され、外部より入力される第1論理レベル又は第2論理レベルのデータを記憶する第1のデータ記憶回路と、前記第1論理レベル又は第2論理レベルを記憶する第2のデータ記憶回路と、前記第1のデータ記憶回路が第1論理レベルである場合で、前記第2のデータ記憶回路が第1論理レベルの場合、前記メモリセルの閾値電圧を上げる第1動作を行い、前記第2のデータ記憶回路が第2論理レベルの場合、前記第1動作より閾値電圧の変動が少ないが、前記メモリセルの閾値電圧を上げる第2動作を行い、前記第1のデータ記憶回路が第2論理レベルである場合、前記メモリセルの閾値電圧は変化させず保持し、前記メモリセルが所要の閾値電圧に達したかどうかをベリファイするベリファイ動作において、前記メモリセルの一端をプリチャージすると共に前記メモリセルのゲートに第1の電圧を加え、第1ステップにて、前記メモリセルの一端の電圧が第1の検知レベル以上の場合、前記第2のデータ記憶回路の論理レベルを第2論理レベルに変更し、所定時間経過後、前記メモリセルのゲートに前記第1の電圧を加えたまま、第2ステップにて、前記メモリセルの一端の電圧が第2の検知レベル以上の場合、前記第1のデータ記憶回路の論理レベルを第2論理レベルに変更する制御回路とを具備し、前記第1ステップは、ページ、又はブロック毎に異なるタイミングで行うことを特徴とする。本発明によれば、ベリファイ時間の増大を抑えることが可能な半導体記憶装置を提供できる。以下、本発明の実施の形態について、図面を参照して説明する。第1の実施形態まず、第1の実施形態の原理について説明する。図1aは第1の実施形態でのワード線及びビット線の電位を示し、図2は各セルのVg-Idゲート電圧-ドレイン電流特性を示している。図1aに示すように、第1の実施形態では、ワード線の電位を本来の書き込みベリファイレベルAVに設定し、ビット線の放電速度の違いを検出することにより第1回目のベリファイを行う。この後、ワード線の電位を変えずに、本来のベリファイ動作である第2回目のベリファイ動作を行う。これに対して、図1bは、ワード線の電位を変えるプログラムベリファイ動作を示している。図1aに示すように、先ず、ビット線を充電すると共に、ワード線WLの電位を本来のベリファイレベルAVに設定した後、選択ゲートをHレベルとし、プリチャージしたビット線BLを放電させる。非書き込み図1aにで示す、及び書き込み途中のセルで、書き込み閾値電圧から遠いセル図1aにで示すは、電流を流すためビット線電位はLレベルになる。しかし、書き込み途中のセルで書き込み閾値電圧に近づいたセル図1aにで示すや、書き込み完了セル図1aにで示すの場合、ビット線はHレベルのままになる。ここで、ビット線の電位を検出する第1回目のベリファイVF1。このビット線の電位の検出は、例えば本来のビット線電位の検出より高いレベルSLHを用いる。次に、ビット線の放電を続けると、書き込み途中のセル図1aにで示すもビット線がLレベルとなる。したがって、書き込み完了セル図1aにで示すのみビット線の電位がHレベルとなる。ここで、ビット線の電位を検出する第2回目のベリファイVF2。この検出レベルは、例えば本来の検出レベルSLである。以下、QPW方式と同様に第2回目のベリファイの結果、Hレベルとなるのは、書き込みが完了したセルである。このため、次回のプログラムループでは、非書き込みセルとしてビット線に例えば電源電圧Vddを供給して書き込みを行わない。第2回目のベリファイ結果で書き込み不充分のセルは、次回のプログラムループにおいて書き込みを行う。しかし、第1回目のベリファイの結果、Hレベルとなったセルの場合、ビット線に中間電位例えば0.75Vを供給し、書き込み速度を抑えて書き込みを行う。また、第1回目のベリファイの結果、Lレベルとなったセルの場合、ビット線に例えば接地電位Vssを供給して書き込みを行う。このようにして、全ての書き込みセルが第2回目のベリファイをパスするまでプログラムとベリファイを繰り返し行う。このため、本来のベリファイ電位に近いセルの書き込み速度が遅くなり、閾値電圧分布を狭めることが可能である。第1の実施形態では、プログラムベリファイ時にワード線の電位を切り替える必要がないため、書き込み時間を高速化することができる。また、図1cはリード動作時のワード線WL、ビット線BL、選択ゲートSGの波形を示している。図1cから明らかなように、ワード線の電位を除き、本来のベリファイリード動作とリード動作が全く同じ動作になる。すなわち、ビット線の放電時間がプログラムベリファイ動作とリード動作とで等しくなるため、閾値電圧のずれを低減できる。このため、メモリセルに書き込まれたデータを確実に読み出すことが可能である。したがって、プログラムベリファイ動作とリード動作とのマージンを低減することが可能である。図3aは、第1の実施形態におけるプログラムステップ回数と閾値電圧の変化を示し、図3bは、QPW方式におけるプログラムステップ回数と閾値電圧の変化を示している。図3bに示す例の場合、閾値電圧が本来のベリファイレベルAVより低いベリファイレベルAVLを超えると、次回からの書き込みにおいて、ビット線に中間電位例えば0.75Vを供給して書き込み速度を遅くしている。一方、図3aに示す第1の実施形態において、閾値電圧が本来のベリファイレベルAVより低い場合、ワード線のレベルを変化させることなく、セル電流の放電速度でメモリセルの閾値電圧を検知している。このため、バックパターンNANDセル内の他のセルが書き込まれたことによる特性の変化などにより、S-ファクタワード線の電位に対するセル電流が変動する。したがって、検知レベルにばらつきが生じ、書き込み速度が遅くなる場合がある。この場合、図3cに示すように、次回の書き込みからビット線に供給する中間電位を通常の場合より低い中間電圧例えば0.4Vとして、書き込み速度を少し速くすると良い。次に、第1の実施形態について具体的に説明する。図4は、第1の実施形態に係る半導体記憶装置、具体的には例えば2値データを記憶するNANDフラッシュメモリの構成を示している。メモリセルアレイ1は複数のビット線と複数のワード線と共通ソース線を含み、例えばEEPROMセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ1には、ビット線を制御するためのビット制御回路2とワード線制御回路6が接続されている。ビット線制御回路2は、後述するように複数のデータ記憶回路及びフラグ用データ記憶回路を含んでいる。このビット線制御回路2は、ビット線を介してメモリセルアレイ1中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ1中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ1中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路2には、カラムデコーダ3、データ入出力バッファ4が接続されている。ビット線制御回路2内のデータ記憶回路はカラムデコーダ3によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ4を介してデータ入出力端子5から外部へ出力される。また、外部からデータ入出力端子5に入力された書き込みデータは、データ入出力バッファ4を介して、カラムデコーダ3によって選択されたデータ記憶回路に入力される。ワード線制御回路6は、メモリセルアレイ1に接続されている。このワード線制御回路6は、メモリセルアレイ1中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。メモリセルアレイ1、ビット線制御回路2、カラムデコーダ3、データ入出力バッファ4、及びワード線制御回路6は、制御信号及び制御電圧発生回路7に接続され、この制御信号及び制御電圧発生回路7によって制御される。制御信号及び制御電圧発生回路7は、制御信号入力端子8に接続され、外部から制御信号入力端子8を介して入力される制御信号によって制御される。前記ビット線制御回路2、カラムデコーダ3、ワード線制御回路6、制御信号及び制御電圧発生回路7は書き込み回路、及び読み出し回路を構成している。図5は、図4に示すメモリセルアレイ1及びビット線制御回路2の構成を示している。メモリセルアレイ1には複数のNANDセルが配置されている。1つのNANDセルは、直列接続された例えば16個のEEPROMからなるメモリセルMCと、選択ゲートS1、S2とにより構成されている。選択ゲートS2はビット線BL0に接続され、選択ゲートS1はソース線SRCに接続されている。各ロウに配置されたメモリセルMCの制御ゲートはワード線WL0~WL13、WL14、WL15に共通接続されている。また、選択ゲートS2はセレクト線SGDに共通接続され、選択ゲートS1はセレクト線SGSに共通接続されている。ビット線制御回路2は複数のデータ記憶回路10を有している。各データ記憶回路10には、一対のビット線BL0、BL1、BL2、BL3...BLi、BLi1、BL8044、BL8045が接続されている。メモリセルアレイ1は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のNANDセルにより構成され、例えばこのブロック単位でデータが消去される。また、消去動作は、データ記憶回路10に接続されている2本のビット線について同時に行なわれる。また、ビット線の1つおきに配置され、1つのワード線に接続された複数のメモリセル破線で囲まれた範囲のメモリセルは、1セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路10に接続されている2本のビット線BLi、BLi1のうち外部より供給されるアドレス信号YA1、YA2...YAi...YA4023に応じて1本のビット線が選択される。さらに、外部アドレスに応じて、1本のワード線が選択される。図6、図7は、メモリセル及び選択トランジスタの断面図を示している。図6abはメモリセル及び選択トランジスタの断面図を示している。図6aはメモリセルを示している。基板41にはメモリセルのソース、ドレインとしてのn型拡散層42が形成されている。基板41の上にはゲート絶縁膜43を介して浮遊ゲートFG44が形成され、この浮遊ゲート44の上には絶縁膜45を介して制御ゲートCG46が形成されている。図6bは選択ゲートを示している。基板41にはソース、ドレインとしてのn型拡散層47が形成されている。基板41の上にはゲート絶縁膜48を介して制御ゲート49が形成されている。図7は、メモリセルアレイの1つのNANDセルの断面を示している。この例において、1つのNANDセルは、図6aに示す構成のメモリセルMCが16個直列接続されて構成されている。NANDセルのソース側、ドレイン側には、図6bに示す構成の選択ゲートS1及び選択ゲートS2が設けられている。図8は、図5に示すデータ記憶回路10の一例を示す回路図である。このデータ記憶回路10は、プライマリデータキャッシュPDC、ダイナミックデータキャッシュDDC、テンポラリデータキャッシュTDCを有している。PDC、DDCは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。TDCは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。入出力データ線IOはカラム選択トランジスタ61eを介してPDCのノードN1bに接続され、入出力データ線IOnはカラム選択トランジスタ61fを介してPDCのノードN1aに接続されている。これらトランジスタ61e、61fのゲートにはカラム選択信号CSLiが供給されている。トランジスタ61dはノードN1aと接地間に接続されている。このトランジスタ61dのゲートには信号PRSTが供給されている。PDCは、クロックドインバータ回路61i、61j及びトランジスタ61kにより構成されている。トランジスタ61kは、クロックドインバータ回路61iの入力端とクロックドインバータ回路61jの入力端の相互間に接続されている。このトランジスタ61kのゲートには信号EQ1が供給されている。PDCのノードN1bはトランジスタ61lのゲートに接続されている。このトランジスタ61lの電流通路の一端はトランジスタ61mを介して接地されている。このトランジスタ61mのゲートには信号CHK1が供給されている。また、トランジスタ61lの電流通路の他端には、信号COMiが供給されている。この信号COMiは全データ記憶回路10に共通の信号であり、全データ記憶回路10のベリファイが完了したかどうかを示す信号である。すなわち、後述するように、ベリファイが完了すると、PDCのノードN1bがローレベルとなる。この状態において、信号CHK1をハイレベルとすると、ベリファイが完了している場合、信号COMiがハイレベルとなる。さらに、ノードN1aは、トランジスタ61hを介してノードN3に接続されている。このトランジスタ61hのゲートには信号BLC1が供給されている。ノードN3と接地間には前記TDCが接続されている。TDCは、例えばMOSキャパシタ61pにより構成されている。また、接続ノードN3には、トランジスタ61qを介してDDCが接続されている。トランジスタ61qのゲートには、信号REGが供給されている。DDCは、トランジスタ61r、61sにより構成されている。トランジスタ61rの電流通路の一端には信号VREGが供給され、他端は前記トランジスタ61qの電流通路に接続されている。このトランジスタ61rのゲートはトランジスタ61sを介して前記PDCのノードN1aに接続されている。このトランジスタ61sのゲートには信号DTGが供給されている。さらに、前記接続ノードN3にはトランジスタ61t、61uの電流通路の一端が接続されている。トランジスタ61uの電流通路の他端には信号VPREが供給され、ゲートにはBLPREが供給されている。前記トランジスタ61tのゲートには信号BLCLAMPが供給されている。このトランジスタ61tの電流通路の他端はトランジスタ61vを介してビット線BLoの一端に接続され、トランジスタ61wを介してビット線BLeの一端に接続されている。ビット線BLoの他端はトランジスタ61xの電流通路の一端に接続されている。このトランジスタ61xのゲートには信号BlASoが供給されている。ビット線BLeの他端はトランジスタ61yの電流通路の一端に接続されている。このトランジスタ61yのゲートには信号BlASeが供給されている。これらトランジスタ61x、61yの電流通路の他端には、信号BLCRLが供給されている。トランジスタ61x、61yは、信号BlASo、BlASeに応じてトランジスタ61v、61wと相補的にオンとされ、非選択のビット線に信号BLCRLの電位を供給する。上記各信号及び電圧は、図4に示す制御信号及び制御電圧発生回路7により生成され、この制御信号及び制御電圧発生回路7の制御に基づき、以下の動作が制御される。本メモリは、例えば2値メモリであり、1セルに例えば1ビットのデータを記憶することができる。図9は、メモリセルのデータとメモリセルの閾値電圧の関係を示している。消去動作を行なうとメモリセルの閾値電圧は負となり、書き込み及び読み出されるデータは1となる。この状態より書き込み動作により閾値電圧を上げることにより、書き込み及び読み出されるデータが0となる。プログラム及びプログラムベリファイ図10は、第1ページのプログラム動作を示している。図10及び図8を参照してプログラム動作について説明する。データロードS11プログラム動作は、先ずアドレスを指定し、図5に示す1つのセクタが選択される。次に、書き込むべきデータが外部より入力され、全てのデータ記憶回路10内のPDCに記憶される。外部よりデータ1書き込みを行なわないが供給された場合、PDCのノードN1aはHレベルになり、データ0書き込みを行なうが供給された場合、PDCのノードN1aはLレベルとなる。以後、PDCのデータはノードN1aの電位、DDCのデータはノードN2の電位とする。データキャッシュの設定S12書き込みコマンドが供給されると信号DTGが一瞬Hレベルとなり、PDCのデータがDDCにコピーされる。プログラムS13次に、信号BLCの電位をVddVthVth:NチャネルMOSトランジスタの閾値電圧とすると、PDCにデータ1書き込みを行なわないが記憶されている時、ビット線が電源電圧Vddとなり、データ0書き込みを行なうが記憶されている時、ビット線が接地電位Vssとなる。また、選択されたワード線に接続され、非選択ページ、すなわち、ビット線が非選択であるセルは、書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線も電圧Vddとされる。ここで、選択されているブロックのセレクト線SG1をVddとし、選択ワード線にVpgm例えば20V、非選択ワード線にVpass例えば10Vを供給すると、ビット線がVssとなっている場合、セルのチャネルがVss、ワード線がVpgmなるため、書き込みが行なわれる。一方、ビット線がVddになっている場合、セルのチャネルがVssでなくVpgmを上げることになり、カップリングでVpgm/2程度となる。このため、プログラムが行われない。ここで、信号BLCをLレベル、信号REGを中間電位例えば0.75Vthとすると、PDCがLレベルで、DDCがHレベルの場合のみ、ビット線が中間電位となり、通常の書き込みより書き込み速度が遅くなり書き込みが少し行われる。一方、PDCがLレベルで、DDCがLレベルの場合、ビット線はVssのままである。このため、通常に書き込みが行われる。また、PDCがHレベルの場合、書き込みは行われない。一回目のプログラム時ベリファイ動作を行う前、PDC=DDCとなっている。このため、ビット線が中間電位になることはない。図9に示すように、データ0を書き込む場合、メモリセルのデータを例えば1にする。また、データ1を書き込む場合、メモリセルのデータは0のままである。プログラムベリファイS14プログラムベリファイは、図5に示すように、選択されているブロックの選択ワード線にリード時の電位AR例えば0V又は0.2Vより高いベリファイ電位AV例えば0.8Vを供給し、非選択ワード線及びセレクト線SG1にVreadを供給する。これと同時に、信号VPRE=Vdd、信号BLPRE=Vdd、信号BLCLAMP=VpreVth例えば0.7VVthとしてビット線をプリチャージする。次に、セルのソース側のセレクト線SGSをHレベルとする。図1a、図2に示すように、非書き込みセル、及び書き込み途中のセルで書き込み閾値電圧から遠いセルは、電流を流すためビット線の電位はLレベルとなる。しかし、書き込み途中のセルで、閾値電圧に近づいたセルのセル電流は少ないため、ビット線の電位は、少ししか下がらない。また、書き込みが完了したセルの場合、ビット線はHレベルのままとなる。ここで、データ記憶回路10の信号VPRE=Vdd、信号BLPRE=VddVthとして、TDCをVddにプリチャージする。この後、信号BLCLAMP=Vsen0Vth例えば0.65VVthとすると、ビット線の電位が0.65Vより高い場合、TDC=Hレベル、0.65Vより低い場合、TDC=Lとなる。つまり、TDCはとの場合Lレベルとなり、との場合Hレベルとなる第1回目のベリファイVF1。このビット線の検出電位Vsen0は、本来のビット線の検出電位Vsen例えば0.45Vより高いレベルで判断してもよいし、同じで電位でも可能である。ここで、信号VPRE=Vdd、信号REG=Vddとすると、DDC=Hレベルの場合、つまり、書き込み非選択、若しくは第1回目のプログラムベリファイでHレベルとなった場合、TDCは強制的にHレベルとなる。この後、信号DTG=VddVthとしてPDCのデータをDDCにコピーする。この後、信号BLC=VddVthとしてTDCの電位をPDCに取り込む。PDC=Hレベルとなるのは、書き込み非選択セル、又は、のセルである。一方、PDC=Lレベルとなるのは、、のセルである。さらに、ビット線の放電を続けると、書き込み途中のセルのビット線も放電されてLレベルとなる。したがって、書き込みが完了したセルのみ、ビット線の電位がHレベルとなる。ここで、データ記憶回路の信号VPRE=Vdd、信号BLPRE=VddVthとして、TDCをVddにプリチャージした後、信号BLCLAMPをVsenvth例えば0.45VVthとする。すると、ビット線の電位が0.45Vより高い場合、TDCがHレベル、0.45Vより低い場合、TDC=Lレベルとなる。つまり、TDCは、ととの場合Lレベルとなり、の場合Hレベルとなる第2回目のベリファイVF2。ここで、信号VPRE=Vdd、信号REG=Vddとすると、DDC=Hレベルの場合、つまり、書き込み非選択もしくは、第2回目のプログラムベリファイでHレベルとなったプログラム完了した場合、TDCは強制的にHレベルとなる。この後、信号DTG=VddVthとしてPDCのデータをDDCにコピーした後、信号BLC=VddVthとしてTDCの電位をPDCに取り込む。PDC=Hレベルとなるのは、書き込み非選択のセル、又は書き込みが完了したセルである。一方、PDC=Lレベルとなるのは、書き込みが不完全のセルである。図11abcは、データキャッシュに記憶されているデータと書き込みセルの関係を示している。この後、全データ記憶回路のPDCのデータがHレベルとなるまでプログラム及びベリファイが繰り返される。プログラム中にDDCがHレベルの場合、ビット線には中間電位を供給し、書き込み速度を遅くすることにより、セルの閾値電圧分布幅を抑える。リードリード動作は、図5に示す選択されているブロックの選択ワード線にリード時の電位AR例えば0V又は0.2Vを供給し、非選択ワード線及びセレクト線SGDにVreadを供給する。これと同時に、図8に示すデータ記憶回路の信号VPRE=Vdd、信号BLPRE=Vdd、信号BLCLAMP=VpreVth例えば0.7VVthとしてビット線をプリチャージする。次に、セルのソース側のセレクト線SGSをHレベルとする。図1cは、リード動作時のワード線WL及びビット線BLの電位を示している。リード動作は、プログラムベリファイ動作で行った第2回目のベリファイのみ行うことも可能である。しかし、プログラムベリファイと全く同じ動作とするほうが、プログラムベリファイ動作とリード動作とのマージンを減らすことが可能である。このため、プログラムベリファイ時と同じように、データ記憶回路の信号VPRE=Vdd、信号BLPRE=VddVthとして、TDCをVddにプリチャージする。この後、信号BLCLAMP=Vprevth例えば0.7VVthとした後、ビット線の放電を続ける。この後、再び、データ記憶回路の信号VPRE=Vdd、信号BLPRE=VddVthとして、TDCをVddにプリチャージした後、信号BLCLAMP=Vsenvth例えば0.45VVthとする。ビット線の電位が0.45Vより高い場合、TDC=Hレベル、0.45Vより低い場合、TDC=Lレベルとなる。この後、信号BLC=VddVthとして、TDCの電位をPDCに取り込む。図9に示すように、書き込み及び読み出されるセルのデータが1の場合、PDC=Lレベル、データが1の場合、PDC=Hレベルとなる。しかし、外部にはこれらのデータが反転して出力される。イレーズイレーズ動作は、図5に示す1ブロック単位で一括して消去される。消去が行われると、図9に示すように、書き込み及び読み出されるセルのデータは1となる。第1の実施形態の変形例第1回目ベリファイの検出電位Vsen0、若しくは検出タイミングの変更プログラムとイレーズを繰り返すとセルに流れる電流が減少し、図12にで示すように、Vg-Id特性の傾きが小さくなる。このため、書き込み途中のセルで、閾値電圧まで遠いセルでも、第1回目のベリファイでPDCがHレベルとなる場合が多くなってくる。PDCがHレベルとなると、次回のプログラム時に中間電位が供給されるため書き込みスピードが遅くなる。したがって、本来の閾値電圧になかなか達成しないため、本来の閾値電圧に達成するまでのプログラムベリファイのループ回数が多くなってしまうという問題が生じる。そこで、例えば図4に示す制御信号及び制御電圧発生回路7内にカウンタを設け、このカウンタにより、数ページ、若しくは数ブロックの書き込み毎のループ回数を計数し、この計数されたループ回数が設定値より多い場合、Vsen0のレベルを上げる、又は第1回目のベリファイを少し遅らせることにより、PDCがHレベルとなり難くするように調整する。図13は、プログラムベリファイ動作を示している。図13において、図10と同意値部分には同一符号を付している。図13に示すように、データをロードし、PDCのデータをDDCにコピーした後、プログラムループカウンタPLCにより数ページ、又は数ブロックの書き込み毎のループ回数PLC1、PLC2...PLCnを計数するS21、S22。ここで、PCL1は1つ前のプログラムでのループ回数、PCL2は2つ前のプログラムでのループ回数、PCLnはn回前のプログラムでのループ回数である。次に、これらループ回数の平均値APCPLC1PLC2...PLCn/nを求めるS23。すなわち、カウンタの計数値をプログラム回数で割ることにより、ループ回数の平均値APCを求めることができる。この平均値APCの値が、規定値以上である場合、ベリファイ時のVsen0のレベルを上げるか、又は第1回目のベリファイのタイミングを遅くするS24、S25。ベリファイのタイミングを遅くらせるためには、例えばデータ記憶回路10の信号VPRE及びBLPREの発生タイミングを遅らせばよい。このような構成とすることにより、プログラムベリファイの回数を削減することが可能である。プログラムベリファイの回数を削減する他の方法として、例えば図4に示す制御信号及び制御電圧発生回路7内にブロック毎にイレーズ回数を計数するカウンタを設け、図5に示すメモリセルアレイ内に、ブロック毎にイレーズ回数を記憶する例えば複数のセルを設けておき、このセルに記憶されたイレーズ回数が規定値より多い場合、上記と同様な手段によりPDCがHレベルとなり難くするように調整することも可能である。図14は消去時の動作を示している。データを消去する際、先ず、イレーズ回数を記憶するセルからイレーズ回数ELCを読み出し、図示せぬレジスタに格納するS31,S32。次いで、選択されたブロックを消去し、消去が十分かどうかベリファイするS33,S34。消去が完了されるまで上記動作が繰り返されるS35,S33,S34。消去が完了した場合、レジスタに格納されたイレーズ回数ELCがカウントアップされるS36。次いで、カウントアップされたイレーズ回数ELCがセルに書き込まれる。この書き込み動作は、上記プログラム動作と同様である。すなわち、プログラムループ回数を計数するカウンタPLCがリセットされ、イレーズ回数ELCが所定のセルにプログラムされるS37,S38。この後、全てのPDCが1となるまで、プログラム及びベリファイが繰り返されるS39,S40,S41,S38。このようにして、メモリセルがイレーズされる毎にイレーズ回数ELCが計数され、メモリセルに記憶される。図15は、プログラム時の動作を示している。図15において、図10と異なるのは、プログラムの前に、先ずメモリセルに記憶されたイレーズ回数ELCが読み出されるS51。このイレーズ回数ELCが規定値より大きい場合、検出電位Vsen0を上げるか、ベリファイのタイミングが遅らされるS52,S53。上記構成とすることにより、プログラムとイレーズを繰り返すことによるセルの劣化に対応して、プログラム時間を短縮することができる。尚、イレーズ回数は、ブロック単位に記憶したが、これに限定されるものではなく、例えばページ単位に消去可能な場合は、ページ単位にイレーズ回数を計数して記憶させることも可能である。また、検出電位Vsen0の変更、若しくは第2回目のベリファイタイミングの変更は、プログラムとイレーズを繰り返すことによるセルの劣化とは無関係に、例えばワード線毎、又はブロック毎に設定値を変更することも可能である。第2の実施形態第1の実施形態において、プログラムベリファイ動作では、非書き込みセルのビット線にもプリチャージを行い放電させていた。しかし、図4に示すように非書き込みセルが多い場合、ソース線SRCに流れる電流が大きい。このため、ソース線がフローティング状態となり、ソース線の電位が上昇してしまう。したがって、本来ベリファイすべき書き込みセルの電流がなかなか流れないことがある。そこで、第2の実施形態は、本来ベリファイすべき書き込みセルのビット線のみプリチャージする。プログラムプログラム動作は、第1の実施形態と同様である。第1の実施形態と異なるのは、ワード線の電位のリカバリー中に、PDCのデータを反転させることである。図16は、データキャッシュに記憶されているデータと書き込みセルの関係を示している。すなわち、プログラムリカバリ後、及びPDCのデータを反転した後の状態を示している。PDCデータの反転PDCのデータを反転させるには、次のような操作を行なう。信号VPRE=Vss、信号BLPRE=VddとしてTDC=Vssとした後、信号VREG=Vdd、信号REG=VddVthとする。すると、DDC=Hレベルの場合、TDC=Hレベルとなる。しかし、DDC=Lレベルの場合、TDC=Lレベルのままとなる。次に、信号DTG=VddVthとしてPDCのデータをDDCにコピーする。この後、信号BLC=VddVthとしてTDCのデータをPDCにコピーする。PDCのデータはDDCに、DDCのデータはPDCに移る。次に、信号VPRE=Vdd、信号BLPRE=VddVthとしてTDC=Vddとした後、信号VPRE=Vss、信号REG=Vddとする。すると、DDC=Hレベルの場合、TDC=Lレベルとなる。しかし、DDC=Lレベルの場合、TDC=Hレベルのままとなる。次に、信号DTG=VddVthとしてPDCのデータをDDCにコピーする。この後、信号BLC=VddVthとしてTDCのデータをPDCにコピーする。PDCのデータはDDCに移り、DDCのデータは反転してPDCに移る。プログラムベリファイプログラムベリファイは第1の実施形態とほぼ同様である。しかし、信号BLC=VsgVthとしてPDC=Hレベル、つまり、書き込みセルのビット線のみプリチャージする。また、ビット線の放電中、第1回目のベリファイの前又は後で、第2回目のベリファイの前に、プログラムリカバリ中に行ったように、データキャッシのデータを反転させて元に戻す。第1回目のベリファイ前にデータキャッシのデータを反転させ元に戻すには、プログラムリカバリ中で行った、PDCのデータと同様の動作をして反転させればよい。しかし、第1回目のベリファイ後にデータキャッシのデータを反転させ元に戻すには、DDCのデータを反転させる。その他の動作は、第1の実施形態の動作と同様とする。第2の実施形態によれば、ベリファイすべき書き込みセルのビット線のみプリチャージしている。このため、ソース線SRCに流れる電流を低減してソース船SRCがフローティング状態となることを防止できる。したがって、ベリファイすべきセルに電流を流すことができるため、閾値電圧の分布を狭めることが可能である。第3の実施形態図17は、第3の実施形態の動作を示している。第1、第2の実施形態において、ベリファイ時のビット線放電中において、ソース線をVssとしていた。しかし、図17に示すように、ソース線SRCの電位をプログラム開始から第1回目のベリファイまでの間、Vxx例えば0.2Vにする。すると、見かけ上セルに供給されている電位は、ベリファイ電位AV-Vxxとなり、図1bに示すように、本来のベリファイ電位AVより低い電位AVLと同じ電位を供給したこととなる。このようにして、第1回目のベリファイ動作を行った後、ソース線SRCの電位を接地電位として第2回目のベリファイ動作を行う。第3の実施形態によれば、ソース線の容量がワード線の容量より軽いため、高速にベリファイ動作を行うことが可能である。尚、第3の実施形態において、ソース線のみ電位をVxx例えば0.2Vとすると、セルはバックバイアス効果により閾値電圧が若干上がってしまう場合がある。この場合、メモリセルが形成されている図示せぬウェルの電位もVxx例えば0.2Vにすることにより、セルの閾値電圧の上昇を抑制できる。第4の実施形態第1乃至第3の実施形態は、メモリセルに2値データを記憶する場合について説明したで説明したが、1セルに複数ビットを記憶する多値メモリにも応用することが可能である。図18は、例えば3値の場合に適用されるデータ記憶回路10の一例を示している。図18に示すデータ記憶回路10は、図8に示すデータ記憶回路10と異なり、SDCSecondlyDataCache、信号COMiを転送するトランスファゲートとしてのトランジスタ61n、61o、及びトランジスタ61gをさらに有している。また、図5に示すメモリセルアレイ1の各ロウには、図示せぬフラグセルが設けられ、これらフラグセルに接続されたビット線は、フラグセル用のデータ記憶回路に接続される。各フラグセルには、第2ページのデータが書き込まれた場合、第2ページのデータが書き込まれたことを示すデータが記憶される。図19は、3値のデータをプログラムするためのシーケンスを示し、図20は、プログラム動作に伴うメモリセルの閾値電圧の変化を示している。図20に示すように、3値のデータを書き込む場合、セルの閾値電圧を、消去状態からA又はBのレベル移す。このため、図19に示すように、第4の実施形態の場合、ベリファイレベルAでのベリファイS14と、ベリファイレベルBでのベリファイS61が行なわれる。ベリファイレベルBでのベリファイは、第1乃至第3の実施形態と同様である。しかし、Aのレベルに書き込んでいるセルのベリファイをBのレベルに書き込んでいるセルと同様に行なうと、Bのレベルに書き込んでいて未だBのレベルに達しないセルもベリファイをパスしてしまう。したがって、書き込みシーケンス中、Bのレベルへ書き込む場合、図18に示すデータ記憶回路10におけるSDCのノードN2bをHレベルとし、Aのレベルに書き込む場合、ノードN2bをLレベルとする。ベリファイレベルAでのベリファイ時、ビット線の電位をTDCに取り込んだとき、TDCがHレベルとなるのはAのレベルより閾値電圧が高い場合である。このため、信号BLC2を例えばVth0.1Vとして、TDCを強制的にLレベルとすることにより、Bのレベルに書き込んでいる場合、TDCをLレベルとしてベリファイをパスしないようにする。第4の実施形態によれば、多値データを記憶する場合においても、ベリファイ動作を高速化することが可能である。第5の実施形態上記各実施形態は、図21に示すように、プログラムベリファイのリード動作において、低めのベリファイレベルaを超えるか、又はセルに流れる電流Icellが少ない場合、次回の書き込みにおいて、ビット線に中間電位例えば1Vを供給し、書き込み速度を遅くしている。これに対して、第5の実施形態は、図22に示すように、プログラムベリファイのリード動作において、低めのベリファイレベルaを超えるか、又はセルに流れる電流Icellが少ない場合、次回の書き込みにおいて、ビット線に中間電位例えば1.2Vを供給して少し書き込み速度を遅くする。また、aを超えるか、又はセル電流Icellが上記より更に少ない場合、次回の書き込みでは、ビット線に中間電位例えば0.4Vを供給し、上記より更に少し書き込み速度を遅くして書き込みを繰り返し行うことにより、閾値電圧分布を狭めている。図23は、第5の実施形態に適用されるデータ記憶回路10の一例を示している。ベリファイレベルでaを超える、aを超える及び書き込みか非書き込み状態は、DDC、DDC2、PDCにそれぞれ記憶される。第5の実施形態では、a、aの2つレベルを設けたが、更に、複数のレベルを設けることも可能である。第5の実施形態によれば、ベリファイ時にビット線に供給する中間電位を増加することにより、書き込み速度を適正化することができ、セルに書き込む閾値電圧の分布を狭めることが可能である。また、複数の中間電位を用いて書き込み速度を遅くしているが、一度の書き込み時間は大きく増加しない。このため、プログラムベリファイの高速化を妨げることはない。第6の実施形態図1bでは、ベリファイ時にワード線WLの電位を本来のベリファイ電位AVより低い電位AVLに設定し、この後、本来のベリファイ電位AVとしていた。しかし、ベリファイ電位をこのように設定した場合、図24に示すように、LogI-V特性がセル電流の劣化等により、特性C1に比べて傾斜が小さい特性C2のようになった場合、ベリファイ電位AVLでも電流を流してしまう。このため、セルの閾値電圧が書き込みターゲットの閾値電圧AVより高めになってしまう場合がある。第1乃至第5の実施形態は、ベリファイ時にワード線の電位を変化させないことにより、ベリファイ時のワード線の電位とリード時のワード線の電位をほぼ等しくすることのより、読み出し時のマージンを削減していた。すなわち、リード時のワード線の電位にベリファイ時のワード線の電位を揃えていた。これに対して、第6の実施形態は、図25に示すように、リード動作時も、図1bに示すベリファイ動作と同様に、ワード線の電位を変化させる。例えばワード線WLの電位を先ず実際のリードレベルより低いレベルARLに設定し、電流を放電させる。この後、ワード線WLの電位を実際のリードレベルARにする。このような動作により、リード動作とベリファイ動作を同じ条件とすることができるため、データリード時のマージンを必要以上に広げる必要がなく、確実にメモリセルに記憶されたデータを読み出すことが可能である。第7の実施形態図26は、4値により1つのメモリセルに2ビットを記憶する場合の書き込み順序を示しており、図27、28は、ベリファイレベルを変化させる場合における4値の書き込み動作を示すフローチャートを示している。図27は、第1ページのプログラム動作の一例を示し、図28は、第2ページのプログラム動作の一例を示している。図26aに示すように、消去動作を行なうとメモリセルのデータは0となり、第1ページの書き込みによりメモリセルのデータは、外部からのデータが非書き込み1の場合、0のままとなり、外部からのデータが書き込み0の場合、1となる。また、図26cに示すように、第2ページの書き込みにおいて、メモリセルのデータが0であり、外部からのデータが非書き込み1の場合、メモリセルのデータは0のままとなり、外部からのデータが書き込み0の場合、メモリセルのデータは2となり、メモリセルのデータが1であり、外部からのデータが非書き込み1の場合、メモリセルのデータは4となり、外部からのデータが書き込み0の場合、メモリセルのデータは3となる。第1ページの書き込みは、閾値分布幅が大きくても構わない。このため、図24に示すように、LogI-V特性がセル電流の劣化等により、特性C1に比べて傾斜が小さい特性C2のようになった場合、セルの閾値電圧が書き込みターゲットの閾値電圧より高めになってしまう場合があるが問題はない。しかし、第2ページの書き込みは、閾値電圧の分布幅を狭くしなくてはならない。この時、図24に示すように、LogI-V特性がセル電流の劣化等により、特性C1に比べて傾斜が小さい特性C2のようになった場合、ベリファイ電位AVLでもセルは電流を流してしまう。このため、セルの閾値電圧が書き込みターゲットの閾値電圧AVより高めになってしまう場合が起こると、閾値電圧の分布幅が広っがてしまう。この原因は、例えばベリファイ電位AVLとAVの差が狭いためである。図28に示す第2ページのプログラム動作において、ベリファイAVL/AVS70を図1bに示すように、ビット線のプリチャージと同時に、ワード線の電位を本来のベリファイレベルであるAVより低いAVLとして第1回目のベリファイを行い。この後、ワード線の電位を本来のベリファイレベルであるAVとして第2回目のベリファイ動作を行なっていた。ベリファイBVL/BVS71もベリファイAVL/AVと同様に、本来のベリファイレベルであるBVより低いBVLと本来のベリファイレベルBVによりベリファイ動作を行なっていた。これに対して、第7の実施形態は、図29に示す第2ページのプログラムにおいて、ベリファイAVL/BVLS80で、本来のベリファイレベルAV/BVより低いベリファイレベルAVL/BVLでのベリファイのみを行なう。先ず、ビット線をプリチャージすると同時に、ワード線の電位をAVLにして第1回目のAレベルのベリファイ動作を行なう。この後、ワード線の電位をAVLからBVLに変化させ、第2回目のBレベルのベリファイ動作を行う。次に、ベリファイAV/BVS81において、本来のベリファイレベルAV/BVでベリファイ動作を行なう。すなわち、ビット線をプリチャージすると同時に、ワード線の電位をAVとして第1回目のAレベルのベリファイ動作を行なう。この後、ワード線の電位をAVからBVに変化させ、第2回目のBレベルのベリファイ動作を行なう。ベリファイレベルAVLとBVL、及びAVとBVの電位差は大きいため、図24に示すような問題は起こらず、閾値分布を狭め且つ高速に書き込むことが可能である。図30、31は、ベリファイレベルを変化させる場合のリード動作のフローチャートを示している。図30は、第1ページのリード動作を示し、図31は、第2ページのリード動作を示している。図30に示す第1ページのリードは、リードレベルBRでデータをリードするS91。このリード結果をPDCからSDCへ転送するS92。この後、第2ページが書き込みを行なったかどうかを区別をするためのフラグセル第2ページの書き込みの時に書き込まれるのデータが判別されるS93。フラグセルにデータが書き込まれてい場合、このデータが出力されるS94。また、フラグセルに書き込まれていない場合第2ページは書き込まれていない場合、リードレベルARにより再度データをリードし、外部にデータを出力するS95,S96,S94。これに対して、第7の実施形態に係る第1ページのリード動作は、図32に示すように、リードレベルARとBRのリード動作をベリファイ動作と同様に行なう。すなわち、ビット線を一回プリチャージした後、ワード線の電位をARとしてデータ読み出し、この後、ワード線の電位をBRに変化させ再度、データを読み出しているS111。これにより、ベリファイ時とリード時の動作を同じ条件とすることができる。このため、データリード時のマージンを必要以上に広げる必要がなく、確実にメモリセルに記憶されたデータを読み出すことが可能である。この時、リードレベルARでのリード結果はDDCに保持し、BRでのリード結果はPDCに保持する。この後、PDCからSDCへデータを転送するS112。次いで、第2ページの書き込みを行なったかどうか区別をするためのフラグセルが判別されるS113。この結果、フラグセルが書き込まれていた場合、このデータを出力するS114。また、フラグセルに書き込まれていない場合第2ページが書き込まれていない場合、DDCに保持されているリードレベルARでのリード結果をSDCへ転送しS115、外部にデータを出力するS114。第7の実施形態によれば、第1ページのリードにおいて、第2ページの書き込みが行われていない場合、2回のリードシーケンスが必要であったのが1回で済むため、読み出し読み出し速度を高速化することが可能である。尚、第2ページのリードシーケンスは、第1ページのリード動作において、一回のプリチャージ後、ワード線の電位を変化させる場合と、変化させない場合も同様である。すなわち、図31に示すように、ビット線をプリチャージした後、ワード線の電位をCRとしてメモリセルからデータが読み出されるS101。この後、ビット線をプリチャージした後、ワード線の電位をARとしてメモリセルからデータが読み出されるS102。次いで、PDCのデータがSDCに転送されるS103。この後、フラグセルのデータが判別されるS104。この結果、第2ページが書き込まれていない場合、データが1に固定されて出力されるS105。また、第2ページが書き込まれている場合、SDCのデータが出力されるS106。第8の実施形態図33、図34は、第7の実施形態を変形した第8の実施形態を示している。図33において、図32と同一部分には同一符号を付し、図34において、図31と同一部分には同一符号を付している。第8の実施形態は、メモリセルアレイ内にさらに別のフラグセルを設け、このフラグセルに記憶されたデータにより、ページに不良が発生しているかどうかを認識可能としている。すなわち、図5に示すメモリセルアレイ1の各ロウに図示せぬフラグセルを設け、このフラグセルの接続されたビット線にフラグセル用のデータ記憶回路を接続する。この構成において、ページに不良が発生した場合、この不良ページに対応するフラグセルにデータを書き込む。第1ページの書き込み時に不良が発生した場合、フラグセルに第1ページに対応して不良ページを示すデータ例えば0を書き込む。また、第2ページの書き込み時に不良が発生した場合、フラグセルに第2ページに対応して不良ページを示すデータ例えば0を書き込む。図33に示す第1ページのリード時に、フラグセルの第1ページに不良ページを示すデータ0が書き込まれているかどうかが判別されるS121。この結果、不良ページを示すデータが書き込まれていない場合、前述したようにデータが出力される。また、不良ページを示すデータが書き込まれている場合、第1ページの全出力データを0に固定するS122。これにより、第1ページが不良ページであることを認識することができる。図34に示す第2ページのリード時も、フラグセルの第2ページに不良ページを示すデータ0が書き込まれているかどうかが判別されるS131。この結果、不良ページを示すデータが書き込まれていない場合、前述したようにデータが出力される。また、不良ページを示すデータが書き込まれている場合、第2ページの全出力データを0に固定するS132。これにより、第2ページが不良ページであることを認識することができる。尚、不良ページであることを判別するフラグは、第1ページ用、第2ページ用と独立としたが、第1ページと第2ページは同じセルであるため、例えば第1ページが不良の場合、第2ページも不良である場合がある。従って、不良ページであることの判別フラグを1つとし、このフラグが書き込まれている場合、第1ページ及び第2ページともに、出力データを固定することも可能である。また、第5、第6、第7の実施形態では、図1bに示すように、ビット線を1度プリチャージした後、ワード線を立ち上げ、この後、選択ゲートをオンさせて、第1回目のビット線電位の読み出しを行い。続いて、ワード線の電位を変化させ、第2回目のビット線電位の読み出しを行なっていた。しかし、図35に示すように、ビット線BLを1度プリチャージした後、ワード線WLを電位AVLに立ち上げ、この後、選択ゲートSGをオンさせ、第1回目のビット線電位の読み出しを行い。次いで、選択ゲートSGをオフさせ、ワード線の電位をAVに変化させた後、選択ゲートSGを再度オンさせ、第2回目のビット線電位の読み出を行なうことも可能である。このようにした場合、容量及び抵抗が大きいワード線において、ワード線の立ち上がり速度が、ワード線の根元と先で異なることによるビット線の放電速度の違いを防止することが可能である。尚、本発明は、上記各実施形態に限定されるものではなく、発明の要旨を変えない範囲において、種々変形実施可能なことは勿論である。"