"電源電圧が正常範囲から外れた場合にリセット信号を出力する電圧検出器と、各々がデータを不揮発的に記憶する複数のメモリセルを含むメモリアレイと、イレーズコマンドまたはプログラムコマンドに応答して、前記電圧検出器の応答時間以上の予め定められた時間だけ経過した後に前記データのイレーズまたは前記データのプログラムを実行し、前記リセット信号に応答して初期状態にリセットされる制御部とを備える、半導体装置。前記制御部は、前記イレーズコマンドまたは前記プログラムコマンドに応答して計時を開始し、計時開始から前記予め定められた時間が経過したことに応じて計時を終了するタイマを含み、前記タイマの計時の終了後に前記データのイレーズまたは前記データのプログラムを実行する、請求項1に記載の半導体装置。前記予め定められた時間は変更可能になっている、請求項1または請求項2に記載の半導体装置。さらに、第1および第2のモードのうちのいずれか1つのモードが選択可能になっており、前記制御部は、前記第1のモードが選択された場合は、前記イレーズコマンドまたは前記プログラムコマンドに応答して前記予め定められた時間が経過した後に前記データのイレーズまたは前記データのプログラムを実行し、前記第2のモードが選択された場合は、前記イレーズコマンドまたは前記プログラムコマンドに応答して前記予め定められた時間の経過を待たずに前記データのイレーズまたは前記データのプログラムを実行する、請求項1から請求項3までのいずれかに記載の半導体装置。前記制御部は、前記メモリアレイの記憶内容の変更を伴わないコマンドを受けた場合は、前記コマンドに応答して前記予め定められた時間の経過を待たずに前記コマンドを実行する、請求項1から請求項3までのいずれかに記載の半導体装置。前記制御部は、複数の前記イレーズコマンドまたは複数の前記プログラムコマンドを連続的に受けた場合は、最初の前記イレーズコマンドまたは前記プログラムコマンドを受けてから前記予め定められた時間が経過した後に前記データのイレーズまたは前記データのプログラムを行ない、2つ目以降の前記イレーズコマンドまたは前記プログラムコマンドに応答して前記予め定められた時間の経過を待たずに前記データのイレーズまたは前記データのプログラムを行なう、請求項1から請求項3までのいずれかに記載の半導体装置。これらの従来技術はいずれも、電圧検出器によって電圧の異常が検出された場合に、不揮発性半導体メモリのイレーズ動作やプログラム動作を禁止または保留するものであるが、昨今のマイクロコンピュータに求められる性能の1つである超低消費電力を実現することはできない。すなわち、電圧検出器の消費電流を小さくすると応答速度が遅くなり、電圧の異常を検出する前に誤イレーズや誤プログラムが実行されてしまう。逆に、電圧検出器の消費電流を大きくして応答速度を速くすると、誤書換を防止できても消費電力が増大してしまう。それゆえに、この発明の主たる目的は、データの誤書換を防止することが可能な低消費電力の半導体装置を提供することである。この発明に係る半導体装置は、電源電圧が正常範囲から外れた場合にリセット信号を出力する電圧検出器と、各々がデータを不揮発的に記憶する複数のメモリセルを含むメモリアレイと、イレーズコマンドまたはプログラムコマンドに応答して、電圧検出器の応答時間以上の予め定められた時間だけ経過した後にデータのイレーズまたはデータのプログラムを実行し、リセット信号に応答して初期状態にリセットされる制御部とを備えたものである。この発明に係る半導体装置では、イレーズコマンドまたはプログラムコマンドに応答して、電圧検出器の応答時間以上の予め定められた時間だけ経過した後にデータのイレーズまたはデータのプログラムを実行し、リセット信号に応答して初期状態にリセットされる制御部が設けられる。したがって、電圧検出器の応答時間が経過した後にデータのイレーズまたはデータのプログラムを行なうので、電圧検出器の消費電流を減らしてもデータの誤書換が生じることがない。よって、データの誤書換を防止することが可能な低消費電力の半導体装置を実現することができる。[実施の形態1]本発明の実施の形態1によるマイクロコンピュータ1は、図1に示すように、電圧検出器2、CPU3、および不揮発性半導体メモリ4を備える。電圧検出器2は、外部電源電圧VCCが正常範囲から外れたことに応じて、マイクロコンピュータ1全体をリセットさせるためのリセット信号REを活性化レベルのLレベルにする。電圧検出器2は、外部電源電圧VCCが正常範囲から外れてからリセット信号REを活性化レベルのLレベルにするまでに所定の応答時間TRを要する。CPU3は、不揮発性半導体メモリ4に種々のコマンドを与える。不揮発性半導体メモリ4は、メモリアレイ5、チャージポンプ回路6、および制御部7を含む。メモリアレイ5は、複数行複数列に配置された複数のメモリセル図示せずを含む。各メモリセルは、データを不揮発的に記憶する。各メモリセルには、固有のアドレスが割り当てられている。チャージポンプ回路6は、制御部7によって制御され、データのイレーズやプログラムに必要な電圧を生成してメモリアレイ5に与える。制御部7は、図2に示すように、タイマ8およびシーケンサ9を含む。タイマ8は、シーケンサ9からの起動信号に応答して計時を開始し、計時を開始してから予め定められた保留時間TSの経過後に計時を終了してアンダーフロー信号を出力する。保留時間TSは、電圧検出器2の応答時間TR以上の時間に設定されている。タイマ8のビット数やカウント周期を調整することにより、保留時間TSが調整される。シーケンサ9は、CPU3からのコマンドに応答してタイマ8に起動信号を与え、タイマ8からのアンダーフロー信号に応答してコマンドの内容イレーズ、プログラムなどを実行する。具体的には、シーケンサ9は、CPU3からのイレーズコマンドを受けてから保留時間TSの経過後に、メモリアレイ5のうちの選択されたメモリセルのデータを消去する。また、シーケンサ9は、CPU3からプログラムコマンドを受けてから保留時間TSの経過後に、メモリアレイ5のうちの選択されたメモリセルにデータをプログラムする。また、シーケンサ9は、コマンドを受けた場合であっても、電圧検出器2からのリセット信号REが活性化レベルのLレベルにされた場合は初期状態にリセットされる。初期状態にリセットされたシーケンサ9は、リセットされる前に受けたコマンドを実行しない。図3a~dは、従来のマイクロコンピュータと本実施の形態1のマイクロコンピュータ1の動作を示すタイムチャートである。ここでは図3aに示すように、外部電源電圧VCCが変動して時刻t0において所定のしきい値電圧VTHよりも低下したものとする。図3aの実線は外部電源電圧VCCのレベルが一旦低下した後に回復した場合を示し、図3aの点線は外部電源電圧VCCのレベルが低下して安定した状態を示している。ここでは、外部電源電圧VCCが安定した状態では、マイクロコンピュータ1は正常に動作するものとする。時刻t0において外部電源電圧VCCがしきい値電圧VTHよりも低下すると、図3bに示すように、電圧検出器2によってリセット信号REが非活性化レベルのHレベルから活性化レベルのLレベルに立ち下げられる。ただし、リセット信号REが実際にHレベルからLレベルに立ち下げられるのは、時刻t0から電圧検出器2の応答時間TRが経過した後の時刻t4である。リセット信号REがLレベルに立ち下げられると、マイクロコンピュータ1がリセットされる。また、時刻t0において外部電源電圧VCCがしきい値電圧VTHよりも低下してマイクロコンピュータ1が暴走し、時刻t0から所定時間TD経過後の時刻t1においてシーケンサ9の動作がプログラムルーチンに到達したとする。この場合、シーケンサ9は、時刻t1にCPU3からのプログラムコマンドを受けた場合と同様に動作する。従来はタイマ8が無かったので、図3cに示すように、シーケンサ9は時刻t1から時刻t3までの期間TPRにデータのプログラムを実行する。ただし、プログラム期間TPRのうちの時刻t1から時刻t2までの期間TCPはチャージポンプ回路6が運転される期間であり、この期間TCPは未だデータのプログラムは行なわれない。したがって従来は、時刻t2から時刻t4の期間TERRで誤プログラムが行なわれる恐れがあった。時刻t4以降はリセット信号REによってシーケンサ9がリセットされるので、誤プログラムが開始される恐れはない。この場合、電圧検出器2の消費電流を大きくして応答時間TRを短縮し、時刻t0から時刻t2の間でリセット信号REがHレベルからLレベルに立ち下げられるようにすれば、シーケンサ9を初期状態にリセットして誤プログラムが行なわれるのを防止することができる。しかし、それではマイクロコンピュータ1の消費電力が増大してしまう。これに対して本実施の形態1ではタイマ8が設けられているので、図3dに示すように、シーケンサ9はプログラムコマンドを受けてから所定の保留時間TSが経過し、かつリセット信号REによってリセットされていない場合にデータのプログラムを実行する。したがって、マイクロコンピュータ1が暴走したために発生したプログラムコマンドがシーケンサ9に与えられた場合、シーケンサ9は時刻t4でリセットされるので、データのプログラムは実行されない。マイクロコンピュータ1が暴走したために発生したイレーズコマンドをシーケンサ9が受けた場合も、同様であり、データのイレーズは実行されない。よって、マイクロコンピュータ1の暴走によるデータの誤書換を防止することができる。以上のように、本実施の形態1では、イレーズやプログラムのコマンドを受け付けた場合、タイマ8を起動させて一定期間TSだけイレーズやプログラムの実行を保留する。また、電圧検出器2は、外部電源電圧VCCの低下を検出した場合、応答時間TRTR≦TS経過後にマイクロコンピュータ1をリセットする。したがって、外部電源電圧VCCの低下を契機とした暴走が引き起こしたイレーズやプログラムが実行される前にマイクロコンピュータ1がリセットされる。よって、誤イレーズや誤プログラムを抑止することができる。また、外部電源電圧VCCの低下が検出されなかった場合は、コマンドは暴走の結果によるものでは無く、信頼できるソフトウェアによる意図的なものとして、保留時間TSの経過後にイレーズやプログラムが実行される。この場合、CPU3側からは、イレーズやプログラムの実行時間が単に延びたように見える。このようにすることで、電圧検出器2に必要な消費電流を不揮発性半導体メモリ4のコマンドの実行遅延時間に合わせて削減することが可能となり、昨今の重要な要求スペックである低消費電力を実現しつつ、誤イレーズや誤プログラムを防止することができる。なお、この実施の形態1では、コマンドの種類によらずにコマンドの実行を保留したが、イレーズコマンドやプログラムコマンドのようにメモリアレイ5の記憶内容の変更を伴うコマンドを受けた場合だけコマンドの実行を保留し、メモリアレイ5の記憶内容の変更を伴わないコマンドを受けた場合は直ぐにコマンドを実行してもよい。メモリアレイ5の記憶内容の変更を伴わないコマンドとしては、たとえばステータスリードなどがある。これにより、不要なコマンド処理時間の増大を抑えることができる。[実施の形態2]実施の形態1では、イレーズやプログラムのコマンドを受け付けた場合、常に一定期間TSだけイレーズやプログラムの実行を保留した。これにより、誤イレーズや誤プログラムを防止できる反面、イレーズやプログラムに要する時間が保留時間TS分だけ延びてしまい、イレーズやプログラムの遅いマイクロコンピュータ1となる。そこで、本実施の形態2では、マイクロコンピュータ1の用途に応じてコマンドの実行を遅延をさせるかどうかを選択できるようにする。たとえば、書換速度より信頼性を重視する用途や、外来ノイズの多い環境での使用を想定する用途、マイクロコンピュータの製造工程中のバーンイン工程での動作させる用途には、コマンドの実行を遅延させる。一方、安定した電源電圧VCCで動作させることが可能な用途では、コマンドの実行を遅延させないこととし、イレーズ、プログラムのレスポンスを最大にすることができる。具体的には図4に示すように、制御部7内にレジスタ10が設けられる。コマンドの実行を遅延させる第1のモードでは、レジスタ10にHレベルの信号が格納され、コマンドの実行を遅延させない第2のモードでは、レジスタ10にLレベルの信号が格納される。レジスタ10の信号は、書換可能になっている。シーケンサ9は、レジスタ10に格納された信号のレベルに基いて、第1のモードまたは第2のモードを実行する。この実施の形態2では、マイクロコンピュータ1の用途に応じてコマンドの実行を遅延をさせるかどうかを選択することができる。なお、レジスタ10の代わりにモード選択用の外部端子を設けてもよい。たとえば、外部端子に外部電源電圧VCCが印加された場合は第1のモードが選択され、外部端子に接地電圧VSSが印加された場合は第2のモードが選択される。シーケンサ9は、外部端子に印加された電圧に基いて、第1のモードまたは第2のモードを実行する。[実施の形態3]実施の形態1で説明したように、電圧検出器2は、外部電源電圧VCCが所定のしきい値電圧VTHよりも低下した場合、リセット信号REをHレベルからLレベルに立ち下げる。リセット信号REが実際にLレベルに立ち下げられるのは、外部電源電圧VCCがしきい値電圧VTHよりも低下した時刻から所定の応答時間TRが経過した後である。シーケンサ9は、コマンドを受けてから応答時間TR以上の保留時間TSが経過するまでコマンドの実行を保留する。ここで、電圧検出器2の応答時間TRは、図5abに示すように、しきい値電圧VTHのレベルに応じて変化する。たとえば、GND<VTH1<VTH2<VCCとすると、TR2≠TR1となる。しきい値電圧がVTH1,VTH2である場合のリセット信号をそれぞれRE1,RE2とする。外部電源電圧VCCが低下してVCC<VTH2となった場合、その時刻t0から応答時間TR2の経過後の時刻t2にリセット信号RE2がHレベルからLレベルに立ち下げられる。また、外部電源電圧VCCがさらに低下してVCC<VTH1となった場合、その時刻t1から応答時間TR1の経過後の時刻t3にリセット信号RE1がHレベルからLレベルに立ち下げられる。このとき、TR1≠TR2となる。実施の形態1では、電圧検出器2の応答時間TRは一定であるとして保留時間TSを設定した。しかし、実際には、応答時間TRはしきい値電圧VTHに応じて変化するので、応答時間TRに応じて保留時間TSを変えれば、無駄な保留時間を削減できる。そこで、本実施の形態3では、保留時間TSは変更可能にされる。具体的には図6に示すように、制御部7内にレジスタ11が設けられる。レジスタ11には、ダウンカウント方式のタイマ8のリロード値が格納される。したがって、リロード値を変更することによって保留時間TSを変更することができる。電圧検出器2の応答時間TRが長い場合は、大きなリロード値をレジスタ11に格納してコマンドの保留時間TSを長くする。逆に、電圧検出器2の応答時間TRが短い場合は、小さなリロード値をレジスタ11に格納してコマンドの保留時間TSを短くする。したがって、コマンドの保留時間TSを必要最小限の時間に設定することができ、無駄な保留時間を削減することができる。[実施の形態4]実施の形態1では、図7aに示すように、複数のコマンドCが連続的に発行される場合でも、コマンドCが発行される毎に保留時間TSを設けた。しかし、一度正当なコマンドCが発行された場合、その後に続くコマンドCの発行も正当である可能性が高い。そこで、本実施の形態4では、図7bに示すように、複数のコマンドCが連続的に発行される場合、最初のコマンドCが発行されたときは保留時間TSの経過後にコマンドCを実行し、2つ目以降のコマンドCが発行されたときは保留時間TSを設けずにコマンドCを直ぐに実行する。これにより、無駄な保留時間TSを削減することができる。具体的には図8に示すように、制御部7内にタイマ12が追加される。タイマ8は、実施の形態1と同様に使用される。タイマ12は、前回のコマンドCの完了から次のコマンドCの発行までの時間間隔を計るために用いられる。最初のコマンドCが発行されたとき、タイマ12は停止しており、シーケンサ9はタイマ8を用いて保留時間TSを挿入する。タイマ12は、コマンドCの終了の度に起動される。ただし、コマンドCの終了時にタイマ12がカウント中である場合は、タイマ12にリロード値が与えられる。タイマ12がカウント中であるときに次のコマンドCが発行された場合、タイマ8による保留時間TSの挿入は行なわれない。一方、タイマ12がカウントを停止した後に次のコマンドCが発行された場合は、タイマ8による保留時間TSの挿入を行なう。以後、同様の動作を繰り返す。この実施の形態4では、複数のコマンドCが連続的に発行される場合、最初のコマンドCが発行されたときだけ保留時間TSを挿入し、2つ目以降のコマンドが発行された場合は保留時間TSを挿入しないので、コマンド処理性能の低下を初回のコマンドCに対する保留時間TSのみに抑えることができる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"