(57)【要約】【課題】不揮発性メモリの書き込み及び消去の制御は不揮発性コントロールユニットのサブＣＰＵのプログラム制御によって行うことによりリアルタイム性能を向上するとともに、メインＣＰＵによる不揮発性メモリに格納されたユーザープログラムの実行開始時間を短縮すること。【解決手段】マイクロコンピュータ１は、不揮発性メモリ４と、コントローラ５と、メインＣＰＵ２とを有する。不揮発性メモリ４の書き込み・消去を、コントローラ５のサブＣＰＵ（ＦＣＰＵ）１２の制御プログラムで実行する。書き込み・消去制御プログラムの不揮発性メモリ４からコンロールＲＡＭ１５への転送をメインＣＰＵ２の要求に応答するコントローラ１１、３０、ＦＣＰＵ１２のいずれかが実行するので、メインＣＰＵ２による不揮発性メモリ４のユーザープログラムの実行開始時間を短縮できる。【選択図】図１
2008059052.tif 000002
【特許請求の範囲】
【請求項１】
メインＣＰＵと、電気的に書き込み及び消去可能な不揮発性メモリモジュールとを具備して、
前記不揮発性メモリモジュールは、不揮発性メモリと、サブＣＰＵと、コントロールメモリとを含み、
前記不揮発性メモリの書き込み及び消去の制御は前記メインＣＰＵから発行されたコマンドに応答して前記サブＣＰＵが前記コントロールメモリに格納された書き込み・消去制御プログラムの命令を実行することにより行われるものであり、
前記メインＣＰＵからの要求に応答して前記不揮発性メモリに格納された前記書き込み・消去制御プログラムを前記コントロールメモリへ前記メインＣＰＵと異なるコントローラと前記サブＣＰＵとのいずれかが転送するものである半導体集積回路。
【請求項２】
システム起動時に前記メインＣＰＵからの要求に応答して前記不揮発性メモリに格納された前記書き込み・消去制御プログラムを前記コントロールメモリへ前記メインＣＰＵと異なる前記コントローラと前記サブＣＰＵとのいずれかが転送するものである請求項１記載の半導体集積回路。
【請求項３】
前記不揮発性メモリから前記コントロールメモリへ転送された前記書き込み・消去制御プログラムのデータの誤りを検出するように前記コントロールメモリに接続された誤り検出回路を前記不揮発性メモリモジュールが更に含むものであり、
前記コントロールメモリへ転送された前記書き込み・消去制御プログラムの前記データの誤りを前記誤り検出回路が検出すると、前記誤り検出回路は前記コントローラと前記サブＣＰＵとのいずれかへ前記不揮発性メモリから前記コントロールメモリへの前記書き込み・消去制御プログラムの再転送を要求するものである請求項２に記載の半導体集積回路。
【請求項４】
前記コントローラはデータ転送コントローラとダイレクトメモリアクセスコントローラとのいずれかである請求項３に記載の半導体集積回路。
【請求項５】
前記不揮発性メモリはフラッシュメモリである請求項１から請求項４のいずれかに記載の半導体集積回路。
【請求項６】
メインＣＰＵと、電気的に書き込み及び消去可能な不揮発性メモリモジュールとを具備して、
前記不揮発性メモリモジュールは、不揮発性メモリと、サブＣＰＵと、コントロールメモリとを含み、
前記不揮発性メモリの書き込み及び消去の制御は前記メインＣＰＵから発行されたコマンドに応答して前記サブＣＰＵが前記コントロールメモリに格納された書き込み・消去制御プログラムの命令を実行することにより行われるものであり、
前記メインＣＰＵからの要求に応答して前記不揮発性メモリに格納された前記書き込み・消去制御プログラムを前記コントロールメモリへ前記メインＣＰＵと異なるコントローラと前記サブＣＰＵとのいずれかが転送するものであるマイクロコンピュータ。
【請求項７】
システム起動時に前記メインＣＰＵからの要求に応答して前記不揮発性メモリに格納された前記書き込み・消去制御プログラムを前記コントロールメモリへ前記メインＣＰＵと異なる前記コントローラと前記サブＣＰＵとのいずれかが転送するものである請求項６に記載のマイクロコンピュータ。
【請求項８】
前記不揮発性メモリから前記コントロールメモリへ転送された前記書き込み・消去制御プログラムのデータの誤りを検出するように前記コントロールメモリに接続された誤り検出回路を前記不揮発性メモリモジュールが更に含むものであり、
前記コントロールメモリへ転送された前記書き込み・消去制御プログラムの前記データの誤りを前記誤り検出回路が検出すると、前記誤り検出回路は前記コントローラと前記サブＣＰＵとのいずれかへ前記不揮発性メモリから前記コントロールメモリへの前記書き込み・消去制御プログラムの再転送を要求するものである請求項７に記載のマイクロコンピュータ。
【請求項９】
前記コントローラはデータ転送コントローラとダイレクトメモリアクセスコントローラとのいずれかである請求項８に記載のマイクロコンピュータ。
【請求項１０】
前記不揮発性メモリはフラッシュメモリである請求項６から請求項９のいずれかに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性メモリを備えたマイクロコンピュータ更には半導体集積回路に関わり、特に、電気的に書き込み及び消去可能な不揮発性フラッシュメモリを内蔵したシングルチップマイクロコンピュータに利用して有効な技術に関するものである。
【背景技術】
【０００２】
特許文献１には、不揮発性フラッシュメモリを内蔵したシングルチップマイクロコンピュータについての記載がある。このシングルチップマイクロコンピュータは、中央処理ユニット（ＣＰＵ）に接続されたデータ格納用のランダムアクセスメモリ（ＲＡＭ）とともにフラッシュメモリを備える。フラッシュメモリは、ＣＰＵのプログラムの格納やデータの格納に利用される。フラッシュメモリによって、その内容を、随時書換え可能にし、使い勝手を向上することができる。特許文献１に記載されたマイクロコンピュータでは、オンチップのフラッシュメモリに対する書き込み・消去を内蔵ＣＰＵに制御させる動作モードと、外部のＰＲＯＭライタに制御させる動作モードとを選択可能になっている。内蔵ＣＰＵで制御する場合、内蔵ＣＰＵは書き込み・消去を制御する専用のプログラムを逐次実行ながら、消去電圧の印加と消去ベリファイの制御を繰り返すことにより消去を実行して、また、書き込み電圧の印加と書き込みベリファイの制御を繰り返すことにより書き込みを実行する。ＰＲＯＭライタで制御する動作モードが設定されると、マイクロコンピュータは外部から見かけ上フラッシュメモリ単体チップと同じように見える。この状態でＰＲＯＭライタが消去電圧の印加及び消去ベリファイの制御により消去を実行して、書き込み電圧の印加及び書き込みベリファイの制御により書き込みを実行する。
【０００３】
一方特許文献２に記載されたメモリ単体チップとしてのフラッシュメモリは、外部から供給される書き込みコマンドや消去コマンドに応答して書き込み及び消去の制御を内部で行う専用ハードウェアを有する。専用ハードウェアを備える場合、システム外部のホストＣＰＵはフラッシュメモリに書き込みや消去のコマンドを発行するだけで良く、ホストＣＰＵはフラッシュメモリの書き込み及び消去の動作制御に占有されない。
【０００４】
【特許文献１】特開平５−２６６２２０号公報
【特許文献２】特開平１０−９２９５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明者等は本発明に先立ってフラッシュメモリモジュールとメインＣＰＵとをチップ上に搭載したマイクロコンピュータの開発に従事した。フラッシュメモリモジュールは、フラッシュメモリとフラッシュ制御ユニットとを含み、フラッシュメモリモジュールのフラッシュメモリの書き込み及び消去の制御はフラッシュ制御ユニットのサブＣＰＵのプログラム制御によって行われる。
【０００６】
マイクロコンピュータのメインＣＰＵはフラッシュ制御ユニットのサブＣＰＵにフラッシュメモリの書き込み又は消去を行う所定のコマンドを発行すると、所定のコマンドに応答してサブＣＰＵは命令の逐次実行によりフラッシュメモリの書き込み又は消去を行う。その結果、フラッシュ制御ユニットのサブＣＰＵによるフラッシュメモリの書き込み又は消去の動作と並列に、メインＣＰＵはフラッシュメモリへのアクセス以外のその他のデータ処理の動作を実行することが可能となり、リアルタイム性能を向上することができる。
【０００７】
しかし、フラッシュ制御ユニットのサブＣＰＵによるフラッシュメモリの書き込み又は消去の動作を実行するためには、その前にメインＣＰＵはサブＣＰＵによるフラッシュメモリの書き込み又は消去のための書き込み・消去制御プログラムをフラッシュメモリからサブＣＰＵのコントロールＲＡＭへ転送する必要が有る。従って、このメインＣＰＵによる書き込み・消去制御プログラムのフラッシュメモリからサブＣＰＵのコントロールＲＡＭへ転送の間には、メインＣＰＵはフラッシュメモリに格納されたユーザープログラムを実行することができないと言う問題が明らかとされた。
【０００８】
さらに、メインＣＰＵによって書き込み・消去制御プログラムがフラッシュメモリからサブＣＰＵのコントロールＲＡＭへ転送された後に、サブＣＰＵのコントロールＲＡＭへ転送された書き込み・消去制御プログラムのデータがアルファ線等によるソフトエラーによって破壊された場合に、対応できないと言う問題も明らかとされた。
【０００９】
本発明は上記の如き本発明に先立った本発明者等の検討を基にしてなされたものであり、本発明の目的とするところは不揮発性メモリモジュールの不揮発性メモリの書き込み及び消去の制御は不揮発性コントロールユニットのサブＣＰＵのプログラム制御によって行うことによりリアルタイム性能を向上するとともに、メインＣＰＵによる不揮発性メモリに格納されたユーザープログラムの実行開始時間を短縮することを可能にするマイクロコンピュータ、更には半導体集積回路を提供することにある。
【００１０】
また、本発明のその他の目的は、書き込み・消去制御プログラムが不揮発性メモリからサブＣＰＵのコントロールＲＡＭへ転送された書き込み・消去制御プログラムのデータが破壊された場合にも、対応可能なマイクロコンピュータ、更には半導体集積回路を提供することにある。
【００１１】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１３】
本発明の１つの形態によるマイクロコンピュータ（１）は、メインＣＰＵ（２）と、電気的に書き込み及び消去可能な不揮発性メモリモジュール（４、５）とを具備する。
【００１４】
前記不揮発性メモリモジュール（４、５）は、不揮発性メモリ（４）と、サブＣＰＵ（１２）と、コントロールメモリ（ＣＲＡＭ１５）とを含む。
【００１５】
前記不揮発性メモリ（４）の書き込み及び消去の制御は前記メインＣＰＵ（２）から発行されたコマンドに応答して前記サブＣＰＵ（１２）が前記コントロールメモリ（ＣＲＡＭ１５）に格納された書き込み・消去制御プログラムの命令を実行することにより行われるものである。
【００１６】
前記メインＣＰＵ（２）からの要求に応答して前記不揮発性メモリ（４）に格納された前記書き込み・消去制御プログラムを前記コントロールメモリ（ＣＲＡＭ１５）へ前記メインＣＰＵ（２）と異なるコントローラ（ＤＴＣ３０、ＤＭＡＣ１１）と前記サブＣＰＵ（１２）とのいずれかが転送するものである（図１、図７参照）。
【００１７】
本発明の前記１つの形態による手段によれば、前記メインＣＰＵ（２）が前記不揮発性メモリ（４）に格納された前記書き込み・消去制御プログラムを前記コントロールメモリ（ＣＲＡＭ１５）へ転送することを要求した後は、前記コントローラ（ＤＴＣ３０、ＤＭＡＣ１１）と前記サブＣＰＵ（１２）とのいずれかが転送を実行するので、前記メインＣＰＵ（２）は前記不揮発性メモリ（４）に格納されたユーザープログラムの実行を早期に開始することができる。
【００１８】
本発明の１つの好適な形態によるマイクロコンピュータ（１）では、システム起動時に前記メインＣＰＵ（２）からの要求に応答して前記不揮発性メモリ（４）に格納された前記書き込み・消去制御プログラムを前記コントロールメモリ（ＣＲＡＭ１５）へ前記メインＣＰＵ（２）と異なる前記コントローラ（ＤＴＣ３０、ＤＭＡＣ１１）と前記サブＣＰＵ（１２）とのいずれかが転送するものである（図１、図７参照）。
【００１９】
本発明の１つのより好適な形態によるマイクロコンピュータ（１）は、前記不揮発性メモリ（４）から前記コントロールメモリ（ＣＲＡＭ１５）へ転送された前記書き込み・消去制御プログラムのデータの誤りを検出するように前記コントロールメモリ（ＣＲＡＭ１５）に接続された誤り検出回路（ＥＣＣ３３）を前記不揮発性メモリモジュール（４、５）が更に含むものである。
【００２０】
前記コントロールメモリ（ＣＲＡＭ１５）へ転送された前記書き込み・消去制御プログラムの前記データの誤りを前記誤り検出回路（ＥＣＣ３３）が検出すると、前記誤り検出回路（ＥＣＣ３３）は前記コントローラ（ＤＴＣ３０、ＤＭＡＣ１１）と前記サブＣＰＵ（１２）とのいずれかへ前記不揮発性メモリ（４）から前記コントロールメモリ（ＣＲＡＭ１５）への前記書き込み・消去制御プログラムの再転送を要求するものである。
【００２１】
本発明の前記１つの好適な形態による手段によれば、サブＣＰＵのコントロールＲＡＭへ転送された書き込み・消去制御プログラムのデータが破壊された場合にも、対応可能となる。
【００２２】
本発明の１つのより好適な形態によるマイクロコンピュータ（１）では、前記コントローラはデータ転送コントローラ（ＤＴＣ３０）とダイレクトメモリアクセスコントローラ（ＤＭＡＣ１１）とのいずれかである。
【００２３】
本発明の１つの具体的な形態によるマイクロコンピュータ（１）では、前記不揮発性メモリはフラッシュメモリ（４）である。
【発明の効果】
【００２４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２５】
すなわち、本発明によれば、不揮発性メモリモジュールの不揮発性メモリの書き込み及び消去の制御は不揮発性コントロールユニットのサブＣＰＵのプログラム制御によって行うことによりリアルタイム性能を向上するとともに、メインＣＰＵによる不揮発性メモリに格納されたユーザープログラムの実行開始時間を短縮することができる。
【００２６】
更に、本発明によれば、書き込み・消去制御プログラムが不揮発性メモリからサブＣＰＵのコントロールＲＡＭへ転送された書き込み・消去制御プログラムのデータが破壊された場合にも、対応することができる。
【発明を実施するための最良の形態】
【００２７】
（第１の実施形態）
≪マイクロコンピュータの全体構成≫
図１は、本発明の第１の実施形態によるマイクロコンピュータを示すブロック図である。
【００２８】
同図に示されたマイクロコンピュータ１を構成する回路素子は、ＣＭＯＳフラッシュメモリ製造プロセスによって、単結晶シリコンの１個の半導体基板上に形成される。
【００２９】
マイクロコンピュータ１は、メインＣＰＵ２、ランダムアクセスメモリ（ＲＡＭ）３、不揮発性メモリとしてのフラッシュメモリ（ＦＬＡＳＨ）４、書き込み・消去コントローラとしてのフラッシュ制御ユニット（ＦＣＵ）５、バスコントローラ（ＢＳＣ）６、周辺回路（ＰＲＨＲＬ）７、Ｉ／Ｏポート（ＩＯＰ）８、システムコントローラ（ＳＹＳＣ）９、データ転送コントローラ（ＤＴＣ）３０、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１１を有する。周辺回路７には、タイマ、パルス出力回路、シリアルコミュニケーションインタフェース、Ａ／Ｄ変換器などが含まれる。図示はしないが、割り込みコントローラやクロック発振器などの回路モジュールも搭載される。メインＣＰＵ２は、命令をフェッチしてデコードする命令制御部と、命令制御部による命令デコード結果に基づいて演算等を行って命令を実行する命令実行部とを有する。ランダムアクセスメモリ３は、メインＣＰＵ２のワーク領域とされる。
【００３０】
フラッシュメモリ４は、メインＣＰＵ２のプログラムの格納と不揮発記憶すべきデータの格納とに利用される。フラッシュメモリ４は、電気的に消去及び書き込み可能な不揮発性メモリトランジスタを含む複数の不揮発性メモリセルを有する。不揮発性メモリトランジスタには、例えば、ソースとドレインの間のチャネル形成領域の上にフローティングゲートのような電荷蓄積領域とコントロールゲートを積み重ねたスタックドゲート構造を採用可能である。あるいはチャネル形成領域の上に選択ゲートとメモリゲートを分離して配置して、メモリゲートとチャンネル形成領域との間にシリコンナイトライドのような電荷蓄積領域を形成したスプリット構造等を採用することができる。
【００３１】
不揮発性メモリセルのトランジスタは電荷蓄積領域に電子が注入される書き込みによってしきい値電圧が高くされ、書き込みによって蓄積された電子の放出又はホールの注入によってしきい値電圧が低くされる。例えばメモリゲートと基板の間に高電界を形成して、ソース・ドレイン間電流によって発生されるホットエレクトロンを電荷蓄積領域に注入することによって書き込みが行われる。消去の場合には、ホットホールを発生させてこれを電荷蓄積領域に注入するか、高電界によるトンネル効果により電荷蓄積領域から電子を放出すればよい。高電界を形成するのに、書き込みでは書き込みパルス電圧を用い、消去では消去パルス電圧を用いる。不揮発性メモリセルのトランジスタは、そのしきい値電圧の相違として情報を記憶する。１個のメモリセルによる情報記憶は１ビットを示す低しきい値電圧と高しきい値電圧との２値、或いは２ビットを示す低しきい値電圧と低中間しきい値電圧と高中間しきい値電圧と高しきい値電圧との４値等の多値のいずれであっても良い。
【００３２】
システムコントローラ９には、外部のモード端子ＭＤ０〜ＭＤ２及びリセット端子ＲＥＳＥＴ等が接続される。リセット端子ＲＥＳＥＴがローレベルにされると内部の初期化が開始され、リセット端子ＲＥＳＥＴがハイレベルにされてリセット指示が解除されると、メインＣＰＵ２は例えばプログラムの先頭アドレスの命令をフェッチして命令実行動作を開始する。リセットの指示が解除される時に、モード端子ＭＤ０〜ＭＤ２の状態に応じてマイクロコンピュータの動作モードが決定される。例えば、動作モードが、通常モード又はテストモードにされる。テストモードは、特に制限されないが、通常モードに比べ、デバイステスト、デバイス評価、更にはシステム評価の便に供する機能を利用可能な動作モードである。
【００３３】
マイクロコンピュータ１は、内部バスＩＢＵＳ、周辺バスＰＢＵＳ、及び外部バスＥＸＢＵＳを有する。それぞれのバスは、アドレスバス、データバス以外に、バス権要求信号、バスアクノレッジ信号、バスコマンド（またはリード信号、ライト信号、バスサイズ信号）、レディ信号（またはウェイト信号）等の信号線を含む。
【００３４】
内部バスＩＢＵＳは、メインＣＰＵ２、データ転送コントローラ（ＤＴＣ）３０、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１１のようなその他の内部バスマスタに直接接続されるバスである。内部バスＩＢＵＳにはＲＡＭ３、バスコントローラ６、フラッシュメモリ４、Ｉ／Ｏポート８等、少数の回路モジュールが接続される。内部バスＩＢＵＳに接続されたＲＡＭ３及びフラッシュメモリ４に対する読み出しアクセスは、１ステートで可能にされる。内部バスＩＢＵＳの接続先が少数であるため、バス幅は任意にでき、例えばそのデータバスは３２ビット幅とされる。
【００３５】
周辺バスＰＢＵＳには、周辺回路７、システムコントローラ９、フラッシュ制御ユニット５、Ｉ／Ｏポート８、データ転送コントローラ（ＤＴＣ）３０、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１１などが接続される。メインＣＰＵ２等が周辺バスＰＢＵＳを使用しない時に、周辺バスＰＢＵＳはバスコントローラ６を介して内部バスＩＢＵＳと分離される。これにより、メインＣＰＵ２のプログラムリードなどで、主として使用する内部バスＩＢＵＳの負荷を軽減して、アクセスを高速化することができる。更に、メインＣＰＵ２等が周辺バスＰＢＵＳを使用しない時に、周辺バスの状態を保持することが可能になるから、これによって低消費電力化することができる。メインＣＰＵ２が周辺バスＰＢＵＳに接続される回路モジュール内の内部Ｉ／Ｏレジスタをアクセスする場合は、内部バスＩＢＵＳ及びバスコントローラ６を経由して行う。内部Ｉ／Ｏレジスタのアクセスは、２ステートで行われる。内部バスＩＢＵＳに比べて周辺バスＰＢＵＳの接続先は多数であるため、周辺バスＰＢＵＳのバス幅を広げると物理的な規模が増加するため、周辺バスＰＢＵＳは例えば１６ビットのデータバスを有する。
【００３６】
内部バスＩＢＵＳと外部バスＥＸＢＵＳは、外部バスバッファ回路（ＢＵＦ）１０によってインタフェースされる。外部バスバッファ回路１０は、入出力ポート８に含まれる。周辺バスＰＢＵＳ及び外部バスＥＸＢＵＳに対するバス制御は、バスコントローラ６が行う。
【００３７】
通常モードにおけるフラッシュメモリ４の読み出し動作は、内部バスＩＢＵＳを経由して行う。しかし、書き込み及び消去を指示するためのコマンド及びデータの供給は、周辺バスＰＢＵＳを経由してフラッシュ制御ユニット５に対して行う。書き込み及び消去動作は、それ自体に時間がかかり、また、書き込み及び消去動作の頻度はそれほど高くなく、少なくとも内部バスＩＢＵＳを経由した読み出し動作より大幅に少ないことを考慮したものである。また、フラッシュ制御ユニット５を内部バスＩＢＵＳに直接接続すると、内部バスＩＢＵＳの負荷が大幅に増えることになるからである。
【００３８】
フラッシュ制御ユニット５は、サブＣＰＵ（ＦＣＰＵ）１２を含んでいる。通常モードにおいてＦＣＰＵ１２は、メインＣＰＵ２から発行されたコマンドに応答して逐次命令を実行してフラッシュメモリ４に対する書き込み及び消去制御を行うことが可能にされている。その結果、メインＣＰＵ２は、コマンド発行後にフラッシュメモリ４の書き込み及び消去制御から開放される。しかし、テストモードではメインＣＰＵ２が、任意の種々の逐次命令を実行することによりフラッシュメモリ４に対する書き込み及び消去動作の試作評価やテスト評価を自在に行うことが可能にされる。その結果、フラッシュメモリ４に格納されたＦＣＰＵ１２の動作プログラムに制限されることなく、メインＣＰＵ２の高い自由度のプログラムに従ってテストや検証のための書き込み及び消去制御を自由に行うことができる。
【００３９】
≪フラッシュ制御ユニット≫
図２は、図１のマイクロプロセッサ１の内部のフラッシュ制御ユニット（ＦＣＵ）５の内部構成を示す図である。
【００４０】
同図に示すようにＦＣＵ５は、サブＣＰＵ（ＦＣＰＵ）１２以外にも、フラッシュＣＰＵインタフェースコントローラ（ＦＩＭＣ）１３、フラッシュバス制御回路（ＦＢＳＣ）１４、コントロールＲＡＭ（ＣＲＡＭ）１５、フラッシュ書き込み・消去制御回路（ＦＬＣ）１６、誤り訂正回路（ＥＣＣ）３３、フラッシュバスＦＢＵＳを有する。ＦＣＵ５はメインＣＰＵ２のアドレス空間に配置され、メインＣＰＵ２は周辺バスＰＢＵＳを経由してＦＣＵ５の内部をアクセスすることができる。すなわち、フラッシュＣＰＵインタフェースコントローラ１３（ＦＩＭＣ）は周辺バスＰＢＵＳに接続され、メインＣＰＵ２からのアクセスに対してＦＣＵ５の全体的な制御を行う。ＦＩＭＣ１３はＦＣＰＵ１２に割り込み要求信号ＩＲＱと対応するベクタとを発行して、ＦＣＰＵ１２を起動する。また、ＦＩＭＣ１３はフラッシュバス制御回路（ＦＢＳＣ）１４にバスコマンドを発行することによって、コントロールＲＡＭ１５及びＦＬＣ１６に対するフラッシュバスＦＢＵＳ経由のバス制御を行う。コントロールＲＡＭ１５はＦＣＰＵ１２のフラッシュ書き込み・消去の動作プログラムの格納領域、或いはＦＣＰＵ１２のワーク領域等に用いられる。ＦＬＣ１６は、フラッシュメモリ４に対する動作制御レジスタ（ＦＣＮＴＲ）１８、消去ブロック指定レジスタ（ＥＢＬＫＲ）１７及びトリミングレジスタを有する。ＦＬＣ１６は、動作制御レジスタ１８に設定される制御ビットの状態に従って、フラッシュメモリ４の書き込み・消去の動作を制御する。動作制御レジスタ１８の制御ビットは、例えば書き込みイネーブルビットＷＥ、書き込み指示ビットＰ、及び消去指示ビットＥ等とされている。書き込みイネーブルビットＷＥは、論理値“１”によって書き込み・消去動作の指示の有効性を示す。書き込み指示ビットＰは、論理値“１”によって書き込みパルス電圧の印加を指示する。消去指示ビットＥは、論理値“１”によって消去パルス電圧の印加を指示する。ＦＬＣ１６のトリミングレジスタには、フラッシュメモリ４の書き込みパルス電圧、消去パルス電圧、ドレイン電圧、ソース電圧、ベリファイ電圧の各々の電圧レベルの微調整や、書き込みパルス電圧及び消去パルス電圧のパルス幅の微調整を行うためのトリミングデータが設定される。
【００４１】
トリミングデータやＦＣＰＵ１２の書き込み・消去の動作プログラムの初期値はフラッシュメモリ４が保有しており、トリミングデータと書き込み・消去の動作プログラムとはパワーオンリセットに応答してメインＣＰＵ２以外のＤＴＣ３０、ＤＭＡＣ１１のいずれかがトリミングデータレジスタ及びコントロールＲＡＭ１５とにそれぞれ内部転送する。トリミングデータレジスタ及びコントロールＲＡＭ１５のプログラム領域は通常モードではユーザープログラムを実行しているメインＣＰＵ２からの書き込みアクセス不可能にされ、保護されている。しかし、テストモードでは、これらはメインＣＰＵ２により自由にアクセス可能にされる。消去ブロック指定レジスタ１７には、消去ブロック又は消去アドレスが設定される。書き込みデータ及び書き込みアドレスは、フラッシュメモリ内部のデータレジスタ及びアドレスレジスタにセットされる。
【００４２】
割り込みによるＦＣＰＵ１２の起動について、説明する。ＦＩＭＣ１３は、メインＣＰＵ２から周辺バスＰＢＵＳを経由してアクセス可能にされる内部Ｉ／Ｏレジスタ（ＩＩＯＲ）２０、コントロールレジスタ（ＣＮＴＲ）２１、ステータスレジスタ（ＳＴＳＲ）２２、割り込み制御レジスタ（ＩＮＴＲ）３１、ＣＲＡＭ制御レジスタ（ＣＲＣＮＴＲ）３２を有する。コントロールレジスタ２１は書き込み消去フラグＦＥＮＴＲＹ等の設定領域とされ、メインＣＰＵ２によって書き込み可能にされ、ＦＣＰＵ１２によって読み出し可能にされている。ステータスレジスタ２２はビジーフラグＢＵＳＹやコマンドエンドフラグＣＭＤＥ等の記憶領域とされ、ＦＣＰＵ１２によって書き込み可能にされ、メインＣＰＵ２によって読み出し可能にされている。また、ＦＣＰＵ１２は経路２３からステータスレジスタ２２に対する書き込みを行う。割り込み制御レジスタ３１の割り込みイネーブルビットＩＮＴＥＮがセットされている状態でステータスレジスタ２２のエラービットＥＲＲが誤り訂正回路３３によりセットされると、誤り割り込み信号ＥＲＲＩＮＴがアサートされて、図示されない割り込みコンとローダを介してメインＣＰＵ２に割り込み要求が通知される。誤り訂正回路３３はコントロールＲＡＭ１５に格納されたＦＣＰＵ１２の書き込み・消去制御プログラムのソフトエラーによるデータ誤りを検出すると、ステータスレジスタ２２にエラービットＥＲＲをセットして、フラッシュメモリ４からＣＲＡＭ１５へのＦＣＰＵ１２の書き込み・消去制御プログラムの再転送を要求する。再転送されたＦＣＰＵ１２の書き込み・消去制御プログラムをＣＲＡＭ１５へ書き込むために、ＣＲＡＭ制御レジスタ３２のＣＲＡＭアクセスイネーブルビットＣＲＥＮがセットされる。ＣＲＡＭアクセスイネーブルビットＣＲＥＮはＣＲＡＭアクセス通知信号ＣＲＡＭＥＮに反映されて、ＣＲＡＭアクセス通知信号ＣＲＡＭＥＮはバスコントローラ６へ供給される。バスコントローラ６は内部バスＩＢＵＳ上のフラッシュメモリ４から読み出されたＦＣＰＵ１２の書き込み・消去制御プログラムを周辺バスＰＢＵＳに転送するので、メインＣＰＵ２以外のＤＴＣ３０、ＤＭＡＣ１１のいずれかがＢＳＣ６を経由してＣＲＡＭ１５へのＦＣＰＵ１２の書き込み・消去制御プログラムの再転送を実行する。
【００４３】
通常モードにおいて書き込み消去フラグＦＥＮＴＲＹ＝“１”の時に、メインＣＰＵ２からフラッシュメモリ４の不揮発性メモリアレイにマッピングされたアドレスにデータを書き込むアクセスをＦＩＭＣ１３が検出すると、その書き込みアクセスをＦＩＭＣ１３はフラッシュ書き込みコマンドとして認識する。また、メインＣＰＵ２から消去ブロック指定レジスタ１７に消去アドレス若しくは消去ブロック指定情報を書込むアクセスをＦＩＭＣ１３が検出すると、その書き込みアクセスをＦＩＭＣ１３はフラッシュ消去コマンドとして認識する。ＦＩＭＣ１３はそのコマンド解釈に従ってＦＣＰＵ１２への割り込み要求信号ＩＲＱを活性化して、コマンドに応ずるベクタを発行する。これによってＦＣＰＵ１２は、ベクタによって指定される書き込み制御プログラム又は消去制御プログラムをコントロールＲＡＭ１５からフェッチして実行する。フラッシュ書き込みコマンドに応答する場合、ＦＣＰＵ１２はその書き込み制御プログラムに従ってフラッシュ書き込みコマンドと認識した書き込みアクセスに係るアドレスとデータを内部ＩＯレジスタ２０からコントロールＲＡＭ１５に取り込み、フラッシュメモリに転送して、ＦＬＣ１６内部のＦＣＮＴＲ１８のＷＥ、Ｐビット等を順次設定しながら、フラッシュメモリ４に対する書き込みを行う。フラッシュ消去コマンドに応答する場合、ＦＣＰＵ１２はその消去制御プログラムに従ってフラッシュ消去コマンドと認識した消去ブロック指定データを内部ＩＯレジスタ２０からコントロールＲＡＭ１５に取り込み、フラッシュメモリに転送して、ＦＬＣ１６内部のＦＣＮＴＲ１８のＷＥ、Ｅビット等を順次設定しながら、フラッシュメモリ４に対する消去を行う。
【００４４】
ＦＣＵ５の書き込み消去フラグＦＥＮＴＲＹは、ＦＩＭＣ１３からバスコントローラ（ＢＳＣ）６に供給される。通常モードにおいて書き込み消去フラグＦＥＮＴＲＹ＝“０”の時に、フラッシュメモリ４のマッピングアドレス又は消去ブロック指定レジスタ１７に対するメインＣＰＵ２からの書き込みアクセスをＢＳＣ６が検出すると、例えばアドレスエラーを発生させてフラッシュメモリ４への書き込み動作を無効とする。従って、通常モードにおいて書き込み消去フラグＦＥＮＴＲＹ＝“０”の時には、フラッシュメモリ４には内部バスＩＢＵＳ経由のリードアクセスだけが可能にされる。尚、テストモードでは書き込み消去フラグＦＥＮＴＲＹはＢＳＣ６によるフラッシュメモリ４に対するアクセス経路の制御だけに用いられる。すなわち、フラッシュメモリ４に対しては、テストモードにおいてＦＥＮＴＲＹ＝１の時にはＢＳＣ６及び周辺バスＰＢＵＳ経由のアクセスだけが許容され、ＦＥＮＴＲＹ＝“０”の時には内部バスＩＢＵＳ経由のリードアクセスだけが許容される。
【００４５】
フラッシュバス制御回路（ＦＢＳＣ）１４を経由するコントロールＲＡＭ１５及びＦＬＣ１６のアクセス制御について、説明する。通常モード及びテストモードのいずれにおいても、フラッシュ制御ユニット（ＦＣＵ）５のマッピングアドレス（消去ブロック指定レジスタ１７のマッピングアドレスを除く）に対するメインＣＰＵ２またはＤＴＣ３０、ＤＭＡＣ１１のいずれかからのアクセスに対して、ＣＰＵインタフェースコントローラ（ＦＩＭＣ）１３はアクセスコマンドをＦＢＳＣ１４に発行する。発行されたアクセスコマンドに従ってＦＢＳＣ１４は、フラッシュバスＦＢＵＳの制御を行ってコントロールＲＡＭ１５及びＦＬＣ１６へのリードアクセス及びライトアクセスを行うことができる。特に制限されないが、通常モードではＦＬＣ１６のトリミングレジスタに対する自由なアクセスは許容されていない。しかし、テストモードでは、メインＣＰＵ２からフラッシュメモリ４のマッピングアドレスにデータを書き込むアクセスがあっても、また、メインＣＰＵ２から消去ブロック指定レジスタ１７に対してデータを書き込むアクセスがあっても、ＣＰＵインタフェースコントローラ１３はＦＣＰＵ１２を起動せず、対応するアクセスコマンドをＦＢＳＣ１４に発行する。それに従ってＦＢＳＣ１４がフラッシュバスＦＢＵＳの制御を行って、ＣＰＵインタフェースコントローラ１３の内部ＩＯレジスタ２０に保持された書き込みデータ及び書き込みアドレスをフラッシュメモリ４に供給して、又は消去ブロックアドレスを消去ブロック指定レジスタ１７に供給する。この後、メインＣＰＵ２はＦＬＣ１６のレジスタ１８に対する書き込みアクセスを発行することによって消去ビットＥやプログラムビットＰを直接操作して、消去動作又は書き込み動作を行うことができる。
【００４６】
テストモードでは、メインＣＰＵ２はＦＬＣ１６のトリミングレジスタを直接操作することができるから、トリミングデータの設定次第で、例えば、フラッシュメモリ４における書き込みパルス電圧、消去パルス電圧、パルス印加時間、ドレイン電圧、及びソース電圧等を微調整することができる。そのような電圧や時間を微調整することによって、マイクロコンピュータ１の製造プロセス、不揮発性メモリの素子構成、あるいはマイクロコンピュータ１の個体差などに即して、最適な書き込み、最適な消去の制御が可能にされる。これらの電圧や時間は量産時には固定にされるのがよいが、少なくとも試作評価時には可変にする必要がある。
【００４７】
更にテストモードでは、メインＣＰＵ２はコントロールＲＡＭ１５に格納されたＦＣＰＵ１２の書き込み・消去制御プログラムを書き換えることができる。試作評価時には、テストモードで、メインＣＰＵ２による制御プログラム実行で書き込み・消去を実行して、基本機能や必要なパラメータなどの確認を行うことができる。試作評価時は、機器制御を行うわけではないので、リアルタイム性の要求される割り込み処理などを考慮する必要がない。
【００４８】
図２に示したＦＣＵ５のエラー訂正回路（ＥＣＣ）３３は、コントロールＲＡＭ（ＣＲＡＭ）１５の格納データが破壊されたことを検出するための回路である。フラッシュバスＦＢＵＳを経由してＣＲＡＭ１５に対する書き込みが実行される場合には、ＥＣＣ３３がＦＢＵＳから出力されたデータに対応したエラー訂正符号を生成して、書き込みデータとともにエラー訂正符号をＣＲＡＭ１５に書き込む。フラッシュバスＦＢＵＳを経由してＣＲＡＭ１５に対する読み出しが実行される場合には、ＥＣＣ３３がＣＲＡＭ１５から読み出されたデータとエラー訂正符号に基づいて読み出しデータを生成して、フラッシュバスＦＢＵＳに出力する。読み出しデータ生成時に、ＥＣＣ３３がＣＲＡＭ１５から読み出されたデータまたはエラー訂正符号に誤りを検出すると、ＥＣＣエラー信号ＥＣＣＥＲＲがアサートされる。ＦＩＭＣ１３のステータスレジスタ（ＳＴＳＲ）２２のエラービットＥＲＲは、ＥＣＣエラー信号ＥＣＣＥＲＲがアサートされるとセットされるフラグである。割り込み制御レジスタ（ＩＮＴＲ）３１の割り込みイネーブルビットＩＮＴＥＮがセットされた状態で、ＳＴＳＲ２２のエラービットＥＲＲがセットされると、エラー割り込み信号ＥＲＲＩＮＴがアサートされて、メインＣＰＵ２に割り込み要求が通知される。すると、メインＣＰＵ２はＤＴＣ３０、ＤＭＡＣ１１のいずれかを用いて、フラッシュメモリ４に格納されたＦＣＵ５のＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムのデータをＦＣＵ５のＣＲＡＭ１５へ再転送するものである。
【００４９】
尚、ＣＲＡＭ制御レジスタ（ＣＲＣＮＴＲ）３２のＣＲＡＭアクセスイネーブルビットＣＲＥＮは、ＣＲＡＭ１５へのアクセス許可・禁止を制御するためのビットである。ＣＲＡＭアクセスイネーブルビットＣＲＥＮが“０”の場合にはＣＲＡＭ１５へのアクセスは禁止され、“１”の場合にはＣＲＡＭ１５へのアクセスが許可される。ＣＲＡＭアクセス通知信号ＣＲＡＭＥＮはＣＲＡＭアクセスイネーブルビットＣＲＥＮの値をＦＣＵ5からＢＳＣ６に通知するための信号である。ＢＳＣ６は、ＣＲＡＭアクセス通知信号ＣＲＡＭＥＮがアサートされている場合のみ、ＣＲＡＭ１５に対する内部バスＩＢＵＳのアクセスを周辺バスＰＢＵＳに伝播する。しかし、ＣＲＡＭアクセス通知信号ＣＲＡＭＥＮがネゲートされた状態で発行されたＣＲＡＭ１５に対するアクセスは、無効化される。
【００５０】
≪データ転送コントローラ≫
図３は、図１に示したマイクロプロセッサ１の内部のデータ転送コントローラ（ＤＴＣ）３０の内部構成を示す図である。ＤＴＣ３０は図１のマイクロプロセッサ１において、フラッシュメモリ４に格納されたＦＣＵ５のＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムのＦＣＵ５のＣＲＡＭ１５へのデータ転送をメインＣＰＵ２からの指示により実行するものである。
【００５１】
同図に示すように、ＤＴＣ３０のＤＴＣ制御レジスタ部（ＤＴＣＲ）４３は、ＤＴＣ３０の転送内容を設定するための制御レジスタを有している。メインＣＰＵ２が周辺バスＰＢＵＳを介してＤＴＣＲ４３のＤＴＣ転送制御レジスタ（ＴＲＣＲ）４０のスタートビットＳＴＡＲＴをセットすると、内部バスインターフェース回路（ＩＢＩＦ）４４はフラッシュメモリ4からサブＣＰＵ（ＦＣＰＵ）１２が実行する書き込み・消去制御プログラムを読み出すための内部バスＩＢＵＳのアクセスを実行する。その後、読み出した書き込み・消去制御プログラムのデータをコントロールＲＡＭ（ＣＲＡＭ）１５に書き込むための内部バスＩＢＵＳのアクセスを、ＩＢＩＦ４４が実行する。内部バスＩＢＵＳのアクセス要求の調停は、バス制御回路（ＢＳＣ）６が実行する。ＩＢＩＦ４４は内部バスＩＢＵＳのアクセスを実行する前に内部バス要求信号ＩＢＲＥＱをアサートして、ＢＳＣ６に内部バスＩＢＵＳのアクセスの実行を要求する。ＢＳＣ６は複数の内部バスＩＢＵＳのアクセス要求を調停して、ＤＴＣ３０のアクセス要求を許可する場合には、内部バスアクノリッジ信号ＩＢＡＣＫをアサートする。内部バスアクノリッジ信号ＩＢＡＣＫがアサートされると、ＤＴＣ３０は内部バスＩＢＵＳのアクセスを実行する。ＤＴＣ３０による内部バスＩＢＵＳのアクセスが終了すると、ＩＢＩＦ４４は内部バスアクセス終了信号ＩＢＥＮＤをアサートして内部バスＩＢＵＳを解放する。ＦＣＰＵ１２のための書き込み・消去制御プログラムのＣＲＡＭ１５への転送が終了すると、ＩＢＩＦ４４はＤＴＣステータスレジスタ（ＤＳＴＳＲ）４１のデータ転送終了ビットＤＥＮＤをセットする。ＤＴＣ割り込み制御レジスタ（ＤＴＩＮＴＲ）４２のＤＴＣ割り込みイネーブルビットＤＩＮＴＥＮがセットされている状態で、ＤＴＣステータスレジスタ（ＤＳＴＳＲ）４１のデータ転送終了ビットＤＥＮＤがセットされると、ＤＴＣ割り込み信号ＤＴＩＮＴがアサートされて、メインＣＰＵ２にＤＴＣ３０からの割り込み要求が通知される。
【００５２】
≪ダイレクトメモリアクセスコントローラ≫
図４は、図１に示したマイクロプロセッサ１の内部のダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１１の内部構成を示す図である。ＤＭＡＣ１１は図１のマイクロプロセッサ１において、フラッシュメモリ４に格納されたＦＣＵ５のＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムのＦＣＵ５のＣＲＡＭ１５へのデータ転送をメインＣＰＵ２からの指示により実行するものである。またＤＭＡＣ１１は、メインＣＰＵ２の要求に応答して例えばＲＡＭ３から内部バスＩＢＵＳを経由してデータを受け取り、ＤＭＡＣコア１１１内部のデータバッファとバス制御回路（ＢＳＣ）６と周辺バスＰＢＵＳとを経由して外部回路７へデータを転送する。
【００５３】
同図に示すように、ＤＭＡＣ１１は、ＤＭＡＣコア１１１と、ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２とにより構成されている。ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２は内部バスＩＢＵＳをアクセスするとともに、複数のＤＭＡ要求を調停してＤＭＡＣコア１１１への要求信号を生成する。ＤＭＡＣコア１１１は、ＤＭＡ転送の制御を行うＤＭＡＣ制御回路１１１１と、ＤＭＡＣ制御回路１１１１が参照する種々のレジスタを含むワークレジスタ１１１２、ＤＭＡＣ制御レジスタ部（ＤＭＡＣＣＲ）１１３とにより構成されている。ワークレジスタ１１１２は、ＤＭＡ転送ビット数やデータサイズ等の設定モード情報を格納するモードレジスタ１１１２Ａ、ＤＭＡ転送するバイト数の設定情報を格納するバイトカウンタ１１１２Ｂ、ＤＭＡ転送先の開始アドレスを格納するディスティネーションアドレスレジスタ１１１２Ｃ、ＤＭＡ転送元の開始アドレスを格納するソースアドレスレジスタ１１１２Ｄ、内蔵メモリのデータのロード・ストアの制御を行うメモリロード・ストア制御レジスタ１１１２Ｅを含んでいる。ＤＭＡＣ制御レジスタ部（ＤＭＡＣＣＲ）１１３は、ＤＭＡＣ転送制御レジスタ１１３０と、ＤＭＡＣステータスレジスタ１１３１と、ＤＭＡＣ割り込み制御レジスタ１１３２とから構成されている。
【００５４】
ＤＭＡＣ１１のＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２からＢＳＣ６へ、ＤＭＡ転送の外部要求ＤＭＡ＿Ｒｅｑが供給される。ＢＳＣ６からＤＭＡＣ１１のＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２へＤＭＡアクノリッジ信号ＤＭＡ＿ＡＣＫが供給され、ＤＭＡＣ１１のＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２からＢＳＣ６へＤＭＡアクティブ信号ＤＭＡ＿ＡＣＴ、ＤＭＡ終了信号ＤＭＡ＿ＥＮＤ等が供給される。またＤＭＡＣ１１のＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２からＣＰＵ２へ、ＤＭＡ割り込み要求信号ＤＭＡ＿Ｉｎｔ＿Ｒｅｑ等が供給される。
【００５５】
同図に示すように、ＤＭＡＣ１１のＤＭＡＣ制御レジスタ部（ＤＭＡＣＣＲ）１１３は、ＤＭＡＣ１１の転送内容を設定するための制御レジスタを有している。メインＣＰＵ２が周辺バスＰＢＵＳを介してＤＭＡＣ制御レジスタ部（ＤＭＡＣＣＲ）１１３のＤＭＡＣ転送制御レジスタ１１３０のスタートビットＳＴＡＲＴをセットすると、ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２はフラッシュメモリ4からサブＣＰＵ（ＦＣＰＵ）１２が実行する書き込み・消去制御プログラムを読み出すための内部バスＩＢＵＳのアクセスを実行する。その後、読み出した書き込み・消去制御プログラムのデータをコントロールＲＡＭ（ＣＲＡＭ）１５に書き込むための内部バスＩＢＵＳのアクセスを、ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２が実行する。内部バスＩＢＵＳのアクセス要求の調停は、バス制御回路（ＢＳＣ）６が実行する。ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２は内部バスＩＢＵＳのアクセスを実行する前にＤＭＡ転送の外部要求ＤＭＡ＿Ｒｅｑをアサートして、ＢＳＣ６に内部バスＩＢＵＳのアクセスの実行を要求する。ＢＳＣ６は複数の内部バスＩＢＵＳのアクセス要求を調停して、ＤＭＡＣ１１のアクセス要求を許可する場合には、ＤＭＡアクノリッジ信号ＤＭＡ＿ＡＣＫをアサートする。ＤＭＡアクノリッジ信号ＤＭＡ＿ＡＣＫがアサートされると、ＤＭＡＣ１１は内部バスＩＢＵＳのアクセスを実行する。ＤＭＡＣ１１による内部バスＩＢＵＳのアクセスが終了すると、ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２はＤＭＡ終了信号ＤＭＡ＿ＥＮＤをアサートして内部バスＩＢＵＳを解放する。ＦＣＰＵ１２のための書き込み・消去制御プログラムのＣＲＡＭ１５への転送が終了すると、ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２はＤＭＡＣステータスレジスタ１１３１のＤＭＡデータ転送終了ビットＤＥＮＤをセットする。ＤＭＡＣ割り込み制御レジスタ１１３２のＤＭＡＣ割り込みイネーブルビットＤＭＡＩＮＴＥＮがセットされている状態で、ＤＭＡＣステータスレジスタ１１３１のＤＭＡデータ転送終了ビットＤＥＮＤがセットされると、ＤＭＡＣ割り込み信号ＤＭＡ＿Ｉｎｔ＿Ｒｅｑがアサートされて、メインＣＰＵ２にＤＡＭＣ１１からの割り込み要求が通知される。
【００５６】
このマイクロコンピュータ１では、システム起動後にフラッシュメモリ４に格納されたユーザープログラムのメインＣＰＵ２による実行と並行して、ＤＴＣ３０またはＤＭＡＣ１１を使用してフラッシュメモリ4からＣＲＡＭ１５にＦＣＵ５のＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムを転送することが可能である。このため、例えば、マイクロコンピュータ１を起動した後に、メインＣＰＵ２がユーザープログラムを実行可能となるまでに要する時間を短縮できると言う効果が得られる。
【００５７】
本発明者等により本発明に先立って開発されたマイクロコンピュータでは、システムの起動後にメインＣＰＵ２がＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムをフラッシュメモリ4からＣＲＡＭ１５に転送する必要があり、この転送が終了するまではメインＣＰＵ２がユーザープログラムを実行することができなかったものである。
【００５８】
図５は、ＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムをメインＣＰＵ２がフラッシュメモリ４からＣＲＡＭ１５に転送するという本発明に先立って開発されたマイクロコンピュータのフローチャートを示す図である。
【００５９】
同図のフローでは、最初にＣＲＡＭ１５への書き込みを可能にするために、ＦＣＵ５のＦＩＭＣ１３のＣＲＣＮＴＲ３２のＣＲＡＭアクセスイネーブルビットＣＲＥＮをメインＣＰＵ２がセットする（ステップＳ１）。次にフラッシュメモリ4からメインＣＰＵ２がデータを読み出して（ステップＳ２）、メインＣＰＵ２が読み出したデータをＣＲＡＭ１５に書き込む（ステップＳ３）。全データを転送したかをメインＣＰＵ２が判定して（ステップＳ４）、転送すべきデータが残っている場合にはフラッシュメモリ4とＣＲＡＭ１５のアドレスをメインＣＰＵ２が更新して（ステップＳ５）、ステップＳ２からステップＳ４までの処理を繰り返す。全データの転送が完了した場合には、ＣＲＡＭアクセスイネーブルビットＣＲＥＮをメインＣＰＵ２がクリアして（ステップＳ６）、ＣＲＡＭ１５に対する誤書き込みを防止する。
【００６０】
これに対して上記のマイクロコンピュータ１では、システム起動後にメインＣＰＵ２がＦＣＵ５の制御レジスタと、ＤＴＣ３０またはＤＭＡＣ１１の制御レジスタとを設定するだけで、ユーザープログラムの実行を開始できるものである。
【００６１】
≪データ転送コントローラによる書き込み・消去制御プログラムの転送≫
図６は、ＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムをＤＴＣ３０がフラッシュメモリ４からＣＲＡＭ１５に転送するという本発明の第１の実施形態によるマイクロコンピュータのフローチャートを示す図である。
【００６２】
同図のフローでは、システム起動後に最初にＣＲＡＭ１５への書き込みを可能にするために、ＦＣＵ５のＦＩＭＣ１３のＣＲＣＮＴＲ３２のＣＲＡＭアクセスイネーブルビットＣＲＥＮをメインＣＰＵ２がセットする（ステップＳ１０）。次に、メインＣＰＵ２がＤＴＣ３０のＤＴＣＲ４３のＤＩＮＴＲ４２の割り込みイネーブルビットＤＩＮＴＥＮを設定して（ステップＳ１１）、ＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムのＣＲＡＭ１５へのデータ転送が完了するとＤＴＣ割り込み信号ＤＴＩＮＴがアサートされるようにする。これらの設定が完了した後に、メインＣＰＵ２がＤＴＣ３０のＤＴＣＲ４３のＴＲＣＲ４０のスタートビットＳＴＡＲＴをセットすると（ステップＳ１２）、ＤＴＣ３０による転送が開始される。転送が終了してＤＴＣ割り込み信号ＤＴＩＮＴがアサートされると、メインＣＰＵ２は割り込み処理中でＣＲＡＭアクセスイネーブルビットＣＲＥＮをクリアして、ＣＲＡＭ１５に対する誤書き込みを防止する。
【００６３】
ＦＣＰＵ１２のためのフラッシュメモリ４の書き込み・消去制御プログラムの容量は、数キロバイトの規模に達するため、ＦＣＰＵ１２のためのフラッシュメモリ４の書き込み・消去制御プログラムのメインＣＰＵ２を使用したプログラム転送では図５のステップＳ２からステップＳ４までの処理が長期間にわたって実行される。このため、ステップＳ６の処理が完了して、メインＣＰＵ２がユーザープログラムを実行可能な状態になるまでに要する時間が長くなる。一方、ＤＴＣ３０を使用した転送では、メインＣＰＵ２が図６のステップ１０からステップＳ１２までの処理を実行するだけでユーザープログラムの実行を開始できるため、短時間でユーザープログラムの実行が可能な状態になる。
【００６４】
≪ＤＭＡＣによる書き込み・消去制御プログラムの転送≫
まず、メインＣＰＵ２が周辺バスＰＢＵＳを介してＤＭＡＣ１１のワークレジスタ１１１２のモードレジスタ１１１２Ａに、フラッシュメモリ４の書き込み・消去制御プログラムのＦＣＵ５のＣＲＡＭ１５へのデータ転送に必要なＤＭＡ転送ビット数やデータサイズ等の設定モード情報をセットする。また、メインＣＰＵ２はＤＭＡＣ１１のワークレジスタ１１１２のディスティネーションアドレスレジスタ１１１２Ｃとソースアドレスレジスタ１１１２Ｄに、データ転送先のＣＲＡＭ１５のＤＭＡ転送元の開始アドレスと転送元のフラッシュメモリ４のＤＭＡ転送元の開始アドレスとをそれぞれセットする。その後、ＤＭＡＣコア１１１は、フラッシュメモリ4からサブＣＰＵ（ＦＣＰＵ）１２が実行する書き込み・消去制御プログラムを読み出すための内部バスＩＢＵＳのアクセスを実行する。その後、読み出した書き込み・消去制御プログラムのデータをコントロールＲＡＭ（ＣＲＡＭ）１５に書き込むための内部バスＩＢＵＳのアクセスを、ＤＭＡＣコア１１１が実行する。内部バスＩＢＵＳのアクセス要求の調停は、ＤＭＡＣ１１のＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２とバス制御回路（ＢＳＣ）６とにより実行される。ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２は内部バスＩＢＵＳのアクセスを実行する前にＤＭＡ要求信号ＤＭＡ＿Ｒｅｑをアサートして、ＢＳＣ６に内部バスＩＢＵＳのアクセスの実行を要求する。ＢＳＣ６は複数の内部バスＩＢＵＳのアクセス要求を調停して、ＤＭＡＣ１１のアクセス要求を許可する場合には、ＤＭＡアクノリッジ信号ＤＭＡＣ＿ＡＣＫをアサートする。ＤＭＡアクノリッジ信号ＤＭＡＣ＿ＡＣＫがアサートされると、ＤＭＡＣ１１は内部バスＩＢＵＳのアクセスを実行する。ＤＭＡＣ１１による内部バスＩＢＵＳのアクセスが終了すると、ＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２はＤＭＡアクセス終了信号ＤＭＡ＿ＥＮＤをアサートして内部バスＩＢＵＳを解放する。尚、ＤＭＡ割り込み信号ＤＭＡ＿Ｉｎｔ＿ＲｅｇがＣＰＵインターフェースニット（ＣＰＵＩＦ）１１２アサートされると、メインＣＰＵ２にＤＭＡＣ１１からの割り込み要求が通知される。
【００６５】
更に、上記の実施形態によるマイクロコンピュータでは、メインＣＰＵ２によりＦＣＵ５のＦＩＭＣ１３のＳＴＳＲ２２のエラービットＥＲＲを読み出し、またはエラー割り込み信号ＥＲＲＩＮＴによって、ＣＲＡＭ１５の格納データが破壊されているかどうかを判定することが可能である。ＣＲＡＭ１５の格納データが破壊された場合には、図６のステップＳ１０からステップＳ１２までの処理をメインＣＰＵ２が実行するだけでＦＣＵ５のＦＣＰＵ１２によるフラッシュメモリ４の書き込み・消去制御プログラムのプログラムをＤＴＣ３０またはＤＭＡＣ１１がフラッシュメモリ４からＣＲＡＭ１５へ再転送するため、ＦＣＵ５の誤動作を防止して、マイクロコンピュータの信頼性を向上することができると言う効果が得られる。
【００６６】
（第２の実施形態）
図７は、本発明の第２の実施形態によるマイクロコンピュータを示すブロック図である。
【００６７】
以下に、本発明の第２の実施形態が第１の実施形態によるマイクロコンピュータの相違する点について説明する。
【００６８】
図７に示したマイクロコンピュータ１では、図１に示したＤＴＣ３０とＤＭＡＣ１１とが削除され、そのかわりにメインＣＰＵ２の要求によりフラッシュメモリ４に格納された書き込み・消去制御プログラムのＦＣＵ５のＣＲＡＭ１５へデータ転送を実行するフラッシュ制御ユニット（ＦＣＵ）１０５が内部バスＩＢＵＳに接続され、ＦＣＵ１０５が内部バスＩＢＵＳ経由でフラッシュメモリ4から書き込み・消去制御プログラムを読み出すことが可能である。ＦＣＵ１０５が発行する内部バスＩＢＵＳのアクセス要求は、ＢＳＣ６により調停される。
【００６９】
図８は、図７に示したマイクロコンピュータ１のＦＣＵ１０５の内部構成を示す図である。
【００７０】
同図に示すように、ＦＣＵ１０５のフラッシュバス制御回路（ＦＢＳＣ）１１４から内部バス要求信号ＩＢＲＥＱ、内部バス終了信号ＩＢＥＮＤが出力され、ＦＢＳＣ１１４に内部バスアクノリッジ信号ＩＢＡＣＫが供給される。このため、図１から図６に示した第１の実施形態のＤＴＣ３０、ＤＭＡＣ１１と同様の方法で、ＦＣＵ５のＦＢＳＣ１１４によって内部バスＩＢＵＳのアクセスを実行することが可能である。
【００７１】
図９は、図７に示したマイクロコンピュータ１のサブＣＰＵ（ＦＣＰＵ）１１２を制御するためのアドレスマップを示す図である。ＦＣＰＵ１１２を制御するためのアドレスマップには、内部バスＩＢＵＳ経由でフラッシュメモリ4をアクセスするためのアドレス（スタートアドレスＨ´００００＿００００）が割り当てられている。メインＣＰＵ２が図８のＦＩＭＣ１１３のＣＲＡＭ制御レジスタ（ＣＲＣＮＴＲ）１３２のＣＲＡＭ制御ビットＣＲＣＰをセットすると、フラッシュＣＰＵインターフェースコントローラ（ＦＩＭＣ）１１３はステータスレジスタ（ＳＴＳＲ）２２のビジーフラグＢＵＳＹをセットして、ＦＣＰＵ１１２を割り込み信号ＩＲＱによって起動する。割り込みによって起動されたＦＣＰＵ１１２は、フラッシュメモリ（内部バスＩＢＵＳ経由のフラッシュメモリアクセス）のアドレス（スタートアドレスＨ´００００＿００００）に分岐する。ＦＢＳＣ１１４はＦＣＰＵ１１２のアクセス要求に従って、フラッシュメモリ4に対する内部バスＩＢＵＳ経由の読み出しを実行する。
【００７２】
分岐先のフラッシュメモリ4には、フラッシュメモリ4から読み出したＦＣＰＵ１１２のための書き込み・消去制御プログラムをＣＲＡＭ１５に転送するための転送プログラムと、その転送プログラムをフラッシュメモリ4からＣＲＡＭ１５にコピーするためのコピープログラムとが格納されている。
【００７３】
図１０は、図７に示したマイクロプロセッサ１でＣＲＡＭ制御ビットＣＲＣＰのセットによってフラッシュメモリ4に分岐した場合のＦＣＰＵ１１２のプログラム動作フローを示す図である。
【００７４】
同図に示すように、ＦＣＰＵ１１２はフラッシュメモリ4に分岐した後、ＦＣＰＵ１１２のための書き込み・消去制御プログラムをフラッシュメモリ4からＣＲＡＭ１５に転送するための転送プログラムを、フラッシュメモリ4からＣＲＡＭ１５にコピーする（ステップＳ２０）。次に、ステップＳ２０でＣＲＡＭ１５にコピーした転送プログラムに分岐することにより（ステップＳ２１）、ＦＣＰＵ１１２のための書き込み・消去制御プログラムをフラッシュメモリ4からＣＲＡＭ１５に転送する転送プログラムを実行する（ステップＳ２２）。ＦＣＰＵ１１２用のプログラムの転送が完了すると、ＦＣＰＵ１１２はＦＩＭＣ１３のＳＴＳＲ２２のコマンドエンドフラグＣＭＤＥのビットをセットする（ステップＳ２３）。コマンドエンドフラグＣＭＤＥのビットがセットされると、ＦＩＭＣ１１３はＳＴＳＲ２２のビジーフラグＢＵＳＹとＣＲＣＮＴＲ１３２のＣＲＡＭ制御ビットＣＲＣＰとをクリアする。ビジーフラグＢＵＳＹがクリアされることにより、ＦＣＵ５によるコマンド処理が可能な状態になる。また、ＣＲＡＭ制御ビットＣＲＣＰがクリアされることにより、ＣＲＣＮＴＲ１３２のＣＲＡＭアクセスイネーブルビットＣＲＥＮをセット可能な状態になる。
【００７５】
ＣＲＡＭ制御ビットＣＲＣＰをセットすると、ＦＣＰＵ１１２を使用してＦＣＰＵ１１２のための書き込み・消去制御プログラムをフラッシュメモリ4からＣＲＡＭ１５にコピーすることが可能である。ＣＲＡＭ制御ビットＣＲＣＰがセットされた状態では、ＦＣＰＵ１１２がＣＲＡＭ１５に対するアクセスを実行する。メインＣＰＵ２とＦＣＰＵ１１２が同時にＣＲＡＭ１５に対するアクセスを実行することを回避するために、ＦＩＭＣ１１３はＣＲＡＭ制御ビットＣＲＣＰがセットされた状態でＣＲＣＮＴＲ１３２のＣＲＡＭアクセスイネーブルビットＣＲＥＮをセットしない。
【００７６】
上記の実施形態によるマイクロコンピュータでは、メインＣＰＵ２によるユーザープログラムの実行と並行して、ＦＣＰＵ１１２のプログラム動作によってＦＣＰＵ１１２のための書き込み・消去制御プログラムをフラッシュメモリ4からＣＲＡＭ１５に転送することが可能となる。このため、例えば、マイクロコンピュータを起動後にメインＣＰＵ２がユーザープログラムを実行可能となるまでに要する時間を短縮することができると言う効果が得られる。
【００７７】
また、第１の実施形態と同様にＣＲＡＭ１５の格納データが破壊されていることが判定可能であり、かつＦＩＭＣ１１３のＣＲＣＮＴＲ１３２のＣＲＡＭ制御ビットＣＲＣＰをメインＣＰＵ２がセットするだけでＦＣＰＵ１１２用のプログラムを再転送することが可能であるため、ＦＣＵ１０５の誤動作を防止し、マイクロコンピュータの信頼性を向上する効果が得られる。
【００７８】
第１の実施形態の方式では、フラッシュメモリ4からのＦＣＰＵ１１２のための書き込み・消去制御プログラムの読み出しに内部バスＩＢＵＳを使用して、ＣＲＡＭ１５への書き込みに内部バスＩＢＵＳと周辺バスＰＢＵＳとを使用する。第２の実施形態の方式では、フラッシュメモリ4からのＦＣＰＵ１１２のための書き込み・消去制御プログラムの読み出しに内部バスＩＢＵＳを使用して、ＣＲＡＭ１５への書き込みに内部バスＩＢＵＳを使用することなくフラッシュバスＦＢＵＳのみを使用する。このため、第１の実施形態と比較して、ＦＣＰＵ１１２のためのプログラム転送による内部バスＩＢＵＳの占有率を低くできる利点がある。
【００７９】
しかし、第２の実施形態の方式では、ＦＣＰＵ１１２のための書き込み・消去制御プログラムを転送するために、転送するプログラムの読み出し、書き込みの他に、ＦＣＰＵ１１２の命令のフェッチを実行する必要がある。このため、第１の実施形態のようなデータ転送コントローラ３０やＤＭＡＣを使用する場合と比較して、ＦＣＰＵ１１２のための書き込み・消去制御プログラムを転送するために必要な時間が長くなる欠点がある。
【００８０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８１】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置、例えば、マイクロコントローラ、デジタルシグナルプロセッサ（ＤＳＰ）を中心にした半導体集積回路装置にも適用可能である。
【００８２】
さらに不揮発性メモリ４としては、フラッシュメモリ等のように電荷蓄積領域に電荷を注入したり電荷蓄積領域から電荷を放出するタイプ以外に、例えば相変化メモリも採用することができる。例えば、相変化メモリの消去はメモリセルの抵抗に電流を流すことにより抵抗を溶融した後に電流を激減させることで多結晶化して高抵抗とし、相変化メモリの書き込みはメモリセルの抵抗に電流を流すことにより抵抗を溶融した後に電流を徐々に減少させることで単結晶化して低抵抗とすることで実現することができる。この相変化メモリでも、消去処理や書き込み処理は消去または書き込みの電流パルスの印加とベリファイ動作との反復処理となる。本発明は少なくとも、不揮発性メモリとデータ処理装置を内蔵した半導体集積回路装置に適用することができる。
【図面の簡単な説明】
【００８３】
【図１】図１は、本発明の第１の実施形態によるマイクロコンピュータを示すブロック図である。
【図２】図２は、図１のマイクロプロセッサの内部のフラッシュ制御ユニットの内部構成を示す図である。
【図３】図３は、図１に示したマイクロプロセッサの内部のデータ転送コントローラの内部構成を示す図である。
【図４】図４は、図１のマイクロプロセッサの内部のダイレクトメモリアクセスコントローラの内部構成を示す図である。
【図５】図５は、フラッシュメモリの書き込み・消去制御プログラムをメインＣＰＵがフラッシュメモリからコントロールＲＡＭに転送するという本発明に先立って開発されたマイクロコンピュータのフローチャートを示す図である。
【図６】図６は、フラッシュメモリ４の書き込み・消去制御プログラムをデータ転送コントローラ３０がフラッシュメモリからコントロールＲＡＭに転送するという本発明の第１の実施形態によるマイクロコンピュータのフローチャートを示す図である。
【図７】図７は、本発明の第２の実施形態によるマイクロコンピュータを示すブロック図である。
【図８】図８は、図７に示したマイクロコンピュータのフラッシュ制御ユニットの内部構成を示す図である。
【図９】図９は、図７に示したマイクロコンピュータのフラッシュ制御ユニットを制御するためのアドレスマップを示す図である。
【図１０】図１０は、図７に示したマイクロプロセッサでコントロールＲＡＭ制御ビットのセットによってフラッシュメモリに分岐した場合のフラッシュ制御ユニットのプログラム動作フローを示す図である。
【符号の説明】
【００８４】
１  マイクロコンピュータ
２  中央処理ユニット（ＣＰＵ）
３  ランダムアクセスメモリ（ＲＡＭ）
４  不揮発性メモリとしてのフラッシュメモリ（ＦＬＡＳＨ）
５  書き込み・消去コントローラとしてのフラッシュ制御ユニット（ＦＣＵ）
６  バスコントローラ（ＢＳＣ）
７  周辺回路（ＰＲＨＲＬ）
８  Ｉ／Ｏポート（ＩＯＰ）
９  システムコントローラ（ＳＹＳＣ）
ＭＤ０〜ＭＤ２  モード端子
ＩＢＵＳ  内部バス
ＰＢＵＳ  周辺バス
ＥＸＢＵＳ  外部バス
１１  ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）
１３  ＣＰＵインタフェースコントローラ（ＦＩＭＣ）
１４  バス制御回路（ＦＢＳＣ）
１５  コントロールＲＡＭ（ＣＲＡＭ）
１６  書き込み・消去制御回路（ＦＬＣ）
１７  消去ブロック指定レジスタ（ＥＢＬＫＲ）
ＦＢＵＳ  ローカルバス
１８  動作制御レジスタ（ＦＣＮＴＲ）
２０  内部Ｉ／Ｏレジスタ（ＩＩＯＲ）
２１  コントロールレジスタ（ＣＮＴＲ）
２２  ステータスレジスタ（ＳＴＳＲ）
３０  データ転送コントローラ（ＤＴＣ）
３１  割り込み制御レジスタ（ＩＮＴＲ）
３２  ＣＲＡＭ制御レジスタ（ＣＲＣＮＴＲ）
３３  誤り訂正回路（ＥＣＣ）
４０  ＤＴＣ制御レジスタ（ＴＲＣＲ）
４１  ＤＴＣステータスレジスタ（ＤＳＴＳＲ）
４２  ＤＴＣ割り込み制御レジスタ（ＤＴＩＮＴＲ）
４３  ＤＴＣ制御レジスタ部（ＤＴＣＲ）
１１１  ＤＭＡＣコア
１１２  ＣＰＵインターフェース
【図１】
2008059052.tif 000003
【図２】
2008059052.tif 000004
【図３】
2008059052.tif 000005
【図４】
2008059052.tif 000006
【図５】
2008059052.tif 000007
【図６】
2008059052.tif 000008
【図７】
2008059052.tif 000009
【図８】
2008059052.tif 000010
【図９】
2008059052.tif 000011
【図１０】
2008059052.tif 000012