(57)【特許請求の範囲】
【請求項１】
第１半導体処理装置と、第２半導体処理装置とを有し、
前記第１半導体処理装置は、電気的に消去及び書込みが可能な不揮発性メモリと、前記不揮発性メモリとは別の記憶手段と、前記不揮発性メモリと前記記憶手段とにアクセス可能な中央処理装置と、割り込み端子とを有し、
前記第２半導体処理装置は前記第１半導体処理装置の割り込み端子に接続され、前記第１半導体処理装置へ割り込み信号を出力可能に構成され、
前記第１半導体処理装置は、前記中央処理装置により前記不揮発性メモリの消去及び書込みを行うオンボード書込みモードを有し、
前記第１半導体処理装置は、前記不揮発性メモリへのデータ書き込み動作開始前に、前記割り込み信号の入力に応じた処理のベクタアドレスを前記記憶手段の所定の記憶領域へ格納し、
前記オンボード書込みモードにおける前記不揮発性メモリへのデータ書込み動作途中に前記第２半導体処理装置からの割り込み信号の入力を受けた場合、前記割り込み信号の入力に応じた処理のベクタアドレス格納領域へのアクセスを前記不揮発性メモリの記憶領域から前記記憶手段の所定の記憶領域へ変更する制御部を前記第１半導体処理装置に有するデータ処理システム。
【請求項２】
請求項１記載のデータ処理システムにおいて、
前記オンボード書込みモードは、前記不揮発性メモリの全面を消去した後にデータの書込みを行うブートモードと、前記不揮発性メモリの一部を消去した後にデータの書込みを可能にするユーザブートモードとを含み、前記ブートモードと前記ユーザブートモードとを選択的に設定可能なモード設定手段を有するデータ処理システム。
【請求項３】
請求項２記載のデータ処理システムにおいて、
前記ブートモードの設定に応答して実行開始されるブートプログラムの格納領域と、前記ブートプログラムの実行開始により外部から前記不揮発性メモリの消去及び書込み制御プログラムを入力するインタフェース回路と、前記インタフェース回路から入力した消去及び書込み制御プログラムを格納するＲＡＭとを有し、前記中央処理装置は前記ＲＡＭに格納された消去及び書込み制御プログラムを実行して前記不揮発性メモリの消去及びデータの書込みを行うデータ処理システム。
【請求項４】
請求項３記載のデータ処理システムにおいて、
前記記憶手段は、前記ＲＡＭの所定の領域に割り当てられているデータ処理システム。
【請求項５】
請求項１記載のデータ処理システムにおいて、
前記オンボード書込みモードにおける不揮発性メモリへのデータ書き込み動作途中に前記第２半導体処理装置から割り込み信号の入力を受けた場合、前記中央処理装置は、前記不揮発性メモリへのデータ書き込み動作を中止する制御を行うデータ処理システム。
【請求項６】
第１半導体処理装置と、他の第２半導体処理装置とが基板に実装され、
前記半導体処理装置は、電気的に消去及び書込みが可能な不揮発性メモリと、ＲＡＭと、前記不揮発性メモリにアクセス可能な中央処理装置と、制御手段と、割り込み端子とを有し、
前記第１半導体処理装置は、前記中央処理装置の制御において、前記不揮発性メモリの消去及び書込みを可能とする不揮発性メモリ書込みモードを有して成り、前記不揮発性メモリ書込みモードにおける不揮発性メモリへのデータ書き込み動作途中に前記割り込み端子を介して前記第１半導体処理装置が前記第２半導体処理装置から所定の割り込み信号の入力を受けた場合、前記中央処理装置は、前記所定の割り込み信号に応じた割り込み処理のベクタアドレスを前記ＲＡＭから取得するとともに、前記制御手段は、前記不揮発性メモリへのデータの書込みを中断する制御が可能に構成されたデータ処理システムの動作方法であって、
前記第１半導体処理装置と他の第２半導体処理装置とが前記基板に実装された後において、前記割り込み信号を前記割り込み端子に受ける前に、前記ＲＡＭに前記ベクタアドレスと、前記不揮発性メモリへの書込み制御用プログラムとを格納し、前記不揮発性メモリ書込みモードにおいて前記不揮発性メモリへ格納するプログラムデータの書込みを前記書込み制御用プログラムを用いて行い、
前記割り込み信号を前記割り込み端子に受けた場合、前記中央処理装置は前記ＲＡＭから前記割り込み信号に応じた前記ベクタアドレスを取得し、前記制御手段は前記割り込み信号に応じて前記不揮発性メモリへのデータ書き込みを中断する制御を行うデータ処理システムの動作方法。
【請求項７】
請求項６記載のデータ処理システムの動作方法において、
前記不揮発性メモリ書込みモードにおいて、前記書込み制御プログラムを外部から前記ＲＡＭへ格納した後、前記中央処理装置は前記ＲＡＭから前記書込み制御プログラムをフェッチして前記不揮発性メモリの消去及びデータの書込み制御を行うデータ処理システムの動作方法。
【請求項８】
請求項７記載のデータ処理システムの動作方法において、
前記半導体処理装置は更にアドレス変換手段を有し、
前記不揮発性メモリ書込みモードにおいて、前記割り込み端子に所定の信号の入力を受けた場合に、当該割り込み端子に受けた所定の信号に応じた処理へ分岐するためのアドレスを、前記アドレス変換手段を用いて前記不揮発性メモリのアドレス領域から前記ＲＡＭのアドレス領域へ変更するデータ処理システムの動作方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置とされるシングルチップ・マイクロコンピュータに内蔵されたプログラムメモリのオンボード書込み技術に関し、例えば、一括消去型の電気的に消去可能な及びプログラム可能な不揮発性記憶装置（以下単に、フラッシュ型ＥＥＰＲＯＭ、又は、フラッシュメモリとも称する。）をプログラムメモリとして備えたシングルチップ・マイクロコンピュータに適用して有効な技術に関する。
【０００２】
【従来の技術】
データ処理装置としてのシングルチップ・マイクロコンピュータ（単にマイクロコンピュータとも称する）は、動作プログラムを記憶するプログラムメモリを内蔵する。シングルチップ・マイクロコンピュータは、上記内蔵プログラムメモリに記憶される動作プログラムに規定される所定のデータ処理を実行する。
【０００３】
上記プログラムメモリは、マスク型不揮発性記憶装置（以下、マスク型リード・オンリ・メモリ又はマスクＲＯＭと称する）や電気的にプログラム可能な不揮発性記憶装置（以下単にＥＰＲＯＭと称する）で形成されてきた。しかし、近年では、一括消去型の電気的に消去可能な及びプログラム可能な不揮発性記憶装置（以下単にフラッシュ型ＥＥＰＲＯＭ、又は、フラッシュメモリとも称する）がプログラムメモリに適用される様になってきた。
【０００４】
フラッシュメモリは、一旦書き込んだデータを電気的に消去したり或いは電気的に書き換えたりすることが可能である。そのため、プログラムメモリとしてフラッシュメモリを内蔵するマイクロコンピュータは、例えば、以下の利点を有する。
【０００５】
ユーザーの開発するソフトウェアプログラム（アプリケーションソフト）の確定は、一般的に遅れやすい傾向にある。従って、ソフトウェアプログラムの確定前に、マイクロコンピュータ応用システムのハードウェアを組立て、その後、マイクロコンピュータ内のフラッシュメモリへ開発されたソフトウェアプログラムを書込む事ができる。それによって、マイクロコンピュータ応用システムの出荷が迅速化できる。
【０００６】
さらに、一度出荷した応用システムのソフトウェアに関し、仕様の変更されたソフトウェアの開発や機能の追加されたソフトウェア（アップグレード版或いはバージョンアップされたソフトウェアなど）の開発が行われたとき、一度出荷した応用システムのソフトウェアをユーザ側で上記新規に開発したソフトウェアへ書換えることができる。
【０００７】
すなわち、プログラムメモリとしてフラッシュメモリを内蔵するマイクロコンピュータにおいて、マイクロコンピュータをプリント基板、実装基板又はシステム基板上へ実装した後、上記フラッシュメモリ内へ動作プログラムを書きこむための処理が可能とされる。本明細書において、フラッシュメモリを内蔵するマイクロコンピュータをプリント基板、実装基板又はシステム基板上へ実装した状態で、内蔵フラッシュメモリへデータを書き込むような処理を「オンボード書込み処理」と称し、この書き込みモードを「オンボード書込みモード」と称する。
【０００８】
オンボード書込みモードには、幾つかの方式が考えられる。それらを大きく分類すると、以下の２通りに分類される。
【０００９】
第１方式は、ユーザープログラムモード又はブートモードとされる。これらのモードは、マイクロコンピュータに内蔵される中央処理装置（ＣＰＵ）のプログラム実行の流れを、オンボード書込み処理へ分岐し、フラッシュメモリのデータを中央処理装置で変更する方式とされる。
【００１０】
第２方式は、ＲＯＭライタを利用した書き込みモードとされる。このモードは、マイクロコンピュータを停止して、外部的な手段（ＲＯＭライタ）でフラッシュメモリのデータの変更を実現する方式とされる。
【００１１】
特開平６−１８０６６４号公報は、フラッシュメモリの書き換え時、異常処理プログラムを別の領域へ移し、書き換え時の異常に対応するようにしたシステムを開示している。
【００１２】
【発明が解決しようとする課題】
上記第１方式において、内蔵フラッシュメモリの記憶内容自体が書換えの対象とされるため、内蔵ＲＡＭ（ランダム・アクセス・メモリ）などのフラッシュメモリ以外のメモリに存在する書き込み制御プログラムを中央処理装置（ＣＰＵ）で実行し、フラッシュメモリの消去又は書込みを行うようにしている。
【００１３】
上記第１方式における上記フラッシュメモリの消去又は書込み状態において、マイクロコンピュータの本来の機能は失われない。そのため、マイクロコンピュータの外部から供給された信号入力に起因して、中央処理装置（ＣＰＵ）に対する割込みが誤って発生したり、或いは、書き込み制御プログラムの実行中にアドレスエラーが生じたりする場合がある。また、ＮＭＩ（ノンマスカブル割り込み）は、割り込み自体を禁止できないので、意図しないＮＭＩが上記第１方式におけるフラッシュメモリの書き込み又は消去中に発生する可能性がある。ＮＭＩでなくとも、誤って割り込みを許可状態にし、同様の状態となる可能性がある。
【００１４】
一般的には、割込みの発生やアドレスエラーの発生が生じた場合、割込み処理ルーチン或いは例外処理ルーチンへ中央処理装置の処理が分岐される。中央処理装置の処理を割込み処理ルーチン或いは例外処理ルーチンへ分岐させる為に利用されるのが、割込み処理ルーチン或いは例外処理ルーチンの先頭アドレスを示すベクタアドレスである。割込みの発生や例外処理の発生が起きた場合、対応する割込み処理ルーチン或いは例外処理ルーチンのベクタアドレスが中央処理装置によって取得される。そして、その取得されたベクタアドレスは中央処理装置のプログラムカウンタに書き込まれ、中央処理装置のプログラムフローがベクタアドレスの示すアドレスへジャンプすることで、対応する割込み処理或いは例外処理が実行される。
【００１５】
ここで注意すべき事項は以下の事項である事が発明者の検討によって明らかとされた。
【００１６】
すなわち、一般的に、複数のベクタアドレスは、プログラムメモリ内のベクタアドレス格納領域内に記憶される。フラッシュメモリがプログラムメモリとされる場合においてもそれに関しては同様であり、複数のベクタアドレスはフラッシュメモリ内のベクタアドレス格納領域内に格納される。
【００１７】
ところが、フラッシュメモリがプログラムメモリとされ、かつ、上記フラッシュメモリに対してユーザープログラムモード又はブートモードでの消去又は書込みが実行されている時、割込みの発生や例外処理の発生が生じた場合、中央処理装置はフラッシュメモリ内のベクタアドレス格納領域内に格納される所望のベクタアドレスを取得できない。
【００１８】
すなわち、フラッシュメモリのユーザープログラムモード又はブートモードでの消去又は書込みのための書き換え制御プログラムがフラッシュメモリ以外のメモリ（例えば、ＲＡＭ）に存在するにもかかわらず、ベクタアドレスがプログラムメモリ内に存在する。そのため、プログラムメモリであるフラッシュメモリに対する消去処理又は書込み処理中においては、正しいベクタアドレスが得られない。その結果、プログラムメモリのユーザープログラムモード又はブートモード時において、割込みの発生や例外処理の発生が生じた場合、マイクロコンピュータの暴走、さらには応用システムの破損の危険がある事が解った。また、マイクロコンピュータが暴走し、フラッシュメモリの過消去・過書き込み等が発生すると、そのマイクロコンピュータ応用システムの再生が不可能になる場合もある。一方、電源電位の低下等の異常事態は、ＮＭＩ等の割り込みで検出するのが一般的な手段である。
【００１９】
なお、フラッシュメモリに対する消去処理又は書込み処理は、消去ベリファイ動作及び書き込みベリファイ動作を含むものとみなされる。
【００２０】
フラッシュメモリをプログラムメモリとして内蔵するマイクロコンピュータにおいては、応用システムのハードウェアの組立後、ユーザ側が内蔵フラッシュメモリへソフトウェアを書込んだり、一度出荷した応用システムの内蔵フラッシュメモリのソフトウェアを書換え可能である。そのため、フラッシュメモリをマイクロコンピュータに内蔵することの利点は多い。しかし、内蔵フラッシュメモリのユーザープログラムモード又はブートモードでのオンボード書込みモード中における割込みの発生や例外処理の発生は、マイクロコンピュータの暴走や応用システムの破損の危険の原因となる事が明らかになった。
【００２１】
本発明の目的は、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることにある。
【００２２】
本発明の他の目的は、電気的に消去可能な及びプログラム可能な不揮発性記憶装置をプログラムメモリとして含むデータ処理装置において、上記プログラムメモリのオンボード書込み時に割込み処理或いは例外処理の要求がされた場合であっても、暴走や破損の危険を防止可能にすることにある。
【００２３】
本発明のさらに他の目的は、フラッシュメモリをプログラムメモリとして含むマイクロコンピュータであって、上記プログラムメモリのオンボード書込み又は消去時に割込み処理或いは例外処理の要求がされた場合、その要求に応答可能なマイクロコンピュータのようなデータ処理装置を提供することにある。
【００２４】
本発明のさらに別の目的は、フラッシュメモリをプログラムメモリとして含むシングルチップマイクロコンピュータであって、上記プログラムメモリの書込み又は消去時に割込み処理或いは例外処理の要求がされた場合、中央処理装置が対応する割込み処理或いは例外処理に関係するベクタアドレスを取得可能に構成されたシングルチップマイクロコンピュータのようなデータ処理装置を提供することにある。
【００２５】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００２６】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００２７】
データ処理装置は、電気的に消去又は書込みが可能なプログラムメモリ（１８）と、上記プログラムメモリ（１８）をアクセス可能な中央処理装置（１２）と、上記プログラムメモリの消去又は書込み中の割込み発生或いは例外処理の発生に起因する誤動作を排除するための誤動作排除手段とを含む。
【００２８】
上記誤動作排除手段は、以下の構成を含む事ができる。
【００２９】
〔１〕図６に示されるように、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間、上記中央処理装置（１２）に対する割込み要求或いは例外処理要求を排除もしくは無効化するための第１制御論理回路（Ｇ５）が上記データ処理装置に設けられる。
【００３０】
したがって、ユーザープログラムモード又はブートモードで上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間において、上記第１制御論理回路（Ｇ５）は上記中央処理装置（１２）に対する割込み要求或いは例外処理要求を排除もしくは無効化するので、上記中央処理装置（１２）は、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間、割込み要求或いは例外処理要求に対応するベクタアドレスの取得動作を実行しない。このことが、プログラムメモリ（１８）のオンボード書込みの際のシステムの安全性の向上を達成する。これによって、意図しない割り込み要求の発生を禁止できる。
【００３１】
〔２〕図７に示されるように、ユーザープログラムモード又はブートモードで上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間、上記中央処理装置（１２）に対する割込み要求或いは例外処理要求に応答して、上記プログラムメモリ（１８）に対する消去処理又は書込み処理を中止させる為の第２制御論理回路（Ｇ６）が上記データ処理装置に設けられる。
【００３２】
すなわち、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間において、上記第２制御論理回路（Ｇ６）は、上記中央処理装置（１２）に対する割込み要求或いは例外処理要求に応答し、上記プログラムメモリ（１８）に対する消去処理又は書込み処理を中止させる。具体的には、上記第２制御論理回路（Ｇ６）は、上記プログラムメモリ（１８）に設けられた動作制御レジスタの消去制御ビット（３２）、書き込み制御ビット（３３）、ベリファイ制御ビット（３４）等の制御ビットのデータを活性化状態から非活性化状態へ変更する。
【００３３】
したがって、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間に上記中央処理装置（１２）に対する割込み要求或いは例外処理要求が発生した時、上記第２制御論理回路（Ｇ６）は上記プログラムメモリ（１８）に対する消去処理又は書込み処理を中止させる。このような割り込みの発生は書き込み及び消去制御プログラムのプログラミングミスや停電などの非常事態の原因であることもある。そこで、上記プログラムメモリ（１８）に対する消去処理又は書込み処理を中止させる事で、フラッシュメモリの過消去・過書き込みの発生が防止される。また、その後上記中央処理装置（１２）は、上記プログラムメモリ（１８）から上記割込み要求或いは例外処理要求に対応するベクタアドレスを取得する事ができる。以上により、プログラムメモリ（１８）のオンボード書込みの際のシステムの安全性の向上が達成する。
【００３４】
〔３〕図３及び図５に示されるように、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間に上記中央処理装置（１２）に対する割込み要求或いは例外処理要求が発生した時、上記プログラムメモリ（１８）のベクタアドレス格納領域のアクセスを禁止し、上記プログラムメモリ（１８）以外のメモリ、例えば、ランダムアクセスメモリ（１３）の所定領域をアクセスできるように、メモリ選択動作を上記プログラムメモリ（１８）から上記プログラムメモリ（１８）以外のメモリへ変更させる選択メモリ変更手段（Ｇ１、Ｇ２、Ｇ４）がデータ処理装置に設けられる。なお、上記選択メモリ変更手段（Ｇ１、Ｇ２、Ｇ４）はバスコントローラ（２７）に設けることができる。
【００３５】
この場合、上記プログラムメモリ（１８）以外のメモリの所定領域には、予め、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間において上記中央処理装置（１２）に対する割込み要求或いは例外処理要求が発生した時に処理すべき割り込み処理又は例外処理のためのベクタアドレスデータが格納されている。そして、上記所定記憶領域に格納されたベクタアドレスデータは、上記プログラムメモリ（１８）以外のメモリの他の記憶領域に格納された所定割込み処理ルーチン或いは例外処理ルーチンの先頭アドレスを示すように設定される。
【００３６】
〔３・１〕上記〔３〕において、上記選択メモリ変更手段（Ｇ１，Ｇ２）は、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間に上記中央処理装置（１２）に対する割込み要求或いは例外処理要求が発生した時、上記プログラムメモリ（１８）のベクタアドレス格納領域のアクセスの検出に応答し、上記プログラムメモリ（１８）の選択信号を不活性化する。その代わり、上記選択メモリ変更手段（Ｇ１，Ｇ２）は、上記プログラムメモリ（１８）以外のメモリ（１３）の選択信号を活性化する。
【００３７】
〔３・２〕上記〔３〕において、上記選択メモリ変更手段（Ｇ４）は、上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間に上記中央処理装置（１２）に対する割込み要求或いは例外処理要求が発生した時、上記プログラムメモリ（１８）のベクタアドレス格納領域のアクセスの検出に応答し、上記プログラムメモリ（１８）のベクタアドレス格納領域をアクセスするためのアドレス信号を上記プログラムメモリ（１８）以外のメモリ、例えば、ランダムアクセスメモリ（１３）の所定記憶領域をアクセスするアドレス信号へ変換する。
【００３８】
上記〔３・１〕及び上記〔３・２〕の様に構成することにより、ユーザープログラムモード又はブートモードで上記プログラムメモリ（１８）の消去処理又は書込み処理が行われている期間において上記中央処理装置（１２）に対する割込み要求或いは例外処理要求が発生した場合であっても、上記中央処理装置（１２）は対応する割込み処理ルーチン或いは例外処理ルーチンに関するベクタアドレスを上記プログラムメモリ（１８）以外のメモリの他の記憶領域をアクセスすることによって取得できる。従って、ＮＭＩ割り込みを使用して、停電による電源電圧Ｖｃｃの低下等の非常事態をマイクロコンピュータに通知し、上記プログラムメモリ（１８）に対する消去処理又は書込み処理を中止させる事で、フラッシュメモリの過消去・過書き込みの発生が防止される。この場合、ＮＭＩに対する割り込み処理ルーチンの中で、消去処理又は書込み処理の中止状態を記録する処理を実行し、フラッシュメモリを過消去・過書き込みや中間状態等の異常状態から保護できる。このことが、プログラムメモリ（１８）のオンボード書込みの際のシステムの安全性の向上を達成する。
【００３９】
【発明の実施の形態】
図１は、本発明にしたがうデータ処理装置としてのシングルチップ・マイクロコンピュータ３０を示している。特に制限されないが、シングルチップ・マイクロコンピュータ３０は、単結晶シリコン基板などの一つの半導体基板（半導体チップ）上に形成される。
【００４０】
図１に示されるように、シングルチップ・マイクロコンピュータ３０は、特に制限されないが、割込み制御回路１０、クロック発振器１１、中央処理装置（ＣＰＵ）１２、内蔵ランダム・アクセス・メモリ（ＲＡＭ）１３、ホストインタフェース回路１４、シリアル通信回路とされるシリアルコミュニケーションインタフェース回路１５、１０ビットのアナログ・デジィタル変換回路（Ａ／Ｄ変換器）１６、８ビットのデジィタル・アナログ変換回路（Ｄ／Ａ変換器）１７、プログラムメモリとれる内蔵リード・オンリ・メモリ（ＲＯＭ）１８、ウォッチドッグタイマ回路１９、１６ビットのフリーランニングタイマ回路２０、８ビットのタイマ回路２１、パルス幅変調のために利用されるＰＷＭタイマ回路２２、及び複数の信号入力、信号出力又は信号入出力に利用されるポートＰ１〜Ｐ９を含む。
【００４１】
これらの回路モジュール（１０、１２〜２２、Ｐ１〜Ｐ９）がアドレスバス２４及びデータバス２６によって結合され、中央処理装置１２がアドレスバス２４及びデータバス２５、２６を用いて回路モジュール（１２〜２２、Ｐ１〜Ｐ９）をアクセスできるようにされる。
【００４２】
中央処理装置１２が回路モジュール（１２〜２２、Ｐ１〜Ｐ９）の何れかをアクセスする場合、中央処理装置１２はアクセスの対象とされる回路モジュールに割り当てられたアドレスを選択するためのアドレス信号を上記アドレスバス２４へ発生する。この時、データリードモードであるなら、アクセスの対象とされる回路モジュールはデータバス２５、２６にデータを出力し、上記中央処理装置１２はデータバス２６を介してそのデータを取り込む。一方、データライトモードであるなら、上記中央処理装置１２はデータバス２５、２６へ所望のデータを出力し、上記アクセスの対象とされる回路モジュールはデータバス２５、２６を介してそのデータを取り込む。
【００４３】
次に、上記各回路ブロック（１０〜２２）の機能が説明される。
【００４４】
クロック発振器１１は、特に制限されないが、水晶振動子を利用して発振する発振器と、この発振器の出力パルスのデューティを補正するデューティ補正回路と、上記デューティ補正回路からのシステムクロック信号を分周することによって内蔵周辺モジュール（１２〜２２）の為の内蔵周辺モジュールクロック信号を形成するクロック分周器と、上記クロック分周器からの上記内蔵周辺モジュール用クロック信号を分周して内部クロック信号を生成するためのプリスケーラとを含む。クロック発振器１１で発生された所定周波数のシステムクロックに同期して、各回路モジュール（１０、１２〜２２）が動作される。
【００４５】
ＣＰＵ１２は、特に制限されないが、処理すべきプログラム内に定義された命令が格納される命令レジスタ（ＩＲ）、上記命令レジスタに格納された命令をデコードする命令デコーダ（ＩＤＥＣ）、上記命令デコーダから出力される制御信号に従ってその動作が制御される命令実行部（ＩＥＸＥ）とを含む。上記命令実行部（ＩＥＸＥ）は、算術演算や論理演算を実行する算術論理演算器（ＡＬＵ）、８ビット×１６本の汎用レジスタ（Ｒ０−Ｒ１５）、プログラム内の次に実行されるべき命令の命令アドレスに関するデータを格納するプログラムカウンタ（ＰＣ）等を有する。プログラムカウンタ（ＰＣ）内のデータは、命令が上記命令実行部（ＩＥＸＥ）によって実行される毎に、インクリメントされる。上記命令実行部（ＩＥＸＥ）は、クロック発振器１１から出力されるシステムクロックをタイムベースとして、所定の演算処理、及び各内蔵周辺モジュール（１２〜２２）の動作制御を行う。なお、上記命令レジスタ（ＩＲ）、命令デコーダ（ＩＤＥＣ）、命令実行部（ＩＥＸＥ）、算術論理演算器（ＡＬＵ）、汎用レジスタ（Ｒ０−Ｒ１５）乃至プログラムカウンタ（ＰＣ）は、図面の簡素化のため、上記図１には描かれていない。
【００４６】
上記汎用レジスタの１つは、割り込み発生時或いは例外発生時のスタックポインタとして利用される。すなわち、割り込み発生時或いは例外発生時、その時点における上記汎用レジスタに格納されていたデータを、例えば、所定の外部記憶装置へ待避させることが行われる。この場合、スタックポインタは、待避されたデータのアドレスを示すアドレスデータを格納する。割り込み処理或いは例外処理からの復帰時、上記スタックポインタに格納されるアドレスデータを利用して、その割り込み処理或いは例外処理が受け付けられた時に上記外部記憶装置へ待避されたところの汎用レジスタの内容が汎用レジスタ内に回復される。なお、上記システムクロックのある立上がりエッジから次の立上がりエッジまでの１単位が１ステートとされるとき、ＣＰＵ１２のメモリサイクル又はバスサイクルは、例えば、２ステート又は３ステートで構成される。言い換えると、ＣＰＵ１２は、システムクロックの２周期又は３周期で、上記内蔵周辺モジュール（１２〜２２）をアクセスすることができるように設計される。
【００４７】
内蔵ＲＡＭ１３は、特に制限されないが、１ｋバイトの記憶容量を有するスタティック型ＲＡＭとされる。内蔵ＲＡＭ１３は、アドレスバス２４及びそれぞれ８ビット幅のデータバス２５，２６によってＣＰＵ１２へ結合される。その結果、内蔵ＲＡＭ１３は、バイトデータ（８ビットのデータ）、ワードデータ（１６ビットのデータ）にかかわらず、２ステートのメモリアクセスサイクル一回で、バイトデータ及びワードデータの入力及び出力が可能にされている。
【００４８】
ホストインタフェース回路１４は、ＣＰＵ１２とホストシステムとの２チャンネルのパラレルインタフェース機能を有し、特に制限されないが、４バイトのデータレジスタ、高速ゲートロジックや、割込み要求回路などを含む。ホストシステムからの５つのコントロール信号、ホストシステムへの４つの出力信号、及びコマンド又はデータ入出力バスとしての８ビット幅のデータバス２５を介してホストシステムとの通信が可能とされる。
【００４９】
シリアルコミュニケーションインタフェース回路１５は、他のＬＳＩとの間でシリアルデータの通信を行うためのモジュールで、調歩同期式モードによる通信と、クロック同期式モードによる通信との選択が可能とされる。動作モードの指定や、データフォーマットの指定、ビットレートの設定及び送受信制御のための複数のコントロールレジスタと、送受信のコントロール回路、及びバスインタフェースなどを含む。
【００５０】
Ａ／Ｄ変換器１６は、特に制限されないが、逐次変換方式により、入力アナログ信号をディジタル信号に変換するためのもので、特に制限されないが、最大８チャンネルのアナログ入力を選択することができる。
【００５１】
Ｄ／Ａ変換器１７は、データバス２５を介して入力されたディジタル信号をアナログ信号に変換する機能を有し、各種レジスタや、８ビットＤ／Ａ変換部、及びコントロール回路を含む。
【００５２】
ウォッチドッグタイマ１９は、システムの監視を行うものである。システムの暴走などにより、ウォッチドッグタイマ１９内のタイマカウンタの値が書換えられずにオーバーフローすると、ウォッチドッグタイマ１９はＣＰＵ１２に対してリセット信号又はＮＭＩ（ノンマスカブル割込み）要求を発生する。また、この機能を利用しない場合には、ウォッチドッグタイマ１９内のタイマカウンタはインターバルタイマとしても使用可能である。
【００５３】
１６ビットフリーランニングタイマ２０は、特に制限されないが、１６ビットフリーランニングカウンタをベースにして２種類の独立した波形出力が可能とされ、また、入力パルスの幅や、外部クロックの周期を測定することができる。
【００５４】
８ビットタイマ２１は２チャンネル設けられ、それぞれタイマカウンタの他に、８ビットのタイムコンスタントレジスタが設けられる。それにより、任意のデューティ比のパルス信号の出力が可能とされる。
【００５５】
ＰＷＭタイマ２２は、２チャンネル設けられ、各チャンネル毎に、８ビットタイマカウンタと８ビットデューティレジスタがあり、この８ビットデューティレジスタに設定する値によって０〜１００％のデューティパルスを得ることができるようになっている。
【００５６】
割込み制御回路１０は、外部割込み要求信号とされるＮＭＩ（ノンマスカブル割込み）やＩＲＱ０−ＩＲＱ２、上記周辺モジュール１５〜２２から供給される図示されていない内部割込み要求を受け、所定の優先順位に従って処理するための機能を有し、この割込み要求処理結果に基づいて、割込み例外処理要求信号ＩＲＱＳがＣＰＵ１２に伝達されるようになっている。割込み制御回路１０は、図１に図示されないが、アドレスバス２４及びデータバス２５に結合され、ＣＰＵ１２によって内部レジスタがアクセス可能にされる。なお、上記ＮＭＩ（ノンマスカブル割込み）は、マスク不可能な割り込みとされる。従って、割込み制御回路１０が上記ＮＭＩ（ノンマスカブル割込み）い受けると、上記ＮＭＩに従う割り込み処理を実行する事になる。
【００５７】
内蔵ＲＯＭ１８は、ＣＰＵ１２で実行されるプログラムを格納するためのプログラムメモリとされる。内蔵ＲＯＭ１８は、特に制限されないが、アドレスバス２４及びそれぞれ８ビット幅のデータバス２５，２６によってＣＰＵ１２に結合される。その結果、内蔵ＲＯＭ１８は、バイトデータ（８ビットのデータ）、ワードデータ（１６ビットのデータ）にかかわらず、２ステートのメモリアクセスサイクル一回で、バイトデータ及びワードデータの出力が可能にされている。前述のように、内蔵ＲＯＭ１８は、一括消去型の電気的に消去可能な及びプログラム可能な不揮発性記憶装置（以下単に、フラッシュ型ＥＥＰＲＯＭ、又は、フラッシュメモリとも称する）によって構成される。その内部に格納されるデータとしてのプログラムは、シングルチップマイクロコンピュータをオンボード書き込みモードに設定することによって、プログラミング可能にされる。
【００５８】
本実施例のマイクロコンピュータ３０の動作モードがオンボードプログラミングモードに設定されると、上記内蔵ＲＯＭ１８へのプログラム（データ）書込みや、消去、ベリファイを行うことができる。このオンボードプログラミングモードは、２種類の動作モード（ブートモード、ユーザプログラムモード）を含む。なお、ブートモードは第１オンボードプログラミングモードとされ、ユーザプログラムモードは第２オンボードプログラミングモードとされる。
【００５９】
マイクロコンピュータ３０の動作モードはモード設定回路ＭＣによって判別され、モード設定回路ＭＣはモード設定信号ＭＳ０−ＭＳ４のうちの１つのモード設定信号をハイレベルとする。指定された動作モードを示すハイレベルのモード設定信号は、例えば、中央処理装置ＣＰＵ１２やバスコントローラ２７等の回路へ供給される。モード設定回路ＭＣは、モード設定端子ＭＤ０−ＭＤ２に供給されるモード信号ＭＤＳ０−ＭＤＳ２の信号電圧及び高電圧供給端子Ｖｐｐに供給される高電圧Ｖｐが所定の組み合わせとされているか否かを判別し、マイクロコンピュータ３０の動作モードを所望の動作モードへ設定する。それによって、マイクロコンピュータ３０の動作モードは、上記ブートモードや上記ユーザプログラムモードのほか、後述されるＰＲＯＭモード、シングルチップモード及び外部メモリ拡張モードを含む。シングルチップモードは、内蔵ＲＡＭや内蔵ＲＯＭのアドレス空間を利用してマイクロコンピュータシステムを構成するモードとされる。一方、外部メモリ拡張モードは、内蔵ＲＡＭや内蔵ＲＯＭ以外の外部メモリをも利用してアドレス空間が拡張され、その拡張されたアドレス空間を利用してマイクロコンピュータシステムを構成するモードとされる。
【００６０】
例えば、１２Ｖの電圧がモード設定端子ＭＤ２及び高電圧供給端子Ｖｐｐに供給されると、マイクロコンピュータ３０の動作モードがブートモードに設定される。すなわち、モード設定信号ＭＳ０がハイレベルとされる。この場合、マイクロコンピュータ３０のアドレス空間の設定モードに従って、０Ｖ又は５Ｖの電圧がモード設定端子ＭＤ１、ＭＤ０へそれぞれ供給される。一方、１２Ｖの電圧が高電圧供給端子Ｖｐｐに供給されると、マイクロコンピュータ３０の動作モードがユーザプログラムモードに設定される。すなわち、モード設定信号ＭＳ１がハイレベルとされる。この場合、マイクロコンピュータ３０のアドレス空間の設定モードに従って、０Ｖ又は５Ｖの電圧がモード設定端子ＭＤ０−ＭＤ２へそれぞれ供給される。特に制限されないが、モード設定信号ＭＳ２のハイレベルは上記ＰＲＯＭモードを示し、モード設定信号ＭＳ３のハイレベルは上記シングルチップモードモードを示し、モード設定信号ＭＳ４のハイレベルは上記外部メモリ拡張モードを示す。
【００６１】
ブートモードを使用する場合、フラッシュメモリ１８の書き込み及び消去用のユーザプログラム（書き換え制御プログラム）及び書き込みデータが図示されないホストシステムなどに予め用意される。ブートモードに設定されると、リセット解除後に、予めブートＲＯＭにプログラムされているブートプログラムが起動される。そして、上記ホストシステムから送信されるデータのローレベルの期間がシリアルコミュニケーションインタフェース回路１５によって測定され、それによって、上記ホストシステムの送信データのビットレートが計算され、シリアルコミュニケーションインタフェース回路１５のビットレートレジスタの値が決定される。次に、上記ホストシステムは上記書き換え制御プログラムを構成するデータの転送を行う。シリアルコミュニケーションインタフェース回路１５によって受信された書き換え制御プログラムのデータが内蔵ＲＡＭ１３へ格納される。書き換え制御プログラムの書込みが終了した後、ブートプログラムの処理が内蔵ＲＡＭ１３に書き込まれた書き換え制御プログラムの先頭アドレスへ分岐される。それによって、内蔵ＲＡＭ１３に書込まれた書き換え制御プログラムがＣＰＵ１２によって実行され、フラッシュメモリに対するデータの書込み動作或いはデータの消去動作が実行されることになる。なお、上記ブートＲＯＭは、マスクＲＯＭ等の不揮発性記憶回路から構成され、電源電位の低下があってもその記憶内容は消去されない。
【００６２】
ユーザプログラムモードにおいて、フラッシュメモリ１８に対するデータの書込み動作或いはデータの消去動作がフラッシュメモリ１８の書き込み及び消去用のユーザプログラム（書換え制御プログラム）により可能とされる。この場合、高電圧を供給するための高電圧供給手段及び書換えデータを供給するためのデータ供給手段が実装基板上に設けられる。そして、上記書換え制御プログラムが、例えば、フラッシュメモリ１８乃至他のメモリ（外部メモリ）のプログラムエリアの一部に格納させる。ユーザプログラムモードの設定に応答して、ＣＰＵ１２は上記書換え制御プログラムを内蔵ＲＡＭ１３に格納し、上記書換え制御プログラムを実行するＣＰＵ１２によってフラッシュメモリ１８のオンボード書換えが行われる。
【００６３】
尚、内蔵ＲＯＭとしてのフラッシュメモリ１８の消去又は書込みモードとして、オンボード書込みモード以外に、ＰＲＯＭモードが用意されても良い。上記ＰＲＯＭモードは、フラッシュメモリ１８へのプログラムデータの書込みを汎用ＰＲＯＭライタを用いて可能とするモードとされる。上記ＰＲＯＭモードは、例えば、モード設定端子ＭＤ０−ＭＤ２の全てに、ローレベル”０”のモード設定信号ＭＤＳ０−ＭＤＳ２を供給することによって設定される。
【００６４】
ベクタアドレスが内蔵ＲＯＭとしてのフラッシュメモリ１８内に存在する場合、ユーザープログラムモード又はブートモードにおけるフラッシュメモリ１８の消去又は書込み中に、割り込み要求乃至例外処理要求が発生した時、ＣＰＵ１２は正しいベクタアドレスを取得できない。なぜなら、内蔵ＲＯＭ１８の消去又は書込み中なので、ＣＰＵ１２はフラッシュメモリ１８のベクタアドレス格納領域をアクセスできないからである。そのため、上述のようなマイクロコンピュータの暴走の虞がある。
【００６５】
そこで、本実施例では、ユーザープログラムモード又はブートモードにおけるフラッシュメモリ１８の消去又は書込み中、内蔵ＲＡＭ１３の一部の記憶領域（アドレス領域）が、フラッシュメモリ１８のベクタアドレス格納エリアへ移動されるようにする。すなわち、フラッシュメモリ１８の消去又は書込み中において、フラッシュメモリ１８のベクタアドレス格納エリアのアドレスが、内蔵ＲＡＭ１３の一部の記憶領域のアドレスへ移動される。それによって、フラッシュメモリ１８の消去又は書込み中に発生したベクタアドレスをフェッチする為のアドレス信号は、内蔵ＲＡＭ１３の一部の記憶領域をアクセスすることになる。従って、内蔵ＲＡＭ１３の一部の上記記憶領域へ必要なベクタアドレスを予め格納することによって、正しいベクタアドレスを取得可能にすれば、マイクロコンピュータの暴走などを防止する事ができる。換言すれば、本実施例において、内蔵ＲＡＭ１３は、ユーザープログラムモードにおける内蔵ＲＯＭ１８の消去又は書込み時、フラッシュメモリ１８に格納されたベクタアドレス格納領域を代替するために利用される。このとき、予め利用可能なベクタアドレスが内蔵ＲＡＭ１３の一部の記憶領域に書込まれた後、内蔵ＲＯＭ１８の消去又は書込みのプログラムの実行が開始される事になる。
【００６６】
図２は、内蔵ＲＯＭ１８としてのフラッシュメモリの消去又は書込み時に利用される内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖを含む本発明に従うアドレスマップの第１の実施例を示す。
【００６７】
ＣＰＵ１２によって管理されるアドレス空間、言い換えるならば、ＣＰＵ１２がアクセス可能なアドレス空間は、特に制限されないが、６４ｋバイト（Ｈ’００００〜Ｈ’ＦＦＦＦ）とされる。すなわち、アドレスバス２４のビット数は、１６ビットとされる。
【００６８】
内蔵ＲＯＭ１８に割り当てられたアドレス空間のアドレスエリアＡは３２ｋバイト（Ｈ’００００〜Ｈ’７ＦＦＦ）とされる。このアドレスエリアＡのうち、ベクタアドレスに関するアドレスデータが格納されるベクタアドレス格納エリアＡ−Ｖは２５６バイト（Ｈ’００００〜Ｈ’００ＦＦ）とされる。
【００６９】
一方、内蔵ＲＡＭ１３に割り当てられたアドレス空間のアドレスエリアＢは、１ｋバイト（Ｈ’ＦＣ００〜Ｈ’ＦＦＦＦ）とされる。このアドレスエリアＢは、図示されるように、アドレスエリアＢ−Ｖを含む。このアドレスエリアＢ−Ｖは、内蔵ＲＯＭ１８のオンボード書込みを安全に行うために、ベクタアドレス格納エリアＡ−Ｖを代替する為のエリアとされ、例えば、２５６バイト（Ｈ’ＦＣ００〜Ｈ’ＦＣＦＦ）が設定される。従って、ベクタアドレス格納エリアＢ−Ｖは、内蔵ＲＯＭ１８のオンボード書き込みモード（ユーザープログラムモード）中に割り込み要求或いは例外処理要求が発生した場合に利用される１乃至複数のベクタアドレスを格納する。
【００７０】
ユーザープログラムモード又はブートモードにおけるフラッシュメモリ１８の消去又は書込み状態において、ＣＰＵ１２が割込み要求の処理時にベクタアドレス格納エリアＡ−Ｖをリードしようとする場合であっても、上記のように、ベクタアドレス格納エリアＢ−Ｖに割り当てられたアドレスＨ’ＦＣ００〜Ｈ’ＦＣＦＦが見かけ上ベクタアドレス格納エリアＡ−Ｖへ移動されているので、ベクタアドレス格納エリアＢ−Ｖがアクセスされる。それにより、内蔵ＲＯＭ１８としてのフラッシュメモリの消去又は書込み中において、正しいベクタアドレスがベクタアドレス格納エリアＢ−Ｖから得られるので、フラッシュメモリ１８の消去又は書込み中でも、ＣＰＵ１２は割り込み要求及び例外処理要求に応じて所望の割り込み処理及び例外処理を正しく行うことができる。
【００７１】
上記のようなベクタアドレスエリアの代替を実現するには、ＣＰＵ１２からベクタアドレス信号が出力されたとき、バスコントローラ２７によって、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖがアクセスされて、その内容（所定のベクタアドレスデータ）がリードされるようにすればよい。
【００７２】
つまり、ユーザープログラムモード又はブートモードにおいて、内蔵ＲＯＭ１８としてのフラッシュメモリの消去又は書込み状態で、ＣＰＵ１２が割込み処理時にフラッシュメモリ１８のベクタアドレス格納エリアＡ−Ｖをリードする為のアドレス信号を発生したとき、バスコントローラ２７が次のようにモジュール選択信号を制御すればよい。
【００７３】
すなわち、バスコントローラ２７が、本来活性化されるべき内蔵ＲＯＭ１８のモジュール選択信号を非活性化し、代わりに、内蔵ＲＡＭ１３のモジュール選択信号を活性化し、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖがリードされるように制御する。具体的には、図３に示されるような制御回路（Ｇ１，Ｇ２，Ｇ３）を図１に示されるバスコントローラ回路２７に設ければよい。
【００７４】
図３は、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖをフラッシュメモリ１８のベクタアドレス格納エリアＡ−Ｖへアドレス変換する場合のバスコントローラ２７の主要部構成例を、内蔵ＲＯＭ１８及び内蔵ＲＡＭ１３との関係で示している。
【００７５】
バスコントローラ２７は、内蔵ＲＯＭ１８を選択するための内蔵ＲＯＭ選択回路２９、内蔵ＲＡＭ選択回路２８、及び制御論理回路（誤動作排除手段）とされるゲートＧ１〜Ｇ３を含む。上記内蔵ＲＯＭ選択回路２９は、内蔵ＲＯＭ１８のアドレスを示すアドレス信号が上記アドレスバス２４にあるとき、ハイレベル”１”の出力信号Ａを出力する。内蔵ＲＡＭ選択回路２８は、内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖを示すアドレス信号が上記アドレスバス２４にあるとき、ハイレベル”１”の出力信号Ｂを出力し、内蔵ＲＡＭ１３のアドレスを示すアドレス信号が上記アドレスバス２４にあるとき、ハイレベル”１”の出力信号Ｃを出力する。ゲートＧ１は、内蔵ＲＯＭ１８がユーザープログラムモード又はブートモードにおける消去又は書込み状態で、且つ、ベクタフェッチのときハイレベルにされるコントロール信号ＣＯＮＴの反転信号と出力信号Ａとのアンド論理をとり、内蔵ＲＯＭ１８が選択されるべき時、内蔵ＲＯＭ１８のモジュール選択信号とされるセレクト信号ＳＥＬ１をローレベル”０”からハイレベル”１”にアサートする。ゲートＧ２は、コントロール信号ＣＯＮＴと上記出力信号Ｂとのアンド論理をとり、それらの信号が共にハイレベル”１”とされるとき、ハイレベル”１”の出力信号Ｄを出力する。ゲートＧ３は、出力信号Ｃおよび出力信号Ｄとを受け、出力信号Ｃ又は出力信号Ｄがハイレベル”１”とされるとき、内蔵ＲＡＭ１８のモジュール選択信号とされるセレクト信号ＳＥＬ２をローレベル”０”からハイレベル”１”にアサートする。
【００７６】
内蔵ＲＯＭ（３２ｋバイト）１８のアクセスを可能とするため、内蔵ＲＯＭ１８には、アドレスＡ１４〜Ａ０（１５ビット）が入力され、また、内蔵ＲＡＭ（１ｋバイト）のアクセスを可能とするため、内蔵ＲＡＭ１３にはＣＰＵからのアドレスＡ９〜Ａ０（１０ビット）が入力されるようになっている。
【００７７】
内蔵ＲＯＭ選択回路２９は、アドレスバス２４を介してＣＰＵ１２から発生されたのアドレスＡ１５（１ビットのみ）を入力される。このアドレスＡ１５が、ローレベルの場合、つまり、ＣＰＵ１２からのアドレスＡ１５〜Ａ０が、
”０ｘｘｘ  ｘｘｘｘ  ｘｘｘｘ  ｘｘｘｘ”（０はローレベルとされ、ｘは論理不定、すなわち、”０”又は”１”のいずれでも可能）
の場合に、出力信号Ａがハイレベルになる。すなわち、内蔵ＲＯＭ１８をアクセスするためのアドレス信号がアドレスバス２４上に出力された場合、出力信号Ａがハイレベルになる。
【００７８】
内蔵ＲＡＭ選択回路２８は、アドレスバス２４を介してＣＰＵ１２からのアドレスＡ１５〜Ａ８を入力される。ＣＰＵ１２からのアドレスＡ１５〜Ａ０が、
”００００  ００００  ｘｘｘｘ  ｘｘｘｘ”
の場合に、出力信号Ｂがハイレベルとなる。すなわち、内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖをアクセスするためのアドレス信号がアドレスバス２４上に出力された場合、出力信号Ｂがハイレベルにされる。
【００７９】
一方、アドレス信号がアドレスバス２４上に出力された場合、ＣＰＵ１２からのアドレスＡ１５〜Ａ１０が、
”１１１１  １１００  ｘｘｘｘ  ｘｘｘｘ”
の場合に、出力信号Ｃがハイレベルとなる。すなわち、内蔵ＲＡＭ１３をアクセスするためのアドレス信号がアドレスバス２４上に出力された場合、出力信号Ｃがハイレベルにされる。
【００８０】
内蔵ＲＯＭ１８の消去又は書込みのために、所定の外部端子Ｖｐｐを介して高電圧が供給されるようになっており、この高電圧供給が検出され、且つ、ＣＰＵ１２によってベクタフェッチ状態であることを示す信号がアサートされた場合に、コントロール信号ＣＯＮＴがハイレベルになる。つまり、内蔵ＲＯＭ１８が消去又は書込み状態で、且つ、ベクタフェッチのときに、コントロール信号ＣＯＮＴがハイレベルになる。コントロール信号ＣＯＮＴは、所定の外部端子Ｖｐｐを介して高電圧が供給されたか否か、及びＣＰＵ１２がベクタフェッチ状態であるか否かを判別可能に構成された論理回路によって生成することができる。
【００８１】
内蔵ＲＯＭ選択回路２９の後段には、内蔵ＲＯＭ選択回路２９の出力信号Ａと、コントロール信号ＣＯＮＴとのアンド論理を得るためのゲートＧ１が配置され、ゲートＧ１から出力される選択信号ＳＥＬ１がハイレベルとされた場合に、内蔵ＲＯＭ１８が選択されるようになっている。また、内蔵ＲＡＭ選択回路２８の出力信号Ｂとコントロール信号ＣＯＮＴとのアンド論理を得るためのゲートＧ２が設けられ、ゲートＧ２の出力信号Ｄと、内蔵ＲＡＭ選択回路２８の出力信号Ｃとのオア論理を得るためのゲートＧ３が設けられ、ゲートＧ３から出力される選択信号ＳＥＬ２がハイレベルとされた場合、内蔵ＲＡＭ１３が選択されるようになっている。したがって、アドレスＨ’ＦＣ００〜Ｈ’ＦＣＦＦがアクセスされる場合、選択信号ＳＥＬ１がローレベルとされることで内蔵ＲＯＭ１８の選択が禁止され、それに代えて、選択信号ＳＥＬ２がハイレベルとされることによって、内蔵ＲＡＭ１３が選択される。つまり、内蔵ＲＡＭ１３によって、内蔵ＲＯＭ１８の消去又は書込み時に、内蔵ＲＯＭ１８上にあるベクタアドレスがリードされる。
【００８２】
なお、この場合、内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖを指定するアドレスのＡ９−Ａ０と内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−ＶのアドレスのＡ９−Ａ０とが一致していることが前提とされる。したがって、内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖを指定するアドレスのＡ９−Ａ０と内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−ＶのアドレスのＡ９−Ａ０とが一致していない場合、アドレスバス２４と内蔵ＲＡＭ１３との間に、アドレス変換回路を設け、出力信号Ｄがハイレベルとされるときに、上記アドレス変換回路のアドレス変換機能が動作するように、アドレス変換回路を設計する必要がある。このようなアドレス変換回路は、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖのアドレス空間上での配置を自由にする。
【００８３】
次に、本発明の別の実施例について説明する。
【００８４】
図４は、別の実施例におけるアドレスマップを示している。図４に示されるように、この実施例では、ユーザープログラムモード又はブートモードにおける内蔵ＲＯＭ１８の消去又は書込み時にベクタアドレスエリアを、内蔵ＲＡＭエリアに移動するようにしている。
【００８５】
つまり、ユーザープログラムモード又はブートモードにおけるフラッシュメモリ１８の消去又は書込み時において、本来の内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖ（Ｈ’００００〜Ｈ’００ＦＦ）ではなく、内蔵ＲＡＭのベクタアドレス格納エリアＢ−Ｖ（Ｈ’ＦＣ００〜Ｈ’ＦＣＦＦ）にベクタアドレスエリアが移動される。この場合、フラッシュメモリの消去又は書込みに応答して、内蔵ＲＡＭ１３へ、予め利用可能な１乃至複数のベクタアドレスのデータを書込んでから、フラッシュメモリ１８の消去又は書込みが開始される。
【００８６】
すなわち、内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖをアクセスするためのアドレス信号が、内蔵ＲＡＭのベクタアドレス格納エリアＢ−Ｖをアクセスするためのアドレス信号に変換される。したがって、ＣＰＵ１２から内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖをアクセスするためのアドレス信号が出力されたときに、ベクタアドレス格納エリアＡ−Ｖをアクセスするためのアドレス信号を内蔵ＲＡＭのベクタアドレス格納エリアＢ−Ｖをアクセスするためのアドレス信号にアドレス変換するアドレス変換回路を設ければよい。
【００８７】
図５は、図１のバスコントロール回路２７に設けられる誤動作排除手段としてのアドレス変換回路ＡＣＣを示している。
【００８８】
アドレス変換回路ＡＣＣは、ＣＰＵ１２から出力されるアドレス信号Ａ１５〜Ａ１０と上記コントロール信号ＣＯＮＴとのオア論理を得るための複数の制御論理回路（ゲート回路）Ｇ４、及びこのゲート回路Ｇ４の出力アドレス信号と、ＣＰＵ１２からのアドレスＡ９〜Ａ０とに基づいて、内蔵ＲＯＭ１８、及び内蔵ＲＡＭ１３の選択を行うための内蔵ＲＯＭ／内蔵ＲＡＭ選択回路３１によって実現することができる。上記ゲートＧ４、及び内蔵ＲＯＭ／内蔵ＲＡＭ選択回路３１は、図１に示されるバスコントローラ２７に内蔵される。尚、図５では、ゲートＧ４が１個のように示されるが、実際には、アドレスＡ１５〜Ａ１０に対応して、６個設けられる。また、内蔵ＲＯＭ／内蔵ＲＡＭ選択回路３１は、図４の内蔵ＲＯＭ選択回路２９と内蔵ＲＡＭ選択回路２８とを含み、図４の出力信号Ａがモジュール選択信号ＳＥＬ１とされ、図４の出力信号Ｃがモジュール選択信号ＳＥＬ２とされる。
【００８９】
上記の構成において、ＣＰＵ１２からベクタアドレス格納エリアＡ−Ｖをアクセスするためのアドレス信号
”００００  ００００  ｘｘｘｘ  ｘｘｘｘ”
がアドレスバス２４へ出力された場合、それが、ベクタアドレス格納エリアＢ−Ｖをアクセスするためのアドレス信号
”１１１１  １１００  ｘｘｘｘ  ｘｘｘｘ”
へ変換されて、内蔵ＲＯＭ／内蔵ＲＡＭ選択回路３１に入力される。それによって、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖが選択されるので、内蔵ＲＯＭ１８の消去又は書込み状態で、ＣＰＵ１２のベクタフェッチが、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖに対して行われる。なお、図５において、ベクタアドレス格納エリアＡ−Ｖは、アドレス”００００  ００００  ００００  ００００”から始まる２５６バイトの記憶領域とされ、且つ、ベクタアドレス格納エリアＢ−Ｖは、アドレス”１１１１  １１００  ００００  ００００”から始まるようにしたので、各アドレス信号のＡ１０及びＡ９は”０”となっている。ベクタアドレス格納エリアＢ−Ｖの開始アドレスが、上記と異なる場合は、適切に変更すべきであることは、容易に理解されるであろう。
【００９０】
このように、ユーザープログラムモード又はブートモードにおける内蔵ＲＯＭ１８の消去／書込み状態で行われるベクタフェッチが、内蔵ＲＯＭ１８のベクタアドレス格納エリアＡ−Ｖではなく、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖに対して行われるため、前記実施例（図２乃至図３）の場合と同様に、内蔵ＲＯＭ１８としてのフラッシュメモリの消去又は書込み中において割込み要求或いは例外処理要求が発生した場合でも、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖから正しいベクタアドレスが得られる。したがって、マイクロコンピュータの暴走を防止することができ、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。尚、この実施例では、ベクタアドレスのフェッチか否かによって、内蔵ＲＡＭ１３のアクセスと内蔵ＲＯＭ１８のアクセスとを切換える必要はない。
【００９１】
また、ＮＭＩ（ノンマスカブル割込み）を含む全割り込要求を無視するようにしても、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【００９２】
図６は、内蔵ＲＯＭ１８としてのフラッシュメモリの消去又は書込み中において、ＮＭＩ（ノンマスカブル割込み）を含む全割り込を無視するためのゲートＧ５を含むバスコントローラ２７を示している。
【００９３】
図６に示されるように、バスコントローラ２７は、割込み制御回路１０とＣＰＵ１２との間に、誤動作排除手段としての制御論理回路（ゲート回路）Ｇ５含む。上記ゲート回路Ｇ５は、フラッシュメモリ１８が消去又は書込み状態の時ハイレベルとされる制御信号ＣＯＮＴ’を受け、ハイレベルの制御信号ＣＯＮＴ’に応答して、活性状態に制御される。一方、制御信号ＣＯＮＴ’がローレベルの時、上記ゲート回路Ｇ５は非活性状態に制御される。
【００９４】
割込み制御回路１０からの割込み例外処理要求信号ＩＲＱＳがハイレベルにアサートされた場合でも、フラッシュメモリ１８の消去又は書込み状態を示す制御信号ＣＯＮＴ’がハイレベルにアサートされている場合、上記割込み例外処理要求信号ＩＲＱＳのアサート状態はＣＰＵ１２に伝達されない事になる。したがって、ＣＰＵ１２は、フラッシュメモリ１８が消去又は書込み状態の時、ＣＰＵ１２はベクタフェッチ動作を実行しないので、ベクタフェッチ動作に関係する誤動作は発生しない。
【００９５】
但し、この場合、ＮＭＩは停電などの非常事態をマイクロコンピュータ３０へ知らせるために有効な手段であるため、これを無視すると、停電などのハードウェア的な原因でフラッシュメモリ１８の消去又は書き込みが失敗するケースを救うことができなくなる点に注意すべきである。
【００９６】
図７は、ユーザープログラムモード又はブートモードにおける内蔵ＲＯＭ１８の消去、書込み、又はベリファイ中に割り込み要求が発生した場合に、内蔵ＲＯＭ１８の消去制御ビットレジスタ、書込み制御ビットレジスタ、ベリファイ制御ビットレジスタをリセットする誤動作排除手段としての制御論理回路Ｇ６を示す。
【００９７】
図７に示されるように、内蔵ＲＯＭ１８の消去、書込み、及びベリファイは、それぞれ消去制御ビットレジスタ３２、書込み制御ビットレジスタ３３、ベリファイ制御ビットレジスタ３４に対して制御ビットをセットすることで可能とされる。したがって、割込み制御回路１０からの割込み例外処理要求信号ＩＲＱＳがアサートされた場合、上記消去制御ビットレジスタ３２、書込み制御ビットレジスタ３３、ベリファイ制御ビットレジスタ３４がリセットされるように構成してもよい。上記消去制御ビットレジスタ３２、書込み制御ビットレジスタ３３、ベリファイ制御ビットレジスタ３４は、外部からのリセット要求ＲＥＳＥＴ１や、ウォッチドッグタイマ１９からのリセット要求ＲＥＳＥＴ２に応じる必要がある。そのため、リセット要求ＲＥＳＥＴ１及びＲＥＳＥＴ２と、上記割込み例外処理要求信号ＩＲＱＳとのオア論理を得るゲートＧ６が設けられる。ゲートＧ６の出力信号は、上記消去制御ビットレジスタ３２、書込み制御ビットレジスタ３３、ベリファイ制御ビットレジスタ３４のリセット端子へ供給される。この構成によれば、内蔵ＲＯＭ１８の消去、書込み、又はベリファイ中に書込み要求が発生した場合に、上記消去制御ビットレジスタ３２、書込み制御ビットレジスタ３３、ベリファイ制御ビットレジスタ３４がリセットされるので、内蔵ＲＯＭ１８の消去、書込み、又はベリファイが中止される。それによって、マイクロコンピュータ３０の暴走を防止することができ、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【００９８】
図８は、図３において説明されたコントロール信号ＣＯＮＴ及び図５において説明されたコントロール信号ＣＯＮＴ’の生成回路の一例を示している。
【００９９】
図示されるように、高電圧検出回路８１は、フラッシュメモリ１８の書き込み又は消去時に１２Ｖのような高電圧の印加される外部端子Ｖｐｐに結合され、１２Ｖのような高電圧の供給に応答して、ハイレベルの出力信号Ｖを発生する。このハイレベルの出力信号Ｖは、例えば、図５のコントロール信号ＣＯＮＴ’として利用する事ができる。一方、ベクタアドレス格納エリアの移動を許可するか否かを制御する許可ビットＶＡＴＥ８３が、マイクロコンピュータ３０に設けられる。ＣＰＵ１２は、フラッシュメモリ１８の書き込みモード（ユーザープログラムモード又はブートモード）の設定に応答して、所定の命令（上記許可ビットＶＡＴＥ８３をセット状態とする為の命令）を実行する。それによって、上記許可ビットＶＡＴＥ８３がセット状態にされる。ＡＮＤゲートＧ８０は、上記出力信号Ｖと上記許可ビットＶＡＴＥ８３の出力状態とのアンド論理をとるゲート回路とされ、その出力信号は図３のコントロール信号ＣＯＮＴとされる。以上のような構成によって、図３のコントロール信号ＣＯＮＴ及び図５のコントロール信号ＣＯＮＴ’を生成する事ができる。
【０１００】
図９は、図１のマイクロコンピュータ３０のフラッシュメモリ１８のプログラミング方法が、上記で説明されたＰＲＯＭモード及びオンボード書き込みモードとの関係で示されている。
【０１０１】
図９に示されるように、プログラミング方法は、ＰＲＯＭモードによるフラッシュメモリ１８のプログラミングとオンボード書き込みモードによるフラッシュメモリ１８のプログラミング方法がある。開始（１）は、ＰＲＯＭモードによるフラッシュメモリ１８のプログラミングの開始を示しており、マイクロコンピュータ３０の動作モードが前述の方法によってＰＲＯＭモードに設定され、汎用ＰＲＯＭライタによってフラッシュメモリ１８に所望のプログラムデータが書き込まれる（ステップＳ１）。その後、所望のプログラムデータが書き込まれたマイクロコンピュータ３０は、プリントボードなどの基板に実装され、そしてその実装基板を用いて、マイクロコンピュータ応用システムが組み立てられる（ステップＳ２）。
【０１０２】
一方、開始（２）は、オンボード書き込みモードによるフラッシュメモリ１８のプログラミングの開始を示しており、フラッシュメモリ１８に所望のプログラムデータが書き込まれていない状態でマイクロコンピュータ３０が、プリントボードなどの基板に実装され、そして、その実装基板を用いて、マイクロコンピュータ応用システムが組み立てられる（ステップＳ３）。その後、マイクロコンピュータ３０の動作モードが前述の方法によってブートモードに設定され、ブートプログラムに従ってフラッシュメモリ１８に所望のプログラムデータが書き込まれる（ステップＳ４）。このようにすれば、ユーザーの開発するソフトウェアプログラム（アプリケーションソフト）の確定が遅れても、ソフトウェアプログラムの確定前に、マイクロコンピュータ応用システムのハードウェアを組立て、その後、マイクロコンピュータ内のフラッシュメモリへ開発されたソフトウェアプログラムを書込む事ができる。それによって、マイクロコンピュータ応用システムの出荷が迅速化できる。
【０１０３】
ステップＳ２及びステップＳ４の後、マイクロコンピュータ応用システムはフラッシュメモリ１８に書き込まれた所望のプログラムデータにしたがって、システム動作を実行することになる（ステップＳ５）。この時期に、一度出荷したマイクロコンピュータ応用システムのソフトウェアに関し、仕様の変更されたソフトウェアの開発や機能の追加されたソフトウェア（アップグレード版或いはバージョンアップされたソフトウェアなど）の開発が行われたとき、一度出荷した応用システムのソフトウェアをユーザ側で上記新規に開発したソフトウェアへ書換えが必要になる場合がある（ケース１）。あるいは、マイクロコンピュータ応用システムの利用者が、例えば、キーボードの機能を英語モードから仏語モードへ機能変更するなどの変更が必要となる場合もある（ケース２）。このようなケース１乃至ケース２のような場合が生じたとき、フラッシュメモリ１８に所望のプログラムデータの書き換えが必要になる。
【０１０４】
そこで、ステップＳ６に示されるように、マイクロコンピュータ３０の動作モードがブートモード或いはユーザプログラムモードに設定される。例えば、上記ケース１の場合、プログラムの全面書き換えが必要な場合もあるので、マイクロコンピュータ３０の動作モードがブートモードに設定され、フラッシュメモリ１８のプログラムデータが所望のプログラムデータへ書き換えられる。一方、上記ケース２の場合、プログラムデータの一部分のみの書き換えによって対応可能なので、マイクロコンピュータ３０の動作モードがユーザプログラムモードに設定され、フラッシュメモリ１８のプログラムデータの一部のデータが所望のデータへ書き換えられる。
【０１０５】
ステップＳ６の後、点線Ｘで示される様に、ステップ５に戻り、マイクロコンピュータ応用システムは書き換えられたプログラムに従ってシステム動作を実行することになる。なお、ステップＳ５、ステップＳ６は、必要に応じて、繰り返される。
【０１０６】
図１０は、本発明のさらに詳細なアドレスマップを示し、通常モード（シングルチップモード乃至外部メモリ拡張モード）及びフラッシュメモリのオンボード書き換えモードのユーザプログラムモード又はブートモード時におけるＮＭＩ（ノンマスカブル割り込み）のベクタアドレスとそれに対するＮＭＩ処理ルーチンの格納エリアを示している。なお、図１０は、図２及び図４に示されるアドレスマップの具体的な一例とされても良い。
【０１０７】
図１０に示されるように、シングルチップモード乃至外部メモリ拡張モードの様な通常モードにおいて、ＮＭＩ（ノンマスカブル割り込み）のベクタアドレスＮＭＩＡは、フラッシュメモリ１８のベクタアドレス格納エリアＡ−Ｖに格納され、そのベクタアドレスＮＭＩＡに対するＮＭＩ処理ルーチンＲＡは、フラッシュメモリ１８のアドレス空間Ａの一部に格納される。つまり、ベクタアドレスＮＭＩＡは、ＮＭＩ処理ルーチンＲＡの先頭アドレスを示している。従って、通常モードにおいて、ＮＭＩ（ノンマスカブル割り込み）が発生すると、ＣＰＵ１２はＮＭＩ（ノンマスカブル割り込み）のベクタアドレスＮＭＩＡをベクタフェッチ動作によって取得し、ベクタアドレスＮＭＩＡによって示されるアドレス、すなわちＮＭＩ処理ルーチンＲＡの先頭アドレスへベクタジャンプして、その処理を実行する。
【０１０８】
一方、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ１８のオンボード書き換え時、ＮＭＩ（ノンマスカブル割り込み）のベクタアドレスＮＭＩＢは、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖに格納され、そのベクタアドレスＮＭＩＢに対するＮＭＩ処理ルーチンＲＢは、内蔵ＲＡＭ１３のアドレス空間Ｂの一部に格納される。つまり、ベクタアドレスＮＭＩＢは、ＮＭＩ処理ルーチンＲＢの先頭アドレスを示している。ユーザプログラムモード又はブートモードにおけるフラッシュメモリ１８の書き換え時、ＮＭＩ（ノンマスカブル割り込み）が発生すると、ＣＰＵ１２はＮＭＩ（ノンマスカブル割り込み）のベクタアドレスＮＭＩＢをベクタフェッチ動作によって取得し、ベクタアドレスＮＭＩＢによって示されるアドレス、すなわちＮＭＩ処理ルーチンＲＢの先頭アドレスへベクタジャンプして、その処理を実行する。
【０１０９】
したがって、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ１８のオンボード書き換え時のＮＭＩ（ノンマスカブル割り込み）は、フラッシュメモリ１８に格納されるベクタアドレスＮＭＩＡ及びＮＭＩ処理ルーチンＲＡを使用せずに、内蔵ＲＡＭ１３に格納されたベクタアドレスＮＭＩＢ及びＮＭＩ処理ルーチンＲＢを利用して実行される。そのため、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ１８のオンボード書き換え時におけるＮＭＩ（ノンマスカブル割り込み）が、確実に処理される。この場合、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖ及びＮＭＩ処理ルーチンＲＢ等の格納エリアは書き換え時のワーク領域としての使用を制限されることに注意する必要がある。
【０１１０】
なお、ベクタアドレス格納エリアＡ−Ｖとベクタアドレス格納エリアＢ−Ｖとのアドレスの移動に関しては、図３乃至図５に示された方法が利用でき、コントロール信号ＣＯＮＴ乃至ＣＯＮＴ’によって、ベクタアドレス格納エリアＡ−Ｖとベクタアドレス格納エリアＢ−Ｖとのアドレスが移動される。
【０１１１】
図１１は、ユーザプログラムモード又はブートモードでのオンボード書き換え時におけるＮＭＩ（ノンマスカブル割り込み）の利用方法とその形成回路を説明するための図を示している。
【０１１２】
本発明に従うマイクロコンピュータ３０は、電圧維持手段１１０及びＮＭＩ信号生成手段１１２とともにプリント基板１２０に実装される。
【０１１３】
上記電圧維持手段１１０は、Ｖｃｃ電源（通常は、５Ｖ）が規定値以下、例えば４.５Ｖ以下に低下した場合、一定の時間（例えば、１ｍｓ程度）Ｖｃｃ端子を４.５Ｖ以上に維持する機能を含む。さらに、マイクロコンピュータ３０は、暴走して内部の状態を破壊することがないよう準備されたモード、例えば、システムクロックの発振を停止するソフトウェアスタンバイモードを設定する。この目的のため、上記電圧維持手段１１０は、例えば、大容量のコンデンサなどを利用して形成される。電圧維持手段１１０は、Ｖｃｃ電源がさらに低下しても、例えば、０Ｖに低下しても、マイクロコンピュータ３０の電源端子Ｖｃｃの電位を、マイクロコンピュータ３０がソフトウェアスタンバイモードを維持できる電圧（例えば、２.０Ｖ）に維持する。この目的のため、上記電圧維持手段１１０は、例えば、２次電池なども含ませて構成される。
【０１１４】
ＮＭＩ信号生成手段１１２は、Ｖｃｃ電源（通常は、５Ｖ）が規定値以下、例えば４.５Ｖ以下に低下した場合、それを検出してＮＭＩを生成する。ＮＭＩ信号生成手段１１２は、マイクロコンピュータ３０のＮＭＩ信号入力端子へ、５Ｖから０Ｖへ変化する立下がりエッジを生成し、ＮＭＩをアサートする。
【０１１５】
フラッシュメモリ１８のオンボード書き換えモード時（ユーザプログラムモード又はブートモード時）において、Ｖｃｃ電源（通常は、５Ｖ）が規定値以下に低下した場合、フラッシュメモリ１８のオンボード書き換えが実行できなくなる。そのため、上記に示されるように、Ｖｃｃ電源（通常は、５Ｖ）が規定値以下に低下した事が検出され、ＮＭＩが発生されて、フラッシュメモリ１８の書き換え作業が中断され、ＣＰＵ１２によってＮＭＩ処理ルーチンＲＢが実行されることになる。この場合、ＮＭＩがＣＰＵ１２によって受け付けられるとき、ＣＰＵ１２の汎用レジスタ（Ｒ０−Ｒ１５）やプログラムカウンタ（ＰＣ）等の内容は、特に制限されないが、外部メモリへスタックされる。
【０１１６】
したがって、ＮＭＩ処理ルーチンＲＢからの復帰時、前述のスタックポインタ（ＳＰ）の値に基づいて、ＮＭＩ受付時の状態へ、汎用レジスタ（Ｒ０−Ｒ１５）やプログラムカウンタ（ＰＣ）等の内容を復帰することができる利点がある。あるいは、スタックポインタ（ＳＰ）の値に基づいて、汎用レジスタ（Ｒ０−Ｒ１５）やプログラムカウンタ（ＰＣ）等の内容を格納する外部メモリをアクセスし、その内容からフラッシュメモリ１８の書き換え状況が解析できる等の利点がある。
【０１１７】
図１２は、フラッシュメモリ１８のオンボード書き換えモード（ユーザープログラムモードの例）時、その開始から終了時点までに実行される書き換え処理フローを示している。
【０１１８】
図１２に示されるように、まず最初に、開始ステップＳ１２として、フラッシュメモリ１８の書き換え開始の指令がＣＰＵ１２に対して発行される。ＣＰＵ１２は、必要があれば、書き換え作業エリアとされるべきアドレス領域の内容を待避するなどの前処理を実行する（ステップＳ１３）。
上記書き換え作業エリアは、例えば、内蔵ＲＡＭ１８のアドレス領域の一部、又は、外部メモリ拡張モードにおける外部ＲＡＭのアドレス領域の一部とされても良い。
【０１１９】
次のステップＳ１４として、書き換えルーチンが、例えば、ＣＰＵ１２によって、上記書き換え作業エリアに書き込まれる。上記書き換えルーチンは、書き込み制御プログラムやＮＭＩ処理ルーチンＲＢなどを含む。また、上記書き換えルーチンは、フラッシュメモリ１８内に格納されている場合、或いは、外部からマイクロコンピュータ３０へ供給する場合などがある。
【０１２０】
次に、ＮＭＩ処理ルーチンＲＢに対応するベクタアドレスＮＭＩＢが、例えば、ＣＰＵ１２によって、内蔵ＲＡＭ１３のベクタアドレス格納エリアＢ−Ｖへ書き込まれる（ステップＳ１５）。そして、図８に示されたように、ＣＰＵ１２が、ベクタアドレス移動許可ビットＶＡＴＥ８２をセット状態に設定する（ステップＳ１６）。以上のような前処理が実行される。
【０１２１】
その後、ステップＳ１７において、ＣＰＵ１２は、書き換え作業エリアに書き込まれた上記書き換えルーチンを実行し、フラッシュメモリ１８のプログラムデータの書き換えを実行する。フラッシュメモリ１８に書き込まれるべきプログラムデータは、マイクロコンピュータ３０の外部から供給される。書き換え処理（ステップＳ１７）の完了後、以下の後処理がＣＰＵ１２によって実行される。
【０１２２】
すなわち、ステップＳ１６で設定されたベクタアドレス移動許可ビットＶＡＴＥ８２をリセット状態へ変更する（ステップＳ１８）。すなわち、許可ビットＶＡＴＥ８２がクリアされる。その後、ＣＰＵ１２は、必要があれば、書き換え作業エリアの内容を回復するなどの後処理を実行する（ステップＳ１９）。すなわち、ステップＳ１３で待避処理が行われた場合には、ステップＳ１９でその回復処理が行われる。
【０１２３】
そして、ステップ２０において、フラッシュメモリ１８の書き換え完了の通知又はリセットスタートが実行され、フラッシュメモリ１８の書き換え処理が完了する。
【０１２４】
次に内蔵フラッシュメモリ１８の具体的構成が説明される。
【０１２５】
図１３及び図１４にはフラッシュメモリ１８のメモリセルの原理が示される。図１３に例示的に示されたメモリセルは、２層ゲート構造の絶縁ゲート型電界効果トランジスタにより構成されている。図１３において、１はＰ型シリコン基板、１４は上記シリコン基板１に形成されたＰ型半導体領域、１３はＮ型半導体領域、１５は低濃度のＮ型半導体領域である。８はフローティングゲートであり、トンネル絶縁膜としての薄い酸化膜７（例えば厚さ１０ｎｍ）を介して上記Ｐ型シリコン基板１上に形成されている。１１は酸化膜９を介して上記フローティングゲート８の上に形成されたコントロールゲートである。ソースは１３、１５によって構成され、ドレインは１３、１４によって構成される。このメモリセルに記憶される情報は、実質的にしきい値電圧の変化としてトランジスタに保持される。以下、特に述べないかぎり、メモリセルにおいて、情報を記憶するトランジスタ（以下、記憶トランジスタと称する）がＮチャンネル型の場合について述べる。
【０１２６】
メモリセルへの情報の書込み動作は、例えばコントロールゲート１１及びドレインに高圧を印加して、アバランシェ注入によりドレイン側からフローティングゲート８に電子を注入することで実現される。この書込み動作により記憶トランジスタは、図１４に示されるように、そのコントロールゲート７からみたしきい値電圧が、書込み動作を行わなかった消去状態の記憶トランジスタに比べて高くなる。
【０１２７】
一方、消去動作は、例えばソースに高圧を印加して、トンネル現象によりフローティングゲート８からソース側に電子を引き抜くことによって実現される。図１４に示されるように、消去動作により記憶トランジスタはそのコントロールゲート１１からみたしきい値電圧が低くされる。図１４では、書込み並びに消去状態の何れにおいても記憶トランジスタのしきい値は正の電圧レベルにされる。すなわちワード線からコントロールゲート１１に与えられるワード線選択レベルに対して、書込み状態のしきい値電圧は高くされ、消去状態のしきい値電圧は低くされる。双方のしきい値電圧とワード線選択レベルとがそのような関係を持つことによって、選択トランジスタを採用することなく１個のトランジスタでメモリセルを構成することができる。記憶情報を電気的に消去する場合においては、フローティングゲート８に蓄積された電子をソース電極に引く抜くことにより、記憶情報の消去が行われるため、比較的長い時間、消去動作を続けると、書込み動作の際にフローティングゲート８に注入した電子の量よりも多くの電子が引く抜かれることになる。そのため、電気的消去を比較的長い時間続けるような過消去を行うと、記憶トランジスタのしきい値電圧は例えば負のレベルになって、ワード線の非選択レベルにおいても選択されるような不都合を生ずる。尚、書込みも消去と同様にトンネル電流を利用して行うこともできる。
【０１２８】
読み出し動作においては、上記メモリセルに対して弱い書込み、すなわち、フローティングゲート８に対して不所望なキャリアの注入が行われないように、ドレイン及びコントロールゲート１１に印加される電圧が比較的低い値に制限される。例えば、１Ｖ程度の低電圧がドレイン１０に印加されるとともに、コントロールゲート１１に５Ｖ程度の低電圧が印加される。これらの印加電圧によって記憶トランジスタを流れるチャンネル電流の大小を検出することにより、メモリセルに記憶されている情報の“０”、“１”を判定することができる。
【０１２９】
図１５は前記記憶トランジスタを用いたメモリセルアレイの構成原理を示す。同図には代表的に４個の記憶トランジスタ（メモリセル）Ｑ１乃至Ｑ４が示される。Ｘ，Ｙ方向にマトリクス配置されたメモリセルにおいて、同じ行に配置された記憶トランジスタＱ１，Ｑ２（Ｑ３，Ｑ４）のコントロールゲート（メモリセルの選択ゲート）は、それぞれ対応するワード線ＷＬ１（ＷＬ２）に接続され、同じ列に配置された記憶トランジスタＱ１，Ｑ３（Ｑ２，Ｑ４）のドレイン領域（メモリセルの入出力ノード）は、それぞれ対応するデータ線ＤＬ１，ＤＬ２に接続されている。上記記憶トランジスタＱ１，Ｑ３（Ｑ２，Ｑ４）のソース領域は、ソース線ＳＬ１（ＳＬ２）に結合される。
【０１３０】
図１６にはメモリセルに対する消去動作並びに書込み動作のための電圧条件の一例が示される。同図においてメモリ素子はメモリセルを意味し、ゲートはメモリセルの選択ゲートとしてのコントロールゲートを意味する。同図において負電圧方式の消去はコントロールゲートに例えば−１０Ｖのような負電圧を印加することによって消去に必要な高電界を形成する。同図に例示される電圧条件から明らかなように、正電圧方式の消去にあっては少なくともソースが共通接続されたメモリセルに対して一括消去を行うことができる。したがって図１５の構成において、ソース線ＳＬ１，ＳＬ２が接続されていれば、４個のメモリセルＱ１乃至Ｑ４は一括消去可能にされる。この場合、同一ソース線につながるメモリビットの数を変えることによりメモリブロックのサイズを任意に設定することができる。ソース線分割方式には図１５に代表的に示されるようなデータ線を単位とする場合（共通ソース線をデータ線方向に延在させる）の他にワード線を単位とする場合（共通ソース線をワード線方向に延在させる）がある。一方、負電圧方式の消去にあっては、コントロールゲートが共通接続されたメモリセルに対して一括消去を行うことができる。
【０１３１】
図１７には一括消去可能なメモリブロックの記憶容量を相違させたフラッシュメモリ１８の一例回路ブロック図が示される。
【０１３２】
同図に示されるフラッシュメモリ１８（以下ＦＭＲＹとも記す）は、８ビットのデータ入出力端子Ｄ０〜Ｄ７を有し、各データ入出力端子毎にメモリマットＡＲＹ０〜ＡＲＹ７を備える。メモリマットＡＲＹ０〜ＡＲＹ７は、特に制限されないが、相対的に記憶容量の大きなメモリブロックＬＭＢと相対的に記憶容量の小さなメモリブロックＳＭＢとに２分割されている。図には代表的にメモリマットＡＲＹ０の詳細が示されているが、その他のメモリマットＡＲＹ１〜ＡＲＹ７も同様に構成されている。各メモリブロックは、同一の記憶容量とされてもよい。
【０１３３】
夫々のメモリマットＡＲＹ０〜ＡＲＹ７には前記図１３で説明した２層ゲート構造の絶縁ゲート型電界効果トランジスタによって構成されたメモリセルＭＣがマトリクス配置されている。同図においてＷＬ０〜ＷＬｎは全てのメモリマットＡＲＹ０〜ＡＲＹ７に共通のワード線である。同一行に配置されたメモリセルのコントロールゲートは、それぞれ対応するワード線に接続される。夫々のメモリマットＡＲＹ０〜ＡＲＹ７において、同一列に配置されたメモリセルＭＣのドレイン領域は、それぞれ対応するデータ線ＤＬ０〜ＤＬ７に接続されている。メモリブロックＳＭＢを構成するメモリセルＭＣのソース領域はソース線ＳＬ１に共通接続され、メモリブロックＬＭＢを構成するメモリセルＭＣのソース領域はソース線ＳＬ２に共通接続されている。
【０１３４】
前記ソース線ＳＬ１，ＳＬ２には電圧出力回路ＶＯＵＴ１，ＶＯＵＴ２から消去に利用される高電圧Ｖｐｐが供給される。電圧出力回路ＶＯＵＴ１，ＶＯＵＴ２の出力動作は、消去ブロック指定レジスタのビットＢ１，Ｂ２の値によって選択される。例えば消去ブロック指定レジスタのビットＢ１に”１”が設定されることによって各メモリマットＡＲＹ０〜ＡＲＹ７のメモリブロックＳＭＢだけが一括消去可能にされる。消去ブロック指定レジスタのビットＢ２に”１”が設定された場合は、各メモリマットＡＲＹ０〜ＡＲＹ７のメモリブロックＬＭＢだけが一括消去可能にされる。双方のビットＢ１，Ｂ２に”１”が設定されたときはフラッシュメモリ１８の全体が一括消去可能にされる。
【０１３５】
前記ワード線ＷＬ０〜ＷＬｎの選択は、ロウアドレスバッファＸＡＢＵＦＦ及びロウアドレスラッチＸＡＬＡＴを介して取り込まれるロウアドレス信号ＡＸをロウアドレスデコーダＸＡＤＥＣが解読することによって行われる。ワードドライバＷＤＲＶはロウアドレスデコーダＸＡＤＥＣから出力される選択信号に基づいてワード線を駆動する。データ読出し動作においてワードドライバＷＤＲＶは電圧選択回路ＶＳＥＬから供給される５Ｖのような電圧Ｖｃｃと０Ｖのような接地電位とを電源として動作され、選択されるべきワード線を電圧Ｖｃｃによって選択レベルに駆動し、非選択とされるべきワード線を接地電位のような非選択レベルに維持させる。データの書込み動作においてワードドライバＷＤＲＶは、電圧選択回路ＶＳＥＬから供給される１２Ｖのような電圧Ｖｐｐと０Ｖのような接地電位とを電源として動作され、選択されるべきワード線を１２Ｖのような書込み用高電圧レベルに駆動する。データの消去動作においてワードドライバＷＤＲＶの出力は０Ｖのような低い電圧レベルにされる。
【０１３６】
夫々のメモリマットＡＲＹ０〜ＡＲＹ７において前記データ線ＤＬ０〜ＤＬ７はカラム選択スイッチＹＳ０〜ＹＳ７を介して共通データ線ＣＤに共通接続される。カラム選択スイッチＹＳ０〜ＹＳ７のスイッチ制御は、カラムアドレスバッファＹＡＢＵＦＦ及びカラムアドレスラッチＹＡＬＡＴを介して取り込まれるカラムアドレス信号ＡＹをカラムアドレスデコーダＹＡＤＥＣが解読することによって行われる。カラムアドレスデコーダＹＡＤＥＣの出力選択信号は全てのメモリマットＡＲＹ０〜ＡＲＹ７に共通に供給される。したがって、カラムアドレスデコーダＹＡＤＥＣの出力選択信号のうちの何れか一つが選択レベルにされることにより、各メモリマットＡＲＹ０〜ＡＲＹ７において共通データ線ＣＤには１本のデータ線が接続される。
【０１３７】
メモリセルＭＣから共通データ線ＣＤに読出されたデータは選択スイッチＲＳを介してセンスアンプＳＡＭＰに与えられ、ここで増幅されて、データ出力ラッチＤＯＬＡＴを介してデータ出力バッファＤＯＢＵＦＦから外部に出力される。前記選択スイッチＲＳは読出し動作に同期して選択レベルにされる制御信号φｒによってオン状態にされる。外部から供給される書込みデータはデータ入力バッファＤＩＢＵＦＦを介してデータ入力ラッチ回路ＤＩＬＡＴに保持される。データ入力ラッチ回路ＤＩＬＡＴに保持されたデータが”０”のとき、書込み回路ＷＲＩＴは選択スイッチＷＳを介して共通データ線ＣＤに書込み用の高電圧を供給する。この書込み用高電圧はカラムアドレス信号ＡＹによって選択されたデータ線を通して、ロウアドレス信号ＡＸでコントロールゲートに高電圧が印加されるメモリセルのドレインに供給され、これによって当該メモリセルが書込みされる。前記選択スイッチＷＳは書込み動作に同期して選択レベルにされる制御信号φｗによってオン状態にされる。書込み消去の各種タイミングや電圧の選択制御は書込み消去制御回路ＷＥＣＯＮＴが生成する。
【０１３８】
図１８には図１のマイクロコンピュータ３０に内蔵されるフラッシュメモリ１８（ＦＭＲＹ）の全体的なブロック図が示される。同図においてＡＲＹは前記図１３で説明した２層ゲート構造の絶縁ゲート型電界効果トランジスタによって構成されたメモリセルをマトリクス配置したメモリアレイである。このメモリアレイＡＲＹは図１７で説明した構成と同様に、メモリセルのコントロールゲートはそれぞれ対応するワード線に接続され、メモリセルのドレイン領域はそれぞれ対応するデータ線に接続され、メモリセルのソース領域はメモリブロック毎に共通のソース線に接続されているが、メモリブロックの分割態様は図１７とは相違される。例えば、相対的にそれぞれの記憶容量が大きな７個の大メモリブロック（大ブロック）ＬＭＢ０乃至ＬＭＢ６と、相対的にそれぞれの記憶容量が小さな８個の小メモリブロック（小ブロック）ＳＭＢ０乃至ＳＭＢ７とに分割されている。大メモリブロックはプログラム格納領域又は大容量データ格納領域などに利用される。小メモリブロックは小容量データ格納領域などに利用される。
【０１３９】
図１８において、ＡＬＡＴはアドレス信号ＰＡＢ０乃至ＰＡＢ１５のラッチ回路である。第１動作モード（ＰＲＯＭモード以外の動作モード）においてそのアドレス信号ＰＡＢ０乃至ＰＡＢ１５は中央処理装置ＣＰＵ１２の出力アドレス信号に対応され、アドレスバス２４から供給される。第２動作モード（ＰＲＯＭモード）では、アドレス信号ＰＡＢ０乃至ＰＡＢ１５はＰＲＯＭライタの出力アドレス信号に対応される。ＸＡＤＥＣはアドレスラッチＡＬＡＴを介して取り込まれるロウアドレス信号を解読するロウアドレスデコーダである。ＷＤＲＶはロウアドレスデコーダＸＡＤＥＣから出力される選択信号に基づいてワード線を駆動するワードドライバである。データ読出し動作においてワードドライバＷＤＲＶは５Ｖのような電圧でワード線を駆動し、データの書込み動作では１２Ｖのような高電圧でワード線を駆動する。データの消去動作においてワードドライバＷＤＲＶの全ての出力は０Ｖのような低い電圧レベルにされる。ＹＡＤＥＣはアドレスラッチＹＡＬＡＴを介して取り込まれるカラムアドレス信号を解読するカラムアドレスデコーダである。ＹＳＥＬはカラムアドレスデコーダＹＡＤＥＣの出力選択信号に従ってデータ線を選択するカラム選択回路である。ＳＡＭＰはデータ読出し動作においてカラム選択回路ＹＳＥＬで選択されたデータ線からの読出し信号を増幅するセンスアンプである。ＤＯＬＡＴはセンスアンプＳＡＭＰの出力を保持するデータ出力ラッチである。ＤＯＢＵＦＦはデータ出力ラッチＤＯＬＡＴが保持するデータを外部に出力するためのデータ出力バッファである。図においてＰＤＢ０乃至ＰＤＢ７は下位８ビット（１バイト）データであり、図１のデータバス２６に供給される。ＰＤＢ８乃至ＰＤＢ１５は上位８ビット（１バイト）データであり、図１のデータバス２５に供給される。この例に従えば出力データは最大２バイトとされる。ＤＩＢＵＦＦは外部から供給される書込みデータを取り込むためのデータ入力バッファである。データ入力バッファＤＩＢＵＦＦから取り込まれたデータはデータ入力ラッチ回路ＤＩＬＡＴに保持される。データ入力ラッチ回路ＤＩＬＡＴに保持されたデータが”０”のとき、書込み回路ＷＲＩＴはカラム選択回路ＹＳＥＬで選択されたデータ線に書込み用高電圧を供給する。この書込み用高電圧はロウアドレス信号に従ってコントロールゲートに高電圧が印加されるメモリセルのドレインに供給され、これによって当該メモリセルが書込みされる。ＥＲＡＳＥＣは指定されたメモリブロックのソース線に消去用高電圧を供給してメモリブロックの一括消去を行うための消去回路である。
【０１４０】
ＦＣＯＮＴは、フラッシュメモリＦＭＲＹにおけるデータ読出し動作のタイミング制御、及び書込み消去のための各種タイミングや電圧の選択制御などを行う制御回路である。この制御回路ＦＣＯＮＴは、コントロールレジスタＣＲＥＧを備える。
【０１４１】
図１９にはコントロールレジスタＣＲＥＧの一例が示される。コントロールレジスタＣＲＥＧは、それぞれ８ビットのプログラム／イレーズ制御レジスタＰＥＲＥＧと、消去ブロック指定レジスタＭＢＲＥＧ１及びＭＢＲＥＧ２によって構成される。プログラム／イレーズ制御レジスタＰＥＲＥＧにおいて、Ｖｐｐは書換え用高電圧印加に応じて”１”にされる高電圧印加フラグである。Ｅビットは消去動作を指示するビットとされ、ＥＶビットは消去におけるベリファイ動作の指示ビットとされる。Ｐビットは書込み動作（プログラム動作）の指示ビットとされ、ＰＶビットは書込みにおけるベリファイ動作の指示ビットとされる。消去ブロック指定レジスタＭＢＲＥＧ１及びＭＢＲＥＧ２は、それぞれ７分割された大ブロックと８分割された小ブロックに含まれる何れのメモリブロックを消去するかを指定するレジスタであり、それらに含まれるビットは、特に制限されないが、１対１で対応されるメモリブロックの指定用ビットとされ、例えばビット”１”は対応メモリブロックの選択を意味し、ビット”０”は対応メモリブロックの非選択を意味する。例えば、消去ブロック指定レジスタＭＢＲＥＧ２の第７ビットが”１”のときは、小メモリブロックＳＭＢ７の消去が指定される。
【０１４２】
上記コントロールレジスタＣＲＥＧは外部からリード・ライト可能にされている。制御回路ＦＣＯＮＴは、そのコントロールレジスタＣＲＥＧの設定内容を参照し、それにしたがって消去・書込みなどの制御を行う。外部においては、そのコントロールレジスタＣＲＥＧの内容を書換えることによって、消去・書込み動作の状態を制御することができる。
【０１４３】
図１８において、制御回路ＦＣＯＮＴには、制御信号としてＦＬＭ，ＭＳ−ＦＬＮ，ＭＳ−ＭＩＳＮ，Ｍ２ＲＤＮ，Ｍ２ＷＲＮ，ＭＲＤＮ，ＭＷＲＮ，ＩＯＷＯＲＤＮ，及びＲＳＴが供給され、更に、上位１バイトのデータＰＤＢ８乃至ＰＤＢ１５と、アドレス信号ＰＡＢ０乃至ＰＡＢ１５の所定ビットが与えらる。
【０１４４】
制御信号ＦＬＭは、フラッシュメモリＦＭＲＹの動作モードを指定する信号であり、その”０”が第１動作モードを指定し、”１”が第２動作モードを指定する。この信号ＦＬＭは、例えば前記モード信号ＭＤ０乃至ＭＤ２に基づいて形成される。
【０１４５】
制御信号ＭＳ−ＦＬＮは、フラッシュメモリＦＭＲＹの選択信号であり、その”０”が選択を指示し、”１”が非選択を指示する。第１動作モードでは中央処理装置（ＣＰＵ）１２がその制御信号ＭＳ−ＦＬＮを出力し、第２動作モードにおいてその制御信号ＭＳ−ＦＬＮは、ＰＲＯＭライタから供給されるチップ・イネーブル信号ＣＥ＊に対応される。
【０１４６】
制御信号ＭＳ−ＭＩＳＮはコントロールレジスタＣＲＥＧの選択信号である。このとき、プログラム／イレーズ制御レジスタＰＥＲＥＧと消去ブロック指定レジスタＭＢＲＥＧ１及びＭＢＲＥＧ２の何れを選択するかは、アドレス信号ＰＡＢ０乃至ＰＡＢ１５の所定ビットを参照して決定される。第１動作モードでは中央処理装置（ＣＰＵ）１２がその制御信号ＭＳ−ＭＩＳＮを出力する。第２動作モードでは、特に制限されないが、ＰＲＯＭライタが出力する最上位アドレスビットＥＡ１６がその制御信号ＭＳ−ＭＩＳＮとみなされる。
【０１４７】
Ｍ２ＲＤＮはメモリリードストローブ信号、Ｍ２ＷＲＮはメモリライトストローブ信号、ＭＲＤＮはコントロールレジスタＣＲＥＧのリード信号、ＭＷＲＮはコントロールレジスタＣＲＥＧのライト信号である。第１動作モードでは中央処理装置（ＣＰＵ）１２がそれら制御信号を出力する。第２動作モードでは、特に制限されないが、ＰＲＯＭライタから供給されるライトイネーブル信号ＷＥ＊が前記信号Ｍ２ＷＲＮ，ＭＷＲＮとみなされ、ＰＲＯＭライタから供給されるアウトプットイネーブル信号ＯＥ＊が前記信号Ｍ２ＲＤＮ，ＭＲＤＮとみなされる。尚、メモリライトストローブ信号Ｍ２ＷＲＮは、メモリセルに書込むべきデータをデータ入力ラッチ回路ＤＩＬＡＴに書込むためのストローブ信号とみなされる。メモリセルへの実際の書込みは前記コントロールレジスタＣＲＥＧのＰビットをセットすることによって開始される。
【０１４８】
ＩＯＷＯＲＤＮはフラッシュメモリＦＭＲＹに対する８ビットリードアクセスと１６ビットリードアクセスとの切換え信号とされる。第２動作モードにおいては当該制御信号ＩＯＷＯＲＤＮは８ビットリードアクセスを指示する論理値に固定される。
【０１４９】
ＲＳＴはフラッシュメモリＦＭＲＹのリセット信号である。この信号ＲＳＴによってフラッシュメモリＦＭＲＹがリセットされることにより、或は前記プログラム／イレーズ制御レジスタＰＥＲＥＧのＶｐｐフラグが”０”にされることにより、前記プログラム／イレーズ制御レジスタＰＥＲＥＧにおけるＥＶ，ＰＶ，Ｅ，Ｐの各モード設定ビットがクリアされる。したがって、図７に示されるゲートＧ６の出力がリセット信号ＲＳＴとされることによって、制御レジスタＰＥＲＥＧの各ビットがクリアできる。
【０１５０】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１５１】
例えば、上記実施例ではフラッシュメモリの書込みはホットエレクトロンで行なわれることにしたが、トンネル効果により行うものであってもよい。また、上記実施例では内蔵ＲＯＭ１８としてフラッシュメモリを適用したが、ＥＥＰＲＯＭと称されるようなオンボード書込み可能とされる他の半導体メモリを適用することができる。
【０１５２】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップ・マイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種データ処理装置に広く適用することができる。本発明は、少なくとも電気的に消去又は書込みが可能なプログラムメモリを含むことを条件に適用することができる。
【０１５３】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０１５４】
すなわち、誤動作排除手段により、プログラムメモリに正しいデータが存在しない場合における上記プログラムメモリの消去又は書込み中の割込み発生に起因する誤動作が排除され、それによって、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【０１５５】
プログラムメモリの消去又は書込み中の割込み要求に応じて、ランダムアクセス可能な記憶手段の一部が、プログラムメモリのベクタアドレスエリアに移動されることにより、プログラムメモリの消去又は書込み中における割込み発生に対して正しいベクタアドレスの取得が可能とされ、それにより、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【０１５６】
プログラムメモリの消去又は書込み中の割込み要求に応じて、プログラムメモリのベクタアドレスエリアが前記記憶手段に移動されることにより、プログラムメモリの消去又は書込み中における割込み発生に対して正しいベクタアドレスの取得が可能とされ、それにより、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【０１５７】
プログラムメモリの消去又は書込み要求に応じてプログラムメモリの消去又は書込みが行われる期間、中央処理装置に対する割込み要求が排除されることにより、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【０１５８】
プログラムメモリの消去又は書込み要求に応じてプログラムメモリの消去又は書込みが行われる期間に、中央処理装置に対して発生された割込み要求に呼応して、プログラムメモリの消去又は書込みのための処理が中止されることにより、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
【０１５９】
したがって、フラッシュメモリのようなプログラムメモリの消去・書き込みプログラム（書き換え制御プログラム）の作成ミスや誤動作、及び外部回路の操作ミス等で誤って生じた割り込み要求に対しても、フラッシュメモリのようなプログラムメモリの消去・書き換えが自動的に中止され、割り込み処理の中でフラッシュメモリのようなプログラムメモリの消去・書き換えの中止状態を記録する処理を実行する事によって、フラッシュメモリなどの電気的に書き換え可能なプログラムメモリを過消去・過書き込み若しくはその中間状態等の異常状態から保護できる。従って、マイクロコンピュータ応用システムを破壊から保護できる。
【図面の簡単な説明】
【図１】本発明の一実施例であるシングルチップ・マイクロコンピュータの全体的な構成例ブロック図である。
【図２】上記マイクロコンピュータに含まれる内蔵ＲＡＭの一部をベクタアドレスエリアに移動する場合のアドレスマップの説明図である。
【図３】内蔵ＲＡＭのベクタアドレス格納エリア（Ｂ−Ｖ）をフラッシュメモリのベクタアドレス格納エリア（Ａ−Ｖ）へアドレス変換する場合のバスコントローラの主要部構成例を内蔵ＲＯＭ及び内蔵ＲＡＭとの関係で示す説明図である。
【図４】本発明の別の実施例におけるアドレスマップの説明図である。
【図５】図１のバスコントローラに設けられる誤動作排除手段としてのアドレス変換回路（ＡＣＣ）の一例説明図である。
【図６】内蔵ＲＯＭとしてのフラッシュメモリの消去又は書込み中において、ＮＭＩを含む全割り込を無視するためのゲート（Ｇ５）を含むバスコントローラの説明図である。
【図７】内蔵ＲＯＭの消去、書込み、又はベリファイ中に書込み要求が発生した場合に、内蔵ＲＯＭの消去制御ビットレジスタ、書込み制御ビットレジスタ、ベリファイ制御ビットレジスタをリセットする誤動作排除手段としての制御論理回路（Ｇ６）を示す説明図である。
【図８】図３において説明されたコントロール信号（ＣＯＮＴ）及び図５において説明されたコントロール信号（ＣＯＮＴ’）の生成回路の一例を示す論理回路図である。
【図９】図１のマイクロコンピュータのフラッシュメモリのプログラミング方法をＰＲＯＭモード及びオンボード書き込みモードとの関係で示す説明図である。
【図１０】通常モード（シングルチップモード乃至外部メモリ拡張モード）及びフラッシュメモリのオンボード書き換えモード時のにおけるＮＭＩのベクタアドレスとそれに対するＮＭＩ処理ルーチンの格納エリアを更に詳細に示す説明図である。
【図１１】オンボード書き換えモード時におけるＮＭＩの形成回路を説明するためのブロック図である。
【図１２】フラッシュメモリのオンボード書き換えモード（ユーザープログラムモードの例）時にその開始から終了時点までに実行される書き換え処理フローを示すフローチャートである。
【図１３】フラッシュメモリのメモリセルの一例断面図である。
【図１４】フラッシュメモリのメモリセルの消去状態と書き込み状態の閾値を示す説明図である。
【図１５】フラッシュメモリのメモリアレイの構成を示す回路図である。
【図１６】フラッシュメモリのメモリセルに対する消去動作及び書き込み動作のための電圧条件の一例を示す説明図である。
【図１７】フラッシュメモリの部分的なブロック図である。
【図１８】フラッシュメモリの全体的なブロック図である。
【図１９】フラッシュメモリのコントロールレジスタの一例を示す説明図である。
【符号の説明】
１０  割込み制御回路
１１  クロック発振器
１２  ＣＰＵ
１３  内蔵ＲＡＭ
１４  ホストインタフェース
１５  シリアルコミュニケーションインタフェース
１６  Ａ／Ｄ変換器
１７  Ｄ／Ａ変換器
１８  内蔵ＲＯＭ
１９  ウォッチドッグタイマ
２０  １６ビットフリーランニングタイマ
２１  ８ビットタイマ
２２  ＰＷＭタイマ
２４  アドレスバス
２５，２６  データバス
２７  バスコントローラ
２８  内蔵ＲＡＭ選択回路
２９  内蔵ＲＯＭ選択回路
３０  シングルチップ・マイクロコンピュータ
３１  内蔵ＲＯＭ／内蔵ＲＡＭ選択回路
３２  消去制御ビットレジスタ
３２  書込み制御ビットレジスタ
３３  ベリファイ制御ビットレジスタ
Ｇ４，Ｇ５，Ｇ６  ゲート
【図１】
0003669625.tif 000002
【図２】
0003669625.tif 000003
【図３】
0003669625.tif 000004
【図４】
0003669625.tif 000005
【図５】
0003669625.tif 000006
【図６】
0003669625.tif 000007
【図７】
0003669625.tif 000008
【図８】
0003669625.tif 000009
【図９】
0003669625.tif 000010
【図１０】
0003669625.tif 000011
【図１１】
0003669625.tif 000012
【図１２】
0003669625.tif 000013
【図１３】
0003669625.tif 000014
【図１４】
0003669625.tif 000015
【図１５】
0003669625.tif 000016
【図１６】
0003669625.tif 000017
【図１７】
0003669625.tif 000018
【図１８】
0003669625.tif 000019
【図１９】
0003669625.tif 000020