"ワード線及びビット線に接続された複数のメモリセルを有するメモリセルアレイと、外部から供給される外部電源が第1所定電圧以上であるか否かを検知し、第1検知信号を出力する低速検知回路と、前記外部電源が前記第1所定電圧以上であるか否かを前記低速検知回路より速く検知し、第2検知信号を出力する高速検知回路と、前記メモリセルに接続されたワード線に書き込み電圧を印加する書き込み動作では前記高速検知回路から出力される前記第2検知信号を出力し、前記書き込み動作以外の動作では前記低速検知回路から出力される前記第1検知信号を出力する切替回路と、前記切替回路から出力される前記第2検知信号に応じて、前記書き込み動作を終了させるリカバリ制御回路と、を具備することを特徴とする半導体記憶装置。前記書き込み動作時に前記切替回路から出力される前記第2検知信号に応じて、前記ワード線に接続された第1電圧供給線に前記書き込み電圧を供給する昇圧回路をさらに具備し、前記リカバリ制御回路は、前記切替回路から出力される前記第2検知信号に応じて、前記第1電圧供給線に供給された前記書き込み電圧を放電する放電回路を有することを特徴とする請求項1に記載の半導体記憶装置。前記第1電圧供給線と前記ワード線との間に接続された第2電圧供給線と、前記第1電圧供給線と前記第2電圧供給線との間を導通状態あるいは遮断状態のいずれかの状態にする転送回路と、前記転送回路を前記導通状態あるいは前記遮断状態のいずれかの状態に切り替えるスイッチ回路とをさらに具備し、前記リカバリ制御回路は、前記切替回路から出力される前記第2検知信号に応じて、前記第2電圧供給線に転送された前記書き込み電圧を放電する放電回路を有することを特徴とする請求項1に記載の半導体記憶装置。前記外部電源が第2所定電圧以上であるか否かを検知し、第3検知信号を出力する検知回路と、前記検知回路から出力される前記第3検知信号に応じて、前記リカバリ制御回路の動作をリセットする制御回路と、前記リカバリ制御回路が前記第2検知信号を受信してから前記書き込み動作を終了させるまでの時間、前記第3検知信号が前記制御回路に入力されるのを遅らせる遅延回路と、をさらに具備することを特徴とする請求項1に記載の半導体記憶装置。前記ビット線は偶数番目に配列された偶数ビット線と奇数番目に配列された奇数ビット線とを含み、前記書き込み動作は、前記偶数ビット線あるいは前記奇数ビット線のいずれか一方に第1書き込みを行った後、前記偶数ビット線あるいは前記奇数ビット線のいずれか他方に第2書き込みを行うことを特徴とする請求項1に記載の半導体記憶装置。電源遮断による誤書き込みを抑制し、信頼性の高い半導体記憶装置を提供する。一実施態様の半導体記憶装置は、ワード線及びビット線に接続された複数のメモリセルを有するメモリセルアレイと、外部から供給される外部電源が第1所定電圧以上であるか否かを検知し、第1検知信号を出力する低速検知回路と、前記外部電源が前記第1所定電圧以上であるか否かを前記低速検知回路より速く検知し、第2検知信号を出力する高速検知回路と、前記メモリセルに接続されたワード線に書き込み電圧を印加する書き込み動作では前記高速検知回路から出力される前記第2検知信号を出力し、前記書き込み動作以外の動作では前記低速検知回路から出力される前記第1検知信号を出力する切替回路と、前記切替回路から出力される前記第2検知信号に応じて、前記書き込み動作を終了させるリカバリ制御回路とを具備することを特徴とする。以下、図面を参照して実施形態の半導体記憶装置について説明する。ここでは、半導体記憶装置として、NAND型フラッシュメモリを例に取る。なお、以下の説明において、同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。[第1実施形態]第1実施形態のNAND型フラッシュメモリについて説明する。以下に、NAND型フラッシュメモリの回路構成について説明し、次にNAND型フラッシュメモリの基本動作の1つである書き込みプログラム/プログラムベリファイ動作を説明し、その後、プログラム動作中の電源遮断時の問題点とその解決策を説明する。[1]回路構成まず、NAND型フラッシュメモリの構成について説明する。図1は、NAND型フラッシュメモリの構成を示すブロック図である。図示するように、NAND型フラッシュメモリ以下、フラッシュメモリと記すは、複数のプレーンDistrictP0,P1、電源検知回路11、内部電源発生回路12、書き込み電圧発生回路13、論理回路14、コントロールゲートドライバ以下、CGドライバと記す15、アドレスドライバ16、及びスイッチ回路SW0,SW1を備える。電源検知回路11は、外部から供給される電源外部電源VEXTの電圧を検知し、その検知結果に応じたフラグ信号FLGを、書き込み電圧発生回路13、論理回路14、CGドライバ15、アドレスドライバ16にそれぞれ出力する。内部電源発生回路12は、電源VEXTを受け取り、電源VEXTから内部電源電圧VDDを発生する。書き込み電圧発生回路13は、プログラム動作が開始されると、書き込み電圧VPGMと電圧VPGMHを発生する。書き込み電圧VPGM及び電圧VPGMHは、CGドライバ15に出力される。書き込み電圧VPGMは、プログラム動作時に選択ワード線WLに印加する電圧である。電圧VPGMHは、書き込み電圧VPGMをnMOSトランジスタで完全に転送することが可能な電圧であり、書き込み電圧VPGMよりnMOSトランジスタのしきい値分高い電圧である。論理回路14には、外部よりアドレス信号ADD、各種の制御信号CTL、データ等が入力される。論理回路14は、アナログ回路の動作や制御信号CTL0及びブロックアドレスADD0などの出力を制御する。CGドライバ15は、論理回路14からの制御信号CTL0によりコントロールゲート線CG<0:n>を選択し、駆動する。アドレスドライバ16は、論理回路14からのブロックアドレスADD0に基づいてプレーン内のブロックデコーダを選択し、駆動する。スイッチ回路SW0,SW1は、プレーンP0,P1をそれぞれ選択する。また、プレーンP0にはブロックデコーダ170が配置され、プレーンP1にはブロックデコーダ171が配置されている。ブロックデコーダ170はプレーンP0内のブロックを選択し、ブロックデコーダ171はプレーンP1内のブロックを選択する。図2及び図3は、フラッシュメモリにおけるプレーンの構成を示す図である。ここでは、プレーンP0の構成を示すが、プレーンP1の構成も同様である。図2に示すように、プレーンP0は複数のブロックB0,B1,B2,...,B,Bmを有する。なお、mは1以上の自然数を示す。これら複数のブロックには、複数のブロックデコーダ170が配置されている。すなわち、図3に示すように、ブロックB0,B1,...,B,Bmには、対応するブロックデコーダ170-0,170-1,...,170-,170-mがそれぞれ位置されている。ブロックデコーダ170-0~170-mは、デコーダDE0~DEmをそれぞれ有する。ブロックデコーダ170-0~170-mの各々は、転送トランジスタTR0~TRnを有する。CGドライバ15に接続されたコントロールゲート線CGI0<0>~CGI0<n>は、転送トランジスタTR0~TRnを介してワード線WL0~WLnにそれぞれ接続されている。あるブロックのメモリセルにアクセスする場合、ブロックデコーダはブロックアドレスADD0に基づいて、ブロックデコーダに対応するブロックを選択する。そして、デコーダは、転送トランジスタTR0~TRnのゲートに接続された転送ノードTRNをHにして、転送トランジスタをオンにする。これにより、コントロールゲート線CGI0<0>~CGI0<n>の電圧を、ワード線WL0~WLnにそれぞれ転送する。このようにして、メモリセルのワード線が選択される。図4は、プレーン内のブロックの構成を示す図である。図示するように、ブロックはNANDストリングNSがページ長分、配列されて構成される。NANDストリングNSの一端には、ビット線BLe,BLoがそれぞれ交互に接続される。ビット線の偶数番目をBLeで表し、ビット線の奇数番目をBLoで表す。ビット線BLo,BLeには、センスアンプS/A18が接続されている。1対のビット線BLeとビット線BLoは、1つのセンスアンプ18を共有している。NANDストリングNSの他端にはソース線SLが接続されている。図5は、ブロック内のNANDストリングの構成を示す図である。図示するように、NANDストリングNSは、複数のメモリセルMC0~MC31と選択ゲートトランジスタTSGD,TSGSを有する。選択ゲートトランジスタTSGD,TSGSは、フローティングゲートを持たず、スイッチ機能を有するnMOSトランジスタである。複数のメモリセルMC0~MC31は、各々のソース及びドレインが直列に接続されている。直列接続された複数のメモリセルの一端メモリセルMC31には、選択ゲートトランジスタTSGDの電流通路の一端が接続される。選択ゲートトランジスタTSGDの電流通路の他端には、ビット線BLBLeまたはBLoが接続される。一方、直列接続された複数のメモリセルの他端メモリセルMC0には、選択ゲートトランジスタTSGSの電流通路の一端が接続される。選択ゲートトランジスタTSGSの電流通路の他端には、ソース線SLが接続される。また、メモリセルMC0~MC31のゲートには、図4及び図5に示すように、ワード線WL0~WL31がそれぞれ接続される。選択ゲートトランジスタTSGDのゲートには選択ゲート線SGDが接続され、選択ゲートトランジスタTSGSのゲートには選択ゲート線SGSが接続されている。図6aはNANDストリング内のメモリセルの断面構造を示し、図6bはメモリセルの回路シンボルを、図6cはメモリセルの閾値分布を示す。図6aに示すように、フラッシュメモリにおける1つのメモリセルは、フローティングゲート21とコントロールゲート22を有するトランジスタセルトランジスタからなる。半導体基板20には、ソース20Sとドレイン20Dが形成されている。ソース20Sとドレイン20D間の半導体基板チャネル上には、トンネル絶縁膜23を介してフローティングゲート21が配置されている。フローティングゲート21上には、ゲート間絶縁膜24を介してコントロールゲート22が配置されている。電気的に絶縁されたフローティングゲート21に電子を注入あるいは放出することにより、図6cに示すように、セルトランジスタに2つの閾値分布を持たせる。これら2つの閾値分布にそれぞれデータ0とデータ1を割り付けることで、セルトランジスタにデータを記憶させる。なおここでは、セルトランジスタが2値を記憶する場合を示すが、多値を記憶する場合にも本実施形態は適用可能である。次に、図1に示したフラッシュメモリにおける書き込み電圧発生回路13及びCGドライバ15について詳述する。図7は、書き込み電圧発生回路の構成を示す回路図である。図示するように、書き込み電圧発生回路13は、昇圧回路31、レベルシフタ32、比較回路CP1、抵抗Rs,R1,R2、インバータIV1、nMOSトランジスタNT1,NT2を有する。比較回路CP1、抵抗Rs,R1,R2、及びnMOSトランジスタNT1は、リミッタ回路を構成する。昇圧回路31には、信号VENB、フィードバック信号FB、及びクロックCLKが入力される。なおここでは、電圧VPGMHを発生する回路は省略する。書き込みコマンドが入力される前では、論理回路14から出力される信号VENBはLであり、昇圧回路31がディセーブル状態になり、nMOSトランジスタNT2がオン状態となる。これにより、書き込み電圧VPGMが供給される電圧供給線PGは、内部電圧VDDにリセットされている。ここで、リセット時に、nMOSトランジスタNT2により内部電圧VDDを電圧供給線PGに完全に転送するためにレベルシフタ32が使用されている。次に、書き込みコマンドが入力されると、信号VNEBはHとなり、オッシレータ図示しないからクロックCLKが供給される。また、信号VENB=Hを受けてnMOSトランジスタNT1がオンし、リミッタ回路が動作を開始する。リミッタ回路の比較回路CP1には、モニタ電圧MON1、参照電圧VREF、及び信号VENBが入力される。リミッタ回路は、電圧VPGMを抵抗Rs,R1とR2で分圧した電圧と参照電圧VREFとを比較することにより、昇圧回路31に信号FBをフィードバックする。このとき、書き込み電圧VPGMが設定値に到達していない時は、FB=Hとなって昇圧回路31を動作させる。電圧VPGMが設定値に到達すると、FB=Lとなり昇圧回路31が停止する。これにより、昇圧回路31から出力される書き込み電圧VPGMを設定値に制御する。図8は、図1中のCGドライバの構成を示す回路図である。図示するように、CGドライバ15は、スイッチ回路SW2、及びnMOSトランジスタNT11,NT12,NT13,NT14,NT15,NT16を有する。CGドライバ15は、各種電圧のマルチプレクサとなっており、論理回路14から入力されるイネーブル信号ENBPROによりコントロールゲート線CGにどの電圧を転送するかを決定する。例えば、プログラム動作では、イネーブル信号ENBPROがHとなり、スイッチ回路SW2によってnMOSトランジスタNT11がオン状態となる。これにより、書き込み電圧VPGMがコントロールゲート線CGに転送される。このようにして決定されたコントロールゲート線CGの電圧は、デコードによりスイッチ回路SW0,SW1によって決められたプレーンに入力され、その後、図3に示すように、選択されたブロックデコーダにコントロールゲート線CGI0<0:n>によって入力される。こうして、コントロールゲート線の電圧は、ワード線WL<0:n>に転送されてセルトランジスタが選択される。また、コントロールゲート線CGに供給された電圧は、必要に応じて放電制御信号DIS1あるいはDIS2により0Vあるいは電圧VDDにそれぞれ放電される。[2]プログラム/プログラムベリファイの基本動作次に、NAND型フラッシュメモリにおけるプログラム/プログラムベリファイの基本動作を説明する。ここでは、ページ内の偶数番目のビット線BLeに接続されたメモリセル以下、偶数ページと記すにプログラムする場合を想定して説明する。図9a及び図9bは、NAND型フラッシュメモリにおけるプログラム動作を示す図である。選択セルに0データを書き込む場合は以下の通りである。図9aに示すように、選択ゲートトランジスタTSGDのゲートを電圧VSGとし、選択ゲートトランジスタTSGSのゲートを0Vとし、ビット線BLeから0Vを印加する。この状態で、非選択セルのゲートを電圧VPASSとし、選択セルのゲートを電圧VPGMにする。これにより、NANDストリングのチャネル電圧と選択セルのゲート電圧との電位差を大きくすることにより、電子を選択セルのフローティングゲート21に注入する。この電子の注入は、FNトンネル電流により行われる。フローティングゲート21に電子を注入することにより、選択セルは図6cに示した0データの閾値分布となる。次に、選択セルに1データを書き込む場合は以下の通りである。図9bに示すように、選択ゲートトランジスタTSGDのゲートを電圧VSGとし、選択ゲートトランジスタTSGSのゲートを0Vとし、ビット線BLeから電圧VDDを印加する。ここでの電圧VSGは、電圧VDDを転送できる電圧レベルである。ここでは、VSG=VDDVthであり、Vthは選択ゲートトランジスタTSGDの閾値とする。このとき、NANDストリングのチャネルは、電圧VDDを転送した状態でフローティング状態になる。これは、ビット線BLe側の選択ゲートトランジスタTSGDにかかるゲート-ソース間の電圧がちょうど閾値電圧Vthになるためである。この状態で非選択セルのゲートを電圧VPASSにし、選択セルのゲートを電圧VPGMにすると、NANDストリングのチャネルは選択セルとのカップリングにより上昇する。この上昇した電位をVinhibitとする。このとき、選択セルのゲートとNANDストリングのチャネルとの間にかかる電圧の差は小さいため、フローティングゲート21への電子の注入は行われない。この電子の注入が行われない状態は、図6cに示した1データの閾値分布となる。また、偶数番目のビット線BLeでプログラムする際、奇数番目のビット線BLoに接続されたセルは非選択となるため、図9bに示したプログラム動作と同様の動作となる。以上のようなプログラム動作を行った後、所望のデータが書き込まれたかを確認するためにプログラムベリファイ動作を行う。図10b、図10c及び図10dは、NAND型フラッシュメモリにおけるプログラムベリファイ動作を示す図である。図10aのような閾値分布のデータがプログラムされている場合を考える。選択セルに対して前述したように、0、1のデータを書き込んだ後、選択セルのワード線WLを電圧VSENとし、ビット線BLeを電圧VDD初期充電レベルにする。また、非選択ページ側のビット線BLoは0Vに固定する。さらに、非選択セルのゲートを電圧VREADとし、選択ゲートトランジスタTSGD,TSGSのゲートを電圧VSGとする。ここで、電圧VREADは、図10aに示ように、0データの閾値分布の中で最も高い電圧レベルよりも高い電圧レベルである。このため、電圧VREADがゲートに印加されるセルは、データ0、1によらず電流を流すことができる。その後、ビット線BLeをフローティングにして、図10b及び図10cに示ように、ビット線BLeの初期充電レベルが放電されるか保持されるかによって、所望のデータがプログラムされたかどうかを確認する。このとき、ビット線BLeはフローティングとなるため、ノイズの影響による誤センスが発生しやすい。この誤センスを防ぐために、図10dに示ように、ビット線BLeの両隣のビット線BLoを0Vに固定して、ビット線BLeをシールドしながらセンスする。[3]プログラム動作時の電源遮断とその問題点ここで、プログラム動作時における電源VEXTの遮断の動作を考える。まず、アドレスADD0に応じて、プログラム対象のブロックをブロックデコーダ170により選択する。選択されたブロックデコーダ内の転送ノードTRNは昇圧されて、コントロールゲート線CGI0とワード線WLを接続する。プログラム動作時は選択セルのゲートには書き込み電圧VPGMが印加され、ワード線WLを同じとするセルにも同様に書き込み電圧VPGMが印加される。但し、非選択NANDストリングのチャネルはブーストされるため、ゲート-チャネル間の電位差は大きくならず書き込みは行われない。例えば、偶数番目のビット線BLeに接続されたセル偶数ページには既にデータが書き込まれている状態で、次に奇数番目のビット線BLoに接続されたセル以下、奇数ページと記すにデータを書き込む際、奇数ページの選択セルのゲートには書き込み電圧VPGMが印加される。このとき、偶数ページは非選択のため、チャネルはブーストされ、本来書き込みは行われない。しかし、選択セルのゲートに書き込み電圧VPGMが印加されている状態で電源VEXTの遮断が起こると、問題が生じる可能性がある。例えば、偶数ページのプログラムは終了している状態で、次に奇数ページをプログラムする際、選択セルに電圧VPGMが印加されているときに電源VEXTの遮断が生じると、コントロールゲート線CGからワード線WLを0Vに放電するよりも先に、ブロックデコーダ内の転送ノードTRNの電荷が抜けてしまう。すると、ワード線WLがフローティング状態となり、ワード線WLには書き込み電圧VPGMが残ってしまう。このとき、ゲートに電圧VPGMが印加されている非書き込みセルのゲートにも電圧VPGMの電荷が残る。この状態で放置されると、ブーストされているチャネルの電位がリークで抜けて行き、ゲート-チャネル間の電位差が大きくなる。これにより、非選択セル及び選択1書き込みセルに対して誤書き込みが行われる可能性がある。特に問題となるのが、非選択セルの誤書き込みである。従って、上記のような誤書き込みを防止するため、電源VEXTが低くなることを検知してプログラム動作を終了させる必要がある。ここで、図11に電源VEXTの検知回路例を、図12に検知電圧の例を示す。まず、動作を保証する最も低い電源VEXTレベルが仕様によって決まっており、図12に示すように、この電圧レベルを電圧Vminとする。電源VEXTを投入してから電圧Vminを越えると、ROMフューズあるいはメタルフューズを持っているフラッシュメモリではそのフューズ情報の取り込みを行い、周辺回路のレジスタ例えば、論理回路14内のレジスタにフューズ情報をラッチする。フューズ情報のラッチが正常に終了した後、フラッシュメモリはスタンバイ状態になる。次に、電源VEXTが降下するときの動作を考える。このとき、フラッシュメモリが電源オフを検出する電圧レベルをオフ電圧Voffとする。電源VEXTがオフ電圧Voffよりも低くなると、フラッシュメモリはリセットされる。これにより、フラッシュメモリ内部のレジスタ情報は初期化されて、全ての論理制御信号がリセットされる。フラッシュメモリが低電圧仕様になるほど、電圧Vminの電圧レベルは低くなり、オフ電圧Voffもそれに合わせて下がる。例えば、Vmin=1.50V、Voff=1.40Vなどである。ここで、電源VEXTの遮断による誤書き込みを防止するために、リカバリ動作を電圧Vminとオフ電圧Voffの中間の電圧で行うとすると、リカバリ動作を開始するリカバリ電圧Vrcvが例えば1.45Vとなる。電源VEXTがリカバリ電圧Vrcvより低くなると、フラッシュメモリはプログラム動作中でもリカバリモードになり、プログラム動作を終了させる。ここで、リカバリ動作とは、電源VEXTがリカバリ電圧Vrcvより低くなった場合に、通常にプログラム動作が終了する際に実行される処理と同様の順序でプログラムを終了させる動作である。しかし、リカバリ動作中であっても、電源VEXTがオフ電圧Voffより低くなると、フラッシュメモリは初期化されて論理制御信号はリセットされてしまう。従って、正常にリカバリ動作を終了させるためには、電源VEXTが電圧Vrcvから電圧Voffに下がるまでの間にリカバリ動作を終了させる必要がある。低電圧仕様のメモリほど、リカバリ電圧Vrcvと電圧Voff間の電位差は小さくなり、電源VEXTの遮断に対するリカバリ動作マージンは減少する。また、図11に示した外部電源VEXTを検知する回路はスタンバイ状態であっても常時動作している必要があるため、通常は検知回路の電流を大幅に小さくしており検知速度が遅い。従って、電源VEXTがリカバリ電圧Vrcvより低くなったのを検出するのに時間がかかり、リカバリ動作中にさらに電源VEXTがオフ電圧Voffより低くなってしまうことにより、正常にリカバリ動作が実行できなくなることも考えられる。[4]第1実施形態における解決策前述したように、電源遮断時の問題の一つとして、電源VEXTの電圧レベルを検知する回路の応答スピードが遅いことが挙げられる。これは以下の理由による。電源VEXTの検知回路は、フラッシュメモリがアクティブ/スタンバイ状態によらず、常に動作させておく必要があり、検知回路の消費電流を低減するために検知回路の電流を大幅に小さくしているためである。図11に示した電源検知回路では、抵抗R3とR4の抵抗比を検知したい電圧に設定し、抵抗R3とR4間のノードのモニタ電圧MON2と参照電圧VREFとが比較回路CP2により比較される。そして、比較結果としてフラグ信号FLGが出力される。比較回路CP2は、モニタ電圧MON2が参照電圧VREF以上であれば、フラグ信号FLGとしてHを出力する。一方、モニタ電圧MONSが参照電圧VREFより低ければ、フラグ信号FLGとしてLを出力する。このとき、抵抗R3,R4を流れる電流や、比較回路CP2の電流は常に流れるため、スタンバイ電流が増加する。そこで、消費電流を低減するためにこれらの電流を小さくしているが、このために電源検知回路の応答スピードが遅くなる。第1実施形態では、誤書き込みの恐れのあるプログラム動作時の電源遮断に対する対応手段として、プログラム動作時のみ電源検知回路の動作を高速化する。図13に、第1実施形態におけるリカバリ電圧検知回路の回路図を示す。図示するように、リカバリ電圧検知回路は、電源VEXTを通常の速度で検知する低速検知回路41と、電源VEXTを高速に検知する高速検知回路42とを有する。低速検知回路41は、抵抗R5,R6、比較回路CPS、及び論理積回路ADSを含む。低速検知回路41は、スタンバイ状態及びアクティブ状態のいずれの状態でも常時動作している回路であり、プログラム動作以外の動作時に、電源VEXTがリカバリ電圧第1所定電圧Vrcv以上であるか否か、言い換えると、電源VEXTがリカバリ電圧Vrcvより低いか否かを検知する。高速検知回路42は、抵抗R7,R8、nMOSトランジスタNT17、比較回路CPF、及び論理積回路ADFを含む。高速検知回路42は、プログラム動作時のみ、電源VEXTがリカバリ電圧Vrcv第1所定電圧以上であるか否か、言い換えると、電源VEXTがリカバリ電圧Vrcvより低いか否かを、低速検知回路41よりも高速に検知する。ここで、イネーブル信号ENBは、フラッシュメモリがプログラム動作プログラムベリファイを含まない中にHとなり、プログラム動作以外の動作時にLとなる論理信号である。ディセーブル信号ENBnは、イネーブル信号ENBの反転信号である。プログラム動作時のリカバリ電圧検知回路の動作は以下のようになる。プログラム動作時に、イネーブル信号ENBがHとなり、ディセーブル信号ENBnがLとなる。これにより、論理積回路ADSはディセーブル状態となり、論理積回路ADFはイネーブル状態となる。論理積回路ADS,ADFの出力は論理和回路OR1に入力され、論理和回路OR1は論理積回路ADFの出力を、遅延回路DEL1を介してフラグ信号FLGとして出力する。すなわち、フラグ信号FLGには、高速検知回路42の検知結果が出力される。詳述すると、高速検知回路42では、イネーブル信号ENBとしてHがnMOSトランジスタNT17のゲート、比較回路CPF、及び論理積回路ADFにそれぞれ入力され、これらの回路がオン状態あるいはイネーブル状態となる。抵抗R7とR8間のノードのモニタ電圧MONFと参照電圧VREFとが比較回路CPFにより比較され、比較結果としてフラグ信号FLGFが出力される。論理積回路ADFにはイネーブル信号ENBとしてHが入力されているため、論理積回路ADFからフラグ信号FLGFが論理和回路OR1に出力される。低速検知回路41では、ディセーブル信号ENBnとしてLが論理積回路ADSに入力され、論理積回路ADSからは常時Lが論理和回路OR1に出力される。論理和回路OR1は、フラグ信号FLGFを遅延回路DEL1に出力する。フラグ信号FLGFは、遅延回路DEL1を介してフラグ信号FLGとして出力される。すなわち、高速検知回路42の検知結果であるフラグ信号FLGFがリカバリ電圧検知回路から出力される。プログラム動作以外の動作時のリカバリ電圧検知回路の動作は以下のようになる。プログラム動作以外の動作時には、イネーブル信号ENBがLとなり、ディセーブル信号ENBnがHとなる。これにより、論理積回路ADSがイネーブル状態となり、論理積回路ADFがディセーブル状態となる。論理和回路OR1は、フラグ信号FLGSを遅延回路DEL1に出力する。フラグ信号FLGSは、遅延回路DEL1を介してフラグ信号FLGとして出力される。すなわち、低速検知回路41の検知結果であるフラグ信号FLGSがリカバリ電圧検知回路から出力される。詳述すると、低速検知回路41では、ディセーブル信号ENBnとしてHが論理積回路ADSに入力され、論理積回路ADSがイネーブル状態となる。抵抗R5とR6間のノードのモニタ電圧MONSと参照電圧VREFとが比較回路CPSにより比較され、比較結果としてフラグ信号FLGSが出力される。論理積回路ADSには信号ENBnとしてHが入力されているため、論理積回路ADSからフラグ信号FLGSが論理和回路OR1に出力される。高速検知回路42では、イネーブル信号ENBとしてLがnMOSトランジスタNT17のゲート、比較回路CPF、及び論理積回路ADFにそれぞれ入力され、これらの回路がオフ状態あるいはディセーブル状態となる。このため、論理積回路ADFからは常時Lが論理和回路OR1に出力される。論理和回路OR1は、フラグ信号FLGSを遅延回路DEL1に出力する。フラグ信号FLGSは、遅延回路DEL1を介してフラグ信号FLGとして出力される。すなわち、低速検知回路41の検知結果であるフラグ信号FLGSがリカバリ電圧検知回路から出力される。なお、イネーブル信号ENBがLの間は、高速検知回路42は動作しないため、プログラム動作以外の動作時に消費される電流は増加しない。また、遅延回路DEL1は、論理積回路ADS,ADFが切り替わる際の電源ノイズグリッジの除去や、高速検知回路42が動作している間の検知感度が上がることに対する電源ノイズのフィルタとして動作する。このように、第1実施形態では、高速検知回路を導入することで電源を検知するスピードを上げ、かつ、高速検知回路はアクティブ動作時のみ活性化させる制御を加える。これにより、スタンバイ電流の増加を抑えつつ、図14に示すように、電源遮断に対するリカバリ動作マージンを上げることができる。これによって、電源遮断に対する信頼性を上げること、すなわち誤書き込みを防止することが可能である。なお、前述した高速検知回路は、リカバリ電圧Vrcvの検知のみならず、オフ電圧Voffの検知にも適用することが可能であり、その場合には高速検知回路のDCオフセット電圧のバラつきもキャンセルすることが可能となる。本実施形態は、フラッシュメモリに供給される電源の遮断に対する制御において、書き込み動作のように、メモリセルのゲートに高電圧が印加されている間に電源が遮断されることによって発生する誤書き込みを抑制できる。以上説明したように本実施形態によれば、例えばモバイル機器などに使用されるNAND型フラッシュメモリで大きな問題となる電源遮断による誤書き込みを抑制し、信頼性の高いNANDフラッシュメモリを実現することができる。[第2実施形態]第1実施形態では、電源検知回路の高速化により電源VEXTの遮断を高速に検知し、リカバリ動作への移行を早めることにより、誤書き込みを抑制する。また、その際のリカバリ動作は通常のプログラム動作の処理を利用するため、外部電源を検知してから実際に選択ワード線に印加されている書き込み電圧VPGMを放電するまでには時間がかかる場合がある。もし、リカバリ動作に移行した後、実際にワード線の電圧VPGMを放電するまでに時間がかかってしまうと、やはり誤書き込みが発生する懸念が生じる。これは、リカバリ動作が終了する前に、電源VEXTがオフ電圧Voffより低くなることにより論理回路がリセットされてしまうことによるか、もしくは、電源VEXTが、論理回路が動作する最低の電圧より低くなってしまうためである。そこで、第2実施形態では、第1実施形態のように高速検知回路42で電源遮断を検知したフラグ信号FLGを利用して、高速に通常のリカバリ動作への移行を行うだけではなく、書き込み電圧発生回路におけるリカバリ動作を直接行うことにより誤書き込みを防止する。図15は、第2実施形態における電源検知回路とワード線リカバリ制御回路を含むブロック図である。図15には、電源VEXTの遮断時の電源検知回路として、リカバリ電圧検知回路51とオフ電圧検知回路52を示す。リカバリ電圧検知回路51は、例えば図13に示した回路を有し、オフ電圧検知回路52は例えば図11に示した回路を有する。ここで、図11中の参照電圧VREFは、オフ電圧Voffを検出するための所定電圧に設定されているものとし、比較回路CP2からはフラグ信号FLGOが出力されるものとする。リカバリ電圧検知回路51は、電源VEXTがリカバリ電圧Vrcv以上であるか否かを検知し、その検知結果であるフラグ信号FLGをワード線リカバリ制御回路53に出力する。ワード線リカバリ制御回路53は、フラグ信号FLGに応じてワード線に対しリカバリ動作を行う。リカバリ電圧検知回路51から出力されたフラグ信号FLGは、また論理回路14に出力される。論理回路14は、フラグ信号FLGに応じてリカバリ信号RECをワード線リカバリ制御回路53に出力する。ワード線リカバリ制御回路53は、リカバリ信号RECに応じてワード線に対しリカバリ動作を行う。リカバリ信号RECは、信号VENB、信号ENBPROを含む。ここでは、プログラム動作時に電源VEXTが遮断され、電源VEXTがリカバリ電圧Vrcvより低くなった場合に、リカバリ電圧検知回路51から出力されたフラグ信号FLGはワード線リカバリ制御回路53へ直接出力される。プログラム動作以外の動作時に、例えば読み出しまたは消去時に、電源VEXTがリカバリ電圧Vrcvより低くなった場合は、フラグ信号FLGは論理回路14へ出力され、論理回路14からリカバリ信号RECがワード線リカバリ制御回路53へ出力される。これは、プログラム動作時に電源VEXTがリカバリ電圧Vrcvより低くなった場合は高速なリカバリ動作が必要であるが、プログラム動作以外の動作時では、高速なリカバリ動作は必要でなく、通常のリカバリ動作でよいからである。また、オフ電圧検知回路52は、電源VEXTがオフ電圧第2所定電圧Voff以上であるか否かを検知し、その検知結果であるフラグ信号FLGOを論理回路14に出力する。論理回路14は、フラグ信号FLGOに応じてリセット信号RESをワード線リカバリ制御回路53に出力する。ワード線リカバリ制御回路53は、リセット信号RESに応じて回路内の動作を停止させるリセット動作を行う。第2実施形態では、図1に示したブロック図において、書き込み電圧発生回路13が以下に示す書き込み電圧発生回路13Aに置き換えられる。また、図15ではワード線リカバリ制御回路53が書き込み電圧発生回路13Aを有する。その他の構成は図1に示した構成と同様である。図16に、第2実施形態における書き込み電圧発生回路の回路図を示す。図示するように、書き込み電圧発生回路13Aは、図7に示した回路において論理積回路AD1が追加される。論理積回路AD1には、論理回路14から出力される信号VENBとリカバリ電圧検知回路51から出力されるフラグ信号FLGが入力される。論理積回路AD1からは信号VENB1が、昇圧回路31、インバータIV1、及びnMOSトランジスタNT1に出力される。プログラム動作中に電源遮断が生じると、リカバリ電圧検知回路51は、電源VEXTがリカバリ電圧Vrcvより低くなったことを高速に検知し、フラグ信号FLGがLに変化する。すると、論理積回路AD1から出力される信号VENB1がLとなり、直ちに昇圧回路31を停止する。さらに、信号VENB1は、インバータIV1及びレベルシフタ32を介してnMOSトランジスタ放電回路NT2のゲートに入力される。これにより、nMOSトランジスタNT2がオンし、電圧供給線PGに供給されていた書き込み電圧VPGMを電圧VDDに放電するリカバリ動作。言い換えると、電圧供給線PGに供給されていた書き込み電圧VPGMを放電し、電圧供給線PGの電位を電圧VDDにする。このように、電源VEXTの遮断を高速に検知し、ワード線WLに印加されている電圧VPGMをCGドライバ15でリカバリ放電せずに、書き込み電圧発生回路13A自体をリカバリすることにより、誤書き込みのさらなる防止を図る。第2実施形態では、検知信号フラグ信号FLGを論理回路を介さずに、ワード線リカバリ制御回路53、すなわち書き込み電圧発生回路13Aに直接入力するため、第1実施形態と比べて高速にリカバリ動作を行うことができる。その他の構成及び効果は第1実施形態と同様である。[第3実施形態]第1実施形態では、電源検知回路の高速化により電源VEXTの遮断を高速に検出し、リカバリ動作への移行を早めることにより、誤書き込みを抑制する。また、その際のリカバリ動作は通常のプログラム動作の処理を利用するため、外部電源を検知してから実際に選択ワード線に印加されている書き込み電圧VPGMを放電するまでには時間がかかる場合がある。もし、リカバリ動作に移行した後、実際にワード線の電圧VPGMを放電するまでに時間がかかってしまうと、やはり誤書き込みが発生する懸念が生じる。そこで、第3実施形態では、第1実施形態のように高速検知回路42で電源遮断を検知したフラグ信号FLGを利用して、高速に通常のリカバリ動作への移行を行うだけではなく、CGドライバにおけるリカバリ動作を直接行うことにより誤書き込みを防止する。第3実施形態では、図1に示したブロック図において、CGドライバ15が以下に示すCGドライバ15Aに置き換えられる。また、図15ではワード線リカバリ制御回路53がCGドライバ15Aを有する。その他の構成は図1に示した構成と同様である。図17は、第3実施形態におけるCGドライバの回路図であり、ワード線WLに印加されている電圧VPGMを高速に放電するための回路を示す。図示するように、CGドライバ15Aは、図8に示した回路において論理積回路AD2と放電回路54が追加される。論理積回路AD2には、論理回路14から出力される信号ENBPROとリカバリ電圧検知回路51から出力されるフラグ信号FLGが入力される。論理積回路AD2の出力はスイッチ回路SW2に入力される。放電回路54は、フラグ信号FLGに応じてコントロールゲート線電圧供給線CGに印加されていた書き込み電圧VPGMを電圧VDDに放電する。言い換えると、コントロールゲート線CGに供給されていた書き込み電圧VPGMを放電し、コントロールゲート線CGの電位を電圧VDDにする。プログラム動作中に、電源VEXTがリカバリ電圧Vrcv以上であれば、フラグ信号FLGがHとなり、信号ENBPROもHとなる。このため、書き込み電圧VPGMをコントロールゲート線CGに転送するためのスイッチ回路SW2はイネーブル状態になっている。これにより、nMOSトランジスタ転送回路NT11がオンし、書き込み電圧VPGMはコントロールゲート線CGに転送される。フラグ信号FLGがHのとき、デプレッション形のnMOSトランジスタNT18のゲートはL0Vとなり、pMOSトランジスタPT1のゲートはHとなっている。このため、nMOSトランジスタNT18及びpMOSトランジスタPT1はオフとなり、放電回路54は導通しない。つまり、通常動作ではこの放電回路54は導通しない。なお、デプレッション形のnMOSトランジスタNT18は、閾値電圧が負のnMOSトランジスタである。次に、プログラム動作中に、リカバリ電圧検知回路51が、電源VEXTがリカバリ電圧Vrcvより低くなったことを検知すると、フラグ信号FLGがLになる。フラグ信号FLGがLとなるため、スイッチ回路SW2はディセーブル状態となる。これにより、nMOSトランジスタNT11がオフ状態となり、書き込み電圧VPGMとコントロールゲート線CG間の接続が遮断されるリカバリ動作。これと同時に、フラグ信号FLGLは、pMOSトランジスタPT1のゲートに入力されると共に、インバータIV2を介してnMOSトランジスタNT18のゲートに入力される。これにより、pMOSトランジスタPT1及びnMOSトランジスタNT18がオンし、コントロールゲート線CGの電位は、放電回路54を通して直ちに書き込み電圧VPGMから電圧VDDに放電されるリカバリ動作。このように、電源VEXTの遮断を高速に検知し、検知信号フラグ信号FLGを直接CGドライバ15Aに入力することにより、CGドライバ15Aにおけるリカバリ動作を高速に行う。これにより、誤書き込みのさらなる防止を図る。第3実施形態では、検知信号フラグ信号FLGを論理回路を介さず、ワード線リカバリ制御回路53、すなわちCGドライバ15Aに直接入力するため、第1実施形態と比べて高速にリカバリ動作を行うことができる。その他の構成及び効果は第1実施形態と同様である。[第4実施形態]第1~第3実施形態によれば、電源VEXTの遮断を高速に検知して、高速にリカバリ動作に移行させることにより誤書き込みを抑制できる。但し、電源VEXTの遮断がさらに高速に行われ、電源VEXTがオフ電圧Voffより低くなるのがリカバリ動作の終了時間よりも早い場合には、フラッシュメモリがリセット動作に入ってしまう。このため、論理回路制御回路は全てのリカバリ動作を中止してリセットされるため、誤書き込みが行われる可能性がある。そこで、第4実施形態では、リカバリ電圧Vrcvの検知から実際にリカバリ動作を完了するまでの時間と同等の遅延時間を持つ遅延回路を、オフ電圧Voffを検知する回路と論理回路との間に配置する。この遅延回路により、オフ電圧Voffを検知してから論理回路がリセット動作を開始するまでの時間を遅延させて、リカバリ動作時間を確保する。図18は、第4実施形態における電源検知回路とワード線リカバリ制御回路を含むブロック図である。第4実施形態では、図15に示したブロック図において、オフ電圧検知回路52と論理回路14との間に遅延回路55が配置される。その他の構成は図15に示した構成と同様である。ここで、オフ電圧検知回路52及びリカバリ電圧検知回路51は第1実施形態に記載した高速検知回路を具備する電源検知回路である。リカバリ電圧検知回路51によるリカバリ電圧Vrcv例えば、1.45Vの検知電圧レベルは、オフ電圧検知回路52によるオフ電圧Voff例えば1.40Vの検知電圧レベルより高い。なお、オフ電圧検知回路52及びリカバリ電圧検知回路51の後段にフィルタ回路をそれぞれ配置してもよい。フィルタ回路は、電源のノイズや、オフ電圧検知回路52及びリカバリ電圧検知回路51から出力されるフラグ信号のグリッジなどを処理するための回路である。まず、プログラム動作時に電源VEXTの遮断により電源VEXTが低下し、電源VEXTがリカバリ電圧Vrcvより低くなると、リカバリ電圧検知回路51から出力されるフラグ信号FLGがHからLへ遷移する。フラグ信号FLGLはワード線リカバリ制御回路53に入力される。ワード線リカバリ制御回路53は、フラグ信号FLGに応じてリカバリ動作を行う。すなわち、ワード線リカバリ制御回路53は、フラグ信号FLGに応じてワード線に供給された電圧を放電する。このとき、フラグ信号FLGがHからLへ遷移してから、実際にワード線リカバリ動作が終了するまでの時間を模擬した遅延回路55をフラグ信号FLGOの伝送路に挿入する。すなわち、オフ電圧検知回路52と論理回路14との間に遅延回路55を挿入する。この遅延回路55が遅延時間として模擬するのは、論理段数やRC遅延など、実際にフラグ信号FLGの伝送路に生じるワード線リカバリ制御回路53までの遅延と、リカバリ動作時間を合わせた時間である。前述したように第4実施形態では、フラグ信号FLGOの伝送路に、リカバリ電圧Vrcvの検知からリカバリ動作終了までの時間を模擬した遅延回路55を挿入している。これにより、高速な電源遮断が生じ、フラグ信号FLGがHからLに遷移してからリカバリ動作が終了するまでの時間より、電源VEXTが電圧Vrcvから電圧Voffまで低下する時間のほうが早い場合でも、フラグ信号FLGOがHからLに遷移することで生じる論理回路14のリセット動作は、リカバリ動作が終了してから行われることが保証される。これにより、さらなる高速な電源遮断に対して誤書き込みを抑制することが可能となる。その他の構成及び効果は第1実施形態と同様である。なお前記例では、フラグ信号FLGがワード線リカバリ制御回路53に直接入力され、ワード線リカバリ制御回路53がリカバリ動作を行う例を示したが、フラグ信号FLGが論理回路14に入力され、論理回路14からのリカバリ信号RECによりリカバリ動作を行う場合にも適用可能である。この場合、遅延回路55による遅延時間は、フラグ信号FLGがHからLへ遷移してから、論理回路14からのリカバリ信号RECによりリカバリ動作が終了するまでの時間とすればよい。以上説明したように第1~第4実施形態によれば、電源遮断による誤書き込みを抑制し、信頼性の高い半導体記憶装置を提供することができる。なお、第1~第4実施形態では、参照電圧をすべてVREFにて示したが、参照電圧VREFはそれぞれの回路において必要な所定電圧に設定されているものとする。例えば、書き込み電圧発生回路では、書き込み電圧を設定値に制御するための所定電圧に設定される。さらに、リカバリ電圧検知回路ではリカバリ電圧Vrcvを検出するための所定電圧に設定され、オフ電圧検知回路ではオフ電圧Voffを検出するための所定電圧に設定される。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"