(57)【要約】      （修正有）【課題】記憶部のデータ書換え動作中でも割込み処理を実行ができる半導体装置を提供する。【解決手段】半導体装置２０のプログラムを格納するプログラム領域AR１０と、動作中に保持の必要があるデータを格納するデータ領域AR１１とを有する記憶部２３と、データ書換えを実行する前に、プログラム及び割込み処理プログラムを記憶部２３から転送して格納するためのプログラム領域AR１３を有するプログラム記憶部２２と、記憶部２３及びプログラム記憶部２２のうち、記憶部としていずれか一方を選択する選択部２４と、データ書換え中に実行するプログラム及び割込み処理プログラムを記憶部２３からプログラム記憶部２２に転送し、データ書換えを実行する際には、記憶部をプログラム記憶部２２の切り替えでデータ書換えを実行し、データ書換え中に割込み要求が発生した場合は、プログラム記憶部２２から割込み処理プログラムを実行する制御部２とを備えている。【選択図】図１
2005242621.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置の動作を制御するプログラムを格納するプログラム領域と、前記半導体装置の動作中に保持する必要があるデータを格納するデータ領域とを有する記憶部と、
前記記憶部の前記データ領域に対してデータ書換え動作を実行する前に、前記データ書換え動作中に実行するプログラム及び割込み処理プログラムを前記記憶部から転送して格納するためのプログラム領域を有するプログラム記憶部と、
前記記憶部及び前記プログラム記憶部のうち、制御情報を供給する記憶部としていずれか一方を選択する選択部と、
前記データ書換え動作中に実行するプログラム及び前記割込み処理プログラムを前記記憶部から前記プログラム記憶部に転送して予め格納しておき、前記データ書換え動作を実行する際には、前記制御情報を供給する記憶部を前記プログラム記憶部に切り替えた上で前記データ書換え動作を実行し、前記データ書換え動作中に割込み要求が発生した場合には、前記プログラム記憶部から前記割込み処理プログラムを読み出し割込み処理を実行する制御部と
を備えることを特徴とする半導体装置。
【請求項２】
前記記憶部及び前記プログラム記憶部は、前記割込み処理プログラムが格納された領域を示す割込みベクタアドレスを格納する割込みベクタ領域をそれぞれ有し、
前記制御部は、前記割込みベクタアドレスを前記記憶部から前記プログラム記憶部に転送して予め格納しておき、前記データ書換え動作中に前記割込み要求が発生した場合には、前記プログラム記憶部から前記割込みベクタアドレスが示す前記割込み処理プログラムを読み出し前記割込み処理を実行することを特徴とする請求項１記載の半導体装置。
【請求項３】
前記データ書換え動作中に前記制御部からアドレス情報を与えられると、前記アドレス情報に対して所望のアドレス変換処理を施した上で前記プログラム記憶部に出力するアドレス変換部をさらに備えることを特徴とする請求項１記載の半導体装置。
【請求項４】
前記アドレス変換部は、
オフセットアドレスを格納するレジスタと、
前記制御部から与えられる前記アドレス情報と前記オフセットアドレスとを加算して前記プログラム記憶部に出力する加算器と
を含むことを特徴とする請求項３記載の半導体装置。
【請求項５】
半導体装置の動作を制御するプログラムを格納するプログラム領域と、前記半導体装置の動作中に保持する必要があるデータを格納するデータ領域とを有する記憶部から、前記記憶部の前記データ領域へのデータ書換え動作中に実行するプログラム及び割込み処理プログラムを、プログラム記憶部に転送して予め格納する格納ステップと、
前記データ書換え動作を実行する前に、制御情報を供給する記憶部を前記プログラム記憶部に切り替える切替えステップと、
前記データ書換え動作中に割込み要求が発生した場合には、前記プログラム記憶部から前記割込み処理プログラムを読み出し割込み処理を実行する割込み処理ステップと
を備えることを特徴とする半導体装置の割込み処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びその割込み処理方法に関する。
【背景技術】
【０００２】
半導体装置の分野においては、複数のフラッシュEEPROM(Electrically Erasable and Programmable ROM)を混載したマイクロコントローラが開発されており、当該マイクロコントローラ１の構成を図６に示す。
【０００３】
かかるマイクロコントローラ１は、CPU(Central Processing Unit)２と、ブートROM(Read Only Memory)３と、当該マイクロコントローラ１の動作を制御するプログラムが格納されたプログラムメモリ４と、当該マイクロコントローラ１の動作中に保持する必要があるデータを格納するためのデータメモリ５と、種々のデータを格納するためのデータメモリ６と、周辺回路７と、入出力回路８とを有し、プログラムメモリ４とデータメモリ５は、いずれも例えばフラッシュEEPROMによって構成され、データメモリ６は、例えばRAM(Random Access Memory)によって構成されている。なお、ブートROM３は、例えばマスクROMにより構成されている。
【０００４】
ここで、マイクロコントローラ１は、通常３つのモードを有し、以下、各モードについて説明する。第１のモードは、フラッシュEEPROM単体モードと呼ばれ、マイクロコントローラ１を所望の応用システムに組み込む前に、例えばEPROM(Erasable and Programmable ROM)ライタなどの外部機器を用いて、アドレスやデータなど、当該マイクロコントローラ１の動作を制御するプログラムをプログラムメモリ４に書き込むモードである。
【０００５】
この第１のモードでは、CPU２は関与せず、直接EPROMライタなどの外部機器が、マイクロコントローラ１の動作を制御するプログラムをプログラムメモリ４に書き込むようになされている。
【０００６】
第２のモードは、ブートモードと呼ばれ、マイクロコントローラ１を所望の応用システムに組み込んだ後に、プログラムメモリ４の内容を書き換えるモードである。この第２のモードでは、CPU２が、ブートROM３に書き込まれたプログラムに基づいて、プログラムメモリ４に対するデータの消去及び書込みを行うことにより、当該プログラムメモリ４の内容を書き換えるようになされている。
【０００７】
第３のモードは、ユーザーモードと呼ばれ、所望の応用システムに組み込まれたマイクロコントローラ１が、プログラムメモリ４に書き込まれたプログラムに基づいて動作するモードであり、マイクロコントローラ１は、通常この第３のモードで使用される。
【０００８】
ところで、マイクロコントローラは、通常、単一の電源で動作するが、複数のフラッシュEEPROMを混載するマイクロコントローラ１は、フラッシュEEPROMに対するデータの書込み及び消去を行う際、高電圧を必要とするため、電源を内部昇圧してフラッシュEEPROMに供給する昇圧回路（図示せず）を内蔵している。この昇圧回路は、半導体集積回路上で大きな面積を占めるため、チップ面積を縮小することの障害となる。
【０００９】
図６に示すマイクロコントローラ１のように、プログラム格納用メモリ及びデータ格納用メモリとして、それぞれ独立のフラッシュEEPROMを２つ混載すると、昇圧回路も２つ必要となり、チップ面積がさらに増大するという問題が生じる。
【００１０】
また、素子の微細化に伴って、フラッシュEEPROMのメモリセル自身が微細化されることにより、メモリ容量は大容量化されるが、昇圧回路の縮小化はそれ程進まない。
【００１１】
さらに、このマイクロコントローラ１では、プログラムメモリ４及びデータメモリ５のメモリ容量が固定され、システムの自由度が制限されるという問題も生じる。
【００１２】
かかる問題を解決するため、図６との対応部分に同一符号を付した図７に示すようなマイクロコントローラ１０が提案されており、このマイクロコントローラ１０は、単一のEEPROM１１をプログラム領域AR１とデータ領域AR２とに分けて使用するようになされている。
【００１３】
よってマイクロコントローラ１０は、図６に示すマイクロコントローラ１において、２つの独立したフラッシュEEPROMによってプログラムメモリ４とデータメモリ５を構成していた回路ブロックを、単一のEEPROM１１によって構成することにより、昇圧回路を１つに削減して、チップ面積の縮小化を図ることができ、またプログラム領域AR1とデータ領域AR２の境界を自由にし得ることから、システムを応用する際の汎用性を向上させることができる。
【００１４】
以下、従来のマイクロコントローラに関する文献名を記載する。
【特許文献１】特開平９−１１４６７８号公報
【特許文献２】特開平９−２８２１８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ところで、単一のEEPROM１１をプログラム領域AR１とデータ領域AR２とに分けて使用するマイクロコントローラ１０においては、CPU２が、データ領域AR２にデータの書換えを実行している間、プログラム領域AR1からプログラムの読み出しができない。このためCPU２は、EEPROM１１のデータ書換え動作中、その動作が大幅に制限を受け、特に割込み処理ができないという問題が生じる。
【００１６】
すなわち、マイクロコントローラ１０では、上述したユーザーモード時、データ領域AR２のデータを書き換えるため、EEPROM１１をデータ書換えモードに設定すると、当該EEPROM１１がビジー（BUSY）状態になり、プログラム領域AR１からCPU２へインストラクション（命令）が出力されなくなる。
【００１７】
この場合、CPU２は、いわゆるウエイト（WAIT）動作を実行して、EEPROM１１へのデータ書換えが終了するまで待機するか、又はEEPROM１１への書き換え動作が終了しているか否かを監視するプログラムをデータメモリ６に予め書き込んでおき、データメモリ６をプログラム領域として当該プログラムを読み出すことにより、書換えが終了したか否かをEEPROM１１に問い合わせるポーリング処理を実行するようにされている。
【００１８】
この間、CPU２は、その動作が大きく制限され、特に割込み処理を実行できないという大きな制約がある。例えば時計機能を有する応用システムでは、時計のカウントを進められず、またLCD(Liquid Crystal Display)などによって時計表示を行っている場合には、当該時計表示も更新できなくなる。従って、EEPROM１１のデータ書換え中であっても、所望の処理を実行することが必要な応用システムに当該マイクロコントローラ１０を使用することはできないという不都合がある。
【００１９】
本発明は以上の点を考慮してなされたもので、記憶部のデータ書換え動作中であっても、割込み処理を実行することができる半導体装置及びその割込み処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の一態様による半導体装置は、
半導体装置の動作を制御するプログラムを格納するプログラム領域と、前記半導体装置の動作中に保持する必要があるデータを格納するデータ領域とを有する記憶部と、
前記記憶部の前記データ領域に対してデータ書換え動作を実行する前に、前記データ書換え動作中に実行するプログラム及び割込み処理プログラムを前記記憶部から転送して格納するためのプログラム領域を有するプログラム記憶部と、
前記記憶部及び前記プログラム記憶部のうち、制御情報を供給する記憶部としていずれか一方を選択する選択部と、
前記データ書換え動作中に実行するプログラム及び前記割込み処理プログラムを前記記憶部から前記プログラム記憶部に転送して予め格納しておき、前記データ書換え動作を実行する際には、前記制御情報を供給する記憶部を前記プログラム記憶部に切り替えた上で前記データ書換え動作を実行し、前記データ書換え動作中に割込み要求が発生した場合には、前記プログラム記憶部から前記割込み処理プログラムを読み出し割込み処理を実行する制御部と
を備えることを特徴とする。
【００２１】
また本発明の一態様による半導体装置の割込み処理方法は、
半導体装置の動作を制御するプログラムを格納するプログラム領域と、前記半導体装置の動作中に保持する必要があるデータを格納するデータ領域とを有する記憶部から、前記記憶部の前記データ領域へのデータ書換え動作中に実行するプログラム及び割込み処理プログラムを、プログラム記憶部に転送して予め格納する格納ステップと、
前記データ書換え動作を実行する前に、制御情報を供給する記憶部を前記プログラム記憶部に切り替える切替えステップと、
前記データ書換え動作中に割込み要求が発生した場合には、前記プログラム記憶部から前記割込み処理プログラムを読み出し割込み処理を実行する割込み処理ステップと
を備えることを特徴とする。
【発明の効果】
【００２２】
本発明の半導体装置及びその割込み処理方法によれば、記憶部のデータ書換え動作中であっても割込み処理を実行することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について図面を参照して説明する。
【００２４】
（１）第１の実施の形態
図１に、本発明の第１の実施の形態によるマイクロコントローラ２０を示す。
【００２５】
このマイクロコントローラ２０は、CPU２と、ブートROM２１と、例えばRAMによって構成されているプログラム格納メモリ２２と、EEPROM２３と、例えばRAMによって構成されているデータメモリ６と、メモリ選択レジスタ２４と、周辺回路７と、入出力回路８とを有する。
【００２６】
EEPROM２３は、当該マイクロコントローラ２０の動作を制御するプログラム及び割込みが発生したときに実行する割込み処理プログラムが格納されたプログラム領域AR１０と、当該マイクロコントローラ２０の動作中に保持する必要があるデータを格納するためのデータ領域AR１１と、割込み処理プログラムが格納された領域を示す割込みベクタアドレスが格納された割込みベクタ領域AR１２とを含む。
【００２７】
プログラム格納メモリ２２は、CPU２がEEPROM２３のデータ領域AR１１へのデータ書換え動作を実行する前に、当該データ書換え動作中に実行するプログラムと、割込みベクタアドレス及び割込み処理プログラムとを、EEPROM２３から転送して格納するためのメモリであり、データ書換え動作中に実行するプログラム及び割込み処理プログラムを格納するためのプログラム領域AR１３と、割込みベクタアドレスを格納するための割込みベクタ領域AR１４とを含む。
【００２８】
メモリ選択レジスタ２４は、CPU２にインストラクション（命令）を供給するメモリを切り替えるための回路であり、EEPROM２３のデータ書換え動作中には、プログラム格納メモリ２２を選択し、EEPROM２３のデータ書換え動作以外の場合には、EEPROM２３を選択するようになされている。
【００２９】
なお、図７に示された要素と同一のものには同一の符号を付して説明を省略する。
【００３０】
図２にCPU２のアドレス空間のメモリマップを示す。図２(a)は、CPU２がEEPROM２３のデータ書換え動作を実行していない状態、すなわち当該CPU２にインストラクションを供給するメモリとしてEEPROM２３が選択されている場合（CS=１）におけるアドレス空間のメモリマップを示す。
【００３１】
この図２(a)に示すように、マイクロコントローラ２０では、CPU２のアドレス空間を１Mバイト（00000H〜FFFFFH番地）に設定し、「00000H〜0009FH」番地の領域に入出力回路８及び周辺回路７の制御レジスタを割り当て、「000A0H〜02009FH」番地の領域にデータメモリ６を割り当てる。
【００３２】
さらにマイクロコントローラ２０では、「C0000H〜FFFFFH」番地の領域に５１２バイトのEEPROM２３を割り当て、このうち「C0000H〜FFEFFH」番地の領域をデータ領域AR１１及びプログラム領域AR１０とすると共に、「FFF00H〜FFFFFH」番地の領域を割込みベクタ領域AR１２とする。なお、EEPROM２３においては、「C0000H〜FFEFFH」番地の領域のうち、「FE000H〜FFEFFH」番地の領域に、データ書換え動作中に実行するプログラム及び割込み処理プログラムが格納されている。
【００３３】
一方、図２(b)は、CPU２がEEPROM２３のデータ書換え動作を実行している状態、すなわち当該CPU２にインストラクションを供給するメモリとしてプログラム格納メモリ２２が選択されている場合（CS=0）におけるアドレス空間のメモリマップを示す。
【００３４】
この図２(b)に示すように、マイクロコントローラ２０では、EEPROM２３を選択した場合と同様に、CPU２のアドレス空間を１Mバイト（00000H〜FFFFFH番地）に設定し、「00000H〜0009FH」番地の領域に入出力回路８及び周辺回路７の制御レジスタを割り当て、「000A0H〜02009FH」番地の領域にデータメモリ６を割り当てる。
【００３５】
この場合、マイクロコントローラ２０では、「FE000H〜FFFFFH」番地の領域に２５８バイトのプログラム格納メモリ２２を割り当て、このうち「FE000H〜FFEFFH」番地の領域をプログラム領域AR１3とすると共に、「FFF00H〜FFFFFH」番地の領域を割込みベクタ領域AR１２とする。
【００３６】
以上の構成を備えたことにより、CPU２が、EEPROM２３のデータ領域AR１１に対してデータ書換え動作を実行する前に、当該データ書換え動作中に実行するプログラムと、割込みベクタアドレス及び割込み処理プログラムとを、EEPROM２３のプログラム領域AR１０及び割込みベクタ領域AR１２から読み出しプログラム格納メモリ２２に予め格納しておく。
【００３７】
その後、CPU２は、EEPROM２３のデータ領域AR１１に対してデータ書換え動作を実行する際には、まず始めに、「FE000H〜FFEFFH」番地の領域のうち、データ書換え動作中に実行するプログラムが格納されている領域の先頭アドレスにジャンプする。
【００３８】
次いで、CPU２は、メモリ選択レジスタ２４に「０」を書き込むことにより、インストラクション（命令）を供給するメモリを、EEPROM２３からプログラム格納メモリ２２に切り替えた後、EEPROM２３のデータ領域AR１１に対してデータ書換え動作を起動する。
【００３９】
この状態において、CPU２は、データの書換え動作中に割込み要求が発生したことを検出すると、プログラム格納メモリ２２の割込みベクタ領域AR１４にアクセスして割込みベクタアドレスを読み出し当該割込みベクタアドレスにジャンプすることにより、割込み処理プログラムを読み出し割込み処理を実行する。
【００４０】
このように、単一のEEPROM２３をプログラムメモリ及びデータメモリの２つの役割で使用するマイクロコントローラ２０において、EEPROM２３のデータ書換え動作中に実行するプログラムと割込みベクタアドレス及び割込み処理プログラムとを格納するプログラム格納メモリ２２を設けると共に、CPU２にインストラクション（命令）を供給するメモリを切り替えるためのメモリ選択レジスタ２４を設けている。
【００４１】
これにより、本実施の形態によれば、データ書換え動作中に実行するプログラムと、割込みベクタアドレス及び割込み処理プログラムとを、プログラム格納メモリ２２に予め格納しておき、EEPROM２３のデータ書換え動作を実行する際には、インストラクションを供給するメモリをプログラム格納メモリ２２に切り替えた上でEEPROM２３のデータ書換え動作を起動し、当該データ書換え動作中に割込み要求が発生した場合には、プログラム格納メモリ２２から割込みベクタアドレスが示す割込み処理プログラムを読み出し割込み処理を実行することにより、EEPROM２３のデータ書換え動作中であっても割込み処理を実行することができる。
【００４２】
これにより、例えば時計機能を有する応用システムでは、時計のカウント動作や時計表示の更新が可能になり、当該マイクロコントローラ１０の応用範囲を拡大させることができる。
【００４３】
（２）第２の実施の形態
図３に、本発明の第２の実施の形態によるマイクロコントローラ３０を示す。
【００４４】
このマイクロコントローラ３０は、CPU２と、ブートROM３１と、例えばRAMによって構成されているプログラム格納メモリ２２と、EEPROM２３と、例えばRAMによって構成されているデータメモリ６と、メモリ選択レジスタ２４と、アドレス変換器３２と、周辺回路７と、入出力回路８とを有する。
【００４５】
このうちアドレス変換器３２は、EEPROM２３のデータ書換え動作中に実行するプログラム及び割込み処理プログラムを、CPU２のアドレス空間上の任意の領域にマッピング可能とするために設けられた回路である。
【００４６】
なお、図１に示された要素と同一のものには同一の符号を付して説明を省略する。
【００４７】
すなわち、図２との対応部分に同一符号を付した図４に示すように、マイクロコントローラ３０では、オペレータが、CPU２のアドレス空間上、EEPROM２３のデータ書換え動作中に実行するプログラム及び割込み処理プログラムを格納するプログラム領域AR２０を、「C0000H〜FFE00H」番地内の領域であってかつ連続した２kバイトであれば、任意の領域にプログラムし得るようになされている。
【００４８】
このアドレス変換器３２は、図５に示すように、オフセットアドレス格納レジスタ４０及び全加算器４１を有し、EEPROM２３のデータ書換え動作中に実行するプログラム及び割込み処理プログラムが、CPU２のメモリ空間上例えば「D0000H」番地から２kバイトの領域に格納されている場合には、CPU２からアドレス情報として「D0000H〜D1F00H」番地が入力される。
【００４９】
そしてアドレス変換器３２は、CPU２から与えられたアドレス情報と、オフセットアドレス格納レジスタ４０に格納されている「2E000H」番地とを全加算器４１によって加算して「FE000H〜FFF00H」番地を得、これをプログラム格納メモリ２２に出力することにより、プログラム格納メモリ２２には常に「FE000H〜FFF00H」番地が供給されるようになされている。
【００５０】
以上の構成を備えたことにより、本実施の形態によれば、EEPROM２３のデータ書換え動作中に実行するプログラム及び割込み処理プログラムを、CPU２のアドレス空間上の任意の領域にマッピングすることができ、よってオペレータによるプログラミングの制約を大幅に軽減することができる。
【００５１】
なお上述の実施の形態においては、記憶部としてEEPROM２３を適用した場合について述べたが、本発明はこれに限らず、例えばEPROMのように、他の種々の記憶部を適用しても良い。
【００５２】
また上述の実施の形態においては、プログラム記憶部としてRAMを適用した場合について述べたが、本発明はこれに限らず、例えばEEPROMのように、他の種々のプログラム記憶部を適用しても良い。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１の実施の形態によるマイクロコントローラの構成を示すブロック図である。
【図２】同マイクロコントローラにおけるCPUのアドレス空間のメモリマップを示した説明図である。
【図３】本発明の第２の実施の形態によるマイクロコントローラの構成を示すブロック図である。
【図４】同マイクロコントローラにおけるCPUのアドレス空間のメモリマップを示した説明図である。
【図５】同マイクロコントローラにおけるアドレス変換器の構成を示すブロック図である。
【図６】従来のマイクロコントローラの構成を示すブロック図である。
【図７】従来のマイクロコントローラの構成を示すブロック図である。
【符号の説明】
【００５４】
１、１０、２０、３０  マイクロコントローラ
２  CPU
３、２１、３１  ブートROM
４  プログラムメモリ
５、６ データメモリ
７  周辺回路
８  入出力回路
１１、２３  EEPROM
２２  プログラム格納メモリ
２４  メモリ選択レジスタ
３２  アドレス変換器
【図１】
2005242621.tif 000003
【図２】
2005242621.tif 000004
【図３】
2005242621.tif 000005
【図４】
2005242621.tif 000006
【図５】
2005242621.tif 000007
【図６】
2005242621.tif 000008
【図７】
2005242621.tif 000009