(57)【要約】【課題】  複雑な制御回路を付加することなく、フラッシュメモリ上に書換えプログラムを置いたまま、支障なくフラッシュメモリの書換を可能とする、フラッシュメモリ内蔵のマイクロコンピュータを得る。【解決手段】  フラッシュメモリモジュール２は書換コマンドである消去／書込みコマンドを受け付けると、一連の処理が実行されている期間ビジー状態であることを示すレディステータス信号ＲＹＩＢＹをフラッシュメモリ制御回路３に出力する。フラッシュメモリ制御回路３はレディステータス信号ＲＹＩＢＹがビジー状態を指示するとき、アクティブ“Ｈ”のホールド信号ＨＯＬＤを出力し、ＣＰＵ１のフラッシュメモリモジュール２へのアクセスを不許可にし、レディステータス信号ＲＹＩＢＹがレディ状態に戻ると、“Ｌ”のホールド信号ＨＯＬＤを出力してＣＰＵ１のフラッシュメモリモジュール２へのアクセスを許可する。【選択図】図１
2008077686.tif 000002
【特許請求の範囲】
【請求項１】
所定の命令を実行するＣＰＵと、
複数のブロックに分割され、複数のブロックのうち少なくとも一つのブロックに、書換コマンド及び別メモリ所定アドレスへのジャンプ命令が連続して記述された所定のプログラムが書込まれたフラッシュメモリ部と、
前記フラッシュメモリ部とは独立して設けられ、前記フラッシュメモリ部の書換動作の完了を検出可能なポーリングプログラムが記述された第２のメモリ部とを備え、前記ポーリングプログラムは前記フラッシュメモリ部の書換動作の完了を検出後に前記フラッシュメモリ部の前記所定のプログラム上の所定アドレスにジャンプする命令が記述されているプログラムを含み、前記別メモリ所定アドレスジャンプ命令は前記ポーリングプログラムのスタートアドレスへのジャンプ命令を含み、
前記ＣＰＵは前記所定プログラム及び前記ポーリングプログラムを実行可能であり、前記フラッシュメモリ部は前記書換コマンドに基づき前記所定のプログラム記述領域外での書換動作を実行する、
マイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はフラッシュメモリを内蔵したマイクロコントローラ等のマイクロコンピュータに関する。
【背景技術】
【０００２】
フラッシュメモリを内蔵したマイクロコントローラ（マイクロコンピュータ）において、ＣＰＵを用いたフラッシュメモリの記憶内容の消去および書込みは、従来大別して以下の二通りの状況で行われる。
【０００３】
第一の状況は、マイクロコントローラにてユーザプログラムが動作していない状況での書換であり、マイクロコントローラ自体を停止状態にしてフラッシュ書換制御用のインターフェースを通じてフラッシュライタ等の外部の書換機器によってフラッシュメモリの記憶内容を書き換えるもの、あるいは、フラッシュメモリ書換専用プログラムを実行した上でシリアル通信機能のインターフェースを利用してフラッシュメモリの記憶内容を書き換えるものである。
【０００４】
第二の状況は、マイクロコントローラとしての機能を使用しながらの書換であり、マイクロコントローラが動作途中にマイクロコントローラのフラッシュメモリに記憶された書換プログラムによりバックグラウンドでフラッシュメモリの記憶内容を書き換えるものである。
【０００５】
ただし第二の状況で書換を実現するには、マイクロコントローラ内に別途ＲＡＭを設け、当該ＲＡＭにフラッシュメモリに記憶された書換えプログラムを転送後にＲＡＭ上でフラッシュ書換えプログラムを実行する第１の方法がある。
【０００６】
また、第二の状況で書換を実現する方法として、ハードウェア的にバックグラウンド動作可能な制御回路を設ける第２の方法がある。
【０００７】
以下、この第２の方法について例を挙げて説明する。ブロック分割されているフラッシュメモリにおいて、書換え対象のフラッシュメモリの所定のブロックに対し消去／書込みが行われている期間に、並行してＣＰＵが書換え対象以外のフラッシュメモリ上のブロックに記憶されたプログラムをリードして実行できるようなフラッシュメモリ制御回路が必要となる。
【０００８】
書換え（書込／消去）とリードを並行で行うということは、具体的には、フラッシュメモリを構成する回路のブロック内の各種電位発生回路が、書込／消去用と通常リード用の２系統必要となることにより面積が増大し、マイクロシーケンサ等の制御回路が複雑になる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
第一の状況の場合の問題点として、マイコンがユーザシステムにはんだ付け等によって実装された後、実使用されている途中にフラッシュメモリの書換が不可能であることが挙げられる。フラッシュメモリ内蔵マイコンの応用分野によっては、マイコン使用途中にデータの書換が期待される場合があり、上記手法はこのようなときに使用できないという問題点があった。
【００１０】
この問題点の解決を目指したのが上述した第二の状況での書換が可能である第１及び第２の方法である。
【００１１】
しかしながら、第１の方法の場合、フラッシュメモリからＲＡＭに予めプログラムの転送が必要であり、ＣＰＵに転送負荷が生じること、また、ＣＰＵ書換プログラム用のＲＡＭ容量が必要であることといった問題点があった。
【００１２】
また、第２の方法の場合、このようにバックグランド動作可能な制御回路を設ける場合、マイコン動作が途切れることなく、バックグラウンドでのメモリ書換が必要となるため、上述のように複雑な制御回路が必要となる。
【００１３】
したがって、バックグラウンド書換え機能をもたないチップと比較して同一メモリ容量当りの制御回路が大きくなる。複雑な制御回路は半導体集積回路においては、面積増大につながり、コスト増大を招くという問題点があった。
【００１４】
この発明は上記問題点を解決するためになされたもので、複雑な制御回路を付加することなく、フラッシュメモリ上に書換えプログラムを置いたまま、支障なくフラッシュメモリの書換を可能とする、フラッシュメモリ内蔵のマイクロコンピュータを得ることを目的とする。
【課題を解決するための手段】
【００１５】
この発明に係る請求項１記載のマイクロコンピュータは、所定の命令を実行するＣＰＵと、複数のブロックに分割され、複数のブロックのうち少なくとも一つのブロックに、書換コマンド及び別メモリ所定アドレスへのジャンプ命令が連続して記述された所定のプログラムが書込まれたフラッシュメモリ部と、前記フラッシュメモリ部とは独立して設けられ、前記フラッシュメモリ部の書換動作の完了を検出可能なポーリングプログラムが記述された第２のメモリ部とを備え、前記ポーリングプログラムは前記フラッシュメモリ部の書換動作の完了を検出後に前記フラッシュメモリ部の前記所定のプログラム上の所定アドレスにジャンプする命令が記述されているプログラムを含み、前記別メモリ所定アドレスジャンプ命令は前記ポーリングプログラムのスタートアドレスへのジャンプ命令を含み、前記ＣＰＵは前記所定プログラム及び前記ポーリングプログラムを実行可能であり、前記フラッシュメモリ部は前記書換コマンドに基づき前記所定のプログラム記述領域外での書換動作を実行する。
【発明の効果】
【００１６】
この発明における請求項１記載のマイクロコンピュータは、フラッシュメモリ部の書換動作の完了を検出可能なポーリングプログラムの搭載が可能な必要最小限の容量の第２のメモリを設けるだけで、フラッシュメモリ部に対する書換動作を支障なく実行することができる。
【発明を実施するための最良の形態】
【００１７】
＜実施の形態１＞
図１はこの発明の実施の形態１であるフラッシュメモリ内蔵マイコン（マイクロコントローラ）の基本的な構成を示すブロック図である。
【００１８】
同図に示すように、ＣＰＵ１、フラッシュメモリモジュール２との中間に位置し、両者１，２のインターフェースを制御するフラッシュメモリ制御回路３が設けられる。そして、ＣＰＵ１、フラッシュメモリモジュール２及びフラッシュメモリ制御回路３はそれぞれアドレスバス４及びデータバス５に接続される。
【００１９】
ＣＰＵ１はアドレスバス４にアドレス信号ＡＤ（２０：０）を出力したり、データバス５を介してデータ信号ＤＢ（１５：０）の授受を行ったりする。さらに、ＣＰＵ１はリード／ライト制御信号ＲＷＢ及び命令実行信号ＥＢを出力してフラッシュメモリ制御回路３を制御する。また、ＣＰＵ１はフラッシュメモリ制御回路３からホールド信号ＨＯＬＤを受信する。
【００２０】
フラッシュメモリ制御回路３はアドレスバス４を介してアドレス信号ＡＤ（２０：０）を受信したり、データバス５を介してデータ信号ＤＢ（１５：０）の授受を行う。さらに、フラッシュメモリ制御回路３は、リードモード信号ＲＤＭＯＤＥ及び各種制御信号（ＩＣＥ，ＩＷＥ，ＩＯＥ）を出力してフラッシュメモリモジュール２の消去／書込み等の書換制御及び読出し制御を行う。また、フラッシュメモリ制御回路３は、フラッシュメモリモジュール２からレディステータス信号ＲＹＩＢＹを受信する。
【００２１】
フラッシュメモリモジュール２はアドレスバス４を介してアドレス信号ＡＤ（２０：０）を受信したり、データバス５を介してデータ信号ＤＢ（１５：０）の授受を行う。
【００２２】
レディステータス信号ＲＹＩＢＹは、書換コマンドである消去／書込みコマンドがフラッシュメモリモジュール２内部で受け付けられ、一連の処理が実行されている期間ビジー状態であることを外部から検知可能にするための信号である。したがって、フラッシュメモリ制御回路３は、レディステータス信号ＲＹＩＢＹによって、フラッシュメモリモジュール２内部で書換コマンドが自動実行中か否かを検出することができる。
【００２３】
ホールド信号ＨＯＬＤはＣＰＵ１に対しバス値の固定を要求するためのバス値固定信号であり、フラッシュメモリ制御回路３内で生成される。ホールド信号ＨＯＬＤがバス値の固定を指示するアクティブ（活性状態）“Ｈ”のとき、ＣＰＵ１は、リード／ライト制御信号ＲＷＢ、命令実行信号ＥＢ、アドレス信号ＡＤ（２０：０）、データ信号ＤＢ（１５：０）を含むフラッシュメモリモジュール２のアクセスに必要な信号の信号値を固定する。すなわち、ＣＰＵ１のフラッシュメモリモジュール２に対するアクセスを不許可状態にする。
【００２４】
［フラッシュメモリモジュール］
図２はフラッシュメモリモジュールの基本構成を示すブロック図である。同図に示すように、フラッシュメモリモジュール２は、マイクロシーケンサ１１、チャージポンプ１２、メモリデコーダ１３、メモリブロック１４、及びアドレス／データ／制御信号入力回路１５で構成される。
【００２５】
フラッシュメモリモジュール２は、アドレスバス４，データバス５を介してアドレス信号ＡＤ（２０：０）、データ信号ＤＢ（１５：Ｏ）が、フラッシュメモリ制御回路３から各種制御信号（ＩＣＥ，ＩＷＥ，ＩＯＥ）が入力され、フラッシュメモリモジュール２の内部よりレディステータス信号ＲＹＩＢＹが出力される。
【００２６】
図２に示すように、各種制御信号（ＩＣＥ，ＩＷＥ，ＩＯＥ）は、チップイネーブル信号ＩＣＥ、コマンド書込み信号ＩＷＥ、及び読出信号ＩＯＥを含み、チップイネーブル信号ＩＣＥはフラッシュモジュール選択時、つまりアドレス該当時にアクティブ（活性状態）“Ｌ”となる選択信号であり、チップイネーブル信号ＩＣＥが“Ｈ”（非活性状態）の時はフラッシュメモリへのコマンド書込み及び読出しアクセスは全て無効となる。コマンド書込み信号ＩＷＥはフラッシュメモリモジュール２内のマイクロシーケンサ１１へのコマンド書込み信号であり、アクティブ“Ｌ”期間中アドレスバス４、データバス５のアドレス信号ＡＤ（２０：０）及びデータ信号ＤＢ（１５：０）がアドレス／データ／制御信号入力回路１５を介してマイクロシーケンサ１１に入力され、ラッチされる。
【００２７】
読出信号ＩＯＥは、アドレス信号ＡＤ（２０：０）に応じてフラッシュＲＯＭデータ１９あるいはステータスレジスタ値２０をアクティブ“Ｌ”期間中、出力するための信号である。
【００２８】
マイクロシーケンサ１１はフラッシュメモリモジュール２ヘの消去／書込み等のコマンド入力が受け付けられた場合に、コマンドの種類に応じてチャージポンプ１２、メモリデコーダ１３、メモリブロック１４に対して行う一連の処理に必要な信号を自動発生する制御回路ブロックである。
【００２９】
チャージポンプ１２は各種コマンド処理の過程で必要とされる各種電位レベルを発生可能な電位発生回路群である。
【００３０】
メモリデコーダ１３はアドレス信号ＡＤ（２０：０）と各種コマンド実行過程とに基づき、必要とされるメモリセルの選択を制御する回路ブロックである。
【００３１】
メモリブロック１４は複数のメモリセルがアレー状に配置されたブロックである。
【００３２】
図３はフラッシュメモリモジュール２におけるメモリのアドレスマップの一例を示す説明図である。同図に示すように、各ブロック０〜１０は独立してブロック消去（ブロック単位の一括消去）が可能である。また、書込みは１アドレス毎に可能である。
【００３３】
図４はフラッシュメモリモジュールにおけるユーザコマンドの一覧を表形式で示す説明図である。同図に示すように、フラッシュメモリモジュール２は、外部からの各種制御信号（ＩＣＥ，ＩＷＥ，ＩＯＥ）とアドレス信号ＡＤ（２０：０）、データ信号ＤＢ（１５：Ｏ）の入力値によってコマンド入力を受け付けるように構成されている。
【００３４】
なお、各コマンドの書込み（モードがライトのバスサイクル）はコマンド書込信号ＩＷＥを“Ｌ”にすることで行われ、読み出し（モードがリードのバスサイクル）は読出信号ＩＯＥを“Ｌ”にすることで行われる。また、読出信号ＩＯＥが“Ｌ”のときバッファ２７が活性状態となりセレクタ２８によって選択されるフラッシュＲＯＭデータ１９あるいはステータスレジスタ２０が外部（データバス５等）に出力され、読出信号ＩＯＥが“Ｈ”のとき、バッファ２７が非活性のハイインピーダンス状態となる。
【００３５】
図５はコマンド発行の基本タイミングを示すタイミング図である。図５では自動ブロック消去コマンドのタイミングを示している。同図に示すように、フラッシュメモリの消去、書込みなど書換に関するコマンドは２サイクルのコマンドとなっている。
【００３６】
時刻ｔ５１でのコマンド書込信号ＩＷＥの“Ｌ”から“Ｈ”への立ち上がり時にデータ信号ＤＢ（１５：０）の“２０ｈ”、時刻ｔ５２でのコマンド書込信号ＩＷＥの立ち上がり時にデータ信号ＤＢ（１５：０）の“Ｄ０ｈ”及びアドレス信号ＡＤ（２０：０）のブロックアドレスＢＡｎを認識することにより、マイクロシーケンサ１１はメモリブロック１４のブロックアドレスＢＡｎに対する自動ブロック消去コマンドが発行されたことを認識する。
【００３７】
すなわち、ビジー状態を伴う自動ブロック消去コマンドが受け付けられると、マイクロシーケンサ１１が処理を開始し、一連の処理が正常に完了するか、あるいは、エラーが発生するまでビジー状態となり、その間レディステータス信号ＲＹＩＢＹとして“Ｌ”を出力する。そして、ビジー状態終了時はレディ状態となり、ＲＹＩＢＹ＝“Ｈ”となる。
【００３８】
消去／書込みなどのビジー信号を伴う書換コマンドが発行されビジー状態にあるときは、フラッシュＲＯＭリードを行うとレディ／ビジーステータスやエラーステータスをビットとして有するステータスレジスタ２０の内容が読み出される「ステータスリードモード」に移行する。
【００３９】
このように、マイクロシーケンサ１１は各種制御信号（ＩＣＥ，ＩＷＥ，ＩＯＥ）に基づく制御を実行し、コマンドシーケンス完了後、レディ状態に復帰した時も「ステータスリードモード」が続行されるように制御する。
【００４０】
マイクロシーケンサ１１は、レディ状態時、メモリリード移行コマンド（図４参照）が発行されている場合は、入力アドレス（ＡＤ（２０：０））のフラッシュＲＯＭデータ１９をリード可能な「メモリリードモード」になるように制御する。
【００４１】
リードモード信号ＲＤＭＯＤＥは、上記「ステータスリードモード」から「メモリリードモード」に移行するためのパルス入力である。ＲＤＭＯＤＥ＝“Ｈ”のパルスにてフラッシュメモリモジュール２は「ステータスリードモード」から「メモリリードモード」に移行する。
【００４２】
［ＣＰＵ］
ＣＰＵ１は、アドレス信号ＡＤ（２０：０）、データ信号ＤＢ（１５：０）、リード／ライト制御出力ＲＷＢ、バスサイクルが有効であることを示す命令実行信号ＥＢの出力機能を有する中央処理装置である。ここで、リード／ライト制御出力ＲＷＢは、“Ｈ”のとき「リード」、“Ｌ”のとき「ライト」制御を示し、命令実行信号ＥＢは、“Ｈ”のとき「無効」、“Ｌ”のとき「有効」を示す信号を意味する。
【００４３】
ＣＰＵ１は、内部にプログラムカウンタを有しており、アドレスを順次発生しながら、フラッシュメモリモジュール２または場合によってはＲＡＭ等より、データバス５経由で命令データ（ＤＢ（１５：０））をフェッチしながら、周辺機能ブロックヘのリード、ライト処理を上記リード／ライト制御信号ＲＷＢ、命令実行信号ＥＢにより発行することにより行う。
【００４４】
ＣＰＵ１からフラッシュメモリモジュール２へのアクセスは、ライトアクセスの場合、フラッシュメモリモジュール２のアドレスへの一般的な転送命令によって実現され、リードアクセスの場合はフラッシュメモリモジュール２のアドレスからの一般的な転送命令によって実現される。
【００４５】
本明細書において、ＣＰＵ１からフラッシュメモリモジュール２へのアクセスを特に「コマンド」と呼ぶ。また、ＣＰＵ１側から発行されるフラッシュメモリモジュール２の消去，書込みもしくはモード移行の動作を「書換」と総称する。
【００４６】
ＣＰＵ１は、命令キューを複数命令分備えており、パイプライン処理が可能である。また、分岐命令（ＪＭＰ）が実行される場合、命令キューにフェッチされているＪＭＰ命令より後の命令コードを無効化して、分岐先アドレスの命令実行に移行することができる。
【００４７】
ＣＰＵ１は、ホールド機能を有し、ホールド信号入力により、アドレス信号ＡＤ（２０：０），データ信号ＤＢ（１５：０），リード／ライト制御信号ＲＷＢ，命令実行信号ＥＢの各信号を固定もしくはハイインピーダンス状態にすることができる。
【００４８】
ここで、ＣＰＵ１が各種制御信号をハイインピーダンス状態にする場合は、各制御信号の制御権をＣＰＵ１が解放することに相当する。
【００４９】
［フラッシュメモリ制御回路］
フラッシュメモリ制御回路３は、ＣＰＵ１がフラッシュメモリモジュール２を制御するためのインタフェース回路ブロックでバスホールド制御レジスタ２２を内部に有している。
【００５０】
（バスホールド制御レジスタ）
バスホールド制御レジスタ２２は、ＣＰＵ１からデータバス５及びアドレスバス４を介して与えられるデータ信号ＤＢ（１５：０）及びアドレス信号ＡＤ（２０：０）、並びにリード／ライト制御信号ＲＷＢによって、ＣＰＵ１が実行するプログラムにより書換え可能なレジスタであり、バスホールド信号生成用の先行ホールド信号となるバスホールド制御ビットＨＯＬＤＲＱを備えている。
【００５１】
バスホールド信号ＨＯＬＤは、データバス５、アドレスバス４を固定するための信号で、ＨＯＬＤＲＱ＝“Ｈ”（セット状態）かつ内部で生成するコマンド書込信号ＩＷＥ＝“Ｌ”の条件でアクティブ“Ｈ”になるように生成される。
【００５２】
[動作]
この発明の実施の形態１であるフラッシュメモリ内蔵マイコンの動作について述べる。
【００５３】
ＣＰＵ１はフラッシュメモリモジュール２内に書き込まれているユーザプログラムにより動作する。ユーザプログラムは、フラッシュメモリモジュール２内のメモリブロック１４（図２，図３参照）における１ブロックもしくは複数ブロックにわたって配置されている。ＣＰＵ１はプログラム上の命令を順にフェッチして、パイプライン処理により各命令を実行する。
【００５４】
以下では、ＣＰＵ１がユーザプログラムにより、プログラムが配置されているブロックと異なるブロックのフラッシュメモリに対する書換コマンドを発行する場合の例として自動ブロック消去コマンドを発行する場合についての動作を説明する。
【００５５】
図６及び図７は実施の形態１のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図である。同図に示すように、バスサイクルＴ１〜Ｔ９，Ｔｎ，Ｔ（ｎ＋１）それぞれの１バスサイクルが動作クロックＣＬＫの２周期分となっており、１バスサイクル毎に命令フェッチ、命令実行されている。図６及び図７では命令フェッチが命令実行の４バスサイクル前に行われている例を示している。
【００５６】
図６及び図７のようなタイミングで、まず自動ブロック消去コマンドの第一コマンドを発行する前に２バスサイクル以上の長サイクル間バスアクセスを伴わないダミーのコマンドをユーザプログラムに記述しておく。ＣＰＵ１はまずこの命令をフェッチして命令キューに蓄積し、パイプライン処理により実行するが、フラッシュ書換コマンド直前に長サイクル間バスアクセスを伴わないダミーのコマンドをユーザプログラムに記述することにより、命令キューに空きが出て後続の命令が蓄積されやすくなり、命令キューの有効利用が可能となる。
【００５７】
次に、バスサイクルＴ５において、データ信号ＤＢ（１５：０）上のブロック消去の第一コマンド“２０ｈ”をフラッシュメモリモジュール２のマイクロシーケンサに書き込む命令（転送命令などを使う）としてＣＰＵ１がフェッチ（バスサイクルＴ１に行われる）後、ＲＷＢ＝“Ｌ”、ＥＢ＝“Ｌ”を出力して、フラッシュメモリ制御回路３から所定期間“Ｌ”となるコマンド書込信号ＩＷＥを生成させ、このコマンド書込信号ＩＷＥをフラッシュメモリモジュール２に対して発行する。なお、バスサイクルＴ５におけるコマンド書込信号ＩＷＥの“Ｌ”立ち下がり時が第一コマンドの受信時、すなわち自動ブロック消去コマンドの受信開始時となる。ただし、第一コマンドの内容が確定するのは図５で説明したようにコマンド書込信号ＩＷＥの“Ｈ”立ち上がり時である。
【００５８】
コマンド書込信号ＩＷＥは、図６及び図７に示すように、動作クロックＣＬＫ＝“Ｈ”かつＲＷＢ＝“Ｌ”かつＥＢ＝“Ｌ”で有効になるようにフラッシュ制御回路３内で生成される。フラッシュメモリモジュール２は、コマンド書込信号ＩＷＥの立ち上がりタイミングで第一コマンド（“２０ｈ”）を受け付ける。
【００５９】
ユーザプログラムでは次のバスサイクルＴ６で、ブロック消去コマンドの第二コマンドの発行に先行して、バスホールド制御レジスタ２２のバスホールド制御ビットＨＯＬＤＲＱをセットする（“Ｈ”にする）という、比較的簡単なレジスタセット動作であるレジスタセット命令ＷＲｒｅｇが実行されるように記述されている。したがって、ブロック消去コマンドの第二コマンドの発行に先行して確実にバスホールド制御ビットＨＯＬＤＲＱを“Ｈ”に設定することができる。
【００６０】
フラッシュメモリ制御回路３はホールド信号ＨＯＬＤの生成回路を内部に有し、当該生成回路は、ＨＯＬＤＲＱ＝“Ｈ”かつコマンド書込信号ＩＷＥ＝“Ｌ”の条件でアクティブ（“Ｈ”）になるホールド信号ＨＯＬＤを生成する。なお、ホールド信号ＨＯＬＤは、データバス５、アドレスバス４、リードライト制御信号群（リード／ライト制御信号ＲＷＢ，命令実行信号ＥＢ）を固定するための信号である。ホールド信号ＨＯＬＤがアクティブになると次のバスサイクルからホールドが開始され、ＣＰＵ１はフラッシュメモリモジュール２に対するアクセスが不可能となる。
【００６１】
次のバスサイクルＴ７で、ユーザプログラムによりブロック消去の第二コマンド（ＤＯｈ）が発行される。
【００６２】
そして、コマンド書込信号ＩＷＥ＝“Ｌ”になった時点から上記論理で動作する生成回路によりバスホールド信号ＨＯＬＤがアクティブ“Ｈ”になり、次のバスサイクルＴ８からアドレスバス４、データバス５のホールドが開始される。バスホールド制御ビットＨＯＬＤＲＱをホールド信号ＨＯＬＤに先がけて“Ｈ”に設定することにより、ブロック消去コマンドの受信終了時に確実にホールド信号ＨＯＬＤを“Ｈ”にすることができる。
【００６３】
ホールドされるアドレス、データバス値は、ＣＰＵ１がパイプライン処理をしているためにブロック消去の第二コマンドでないこともある。なお、バスサイクルＴ７におけるコマンド書込信号ＩＷＥの“Ｌ”立ち下がりが第二コマンドの受信時、すなわち自動ブロック消去コマンドの受信終了時となる。ただし、第二コマンドの内容が確定するのはコマンド書込信号ＩＷＥの“Ｈ”立ち上がり時である。
【００６４】
以上により、アドレス信号ＡＤ（２０：０）、データバスＤＢ（１５：０）、リードライト制御信号群の固定が開始され、ＣＰＵ１のバスアクセスは中断される。
【００６５】
コマンド書込信号ＩＷＥの立上りエッジでデータ信号ＤＢ（１５：０）の値がフラッシュメモリモジュール２内のアドレス／データ／制御信号入力回路１５にてラッチされ、マイクロシーケンサ１１でコマンドデコード処理がなされる。第二コマンドのコマンド書込信号ＩＷＥの立上りエッジでマイクロシーケンサ１１はコマンドの種類を識別し、フラッシュメモリモジュール２単体でメモリの自動ブロック消去処理フローを開始するとともに、レディステータス信号ＲＹＩＢＹはビジーを示す“Ｌ”を出力する。
【００６６】
フラッシュメモリモジュール２は、コマンドを受理して処理を開始すると、リード時にステータスレジスタ値２０の出力がなされる「ステータスリードモード」に移行するので、コマンド処理中にＣＰＵ１はフラッシュメモリモジュール２のフラッシュＲＯＭデータ１９をリードすることは不可能であり、フラッシュメモリモジュール２上のプログラム命令のフェッチも不可能となる。
【００６７】
フラッシュメモリモジュール２が内部のマイクロシーケンサ１１によるコマンド処理を実行中はＲＹＩＢＹ＝“Ｌ”でビジー状態となり、コマンド処理を完了したときにはレディ信号出力ＲＹＩＢＹは“Ｌ”から“Ｈ”に変化する。
【００６８】
フラッシュ制御回路３はレディステータス信号ＲＹＩＢＹが“Ｌ”から“Ｈ”に変化後、１バスサイクル以降にホールド信号ＨＯＬＤを“Ｈ”から“Ｌ”に変化させて無効にする。
【００６９】
このとき、フラッシュメモリ制御回路３は、フラッシュメモリモジュール２に入力するリードモード設定パルス信号ＲＤＭＯＤＥを“Ｈ”にすることにより、ビジー状態からレディ状態に復帰後、即座に「ステータスリードモード」にあったフラッシュメモリモジュール２をメモリ内容リード可能な「メモリリードモード」に切換えることができる。
【００７０】
このリードモード信号ＲＤＭＯＤＥは常時“Ｈ”にしておくことにより、フラッシュメモリモジュール２がレディ状態時は常に、リードするとメモリ内容がリード可能な「メモリリードモード」に設定することも可能である。
【００７１】
また、リードモード信号ＲＤＭＯＤＥを、フラッシュ制御回路３内に専用のレジスタを設けてＣＰＵ１から設定するように構成することも可能である。すなわち、リードモード信号ＲＤＭＯＤＥの出力の有効／無効を設定可能にして、状況に応じたリードモード信号ＲＤＭＯＤＥの利用を実現することができる。
【００７２】
以上によりアドレスバス４、データバス５、各種制御信号の固定はリリースされるので、ＣＰＵ１は暴走することなく、フラッシュメモリモジュール２に対するアクセスを含む処理を再開することが可能である。
【００７３】
ユーザプログラムにおいて、フラッシュ書換コマンドの第二コマンドの直後に分岐命令（ＪＭＰ命令）を配置しておけば、ＪＭＰ命令より後のコマンドは分岐命令実行により、無視されることになり、書換コマンド終了後ホールド解除されてユーザプログラムが再開されるとき、ＪＭＰ命令は確実にフェッチされて命令キューにキューイングされていた命令であるために安全に処理再開可能である。
【００７４】
あるいは、このＪＭＰ命令の替わりにパイプラインクリア命令（ＰＩＢ命令）をフラッシュ書換第二コマンド直後に配置すれば、ＰＩＢ命令より後に命令キューにキューイングされていた命令群がクリアされることになり、上記と同様に、書換コマンド終了後ホールド解除されてユーザプログラムが再開されるとき、安全に処理再開可能である。
【００７５】
上記のように、実施の形態１によれば、フラッシュメモリモジュール２の書換えコマンドの処理中は、アドレスバス４、データバス５、各種制御信号がホールドされるため、コマンド処理中にＣＰＵ１がフラッシュメモリモジュール２上の命令コードが読めなくなることによる暴走を回避することが可能である。
【００７６】
また、実施の形態１によれば、書換えプログラムがフラッシュメモリモジュール２上に配置されたままでも、そのプログラムを実行しながら他のブロックのフラッシュＲＯＭ書換え命令の実行が可能であり、従来のようなフラッシュメモリからＲＡＭへのプログラム転送を必要とせず、ＣＰＵのプログラム転送負荷を低減可能である。
【００７７】
加えて、従来の第二の状況における第２の方法であるバックグラウンド書換手法で必要とされた複雑な制御回路を必要としないメリットもある。
【００７８】
なお、実施の形態１では自動ブロック消去動作を例に挙げたが、図４に示すように、他に自動書込み、ロックビットプログラム等の複数種の書換動作の実行時に、フラッシュメモリモジュール２はレディステータス信号ＲＹＩＢＹが“Ｌ”になるように設定されているため、他の書換動作においても、自動ブロック消去同様の効果を得ることができる。
【００７９】
＜実施の形態２＞
図８はこの発明の実施の形態２であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【００８０】
実施の形態２では、ＣＰＵ１がフラッシュメモリ書換えコマンド発行時に、次サイクルの命令から確実にバスホールドを行うためにレディステータス信号ＲＹＩＢＹによるビジー検出に時間先行して、書換コマンド受付通知信号であるコマンド受付通知信号ＩＰＲＥＢＵＳＹを生成する機能を備えたフラッシュメモリモジュール２Ａを用いている点が実施の形態１と異なる。
【００８１】
図９及び図１０は実施の形態２のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図である。
【００８２】
以下では、ＣＰＵ１がユーザプログラムにより、プログラムが配置されているブロックと異なるブロックのフラッシュメモリに対する書換コマンドを発行する場合の例として自動ブロック消去コマンドを発行する場合についての動作を説明する。
【００８３】
図９及び図１０のようなタイミングで、バスサイクルＴ４で、以前のサイクルでＣＰＵ１がフェッチした命令が実行され最初にブロック消去の第一コマンド“２０ｈ”、ＲＷＢ＝“Ｌ”、ＥＢ＝“Ｌ”を出力して、フラッシュメモリモジュール２Ａへの書込みを指示する信号が生成される。
【００８４】
このとき、コマンド書込信号ＩＷＥは、図６及び図７に示すように、ＣＬＫ＝“Ｈ”かつＲＷＢ＝“Ｌ”かつＥＢ＝“Ｌ”でアクティブ“Ｌ”になるようにフラッシュ制御回路３内で生成される。フラッシュメモリモジュール２Ａは、コマンド書込信号ＩＷＥの立ち上がりタイミングで第一コマンドを受け付ける。
【００８５】
実施の形態２におけるフラッシュメモリモジュール２Ａは、第一コマンド受付時、書換コマンドの受付を外部に通知する、書換コマンド受付通知信号であるコマンド受付通知信号ＩＰＲＥＢＵＳＹを出力する。コマンド受付通知信号ＩＰＲＥＢＵＳＹはすべての２サイクルコマンドにおいて第一コマンド受付時にアクティブ“Ｌ”になる信号である。すなわち、コマンド受付通知信号ＩＰＲＥＢＵＳＹは負論理で、“Ｈ”のとき第一コマンド受付なし、“Ｌ”のとき第一コマンド受付を示す出力信号である。
【００８６】
したがって、図９及び図１０に示すように、ブロック消去の第一コマンド受付時、すなわち、ブロック消去コマンドの受信開始時に、フラッシュメモリモジュール２Ａから出力されるコマンド受付通知信号ＩＰＲＥＢＵＳＹは“Ｈ”から“Ｌ”に変化する。
【００８７】
そして、コマンド受付通知信号ＩＰＲＥＢＵＳＹは、ＲＹＩＢＹ＝“Ｈ”のとき、すなわちレディ状態時にネゲートされる（“Ｈ”に戻される）。
【００８８】
このコマンド受付通知信号ＩＰＲＥＢＵＳＹをステータスレジスタ２０の１ｂｉｔにアサインするか、フラッシュメモリ制御回路３Ａ内の制御レジスタ（図示せず）の１ビットにアサインすることにより、ＣＰＵ１よりフラッシュメモリモジュール２Ａあるいはフラッシュメモリ制御回路３Ａからコマンド受付通知信号ＩＰＲＥＢＵＳＹに関する情報をリードして検出可能な信号として用いることができ、ユーザプログラムによる参照が可能となり、フラッシュメモリモジュール２Ａの制御に利用可能である。
【００８９】
また、フラッシュメモリ制御回路３Ａから、各々が書換コマンドの種別に応じて異なる内容となる、複数種の書換コマンドをフラッシュメモリモジュール２Ａに発行し、フラッシュメモリモジュール２Ａ内は、複数種の書換コマンドそれぞれに対応して設けられた複数の受付通知信号の論理和によりコマンド受付通知信号ＩＰＲＥＢＵＳＹを生成するように構成してもよい。
【００９０】
フラッシュメモリ制御回路３Ａ内のバスホールド信号ＨＯＬＤの生成回路は、コマンド受付通知信号ＩＰＲＥＢＵＳＹ＝“Ｌ”かつコマンド書込信号ＩＷＥ＝“Ｌ”の条件でバスホールド信号ＨＯＬＤがアクティブになるように設計される。
【００９１】
次のバスサイクルＴ５で、ユーザプログラムによりブロック消去の第二コマンド“Ｄ０ｈ”が発行されるが、コマンド書込信号ＩＷＥ＝“Ｌ”になった時点から上記論理により動作する生成回路によってバスホールド信号ＨＯＬＤがアクティブ“Ｈ”とされ、次のサイクルからアドレスバス４、データバス５、各種制御信号のホールドが開始される。コマンド受付通知信号ＩＰＲＥＢＵＳＹはホールド信号ＨＯＬＤに先がけてアクティブ“Ｌ”に変化することにより、ブロック消去コマンドの受信終了時に確実にホールド信号ＨＯＬＤを“Ｈ”にすることができる。
【００９２】
このとき、ホールドされるアドレス、データバス値は、ＣＰＵ１がパイプライン処理をしているためにブロック消去の第二コマンドでないこともある。
【００９３】
コマンド書込信号ＩＷＥの立上りエッジでデータバス５上のデータ信号ＤＢ（１５：０）がフラッシュメモリモジュール２Ａ内のアドレス／データ／制御信号入力回路１５にてラッチされ、マイクロシーケンサ１１内でコマンドデコード処理がなされる。そして、マイクロシーケンサ１１は、第二コマンドのコマンド書込信号ＩＷＥの立上りエッジではコマンドの種類を識別し、フラッシュメモリのブロック消去処理フローを開始するとともに、レディステータス信号ＲＹＩＢＹはビジーを示す“Ｌ”を出力する。
【００９４】
フラッシュメモリモジュール２Ａは、コマンドを受理して処理を開始すると、リード時にステータスレジスタ値２０の出力がなされる「ステータスリードモード」に移行するので、コマンド処理中にＣＰＵ１はフラッシュＲＯＭデータ１９をリードすることは不可能であり、フラッシュメモリモジュール２Ａ上のプログラム命令のフェッチも不可能となる。
【００９５】
フラッシュメモリモジュール２Ａがモジュール内部のマイクロシーケンサ１１によるコマンド処理を完了したときにはレディ信号出力ＲＹＩＢＹは“Ｌ”から“Ｈ”に変化する。
【００９６】
フラッシュ制御回路３ＡはＲＹＩＢＹ信号が“Ｌ”から“Ｈ”に変化後、１バスサイクル以降にホールド信号ＨＯＬＤを“Ｈ”から“Ｌ”に変化させて無効にする。バスホールドを解除すると中断状態にあったプログラム実行処理が再開される。
【００９７】
このとき、フラッシュメモリモジュール２Ａにフラッシュメモリ制御回路３Ａからリードモード設定パルス信号ＲＤＭＯＤＥを“Ｈ”入力することにより、ビジー状態からレディ状態に復帰後、即座に「ステータスリードモード」にあったフラッシュメモリモジュール２Ａをメモリ内容リード可能な「メモリリードモード」に切換えることができる。
【００９８】
この動作により、実施の形態２は実施の形態１同様、アドレスバス４、データバス５、各種制御信号の固定はリリースされ、ＣＰＵ１は暴走することなく、処理を再開することが可能である。
【００９９】
また、ユーザプログラムにおいて、フラッシュ書換コマンドの第二コマンドの直後に分岐命令（ＪＭＰ命令）を配置しておけば、実施の形態１と同様、書換コマンド終了後ホールド解除されてユーザプログラムが再開されるとき、安全に処理再開可能である。
【０１００】
実施の形態２で用いたコマンド受付通知信号ＩＰＲＥＢＵＳＹは、自動消去コマンドの第一コマンドがフラッシュメモリモジュール２Ａに受け付けられたかを検知できる信号であり、コマンド入力エラーの判定にも使用可能である。ユーザプログラムにおいて、フラッシュ書換コマンドの第一コマンドの直後にコマンド受付通知信号ＩＰＲＥＢＵＳＹをチェックする命令（すなわちフラッシュメモリ制御回路３Ａの制御レジスタ等に格納されるコマンド受付通知信号ＩＰＲＥＢＵＳＹに基づきアサインされたビットをリードする命令）を入れ、ＣＰＵ１でチェックすれば第一コマンドがフラッシュメモリモジュール２Ａに受け付けられたかを判断でき、フラッシュメモリモジュール２Ａへのコマンド入力の確度が向上する。
【０１０１】
フラッシュメモリ制御回路３Ａは、コマンド書込信号ＩＷＥの立ち上がり直後のレディステータス信号ＲＹＩＢＹをラッチした信号であるＥＲＲＣＭＤ信号生成回路とＥＲＲＣＭＤ信号に対応するビットを有する制御レジスタを備える。
【０１０２】
この制御レジスタは、ＣＰＵ１からリード可能であり、フラッシュ書換コマンドの第２のコマンド発行後にこのＥＲＲＣＭＤビットをＣＰＵ１がリードし、“Ｈ”であればコマンドがエラーとなり、受け付けられなかったことを示す。
【０１０３】
さらに、自動消去コマンドの第二コマンドが入力された同一のバスサイクル内でレディステータス信号ＲＹＩＢＹをラッチして、第二コマンドが正常に受け付けられなかった場合に“Ｈ”となるエラーコマンド信号ＥＲＲＣＭＤを生成し、第二コマンド発行後にエラーコマンド信号ＥＲＲＣＭＤをＣＰＵ１から読み取れば、第二コマンド発行時のエラーの有無を容易に検出可能である。
【０１０４】
本機能は、ノイズ等によりフラッシュ書換コマンドの第一コマンド／第二コマンドの両者ともフラッシュメモリモジュール２に受け付けられなかった場合にも、第二コマンドのエラー検出が可能であるというメリットを有する。
【０１０５】
以上のようにこの実施の形態２によれば、実施の形態１と同様、ＣＰＵ１がフラッシュメモリモジュールに書換えコマンドを発行時、コマンド処理中にＣＰＵ１がフラッシュメモリ上の命令コードが読めなくなることによる暴走を回避することが可能であり、書換えプログラムがフラッシュＲＯＭ上に配置されたままでもそのプログラムを実行しながら他のブロックのフラッシュＲＯＭ書換えが可能であり、従来のようなフラッシュＲＯＭからＲＡＭへのプログラム転送を必要としないメリットがある。
【０１０６】
＜実施の形態３＞
図１１はこの発明の実施の形態３であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【０１０７】
同図に示すように、ＲＡＭ２６が追加されている。このＲＡＭ２６は、アドレスバス４上のアドレス信号ＡＤ（２０：０）、データバス５上のデータ信号ＤＢ（１５：０）とリード／ライト制御信号ＲＷＢ、命令実行信号ＥＢによってＣＰＵ１よりリード／ライト可能である。
【０１０８】
ＣＰＵ１は、実施の形態１及び実施の形態２と同様、命令キューを複数命令分備えており、パイプライン処理が可能である。なお、他の構成は図８で示した実施の形態２と同様である。
【０１０９】
図１２及び図１３は実施の形態３のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図である。なお、バスサイクルＴ１〜Ｔ５，Ｔｎ，Ｔｍ等の１バスサイクルは実施の形態１，実施の形態２と同様に動作クロックＣＬＫの２クロックサイクル分となっている。
【０１１０】
以下では、ＣＰＵ１がユーザプログラムにより、プログラムが配置されているブロックと異なるブロックのフラッシュメモリに対する書換コマンドを発行する場合の例として自動ブロック消去コマンドを発行する場合についての動作を説明する。
【０１１１】
ユーザプログラムにてフラッシュメモリ内容の書換が必要となったとき、次のような手順で実施する。
【０１１２】
まず、ＲＡＭ２６にはあらかじめフラッシュメモリモジュール２Ａのステータスレジスタ２０からデータバス５経由で読み込むレディビット（ビジーステータス信号）をポーリングするプログラムをフラッシュＲＯＭ２Ａより転送しておく。レディビットはフラッシュメモリモジュール２Ａがレディ状態の有／無を“Ｈ”／“Ｌ”で示すフラッシュメモリモジュール２Ａのステータス情報である。
【０１１３】
図１２及び図１３に示すように、ＣＰＵ１がユーザプログラムを実行することにより、ブロック消去コマンドを第一コマンド、第二コマンドの順に入力して、ブロック消去の自動実行を開始する。
【０１１４】
フラッシュ書換コマンドの直後に上記ポーリングプログラムの書かれたＲＡＭ２６のスタート番地へのＪＭＰ命令を配置することにより、フラッシュ書換コマンド第二コマンド実行後、ＣＰＵ１の命令キューにフェッチされていたＪＭＰ命令が実行され、ＲＡＭ２６の所定のスタート番地にジャンプする。
【０１１５】
フラッシュメモリモジュール２Ａにて書換コマンドが実行されているとき、フラッシュメモリモジュール２Ａは「ステータスリードモード」となっているので、ＲＡＭ２６上に書かれたポーリングプログラムによりＣＰＵ１からフラッシュ制御回路３を通じてフラッシュメモリモジュール２Ａにリード命令を発行することでＣＰＵ１は、ステータスレジスタ２０中のレディビットからフラッシュメモリモジュール２Ａの状態（レディ／ビジー）を検出することが可能であり、これによって書換コマンド実行中／終了を判定可能である。
【０１１６】
ＲＡＭ２６のポーリングプログラムによりフラッシュ書換コマンド完了を待機し、データバス５経由で読み出されたレディビットの“Ｌ”（ビジー状態）→“Ｈ”（レディ状態）変化を検出してコマンド完了を検出する。
【０１１７】
コマンド完了直後、すなわち、レディステータス信号ＲＹＩＢＹの“Ｌ”→“Ｈ”変化に同期して、フラッシュメモリ制御回路３Ａはリードモード信号ＲＤＭＯＤＥをアクティブ“Ｈ”で出力し、フラッシュメモリモジュール２Ａを「ステータスリードモード」から「メモリリードモード」に切り換え、書換コマンド完了後はフラッシュＲＯＭデータ１９のリードが可能な状態に移行する。
【０１１８】
一方、ＣＰＵ１は、フラッシュ書換コマンド完了後に、再びフラッシュメモリモジュール２Ａ上のプログラム番地にジャンプすれば（例えば、ＲＡＭ２６上のポーリングプログラムサブルーチンの直後に当該ジャンプ命令を記載する等により実現）フラッシュメモリモジュール２Ａ上のプログラムの実行再開が可能である。
【０１１９】
以上のように実施の形態３では、フラッシュモジュールのビジーステータスのポーリングプログラムを主とした小容量の領域のみＲＡＭ２６で使用することにより、フラッシュメモリモジュール２Ａの書換が可能となる。
【０１２０】
したがって、フラッシュメモリの書換え処理時に書換プログラム用あるいはレジスタ退避用スタックのＲＡＭ容量を削減でき、ＲＡＭ２６の容量を必要最小限に最適化できる。
【０１２１】
＜実施の形態４＞
図１４はこの発明の実施の形態４であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【０１２２】
同図に示すように、フラッシュメモリモジュール２Ｂはコマンド受付通知信号ＩＰＲＥＢＵＳＹ−０〜ＩＰＲＥＢＵＳＹ−ｎを出力する。これらコマンド受付通知信号ＩＰＲＥＢＵＳＹ−０〜ＩＰＲＥＢＵＳＹ−ｎはフラッシュメモリモジュール２Ｂへの書換コマンド種別毎（自動ブロック消去、自動書込などそれぞれのコマンド毎）に個別に割り当てられた信号である。
【０１２３】
一方、フラッシュメモリ制御回路３Ｂ内に制御レジスタ２３が設けられ、制御レジスタ２３はコマンド受付通知信号ＩＰＲＥＢＵＳＹ−０〜ＩＰＲＥＢＵＳＹ−ｎの値を内部ビットｂｉｔ−０〜ｂｉｔ−ｎとして格納可能であり、制御レジスタ２３はＣＰＵ１からリードアクセスが可能である。なお、他の構成は図８で示した実施の形態２と同様である。
【０１２４】
実施の形態４はこのような構成にすることにより、ＣＰＵ１が所定のプログラムの実行によりフラッシュメモリモジュール２Ｂへのコマンドを発行した際に、電気的なノイズ等によりマイクロコンピュータ内部でデータが変化してしまいフラッシュメモリモジュール２Ｂに別コマンドとして受け付けられるような場合であっても、ＣＰＵ１がフラッシュメモリモジュール２Ｂへの書換コマンドの第一コマンド発行後、第二コマンド発行より前に当該書換コマンドに対応するコマンド受付通知信号ＩＰＲＥＢＵＳＹ−ｉ（ｉ＝１〜ｎのいずれか）が有効になっているか否かを制御レジスタ２３のビットｂｉｔ−ｉの値をリードしてチェックすることにより、書換コマンドがフラッシュメモリモジュール２Ｂに正しく受け付けられたか否かを書換コマンド種別単位に判定することができる。
【０１２５】
このときホールド信号ＨＯＬＤの生成は、制御レジスタ２３のビットｂｉｔ−０〜ｂｉｔ−ｎの論理和信号で制御する。
【０１２６】
このように、実施の形態４によれば、ＣＰＵ１から発行されたフラッシュメモリ向けコマンドと実際にフラッシュメモリモジュール２Ｂに受け付けられたコマンドの種類が一致しているか否かを確認でき、コマンド発行の確度を向上させることが可能である。
【０１２７】
＜実施の形態５＞
図１５はこの発明の実施の形態５であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【０１２８】
実施の形態５は、フラッシュメモリ書換コマンド発行時のバスサイクル、特に第二コマンドのバスサイクルを延長し、１バスサイクル期間内にてコマンド書込信号ＩＷＥの立ち上がり後にウエイトサイクルを有するバスタイミングで動作する様に構成したことを特徴とする。
【０１２９】
図１６及び図１７は実施の形態５のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図である。これらの図では、全バスサイクルが動作クロックＣＬＫの３クロックサイクルで動作するように設定されている。
【０１３０】
実施の形態５では、フラッシュ書換コマンドの第二コマンド発行終了後、同一バスサイクル中にウェイトサイクルＷＴが設けられており、フラッシュメモリ制御回路３Ｃ内のホールド信号ＨＯＬＤの生成回路は、コマンド受付通知信号ＩＰＲＥＢＵＳＹがアクティブかつレディステータス信号ＲＹＩＢＹがビジーの条件でアクティブになるように設計される。このホールド信号ＨＯＬＤにより、次のバスサイクルＴ６からの停止を開始可能である。
【０１３１】
書換コマンド終了時、フラッシュメモリ制御回路３Ｃはレディステータス信号ＲＹＩＢＹが“Ｌ”→“Ｈ”に変化した時点から１バスサイクル以降にホールド信号ＨＯＬＤを“Ｈ”から“Ｌ”に変化させて無効にする。ホールド信号ＨＯＬＤを解除すると中断状態にあったプログラム実行処理が再開される。上記以外の構成及び動作は実施の形態２と同様である。
【０１３２】
このように、実施の形態５によれば、ホールド信号ＨＯＬＤの生成をコマンド受付通知信号ＩＰＲＥＢＵＳＹとレディステータス信号ＲＹＩＢＹのみで行うことができる。加えて、バスサイクルを他の実施の形態より動作クロックＣＬＫの１周期分多い３周期に設定することにより、フラッシュ書換コマンドの第二コマンド発行終了後、同一バスサイクル中にウェイトサイクルＷＴを設けることができ、確実にバスサイクルＴ６以降をホールド期間に設定することができる。
【図面の簡単な説明】
【０１３３】
【図１】この発明の実施の形態１であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【図２】図１のフラッシュメモリモジュールの基本構成を示すブロック図である。
【図３】フラッシュメモリモジュールにおけるメモリのアドレスマップの一例を示す説明図である。
【図４】フラッシュメモリモジュールにおけるユーザコマンドの一覧を表形式で示す説明図である。
【図５】コマンド発行の基本タイミングを示すタイミング図である。
【図６】実施の形態１のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その１）である。
【図７】実施の形態１のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その２）である。
【図８】この発明の実施の形態２であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【図９】実施の形態２のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その１）である。
【図１０】実施の形態２のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その２）である。
【図１１】この発明の実施の形態３であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【図１２】実施の形態３のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その１）である。
【図１３】実施の形態３のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その２）である。
【図１４】この発明の実施の形態４であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【図１５】この発明の実施の形態５であるフラッシュメモリ内蔵マイコンの基本的な構成を示すブロック図である。
【図１６】実施の形態５のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その１）である。
【図１７】実施の形態５のフラッシュメモリ内蔵マイコンによるブロック消去コマンド実行時における各信号の信号変化を示すタイミング図（その２）である。
【符号の説明】
【０１３４】
１  ＣＰＵ、２，２Ａ，２Ｂ  フラッシュメモリモジュール、３，３Ａ〜３Ｃ  フラッシュメモリ制御回路、４  アドレスバス、５  データバス、１１  マイクロシーケンサ、１２  チャージポンプ、１３  メモリデコーダ、１４  メモリブロック、１５  アドレス／データ／制御信号入力回路。
【図１】
2008077686.tif 000003
【図２】
2008077686.tif 000004
【図３】
2008077686.tif 000005
【図４】
2008077686.tif 000006
【図５】
2008077686.tif 000007
【図６】
2008077686.tif 000008
【図７】
2008077686.tif 000009
【図８】
2008077686.tif 000010
【図９】
2008077686.tif 000011
【図１０】
2008077686.tif 000012
【図１１】
2008077686.tif 000013
【図１２】
2008077686.tif 000014
【図１３】
2008077686.tif 000015
【図１４】
2008077686.tif 000016
【図１５】
2008077686.tif 000017
【図１６】
2008077686.tif 000018
【図１７】
2008077686.tif 000019