(57)【特許請求の範囲】
【請求項１】
データを書き込み及び読み出しできる不揮発性メモリを内蔵したマイクロコンピュータにおいて、
前記不揮発性メモリの第１のアドレス領域は残余の第２のアドレス領域のデータ書き換え用のプログラム領域に割り当てられ、一方第２のアドレス領域は前記マイクロコンピュータの動作制御の為のプログラム領域に割り当てられており、プログラム命令に基づき、前記マイクロコンピュータを動作させるＣＰＵと、第１のアドレス領域から読み出された第１のプログラム命令に基づき、アドレスデータがセットされる第１のラッチ回路と、
第１のアドレス領域から読み出された第２のプログラム命令に基づき、書き込みデータがセットされる第２のラッチ回路と、
第１のアドレス領域から読み出された第３のプログラム命令に基づき、特定の論理値がセットされるフラグ手段と、
前記フラグ手段が前記論理値にセットされた時に、電源電圧を昇圧する昇圧回路と、
前記昇圧回路によって昇圧された電源電圧が所定の電圧になったことを検出して昇圧検出信号を出力する昇圧検出回路と、
前記昇圧検出信号に応じてリセットが解除されると共に、第１のアドレス領域から読み出された第４のプログラム命令に基づき、特定の論理値がセットされる第３のラッチ回路と、
前記第３のラッチ回路が前記特定の論理値にセットされた時に、前記第１のラッチ回路にセットされたアドレスデータによってアクセスされる第２のアドレス領域に、前記第２のラッチ回路にセットされた書き込みデータを、所定の期間だけ書き込み可能にするメモリ制御手段と、
前記所定の期間、前記ＣＰＵのプログラムカウンタを停止させるための禁止信号を出力するＣＰＵ制御回路と、を備えることを特徴とするマイクロコンピュータ。
【請求項２】
前記第３のラッチ回路の出力及び前記昇圧検出信号の論理積に基づいて作成される選択信号に応じて、前記プログラムカウンタ又は前記第１のラッチ回路の何れか一方のアドレスデータを前記不揮発性メモリに供給する切換回路を備えることを特徴とする請求項１に記載したマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリ（ＥＥＰＲＯＭ）を内蔵するマイクロコンピュータに関する。
【０００２】
【従来の技術】
１チップマイクロコンピュータとは、プログラムメモリ（不揮発性メモリ）を同一チップ上に集積化したものである。前記プログラムメモリには、マスクＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等が使用される。
（１）マスクＲＯＭ内蔵の場合
複数枚のマスクを１度製造してしまえば、量産効率を向上でき且つチップ面積を小さくできる利点がある。しかし、プログラム変更が要求されると、複数枚のマスクを再度製造する必要があり、多くの製造時間を要して前記要求に迅速に対応できない欠点がある。
（２）ＥＰＲＯＭ内蔵の場合
現データを紫外線消去した後に新データを書き込むことで、プログラム変更に迅速に対応できる利点がある。しかし、現データが全て紫外線消去されてしまい、消去不要であった同一データを再度書き込まなければならない欠点がある。
（３）ＥＥＰＲＯＭ内蔵の場合
現データを電気的消去した後に新データを書き込むことで、プログラム変更に迅速に対応できる利点がある。また、現データを部分的に消去できるので、消去不要のデータをそのまま残すことができる。
【０００３】
さて、最近の１チップマイクロコンピュータは、前記各不揮発性メモリの利点を利用し、ＥＥＰＲＯＭ及びマスクＲＯＭを内蔵している。前記ＥＥＰＲＯＭは、１チップマイクロコンピュータの動作制御の為のプログラムメモリとして使用され、前記マスクＲＯＭは、前記ＥＥＰＲＯＭのデータ書き換えの為のプログラムメモリとして使用される。これより、前記１チップマイクロコンピュータは、前記ＥＥＰＲＯＭのデータ書き換えを自分自身で実行でき、汎用性が向上したことになる。
【０００４】
【発明が解決しようとする課題】
前記１チップマイクロコンピュータがフラグの状態に応じて前記ＥＥＰＲＯＭを書き込み状態とする様に設計されている場合を考える。前記１チップマイクロコンピュータが電源投入後から電源が安定するまでの間において、前記フラグは「０」又は「１」の何れか一方に傾く不定状態であるが、前記フラグの値が偶然にも前記ＥＥＰＲＯＭを書き込み状態とする論理値に設定されてしまった場合、前記１チップマイクロコンピュータが不安定状態であるにも関わらず、前記ＥＥＰＲＯＭが書き込み状態となってしまう。これより、前記ＥＥＰＲＯＭに誤データが書き込まれてしまう問題があった。
【０００５】
そこで、本発明は、不揮発性メモリが誤データを書き込んでしまうのを防止できるマイクロコンピュータを提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明は、前記問題点を解決するために鑑みなされたものであり、その特徴とするところは、データを書き込み及び読み出しできる不揮発性メモリを内蔵したマイクロコンピュータにおいて、前記不揮発性メモリの第１のアドレス領域は残余の第２のアドレス領域のデータ書き換え用のプログラム領域に割り当てられ、一方第２のアドレス領域は前記マイクロコンピュータの動作制御の為のプログラム領域に割り当てられており、プログラム命令に基づき、前記マイクロコンピュータを動作させるＣＰＵと、第１のアドレス領域から読み出された第１のプログラム命令に基づき、アドレスデータがセットされる第１のラッチ回路と、第１のアドレス領域から読み出された第２のプログラム命令に基づき、書き込みデータがセットされる第２のラッチ回路と、第１のアドレス領域から読み出された第３のプログラム命令に基づき、特定の論理値がセットされるフラグ手段と、前記フラグ手段が前記論理値にセットされた時に、電源電圧を昇圧する昇圧回路と、前記昇圧回路によって昇圧された電源電圧が所定の電圧になったことを検出して昇圧検出信号を出力する昇圧検出回路と、前記昇圧検出信号に応じてリセットが解除されると共に、第１のアドレス領域から読み出された第４のプログラム命令に基づき、特定の論理値がセットされる第３のラッチ回路と、前記第３のラッチ回路が前記特定の論理値にセットされた時に、前記第１のラッチ回路にセットされたアドレスデータによってアクセスされる第２のアドレス領域に、前記第２のラッチ回路にセットされた書き込みデータを、所定の期間だけ書き込み可能にするメモリ制御手段と、前記所定の期間、前記ＣＰＵのプログラムカウンタを停止させるための禁止信号を出力するＣＰＵ制御回路と、を備え、前記メモリに誤データを書き込むのを防止した点である。
【０００７】
【発明の実施の形態】
本発明の詳細を図面に従って具体的に説明する。
図１は本発明のマイクロコンピュータを示す回路ブロック図であり、１チップ上に集積化される。図２は図１の動作を説明する為のタイムチャートである。
図１において、（１）はＥＥＰＲＯＭである。ＥＥＰＲＯＭ（１）は、データを繰り返し書き込み及び読み出しできると共に書き込み済データを電気的に消去できる不揮発性メモリである。ＥＥＰＲＯＭ（１）のアドレス領域Ａは、残余のアドレス領域Ｂのデータ書き換え用のプログラム領域に割り当てられ、アドレス領域Ｂは、１チップマイクロコンピュータの動作制御等の為のプログラム領域に割り当てられる。ＥＥＰＲＯＭ（１）は、アドレスデータが印加される端子ＡＤ、書き込みデータが印加される端子ＤＩＮ、読み出しデータが出力される端子ＤＯＵＴ、書き込みモード設定信号が印加される端子ＷＥを有している。尚、ＥＥＰＲＯＭ（１）のアドレス領域Ａのプログラムは、外部ＰＲＯＭライタ（図示せず）からＥＥＰＲＯＭ（１）にデータを供給することにより容易に変更でき、プログラム変更に迅速に対応できる。
【０００８】
（２）はＣＰＵであり、ＥＥＰＲＯＭ（１）の端子ＤＯＵＴからの読み出しデータに基づいて動作するものである。ＣＰＵ（２）は、プログラムカウンタ（３）、インストラクションレジスタ、インストラクションデコーダ、演算論理ユニット等、論理動作を実行するのに必要な構成を含むものとする。
（４）はラッチ回路であり、ＥＥＰＲＯＭ（１）のアドレスデータのビット数ｍと等しい個数だけ設けられる。ラッチ回路（４）のＬ端子はアドレスバス（５）ｍ本を介してＣＰＵ（２）のアドレス端子と並列接続され、Ｃ端子はＣＰＵ（２）のクロック端子と共通接続される。即ち、ラッチ回路（４）は、クロックＣＫ０に同期してアドレスデータをラッチする。
【０００９】
（６）はラッチ回路であり、ＥＥＰＲＯＭ（１）の１ワードのビット数ｎと等しい個数だけ設けられる。ラッチ回路（６）のＬ端子はデータバス（７）ｎ本を介してＣＰＵ（２）のデータ端子と並列接続され、Ｃ端子はＣＰＵ（２）の他のクロック端子と共通接続され、Ｑ端子はＥＥＰＲＯＭ（１）の端子ＤＩＮと接続される。即ち、ラッチ回路（６）は、クロックＣＫ１に同期して書き込みデータをラッチすると共にＥＥＰＲＯＭ（１）に供給する。
【００１０】
ＡＮＤゲート（８）（９）及びＯＲゲート（１０）は切換回路を構成する。該切換回路は、ラッチ回路（４）と等しい個数ｍだけ設けられる。ＡＮＤゲート（８）の一方の入力端子はプログラムカウンタ（３）の出力端子と接続され、ＡＮＤゲート（９）の一方の入力端子はラッチ回路（４）のＱ端子と接続され、ＯＲゲート（１０）の出力端子はＥＥＰＲＯＭ（１）の端子ＡＤと接続される。即ち、切換回路は、後述する選択信号ＳＥＬＥＣＴに応じて、プログラムカウンタ（３）又はラッチ回路（４）の何れか一方のアドレスデータをＥＥＰＲＯＭ（１）に供給する。
【００１１】
（１１）はクロックジェネレータであり、ＣＰＵ（２）を動作させる為のクロックＣＫを発生するものである。ＣＰＵ（２）は、クロックＣＫを基にシステムクロックを作成する。
（１２）はフラグであり、ＥＥＰＲＯＭ（１）を書き込みモードに設定する時、ＣＰＵ（２）の指示に基づき論理値「１」がセットされるものである。フラグ（１２）の値が、後述する昇圧回路に対して昇圧を指示する信号ＶＵＰとなる。（１３）は昇圧回路であり、信号ＶＵＰが論理値「１」に変化した状態を受けて、前記１チップマイクロコンピュータの電源ＶＤＤを＋αボルト昇圧させるものである。（１４）は昇圧検出回路（請求項１に言う検出手段）であり、昇圧回路（１３）の出力が（ＶＤＤ＋α）ボルトまで上昇したことを検出するものである。昇圧検出回路（１４）は、昇圧回路（１３）の出力が（ＶＤＤ＋α）ボルト未満の時、論理値「０」を出力し、昇圧回路（１３）の出力が（ＶＤＤ＋α）ボルト以上の時、論理値「１」を出力する。検出回路（１４）の出力が信号ＶＵＰＤＥＴとなる。尚、昇圧検出回路（１４）は、電源ＶＤＤの状態検出に設けられるが、電源ＶＤＤの状態を直接検出する術がない為、電源ＶＤＤに比例して変化する昇圧電圧の状態を検出し、電源ＶＤＤの状態検出に代えている。
【００１２】
（１５）はラッチ回路であり、Ｒ端子はインバータ（１６）を介して昇圧検出回路（１４）の出力端子と接続される。ラッチ回路（１５）は、昇圧検出回路（１４）が（ＶＤＤ＋α）ボルトを検出した時にリセット解除される。その後、ラッチ回路（１５）は、ＣＰＵ（２）の指示に基づき、クロックＣＫ３に同期して論理値「１」をラッチする。ラッチ回路（１５）のＱ端子出力が信号ＲＥＱとなる。
【００１３】
（１７）はラッチ検出回路であり、ラッチ回路（１５）のＱ端子の信号ＲＥＱが論理値「１」に変化した時、信号ＲＥＱの立ち上がり変化に同期してスタートパルスＳＴＡＲＴを出力するものである。ラッチ検出回路（１７）は、例えば、信号ＲＥＱが論理値「０」の時にクリアされるワンショットマルチ等で構成される。
【００１４】
（１８）はメモリ制御回路であり、ＥＥＰＲＯＭ（１）を書き込み又は読み出しモードに設定する為のモード制御信号ＭＯＤＥを出力するものである。メモリ制御回路（１８）は、スタートパルスＳＴＡＲＴの立ち上がりを検出し、この時点から時間Ｔ１を経過した後に時間Ｔ２だけローレベルとなるモード制御信号ＭＯＤＥを出力する。モード制御信号ＭＯＤＥは、ＥＥＰＲＯＭ（１）の端子ＷＥに供給される。即ち、ＥＥＰＲＯＭ（１）は、モード制御信号ＭＯＤＥがローレベルの期間だけ、アドレス領域のデータを書き換える書き込みモードに設定される。尚、時間Ｔ２は、ＥＥＰＲＯＭ（１）が指定されたアドレス領域Ｂにデータを書き込むのに必要十分な時間に設定されている。メモリ制御回路（１８）は、時間Ｔ２経過後のモード制御信号ＭＯＤＥの立ち上がりを検出し、エンドパルスＥＮＤを出力する。
【００１５】
（１９）はＣＰＵ制御回路である。ＥＥＰＲＯＭ（１）の１命令の実行時間はμｓｅｃ単位であるが、ＥＥＰＲＯＭ（１）のデータ書き込み時間はｍｓｅｃ単位と非常に長い。そこで、ＥＥＰＲＯＭ（１）が書き込みモードに設定される時間Ｔ２は、ＣＰＵ（２）がＥＥＰＲＯＭ（１）の端子ＤＯＵＴの不定出力の影響を受けるのを禁止し、プログラムカウンタ（３）の値を現状のまま停止させる必要がある。ＣＰＵ制御回路（１９）は、スタートパルスＳＴＡＲＴの立ち上がりからエンドパルスＥＮＤの立ち上がりまでの時間（Ｔ１＋Ｔ２）だけ、禁止信号ＩＮＨを出力する。ＣＰＵ（２）は、禁止信号ＩＮＨを検出し、例えば前記システムクロックを停止させる等して前記禁止動作を行う。
【００１６】
ＡＮＤゲート（２０）は、信号ＶＵＰＤＥＴ及び信号ＲＥＱの論理積演算を行い、選択信号ＳＥＬＥＣＴを出力するものである。選択信号ＳＥＬＥＣＴは、信号ＶＵＰＤＥＴが論理値「１」となり且つ信号ＲＥＱが論理値「１」となった時点で、ローレベルに立ち下がる。フラグ（１２）は、エンドパルスＥＮＤの立ち上がりによりリセットされる。これに伴い、昇圧回路（１３）が昇圧動作を停止する為、信号ＶＵＰは論理値「０」に立ち下がり、ラッチ回路（１５）がリセットされて信号ＲＥＱも論理値「０」に立ち下がる。従って、選択信号ＳＥＬＥＣＴはハイレベルに立ち上がる。前記切換回路は、選択信号ＳＥＬＥＣＴがローレベルの期間だけ、ラッチ回路（４）にラッチされたアドレスデータをＥＥＰＲＯＭ（１）の端子ＡＤに供給する。
【００１７】
以下、図１の動作を図２のタイムチャートを基に説明する。尚、初期状態では、モード制御信号ＭＯＤＥ及び選択信号ＳＥＬＥＣＴはハイレベルであり、ＥＥＰＲＯＭ（１）は、プログラムカウンタ（３）でアドレス指定される読み出しモードに設定されているものとする。また、プログラム命令Ｘはアドレスデータをラッチ回路（４）にラッチさせる命令、プログラム命令Ｘ＋１は書き込みデータをラッチ回路（６）にラッチさせる命令、プログラム命令Ｘ＋２はフラグ（１２）に論理値「１」をセットする命令、プログラム命令Ｘ＋３はラッチ回路（１５）に論理値「１」をセットする命令である。
【００１８】
ＥＥＰＲＯＭ（１）の端子ＤＯＵＴからプログラム命令Ｘが読み出されると、該プログラム命令ＸがＣＰＵ（２）で解読され、アドレスデータがクロックＣＫ１に同期してラッチ回路（４）にラッチされる。
プログラムカウンタ（３）が＋１インクリメントされ、ＥＥＰＲＯＭ（１）の端子ＤＯＵＴからプログラム命令Ｘ＋１が読み出されると、該プログラム命令Ｘ＋１がＣＰＵ（２）で解読され、書き込みデータがクロックＣＫ２に同期してラッチ回路（６）にラッチされる。
【００１９】
プログラムカウンタ（３）が＋１インクリメントされ、ＥＥＰＲＯＭ（１）の端子ＤＯＵＴからプログラム命令Ｘ＋２が読み出されると、該プログラム命令Ｘ＋２はＣＰＵ（２）で解読される。すると、フラグ（１２）がセットされ、昇圧回路（１３）は論理値「１」の信号ＶＵＰを受けて昇圧動作を開始する。昇圧検出回路（１４）は、昇圧電圧が（ＶＤＤ＋α）ボルトまで上昇した時点で論理値「１」の信号ＶＵＰＤＥＴを出力する。この時、ラッチ回路（１５）はリセット解除される。
【００２０】
プログラムカウンタ（３）が＋１インクリメントされ、ＥＥＰＲＯＭ（１）の端子ＤＯＵＴからプログラム命令Ｘ＋３が読み出されると、該プログラム命令Ｘ＋３はＣＰＵ（２）で解読される。すると、ラッチ回路（１５）のＱ端子の信号ＲＥＱが論理値「１」に変化し、ラッチ検出回路（１７）はスタートパルスＳＴＡＲＴを出力する。メモリ制御回路（１８）は、スタートパルスＳＴＡＲＴを受けてモード制御信号ＭＯＤＥ及びエンドパルスＥＮＤを出力する。ＣＰＵ制御回路（１９）は、スタートパルスＳＴＡＲＴ及びエンドパルスＥＮＤを受けて禁止信号ＩＮＨを出力する。従って、選択信号ＳＥＬＥＣＴは、時間（Ｔ１＋Ｔ２）だけローレベルとなる。
【００２１】
以上より、ＥＥＰＲＯＭ（１）のアドレス領域Ｂのデータを書き換える期間は禁止信号ＩＮＨが発生し、これより、ＣＰＵ（２）は、ＥＥＰＲＯＭ（１）の端子ＤＯＵＴの不定出力の影響を無視でき、且つ、プログラムカウンタ（３）の値をスタートパルスＳＴＡＲＴが発生した時のまま保持できる。この結果、ＥＥＰＲＯＭ（１）のデータ書き換え時におけるＣＰＵ（２）の誤動作を防止できる。
【００２２】
また、前記１チップマイクロコンピュータが電源ＶＤＤの投入後から電源ＶＤＤが安定するまでの間において、フラグ（１２）とラッチ回路（１５）とが外部要因等を受けて論理値「１」となった場合でも、昇圧電圧が（ＶＤＤ＋α）ボルトまで上昇するまでの間、信号ＶＵＰＤＥＴは論理値「０」を出力する。従って、ラッチ回路（１５）がリセットされて信号ＲＥＱは論理値「０」となり、ＥＥＰＲＯＭ（１）が書き込みモードに設定されず、ＥＥＰＲＯＭ（１）のアドレス領域Ｂに誤書き込みが行われる様な不都合を解消できる。
【００２３】
また、ＥＥＰＲＯＭ（１）のアドレス領域Ｂのデータ書き換え中に、電源ＶＤＤが瞬停した場合、信号ＶＵＰが論理値「０」に変化し、ラッチ回路（１５）はリセットされる。選択信号ＳＥＬＥＣＴは、信号ＲＥＱが論理値「０」に変化した時点で論理値「１」に変化する。従って、ＥＥＰＲＯＭ（１）のアドレス領域Ｂのデータ書き換えが中止され、電源ＶＤＤの瞬停に伴い、ＥＥＰＲＯＭ（１）のアドレス領域Ｂに誤書き込みが行われる不都合を解消できる。
【００２４】
【発明の効果】
本発明によれば、不揮発性メモリの残余のアドレス領域のデータ書き換え時におけるＣＰＵの誤動作を確実に防止できる。また、不揮発性メモリの残余のアドレス領域の誤書き込みも防止できる、等の利点が得られる。
【図面の簡単な説明】
【図１】本発明のマイクロコンピュータを示す回路ブロック図である。
【図２】図１の動作を説明する為のタイムチャートである。
【符号の説明】
（１）  ＥＥＰＲＯＭ
（２）  ＣＰＵ
（３）  プログラムカウンタ
（１２）  フラグ
（１４）  昇圧検出回路
（１５）  ラッチ回路
（１８）  メモリ制御回路
（１９）  ＣＰＵ制御回路
【図１】
0003679496.tif 000002
【図２】
0003679496.tif 000003