図1は、本発明にしたがうデータ処理装置としてのシングルチップマイクロコンピュータ30を示している。特に制限されないが、シングルチップマイクロコンピュータ30は、単結晶シリコン基板などの一つの半導体基板(半導体チップ)上に形成される。
図1に示されるように、シングルチップマイクロコンピュータ30は、特に制限されないが、割込み制御回路10、クロック発振器11、中央処理装置(CPU)12、内蔵ランダム・アクセス・メモリ(RAM)13、ホストインタフェース回路14、シリアル通信回路とされるシリアルコミュニケーションインタフェース回路15、10ビットのアナログ・デジィタル変換回路(A/D変換器)16、8ビットのデジィタル・アナログ変換回路(D/A変換器)17、プログラムメモリとれる内蔵リード・オンリ・メモリ(ROM)18、ウォッチドッグタイマ回路19、16ビットのフリーランニングタイマ回路20、8ビットのタイマ回路21、パルス幅変調のために利用されるPWMタイマ回路22、及び複数の信号入力、信号出力又は信号入出力に利用されるポートP1〜P9を含む。
これらの回路モジュール(10、12〜22、P1〜P9)がアドレスバス24及びデータバス26によって結合され、中央処理装置12がアドレスバス24及びデータバス25、26を用いて回路モジュール(12〜22、P1〜P9)をアクセスできるようにされる。
中央処理装置12が回路モジュール(12〜22、P1〜P9)の何れかをアクセスする場合、中央処理装置12はアクセスの対象とされる回路モジュールに割り当てられたアドレスを選択するためのアドレス信号を上記アドレスバス24へ発生する。この時、データリードモードであるなら、アクセスの対象とされる回路モジュールはデータバス25、26にデータを出力し、上記中央処理装置12はデータバス26を介してそのデータを取り込む。一方、データライトモードであるなら、上記中央処理装置12はデータバス25、26へ所望のデータを出力し、上記アクセスの対象とされる回路モジュールはデータバス25、26を介してそのデータを取り込む。
次に、上記各回路ブロック(10〜22)の機能が説明される。
クロック発振器11は、特に制限されないが、水晶振動子を利用して発振する発振器と、この発振器の出力パルスのデューティを補正するデューティ補正回路と、上記デューティ補正回路からのシステムクロック信号を分周することによって内蔵周辺モジュール(12〜22)の為の内蔵周辺モジュールクロック信号を形成するクロック分周器と、上記クロック分周器からの上記内蔵周辺モジュール用クロック信号を分周して内部クロック信号を生成するためのプリスケーラとを含む。クロック発振器11で発生された所定周波数のシステムクロックに同期して、各回路モジュール(10、12〜22)が動作される。
CPU12は、特に制限されないが、処理すべきプログラム内に定義された命令が格納される命令レジスタ(IR)、上記命令レジスタに格納された命令をデコードする命令デコーダ(IDEC)、上記命令デコーダから出力される制御信号に従ってその動作が制御される命令実行部(IEXE)とを含む。上記命令実行部(IEXE)は、算術演算や論理演算を実行する算術論理演算器(ALU)、8ビット×16本の汎用レジスタ(R0−R15)、プログラム内の次に実行されるべき命令の命令アドレスに関するデータを格納するプログラムカウンタ(PC)等を有する。プログラムカウンタ(PC)内のデータは、命令が上記命令実行部(IEXE)によって実行される毎に、インクリメントされる。上記命令実行部(IEXE)は、クロック発振器11から出力されるシステムクロックをタイムベースとして、所定の演算処理、及び各内蔵周辺モジュール(12〜22)の動作制御を行う。なお、上記命令レジスタ(IR)、命令デコーダ(IDEC)、命令実行部(IEXE)、算術論理演算器(ALU)、汎用レジスタ(R0−R15)乃至プログラムカウンタ(PC)は、図面の簡素化のため、上記図1には描かれていない。
上記汎用レジスタの1つは、割り込み発生時或いは例外発生時のスタックポインタとして利用される。すなわち、割り込み発生時或いは例外発生時、その時点における上記汎用レジスタに格納されていたデータを、例えば、所定の外部記憶装置へ待避させることが行われる。この場合、スタックポインタは、待避されたデータのアドレスを示すアドレスデータを格納する。割り込み処理或いは例外処理からの復帰時、上記スタックポインタに格納されるアドレスデータを利用して、その割り込み処理或いは例外処理が受け付けられた時に上記外部記憶装置へ待避されたところの汎用レジスタの内容が汎用レジスタ内に回復される。なお、上記システムクロックのある立上がりエッジから次の立上がりエッジまでの1単位が1ステートとされるとき、CPU12のメモリサイクル又はバスサイクルは、例えば、2ステート又は3ステートで構成される。言い換えると、CPU12は、システムクロックの2周期又は3周期で、上記内蔵周辺モジュール(12〜22)をアクセスすることができるように設計される。
内蔵RAM13は、特に制限されないが、1kバイトの記憶容量を有するスタティック型RAMとされる。内蔵RAM13は、アドレスバス24及びそれぞれ8ビット幅のデータバス25,26によってCPU12へ結合される。その結果、内蔵RAM13は、バイトデータ(8ビットのデータ)、ワードデータ(16ビットのデータ)にかかわらず、2ステートのメモリアクセスサイクル一回で、バイトデータ及びワードデータの入力及び出力が可能にされている。
ホストインタフェース回路14は、CPU12とホストシステムとの2チャンネルのパラレルインタフェース機能を有し、特に制限されないが、4バイトのデータレジスタ、高速ゲートロジックや、割込み要求回路などを含む。ホストシステムからの5つのコントロール信号、ホストシステムへの4つの出力信号、及びコマンド又はデータ入出力バスとしての8ビット幅のデータバス25を介してホストシステムとの通信が可能とされる。
シリアルコミュニケーションインタフェース回路15は、他のLSIとの間でシリアルデータの通信を行うためのモジュールで、調歩同期式モードによる通信と、クロック同期式モードによる通信との選択が可能とされる。動作モードの指定や、データフォーマットの指定、ビットレートの設定及び送受信制御のための複数のコントロールレジスタと、送受信のコントロール回路、及びバスインタフェースなどを含む。
A/D変換器16は、特に制限されないが、逐次変換方式により、入力アナログ信号をディジタル信号に変換するためのもので、特に制限されないが、最大8チャンネルのアナログ入力を選択することができる。
D/A変換器17は、データバス25を介して入力されたディジタル信号をアナログ信号に変換する機能を有し、各種レジスタや、8ビットD/A変換部、及びコントロール回路を含む。
ウォッチドッグタイマ19は、システムの監視を行うものである。システムの暴走などにより、ウォッチドッグタイマ19内のタイマカウンタの値が書換えられずにオーバーフローすると、ウォッチドッグタイマ19はCPU12に対してリセット信号又はNMI(ノンマスカブル割込み)要求を発生する。また、この機能を利用しない場合には、ウォッチドッグタイマ19内のタイマカウンタはインターバルタイマとしても使用可能である。
16ビットフリーランニングタイマ20は、特に制限されないが、16ビットフリーランニングカウンタをベースにして2種類の独立した波形出力が可能とされ、また、入力パルスの幅や、外部クロックの周期を測定することができる。
8ビットタイマ21は2チャンネル設けられ、それぞれタイマカウンタの他に、8ビットのタイムコンスタントレジスタが設けられる。それにより、任意のデューティ比のパルス信号の出力が可能とされる。
PWMタイマ22は、2チャンネル設けられ、各チャンネル毎に、8ビットタイマカウンタと8ビットデューティレジスタがあり、この8ビットデューティレジスタに設定する値によって0〜100%のデューティパルスを得ることができるようになっている。
割込み制御回路10は、外部割込み要求信号とされるNMI(ノンマスカブル割込み)やIRQ0−IRQ2、上記周辺モジュール15〜22から供給される図示されていない内部割込み要求を受け、所定の優先順位に従って処理するための機能を有し、この割込み要求処理結果に基づいて、割込み例外処理要求信号IRQSがCPU12に伝達されるようになっている。割込み制御回路10は、図1に図示されないが、アドレスバス24及びデータバス25に結合され、CPU12によって内部レジスタがアクセス可能にされる。なお、上記NMI(ノンマスカブル割込み)は、マスク不可能な割り込みとされる。従って、割込み制御回路10が上記NMI(ノンマスカブル割込み)を受けると、上記NMIに従う割り込み処理を実行する事になる。
内蔵ROM18は、CPU12で実行されるプログラムを格納するためのプログラムメモリとされる。内蔵ROM18は、特に制限されないが、アドレスバス24及びそれぞれ8ビット幅のデータバス25,26によってCPU12に結合される。その結果、内蔵ROM18は、バイトデータ(8ビットのデータ)、ワードデータ(16ビットのデータ)にかかわらず、2ステートのメモリアクセスサイクル一回で、バイトデータ及びワードデータの出力が可能にされている。前述のように、内蔵ROM18は、一括消去型の電気的に消去可能な及びプログラム可能な不揮発性記憶装置(以下単に、フラッシュ型EEPROM、又は、フラッシュメモリとも称する)によって構成される。その内部に格納されるデータとしてのプログラムは、シングルチップマイクロコンピュータをオンボード書き込みモードに設定することによって、プログラミング可能にされる。
本実施例のマイクロコンピュータ30の動作モードがオンボードプログラミングモードに設定されると、上記内蔵ROM18へのプログラム(データ)書込みや、消去、ベリファイを行うことができる。このオンボードプログラミングモードは、2種類の動作モード(ブートモード、ユーザプログラムモード)を含む。なお、ブートモードは第1オンボードプログラミングモードとされ、ユーザプログラムモードは第2オンボードプログラミングモードとされる。
マイクロコンピュータ30の動作モードはモード設定回路MCによって判別され、モード設定回路MCはモード設定信号MS0−MS4のうちの1つのモード設定信号をハイレベルとする。指定された動作モードを示すハイレベルのモード設定信号は、例えば、中央処理装置CPU12やバスコントローラ27等の回路へ供給される。モード設定回路MCは、モード設定端子MD0−MD2に供給されるモード信号MDS0−MDS2の信号電圧及び高電圧供給端子Vppに供給される高電圧Vpが所定の組み合わせとされているか否かを判別し、マイクロコンピュータ30の動作モードを所望の動作モードへ設定する。それによって、マイクロコンピュータ30の動作モードは、上記ブートモードや上記ユーザプログラムモードのほか、後述されるPROMモード、シングルチップモード及び外部メモリ拡張モードを含む。シングルチップモードは、内蔵RAMや内蔵ROMのアドレス空間を利用してマイクロコンピュータシステムを構成するモードとされる。一方、外部メモリ拡張モードは、内蔵RAMや内蔵ROM以外の外部メモリをも利用してアドレス空間が拡張され、その拡張されたアドレス空間を利用してマイクロコンピュータシステムを構成するモードとされる。
例えば、12Vの電圧がモード設定端子MD2及び高電圧供給端子Vppに供給されると、マイクロコンピュータ30の動作モードがブートモードに設定される。すなわち、モード設定信号MS0がハイレベルとされる。この場合、マイクロコンピュータ30のアドレス空間の設定モードに従って、0V又は5Vの電圧がモード設定端子MD1、MD0へそれぞれ供給される。一方、12Vの電圧が高電圧供給端子Vppに供給されると、マイクロコンピュータ30の動作モードがユーザプログラムモードに設定される。すなわち、モード設定信号MS1がハイレベルとされる。この場合、マイクロコンピュータ30のアドレス空間の設定モードに従って、0V又は5Vの電圧がモード設定端子MD0−MD2へそれぞれ供給される。特に制限されないが、モード設定信号MS2のハイレベルは上記PROMモードを示し、モード設定信号MS3のハイレベルは上記シングルチップモードモードを示し、モード設定信号MS4のハイレベルは上記外部メモリ拡張モードを示す。
ブートモードを使用する場合、フラッシュメモリ18の書き込み及び消去用のユーザプログラム(書き換え制御プログラム)及び書き込みデータが図示されないホストシステムなどに予め用意される。ブートモードに設定されると、リセット解除後に、予めブートROMにプログラムされているブートプログラムが起動される。そして、上記ホストシステムから送信されるデータのローレベルの期間がシリアルコミュニケーションインタフェース回路15によって測定され、それによって、上記ホストシステムの送信データのビットレートが計算され、シリアルコミュニケーションインタフェース回路15のビットレートレジスタの値が決定される。次に、上記ホストシステムは上記書き換え制御プログラムを構成するデータの転送を行う。シリアルコミュニケーションインタフェース回路15によって受信された書き換え制御プログラムのデータが内蔵RAM13へ格納される。書き換え制御プログラムの書込みが終了した後、ブートプログラムの処理が内蔵RAM13に書き込まれた書き換え制御プログラムの先頭アドレスへ分岐される。それによって、内蔵RAM13に書込まれた書き換え制御プログラムがCPU12によって実行され、フラッシュメモリに対するデータの書込み動作或いはデータの消去動作が実行されることになる。なお、上記ブートROMは、マスクROM等の不揮発性記憶回路から構成され、電源電位の低下があってもその記憶内容は消去されない。
ユーザプログラムモードにおいて、フラッシュメモリ18に対するデータの書込み動作或いはデータの消去動作がフラッシュメモリ18の書き込み及び消去用のユーザプログラム(書換え制御プログラム)により可能とされる。この場合、高電圧を供給するための高電圧供給手段及び書換えデータを供給するためのデータ供給手段が実装基板上に設けられる。そして、上記書換え制御プログラムが、例えば、フラッシュメモリ18乃至他のメモリ(外部メモリ)のプログラムエリアの一部に格納させる。ユーザプログラムモードの設定に応答して、CPU12は上記書換え制御プログラムを内蔵RAM13に格納し、上記書換え制御プログラムを実行するCPU12によってフラッシュメモリ18のオンボード書換えが行われる。
尚、内蔵ROMとしてのフラッシュメモリ18の消去又は書込みモードとして、オンボード書込みモード以外に、PROMモードが用意されても良い。上記PROMモードは、フラッシュメモリ18へのプログラムデータの書込みを汎用PROMライタを用いて可能とするモードとされる。上記PROMモードは、例えば、モード設定端子MD0−MD2の全てに、ローレベル”0”のモード設定信号MDS0−MDS2を供給することによって設定される。
ベクタアドレスが内蔵ROMとしてのフラッシュメモリ18内に存在する場合、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18の消去又は書込み中に、割り込み要求乃至例外処理要求が発生した時、CPU12は正しいベクタアドレスを取得できない。なぜなら、内蔵ROM18の消去又は書込み中なので、CPU12はフラッシュメモリ18のベクタアドレス格納領域をアクセスできないからである。そのため、上述のようなマイクロコンピュータの暴走の虞がある。
そこで、本実施例では、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18の消去又は書込み中、内蔵RAM13の一部の記憶領域(アドレス領域)が、フラッシュメモリ18のベクタアドレス格納エリアへ移動されるようにする。すなわち、フラッシュメモリ18の消去又は書込み中において、フラッシュメモリ18のベクタアドレス格納エリアのアドレスが、内蔵RAM13の一部の記憶領域のアドレスへ移動される。それによって、フラッシュメモリ18の消去又は書込み中に発生したベクタアドレスをフェッチする為のアドレス信号は、内蔵RAM13の一部の記憶領域をアクセスすることになる。従って、内蔵RAM13の一部の上記記憶領域へ必要なベクタアドレスを予め格納することによって、正しいベクタアドレスを取得可能にすれば、マイクロコンピュータの暴走などを防止する事ができる。換言すれば、本実施例において、内蔵RAM13は、ユーザプログラムモードにおける内蔵ROM18の消去又は書込み時、フラッシュメモリ18に格納されたベクタアドレス格納領域を代替するために利用される。このとき、予め利用可能なベクタアドレスが内蔵RAM13の一部の記憶領域に書込まれた後、内蔵ROM18の消去又は書込みのプログラムの実行が開始される事になる。
図2は、内蔵ROM18としてのフラッシュメモリの消去又は書込み時に利用される内蔵RAM13のベクタアドレス格納エリアB−Vを含む本発明に従うアドレスマップの第1の実施例を示す。
CPU12によって管理されるアドレス空間、言い換えるならば、CPU12がアクセス可能なアドレス空間は、特に制限されないが、64kバイト(H’0000〜H’FFFF)とされる。すなわち、アドレスバス24のビット数は、16ビットとされる。
内蔵ROM18に割り当てられたアドレス空間のアドレスエリアAは32kバイト(H’0000〜H’7FFF)とされる。このアドレスエリアAのうち、ベクタアドレスに関するアドレスデータが格納されるベクタアドレス格納エリアA−Vは256バイト(H’0000〜H’00FF)とされる。
一方、内蔵RAM13に割り当てられたアドレス空間のアドレスエリアBは、1kバイト(H’FC00〜H’FFFF)とされる。このアドレスエリアBは、図示されるように、アドレスエリアB−Vを含む。このアドレスエリアB−Vは、内蔵ROM18のオンボード書込みを安全に行うために、ベクタアドレス格納エリアA−Vを代替する為のエリアとされ、例えば、256バイト(H’FC00〜H’FCFF)が設定される。従って、ベクタアドレス格納エリアB−Vは、内蔵ROM18のオンボード書き込みモード(ユーザプログラムモード)中に割り込み要求或いは例外処理要求が発生した場合に利用される1乃至複数のベクタアドレスを格納する。
ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18の消去又は書込み状態において、CPU12が割込み要求の処理時にベクタアドレス格納エリアA−Vをリードしようとする場合であっても、上記のように、ベクタアドレス格納エリアB−Vに割り当てられたアドレスH’FC00〜H’FCFFが見かけ上ベクタアドレス格納エリアA−Vへ移動されているので、ベクタアドレス格納エリアB−Vがアクセスされる。それにより、内蔵ROM18としてのフラッシュメモリの消去又は書込み中において、正しいベクタアドレスがベクタアドレス格納エリアB−Vから得られるので、フラッシュメモリ18の消去又は書込み中でも、CPU12は割り込み要求及び例外処理要求に応じて所望の割り込み処理及び例外処理を正しく行うことができる。
上記のようなベクタアドレスエリアの代替を実現するには、CPU12からベクタアドレス信号が出力されたとき、バスコントローラ27によって、内蔵RAM13のベクタアドレス格納エリアB−Vがアクセスされて、その内容(所定のベクタアドレスデータ)がリードされるようにすればよい。
つまり、ユーザプログラムモード又はブートモードにおいて、内蔵ROM18としてのフラッシュメモリの消去又は書込み状態で、CPU12が割込み処理時にフラッシュメモリ18のベクタアドレス格納エリアA−Vをリードする為のアドレス信号を発生したとき、バスコントローラ27が次のようにモジュール選択信号を制御すればよい。
すなわち、バスコントローラ27が、本来活性化されるべき内蔵ROM18のモジュール選択信号を非活性化し、代わりに、内蔵RAM13のモジュール選択信号を活性化し、内蔵RAM13のベクタアドレス格納エリアB−Vがリードされるように制御する。具体的には、図3に示されるような制御回路(G1,G2,G3)を図1に示されるバスコントローラ回路27に設ければよい。
図3は、内蔵RAM13のベクタアドレス格納エリアB−Vをフラッシュメモリ18のベクタアドレス格納エリアA−Vへアドレス変換する場合のバスコントローラ27の主要部構成例を、内蔵ROM18及び内蔵RAM13との関係で示している。
バスコントローラ27は、内蔵ROM18を選択するための内蔵ROM選択回路29、内蔵RAM選択回路28、及び制御論理回路(誤動作排除手段)とされるゲートG1〜G3を含む。上記内蔵ROM選択回路29は、内蔵ROM18のアドレスを示すアドレス信号が上記アドレスバス24にあるとき、ハイレベル”1”の出力信号Aを出力する。内蔵RAM選択回路28は、内蔵ROM18のベクタアドレス格納エリアA−Vを示すアドレス信号が上記アドレスバス24にあるとき、ハイレベル”1”の出力信号Bを出力し、内蔵RAM13のアドレスを示すアドレス信号が上記アドレスバス24にあるとき、ハイレベル”1”の出力信号Cを出力する。ゲートG1は、内蔵ROM18がユーザプログラムモード又はブートモードにおける消去又は書込み状態で、且つ、ベクタフェッチのときハイレベルにされるコントロール信号CONTの反転信号と出力信号Aとのアンド論理をとり、内蔵ROM18が選択されるべき時、内蔵ROM18のモジュール選択信号とされるセレクト信号SEL1をローレベル”0”からハイレベル”1”にアサートする。ゲートG2は、コントロール信号CONTと上記出力信号Bとのアンド論理をとり、それらの信号が共にハイレベル”1”とされるとき、ハイレベル”1”の出力信号Dを出力する。ゲートG3は、出力信号Cおよび出力信号Dとを受け、出力信号C又は出力信号Dがハイレベル”1”とされるとき、内蔵RAM18のモジュール選択信号とされるセレクト信号SEL2をローレベル”0”からハイレベル”1”にアサートする。
内蔵ROM(32kバイト)18のアクセスを可能とするため、内蔵ROM18には、アドレスA14〜A0(15ビット)が入力され、また、内蔵RAM(1kバイト)のアクセスを可能とするため、内蔵RAM13にはCPUからのアドレスA9〜A0(10ビット)が入力されるようになっている。
内蔵ROM選択回路29は、アドレスバス24を介してCPU12から発生されたアドレスA15(1ビットのみ)を入力される。このアドレスA15が、ローレベルの場合、つまり、CPU12からのアドレスA15〜A0が、
”0xxx xxxx xxxx xxxx”(0はローレベルとされ、xは論理不定、すなわち、”0”又は”1”のいずれでも可能)
の場合に、出力信号Aがハイレベルになる。すなわち、内蔵ROM18をアクセスするためのアドレス信号がアドレスバス24上に出力された場合、出力信号Aがハイレベルになる。
内蔵RAM選択回路28は、アドレスバス24を介してCPU12からのアドレスA15〜A8を入力される。CPU12からのアドレスA15〜A0が、
”0000 0000 xxxx xxxx”
の場合に、出力信号Bがハイレベルとなる。すなわち、内蔵ROM18のベクタアドレス格納エリアA−Vをアクセスするためのアドレス信号がアドレスバス24上に出力された場合、出力信号Bがハイレベルにされる。
一方、アドレス信号がアドレスバス24上に出力された場合、CPU12からのアドレスA15〜A10が、
”1111 1100 xxxx xxxx”
の場合に、出力信号Cがハイレベルとなる。すなわち、内蔵RAM13をアクセスするためのアドレス信号がアドレスバス24上に出力された場合、出力信号Cがハイレベルにされる。
内蔵ROM18の消去又は書込みのために、所定の外部端子Vppを介して高電圧が供給されるようになっており、この高電圧供給が検出され、且つ、CPU12によってベクタフェッチ状態であることを示す信号がアサートされた場合に、コントロール信号CONTがハイレベルになる。つまり、内蔵ROM18が消去又は書込み状態で、且つ、ベクタフェッチのときに、コントロール信号CONTがハイレベルになる。コントロール信号CONTは、所定の外部端子Vppを介して高電圧が供給されたか否か、及びCPU12がベクタフェッチ状態であるか否かを判別可能に構成された論理回路によって生成することができる。
内蔵ROM選択回路29の後段には、内蔵ROM選択回路29の出力信号Aと、コントロール信号CONTとのアンド論理を得るためのゲートG1が配置され、ゲートG1から出力される選択信号SEL1がハイレベルとされた場合に、内蔵ROM18が選択されるようになっている。また、内蔵RAM選択回路28の出力信号Bとコントロール信号CONTとのアンド論理を得るためのゲートG2が設けられ、ゲートG2の出力信号Dと、内蔵RAM選択回路28の出力信号Cとのオア論理を得るためのゲートG3が設けられ、ゲートG3から出力される選択信号SEL2がハイレベルとされた場合、内蔵RAM13が選択されるようになっている。したがって、アドレスH’FC00〜H’FCFFがアクセスされる場合、選択信号SEL1がローレベルとされることで内蔵ROM18の選択が禁止され、それに代えて、選択信号SEL2がハイレベルとされることによって、内蔵RAM13が選択される。つまり、内蔵RAM13によって、内蔵ROM18の消去又は書込み時に、内蔵ROM18上にあるベクタアドレスがリードされる。
なお、この場合、内蔵ROM18のベクタアドレス格納エリアA−Vを指定するアドレスのA9−A0と内蔵RAM13のベクタアドレス格納エリアB−VのアドレスのA9−A0とが一致していることが前提とされる。したがって、内蔵ROM18のベクタアドレス格納エリアA−Vを指定するアドレスのA9−A0と内蔵RAM13のベクタアドレス格納エリアB−VのアドレスのA9−A0とが一致していない場合、アドレスバス24と内蔵RAM13との間に、アドレス変換回路を設け、出力信号Dがハイレベルとされるときに、上記アドレス変換回路のアドレス変換機能が動作するように、アドレス変換回路を設計する必要がある。このようなアドレス変換回路は、内蔵RAM13のベクタアドレス格納エリアB−Vのアドレス空間上での配置を自由にする。
次に、本発明の別の実施例について説明する。
図4は、別の実施例におけるアドレスマップを示している。図4に示されるように、この実施例では、ユーザプログラムモード又はブートモードにおける内蔵ROM18の消去又は書込み時にベクタアドレスエリアを、内蔵RAMエリアに移動するようにしている。
つまり、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18の消去又は書込み時において、本来の内蔵ROM18のベクタアドレス格納エリアA−V(H’0000〜H’00FF)ではなく、内蔵RAMのベクタアドレス格納エリアB−V(H’FC00〜H’FCFF)にベクタアドレスエリアが移動される。この場合、フラッシュメモリの消去又は書込みに応答して、内蔵RAM13へ、予め利用可能な1乃至複数のベクタアドレスのデータを書込んでから、フラッシュメモリ18の消去又は書込みが開始される。
すなわち、内蔵ROM18のベクタアドレス格納エリアA−Vをアクセスするためのアドレス信号が、内蔵RAMのベクタアドレス格納エリアB−Vをアクセスするためのアドレス信号に変換される。したがって、CPU12から内蔵ROM18のベクタアドレス格納エリアA−Vをアクセスするためのアドレス信号が出力されたときに、ベクタアドレス格納エリアA−Vをアクセスするためのアドレス信号を内蔵RAMのベクタアドレス格納エリアB−Vをアクセスするためのアドレス信号にアドレス変換するアドレス変換回路を設ければよい。
図5は、図1のバスコントロール回路27に設けられる誤動作排除手段としてのアドレス変換回路ACCを示している。
アドレス変換回路ACCは、CPU12から出力されるアドレス信号A15〜A10と上記コントロール信号CONTとのオア論理を得るための複数の制御論理回路(ゲート回路)G4、及びこのゲート回路G4の出力アドレス信号と、CPU12からのアドレスA9〜A0とに基づいて、内蔵ROM18、及び内蔵RAM13の選択を行うための内蔵ROM/内蔵RAM選択回路31によって実現することができる。上記ゲートG4、及び内蔵ROM/内蔵RAM選択回路31は、図1に示されるバスコントローラ27に内蔵される。尚、図5では、ゲートG4が1個のように示されるが、実際には、アドレスA15〜A10に対応して、6個設けられる。また、内蔵ROM/内蔵RAM選択回路31は、図4の内蔵ROM選択回路29と内蔵RAM選択回路28とを含み、図4の出力信号Aがモジュール選択信号SEL1とされ、図4の出力信号Cがモジュール選択信号SEL2とされる。
上記の構成において、CPU12からベクタアドレス格納エリアA−Vをアクセスするためのアドレス信号
”0000 0000 xxxx xxxx”
がアドレスバス24へ出力された場合、それが、ベクタアドレス格納エリアB−Vをアクセスするためのアドレス信号
”1111 1100 xxxx xxxx”
へ変換されて、内蔵ROM/内蔵RAM選択回路31に入力される。それによって、内蔵RAM13のベクタアドレス格納エリアB−Vが選択されるので、内蔵ROM18の消去又は書込み状態で、CPU12のベクタフェッチが、内蔵RAM13のベクタアドレス格納エリアB−Vに対して行われる。なお、図5において、ベクタアドレス格納エリアA−Vは、アドレス”0000 0000 0000 0000”から始まる256バイトの記憶領域とされ、且つ、ベクタアドレス格納エリアB−Vは、アドレス”1111 1100 0000 0000”から始まるようにしたので、各アドレス信号のA10及びA9は”0”となっている。ベクタアドレス格納エリアB−Vの開始アドレスが、上記と異なる場合は、適切に変更すべきであることは、容易に理解されるであろう。
このように、ユーザプログラムモード又はブートモードにおける内蔵ROM18の消去/書込み状態で行われるベクタフェッチが、内蔵ROM18のベクタアドレス格納エリアA−Vではなく、内蔵RAM13のベクタアドレス格納エリアB−Vに対して行われるため、前記実施例(図2乃至図3)の場合と同様に、内蔵ROM18としてのフラッシュメモリの消去又は書込み中において割込み要求或いは例外処理要求が発生した場合でも、内蔵RAM13のベクタアドレス格納エリアB−Vから正しいベクタアドレスが得られる。したがって、マイクロコンピュータの暴走を防止することができ、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。尚、この実施例では、ベクタアドレスのフェッチか否かによって、内蔵RAM13のアクセスと内蔵ROM18のアクセスとを切換える必要はない。
また、NMI(ノンマスカブル割込み)を含む全割り込要求を無視するようにしても、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
図6は、内蔵ROM18としてのフラッシュメモリの消去又は書込み中において、NMI(ノンマスカブル割込み)を含む全割り込を無視するためのゲートG5を含むバスコントローラ27を示している。
図6に示されるように、バスコントローラ27は、割込み制御回路10とCPU12との間に、誤動作排除手段としての制御論理回路(ゲート回路)G5含む。上記ゲート回路G5は、フラッシュメモリ18が消去又は書込み状態の時ハイレベルとされる制御信号CONT’を受け、ハイレベルの制御信号CONT’に応答して、活性状態に制御される。一方、制御信号CONT’がローレベルの時、上記ゲート回路G5は非活性状態に制御される。
割込み制御回路10からの割込み例外処理要求信号IRQSがハイレベルにアサートされた場合でも、フラッシュメモリ18の消去又は書込み状態を示す制御信号CONT’がハイレベルにアサートされている場合、上記割込み例外処理要求信号IRQSのアサート状態はCPU12に伝達されない事になる。したがって、CPU12は、フラッシュメモリ18が消去又は書込み状態の時、CPU12はベクタフェッチ動作を実行しないので、ベクタフェッチ動作に関係する誤動作は発生しない。
但し、この場合、NMIは停電などの非常事態をマイクロコンピュータ30へ知らせるために有効な手段であるため、これを無視すると、停電などのハードウェア的な原因でフラッシュメモリ18の消去又は書き込みが失敗するケースを救うことができなくなる点に注意すべきである。
図7は、ユーザプログラムモード又はブートモードにおける内蔵ROM18の消去、書込み、又はベリファイ中に割り込み要求が発生した場合に、内蔵ROM18の消去制御ビットレジスタ、書込み制御ビットレジスタ、ベリファイ制御ビットレジスタをリセットする誤動作排除手段としての制御論理回路G6を示す。
図7に示されるように、内蔵ROM18の消去、書込み、及びベリファイは、それぞれ消去制御ビットレジスタ32、書込み制御ビットレジスタ33、ベリファイ制御ビットレジスタ34に対して制御ビットをセットすることで可能とされる。したがって、割込み制御回路10からの割込み例外処理要求信号IRQSがアサートされた場合、上記消去制御ビットレジスタ32、書込み制御ビットレジスタ33、ベリファイ制御ビットレジスタ34がリセットされるように構成してもよい。上記消去制御ビットレジスタ32、書込み制御ビットレジスタ33、ベリファイ制御ビットレジスタ34は、外部からのリセット要求RESET1や、ウォッチドッグタイマ19からのリセット要求RESET2に応じる必要がある。そのため、リセット要求RESET1及びRESET2と、上記割込み例外処理要求信号IRQSとのオア論理を得るゲートG6が設けられる。ゲートG6の出力信号は、上記消去制御ビットレジスタ32、書込み制御ビットレジスタ33、ベリファイ制御ビットレジスタ34のリセット端子へ供給される。この構成によれば、内蔵ROM18の消去、書込み、又はベリファイ中に書込み要求が発生した場合に、上記消去制御ビットレジスタ32、書込み制御ビットレジスタ33、ベリファイ制御ビットレジスタ34がリセットされるので、内蔵ROM18の消去、書込み、又はベリファイが中止される。それによって、マイクロコンピュータ30の暴走を防止することができ、プログラムメモリのオンボード書込みの際のシステムの安全性の向上を図ることができる。
図8は、図3において説明されたコントロール信号CONT及び図5において説明されたコントロール信号CONT’の生成回路の一例を示している。
図示されるように、高電圧検出回路81は、フラッシュメモリ18の書き込み又は消去時に12Vのような高電圧の印加される外部端子Vppに結合され、12Vのような高電圧の供給に応答して、ハイレベルの出力信号Vを発生する。このハイレベルの出力信号Vは、例えば、図5のコントロール信号CONT’として利用する事ができる。一方、ベクタアドレス格納エリアの移動を許可するか否かを制御する許可ビットVATE83が、マイクロコンピュータ30に設けられる。CPU12は、フラッシュメモリ18の書き込みモード(ユーザプログラムモード又はブートモード)の設定に応答して、所定の命令(上記許可ビットVATE83をセット状態とする為の命令)を実行する。それによって、上記許可ビットVATE83がセット状態にされる。ANDゲートG80は、上記出力信号Vと上記許可ビットVATE83の出力状態とのアンド論理をとるゲート回路とされ、その出力信号は図3のコントロール信号CONTとされる。以上のような構成によって、図3のコントロール信号CONT及び図5のコントロール信号CONT’を生成する事ができる。
図9は、図1のマイクロコンピュータ30のフラッシュメモリ18のプログラミング方法が、上記で説明されたPROMモード及びオンボード書き込みモードとの関係で示されている。
図9に示されるように、プログラミング方法は、PROMモードによるフラッシュメモリ18のプログラミングとオンボード書き込みモードによるフラッシュメモリ18のプログラミング方法がある。開始(1)は、PROMモードによるフラッシュメモリ18のプログラミングの開始を示しており、マイクロコンピュータ30の動作モードが前述の方法によってPROMモードに設定され、汎用PROMライタによってフラッシュメモリ18に所望のプログラムデータが書き込まれる(ステップS1)。その後、所望のプログラムデータが書き込まれたマイクロコンピュータ30は、プリントボードなどの基板に実装され、そしてその実装基板を用いて、マイクロコンピュータ応用システムが組み立てられる(ステップS2)。
一方、開始(2)は、オンボード書き込みモードによるフラッシュメモリ18のプログラミングの開始を示しており、フラッシュメモリ18に所望のプログラムデータが書き込まれていない状態でマイクロコンピュータ30が、プリントボードなどの基板に実装され、そして、その実装基板を用いて、マイクロコンピュータ応用システムが組み立てられる(ステップS3)。その後、マイクロコンピュータ30の動作モードが前述の方法によってブートモードに設定され、ブートプログラムに従ってフラッシュメモリ18に所望のプログラムデータが書き込まれる(ステップS4)。このようにすれば、ユーザの開発するソフトウェアプログラム(アプリケーションソフト)の確定が遅れても、ソフトウェアプログラムの確定前に、マイクロコンピュータ応用システムのハードウェアを組立て、その後、マイクロコンピュータ内のフラッシュメモリへ開発されたソフトウェアプログラムを書込む事ができる。それによって、マイクロコンピュータ応用システムの出荷が迅速化できる。
ステップS2及びステップS4の後、マイクロコンピュータ応用システムはフラッシュメモリ18に書き込まれた所望のプログラムデータにしたがって、システム動作を実行することになる(ステップS5)。この時期に、一度出荷したマイクロコンピュータ応用システムのソフトウェアに関し、仕様の変更されたソフトウェアの開発や機能の追加されたソフトウェア(アップグレード版或いはバージョンアップされたソフトウェアなど)の開発が行われたとき、一度出荷した応用システムのソフトウェアをユーザ側で上記新規に開発したソフトウェアへ書換えが必要になる場合がある(ケース1)。あるいは、マイクロコンピュータ応用システムの利用者が、例えば、キーボードの機能を英語モードから仏語モードへ機能変更するなどの変更が必要となる場合もある(ケース2)。このようなケース1乃至ケース2のような場合が生じたとき、フラッシュメモリ18に所望のプログラムデータの書き換えが必要になる。
そこで、ステップS6に示されるように、マイクロコンピュータ30の動作モードがブートモード或いはユーザプログラムモードに設定される。例えば、上記ケース1の場合、プログラムの全面書き換えが必要な場合もあるので、マイクロコンピュータ30の動作モードがブートモードに設定され、フラッシュメモリ18のプログラムデータが所望のプログラムデータへ書き換えられる。一方、上記ケース2の場合、プログラムデータの一部分のみの書き換えによって対応可能なので、マイクロコンピュータ30の動作モードがユーザプログラムモードに設定され、フラッシュメモリ18のプログラムデータの一部のデータが所望のデータへ書き換えられる。
ステップS6の後、点線Xで示される様に、ステップ5に戻り、マイクロコンピュータ応用システムは書き換えられたプログラムに従ってシステム動作を実行することになる。なお、ステップS5、ステップS6は、必要に応じて、繰り返される。
図10は、本発明のさらに詳細なアドレスマップを示し、通常モード(シングルチップモード乃至外部メモリ拡張モード)及びフラッシュメモリのオンボード書き換えモードのユーザプログラムモード又はブートモード時におけるNMI(ノンマスカブル割り込み)のベクタアドレスとそれに対するNMI処理ルーチンの格納エリアを示している。なお、図10は、図2及び図4に示されるアドレスマップの具体的な一例とされても良い。
図10に示されるように、シングルチップモード乃至外部メモリ拡張モードの様な通常モードにおいて、NMI(ノンマスカブル割り込み)のベクタアドレスNMIAは、フラッシュメモリ18のベクタアドレス格納エリアA−Vに格納され、そのベクタアドレスNMIAに対するNMI処理ルーチンRAは、フラッシュメモリ18のアドレス空間Aの一部に格納される。つまり、ベクタアドレスNMIAは、NMI処理ルーチンRAの先頭アドレスを示している。従って、通常モードにおいて、NMI(ノンマスカブル割り込み)が発生すると、CPU12はNMI(ノンマスカブル割り込み)のベクタアドレスNMIAをベクタフェッチ動作によって取得し、ベクタアドレスNMIAによって示されるアドレス、すなわちNMI処理ルーチンRAの先頭アドレスへベクタジャンプして、その処理を実行する。
一方、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18のオンボード書き換え時、NMI(ノンマスカブル割り込み)のベクタアドレスNMIBは、内蔵RAM13のベクタアドレス格納エリアB−Vに格納され、そのベクタアドレスNMIBに対するNMI処理ルーチンRBは、内蔵RAM13のアドレス空間Bの一部に格納される。つまり、ベクタアドレスNMIBは、NMI処理ルーチンRBの先頭アドレスを示している。ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18の書き換え時、NMI(ノンマスカブル割り込み)が発生すると、CPU12はNMI(ノンマスカブル割り込み)のベクタアドレスNMIBをベクタフェッチ動作によって取得し、ベクタアドレスNMIBによって示されるアドレス、すなわちNMI処理ルーチンRBの先頭アドレスへベクタジャンプして、その処理を実行する。
したがって、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18のオンボード書き換え時のNMI(ノンマスカブル割り込み)は、フラッシュメモリ18に格納されるベクタアドレスNMIA及びNMI処理ルーチンRAを使用せずに、内蔵RAM13に格納されたベクタアドレスNMIB及びNMI処理ルーチンRBを利用して実行される。そのため、ユーザプログラムモード又はブートモードにおけるフラッシュメモリ18のオンボード書き換え時におけるNMI(ノンマスカブル割り込み)が、確実に処理される。この場合、内蔵RAM13のベクタアドレス格納エリアB−V及びNMI処理ルーチンRB等の格納エリアは書き換え時のワーク領域としての使用を制限されることに注意する必要がある。
なお、ベクタアドレス格納エリアA−Vとベクタアドレス格納エリアB−Vとのアドレスの移動に関しては、図3乃至図5に示された方法が利用でき、コントロール信号CONT乃至CONT’によって、ベクタアドレス格納エリアA−Vとベクタアドレス格納エリアB−Vとのアドレスが移動される。
図11は、ユーザプログラムモード又はブートモードでのオンボード書き換え時におけるNMI(ノンマスカブル割り込み)の利用方法とその形成回路を説明するための図を示している。
本発明に従うマイクロコンピュータ30は、電圧維持手段110及びNMI信号生成手段112とともにプリント基板120に実装される。
上記電圧維持手段110は、Vcc電源(通常は、5V)が規定値以下、例えば4.5V以下に低下した場合、一定の時間(例えば、1ms程度)Vcc端子を4.5V以上に維持する機能を含む。さらに、マイクロコンピュータ30は、暴走して内部の状態を破壊することがないよう準備されたモード、例えば、システムクロックの発振を停止するソフトウェアスタンバイモードを設定する。この目的のため、上記電圧維持手段110は、例えば、大容量のコンデンサなどを利用して形成される。電圧維持手段110は、Vcc電源がさらに低下しても、例えば、0Vに低下しても、マイクロコンピュータ30の電源端子Vccの電位を、マイクロコンピュータ30がソフトウェアスタンバイモードを維持できる電圧(例えば、2.0V)に維持する。この目的のため、上記電圧維持手段110は、例えば、2次電池なども含ませて構成される。
NMI信号生成手段112は、Vcc電源(通常は、5V)が規定値以下、例えば4.5V以下に低下した場合、それを検出してNMIを生成する。NMI信号生成手段112は、マイクロコンピュータ30のNMI信号入力端子へ、5Vから0Vへ変化する立下がりエッジを生成し、NMIをアサートする。
フラッシュメモリ18のオンボード書き換えモード時(ユーザプログラムモード又はブートモード時)において、Vcc電源(通常は、5V)が規定値以下に低下した場合、フラッシュメモリ18のオンボード書き換えが実行できなくなる。そのため、上記に示されるように、Vcc電源(通常は、5V)が規定値以下に低下した事が検出され、NMIが発生されて、フラッシュメモリ18の書き換え作業が中断され、CPU12によってNMI処理ルーチンRBが実行されることになる。この場合、NMIがCPU12によって受け付けられるとき、CPU12の汎用レジスタ(R0−R15)やプログラムカウンタ(PC)等の内容は、特に制限されないが、外部メモリへスタックされる。
したがって、NMI処理ルーチンRBからの復帰時、前述のスタックポインタ(SP)の値に基づいて、NMI受付時の状態へ、汎用レジスタ(R0−R15)やプログラムカウンタ(PC)等の内容を復帰することができる利点がある。あるいは、スタックポインタ(SP)の値に基づいて、汎用レジスタ(R0−R15)やプログラムカウンタ(PC)等の内容を格納する外部メモリをアクセスし、その内容からフラッシュメモリ18の書き換え状況が解析できる等の利点がある。
図12は、フラッシュメモリ18のオンボード書き換えモード(ユーザプログラムモードの例)時、その開始から終了時点までに実行される書き換え処理フローを示している。
図12に示されるように、まず最初に、開始ステップS12として、フラッシュメモリ18の書き換え開始の指令がCPU12に対して発行される。CPU12は、必要があれば、書き換え作業エリアとされるべきアドレス領域の内容を待避するなどの前処理を実行する(ステップS13)。上記書き換え作業エリアは、例えば、内蔵RAM18のアドレス領域の一部、又は、外部メモリ拡張モードにおける外部RAMのアドレス領域の一部とされても良い。
次のステップS14として、書き換えルーチンが、例えば、CPU12によって、上記書き換え作業エリアに書き込まれる。上記書き換えルーチンは、書き込み制御プログラムやNMI処理ルーチンRBなどを含む。また、上記書き換えルーチンは、フラッシュメモリ18内に格納されている場合、或いは、外部からマイクロコンピュータ30へ供給する場合などがある。
次に、NMI処理ルーチンRBに対応するベクタアドレスNMIBが、例えば、CPU12によって、内蔵RAM13のベクタアドレス格納エリアB−Vへ書き込まれる(ステップS15)。そして、図8に示されたように、CPU12が、ベクタアドレス移動許可ビットVATE82をセット状態に設定する(ステップS16)。以上のような前処理が実行される。
その後、ステップS17において、CPU12は、書き換え作業エリアに書き込まれた上記書き換えルーチンを実行し、フラッシュメモリ18のプログラムデータの書き換えを実行する。フラッシュメモリ18に書き込まれるべきプログラムデータは、マイクロコンピュータ30の外部から供給される。書き換え処理(ステップS17)の完了後、以下の後処理がCPU12によって実行される。
すなわち、ステップS16で設定されたベクタアドレス移動許可ビットVATE82をリセット状態へ変更する(ステップS18)。すなわち、許可ビットVATE82がクリアされる。その後、CPU12は、必要があれば、書き換え作業エリアの内容を回復するなどの後処理を実行する(ステップS19)。すなわち、ステップS13で待避処理が行われた場合には、ステップS19でその回復処理が行われる。
そして、ステップ20において、フラッシュメモリ18の書き換え完了の通知又はリセットスタートが実行され、フラッシュメモリ18の書き換え処理が完了する。
次に内蔵フラッシュメモリ18の具体的構成が説明される。
図13及び図14にはフラッシュメモリ18のメモリセルの原理が示される。図13に例示的に示されたメモリセルは、2層ゲート構造の絶縁ゲート型電界効果トランジスタにより構成されている。図13において、1はP型シリコン基板、14は上記シリコン基板1に形成されたP型半導体領域、13はN型半導体領域、15は低濃度のN型半導体領域である。8はフローティングゲートであり、トンネル絶縁膜としての薄い酸化膜7(例えば厚さ10nm)を介して上記P型シリコン基板1上に形成されている。11は酸化膜9を介して上記フローティングゲート8の上に形成されたコントロールゲートである。ソースは13、15によって構成され、ドレインは13、14によって構成される。このメモリセルに記憶される情報は、実質的にしきい値電圧の変化としてトランジスタに保持される。以下、特に述べないかぎり、メモリセルにおいて、情報を記憶するトランジスタ(以下、記憶トランジスタと称する)がNチャンネル型の場合について述べる。
メモリセルへの情報の書込み動作は、例えばコントロールゲート11及びドレインに高圧を印加して、アバランシェ注入によりドレイン側からフローティングゲート8に電子を注入することで実現される。この書込み動作により記憶トランジスタは、図14に示されるように、そのコントロールゲート7からみたしきい値電圧が、書込み動作を行わなかった消去状態の記憶トランジスタに比べて高くなる。
一方、消去動作は、例えばソースに高圧を印加して、トンネル現象によりフローティングゲート8からソース側に電子を引き抜くことによって実現される。図14に示されるように、消去動作により記憶トランジスタはそのコントロールゲート11からみたしきい値電圧が低くされる。図14では、書込み並びに消去状態の何れにおいても記憶トランジスタのしきい値は正の電圧レベルにされる。すなわちワード線からコントロールゲート11に与えられるワード線選択レベルに対して、書込み状態のしきい値電圧は高くされ、消去状態のしきい値電圧は低くされる。双方のしきい値電圧とワード線選択レベルとがそのような関係を持つことによって、選択トランジスタを採用することなく1個のトランジスタでメモリセルを構成することができる。記憶情報を電気的に消去する場合においては、フローティングゲート8に蓄積された電子をソース電極に引く抜くことにより、記憶情報の消去が行われるため、比較的長い時間、消去動作を続けると、書込み動作の際にフローティングゲート8に注入した電子の量よりも多くの電子が引く抜かれることになる。そのため、電気的消去を比較的長い時間続けるような過消去を行うと、記憶トランジスタのしきい値電圧は例えば負のレベルになって、ワード線の非選択レベルにおいても選択されるような不都合を生ずる。尚、書込みも消去と同様にトンネル電流を利用して行うこともできる。
読み出し動作においては、上記メモリセルに対して弱い書込み、すなわち、フローティングゲート8に対して不所望なキャリアの注入が行われないように、ドレイン及びコントロールゲート11に印加される電圧が比較的低い値に制限される。例えば、1V程度の低電圧がドレイン10に印加されるとともに、コントロールゲート11に5V程度の低電圧が印加される。これらの印加電圧によって記憶トランジスタを流れるチャンネル電流の大小を検出することにより、メモリセルに記憶されている情報の“0”、“1”を判定することができる。
図15は前記記憶トランジスタを用いたメモリセルアレイの構成原理を示す。同図には代表的に4個の記憶トランジスタ(メモリセル)Q1乃至Q4が示される。X,Y方向にマトリクス配置されたメモリセルにおいて、同じ行に配置された記憶トランジスタQ1,Q2(Q3,Q4)のコントロールゲート(メモリセルの選択ゲート)は、それぞれ対応するワード線WL1(WL2)に接続され、同じ列に配置された記憶トランジスタQ1,Q3(Q2,Q4)のドレイン領域(メモリセルの入出力ノード)は、それぞれ対応するデータ線DL1,DL2に接続されている。上記記憶トランジスタQ1,Q3(Q2,Q4)のソース領域は、ソース線SL1(SL2)に結合される。
図16にはメモリセルに対する消去動作並びに書込み動作のための電圧条件の一例が示される。同図においてメモリ素子はメモリセルを意味し、ゲートはメモリセルの選択ゲートとしてのコントロールゲートを意味する。同図において負電圧方式の消去はコントロールゲートに例えば−10Vのような負電圧を印加することによって消去に必要な高電界を形成する。同図に例示される電圧条件から明らかなように、正電圧方式の消去にあっては少なくともソースが共通接続されたメモリセルに対して一括消去を行うことができる。したがって図15の構成において、ソース線SL1,SL2が接続されていれば、4個のメモリセルQ1乃至Q4は一括消去可能にされる。この場合、同一ソース線につながるメモリビットの数を変えることによりメモリブロックのサイズを任意に設定することができる。ソース線分割方式には図15に代表的に示されるようなデータ線を単位とする場合(共通ソース線をデータ線方向に延在させる)の他にワード線を単位とする場合(共通ソース線をワード線方向に延在させる)がある。一方、負電圧方式の消去にあっては、コントロールゲートが共通接続されたメモリセルに対して一括消去を行うことができる。
図17には一括消去可能なメモリブロックの記憶容量を相違させたフラッシュメモリ18の一例回路ブロック図が示される。
同図に示されるフラッシュメモリ18(以下FMRYとも記す)は、8ビットのデータ入出力端子D0〜D7を有し、各データ入出力端子毎にメモリマットARY0〜ARY7を備える。メモリマットARY0〜ARY7は、特に制限されないが、相対的に記憶容量の大きなメモリブロックLMBと相対的に記憶容量の小さなメモリブロックSMBとに2分割されている。図には代表的にメモリマットARY0の詳細が示されているが、その他のメモリマットARY1〜ARY7も同様に構成されている。各メモリブロックは、同一の記憶容量とされてもよい。
夫々のメモリマットARY0〜ARY7には前記図13で説明した2層ゲート構造の絶縁ゲート型電界効果トランジスタによって構成されたメモリセルMCがマトリクス配置されている。同図においてWL0〜WLnは全てのメモリマットARY0〜ARY7に共通のワード線である。同一行に配置されたメモリセルのコントロールゲートは、それぞれ対応するワード線に接続される。夫々のメモリマットARY0〜ARY7において、同一列に配置されたメモリセルMCのドレイン領域は、それぞれ対応するデータ線DL0〜DL7に接続されている。メモリブロックSMBを構成するメモリセルMCのソース領域はソース線SL1に共通接続され、メモリブロックLMBを構成するメモリセルMCのソース領域はソース線SL2に共通接続されている。
前記ソース線SL1,SL2には電圧出力回路VOUT1,VOUT2から消去に利用される高電圧Vppが供給される。電圧出力回路VOUT1,VOUT2の出力動作は、消去ブロック指定レジスタのビットB1,B2の値によって選択される。例えば消去ブロック指定レジスタのビットB1に”1”が設定されることによって各メモリマットARY0〜ARY7のメモリブロックSMBだけが一括消去可能にされる。消去ブロック指定レジスタのビットB2に”1”が設定された場合は、各メモリマットARY0〜ARY7のメモリブロックLMBだけが一括消去可能にされる。双方のビットB1,B2に”1”が設定されたときはフラッシュメモリ18の全体が一括消去可能にされる。
前記ワード線WL0〜WLnの選択は、ロウアドレスバッファXABUFF及びロウアドレスラッチXALATを介して取り込まれるロウアドレス信号AXをロウアドレスデコーダXADECが解読することによって行われる。ワードドライバWDRVはロウアドレスデコーダXADECから出力される選択信号に基づいてワード線を駆動する。データ読出し動作においてワードドライバWDRVは電圧選択回路VSELから供給される5Vのような電圧Vccと0Vのような接地電位とを電源として動作され、選択されるべきワード線を電圧Vccによって選択レベルに駆動し、非選択とされるべきワード線を接地電位のような非選択レベルに維持させる。データの書込み動作においてワードドライバWDRVは、電圧選択回路VSELから供給される12Vのような電圧Vppと0Vのような接地電位とを電源として動作され、選択されるべきワード線を12Vのような書込み用高電圧レベルに駆動する。データの消去動作においてワードドライバWDRVの出力は0Vのような低い電圧レベルにされる。
夫々のメモリマットARY0〜ARY7において前記データ線DL0〜DL7はカラム選択スイッチYS0〜YS7を介して共通データ線CDに共通接続される。カラム選択スイッチYS0〜YS7のスイッチ制御は、カラムアドレスバッファYABUFF及びカラムアドレスラッチYALATを介して取り込まれるカラムアドレス信号AYをカラムアドレスデコーダYADECが解読することによって行われる。カラムアドレスデコーダYADECの出力選択信号は全てのメモリマットARY0〜ARY7に共通に供給される。したがって、カラムアドレスデコーダYADECの出力選択信号のうちの何れか一つが選択レベルにされることにより、各メモリマットARY0〜ARY7において共通データ線CDには1本のデータ線が接続される。
メモリセルMCから共通データ線CDに読出されたデータは選択スイッチRSを介してセンスアンプSAMPに与えられ、ここで増幅されて、データ出力ラッチDOLATを介してデータ出力バッファDOBUFFから外部に出力される。前記選択スイッチRSは読出し動作に同期して選択レベルにされる制御信号φrによってオン状態にされる。外部から供給される書込みデータはデータ入力バッファDIBUFFを介してデータ入力ラッチ回路DILATに保持される。データ入力ラッチ回路DILATに保持されたデータが”0”のとき、書込み回路WRITは選択スイッチWSを介して共通データ線CDに書込み用の高電圧を供給する。この書込み用高電圧はカラムアドレス信号AYによって選択されたデータ線を通して、ロウアドレス信号AXでコントロールゲートに高電圧が印加されるメモリセルのドレインに供給され、これによって当該メモリセルが書込みされる。前記選択スイッチWSは書込み動作に同期して選択レベルにされる制御信号φwによってオン状態にされる。書込み消去の各種タイミングや電圧の選択制御は書込み消去制御回路WECONTが生成する。
図18には図1のマイクロコンピュータ30に内蔵されるフラッシュメモリ18(FMRY)の全体的なブロック図が示される。同図においてARYは前記図13で説明した2層ゲート構造の絶縁ゲート型電界効果トランジスタによって構成されたメモリセルをマトリクス配置したメモリアレイである。このメモリアレイARYは図17で説明した構成と同様に、メモリセルのコントロールゲートはそれぞれ対応するワード線に接続され、メモリセルのドレイン領域はそれぞれ対応するデータ線に接続され、メモリセルのソース領域はメモリブロック毎に共通のソース線に接続されているが、メモリブロックの分割態様は図17とは相違される。例えば、相対的にそれぞれの記憶容量が大きな7個の大メモリブロック(大ブロック)LMB0乃至LMB6と、相対的にそれぞれの記憶容量が小さな8個の小メモリブロック(小ブロック)SMB0乃至SMB7とに分割されている。大メモリブロックはプログラム格納領域又は大容量データ格納領域などに利用される。小メモリブロックは小容量データ格納領域などに利用される。
図18において、ALATはアドレス信号PAB0乃至PAB15のラッチ回路である。第1動作モード(PROMモード以外の動作モード)においてそのアドレス信号PAB0乃至PAB15は中央処理装置CPU12の出力アドレス信号に対応され、アドレスバス24から供給される。第2動作モード(PROMモード)では、アドレス信号PAB0乃至PAB15はPROMライタの出力アドレス信号に対応される。XADECはアドレスラッチALATを介して取り込まれるロウアドレス信号を解読するロウアドレスデコーダである。WDRVはロウアドレスデコーダXADECから出力される選択信号に基づいてワード線を駆動するワードドライバである。データ読出し動作においてワードドライバWDRVは5Vのような電圧でワード線を駆動し、データの書込み動作では12Vのような高電圧でワード線を駆動する。データの消去動作においてワードドライバWDRVの全ての出力は0Vのような低い電圧レベルにされる。YADECはアドレスラッチYALATを介して取り込まれるカラムアドレス信号を解読するカラムアドレスデコーダである。YSELはカラムアドレスデコーダYADECの出力選択信号に従ってデータ線を選択するカラム選択回路である。SAMPはデータ読出し動作においてカラム選択回路YSELで選択されたデータ線からの読出し信号を増幅するセンスアンプである。DOLATはセンスアンプSAMPの出力を保持するデータ出力ラッチである。DOBUFFはデータ出力ラッチDOLATが保持するデータを外部に出力するためのデータ出力バッファである。図においてPDB0乃至PDB7は下位8ビット(1バイト)データであり、図1のデータバス26に供給される。PDB8乃至PDB15は上位8ビット(1バイト)データであり、図1のデータバス25に供給される。この例に従えば出力データは最大2バイトとされる。DIBUFFは外部から供給される書込みデータを取り込むためのデータ入力バッファである。データ入力バッファDIBUFFから取り込まれたデータはデータ入力ラッチ回路DILATに保持される。データ入力ラッチ回路DILATに保持されたデータが”0”のとき、書込み回路WRITはカラム選択回路YSELで選択されたデータ線に書込み用高電圧を供給する。この書込み用高電圧はロウアドレス信号に従ってコントロールゲートに高電圧が印加されるメモリセルのドレインに供給され、これによって当該メモリセルが書込みされる。ERASECは指定されたメモリブロックのソース線に消去用高電圧を供給してメモリブロックの一括消去を行うための消去回路である。
FCONTは、フラッシュメモリFMRYにおけるデータ読出し動作のタイミング制御、及び書込み消去のための各種タイミングや電圧の選択制御などを行う制御回路である。この制御回路FCONTは、コントロールレジスタCREGを備える。
図19にはコントロールレジスタCREGの一例が示される。コントロールレジスタCREGは、それぞれ8ビットのプログラム/イレーズ制御レジスタPEREGと、消去ブロック指定レジスタMBREG1及びMBREG2によって構成される。プログラム/イレーズ制御レジスタPEREGにおいて、Vppは書換え用高電圧印加に応じて”1”にされる高電圧印加フラグである。Eビットは消去動作を指示するビットとされ、EVビットは消去におけるベリファイ動作の指示ビットとされる。Pビットは書込み動作(プログラム動作)の指示ビットとされ、PVビットは書込みにおけるベリファイ動作の指示ビットとされる。消去ブロック指定レジスタMBREG1及びMBREG2は、それぞれ7分割された大ブロックと8分割された小ブロックに含まれる何れのメモリブロックを消去するかを指定するレジスタであり、それらに含まれるビットは、特に制限されないが、1対1で対応されるメモリブロックの指定用ビットとされ、例えばビット”1”は対応メモリブロックの選択を意味し、ビット”0”は対応メモリブロックの非選択を意味する。例えば、消去ブロック指定レジスタMBREG2の第7ビットが”1”のときは、小メモリブロックSMB7の消去が指定される。
上記コントロールレジスタCREGは外部からリード・ライト可能にされている。制御回路FCONTは、そのコントロールレジスタCREGの設定内容を参照し、それにしたがって消去・書込みなどの制御を行う。外部においては、そのコントロールレジスタCREGの内容を書換えることによって、消去・書込み動作の状態を制御することができる。
図18において、制御回路FCONTには、制御信号としてFLM,MS−FLN,MS−MISN,M2RDN,M2WRN,MRDN,MWRN,IOWORDN,及びRSTが供給され、更に、上位1バイトのデータPDB8乃至PDB15と、アドレス信号PAB0乃至PAB15の所定ビットが与えらる。
制御信号FLMは、フラッシュメモリFMRYの動作モードを指定する信号であり、その”0”が第1動作モードを指定し、”1”が第2動作モードを指定する。この信号FLMは、例えば前記モード信号MD0乃至MD2に基づいて形成される。
制御信号MS−FLNは、フラッシュメモリFMRYの選択信号であり、その”0”が選択を指示し、”1”が非選択を指示する。第1動作モードでは中央処理装置(CPU)12がその制御信号MS−FLNを出力し、第2動作モードにおいてその制御信号MS−FLNは、PROMライタから供給されるチップ・イネーブル信号CE*に対応される。
制御信号MS−MISNはコントロールレジスタCREGの選択信号である。このとき、プログラム/イレーズ制御レジスタPEREGと消去ブロック指定レジスタMBREG1及びMBREG2の何れを選択するかは、アドレス信号PAB0乃至PAB15の所定ビットを参照して決定される。第1動作モードでは中央処理装置(CPU)12がその制御信号MS−MISNを出力する。第2動作モードでは、特に制限されないが、PROMライタが出力する最上位アドレスビットEA16がその制御信号MS−MISNとみなされる。
M2RDNはメモリリードストローブ信号、M2WRNはメモリライトストローブ信号、MRDNはコントロールレジスタCREGのリード信号、MWRNはコントロールレジスタCREGのライト信号である。第1動作モードでは中央処理装置(CPU)12がそれら制御信号を出力する。第2動作モードでは、特に制限されないが、PROMライタから供給されるライトイネーブル信号WE*が前記信号M2WRN,MWRNとみなされ、PROMライタから供給されるアウトプットイネーブル信号OE*が前記信号M2RDN,MRDNとみなされる。尚、メモリライトストローブ信号M2WRNは、メモリセルに書込むべきデータをデータ入力ラッチ回路DILATに書込むためのストローブ信号とみなされる。メモリセルへの実際の書込みは前記コントロールレジスタCREGのPビットをセットすることによって開始される。
IOWORDNはフラッシュメモリFMRYに対する8ビットリードアクセスと16ビットリードアクセスとの切換え信号とされる。第2動作モードにおいては当該制御信号IOWORDNは8ビットリードアクセスを指示する論理値に固定される。
RSTはフラッシュメモリFMRYのリセット信号である。この信号RSTによってフラッシュメモリFMRYがリセットされることにより、或は前記プログラム/イレーズ制御レジスタPEREGのVppフラグが”0”にされることにより、前記プログラム/イレーズ制御レジスタPEREGにおけるEV,PV,E,Pの各モード設定ビットがクリアされる。したがって、図7に示されるゲートG6の出力がリセット信号RSTとされることによって、制御レジスタPEREGの各ビットがクリアできる。
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、上記実施例ではフラッシュメモリの書込みはホットエレクトロンで行なわれることにしたが、トンネル効果により行うものであってもよい。また、上記実施例では内蔵ROM18としてフラッシュメモリを適用したが、EEPROMと称されるようなオンボード書込み可能とされる他の半導体メモリを適用することができる。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種データ処理装置に広く適用することができる。本発明は、少なくとも電気的に消去又は書込みが可能なプログラムメモリを含むことを条件に適用することができる。