本発明者はマイクロコンピュータにオンチップされたフラッシュメモリの書込み及び消去に対するCPU制御と専用ハードウェア制御について検討した。
半導体プロセスの微細化に従い、フラッシュメモリの書込み及び消去の制御は複雑になっている。試作評価時に、書込み及び消去の時間や、あるいは与える電圧などを変更して評価し、最適な制御を得られるように、評価を行う必要がある。専用のハードウェアで制御する方式では、このような評価が困難である。製造工程において、個体に即した制御を実現する場合も同様である。
一方、書込み及び消去を制御する専用のプログラムをCPUが実行して、フラッシュメモリの書込み及び消去を実現する場合、その制御に占有されるCPUは容易に割込みを受付けることができない。シングルチップマイクロコンピュータは機器制御に用いられ、機器制御においては、所定のイベント(割込み発生など)から、これに対応した処理を所定の時間内で行うというリアルタイム性が要求されるから、割込みを受付けることができない時間が存在することは望ましくない。
本発明の目的は、不揮発性記憶装置に対する書込み及び消去によってデータ処理のリアルタイム性が損なわれず、しかも、不揮発性記憶装置に対する試作評価、並びに製造過程における特性評価などを詳細に行うことを可能にするマイクロコンピュータ、更には半導体集積回路を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕本発明に係る半導体集積回路(1)は、電気的に書込み及び消去可能な不揮発性メモリモジュール(4,5)とCPU(2)とを有する。前記不揮発性メモリモジュールはローカルCPU(12)を備える。この半導体集積回路は、前記不揮発性メモリモジュールに対する書込み及び消去制御を前記CPUの逐次命令実行によって可能にする第1の動作と、前記CPUから発行されたコマンドに応答する前記ローカルCPUの逐次命令実行によって前記書込み及び消去制御を可能にする第2の動作とを選択可能である。
前記CPUとローカルCPUの何れも不揮発性メモリモジュールに対する書込み及び消去をその制御プログラムに従って実行するから、試作評価、製造過程における特性評価、システム上での実動作のいずれにおいても、柔軟で、最適な書込み及び消去動作を得る事が可能になる。
第1の動作では、CPUがコマンドを発行した後は、ローカルCPUが処理を行うから、CPUはその他の処理を実行可能であり、例えば割込みを受付けて、リアルタイム性を維持することが可能になる。
本発明の具体的な一つの形態として、前記半導体集積回路のテストモードにおいて前記第1の動作又は第2の動作が選択可能にされ、前記半導体集積回路の通常モードにおいて前記第2動作が可能にされる。これにより、テストモードではCPUにテスト用プログラムを実行させ、その一環として前記第1動作によって書込み消去動作の試作評価やテスト評価を自在に行うことができる。このようなテストモードにおいては、リアルタイム性を要求されるイベントの発生は考え難く、CPUが割込を受付けられない状態であったとしても特段の悪影響は生じない。実動作を行う通常モードではローカルCPUにそのような評価を経たプログラムを実行させれば、最適条件で書込み及び消去動作を制御することができる。通常モードにおいてCPUは不揮発性メモリモジュールの書込み及び消去制御に占有されず、リアルタイム性の維持が可能である。
本発明の更に具体的な一つの形態として、前記通常モードにおいて前記不揮発性メモリモジュールのアドレスにデータを書き込みアクセスする指示の発行が前記所定のコマンドとみなされる。例えば前記不揮発性メモリモジュールのアドレスは、前記不揮発性メモリモジュールの不揮発性メモリアレイに割り当てられたアドレス又は前記不揮発性メモリアレイの消去領域を指定するレジスタに割り当てられたアドレスである。前者のアドレスに対する書込みアクセス指示を書き込みコマンドとみなし、後者のアドレスに対する書込みアクセス指示を消去コマンドとみなすことによって、書込み指示と消去指示を区別可能になる。
前記テストモードにおいては前記CPUから発行される所定のテストコマンドを前記所定のコマンドとみなせばよい。これによりテストモードにおいて第1の動作によって得られた評価結果を反映した書込み消去プログラムや書込み消去条件を適用して実際にローカルCPUの制御による書込み消去動作を容易に検証することができる。
本発明の具体的な別の一つの形態として、前記不揮発性メモリモジュールは電気的に書き換え可能な不揮発性記憶装置(4)とその制御装置(5)とを有する。前記制御装置は前記ローカルCPU(12)と共に揮発性記憶装置(15)を備える。前記揮発性記憶装置は前記CPUによって書き込みアクセス可能とされる。前記不揮発性記憶装置は前記ローカルCPUの動作プログラムを保有し、前記CPUによって前記ローカルCPUの動作プログラムを前記揮発性記憶装置に転送される。前記ローカルCPUは前記揮発性記憶装置に転送された前記動作プログラムを読み出し実行する。前記不揮発性記憶装置から前記揮発性記憶装置に前記ローカルCPUの動作プログラムを転送するのは、パワーオンリセットの指示に応答して、前記CPUが行えば良い。
揮発性記憶装置は前記CPUによって書き込みアクセス可能とされるから、テストモードにおける評価結果に従って揮発性記憶装置が保持する前記動作プログラムを随時修正することができる。これにより、テストモードにおいてローカルCPUによる書込み及び消去動作を随時変更可能である。
〔2〕本発明に係るマイクロコンピュータ(1)は、第1のデータ処理装置(2)と、電気的に書込み及び消去可能な不揮発性記憶装置(4)と、前記不揮発性記憶装置の書込み及び消去を制御するための書込み消去制御回路(16)と、前記第1のデータ処理装置とインタフェースされるインタフェース回路(13)と、前記インタフェース回路によって起動される第2のデータ処理装置(12)と、を有する。このマイクロコンピュータは、前記第1のデータ処理装置が前記書込み消去制御回路をアクセスすることによって前記不揮発性記憶装置の書込み及び消去を行う第1の動作と、第2のデータ処理装置が前記書込み消去制御回路をアクセスすることによって前記不揮発性記憶装置の書込み及び消去を行う第2の動作とを選択可能である。
前記第1及び第2のデータ処理装置の何れも不揮発性記憶装置に対する書込み及び消去をその制御プログラムに従って実行するから、試作評価、製造過程における特性評価、システム上での実動作のいずれにおいても、柔軟で、最適な書込み及び消去動作を得る事が可能になる。
第2の動作において第1のデータ処理装置が前記インタフェース回路を介して第2のデータ処理装置を起動した後は、第2のデータ処理装置が書込み及び消去の処理を行うから、第1のデータ処理装置はその他の処理を実行可能であり、例えば割込みを受付けて、リアルタイム性を維持することが可能になる。
本発明の具体的な一つの形態として、前記マイクロコンピュータのテストモードにおいて前記第1の動作又は第2の動作が選択可能にされ、前記マイクロコンピュータの通常モードにおいて前記第2動作が可能にされる。これにより、テストモードでは第1のデータ処理装置にテスト用プログラムを実行させ、その一環として前記第1の動作によって書込み消去動作の試作評価やテスト評価を自在に行うことができる。実動作を行う通常モードでは第2のデータ処理装置にそのような評価を経たプログラムを実行させれば、最適条件で書込み及び消去動作を制御することができる。通常モードにおいて第1のデータ処理装置は不揮発性記憶装置の書込み及び消去制御に占有されず、リアルタイム性の維持が可能である。
本発明の更に具体的な一つの形態として、前記インタフェース回路は、前記通常モードにおいて前記不揮発性記憶装置のアドレスにデータを書き込みアクセスする指示が前記第1のデータ処理装置から発行されることに応答して前記第2のデータ処理装置を第1の割り込みによって起動する。第1の割り込みによって起動された前記第2のデータ処理装置は、前記書き込みアクセスする指示に係るアドレスにそのデータを書き込む処理を実行する。
本発明の別の具体的な一つの形態として、前記インタフェース回路は、前記通常モードにおいて前記書込み消去制御回路の所定のレジスタにデータを書き込みアクセスする指示が前記第1のデータ処理装置から発行されることに応答して前記第2のデータ処理装置を第2の割り込みによって起動する。第2の割り込みによって起動された前記第2のデータ処理装置は、前記所定のレジスタへのデータ書き込みによって指定される不揮発性記憶装置の領域に対する消去処理を実行する。
テストモードでは、前記インタフェース回路は前記第1のデータ処理装置から発行される所定のテストコマンドに応答して前記第2のデータ処理装置を起動する。これによりテストモードにおいて第1の動作によって得られた評価結果を反映した書込み消去プログラムや書込み消去条件を適用して実際に第2のデータ処理装置の制御による書込み消去動作を容易に検証することができる。
本発明の具体的な別の一つの形態として、第1のデータ処理装置は、第1のバス(IBUS)によって前記不揮発性記憶装置の読出し動作が可能とされ、第1のデータ処理装置は、第2のバス(PBUS)によって前記インタフェース回路への読出し及び書込みが可能にされる。不揮発性記憶装置に対する書込み及び消去動作用のバスを、通常モードにおける読出し動作用のバスと分離することにより、読出し用の第1のバスの、アクセスステートを短縮したり、バス幅を拡張したりするのが容易になる。不揮発性記憶装置等に対する読出し動作の高速化が容易になり、また、不揮発性記憶装置の接続による第1バスの負荷の増大を極力抑えることが可能になる。
本発明の具体的な更に別の一つの形態として、マイクロコンピュータは揮発性記憶装置(15)を有する。前記揮発性記憶装置は前記第2のデータ処理装置のプログラムを格納する。前記揮発性記憶装置は、前記インタフェース回路を介して第1のデータ処理装置によるライトアクセスが可能にされる。揮発性記憶装置は前記第1のデータ処理装置によって書き込みアクセス可能とされるから、テストモードにおける評価結果に従って揮発性記憶装置が保持する前記動作プログラムを随時修正することができる。これにより、テストモードにおいて第2のデータ処理装置による書込み及び消去動作を随時変更可能である。
本発明の具体的な更に別の一つの形態として、前記書込み消去制御回路は、前記不揮発性記憶装置の書込み及び消去の動作モードを指定する書込み消去コントロールレジスタを有する。
前記書込み消去制御回路は、前記不揮発性記憶装置の書込み又は消去に使用する高電圧の印加時間、高電圧を印加するための待機時間又は印加電圧の少なくとも一方の微調整を指示するトリミングレジスタを有する。不揮発性メモリセルの特性に応じた書込み及び消去処理の微調整が可能になる。
本発明の具体的な更に別の一つの形態として、マイクロコンピュータは前記第2のデータ処理装置によるアクセス要求又は前記インタフェース回路に与えられた第1のデータ処理装置によるアクセス要求に応答するバス制御回路(14)を有する。このバス制御回路は前記要求に応答して、前記書込み消去制御回路、前記不揮発性記憶装置、及び前記揮発性記憶装置に対するアクセスを実現する。
本発明の具体的な更に別の一つの形態として、前記第2のデータ処理装置の起動には、上述の第1のデータ処理装置による前記不揮発性記憶装置に対する書込みアクセスの検出に代えて、前記第1のデータ処理装置による所定のデータの書き込みを検出するようにしてもよい。所定のデータの書込みとは例えばコマンドレジスタに対する所定のコマンドの書込みである。
本発明の具体的な更に別の一つの形態として、前記インタフェース回路は、前記第1のデータ処理装置が書込み可能であって前記第2のデータ処理装置が読出し可能なコントロールレジスタと、前記第2のデータ処理装置が書込み可能であって前記第1のデータ処理装置が読出し可能なステータスレジスタと、の少なくとも一方を有してよい。例えばコントロールレジスタは、書込み消去の許可フラグ(FENTRY)等の書込みに割り当てられる。ステータスレジスタはビジーフラグ等の書込みに割り当てられる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、不揮発性記憶装置に対する書込み及び消去によってデータ処理のリアルタイム性を損なわず、しかも、不揮発性記憶装置に対する試作評価、並びに製造過程における特性評価などを詳細に行うことが可能になる。
図1には本発明が適用されたマイクロコンピュータが例示される。同図に示されるマイクロコンピュータ1を構成する回路素子は、公知のCMOS(相補型MOS)トランジスタやバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
マイクロコンピュータ(MCU)1は、第1のデータ処理装置としての中央処理装置(CPU)2、ランダムアクセスメモリ(RAM)3、不揮発性記憶装置としてのフラッシュメモリ(FLASH)4、制御装置としてのフラッシュコントロールユニット(FCU)5、バスコントローラ(BSC)6、周辺回路(PRHRL)7、I/Oポート(IOP)8及びシステムコントローラ(SYSC)9を有する。周辺回路7には、タイマ、パルス出力回路、シリアルコミュニケーションインタフェース、A/D変換器などが含まれる。図示はしないが、割込みコントローラやクロック発振器などの回路モジュールも搭載される。CPU2は命令をフェッチしてデコードする命令制御部と、命令制御部による命令デコード結果に基づいて演算等を行って命令を実行する命令実行部とを有する。RAM3はCPU2のワーク領域とされる。
フラッシュメモリ4はCPU2のプログラムを格納し、或いは不揮発的に保持すべきデータの格納に利用される。フラッシュメモリ4は、電気的に消去及び書込み可能な多数の不揮発性メモリトランジスタを有する。不揮発性メモリトランジスタには、特に制限されないが、ソースとドレインの間のチャネル形成領域の上に各々絶縁されたフローティングゲートのような電荷蓄積領域とコントロールゲートを積み重ねたスタックドゲート構造を採用可能である。或いはチャネル形成領域の上に選択ゲートとメモリゲートを分離して配置し、メモリゲートとチャンネル形成領域との間にシリコンナイトライドのような電荷蓄積領域を形成したスプリット構造等を採用してもよい。不揮発性メモリトランジスタは電荷蓄積領域に電子が注入される書込みによって閾値電圧が高くされ、書込みによって蓄積された電子の放出又はホールの注入によって閾値電圧が低くされる。例えばメモリゲートと基板の間に高電界を形成し、ソース・ドレイン間電流によって発生されるホットエレクトロンを電荷蓄積領域に注入することによって書込みが行われる。消去の場合にはホットホールを発生させ、これを電荷蓄積領域に注入すればよい。高電界を形成するのに、書込みでは書込みパルス電圧を用い、消去では消去パルス電圧を用いる。不揮発性メモリトランジスタはその閾値電圧の相違として情報を記憶する。1個のメモリセルによる情報記憶は1ビットの2値、或いは2ビット以上の多値の何れであっても良い。
システムコントローラ9は外部のモード端子MD0〜MD2及びリセット端子RESET等が接続される。リセット端子RESETがローレベルにされると内部の初期化が開始され、リセット端子RESETがハイレベルにされてリセット指示が解除されると、CPU2は例えばプログラムの先頭アドレスの命令をフェッチして命令実行動作を開始する。リセットの指示が解除されるとき、モード端子MD0〜MD2の状態に応じてマイクロコンピュータの動作モードが決定される。例えば通常モード又はテストモードにされる。テストモードは、特に制限されないが、通常モードに比べ、デバイステスト、デバイス評価、更にはシステム評価の便に供する機能を利用可能な動作モードである。
マイクロコンピュータ1は、内部バスIBUS、周辺バスPBUS、及び外部バスEXBUSを有する。夫々のバスは、アドレスバス、データバスの他、バス権要求信号、バスアクノレッジ信号、バスコマンド(またはリード信号、ライト信号、バスサイズ信号)、レディ信号(またはウェイト信号)等の信号線を含む。
内部バスIBUSは、CPU2或いは図示を省略するダイレクトメモリアクセスコントローラ(DMAC)のようなそのほかの内部バスマスタに直接接続されるバスである。内部バスIBUSにはRAM3、バスコントローラ6、フラッシュメモリ4、及びI/Oポート等、少数の回路モジュールが接続される。内部バスIBUSを介するRAM3及びフラッシュメモリ4に対する読出しアクセスは1ステートで可能にされる。内部バスIBUSの接続先が少数であるため、バス幅は任意にでき、例えばそのデータバスは32ビット幅とされる。
周辺バスPBUSには、前記周辺回路7、システムコントローラ9、フラッシュコントロールユニット5及びI/Oポート8などが接続される。周辺バスPBUSはバスコントローラ6を介して内部バスIBUSと分離される。これにより、CPU2のプログラムリードなどで、主として使用する内部バスIBUSの負荷を軽減し、アクセスの高速化に資することができる。更に、CPU2等が周辺バスPBUSを使用しないとき、周辺バスの状態を保持することが可能になるから、これによって低消費電力化することができる。CPU2が周辺バスPBUSに接続される回路モジュール内の内部I/Oレジスタをアクセスする場合は、内部バスIBUS及びバスコントローラ6を経由して行う。内部I/Oレジスタのアクセスは2ステートで行われる。内部バスIBUSに比べて周辺バスPBUSの接続先は多数であるため、周辺バスPBUSのバス幅を広げると物理的な規模が増加するため、周辺バスPBUSは例えば16ビットのデータバスを有する。
内部バスIBUSと外部バスEXBUSは、外部バスバッファ回路(BUF)10によってインタフェースされる。外部バスバッファ回路10は、入出力ポート8に含まれる。周辺バスPBUS及び外部バスEXBUSに対するバス制御はバスコントローラ6が行う。
前記通常モードにおける前記フラッシュメモリ4のリード動作は内部バスIBUSを経由して行う。書込み及び消去を指示するためのコマンド及びデータの供給は周辺バスPBUSを介してフラッシュコントロールユニット5に対して行う。書込み及び消去動作は、それ自体に時間がかかり、また、書込み及び消去動作の頻度はそれほど高くなく、少なくとも内部バスIBUSを経由したリード動作より大幅に少ない、ということを考慮したものである。フラッシュコントロールユニット5を内部バスIBUSに接続すれば内部バスIBUSの負荷が大幅に増えることになるからである。
フラッシュコントロールユニット5は第2のデータ処理装置としてローカルCPU(FCPU)12を備える。通常モードにおいてFCPU12はCPU2から発行されたコマンドに応答して逐次命令を実行してフラッシュメモリ4に対する書き込み及び消去制御を行うことが可能にされる。CPU2はコマンド発行後に書き込み及び消去制御から開放される。テストモードではCPU2が逐次命令を実行してフラッシュメモリ4に対する書き込み及び消去制御を行うことが可能にされる。FCPU12の動作プログラムに制限されることなくCPU2のプログラムに従ってテストや検証のための書き込み及び消去制御を自由に行うことができる。
図2にはフラッシュコントロールユニット5の一例が示される。フラッシュコントロールユニット5は、前記FCPU12の他に、CPUインタフェースコントローラ(FIMC)13、バス制御回路(FBSC)14、コントロールRAM(CRAM)15、書込み消去制御回路(FLC)16、及びローカルバスFBUSを有する。
フラッシュコントロールユニット5はCPU2のアドレス空間に配置され、CPU2は周辺バスPBUSを介してフラッシュコントロールユニット5の内部をアクセスすることができる。すなわち、CPUインタフェースコントローラ13は周辺バスPBUSに接続され、CPU2からのアクセスに対してフラッシュコントロールユニット5の全体的な制御を行う。第1に、CPUインタフェースコントローラ13は割込み要求信号IRQと対応するベクタを発行してFCPU12を起動する。第2に、CPUインタフェースコントローラ13はバス制御回路14にバスコマンドを発行することによってコントロールRAM15及びFLC16に対するローカルバスFBUS経由のバス制御を行う。コントロールRAM15はFCPU12の動作プログラムの格納領域、或いはFCPU12のワーク領域等に用いられる。FLC16は、フラッシュメモリ4に対する動作制御レジスタ(FCNTR)18、トリミングレジスタ(TRMR)19及び消去ブロック指定レジスタ(EBLKR)17を有する。FLC16は動作制御レジスタ18に設定される制御ビットの状態に従ってフラッシュメモリ4の動作を制御する。動作制御レジスタ18の制御ビットは、例えば書込みイネーブルビットWE、書込み指示ビットP、及び消去指示ビットE等とされる。書込みイネーブルビットWEは論理値1によって書込み消去動作の指示の有効性を示す。書込み指示ビット1は論理値1によって書込みパルス電圧の印加を指示する。消去指示ビットは消去パルス電圧の印加を指示する。前記トリミングレジスタ19はフラッシュメモリ4の書込みパルス電圧、消去パルス電圧、ドレイン電圧、ソース電圧、ベリファイ電圧の各々の電圧レベルの微調整や、書込みパルス電圧及び消去パルス電圧のパルス幅の微調整を行うためのトリミングデータが設定される。トリミングデータやFCPU12の動作プログラムの初期値はフラッシュメモリ4が保有し、その初期値データはパワーオンリセットに応答してCPU2がトリミングデータレジスタ19及びコントロールRAM15に内部転送する。トリミングデータレジスタ19及びコントロールRAM15のプログラム領域は通常モードではユーザプログラムを実行しているCPUからの書込みアクセス不可能にされ、保護される。テストモードでは自由にアクセス可能にされる。消去ブロック指定レジスタ17には消去ブロック又は消去アドレスが指定される。書込みデータ及び書き込みアドレスはフラッシュメモリ内部のデータレジスタ及びアドレスレジスタにセットされる。
前記割り込みによるFCPU12の起動について説明する。CPUインタフェースコントローラ13はCPU2から周辺バスPBUSを介してアクセス可能にされる内部I/Oレジスタ(IIOR)20、コントロールレジスタ(CNTR)21及びステータスレジスタ(STSR)22を有する。コントロールレジスタ21は書込み消去フラグFENTRY等の設定領域とされ、CPU2によって書込み可能にされ、FCPU12によって読出し可能にされる。前記ステータスレジスタ22はビジーフラグBUSYやコマンドエンドフラグCMDE等の記憶領域とされ、FCPU12によってライト可能にされ、CPU2によってリード可能にされる。FCPU12は経路23からステータスレジスタ22に対する書込みを行う。
通常モードにおいて書込み消去フラグFENTRY=1のとき、CPUインタフェースコントローラ13は、フラッシュメモリ4の不揮発性メモリアレイにマッピングされたアドレスにデータを書き込むCPU2からのアクセスを検出すると、その書込みアクセスをフラッシュ書込みコマンドとして認識する。また、CPUインタフェースコントローラ13は、消去ブロック指定レジスタ17に消去アドレス若しくは消去ブロック指定情報を書込むCPU2からのアクセスを検出すると、その書込みアクセスをフラッシュ消去コマンドとして認識する。CPUインタフェースコントローラ13はそのコマンド解釈に従って割り込み要求信号IRQを活性化し、コマンドに応ずるベクタを発行する。これによってFCPU12はベクタによって指定される書込み制御プログラム又は消去制御プログラムをコントロールRAM15からフェッチして実行する。フラッシュ書込みコマンドに応答する場合、FCPU12はその書込み制御プログラムに従って、前記フラッシュ書込みコマンドと認識した書込みアクセスに係るアドレスとデータを内部IOレジスタ20からコントロールRAM15に取り込み、フラッシュメモリに転送し、FCNTR18のWE,Pビット等を順次設定しながら、フラッシュメモリ4に対する書込みを行う。フラッシュ消去コマンドに応答する場合、FCPU12はその消去制御プログラムに従って、前記フラッシュ消去コマンドと認識した消去ブロック指定データを内部IOレジスタ20からコントロールRAM15に取り込み、フラッシュメモリに転送し、FCNTR18のWE,Eビット等を順次設定しながら、フラッシュメモリ4に対する消去を行う。
前記書込み消去フラグFENTRYは前記バスコントローラ6に供給され、通常モードにおいて書込み消去フラグFENTRY=0のとき、バスコントローラ6がフラッシュメモリ4のマッピングアドレス又は消去ブロック指定レジスタ17に対するCPU2からの書込みアクセスを検出すると、例えばアドレスエラーを発生させ、フラッシュメモリ4に対する当該書込み動作を無効とする。したがって、通常モードにおいて書込み消去フラグFENTRY=0のときは、フラッシュメモリ4は内部バスIBUS経由のリードアクセスだけが可能にされる。尚、テストモードでは書込み消去フラグFENTRYはバスコントローラ6によるフラッシュメモリ4に対するアクセス経路の制御だけに用いられる。即ち、フラッシュメモリ4に対しては、テストモードにおいてFENTRY=1の時はバスコントローラ6及び周辺バスPBUS経由のアクセスだけが許容され、FENTRY=0の時は内部バスIBUS経由のリードアクセスだけが許容される。
前記バス制御回路14を経由するコントロールRAM15及びFLC16のアクセス制御について説明する。CPUインタフェースコントローラ13は、通常モード及びテストモードのいずれにおいても、フラッシュコントロールユニット5のマッピングアドレス(消去ブロック指定レジスタ17のマッピングアドレスを除く)に対するCPU2からのアクセスに対して、アクセスコマンドをFBSC14に発行する。発行されたアクセスコマンドに従ってFBSC14はローカルバスFBUSの制御を行ってコントロールRAM15及びFLC16に対するリードアクセス及びライトアクセスを行うことができる。特に制限されないが、通常モードではトリミングレジスタ19に対する自由なアクセスは許容されていない。テストモードでは、CPU2からフラッシュメモリ4のマッピングアドレスにデータを書き込むアクセスがあっても、また、CPU2から消去ブロック指定レジスタ17に対してデータを書込むアクセスがあっても、CPUインタフェースコントローラ13はFCPU12を起動せず、対応するアクセスコマンドをFBSC14に発行する。それに従ってFBSC14がローカルバスFBUSの制御を行って、CPUインタフェースコントローラ13の内部IOレジスタ20に保持された書込みデータ及び書込みアドレスをフラッシュメモリ4に供給し、又は消去ブロックアドレスを消去ブロック指定レジスタ17に供給する。この後、CPU2はFLC16のレジスタ18に対する書込みアクセスを発行することによって消去ビットEやプログラムビットPを直接操作して、消去動作又は書込み動作を行うことができる。
テストモードでは、CPU2は前記トリミングレジスタ19を直接操作することができるから、トリミングデータの設定次第で、例えば、フラッシュメモリ4における書込みパルス電圧、消去パルス電圧、パルス印加時間、ドレイン電圧、及びソース電圧等を微調整することができる。そのような電圧や時間を微調整することによって、マイクロコンピュータ1の製造プロセス、不揮発性メモリの素子構成、あるいはマイクロコンピュータ1の個体差などに即して、最適な書込み、最適な消去の制御が可能にされる。これらの電圧や時間は量産時には固定にされるのがよいが、少なくとも試作評価時には可変にする必要がある。
更にテストモードでは、CPU2はコントロールRAM15が保有するFCPU12のプログラムを書き換えることができる。試作評価時には、前記テストモードで、CPU2による制御プログラム実行で書込み/消去を実行し、基本機能や所要のパラメータなどの確認を行うことができる。試作評価時は、機器制御を行うわけではないので、リアルタイム性の要求される割込み処理などを考慮する必要がない。その後は、前記制御プログラムをFCPU12用に変更し、コントロールRAM15に転送し、この後、テストコマンドを用いてCPU2がCPUインタフェースコントローラ13に書込み/消去動作を指示することで、FCPU12にそのプログラムを実行させて書込み及び消去を行わせることも可能である。当然この場合には、CPUインタフェースコントローラ13の内部IOレジスタ20には書込みアドレス及び書き込みデータ、或いは消去ブロック指定データが保持されているとよい。
図3にはCPU2のアドレス空間が示される。CPU2のアドレス空間は例えば4ギガバイト(GB)である。その内の先頭側16メガバイト(MB)がフラッシュコントロールユニット5にマッピングされる。CPU2とFCPU12の双方がフラッシュコントロールユニット5のマッピングアドレスをアクセス可能である。このFCPU12のアドレス空間は、前記FBSC14が管理し、FCPU12がバス制御回路14に対し、バスコマンドとアドレスを与えることによって、アクセスが実行される。前述の如くフラッシュメモリ4は、FENTRY=1のとき周辺バスPBUSアクセスが可能にされ、FENTRY=0のとき内部バスIBUSアクセスが可能にされる。フラッシュコントロールユニット5のコントロールRAM15も、CPU2のアドレス空間上に配置されているから、CPU2によって、前記フラッシュメモリ4上に保持したFCPU12のプログラムをコントロールRAM15に転送し、コントロールRAM15に格納することができる。あるいは、任意のプログラムをコントロールRAM15に格納し、FCPU12に実行させることができる。なお、コントロールRAM15は、誤動作などによって不所望に書換えられないように、アクセスイネーブルビットなどを持つようにするのがよい。
図4にはフラッシュコントロールユニット5の状態遷移の概略が示される。マイクロコンピュータ1のリセット後は、フラッシュコントロールユニット5は停止状態である(FENTRY=0)。通常モードとしての通常動作状態(TEST=0)で、CPU2が、CPUインタフェースコントローラ13のフラグFENTRYを1にセットすると、書込み/消去状態(コマンド待ち状態)に遷移する。
次に、フラッシュメモリ4の所定のアドレスに対して、周辺バスPBUSから書込みアクセスが行われると、CPUインタフェースコントローラ13はその書込みアドレスに応じて当該書込みアクセスをフラッシュ書込みコマンド又はフラッシュ消去コマンドとして解釈し、その解釈に従ってFCPU12を起動し、書き込み動作又は消去動作の制御を開始させ、FCPU12によってコマンドエンド(CMDEND)フラグが1にセットされるのを待つ。これらの状態では、BUSYフラグを1にセットするようにする。周辺バスPBUSからフラッシュメモリ4のアドレスに対する読出しアクセスがあった場合、CPUインタフェースコントローラ13はバス制御装置14にリードバスコマンドを発行してフラッシュメモリ4のリード動作を行い、その後、ただちにコマンド待ち状態に遷移する。
テストモード(TEST=1)を指定すると、CPU2は、CPUインタフェースコントローラ13を経由して、FCPU12の全アドレス空間をアクセスすることができる。CPU2は、FCPU12に代わって、書込み及び消去動作を実行することができる。
試作評価時には、このテストモードで、CPU2による制御プログラム実行で書込み/消去を実行し、基本機能や所要のパラメータなどの確認を行うのがよい。試作評価時は、機器制御を行うわけではないので、リアルタイム性の要求される割込み処理などを考慮する必要がない。その後は、試作評価内容を前記制御プログラムに反映し、これをFCPU12用に変換し、コントロールRAM15に転送した状態で、CPU2からのフラッシュ書き込みコマンド又はフラッシュ消去コマンドに応答してCPUインタフェースコントローラ13がFCPU12に書込み及び消去を実行させて、そのプログラムを更に検証する事が可能になる。この一連の検証動作をテストモードで行うことができる。
図5にはフラッシュコントロールユニット5によるFCPU12を介する書込み動作のフローチャートが示される。
通常モードにおいてFENTRY=1のときCPUインタフェースコントローラ13がフラッシュ書込みコマンドを認識すると(S1)、割り込みによってFCPU12を起動し(S2)、フラッシュ書込み制御をFCPU12に処理を委ねる。FCPU12は、割り込みベクタで指示されるスタートアドレスに従って、コントロールRAM15上の所定の書き込み処理プログラムを実行し、CPUインタフェースコントローラ13の内部IOレジスタ20に保持されている書込みデータ及び書き込みアドレスを入力する。入力したデータ及び書き込みアドレスを、一旦コントロールRAM15に格納する(S3)。
引続き、コントロールRAM15に格納した書込みデータ及び書き込みアドレスをフラッシュメモリ4のレジスタに転送する(S4)。その後、書込み消去制御回路16のライトイネーブルビットWEを1にセットし(S5)、所定時間ウェイトを行ってフラッシュメモリ内の電源が書き込みに対応した状態になるのを待つ(S6)。ウェイトの後、プログラムビットPを1にセットし(S7)、所定時間ウェイトし(S8)、次いで、プログラムビットPを0にクリアし(S9)、単位書込みを行う。P=1の期間にフラッシュメモリの不揮発性メモリセルへの書込みが行われる。
次に、書込みによって所定の書き込み状態(書き込み状態に対応した閾値電圧状態)に到達したか否かをベリファイによって確認する(S10)。ベリファイ結果により所定の書込み状態に到達していないときは、所定回数になるまで単位書込みを繰返す(S11)。所定回数繰返しても書込み状態に到達しない場合は、不良と判断され(S16)、CPUインタフェースコントローラ13上のプログラムエラービットを1にセットするなどの所用のエラー処理を実行し、コマンドエンドフラグ(CMDEND)を1にセットして(S17)、コマンド待ち状態に遷移する(S18)。
ステップS10におけるベリファイによって不揮発性メモリセルが書き込み状態に到達すると、ライトイネーブルビットを0にクリアし(S12)、所定時間ウェイト(フラッシュメモリ内の電源が書き込み完了に対応した状態になるのを待つ)した後(S13)、コマンドエンドビット(CMDEND)を1にセットして(S14)、コマンド待ち状態に遷移する(S15)。コマンドエンドフラグが1にセットされると、CPUインタフェースコントローラ13はFCPU12を待機状態にする。
通常モードにおいてFENTRY=1のときCPUインタフェースコントローラ13がフラッシュ消去コマンドを認識したときは、割り込みによってFCPU12を起動し、フラッシュ消去制御をFCPU12に処理を委ねる。このときの処理手順は、特に図示はしないが、図5においてプログラムビットPの代わりに消去ビットEが操作の対象にされる点およびフラッシュメモリ内の電源が消去に対応じた状態にされ、また不揮発性メモリセルが消去状態に対応したしきい値電圧状態である消去状態にされる点が相違され、基本的な手順はほぼ同じである。
図6にはフラッシュコントロールユニット5によるFCPU12を介する書込み動作のタイミングチャートが示され、図5のフローチャートで示される書込みフローに対応される。
CPUインタフェースコントローラ13によってフラッシュ書込みコマンドが認識された場合、CPUインタフェースコントローラ13は書込み状態に遷移し、FCPU12を起動する(時刻t1)。ビジーフラグBUSYを1にセットする。FCPU12は、フラッシュ書込みコマンドとして認識されたライトアクセスの書込みデータ及び書き込みアドレスを内部Iレジスタ20からコントロールRAM15に取り込む(時刻t2)。これはCPUインタフェースコントローラ13の内部入出力レジスタ20の内容をリードし、これをコントロールRAM15上の所定のアドレスにライトすることによって実現する。このときのバス制御はバス制御装置14が行う。
取り込んだ書き込みデータ及び書き込みアドレスはフラッシュメモリ4のデータレジスタ及びアドレスレジスタに転送される(時刻t3)。これは書き込みアドレス及び書き込みデータをコントロールRAM15からリードして、フラッシュメモリ4のアドレスレジスタ及びデータレジスタにライトすることによって行う。この時点では、書込みデータはフラッシュメモリ4のバッファであるデータレジスタに格納されるのみで、不揮発性メモリセルへの書込みはまだ行われない。
その後、FCPU12の制御により前記の通り、書込み消去制御回路16の所定のビットWE、Pのライトや、ベリファイのためのフラッシュメモリ4のリードを行って、書込み制御を行う(時刻t4)。
FCPU12は書き込みの完了に応じて、最後にFIMC13のCMDENDフラグを1にセットする(時刻t5)。CPUインタフェースコントローラ13はコマンド待ち状態に、FCPU12は待機状態とされ、BUSYフラグが0にクリアされる。
FCPU12を、所定のコマンドの実行以外には待機状態にすることで、ノイズなどによる不所望の誤動作の可能性を低減できる。また、CPUインタフェースコントローラ13によるFBSC14経由のアクセスとFCPU12によるバス制御装置14経由のアクセスとの排他性を確保しながらバス権の調停などを不要にでき、論理の簡略化に資することができる。
図7にはテストモードにおける動作としてコントロールRAM15に対するライト動作が示される。テストモードで、周辺バスPBUSを介した、コントロールRAM15のアドレスに対するライトを検出すると、CPUインタフェースコントローラ13は、バス制御装置14にコントロールRAM15をライトするためバス制御を行わせる。CPUインタフェースコントローラ13を介してバス制御装置14を制御するため、周辺バスPBUSにウェイトを要求するようにする。特に図示はしないが、CPU2からの書込み消去制御装置16に対するリード/ライトも同様に行われる。
以上説明したマイクロコンピュータ1によれば以下の作用効果を得ることができる。
トリミングレジスタ19をCPU2で制御して、フラッシュメモリ4の書込み/消去を実行することにより、書込み電圧やその印加時間、待機時間等を微調整することによって、マイクロコンピュータ4の製造プロセス、不揮発性メモリセルの構成、あるいはマイクロコンピュータの個体差などに即して、最適な書込み、最適な消去の制御を行うことができる。微細化に伴って、フラッシュメモリ4の書込み及び消去特性のばらつきが大きくなっても対応が容易になる。
テストモードにおいてFCPU12の書込み消去プログラムをコントロールRAM15に格納し、CPU2がコントロールRAM15をライトアクセス可能であるから、最適な書込み、最適な消去を行うように、書込み消去プログラムを修正することができる。テストモードにおいてCPU2がフラッシュコントロールユニット5にテストコマンドを発行してFCPU12にコントロールRAM15上の書き込み消去プログラムを実行させて随時その評価を行うことができる。
テストモードにおいてCPU2は、トリミングデータを変更しつつ、書込み、消去、あるいはベリファイを行って、随時結果を確認することができるから、試作評価などを容易に行うことができる。
通常モード時は、CPU2から書込みコマンド又は消去コマンドとみなされるライトアクセスを発行することにより、FCPU12に書込み/消去の制御を実行させるから、その間、CPU2はその他の処理を行うことができる。例えば、フラッシュメモリ4の書込み/消去中でも、CPU2は割込みを受付けることができ、リアルタイム性を損なうことがない。
通常モードにおいてフラッシュメモリのリードのバスを内部バスIBUSとすることにより、フラッシュメモリに対する高速アクセスが可能になる。フラッシュメモリ4には、CPU2の処理プログラムが格納されるから、このリード動作を高速にして、処理性能を向上することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、フラッシュコントロールユニット5内のブロック分割は任意にできる。CPUインタフェースコントローラ13とFCPU12の機能分割も任意にできる。コマンドも任意にしたり、追加したりすることもできる。フラッシュ書込みコマンド、フラッシュ消去コマンドと認識されるライトアクセスについてもフラッシュメモリの特定アドレスに限定しなくてもよい。書込み指示と消去指示をアドレス以外の信号で区別できる場合にはフラッシュメモリの任意のアドレスに対する書込みアクセスをフラッシュ書込みコマンド、フラッシュ消去コマンドと認識すればよい。フラッシュメモリ4の書込み/消去に必要なレジスタの構成や配置についても変更可能である。また、マイクロコンピュータのオンチップモジュールの種類や機能、アドレス空間の大きさやマッピングの状態、についても適宜変更可能である。
ローカルCPU12の起動はCPU12によるフラッシュメモリのアドレスにデータを書き込むライトアクセス、消去ブロック指定レジスタに対すライトアクセスに限定されない。上記とは異なる特定のアドレスに対する書込み、特定のデータを書き込むライトアクセス、或いは特定コードを有するコマンド入力等であってもよい。トリミングレジスタは通常モードにおいてCPU2によるライトを可能にしてもよい。ローカルメモリとしてROMを持ってもよい。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置、例えば、デジタルシグナルプロセッサ(DSP)を中心にした半導体集積回路装置にも適用可能であり、本発明は少なくとも、不揮発性メモリとデータ処理装置を内蔵した半導体集積回路装置に適用することができる。