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