(57)【要約】【課題】  電源電圧が不揮発性メモリの動作下限電圧よりも低い状態でも動作し、ＲＯＭ内蔵マイクロコンピュータと動作が一致するマイクロコンピュータを提供する。【解決手段】  電源電圧Ｖａが転送開始電圧Ｖ２よりも低くなると、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムは、第１〜第３の補助ＲＡＭ２１〜２３に転送される。ＶａがフラッシュＥＥＰＲＯＭ２０の動作下限電圧Ｖ１よりも低くなると、ＣＰＵ１１は第１〜第３の補助ＲＡＭ２１〜２３に記憶されたプログラムを実行する。第１および第２の補助ＲＡＭ２１、２２は、ＣＰＵ１１によるプログラム実行用とプログラム転送回路１３によるプログラム転送用とに切り替えて使用される。ＶａがＶ１よりも低い状態でプログラム転送を行うときには、昇圧回路１６が動作し、フラッシュＥＥＰＲＯＭ２０にはＶ１よりも高い電源電圧が供給される。【選択図】  図１
2005346282.tif 000002
【特許請求の範囲】
【請求項１】
電気的に書き換え可能な不揮発性メモリを内蔵したマイクロコンピュータであって、
中央処理装置と、
前記中央処理装置によって実行されるプログラムを記憶する、電気的に書き換え可能な不揮発性メモリと、
前記不揮発性メモリよりも容量が小さい複数の揮発性メモリと、
前記中央処理装置と前記不揮発性メモリと前記揮発性メモリとを接続するシステムバスと、
前記システムバスとは別個に設けられ、前記不揮発性メモリと前記揮発性メモリとを接続するプログラム転送用バスと、
前記プログラム転送用バスを用いて、前記不揮発性メモリに記憶されたプログラムの一部を前記揮発性メモリに転送するプログラム転送部と、
前記中央処理装置から前記不揮発性メモリに対して出力されたアドレスを、前記揮発性メモリに対するアドレスに変換するアドレス変換部と、
前記不揮発性メモリに供給される電源電圧を検知する電圧検知部とを備え、
前記揮発性メモリには、前記中央処理装置によるプログラムの実行状況に応じて転送用メモリと実行用メモリとに切り替えて使用される複数のメモリが含まれており、
前記電圧検知部で検知された電圧が第１の電圧よりも低い状態では、前記プログラム転送部は、前記不揮発性メモリに記憶されたプログラムの一部を前記転送用メモリに転送し、前記アドレス変換部は、前記中央処理装置から前記不揮発性メモリに対して出力されたアドレスを前記実行用メモリに対するアドレスに変換することを特徴とする、マイクロコンピュータ。
【請求項２】
前記プログラム転送部は、前記中央処理装置が前記不揮発性メモリにアクセスしていないときに、前記不揮発性メモリにアクセスすることを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項３】
前記電圧検知部で検知された電圧が前記第１の電圧よりも低いときに、前記不揮発性メモリに供給される電源電圧を昇圧する昇圧部をさらに備えた、請求項１に記載のマイクロコンピュータ。
【請求項４】
前記昇圧部は、前記電圧検知部で検知された電圧が前記第１の電圧よりも低く、かつ、前記プログラム転送部がプログラム転送を行うときに、前記不揮発性メモリに供給される電源電圧を昇圧することを特徴とする、請求項３に記載のマイクロコンピュータ。
【請求項５】
前記電圧検知部で検知された電圧が、前記第１の電圧と、前記第１の電圧よりも高い第２の電圧との間にある状態では、前記プログラム転送部はプログラム転送を行い、前記アドレス変換部はアドレス変換を行わないことを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項６】
前記第１の電圧が、前記不揮発性メモリの動作下限電圧に等しいことを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項７】
前記第１の電圧が、前記不揮発性メモリの動作下限電圧よりも高いことを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項８】
前記揮発性メモリのうち、前記中央処理装置が既に実行したプログラムを記憶したメモリが前記転送用メモリとして使用され、前記中央処理装置が今後実行するプログラムを記憶したメモリが前記実行用メモリとして使用されることを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項９】
前記転送用メモリと前記実行用メモリとの切り替えは、前記中央処理装置が所定範囲のプログラムの実行を完了したときに行われることを特徴とする、請求項８に記載のマイクロコンピュータ。
【請求項１０】
前記電圧検知部で検知された電圧が前記第１の電圧よりも低い状態では、前記転送用メモリと前記実行用メモリとの切り替えは、前記中央処理装置が前記実行用メモリに記憶されたプログラムの実行を完了したときに行われることを特徴とする、請求項９に記載のマイクロコンピュータ。
【請求項１１】
前記電圧検知部で検知された電圧が、前記第１の電圧と、前記第１の電圧よりも高い第２の電圧との間にある状態では、前記プログラム転送部はプログラム転送を行い、前記アドレス変換部はアドレス変換を行わず、前記転送用メモリと前記実行用メモリとの切り替えは、前記中央処理装置が前記不揮発性メモリに記憶されたプログラムのうち前記実行用メモリに記憶された部分の実行を完了したときに行われることを特徴とする、請求項９に記載のマイクロコンピュータ。
【請求項１２】
前記不揮発性メモリは、前記中央処理装置によって実行されるプログラムの一部としてサブルーチンプログラムを記憶し、
前記揮発性メモリには、前記転送用メモリおよび前記実行用メモリとして使用されないサブルーチンプログラム用メモリが含まれており、
前記プログラム転送部は、前記電圧検知部で検知された電圧が前記第１の電圧よりも低くなる前に、前記不揮発性メモリに記憶されたサブルーチンプログラムを前記サブルーチンプログラム用メモリに転送することを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項１３】
前記不揮発性メモリは、前記中央処理装置によって実行されるプログラムの一部として割込みベクタテーブルを記憶し、
前記揮発性メモリのうち、前記転送用メモリおよび前記実行用メモリとして使用されるメモリは、それぞれ独自に割込みベクタテーブル領域を有しており、
前記プログラム転送部は、前記電圧検知部で検知された電圧が前記第１の電圧よりも低くなる前に、前記不揮発性メモリに記憶された割込みベクタテーブルを、前記転送用メモリおよび前記実行用メモリとして使用されるメモリのそれぞれに含まれる前記割込みベクタテーブル領域に転送することを特徴とする、請求項１に記載のマイクロコンピュータ。
【請求項１４】
前記プログラム転送用バスに接続され、外部に設けた不揮発性メモリ書き換え装置との間で通信を行う外部インターフェイス部をさらに備えた、請求項１に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的に書き換え可能な不揮発性メモリを内蔵したマイクロコンピュータに関し、より特定的には、電源電圧が内蔵した不揮発性メモリの動作下限電圧よりも低いときでも動作するマイクロコンピュータに関する。
【背景技術】
【０００２】
組み込み型マイクロコンピュータを用いてシステム開発を行うときには、プログラムの変更を容易に行い、開発期間を短縮するために、電気的に書き換え可能な不揮発性メモリの一種であるフラッシュＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory ）を内蔵したマイクロコンピュータが使用される場合が多い。ところが、フラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータの価格は、プログラム書き換えできないマイクロコンピュータ（例えば、マスクＲＯＭ内蔵マイクロコンピュータ）よりも高い。そこで、プログラム開発を短期間に行い、かつ、量産コストを低減するために、プログラム開発にはフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータを用い、量産にはマスクＲＯＭ内蔵マイクロコンピュータを用いることがある。あるいは、量産時期を前倒しするために、プログラム開発が完了した時点でマスクＲＯＭ内蔵マイクロコンピュータの生産投入を行うとともに、その生産が完了するまでの間、フラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータを用いて先行量産を行うこともある。
【０００３】
一般に、フラッシュＥＥＰＲＯＭの動作電圧範囲は、マスクＲＯＭよりも狭い。このため、フラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータとマスクＲＯＭ内蔵マイクロコンピュータとを併用してシステム開発や量産を行うと、動作電圧範囲の違いに起因して、２種類のマイクロコンピュータが異なる動作を行うことが問題となる場合がある。
【０００４】
電源電圧がフラッシュＥＥＰＲＯＭの動作下限電圧よりも低いときでも動作するフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータとしては、従来から、特許文献１に記載されたマイクロコンピュータが知られている。一般に、ＲＡＭの動作電圧範囲は、フラッシュＥＥＰＲＯＭよりも広い。そこで、特許文献１に記載されたマイクロコンピュータは、プログラムの一部を記憶するＲＡＭを備え、フラッシュＥＥＰＲＯＭの動作下限電圧よりも低い電源電圧の供給を受ける。このマイクロコンピュータは、供給された電源電圧を内部で昇圧して、フラッシュＥＥＰＲＯＭに記憶されたプログラムをＲＡＭに転送し、プログラム転送後は昇圧を停止して、ＲＡＭに記憶されたプログラムを実行する。これにより、マイクロコンピュータの消費電力を削減することができる。
【特許文献１】特開２００２−７３７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来のフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータでは、フラッシュＥＥＰＲＯＭに記憶されたプログラムをＲＡＭに転送するときに、中央処理装置（以下、ＣＰＵという）を停止させる必要がある。これに対して、マスクＲＯＭ内蔵マイクロコンピュータでは、プログラムを転送する必要はなく、ＣＰＵを停止させるも必要ない。このため、上記従来のフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータとマスクＲＯＭ内蔵マイクロコンピュータとを併用してシステム開発や量産を行う場合、２種類のマイクロコンピュータを同じ電源電圧で動作させることはできても、２種類のマイクロコンピュータの動作を一致させることはできない。
【０００６】
また、従来のフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータでは、フラッシュＥＥＰＲＯＭに記憶されたプログラムを書き換えるときに、ＣＰＵをプログラム書き換え動作に占有させる必要がある。このため、従来のフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータでは、ＣＰＵを停止させることなく、フラッシュＥＥＰＲＯＭに記憶されたプログラムを書き換えることができない。
【０００７】
それ故に、本発明の目的は、電源電圧が内蔵した不揮発性メモリの動作下限電圧よりも低い状態でも動作し、ＲＯＭ内蔵マイクロコンピュータと動作が一致するマイクロコンピュータを提供することである。また、本発明の他の目的は、ＣＰＵを停止させることなく、不揮発性メモリに記憶されたプログラムを書き換えることができるマイクロコンピュータを提供することである。
【課題を解決するための手段】
【０００８】
本発明のマイクロコンピュータは、電気的に書き換え可能な不揮発性メモリを内蔵したマイクロコンピュータであって、中央処理装置と、中央処理装置によって実行されるプログラムを記憶する、電気的に書き換え可能な不揮発性メモリと、不揮発性メモリよりも容量が小さい複数の揮発性メモリと、中央処理装置と不揮発性メモリと揮発性メモリとを接続するシステムバスと、システムバスとは別個に設けられ、不揮発性メモリと揮発性メモリとを接続するプログラム転送用バスと、プログラム転送用バスを用いて、不揮発性メモリに記憶されたプログラムの一部を揮発性メモリに転送するプログラム転送部と、中央処理装置から不揮発性メモリに対して出力されたアドレスを、揮発性メモリに対するアドレスに変換するアドレス変換部と、不揮発性メモリに供給される電源電圧を検知する電圧検知部とを備える。揮発性メモリには、中央処理装置によるプログラムの実行状況に応じて転送用メモリと実行用メモリとに切り替えて使用される複数のメモリが含まれており、電圧検知部で検知された電圧が第１の電圧よりも低い状態では、プログラム転送部は、不揮発性メモリに記憶されたプログラムの一部を転送用メモリに転送し、アドレス変換部は、中央処理装置から不揮発性メモリに対して出力されたアドレスを実行用メモリに対するアドレスに変換する。
【０００９】
この場合、プログラム転送部は、中央処理装置が不揮発性メモリにアクセスしていないときに、不揮発性メモリにアクセスすることとしてもよい。
【００１０】
また、マイクロコンピュータは、電圧検知部で検知された電圧が第１の電圧よりも低いときに、不揮発性メモリに供給される電源電圧を昇圧する昇圧部をさらに備えていてもよい。この昇圧部は、電圧検知部で検知された電圧が第１の電圧よりも低く、かつ、プログラム転送部がプログラム転送を行うときに、不揮発性メモリに供給される電源電圧を昇圧することが好ましい。
【００１１】
また、電圧検知部で検知された電圧が、第１の電圧と、第１の電圧よりも高い第２の電圧との間にある状態では、プログラム転送部はプログラム転送を行い、アドレス変換部はアドレス変換を行わないこととしてもよい。
【００１２】
また、第１の電圧は、不揮発性メモリの動作下限電圧に等しくてもよく、あるいは、不揮発性メモリの動作下限電圧よりも高くてもよい。
【００１３】
また、揮発性メモリのうち、中央処理装置が既に実行したプログラムを記憶したメモリが転送用メモリとして使用され、中央処理装置が今後実行するプログラムを記憶したメモリが実行用メモリとして使用されることとしてもよい。この場合、転送用メモリと実行用メモリとの切り替えは、中央処理装置が所定範囲のプログラムの実行を完了したときに行われることが好ましい。
【００１４】
特に、電圧検知部で検知された電圧が第１の電圧よりも低い状態では、転送用メモリと実行用メモリとの切り替えは、中央処理装置が実行用メモリに記憶されたプログラムの実行を完了したときに行われることが好ましい。あるいは、電圧検知部で検知された電圧が、第１の電圧と、第１の電圧よりも高い第２の電圧との間にある状態では、プログラム転送部はプログラム転送を行い、アドレス変換部はアドレス変換を行わず、転送用メモリと実行用メモリとの切り替えは、中央処理装置が不揮発性メモリに記憶されたプログラムのうち実行用メモリに記憶された部分の実行を完了したときに行われることが好ましい。
【００１５】
また、不揮発性メモリは、中央処理装置によって実行されるプログラムの一部としてサブルーチンプログラムを記憶し、揮発性メモリには、転送用メモリおよび実行用メモリとして使用されないサブルーチンプログラム用メモリが含まれており、プログラム転送部は、電圧検知部で検知された電圧が第１の電圧よりも低くなる前に、不揮発性メモリに記憶されたサブルーチンプログラムをサブルーチンプログラム用メモリに転送してもよい。
【００１６】
また、不揮発性メモリは、中央処理装置によって実行されるプログラムの一部として割込みベクタテーブルを記憶し、揮発性メモリのうち、転送用メモリおよび実行用メモリとして使用されるメモリは、それぞれ独自に割込みベクタテーブル領域を有しており、プログラム転送部は、電圧検知部で検知された電圧が第１の電圧よりも低くなる前に、不揮発性メモリに記憶された割込みベクタテーブルを、転送用メモリおよび実行用メモリとして使用されるメモリのそれぞれに含まれる割込みベクタテーブル領域に転送してもよい。
【００１７】
また、マイクロコンピュータは、プログラム転送用バスに接続され、外部に設けた不揮発性メモリ書き換え装置との間で通信を行う外部インターフェイス部をさらに備えていてもよい。
【発明の効果】
【００１８】
本発明のマイクロコンピュータによれば、電源電圧が第１の電圧よりも低い状態では、不揮発性メモリに記憶されたプログラムは揮発性メモリに転送され、中央処理装置は揮発性メモリに記憶されたプログラムを実行する。したがって、第１の電圧を不揮発性メモリの動作下限電圧（あるいは、動作下限電圧よりも高い電圧）に設定することにより、電源電圧が内蔵した不揮発性メモリの動作下限電圧よりも低い状態でも、マイクロコンピュータを動作させることができる。
【００１９】
また、中央処理装置が不揮発性メモリにアクセスしていないときに、プログラム転送部が不揮発性メモリにアクセスすることとすれば、プログラム転送によって中央処理装置の動作が妨げられることがない。したがって、不揮発性メモリを内蔵したマイクロコンピュータの動作を、ＲＯＭ内蔵マイクロコンピュータと一致させることができる。
【００２０】
また、昇圧部を備えることとすれば、電源電圧が低いときに不揮発性メモリに供給される電源電圧をマイクロコンピュータの内部で発生させることができる。また、プログラム転送を行うときに昇圧部を動作させることとすれば、マイクロコンピュータの消費電力を削減することができる。
【００２１】
また、電源電圧が第１の電圧と第２の電圧との間にある状態でもプログラム転送を行うこととすれば、電源電圧が任意のタイミングで第１の電圧よりも低くなった場合でも、中央処理装置を停止させることなく、プログラムの実行を継続させることができる。
【００２２】
また、既に実行されたプログラムを記憶した揮発性メモリを転送用メモリとして、今後実行されるプログラムを記憶した揮発性メモリを実行用メモリとして使用することとすれば、小容量の複数の揮発性メモリを用いて大容量の不揮発性メモリを模擬し、マイクロコンピュータに内蔵される揮発性メモリの総容量を削減することができる。
【００２３】
また、中央処理装置が所定範囲のプログラムの実行を完了したときに転送用メモリと実行用メモリとを切り替えることとすれば、プログラム転送を迅速に開始し、中央処理装置がある部分のプログラム実行を完了する前に、次の部分のプログラム転送を完了させることができる。
【００２４】
また、サブルーチンプログラム用メモリにサブルーチンプログラムを予め転送しておくこととすれば、中央処理装置は、揮発性メモリに記憶されたプログラムを実行している間も、サブルーチン呼び出しを含む複雑なプログラムを正しく実行することができる。
【００２５】
また、割込みベクタテーブル領域に割込みベクタテーブルを予め転送しておくこととすれば、中央処理装置は、揮発性メモリに記憶されたプログラムを実行している間も、割込み処理を正しく行うことができる。
【００２６】
また、外部インターフェイス部を備えることとすれば、中央処理装置が不揮発性メモリに記憶されたプログラムを実行している間も、中央処理装置を停止させることなく、不揮発性メモリに記憶されたプログラムを書き換えることができる。
【００２７】
このように、本発明のマイクロコンピュータによれば、電源電圧が内蔵した不揮発性メモリの動作下限電圧よりも低い状態でも動作し、ＲＯＭ内蔵マイクロコンピュータと動作が一致するマイクロコンピュータ、および、ＣＰＵを停止させることなく、不揮発性メモリに記憶されたプログラムを書き換えできるマイクロコンピュータを提供することができる。このようなマイクロコンピュータとマスクＲＯＭ内蔵マイクロコンピュータとを併用してシステム開発や量産を行えば、２種類のマイクロコンピュータの動作が一致しないという問題を解決し、システム開発期間の短縮とシステムの低コスト化を同時に達成することができる。
【発明を実施するための最良の形態】
【００２８】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータの構成を示す図である。図１に示すマイクロコンピュータ１０は、ＣＰＵ１１、アドレス変換回路１２、プログラム転送回路１３、ワークＲＡＭ１４、電圧検知回路１５、昇圧回路１６、フラッシュＥＥＰＲＯＭ２０、第１〜第３の補助ＲＡＭ２１〜２３、システムバス３１、プログラム転送用バス３２、バス選択回路４０〜４３、および、アドレス比較回路５０〜５２を備えている。
【００２９】
ＣＰＵ１１は、マイクロコンピュータ１０に含まれる中央処理装置である。フラッシュＥＥＰＲＯＭ２０は、所定の単位（ブロックと呼ばれる）ごとに電気的に書き換え可能な不揮発性メモリである。フラッシュＥＥＰＲＯＭ２０は、ＣＰＵ１１によって実行されるプログラムを記憶する。ＣＰＵ１１によって実行されるプログラムには、メインプログラムと、メインプログラムから呼び出されるサブルーチンプログラムと、不定期に発生する割込みを処理するための割込みベクタテーブルとが含まれている。ワークＲＡＭ１４は、ＣＰＵ１１がプログラムを実行するときに必要な作業用データを記憶する揮発性メモリである。ＣＰＵ１１とワークＲＡＭ１４とフラッシュＥＥＰＲＯＭ２０とは、システムバス３１に接続される。ＣＰＵ１１は、システムバス３１を用いて、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを読み出し、ワークＲＡＭ１４に記憶されたデータに対して読み出しおよび書き込みを行うことにより、所定の処理を実行する。以上に述べた点は、一般的なフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータと同じである。
【００３０】
マイクロコンピュータ１０は、供給された電源電圧がフラッシュＥＥＰＲＯＭ２０の動作下限電圧よりも低い状態でも、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを正しく実行できるという特徴を有している。図１に示す構成要素のうち、アドレス変換回路１２、プログラム転送回路１３、電圧検知回路１５、昇圧回路１６、第１〜第３の補助ＲＡＭ２１〜２３、プログラム転送用バス３２、バス選択回路４０〜４３、およびアドレス比較回路５０〜５２は、上記特徴を実現するために設けられたものである。以下の説明では、外部からマイクロコンピュータ１０に供給される電源電圧をＶａ、フラッシュＥＥＰＲＯＭ２０の動作下限電圧をＶ１とする。電源電圧Ｖａは、初期状態ではＶ１よりも高いが、時間の経過とともに低下し、やがてＶ１よりも低くなるものとする。
【００３１】
電源電圧ＶａがＶ１よりも低い状態では、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムに代えて、第１および第２の補助ＲＡＭ２１、２２に記憶されたプログラムを実行する。このため、プログラム転送回路１３は、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを第１および第２の補助ＲＡＭ２１、２２に転送する。電源電圧がＶ１よりも低い状態ではフラッシュＥＥＰＲＯＭ２０は動作しないので、昇圧回路１６が、所定のタイミングで、フラッシュＥＥＰＲＯＭ２０に供給される電源電圧を昇圧する。
【００３２】
ＣＰＵ１１によるプログラム実行と、プログラム転送回路１３によるプログラム転送とは、並列に実行される。より詳細には、第１および第２の補助ＲＡＭ２１、２２の一方が転送用メモリ、他方が実行用メモリとして選択され、プログラム転送回路１３は転送用メモリに対してプログラムを転送し、ＣＰＵ１１は実行用メモリに記憶されたプログラムを実行する。転送用メモリと実行用メモリとは、ＣＰＵ１１が実行用メモリに記憶されたプログラムの実行を完了したときに切り替えられる。
【００３３】
また、プログラム転送回路１３によるプログラム転送は、電源電圧ＶａがＶ１よりも低くなる前に開始される。より詳細には、Ｖ１よりも高い、ある電圧Ｖ２が転送開始電圧として選択され、プログラム転送回路１３は、電源電圧ＶａがＶ１とＶ２との間にある状態でも、電源電圧ＶａがＶ１よりも低いときと同様に、プログラム転送を行う。ただし、電源電圧ＶａがＶ１とＶ２との間にある状態では、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行する。
【００３４】
このように構成されたマイクロコンピュータ１０は、電源電圧ＶａがＶ１よりも低い状態でも、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを正しく実行することができる。転送開始電圧Ｖ２には、電源電圧ＶａがＶ２からＶ１まで低下する間に、後述する処理（図３に示すステップＳ１２１〜Ｓ１２６）を完了できるような値が選択される。
【００３５】
以下、図１を参照して、マイクロコンピュータ１０の特徴的な構成要素について説明する。電圧検知回路１５は、マイクロコンピュータ１０に供給される電源電圧Ｖａのレベルを検知し、検知したレベルを示す電源電圧レベル信号ＶＬをプログラム転送回路１３に出力する。プログラム転送回路１３は、電源電圧レベル信号ＶＬなどに基づき、後述するプログラム転送を行う。これに加えて、プログラム転送回路１３は、フラッシュＥＥＰＲＯＭ２０に供給される電源電圧を昇圧するための制御を行う。より詳細には、プログラム転送回路１３は、昇圧を行うか否かを示す昇圧制御信号ＣＣを出力し、昇圧回路１６は、昇圧制御信号ＣＣに従い電源電圧ＶａをＶ１以上に昇圧する。このようにして昇圧回路１６で選択的に昇圧された後の電圧Ｖｂが、フラッシュＥＥＰＲＯＭ２０に供給される。なお、昇圧回路１６が動作しないときには、昇圧後の電圧Ｖｂは電源電圧Ｖａに一致する。
【００３６】
第１〜第３の補助ＲＡＭ２１〜２３は、フラッシュＥＥＰＲＯＭ２０よりも小容量の揮発性メモリである。第１〜第３の補助ＲＡＭ２１〜２３の内容は、初期状態では不定である。電源電圧Ｖａが低下したときに、第１〜第３の補助ＲＡＭ２１〜２３には、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムの一部が転送される。より詳細には、第１および第２の補助ＲＡＭ２１、２２は、いずれも、割込みベクタテーブル領域とプログラム記憶領域とを有している。各割込みベクタテーブル領域には、フラッシュＥＥＰＲＯＭ２０に記憶された割込みベクタテーブルが転送される。また、フラッシュＥＥＰＲＯＭ２０に記憶されたメインプログラムは、プログラム記憶領域のサイズに分割され（以下、分割された状態のメインプログラムをプログラムセグメントという）、第１および第２の補助ＲＡＭ２１、２２のプログラム記憶領域には、プログラムセグメントが交互に転送される。第３の補助ＲＡＭ２３には、フラッシュＥＥＰＲＯＭ２０に記憶されたサブルーチンプログラムが転送される。
【００３７】
第１〜第３の補助ＲＡＭ２１〜２３は、ＣＰＵ１１からアクセスできるように、システムバス３１に接続される。この結果、システムバス３１には、ＣＰＵ１１と、ワークＲＡＭ１４と、フラッシュＥＥＰＲＯＭ２０と、第１〜第３の補助ＲＡＭ２１〜２３とが接続される。一方、プログラム転送用バス３２は、システムバス３１とは別個に設けられたバスである。プログラム転送用バス３２には、フラッシュＥＥＰＲＯＭ２０と、第１〜第３の補助ＲＡＭ２１〜２３とが接続される。プログラム転送用バス３２は、プログラム転送回路１３によるプログラム転送に使用され、ＣＰＵ１１によるプログラム実行には使用されない。
【００３８】
バス選択回路４０は、フラッシュＥＥＰＲＯＭ２０に対応して設けられ、バス選択回路４１〜４３は、それぞれ、第１〜第３の補助ＲＡＭ２１〜２３に対応して設けられる。バス選択回路４０〜４３は、プログラム転送回路１３から出力されたバス選択信号ＢＳ０〜ＢＳ３に従い、フラッシュＥＥＰＲＯＭ２０および第１〜第３の補助ＲＡＭ２１〜２３を、システムバス３１またはプログラム転送用バス３２のいずれかに接続する。
【００３９】
ＣＰＵ１１は、プログラム実行の際には、常に、フラッシュＥＥＰＲＯＭ２０に対するアドレスを出力する。アドレス変換回路１２は、プログラム転送回路１３から出力されたアドレス変換モード信号ＡＭに従い、必要に応じて、ＣＰＵ１１からフラッシュＥＥＰＲＯＭ２０に対して出力されたアドレスを、第１〜第３の補助ＲＡＭ２１〜２３に対するアドレスに変換する。また、アドレス変換回路１２は、プログラム転送回路１３に対して、ＣＰＵ１１がシステムバス３１を使用中であることを示すバスビジィ信号ＢＢを出力する。アドレス変換回路１２の詳細は、後述する（図７を参照）。
【００４０】
アドレス比較回路５０は、フラッシュＥＥＰＲＯＭ２０に対する読み出しアドレスとプログラムセグメントの最終アドレスとを比較し、両者が一致したときに、その旨を示す最終アドレス検出信号Ｅ０を出力する。アドレス比較回路５１は、第１の補助ＲＡＭ２１に対する読み出しアドレスと第１の補助ＲＡＭ２１の最終アドレスとを比較し、両者が一致したときに、その旨を示す最終アドレス検出信号Ｅ１を出力する。アドレス比較回路５２は、第２の補助ＲＡＭ２２に対する読み出しアドレスと第２の補助ＲＡＭ２２の最終アドレスとを比較し、両者が一致したときに、その旨を示す最終アドレス検出信号Ｅ２を出力する。プログラム転送回路１３は、最終アドレス検出信号Ｅ０〜Ｅ２が出力されたときに、プログラム転送を開始する。
【００４１】
図２は、マイクロコンピュータ１０のメモリマップである。図２に示すように、ワークＲＡＭ１４と、フラッシュＥＥＰＲＯＭ２０と、第１〜第３の補助ＲＡＭ２１〜２３とは、１つのアドレス空間にマッピングされる。以下では、ワークＲＡＭ１４の先頭アドレスを０、フラッシュＥＥＰＲＯＭ２０の先頭アドレスをＡ０、第１〜第３の補助ＲＡＭの先頭アドレスをそれぞれＡ１〜Ａ３とする。また、フラッシュＥＥＰＲＯＭ２０には、アドレスＡ０を先頭として割込みベクタテーブルが、アドレスＢ０を先頭としてメインプログラムが、アドレスＣ０を先頭としてサブルーチンプログラムが記憶されており、第１の補助ＲＡＭ２１には、アドレスＡ１を先頭として割込みベクタテーブル領域が、アドレスＢ１を先頭としてプログラム記憶領域が設けられ、第２の補助ＲＡＭ２２には、アドレスＡ２を先頭として割込みベクタテーブル領域が、アドレスＢ２を先頭としてプログラム記憶領域が設けられているとする。なお、図２には、一例として、各メモリあるいは領域の先頭アドレスまたは最終アドレスの具体的な値が、１６進表示で記載されている。
【００４２】
以下、図３〜図６を参照して、電源電圧ＶａがＶ２よりも高い状態から、Ｖ２よりも低い状態になり、さらにＶ１よりも低い状態になる場合について、マイクロコンピュータ１０の動作を説明する。図３は、マイクロコンピュータ１０の動作を示すフローチャートである。図４〜図６は、マイクロコンピュータ１０の動作を示す模式図である。図４〜図６では、ＶＥＣＴは割込みベクタテーブルを、ＳＵＢはサブルーチンプログラムを、ＰＲＧＣおよびＰＲＧｉ（ｉは非負の整数）はプログラムセグメントを表す。
【００４３】
図３に示すように、マイクロコンピュータ１０は、電源電圧Ｖａに応じて、第１〜第３の状態ＳＴ１〜ＳＴ３を取る。各状態では、ＣＰＵ１１とプログラム転送回路１３とが、並列に動作する。図３では、ＣＰＵ１１の動作は図面の左半分に、プログラム転送回路１３の動作は図面の右半分に記載されている。電源電圧ＶａがＶ２以上である間、マイクロコンピュータ１０は、第１の状態ＳＴ１にある。この状態では、ＣＰＵ１１はステップＳ１１０を繰り返し実行し、プログラム転送回路１３は停止している。電源電圧ＶａがＶ２よりも小さくなると（ステップＳ１０１のＹＥＳ）、マイクロコンピュータ１０は、第２の状態ＳＴ２に遷移する。この状態では、ＣＰＵ１１はステップＳ１２０を繰り返し実行し、プログラム転送回路１３は、ステップＳ１２１〜Ｓ１２３を一度だけ実行した後、ステップＳ１２４〜Ｓ１２６を繰り返し実行する。電源電圧ＶａがＶ１よりも低くなると（ステップＳ１０２のＹＥＳ）、マイクロコンピュータ１０は、第３の状態ＳＴ３に遷移する。この状態では、ＣＰＵ１１はステップＳ１３０を繰り返し実行し、プログラム転送回路１３はステップＳ１３１〜Ｓ１３５を繰り返し実行する。
【００４４】
図３に示す各ステップの詳細は、以下のとおりである。第１の状態ＳＴ１では、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行する（ステップＳ１１０）。ステップＳ１１０では、図４（ａ）に示すように、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムに含まれる命令を、システムバス３１経由で順次読み出して実行する。なお、ステップＳ１１０では、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶されたメインプログラムだけでなく、フラッシュＥＥＰＲＯＭ２０に記憶されたサブルーチンプログラムも実行する。また、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶された割込みベクタテーブルを用いて、割込み処理を行う。
【００４５】
第２の状態ＳＴ２では、ＣＰＵ１１によるプログラム実行と並列に、電源電圧ＶａがＶ１よりも低くなるときに備えて、プログラム転送回路１３によるプログラム転送が行われる。より詳細には、ＣＰＵ１１は、第２の状態ＳＴ２においても、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行し続ける（ステップＳ１２０）。一方、プログラム転送回路１３は、第２の状態ＳＴ２では、まず、フラッシュＥＥＰＲＯＭ２０に記憶された割込みベクタテーブルを第１および第２の補助ＲＡＭ２１、２２に転送し（ステップＳ１２１）、フラッシュＥＥＰＲＯＭ２０に記憶されたサブルーチンプログラムを第３の補助ＲＡＭ２３に転送する（ステップＳ１２２）。ステップＳ１２１では、図４（ｂ）および（ｃ）に示すように、フラッシュＥＥＰＲＯＭ２０に記憶された割込みベクタテーブルが、第１および第２の補助ＲＡＭ２１、２２の割込みベクタテーブル領域に転送され、ステップＳ１２２では、図４（ｄ）に示すように、フラッシュＥＥＰＲＯＭ２０に記憶されたサブルーチンプログラムが、第３の補助ＲＡＭ２３に転送される。プログラム転送回路１３は、ステップＳ１２１およびＳ１２２では、バスビジィ信号ＢＢに基づき、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスしていないときに、フラッシュＥＥＰＲＯＭ２０にアクセスする。
【００４６】
次に、プログラム転送回路１３は、第１および第２の補助ＲＡＭ２１、２２の一方を転送用メモリに、他方を実行用メモリに割り当てる（ステップＳ１２３）。ステップＳ１２３では、例えば、第１の補助ＲＡＭ２１が実行用メモリに、第２の補助ＲＡＭ２２が転送用メモリに割り当てられる。
【００４７】
次に、プログラム転送回路１３は、ＣＰＵ１１があるプログラムセグメントの実行を完了するまで待機する（ステップＳ１２４）。ＣＰＵ１１があるプログラムセグメントの実行を完了すると、フラッシュＥＥＰＲＯＭ２０に対する読み出しアドレスとプログラムセグメントの最終アドレスとが一致し、アドレス比較回路５０から最終アドレス検出信号Ｅ０が出力される。したがって、プログラム転送回路１３は、ステップＳ１２４では、最終アドレス検出信号Ｅ０が出力されるまで待機すればよい。
【００４８】
次に、プログラム転送回路１３は、転送用メモリと実行用メモリとを交換し（ステップＳ１２５）、フラッシュＥＥＰＲＯＭ２０に記憶されたメインプログラムのうち、ＣＰＵ１１がその時点で実行しているプログラムセグメントの次のプログラムセグメントを、新しい転送用メモリに転送する（ステップＳ１２６）。プログラム転送回路１３は、ステップＳ１２６においても、バスビジィ信号ＢＢに基づき、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスしていないときに、フラッシュＥＥＰＲＯＭ２０にアクセスする。
【００４９】
例えば、第１の補助ＲＡＭ２１が実行用メモリとして、第２の補助ＲＡＭ２２が転送用メモリとして割り当てられている状態で、ＣＰＵ１１がｎ番目のプログラムセグメントの実行を完了した場合を考える。この場合、ｎ番目のプログラムセグメントの実行完了時点で、第１の補助ＲＡＭ２１にはｎ番目のプログラムセグメントが記憶されており、第２の補助ＲＡＭ２２には（ｎ＋１）番目のプログラムセグメントが記憶されている。そこで、プログラム転送回路１３は、ステップＳ１２５において、第１の補助ＲＡＭ２１を転送用メモリに、第２の補助ＲＡＭ２２を実行用メモリに割り当てた上で、ステップＳ１２６において、フラッシュＥＥＰＲＯＭ２０に記憶された（ｎ＋２）番目のプログラムセグメントを、新しい転送用メモリである第１の補助ＲＡＭ２１に転送する。このように、プログラム転送回路１３は、ステップＳ１２６を３回目以降に実行するときには、それまで転送用メモリに記憶されていたプログラムセグメントの２つ後のプログラムセグメントを転送用メモリに転送する。
【００５０】
次に、プログラム転送回路１３は、ステップＳ１２３へ進み、マイクロコンピュータ１０が第３の状態ＳＴ３に遷移するまで、ステップＳ１２４〜Ｓ１２６を繰り返し実行する。このようにして、第２の状態ＳＴ２では、ＣＰＵ１１が実行しているプログラムセグメントの次のプログラムセグメントは、第１の補助ＲＡＭ２１または第２の補助ＲＡＭ２２のうち、ＣＰＵ１１からアクセスされない側のメモリに転送される。
【００５１】
図５を参照して、ステップＳ１２４〜Ｓ１２６の実行例を説明する。ここでは、プログラム転送回路１３がステップＳ１２３を実行したときに、ＣＰＵ１１はプログラムセグメントＰＲＧＣを実行しており、プログラムセグメントＰＲＧＣの後には、プログラムセグメントＰＲＧ０、ＰＲＧ１、ＰＲＧ２、…が順次実行される予定であるとする。また、ステップＳ１２３では、第１の補助ＲＡＭ２１が実行用メモリに、第２の補助ＲＡＭ２２が転送用メモリに割り当てられたものとする。
【００５２】
プログラム転送回路１３は、ステップＳ１２３を実行した後、ステップＳ１２４において、ＣＰＵ１１がプログラムセグメントＰＲＧＣの実行を完了するまで待機する。この間、図５（ａ）に示すように、ＣＰＵ１１はフラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行するが、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００５３】
ＣＰＵ１１がプログラムセグメントＰＲＧＣの実行を完了すると、ステップＳ１２５において、第１の補助ＲＡＭ２１が転送用メモリに、第２の補助ＲＡＭ２２が実行用メモリになる。次に、ステップＳ１２６では、図５（ｂ）に示すように、ＣＰＵ１１がその時点で実行しているプログラムセグメントＰＲＧ０の次のプログラムセグメントＰＲＧ１が、フラッシュＥＥＰＲＯＭ２０から新しい転送用メモリである第１の補助ＲＡＭ２１のプログラム記憶領域に転送される。プログラムセグメントＰＲＧ１の転送が完了すると、プログラム転送回路１３は、ＣＰＵ１１がプログラムセグメントＰＲＧ０の実行を完了するまで待機する。この間、図５（ｃ）に示すように、ＣＰＵ１１はフラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行するが、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００５４】
その後、ＣＰＵ１１がプログラムセグメントＰＲＧ０の実行を完了すると、ステップＳ１２５において、今度は、第１の補助ＲＡＭ２１が実行用メモリに、第２の補助ＲＡＭ２２が転送用メモリになる。次に、ステップＳ１２６では、図５（ｄ）に示すように、ＣＰＵ１１がその時点で実行しているプログラムセグメントＰＲＧ１の次のプログラムセグメントＰＲＧ２が、フラッシュＥＥＰＲＯＭ２０から新しい転送用メモリである第２の補助ＲＡＭ２２のプログラム記憶領域に転送される。プログラムセグメントＰＲＧ２の転送が完了すると、プログラム転送回路１３は、ＣＰＵ１１がプログラムセグメントＰＲＧ１の実行を完了するまで待機する。この間、図５（ｅ）に示すように、ＣＰＵ１１はフラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行するが、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００５５】
同様に、ＣＰＵ１１がプログラムセグメントＰＲＧ１の実行を完了すると、第１の補助ＲＡＭ２１が転送用メモリになり、図５（ｆ）に示すように、プログラムセグメントＰＲＧ３が、第１の補助ＲＡＭ２１のプログラム記憶領域に転送される。次に、ＣＰＵ１１がプログラムセグメントＰＲＧ２の実行を完了すると、第２の補助ＲＡＭ２２が転送用メモリになり、図５（ｇ）に示すように、プログラムセグメントＰＲＧ４が、第２の補助ＲＡＭ２２のプログラム記憶領域に転送される。なお、１回のプログラム転送が完了した後、ＣＰＵ１１があるプログラムセグメントの実行を完了するまでの間、図５（ｅ）に示すように、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００５６】
図３に戻り、第３の状態ＳＴ３におけるマイクロコンピュータ１０の動作を説明する。第３の状態ＳＴ３では、電源電圧ＶａはＶ１（フラッシュＥＥＰＲＯＭ２０の動作下限電圧）よりも低く、ＣＰＵ１１が次に実行すべきプログラムセグメントは、第１および第２の補助ＲＡＭ２１、２２のうち実行用メモリに記憶されている。そこで、ＣＰＵ１１は、第３の状態ＳＴ３では、第１〜第３の補助ＲＡＭ２１〜２３に記憶されたプログラムを実行する（ステップＳ１３０）。
【００５７】
より詳細には、ＣＰＵ１１は、メインプログラムを実行するときには、実行用メモリのプログラム記憶領域に記憶されたプログラムセグメントに含まれる命令を、システムバス３１経由で順次読み出して実行する（図６（ａ）〜（ｄ）を参照）。また、ＣＰＵ１１は、サブルーチンプログラムを実行するときには、第３の補助ＲＡＭ２３に記憶されたサブルーチンプログラムに含まれる命令を、システムバス３１経由で順次読み出して実行する（図６（ｅ）を参照）。また、ＣＰＵ１１は、割込み処理を実行するときには、実行用メモリの割込みベクタテーブル領域に記憶された割込みベクタを読み出し、読み出した割込みベクタに基づき割込み処理を実行する（図６（ｆ）を参照）。なお、フラッシュＥＥＰＲＯＭ２０および第１〜第３の補助ＲＡＭ２１〜２３のいずれからプログラムを読み出すかは、アドレス変換回路１２によって制御されるので、ＣＰＵ１１の動作は、第３の状態ＳＴ３に遷移した後も、第１および第２の状態ＳＴ１、ＳＴ２のときと何ら変化しない。
【００５８】
プログラム転送回路１３は、第３の状態ＳＴ３では、第２の状態ＳＴ２から引き続いてプログラム転送を実行する。第３の状態ＳＴ３におけるプログラム転送回路１３の動作は、第２の状態ＳＴ２におけるプログラム転送回路１３の動作とほぼ同じである。より詳細には、プログラム転送回路１３は、ステップＳ１３１、Ｓ１３２およびステップＳ１３４において、それぞれ、ステップＳ１２１〜Ｓ１２３とほぼ同じ処理を行う。ただし、プログラム転送回路１３は、ステップＳ１３１では、最終アドレス検出信号Ｅ１またはＥ２が出力されるまで待機する。また、プログラム転送回路１３は、ステップＳ１３４でプログラム転送を行う前に、昇圧回路１６の動作を開始させる制御を行い（ステップＳ１３３）、ステップＳ１３４でプログラム転送を行った後に、昇圧回路１６の動作を停止させる制御を行う（ステップＳ１３５）。プログラム転送回路１３は、昇圧制御信号ＣＣを制御することにより、昇圧回路１６を制御する。昇圧回路１６は、昇圧制御信号ＣＣに従い、電源電圧ＶａをＶ１以上に昇圧する。これにより、ステップＳ１３４でプログラム転送が行われている間、昇圧回路１６は動作し、フラッシュＥＥＰＲＯＭ２０には、動作下限電圧Ｖ１以上の電圧が供給される。
【００５９】
次に、プログラム転送回路１３は、ステップＳ１３１へ進み、ステップＳ１３１〜Ｓ１３５を繰り返し実行する。このようにして、第３の状態ＳＴ３においても、第２の状態ＳＴ２と同様に、ＣＰＵ１１が実行しているプログラムセグメントの次のプログラムセグメントは、第１の補助ＲＡＭ２１または第２の補助ＲＡＭ２２のうち、ＣＰＵ１１からアクセスされない側のメモリに転送される。
【００６０】
図６を参照して、ステップＳ１３１〜Ｓ１３５の実行例を説明する。ここでは、図５（ｇ）に示すように、ＣＰＵ１１がプログラムセグメントＰＲＧ３を実行している間に、電源電圧ＶａがＶ１よりも低くなったとする。
【００６１】
マイクロコンピュータ１０が第３の状態ＳＴ３に遷移すると、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に代えて、第１〜第３の補助ＲＡＭ２１〜２３からプログラムを読み出すようになる。一方、プログラム転送回路１３は、ステップＳ１３１において、ＣＰＵ１１がプログラムセグメントＰＲＧ３の実行を完了するまで待機する。この間、図６（ａ）に示すように、ＣＰＵ１１は実行用メモリである第１の補助ＲＡＭ２１に記憶されたプログラムを実行するが、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００６２】
ＣＰＵ１１がプログラムセグメントＰＲＧ３の実行を完了すると、ステップＳ１３２において、第１の補助ＲＡＭ２１が転送用メモリに、第２の補助ＲＡＭ２２が実行用メモリになる。次に、ステップＳ１３４では、図６（ｂ）に示すように、プログラムセグメントＰＲＧ５が、フラッシュＥＥＰＲＯＭ２０から第１の補助ＲＡＭ２１のプログラム記憶領域に転送される。ステップＳ１３４が実行されている間、フラッシュＥＥＰＲＯＭ２０には、昇圧回路１６によってＶ１以上に昇圧された電圧Ｖｂが供給される。
【００６３】
プログラムセグメントＰＲＧ５の転送が完了すると、プログラム転送回路１３は、ＣＰＵ１１がプログラムセグメントＰＲＧ４の実行を完了するまで待機する。この間、図６（ｃ）に示すように、ＣＰＵ１１は、実行用メモリである第２の補助ＲＡＭ２２に記憶されたプログラムを実行するが、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００６４】
その後、ＣＰＵ１１がプログラムセグメントＰＲＧ４の実行を完了すると、ステップＳ１３２において、今度は、第１の補助ＲＡＭ２１が実行用メモリに、第２の補助ＲＡＭ２２が転送用メモリになる。次に、ステップＳ１３４では、図６（ｄ）に示すように、プログラムセグメントＰＲＧ６が、フラッシュＥＥＰＲＯＭ２０から第２の補助ＲＡＭ２２のプログラム記憶領域に転送される。この場合も、ステップＳ１３４が実行されている間、フラッシュＥＥＰＲＯＭ２０には、昇圧回路１６によってＶ１以上に昇圧された電圧Ｖｂが供給される。
【００６５】
次に、プログラムセグメントＰＲＧ６の転送が完了すると、プログラム転送回路１３は、ＣＰＵ１１がプログラムセグメントＰＲＧ５の実行を完了するまで待機する。この間、図６（ａ）に示すように、ＣＰＵ１１は、実行用メモリである第１の補助ＲＡＭ２１に記憶されたプログラムを実行するが、第１および第２の補助ＲＡＭ２１、２２に対するプログラム転送は行われない。
【００６６】
なお、ステップＳ１３０においてＣＰＵ１１がサブルーチンプログラムを実行するときには、第１および第２の補助ＲＡＭ２１、２２のいずれが実行用メモリである場合も、サブルーチンプログラムに含まれる命令は、図６（ｅ）に示すように、第３の補助ＲＡＭ２３から読み出される。また、ステップＳ１３０においてＣＰＵ１１が割込み処理を実行するときには、割込みベクタは、実行用メモリの割込みベクタテーブル領域から読み出される。例えば、第１の補助ＲＡＭ２１が実行用メモリである場合には、割込みベクタは、図６（ｆ）に示すように、第１の補助ＲＡＭ２１の割込みベクタテーブル領域から読み出される。
【００６７】
以下、図７を参照して、アドレス変換回路１２の詳細を説明する。アドレス変換回路１２は、アドレス変換を行う際に必要な値を記憶する２個のレジスタ（以下、第１のレジスタＲ１および第２のレジスタＲ２という）を有している。第１のレジスタＲ１には、第１の補助ＲＡＭ２１に対するプログラム転送が開始されたときに、転送されるプログラムセグメントの先頭アドレス（フラッシュＥＥＰＲＯＭ２０のアドレス）と第１の補助ＲＡＭ２１のプログラム記憶領域の先頭アドレスＢ１との差Ｄ１が設定される。同様に、第２のレジスタＲ２には、第２の補助ＲＡＭ２２に対するプログラム転送が開始されたときに、転送されるプログラムセグメントの先頭アドレス（フラッシュＥＥＰＲＯＭ２０のアドレス）と第２の補助ＲＡＭ２２のプログラム記憶領域の先頭アドレスＢ２との差Ｄ２が設定される。第１および第２のレジスタＲ１、Ｒ２に設定された値Ｄ１、Ｄ２は、それぞれ、後述する式（３）および式（４）で参照される。
【００６８】
ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０および第１〜第３の補助ＲＡＭ２１〜２３のいずれにアクセスする場合でも、フラッシュＥＥＰＲＯＭ２０に対するアドレス（以下、読み出しアドレスＸという）を出力する。アドレス変換回路１２は、上述したように、プログラム転送回路１３から出力されたアドレス変換モード信号ＡＭに従い、必要に応じて、読み出しアドレスＸを第１〜第３の補助ＲＡＭ２１〜２３に対するアドレスに変換する。以下、アドレス変換回路１２から出力されるアドレスを、参照アドレスＹという。
【００６９】
ＣＰＵ１１が第１の補助ＲＡＭ２１から割込みベクタを読み出す場合（図７（ａ）を参照）、アドレス変換回路１２は、読み出しアドレスＸから、フラッシュＥＥＰＲＯＭ２０における割込みベクタテーブルの記憶領域の先頭アドレスＡ０と第１の補助ＲＡＭ２１の割込みベクタテーブル領域の先頭アドレスＡ１との差を引く。すなわち、この場合の参照アドレスＹは、次式（１）により算出される。
Ｙ＝Ｘ−（Ａ０−Ａ１）  …（１）
【００７０】
同様に、ＣＰＵ１１が第２の補助ＲＡＭ２２から割込みベクタを読み出す場合、アドレス変換回路１２は、読み出しアドレスＸから、上記Ａ０と第２の補助ＲＡＭ２２の割込みベクタテーブル領域の先頭アドレスＡ２との差を引く。すなわち、この場合の参照アドレスＹは、次式（２）により算出される。
Ｙ＝Ｘ−（Ａ０−Ａ２）  …（２）
【００７１】
ＣＰＵ１１が第１の補助ＲＡＭ２１からメインプログラムを読み出す場合（図７（ｂ）を参照）において、第１の補助ＲＡＭ２１に記憶されたプログラムセグメントは、フラッシュＥＥＰＲＯＭ２０ではアドレスＰ１を先頭とした領域に記憶されていたとする。この場合、第１のレジスタＲ１には、上記Ｐ１と第１の補助ＲＡＭ２１のプログラム記憶領域の先頭アドレスＢ１との差Ｄ１が記憶されている。そこで、アドレス変換回路１２は、読み出しアドレスＸから第１のレジスタＲ１に記憶された値Ｄ１を引く。すなわち、この場合の参照アドレスＹは、次式（３）により算出される。
Ｙ＝Ｘ−（Ｐ１−Ｂ１）＝Ｘ−Ｄ１  …（３）
【００７２】
同様に、ＣＰＵ１１が第２の補助ＲＡＭ２２からメインプログラムを読み出す場合において、第２の補助ＲＡＭ２２に記憶されたプログラムセグメントは、フラッシュＥＥＰＲＯＭ２０ではアドレスＰ２を先頭とした領域に記憶されていたとする。この場合、第２のレジスタＲ２には、上記Ｐ２と第２の補助ＲＡＭ２２のプログラム記憶領域の先頭アドレスＢ２との差Ｄ２が記憶されている。そこで、アドレス変換回路１２は、読み出しアドレスＸから第２のレジスタＲ２に記憶された値Ｄ２を引く。すなわち、この場合の参照アドレスＹは、次式（４）により算出される。
Ｙ＝Ｘ−（Ｐ２−Ｂ２）＝Ｘ−Ｄ２  …（４）
【００７３】
ＣＰＵ１１が第３の補助ＲＡＭ２３からサブルーチンプログラムを読み出す場合（図７（ｃ）を参照）、アドレス変換回路１２は、読み出しアドレスＸから、フラッシュＥＥＰＲＯＭ２０におけるサブルーチンプログラムの記憶領域の先頭アドレスＣ０と第３の補助ＲＡＭ２３の先頭アドレスＡ３との差を引く。すなわち、この場合の参照アドレスＹは、次式（５）により算出される。
Ｙ＝Ｘ−（Ｃ０−Ａ３）  …（５）
【００７４】
以上に述べたアドレス変換回路１２の動作をまとめると、図７（ｄ）に示すようになる。アドレス変換回路１２は、ＣＰＵ１１から出力された読み出しアドレスＸを、図７（ｄ）に示すテーブルに従って、参照アドレスＹに変換する。これにより、ＣＰＵ１１は、第１〜第３の補助ＲＡＭ２１〜２３のアドレスを使用することなく、フラッシュＥＥＰＲＯＭ２０に対するアドレスを出力するだけで、第１〜第３の補助ＲＡＭ２１〜２３に正しくアクセスすることができる。
【００７５】
以下、図８〜図１０を参照して、マイクロコンピュータ１０の動作の一例を説明する。図８は、マイクロコンピュータ１０が図４〜図６に示すように動作する場合に、各信号線が変化する様子を示すタイミングチャートである。図８において、電源電圧ＶａがＶ２よりも低くなる時刻をＴａ、電源電圧ＶａがＶ１よりも低くなる時刻をＴｂとする。言い換えると、マイクロコンピュータ１０は、時刻Ｔａより前では第１の状態ＳＴ１にあり、時刻Ｔａと時刻Ｔｂとの間では第２の状態ＳＴ２にあり、時刻Ｔｂより後では第３の状態ＳＴ３にある。
【００７６】
また、昇圧制御信号ＣＣは、昇圧回路１６を動作させるときはＨレベル、昇圧回路１６を停止させるときはＬレベルとなる。アドレス変換モード信号ＡＭは、マイクロコンピュータ１０が第１の状態ＳＴ１または第２の状態ＳＴ２にあるときは「０」、マイクロコンピュータ１０が第３の状態ＳＴ３で、第１の補助ＲＡＭ２１が実行用メモリであるときは「１」、マイクロコンピュータ１０が第３の状態ＳＴ３で、第２の補助ＲＡＭ２２が実行用メモリであるときは「２」となる。最終アドレス検出信号Ｅ０〜Ｅ２は、最終アドレスを検出したときに出力される。
【００７７】
バス選択信号ＢＳ０〜ＢＳ３は、各メモリがシステムバス３１に接続されるときはＨレベル、各メモリがプログラム転送用バス３２に接続されるときはＬレベルとなる。バス選択信号ＢＳ１は、第１の補助ＲＡＭ２１に対して割込みベクタテーブルまたはプログラムセグメントが転送されている間、Ｌレベルとなる。バス選択信号ＢＳ２は、第２の補助ＲＡＭ２２に対して割込みベクタテーブルまたはプログラムセグメントが転送されている間、Ｌレベルとなる。バス選択信号ＢＳ３は、第３の補助ＲＡＭ２３に対してサブルーチンプログラムが転送されている間、Ｌレベルとなる。バス選択信号ＢＳ０は、バス選択信号ＢＳ１〜ＢＳ３のいずれかがＬレベルで、かつ、バスビジィ信号ＢＢがＬレベルのときに、Ｌレベルとなる。
【００７８】
図８に示すように、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０に記憶されたプログラムセグメントＰＲＧＣ、ＰＲＧ０、ＰＲＧ１などの実行を完了すると、最終アドレス検出信号Ｅ０が出力される。これに伴い、転送用メモリと実行用メモリとは交換され、新しい転送用メモリに対して、ＣＰＵ１１がその時点で実行しているプログラムセグメントの次のプログラムセグメントが転送される。例えば、時刻Ｔｃにおいて、ＣＰＵ１１がプログラムセグメントＰＲＧ１の実行を完了すると、第１の補助ＲＡＭ２１が転送用メモリ、第２の補助ＲＡＭ２２が実行用メモリになり、新しい転送用メモリである第１の補助ＲＡＭ２１に対して、次のプログラムセグメントＰＲＧ３が転送される。
【００７９】
電源電圧ＶａがＶ１よりも低くなると、アドレス変換モード信号ＡＭは、０から１または２に変化する。図８に示す例では、電源電圧ＶａがＶ１よりも低くなる時刻Ｔｂでは、第１の補助ＲＡＭ２１が実行用メモリであるので、アドレス変換モード信号ＡＭは、時刻Ｔｂに０から１に変化する。時刻Ｔｂ以降、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に代えて、第１〜第３の補助ＲＡＭ２１〜２３にアクセスする。
【００８０】
電源電圧ＶａがＶ１よりも低い第３の状態ＳＴ３では、最終アドレス検出信号Ｅ１、Ｅ２が出力されたときに、転送用メモリと実行用メモリとが交換され、新しい転送用メモリに対して、ＣＰＵ１１がその時点で実行しているプログラムセグメントの次のプログラムセグメントが転送される。例えば、ＣＰＵ１１がプログラムセグメントＰＲＧ３の実行を完了すると、第１の補助ＲＡＭ２１が転送用メモリ、第２の補助ＲＡＭ２２が実行用メモリになり、新しい転送用メモリである第１の補助ＲＡＭ２１に対して、次のプログラムセグメントＰＲＧ５が転送される。
【００８１】
第２および第３の状態ＳＴ２、ＳＴ３においてプログラムセグメントの転送が開始されたときに、第１および第２のレジスタＲ１、Ｒ２の値Ｄ１、Ｄ２は、図８に示すように更新される。より詳細には、転送されるプログラムセグメントの先頭アドレス（フラッシュＥＥＰＲＯＭ２０のアドレス）をＰ１、Ｐ２、第１の補助ＲＡＭ２１のプログラム記憶領域の先頭アドレスをＢ１、第２の補助ＲＡＭ２２のプログラム記憶領域の先頭アドレスをＢ２としたとき、第１のレジスタＲ１の値Ｄ１は次式（６）により、第２のレジスタＲ２はの値Ｄ２は次式（７）により更新される。
Ｄ１＝Ｐ１−Ｂ１  …（６）
Ｄ２＝Ｐ２−Ｂ２  …（７）
【００８２】
図９は、時刻Ｔｃ以降の時間帯についての詳細なタイミングチャートである。図９では、プログラムセグメントＰＲＧ２の先頭アドレスをＸ’６４００’（１６進表現；以下、同じ）、プログラムセグメントＰＲＧ３の先頭アドレスをＸ’６Ｂ００’、第１の補助ＲＡＭ２１のプログラム記憶領域の先頭アドレスＢ１をＸ’２１００’とする。
【００８３】
時刻Ｔｃの前後では、アドレス変換モード信号ＡＭは０のままである。このため、アドレス変換回路１２はアドレス変換を行わず、ＣＰＵ１１から出力された読み出しアドレスＸが、そのまま参照アドレスＹとなる。
【００８４】
ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０から読み出した１つの命令を実行するために、複数のクロックサイクルを必要とする場合がある。この場合、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスした後、次にフラッシュＥＥＰＲＯＭ２０にアクセスするまでの間に、数クロックサイクルが経過する。ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスしているクロックサイクルでは、図９に示すように、バスビジィ信号ＢＢがＨレベルとなる。
【００８５】
プログラム転送回路１３は、上述したように、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスしていないときに、フラッシュＥＥＰＲＯＭ２０にアクセスする。より詳細には、プログラム転送回路１３は、プログラム転送のために、１ずつ増加するアドレスを出力する。ただし、バスビジィ信号ＢＢがＨレベルであるときは、ＣＰＵ１１からのアクセスを優先するために、プログラム転送回路１３は、出力アドレスを増加させない。
【００８６】
例えば、図９に示す例では、転送すべきプログラムセグメントＰＲＧ３は、フラッシュＥＥＰＲＯＭ２０のＸ’６Ｂ００’番地以降に記憶されている。そこで、プログラム転送回路１３は、Ｘ’６Ｂ００’から順に１ずつ増加するアドレスを出力する。ただし、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスするクロックサイクルでは、バスビジィ信号ＢＢがＨレベルとなるために、Ｘ’６Ｂ０２’、Ｘ’６Ｂ０７’、Ｘ’６Ｂ０Ｆ’などのアドレスは、２クロックサイクル続けて出力される。
【００８７】
図１０は、時刻Ｔｂ前後の時間帯についての詳細なタイミングチャートである。図１０では、プログラムセグメントＰＲＧ３の先頭アドレスをＸ’６Ｂ００’、第１の補助ＲＡＭ２１のプログラム記憶領域の先頭アドレスＢ１をＸ’２１００’とし、ＣＰＵ１１がＸ’７０２２’番地の命令を実行中に、電源電圧ＶａがＶ１よりも低くなったとする。
【００８８】
時刻Ｔｂより前では、アドレス変換モード信号ＡＭは０である。このため、アドレス変換回路１２はアドレス変換を行わず、ＣＰＵ１１から出力された読み出しアドレスＸが、そのまま参照アドレスＹとなる。一方、時刻Ｔｂより後では、アドレス変換モード信号ＡＭは１となる。また、時刻Ｔｂでは、第１のレジスタＲ１には、プログラムセグメントＰＲＧ３の先頭アドレスと第１の補助ＲＡＭ２１のプログラム記憶領域の先頭アドレスＢ１の差Ｄ１、Ｘ’６Ｂ００’−Ｘ’２１００’＝Ｘ’４Ａ００’が格納されている。さらに、第１の補助ＲＡＭ２１が実行用メモリであるから、アドレス変換回路１２は、上式（３）を用いてアドレス変換を行う。例えば、読み出しアドレスＸとしてＸ’７２０３’が入力されたとき、アドレス変換回路１２は、Ｘ’７２０３’−Ｘ’４Ａ００’＝Ｘ’２６０３’を参照アドレスＹとして出力する。
【００８９】
したがって、図１０に示すように、参照アドレスＹは、時刻Ｔｂより前では、Ｘ’７０２０’、Ｘ’７０２１’、およびＸ’７０２２’となり、時刻Ｔｂより後では、Ｘ’２６２２’、Ｘ’２６２３’、Ｘ’２６２４’、およびＸ’２６２５’となる。よって、時刻Ｔｂより前では、フラッシュＥＥＰＲＯＭ２０がアクセスされ、時刻Ｔｂより後では、第１の補助ＲＡＭ２１がアクセスされる。
【００９０】
ここでは、ＣＰＵ１１が第１の補助ＲＡＭ２１に記憶されたメインプログラムを読み出す場合について説明したが、ＣＰＵ１１が第１〜第３の補助ＲＡＭ２１〜２３に記憶されたプログラムを読み出す場合も、これと同様である。この場合も、アドレス変換回路１２が図７（ｄ）に示すテーブルに従ってアドレス変換を行うことにより、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に対するアドレスを出力するだけで、第１〜第３の補助ＲＡＭ２１〜２３に正しくアクセスすることができる。
【００９１】
本実施形態に係るマイクロコンピュータ１０については、以下のような変形例を構成することができる。まず、上記の説明では、マイクロコンピュータ１０は、電源電圧ＶａがフラッシュＥＥＰＲＯＭ２０の動作下限電圧Ｖ１よりも低くなったときに、第１の状態ＳＴ１に遷移することとした。これに代えて、マイクロコンピュータ１０は、電源電圧ＶａがＶ１よりも高い所定の電圧Ｖ１’よりも低くなったときに、第１の状態ＳＴ１に遷移することとしてもよい。この場合、転送開始電圧Ｖ２は、上記電圧Ｖ１’よりも高い値に設定される。
【００９２】
また、上記の説明では、プログラム転送回路１３は、電源電圧ＶａがＶ２よりも低くなったときに、割込みベクタテーブルおよびサブルーチンプログラムを転送することとした。これに代えて、プログラム転送回路１３は、電源電圧ＶａがＶ１よりも低くなる前であれば、任意の時点で割込みベクタテーブルおよびサブルーチンプログラムを転送してもよい。例えば、プログラム転送回路１３は、リセット後の発振安定待ち状態において、割込みベクタテーブルおよびサブルーチンプログラムを転送してもよい。
【００９３】
また、上記の説明では、プログラム転送回路１３は、割込みベクタテーブルおよびサブルーチンプログラムを転送した後に直ちに待機状態に入ることとした。これに代えて、プログラム転送回路１３は、割込みベクタテーブルおよびサブルーチンプログラムを転送し、１個または２個のプログラムセグメントを第１および第２の補助ＲＡＭ２１、２２に転送した後に、待機状態に入ることとしてもよい。
【００９４】
また、上記の説明では、プログラム転送回路１３は、特定の順序で割込みベクタテーブルおよびサブルーチンプログラムを転送することとした。これに代えて、プログラム転送回路１３は、これらの要素を任意の順序で転送してもよく、あるいは、割込みベクタテーブルを第１および第２の補助ＲＡＭ２１、２２の割込みベクタテーブル領域に同時に転送してもよい。
【００９５】
また、上記の説明では、マイクロコンピュータ１０は、転送用メモリおよび実行用メモリとして切り替えて使用されるメモリとして、第１および第２の補助ＲＡＭ２１、２２を備えることとした。これに代えて、マイクロコンピュータ１０は、転送用メモリおよび実行用メモリとして切り替えて使用されるメモリとして、３個以上のＲＡＭを備えていてもよい。
【００９６】
以上に示すように、本実施形態に係るマイクロコンピュータによれば、電源電圧がフラッシュＥＥＰＲＯＭの動作下限電圧よりも低い状態では、フラッシュＥＥＰＲＯＭに記憶されたプログラムは第１および第２の補助ＲＡＭに転送され、ＣＰＵは第１および第２の補助ＲＡＭに記憶されたプログラムを実行する。したがって、このマイクロコンピュータは、電源電圧がフラッシュＥＥＰＲＯＭの動作下限電圧よりも低い状態でも動作する。
【００９７】
また、プログラム転送部は、ＣＰＵがフラッシュＥＥＰＲＯＭにアクセスしていないときにフラッシュＥＥＰＲＯＭにアクセスするので、プログラム転送によってＣＰＵの動作が妨げられることがない。したがって、このマイクロコンピュータの動作は、ＲＯＭ内蔵マイクロコンピュータと一致する。
【００９８】
また、このマイクロコンピュータは昇圧部を備えているので、電源電圧が低いときにフラッシュＥＥＰＲＯＭに供給される電源電圧をマイクロコンピュータの内部で発生させることができる。また、昇圧部がプログラム転送が行われるときに動作するので、マイクロコンピュータの消費電力を削減することができる。
【００９９】
また、電源電圧がフラッシュＥＥＰＲＯＭの動作下限電圧と転送開始電圧との間にある状態でもプログラム転送が行われるので、電源電圧が任意のタイミングでフラッシュＥＥＰＲＯＭの動作下限電圧よりも低くなった場合でも、ＣＰＵは、停止することなく、プログラムの実行を継続することができる。
【０１００】
また、第１および第２の補助ＲＡＭのうち、既に実行されたプログラムを記憶した補助ＲＡＭが転送用メモリとして、今後実行されるプログラムを記憶した補助ＲＡＭが実行用メモリとして使用されるので、小容量の複数のＲＡＭを用いて大容量のフラッシュＥＥＰＲＯＭを模擬し、マイクロコンピュータに内蔵されるＲＡＭの総容量を削減することができる。
【０１０１】
また、ＣＰＵが所定範囲のプログラムの実行を完了したときに、転送用メモリと実行用メモリとが切り替えられるので、プログラム転送を迅速に開始し、ＣＰＵが１つのプログラムセグメントの実行を完了する前に、次のプログラムセグメントの転送を完了させることができる。
【０１０２】
また、電源電圧が低くなる前に、第３の補助ＲＡＭにはサブルーチンプログラムが、第１および第２の補助ＲＡＭの割込みベクタテーブル領域には割込みベクタテーブルが転送されるので、ＣＰＵは、第１および第２の補助ＲＡＭに記憶されたプログラムを実行している間も、サブルーチン呼び出しを含む複雑なプログラムを正しく実行し、割込み処理を正しく行うことができる。
【０１０３】
このように、本実施形態に係るマイクロコンピュータによれば、電源電圧が内蔵したフラッシュＥＥＰＲＯＭの動作下限電圧よりも低い状態でも動作し、ＲＯＭ内蔵マイクロコンピュータと動作が一致するマイクロコンピュータを得ることができる。このようなマイクロコンピュータとマスクＲＯＭ内蔵マイクロコンピュータとを併用してシステム開発や量産を行えば、２種類のマイクロコンピュータの動作が一致しないという問題を解決し、システム開発期間の短縮とシステムの低コスト化を同時に達成することができる。
【０１０４】
（第２の実施形態）
図１１は、本発明の第２の実施形態に係るフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータの構成を示す図である。図１１に示すマイクロコンピュータ６０は、第１の実施形態に係るマイクロコンピュータ１０（図１）に外部インターフェイス回路６１を追加したものである。本実施形態の構成要素のうち、第１の実施形態と同一の構成要素については、同一の参照符号を付して、説明を省略する。
【０１０５】
マイクロコンピュータ６０は、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０に記憶されたプログラムを実行している間でも、当該プログラムを書き換えできるという特徴を有する。フラッシュＥＥＰＲＯＭ２０に書き込まれるプログラムは、マイクロコンピュータ６０の外部に設けたフラッシュＥＥＰＲＯＭ書き換え装置７０から供給される。外部インターフェイス回路６１は、プログラム転送用バス３２に接続され、フラッシュＥＥＰＲＯＭ書き換え装置７０との間でデータを送受信するインターフェイス回路である。
【０１０６】
マイクロコンピュータ６０では、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムの書き換えは、以下のようにして行われる。プログラム転送回路１３は、プログラム書き換えの指示を受けると、ＣＰＵ１１がその時点で実行しているプログラムセグメントの次のプログラムセグメントを、第１および第２の補助ＲＡＭ２１、２２のいずれか（ここでは、第１の補助ＲＡＭ２１とする）に転送する。この際、プログラム転送回路１３は、バスビジィ信号ＢＢに基づき、ＣＰＵ１１がフラッシュＥＥＰＲＯＭ２０にアクセスしていないときに、フラッシュＥＥＰＲＯＭ２０にアクセスする。
【０１０７】
ＣＰＵ１１があるプログラムセグメントの実行を完了し、最終アドレス検出信号Ｅ０が出力されると、プログラム転送回路１３は、アドレス変換モード信号ＡＭを０から１に変化させる。これにより、ＣＰＵ１１はフラッシュＥＥＰＲＯＭ２０に代えて、第１の補助ＲＡＭ２１からプログラムを読み出すようになる。また、このとき、フラッシュＥＥＰＲＯＭ２０は、プログラム転送用バス３２に接続される。
【０１０８】
フラッシュＥＥＰＲＯＭ２０に書き込まれるべきプログラムは、フラッシュＥＥＰＲＯＭ書き換え装置７０から供給される。外部インターフェイス回路６１は、フラッシュＥＥＰＲＯＭ書き換え装置７０との間で通信を行い、フラッシュＥＥＰＲＯＭ２０に書き込まれるべきプログラムを所定の単位で受信する。プログラム転送回路１３は、ＣＰＵ１１が第１の補助ＲＡＭ２１に記憶されたプログラムを実行している間に、外部インターフェイス回路６１で受信した所定の単位のプログラムをフラッシュＥＥＰＲＯＭ２０に書き込む。これにより、フラッシュＥＥＰＲＯＭ２０に記憶されたプログラムは、フラッシュＥＥＰＲＯＭ書き換え装置７０から供給された新しいプログラムによって書き換えられる。
【０１０９】
プログラムの書き換えが完了すると、プログラム転送回路１３は、アドレス変換モード信号ＡＭを１から０に変化させる。これにより、ＣＰＵ１１は第１の補助ＲＡＭ２１に代えて、フラッシュＥＥＰＲＯＭ２０からプログラムを読み出すようになる。また、このとき、フラッシュＥＥＰＲＯＭ２０は、システムバス３１に接続される。その後、ＣＰＵ１１は、フラッシュＥＥＰＲＯＭ２０に記憶された、書き換え後のプログラムに含まれる命令を、順に読み出して実行する。
【０１１０】
以上に示すように、本実施形態に係るマイクロコンピュータによれば、外部インターフェイス回路を備えることにより、ＣＰＵがフラッシュＥＥＰＲＯＭに記憶されたプログラムを実行している間も、ＣＰＵを停止させることなく、フラッシュＥＥＰＲＯＭに記憶されたプログラムを書き換えることができる。なお、本実施形態についても、第１の実施形態と同様に、各種の変形例を構成できることは言うまでもない。
【産業上の利用可能性】
【０１１１】
本発明のマイクロコンピュータは、電源電圧が不揮発性メモリの動作下限電圧よりも低い状態でも動作し、ＲＯＭ内蔵マイクロコンピュータと動作が一致するという特徴を有するので、各種の電子機器に内蔵して使用されるマイクロコンピュータとして利用することができる。
【図面の簡単な説明】
【０１１２】
【図１】本発明の第１の実施形態に係るフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータの構成を示すブロック図
【図２】図１に示すマイクロコンピュータのメモリマップを示す図
【図３】図１に示すマイクロコンピュータの動作を示すフローチャート
【図４】図１に示すマイクロコンピュータの第１および第２の状態における動作を示す模式図
【図５】図１に示すマイクロコンピュータの第２の状態における動作を示す模式図
【図６】図１に示すマイクロコンピュータの第３の状態における動作を示す模式図
【図７】図１に示すマイクロコンピュータのアドレス変換回路の動作を示す図
【図８】図１に示すマイクロコンピュータのタイミングチャート
【図９】図１に示すマイクロコンピュータの詳細なタイミングチャート
【図１０】図１に示すマイクロコンピュータの詳細なタイミングチャート
【図１１】本発明の第２の実施形態に係るフラッシュＥＥＰＲＯＭ内蔵マイクロコンピュータの構成を示す図
【符号の説明】
【０１１３】
１０、６０…マイクロコンピュータ
１１…ＣＰＵ
１２…アドレス変換回路
１３…プログラム転送回路
１４…ワークＲＡＭ
１５…電圧検知回路
１６…昇圧回路
２０…フラッシュＥＥＰＲＯＭ
２１…第１の補助ＲＡＭ
２２…第２の補助ＲＡＭ
２３…第３の補助ＲＡＭ
３１…システムバス
３２…プログラム転送用バス
４０、４１、４２、４３…バス選択回路
５０、５１、５２…アドレス比較回路
６１…外部インターフェイス回路
７０…フラッシュＥＥＰＲＯＭ書き換え装置
ＡＭ…アドレス変換モード信号
ＢＢ…バスビジィ信号
ＢＳ０〜ＢＳ３…バス選択信号
ＣＣ…昇圧制御信号
Ｅ０〜Ｅ２…最終アドレス検出信号
ＶＬ…電源電圧レベル信号
Ｖａ…電源電圧
Ｖｂ…昇圧後の電圧
【図１】
2005346282.tif 000003
【図２】
2005346282.tif 000004
【図３】
2005346282.tif 000005
【図４】
2005346282.tif 000006
【図５】
2005346282.tif 000007
【図６】
2005346282.tif 000008
【図７】
2005346282.tif 000009
【図８】
2005346282.tif 000010
【図９】
2005346282.tif 000011
【図１０】
2005346282.tif 000012
【図１１】
2005346282.tif 000013