(57)【要約】  フラッシュメモリには、特定のブロックの読み出しが禁止されるプロテクトエリアＰＡが設けられ、プログラムのワークエリアとして用いられるＲＡＭには、同じく特定のブロックの読み出しが禁止されるプロテクトエリアＰＡ１が設けられている。バスステートコントローラ３は、プログラムカウンタの値とアドレス信号の値とを比較して、フラッシュメモリではプロテクトエリアＰＡ以外の読み出しを禁止し、ＲＡＭでは、プロテクトエリアＰＡ１のデータをフラッシュメモリのプロテクトエリアＰＡからの読み出し以外を禁止するように制御する。たとえば、ユーザがアクセス可能なユーザアクセスエリアからプロテクトエリアＰＡのデータを読み出す場合には、バスステートコントローラ３から、Ｈ’ＦＦＦＦなどの無意味なデータがデータバスを介して出力される。【特許請求の範囲】
【請求項１】
複数の不揮発性メモリセルを有するメモリアレイ部と、前記不揮発性メモリセルに情報を格納する書き込み動作、前記不揮発性メモリセルに格納した情報を読み出す読み出し動作、前記不揮発性メモリセルに格納した情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性記憶部と、前記不揮発性記憶部に格納されたプログラムのワークエリアとして用いられる揮発性記憶部と、所定の処理を実行し、前記不揮発性記憶部に動作指示を行うことが可能である中央処理装置と、前記不揮発性記憶部、および前記揮発性記憶部の読み出し動作を制御するプロテクト動作制御部とを有した半導体集積回路装置であって、
前記メモリアレイ部は、前記プロテクト動作制御部の制御により格納された情報の読み出し、および書き込みが禁止される第１のプロテクトメモリ領域を有し、
前記揮発性記憶部は、前記プロテクト動作制御部の制御により前記メモリアレイ部の第１のプロテクトメモリ領域以外からの読み出しが禁止される第２のプロテクトメモリ領域を有し、
前記不揮発性記憶部の第１のプロテクトメモリ領域に格納されたプログラムのワークエリアとして揮発性記憶部の第２のプロテクトメモリ領域を用いることを特徴とする半導体集積回路装置。
【請求項２】
複数の不揮発性メモリセルを有するメモリアレイ部と、前記不揮発性メモリセルに情報を格納する書き込み動作、前記不揮発性メモリセルに格納した情報を読み出す読み出し動作、前記不揮発性メモリセルに格納した情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性記憶部と、揮発性記憶部と、所定の処理を実行し、前記不揮発性記憶部に動作指示を行うことが可能である中央処理装置と、前記不揮発性記憶部、および前記揮発性記憶部の読み出し動作を制御するプロテクト動作制御部とを有した半導体集積回路装置であって、
前記メモリアレイ部は、前記プロテクト動作制御部の制御により格納された情報の読み出し、および書き込みが禁止される第１のプロテクトメモリ領域を有し、
前記揮発性記憶部は、前記プロテクト動作制御部の制御により前記メモリアレイ部の第１のプロテクトメモリ領域以外からの読み出し、および書き込みが禁止される第２のプロテクトメモリ領域を有したことを特徴とする半導体集積回路装置。
【請求項３】
請求項１または２記載の半導体集積回路装置において、
前記プロテクト動作制御部は、
前記中央処理装置から出力されるアドレス信号とプログラムカウンタとの値を比較して前記第１のプロテクトメモリ領域であるか否かを判別することを特徴とする半導体集積回路装置。
【請求項４】
請求項３記載の半導体集積回路装置において、
前記プロテクト動作制御部は、
前記中央処理装置から出力されるアドレス信号とプログラムカウンタとの値を比較し、それらアドレス信号、およびプログラムカウンタの値がいずれも前記第１のプロテクトメモリ領域内のアドレス値である場合のみ、前記第１のプロテクトメモリ領域の読み出しを許可することを特徴とする半導体集積回路装置。
【請求項５】
請求項１〜４のいずれか１項に記載の半導体集積回路装置において、
前記プロテクト動作制御部は、
前記中央処理装置から出力されるアドレス信号とプログラムカウンタとの値を比較して前記第２のプロテクトメモリ領域であるか否かを判別することを特徴とする半導体集積回路装置。
【請求項６】
請求項５記載の半導体集積回路装置において、
前記プロテクト動作制御部は、
前記中央処理装置から出力されるアドレス信号とプログラムカウンタとの値を比較し、プログラムカウンタの値が前記第１のプロテクトメモリ領域内にあり、かつアドレス信号が前記第２のプロテクトメモリ領域内のアドレス値である場合のみ、前記第２のプロテクトメモリ領域の読み出しを許可することを特徴とする半導体集積回路装置。
【請求項７】
請求項１〜６のいずれか１項に記載の半導体集積回路装置において、
前記第１のプロテクトメモリ領域における消去を禁止する消去禁止制御部を備えたことを特徴とする半導体集積回路装置。
【請求項８】
請求項７記載の半導体集積回路装置において、
前記消去禁止制御部は、
予め設定されたキーコード信号を出力するキーコード発生回路と、
前記メモリアレイ部の消去動作が発生した際に、前記キーコード発生回路が生成したキーコード信号と、前記第１のプロテクトメモリ領域に格納されたキーコードとを比較し、それらキーコードが一致した際に前記第１のプロテクトメモリ領域における消去を禁止する消去制御回路とを備えたことを特徴とする半導体集積回路装置。
【請求項９】
請求項１〜８のいずれか１項に記載の半導体集積回路装置において、
前記第１のプロテクトメモリ領域における書き換えを禁止する書き換え禁止制御部を備えたことを特徴とする半導体集積回路装置。
【請求項１０】
請求項９記載の半導体集積回路装置において、
前記書き換え禁止制御部は、
予め設定されたキーコード信号を出力するキーコード発生回路と、
書き換え先アドレス信号が前記第１のプロテクトメモリ領域内か否かを判定するアドレス判定部と、
前記キーコード発生回路が生成したキーコード信号と前記第１のプロテクトメモリ領域に格納されたキーコードとを比較し、それらキーコードが一致した際に一致信号を出力するキーコード判定部と、
前記メモリアレイ部の書き換え動作が発生した際に、書き換え先アドレス信号が前記第１のプロテクトメモリ領域内であり、かつキーコードが一致した場合に前記第１のプロテクトメモリ領域の書き換えを禁止する書き換え禁止信号を出力する書き換え制御回路とを備えたことを特徴とする半導体集積回路装置。
【請求項１１】
複数の不揮発性メモリセルを有するメモリアレイ部と、前記不揮発性メモリセルに情報を格納する書き込み動作、前記不揮発性メモリセルに格納した情報を読み出す読み出し動作、前記不揮発性メモリセルに格納した情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置に格納されたプログラムのワークエリアとして用いられる揮発性半導体記憶装置と、
所定の処理を実行し、前記不揮発性半導体記憶装置に動作指示を行うことが可能である中央処理装置と前記不揮発性半導体記憶装置、および前記揮発性半導体記憶装置の読み出し動作を制御するプロテクト動作制御部とを備えた半導体集積回路装置とを有した電子システムであって、
前記メモリアレイ部は、前記プロテクト動作制御部の制御により格納された情報の読み出しが禁止される第１のプロテクトメモリ領域を有し、
前記揮発性半導体記憶装置は、前記プロテクト動作制御部の制御により前記メモリアレイ部の第１のプロテクトメモリ領域以外からの読み出しが禁止される第２のプロテクトメモリ領域を有し、
前記不揮発性半導体記憶装置に格納されたプログラムのワークエリアとして前記第２のプロテクトメモリ領域を用いることを特徴とする電子システム。
【請求項１２】
請求項１１記載の電子システムにおいて、
前記プロテクト動作制御部は、
前記中央処理装置から出力されるアドレス信号とプログラムカウンタとの値を比較して前記第１、および第２のプロテクトメモリ領域であるか否かを判別することを特徴とする電子システム。
【請求項１３】
請求項１２記載の電子システムにおいて、
前記プロテクト動作制御部は、
前記中央処理装置から出力されるアドレス信号とプログラムカウンタとの値を比較し、それらアドレス信号、およびプログラムカウンタの値がいずれも前記第１のプロテクトメモリ領域内のアドレス値である場合に前記第１のプロテクトメモリ領域の読み出しを許可し、プログラムカウンタの値が前記第１のプロテクトメモリ領域内にあり、かつアドレス信号が前記第２のプロテクトメモリ領域内のアドレス値である場合に前記第２のプロテクトメモリ領域の読み出しを許可することを特徴とする電子システム。
【請求項１４】
請求項１０〜１３のいずれか１項に記載の電子システムにおいて、
前記第１のプロテクトメモリ領域における消去を禁止する消去禁止制御部を備えたことを特徴とする電子システム。
【請求項１５】
請求項１０〜１４のいずれか１項に記載の電子システムにおいて、
前記第１のプロテクトメモリ領域における書き換えを禁止する書き換え禁止制御部を備えたことを特徴とする電子システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリにおけるデータ保護技術に関し、特に、不揮発性半導体メモリを内蔵した半導体集積回路装置におけるプログラムのコピー、書き換えの防止に適用して有効な技術に関するものである。
【背景技術】
【０００２】
近年、電子機器の開発・改善の期間短縮を図るため、制御用のプログラムやデータの書き換えが容易な不揮発性半導体メモリを内蔵した半導体集積回路装置、いわゆるフラッシュメモリ内蔵マイクロコンピュータに対するニーズが高まっている。【０００３】
このフラッシュメモリ内蔵マイクロコンピュータには、機密保持のためフラッシュメモリに格納されたアプリケーションプログラムなどの書き換えなどを禁止するプロテクト機能を有するものがある。【０００４】
この種の不揮発性半導体メモリに格納されたデータやプログラムなどの保護機能としては、たとえば、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）において、プログラマが設定した保護ブロックにプログラムを格納した後、該ＥＰＲＯＭ内の保護レジスタの指定ビットを設定することによって保護エリア外からの読み出し／書き込みを不可とする技術がある（たとえば、特許文献１参照）。
【特許文献１】特開２０００−７６１３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、上記のようなフラッシュメモリ内蔵のマイクロコンピュータにおけるプロテクト技術では、次のような問題点があることが本発明者により見い出された。【０００６】
フラッシュメモリのプロテクト機能を有効にした場合には、第三者がアプリケーションプログラムなどを読み出すことはできないが、該フラッシュメモリのすべてメモリ領域（ブロック）にプロテクトがかかってしまうことになるので、ユーザデータなどの書き換えもできなくなってしまうことになる。【０００７】
また、フラッシュメモリは、ブートモードを起動させることによって、電子システムなどのプリント配線基板に実装した状態でアプリケーションプログラムなどの書き換えを容易に行うことができ、第三者によって該アプリケーションプログラムの読み出しや書き換えなどが行われてしまう恐れがある。【０００８】
さらに、フラッシュメモリにプロテクトをかけた状態であっても、マイクロコンピュータに設けられたＣＰＵのワークエリアとして用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の内容を読み出し、どのような命令を実行しているかなどを解析することによってアプリケーションプログラムの内容が推測されてしまう恐れがある。【０００９】
本発明の目的は、不揮発性半導体メモリの特定のメモリ領域における読み出しを禁止することにより、第三者によるプログラムの不正コピーや改ざんなどを確実に防止することのできる技術を提供することにある。【００１０】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。【００１２】
本発明は、複数の不揮発性メモリセルを有するメモリアレイ部と、該不揮発性メモリセルに情報を格納する書き込み動作、該不揮発性メモリセルに格納した情報を読み出す読み出し動作、該不揮発性メモリセルに格納した情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性記憶部と、該不揮発性記憶部に格納されたプログラムのワークエリアとして用いられる揮発性記憶部と、所定の処理を実行し、該不揮発性記憶部に動作指示を行うことが可能である中央処理装置と、不揮発性記憶部、および揮発性記憶部の読み出し動作を制御するプロテクト動作制御部とを有した半導体集積回路装置であって、メモリアレイ部は、プロテクト動作制御部の制御により格納された情報の読み出しおよび書き込みが禁止される第１のプロテクトメモリ領域を有し、揮発性記憶部は、プロテクト動作制御部の制御によりメモリアレイ部の第１のプロテクトメモリ領域以外からの読み出しおよび書き込みが禁止される第２のプロテクトメモリ領域を有し、不揮発性記憶部の第１のプロテクトメモリ領域に格納されたプログラムのワークエリアとして揮発性記憶部の第２のプロテクトメモリ領域を用いることを特徴とする半導体集積回路装置。【００１３】
また、本発明の半導体集積回路装置は、複数の不揮発性メモリセルを有するメモリアレイ部と、該不揮発性メモリセルに情報を格納する書き込み動作、該不揮発性メモリセルに格納した情報を読み出す読み出し動作、該不揮発性メモリセルに格納した情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性記憶部と、揮発性記憶部と、所定の処理を実行し、該不揮発性記憶部に動作指示を行うことが可能である中央処理装置と、不揮発性記憶部、および揮発性記憶部の読み出し動作を制御するプロテクト動作制御部とを有した半導体集積回路装置であって、メモリアレイ部は、プロテクト動作制御部の制御により格納された情報の読み出しおよび書き込みが禁止される第１のプロテクトメモリ領域を有し、揮発性記憶部は、プロテクト動作制御部の制御によりメモリアレイ部の第１のプロテクトメモリ領域以外からの読み出しおよび書き込みが禁止される第２のプロテクトメモリ領域を有したものである。【００１４】
また、本願のその他の発明の概要を簡単に示す。【００１５】
本発明は、複数の不揮発性メモリセルを有するメモリアレイ部と、該不揮発性メモリセルに情報を格納する書き込み動作、該不揮発性メモリセルに格納した情報を読み出す読み出し動作、該不揮発性メモリセルに格納した情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性半導体記憶装置と、該不揮発性半導体記憶装置に格納されたプログラムのワークエリアとして用いられる揮発性半導体記憶装置と、所定の処理を実行し、不揮発性半導体記憶装置に動作指示を行うことが可能である中央処理装置と不揮発性半導体記憶装置、および揮発性半導体記憶装置の読み出し動作を制御するプロテクト動作制御部とを備えた半導体集積回路装置とを有した電子システムであって、メモリアレイ部は、プロテクト動作制御部の制御により格納された情報の読み出しが禁止される第１のプロテクトメモリ領域を有し、揮発性半導体記憶装置は、プロテクト動作制御部の制御によりメモリアレイ部の第１のプロテクトメモリ領域以外からの読み出しが禁止される第２のプロテクトメモリ領域を有し、不揮発性半導体記憶装置に格納されたプログラムのワークエリアとして第２のプロテクトメモリ領域を用いるものである。
【発明の効果】
【００１６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。【００１７】
（１）第１のプロテクトメモリ領域の読み出しや書き換えなどを制限することができるので、プログラムの不正なコピーや改ざんなどを防止することができ、セキュリティを向上させることができる。【００１８】
（２）また、第２のプロテクトメモリ領域の読み出しを制限することにより、プログラムの推測などを困難にすることが可能となり、プログラムの不正なコピーや改ざんなどをより効果的に防止することができる。【００１９】
（３）上記（１）、（２）により、半導体集積回路装置やそれを用いた電子システムなどの信頼性を大幅に向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態１による半導体集積回路装置のブロック図である。
【図２】図１の半導体集積回路装置に設けられたフラッシュメモリにおけるメモリマップの一例を示した説明図である。
【図３】図１の半導体集積回路装置に設けられたＲＡＭにおけるメモリマップの一例を示した説明図である。
【図４】図１の半導体集積回路装置に設けられたバスステートコントローラの一部構成例を示した説明図である。
【図５】図１の半導体集積回路装置に設けられたフラッシュメモリにおける消去禁止制御回路、および書き換え禁止制御回路のブロック図である。
【図６】図１の半導体集積回路装置に設けられたフラッシュメモリのユーザアクセスエリアにおける読み出し制御動作例を示すタイミングチャートである。
【図７】図１の半導体集積回路装置に設けられたフラッシュメモリのユーザアクセスエリアからプロテクトエリアを読み出す場合の制御動作例を示すタイミングチャートである。
【図８】図１の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアからプロテクトエリアを読み出す場合の制御動作例を示すタイミングチャートである。
【図９】図１の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアからＲＡＭのプロテクトエリアのデータを読み出す場合の制御動作例を示すタイミングチャートである。
【図１０】図１の半導体集積回路装置に設けられたＲＡＭの処理例を示した説明図である。
【図１１】図１の半導体集積回路装置における第一ユーザによるキーコードの設定例を示すフローチャートである。
【図１２】図１の半導体集積回路装置におけるエンドユーザによるキーコードの設定例を示すフローチャートである。
【図１３】本発明の実施の形態２による半導体集積回路装置のブロック図である。
【図１４】図１３の半導体集積回路装置におけるリセットシーケンスを示した説明図である。
【図１５】図１４のリセットシーケンスにおけるプロテクト処理制御部の設定処理を示すフローチャートである。
【図１６】図１３の半導体集積回路装置に設けられたフラッシュメモリにおけるプロテクトエリアの任意設定処理を示すフローチャートである。
【図１７】図１６におけるフラッシュメモリのメモリマップの補足説明図である。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。【００２２】
（実施の形態１）
図１は、本発明の実施の形態１による半導体集積回路装置のブロック図、図２は、図１の半導体集積回路装置に設けられたフラッシュメモリにおけるメモリマップの一例を示した説明図、図３は、図１の半導体集積回路装置に設けられたＲＡＭにおけるメモリマップの一例を示した説明図、図４は、図１の半導体集積回路装置に設けられたバスステートコントローラの一部構成例を示した説明図、図５は、図１の半導体集積回路装置に設けられたフラッシュメモリにおける消去禁止制御回路、および書き換え禁止制御回路のブロック図、図６は、図１の半導体集積回路装置に設けられたフラッシュメモリのユーザアクセスエリアにおける読み出し制御動作例を示すタイミングチャート、図７は、図１の半導体集積回路装置に設けられたフラッシュメモリのユーザアクセスエリアからプロテクトエリアを読み出す場合の制御動作例を示すタイミングチャート、図８は、図１の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアからプロテクトエリアを読み出す場合の制御動作例を示すタイミングチャート、図９は、図１の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアからＲＡＭのプロテクトエリアのデータを読み出す場合の制御動作例を示すタイミングチャート、図１０は、図１の半導体集積回路装置に設けられたＲＡＭの処理例を示した説明図、図１１は、図１の半導体集積回路装置における第一ユーザによるキーコードの設定例を示すフローチャート、図１２は、図１の半導体集積回路装置におけるエンドユーザによるキーコードの設定例を示すフローチャートである。【００２３】
本実施の形態１において、半導体集積回路装置１は、図１に示すように、ＣＰＵ（中央処理装置）２、バスステートコントローラ（プロテクト動作制御部）３、ＲＡＭ（揮発性記憶部）４、ＳＣＩ（Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）５などを含む周辺回路６、およびフラッシュメモリ７に例示される不揮発性半導体メモリなどから構成されている。【００２４】
ＣＰＵ２は、フラッシュメモリ（不揮発性記憶部）７に格納された命令を読み出し、所定の処理を行う。バスステートコントローラ３は、アドレスバスやデータバスなどを含む内部バスＢにおける信号の転送を制御するとともに、該内部バスＢの状態を制御する。ＲＡＭ（揮発性メモリ）４は、随時読み出し／書き込みが可能なメモリであり、ＣＰＵ２のワークエリアとして用いられる。【００２５】
ＳＣＩ５は、外部接続されるデバイスとシリアル通信を行うインタフェースである。周辺回路６は、そのほかに、たとえば、タイマ、ＷＤＴ（Ｗａｔｃｈ  Ｄｏｇ  Ｔｉｍｅｒ）、ＴＰＵ（Ｔｉｍｅｒ  Ｐｕｌｓｅ  Ｕｎｉｔ）、Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）変換器、およびＤ／Ａ（Ｄｉｇｉｔａｌ／Ａｎａｌｏｇ）変換器などから構成されている。【００２６】
タイマは、たとえば、８ビットのカウンタをベースとしたタイマである。ＷＤＴは、半導体集積回路装置１の暴走などの監視を行う。ＴＰＵは、ＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）波形を出力することのできるタイマである。Ａ／Ｄ変換器は、アナログ信号をデジタル信号に変換して出力する。Ｄ／Ａ変換器は、デジタル信号をアナログ信号に変換して出力する。【００２７】
フラッシュメモリ７は、電気的にデータの書き換え／消去が可能な不揮発性半導体メモリであり、ＣＰＵ２によって実行されるプログラム命令を含む制御プログラムなどを格納する。フラッシュメモリ７は、ＣＰＵ２からの指示に応じてデータの書き込み／読み出しや消去などを行う。【００２８】
これらＣＰＵ２、バスステートコントローラ３、ＲＡＭ４、ＳＣＩ５などを含む周辺回路６、およびフラッシュメモリ７は、内部バスＢにより相互に接続されている。【００２９】
また、ＣＰＵ２からは、次に読み出される命令のアドレスを示すプログラムカウンタの値、書き込みを許可するライト信号、ならびに読み出しを許可するリード信号がバスステートコントローラ３に入力されるように接続されている。【００３０】
ＲＡＭ４には、バスステートコントローラ３から出力されたＲＡＭセレクト信号Ｓ１、ライト信号、およびリード信号がそれぞれ入力されるように接続されている。ＲＡＭセレクト信号Ｓ１は、ＲＡＭ４を選択する信号である。ライト信号は、ＲＡＭ４のライトを許可する信号であり、リード信号はＲＡＭ４のリードを許可する信号である。【００３１】
ＳＣＩ５には、シリアルセレクト信号、ライト信号、ならびにリード信号がそれぞれ入力されるように接続されている。シリアルセレクト信号は、ＳＣＩ５を選択する信号である。ライト信号は、ＳＣＩ５のライトを許可する信号であり、リード信号はＳＣＩ５のリードを許可する信号である。【００３２】
フラッシュメモリ７には、フラッシュメモリセレクト信号、ライト信号、およびリード信号がそれぞれ入力されるように接続されている。フラッシュメモリセレクト信号は、フラッシュメモリ７を選択する信号である。ライト信号は、フラッシュメモリ７のライトを許可する信号であり、リード信号は該フラッシュメモリ７のリードを許可する信号である。【００３３】
フラッシュメモリ７は、メモリマット（メモリアレイ部）７ａ、および制御回路（制御部）７ｂから構成されている。【００３４】
メモリマット７ａは、記憶の最小単位であるメモリセルが規則正しくアレイ状に並べられており、アドレスバッファ、行デコーダ、列デコーダ、およびセンスアンプなどの周辺回路を含んでいる。制御回路７ｂは、ＣＰＵ２から入力される各種制御用信号を一時的に格納し、動作ロジックの制御を行う。【００３５】
図２は、フラッシュメモリ７のメモリマット７ａにおけるメモリマップの一例を示した説明図である。【００３６】
図示するように、メモリマット７ａ、ユーザアクセスエリアＵＡとプロテクトエリア（第１のプロテクトメモリ領域）ＰＡとから構成されている。ユーザアクセスエリアＵＡは、ユーザがアクセスできる複数の領域（ブロック）から構成されている。また、プロテクトエリアＰＡは、プログラムやデータなどが格納された領域（ブロック）であり、これらプログラムやデータなどの読み出しが制限される。プロテクトエリアＰＡは一つの連続したアドレス領域のみに限られず、例えば、複数の領域に配置されていてもよい。【００３７】
図３は、ＲＡＭ４におけるメモリマップの一例を示した説明図である。【００３８】
ＲＡＭ４においても同様に、ユーザアクセスエリアＵＡ１とプロテクトエリア（第２のプロテクトメモリ領域）ＰＡ１とから構成されている。ユーザアクセスエリアＵＡ１は、フラッシュメモリ７などのデータを展開する領域であり、プロテクトエリアＰＡ１は、フラッシュメモリ７のプロテクトエリアＰＡ（第１のプロテクトメモリ領域）に格納されたプログラムのワークエリアとして用いられる領域である。【００３９】
メモリマット７ａのプロテクトエリアＰＡに格納されているプログラムやデータは、該プロテクトエリアＰＡ内のプログラムによって読み出すことは可能となっているが、該メモリマット７ａのユーザアクセスエリアＵＡやＲＡＭ４のユーザアクセスエリアＵＡ１やプロテクトエリアＰＡ１に格納されたプログラムからの読み出しは不可となっている。【００４０】
また、ＲＡＭ４のプロテクトエリアＰＡ１に格納されているデータなどは、メモリマット７ａのプロテクトエリアＰＡから読み出すことは可能であるが、そのほかのエリア（メモリマット７ａのユーザアクセスエリアＵＡ、およびＲＡＭ４のユーザアクセスエリアＵＡ、プロテクトエリアＰＡ１）からの読み出しは不可となっている。【００４１】
さらに、フラッシュメモリ７は、後述するキーコードエリアＫＡ（図５）に所定のキーコードを設定するまでは、フラッシュメモリ７のプロテクトエリアＰＡにプログラムやデータなどをＲＡＭ４のユーザアクセスエリアＵＡ１から書き換え／消去することが可能となっている。所定のキーコードを設定するまでは、フラッシュメモリ７のプロテクトエリアＰＡやユーザアクセスエリアＵＡやユーザアクセスエリアＵＡ１、何れの領域からもそれぞれの領域に対してアクセスが可能となる。【００４２】
キーコードが設定された場合には、フラッシュメモリ７のプロテクトエリアＰＡを書き換え／消去することが不可となる。【００４３】
ＲＡＭ４のプロテクトエリアＰＡ１に格納されているデータなどは、フラッシュメモリ７のプロテクトエリアＰＡから書き換え／消去することが可能となっているが、そのほかのエリア（フラッシュメモリ７のユーザアクセスエリアＵＡ、ＲＡＭ４のユーザアクセスエリアＵＡ１、プロテクトエリアＰＡ１）からの書き換え／消去は不可となっている。更に、キーコードの設定有無に関わらずＲＡＭのプロテクトエリアＰＡ１は、プロテクト動作制御部の制御によってフラッシュメモリ７のプロテクトエリアＰＡ以外からの書き換え／消去が禁止される。【００４４】
また、フラッシュメモリ７において、読み出しが禁止されているプロテクトエリアＰＡのプログラムやデータなどをユーザアクセスエリアＵＡから読み出した場合には、たとえば、常にＨ’ＦＦのデータが読み出される。【００４５】
ここでは、フラッシュメモリ７に書き込まれている初期値のデータにあわせてＨ’ＦＦとしたが、この場合に読み出されるデータは、ハイインピーダンス状態（Ｈｉ−Ｚ）以外であればよく、たとえば、Ｈ’００や前値保持などの無意味なデータ、ユーザが設定した任意の値などであってもよい。【００４６】
同様に、ＲＡＭ４において、読み出しが禁止されているプロテクトエリアＰＡ１のプログラムやデータなどをユーザアクセスエリアＵＡ１から読み出した場合には、たとえば、常にＨ’００のデータが読み出される。【００４７】
ここでも、ＲＡＭ４のＮＯＰ命令にあわせてＨ‘００としたが、読み出されるデータは、ハイインピーダンス状態（Ｈｉ−Ｚ）以外であればよく、たとえば、Ｈ’ＦＦや前値保持などの無意味なデータ、ユーザが設定した任意の値などであってもよい。【００４８】
図４は、バスステートコントローラ３の一部構成例を示した説明図である。【００４９】
バスステートコントローラ３は、図示するように、セレクタ８〜１１、否定論理和回路１２，１３、およびドライバ１４，１５などから構成されている。【００５０】
セレクタ８〜１１の一方の入力部には、ＣＰＵ２（図１）から出力されるアドレス信号が入力されるようにそれぞれ接続されており、該セレクタ８〜１１の他方の入力部には、ＣＰＵ２から出力されるプログラムカウンタ値（ＰＣ値）が入力されるようにそれぞれ接続されている。【００５１】
セレクタ８は、アドレス信号が、フラッシュメモリ７のユーザアクセスエリアＵＡ（図２）を示すアドレスＨ’００＿００００〜Ｈ’００＿ＦＦＦＦ、またはアドレスＨ’０２＿００００〜Ｈ’０３＿ＦＦＦＦ、あるいはフラッシュメモリ７のプロテクトエリアＰＡ（図２）を示すアドレスＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦ、かつプログラムカウンタの値が、Ｈ’０１＿００００〜０１＿ＦＦＦＦとなった場合にフラッシュメモリセレクト信号がアクティブとなる’０’（Ｌｏレベル信号）を出力し、そのほかの場合には、該フラッシュメモリセレクト信号がインアクティブとなる’１’（Ｈｉレベル信号）を出力する。つまり、ＣＰＵ２が出力するアドレス値がフラッシュメモリ７のユーザアクセスエリアＵＡを示す場合はプログラムカウンタ値によらずアクセスが可能である。更に、アドレス値がフラッシュメモリ７のプロテクトエリアＰＡを示し、かつプログラムカウンタの値もフラッシュメモリ７のプロテクトエリアＰＡを示す場合、フラッシュメモリ７はアクセス可能な状態、つまりセレクト信号がアクティブ状態となる。【００５２】
セレクタ９は、アドレス信号が、ＲＡＭ４のユーザアクセスエリアＵＡ１（図３）を示すアドレスＨ’ＦＦ＿Ｄ８００〜Ｈ’ＦＦ＿ＥＦＦＦ、またはＲＡＭ４のプロテクトエリアＰＡ１（図３）を示すアドレスＨ’ＦＦ＿Ｄ０００〜Ｈ’ＦＦ＿Ｄ７ＦＦ、かつプログラムカウンタの値が、Ｈ’０１＿００００〜０１＿ＦＦＦＦ（フラッシュメモリ７のプロテクトエリアＰＡを示すアドレス）となった場合にＲＡＭセレクト信号がアクティブとなる’０’（Ｌｏレベル信号）を出力し、そのほかの場合には、該ＲＡＭセレクト信号がインアクティブとなる’１’（Ｈｉレベル信号）を出力する。つまり、ＣＰＵ２が出力するアドレス値がＲＡＭ４のユーザアクセスエリアＵＡ１を示す場合はプログラムカウンタ値によらずアクセスが可能である。更に、プログラムカウンタ値がフラッシュメモリ７のプロテクトエリアＰＡを示し、アドレス値がＲＡＭ４のプロテクトエリアＰＡ１を示す場合は、ＲＡＭ４はアクセス可能な状態となる。【００５３】
セレクタ１０は、アドレス信号が、フラッシュメモリ７のプロテクトエリアＰＡを示すアドレスＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦ、かつプログラムカウンタの値がＨ’０１＿００００〜０１＿ＦＦＦＦ以外となった場合に、’０’の信号を出力し、アドレスＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦ、かつプログラムカウンタの値がＨ’０１＿００００〜０１＿ＦＦＦＦの場合には、’１’の信号を出力する。【００５４】
セレクタ１１は、アドレス信号が、ＲＡＭ４のプロテクトエリアＰＡ１を示すアドレスＨ’ＦＦ＿Ｄ０００〜Ｈ’ＦＦ＿Ｄ７ＦＦ、かつプログラムカウンタの値がＨ’０１＿００００〜０１＿ＦＦＦＦ以外となった場合に、’０’の信号を出力し、アドレス値がＨ’ＦＦ＿Ｄ０００〜Ｈ’ＦＦ＿Ｄ７ＦＦ、かつプログラムカウンタの値がＨ’０１＿００００〜０１＿ＦＦＦＦの場合には、’１’の信号を出力する。【００５５】
このように、フラッシュメモリ７のプロテクトエリアＰＡをリード／ライトする際のフラッシュメモリ７のセレクト条件としては、プログラムカウンタの値とアドレス信号の値とが、いずれもフラッシュメモリ７のプロテクトエリアＰＡに一致する場合にのみ、フラッシュメモリセレクト信号が有効になる。上記一致する場合以外はフラッシュメモリセレクト信号は無効となる。【００５６】
ＲＡＭ４においても、該ＲＡＭ４のプロテクトエリアＰＡ１をリード／ライトする場合のＲＡＭ４のセレクト条件としては、プログラムカウンタの値がフラッシュメモリ７のプロテクトエリアＰＡで、かつアドレス値がＲＡＭ４のプロテクトエリアＰＡ１である場合に限ってＲＡＭセレクト信号が有効となる。上記の場合以外にはＲＡＭセレクト信号は無効となる。【００５７】
否定論理和回路１２は、セレクタ１０から出力される信号とリード信号との否定論理和をとり、ドライバ１４の制御部に出力する。否定論理和回路１２は、アドレス信号が、フラッシュメモリ７のプロテクトエリアＰＡを示すアドレスＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦ、かつプログラムカウンタの値がＨ’０１＿００００〜０１＿ＦＦＦＦ以外となり、かつアクティブなリード信号（’０’）が入力された際にドライバ１４からフラッシュメモリ７の初期値であるＨ’ＦＦＦＦが出力されるように制御信号を出力する。上記制御に従い、内部バスＢのデータ信号にはＨ‘ＦＦＦＦが出力される。ここで、出力される信号の値はＨ’ＦＦＦＦに限られず、出力値を任意に設定することも可能である。つまりＣＰＵ２が出力するアドレス信号に従ったフラッシュメモリ７からの読み出しデータでない限り、どのような値が出力可能な構成であってもよい。【００５８】
否定論理和回路１３は、セレクタ１１から出力される信号とリード信号との否定論理和をとりドライバ１５の制御部に出力する。否定論理和回路１３は、アドレス信号が、ＲＡＭ４のプロテクトエリアＰＡ１を示すアドレスＨ’ＦＦ＿Ｄ０００〜Ｈ’ＦＦ＿Ｄ７ＦＦ、かつプログラムカウンタの値がＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦ以外となり、かつアクティブなリード信号（’０’）が入力された際にドライバ１５からＲＡＭ４のＮＯＰ命令にあわせた値であるＨ’００００が出力されるように制御信号を出力する。上記制御に従い、内部バスＢのデータ信号にはＨ‘００００が出力される。ここで、出力される信号の値はＨ’００００に限られず、出力値を任意に設定することも可能である。つまりＣＰＵ２が出力するアドレス信号に従ったＲＡＭ４からの読み出しデータでない限り、どのような値が出力可能な構成であってもよい。【００５９】
ここで、ＣＰＵ２からフラッシュメモリ７、または‘０’）が出力された場合で、上記フラッシュメモリセレクト信号ＲＡＭセレクト信号が無効である場合にはフラッシュメモリ７およびＲＡＭ４へのアクセスが禁止されるため、データ信号は、たとえば前値保持の状態となる。【００６０】
図５は、フラッシュメモリ７における該フラッシュメモリ７の動作制御を司る制御回路７ｂに設けられた消去禁止制御回路（消去禁止制御部）１６、ならびに書き換え禁止制御回路（書き換え禁止制御部）１７のブロック図である。【００６１】
消去禁止制御回路１６は、フラッシュメモリ７の消去禁止を制御する回路であり、予めメモリマット７ａのキーコードエリアＫＡに書き込まれたキーコード（第１の設定値）が予め設定されているキーコード（第２の設定値）と一致した場合、メモリマット７ａのプロテクトエリアＰＡに対するデータへの消去が発生した際に該プロテクトエリアＰＡの消去を禁止する。【００６２】
消去禁止制御回路１６は、キーコード発生部（キーコード発生回路）１８、排他的否定論理和回路（消去制御回路）１９、および論理積回路（消去制御回路）２０から構成されている。キーコード発生部１８は、予め設定するキーコード（第２の設定値、たとえば、Ｈ’１２３４）をハードウェアによって出力する回路からなる。【００６３】
排他的否定論理和回路１９の一方の入力部には、キーコード発生部１８が生成したキーコード（Ｈ’１２３４）が入力されるように接続されており、該排他的否定論理和回路１９他方の入力部には、キーコードエリアＫＡに格納されているキーコード（第１の設定値）が入力されるように接続されている。【００６４】
論理積回路２０の一方の入力部には、イレースブロックセレクタＥＢＳから出力されるイレースブロック信号ＥＢ９が入力されるように接続されている。イレースブロックセレクタＥＢＳは制御回路７ｂに設けられており、どのブロックを消去するかを選択するレジスタのうちの１つである。このイレースブロックセレクタＥＢＳは、フラッシュメモリ７のメモリマット７ａにおけるプロテクトエリアＰＡ（Ｂｌｏｃｋ９）を消去する際に’０’のイレースブロック信号ＥＢ９を出力する。【００６５】
論理積回路２０の他方の入力部には、排他的否定論理和回路１９から出力される信号が入力されるように接続されている。論理積回路２０の出力部には、フラッシュメモリ７の読み出し／書き込みを制御する読み出し／書き込み制御回路３０の入力部が接続されており、論理積回路２０の出力部からイレースブロック制御信号ＥＢＣ９が出力される。【００６６】
上記キーコード発生部１８が生成したキーコード（第２の設定値）がキーコードエリアに格納されているキーコード（第１の設定値）に一致する場合、上記消去禁止制御回路１６はイレースブロック制御信号が無効となるように制御し、上記読み出し／書き込み制御回路３０は消去動作を禁止する。【００６７】
上記イレースブロック制御信号ＥＢＣ９が有効な状態の時、上記読み出し／書き込み制御回路３０はプロテクトエリアＰＡ（Ｂｌｏｃｋ９）に対する消去制御を行う。【００６８】
ここで、フラッシュメモリ７のメモリセル部に複数のプロテクトエリアを設置する場合には、プロテクトエリア毎に上記消去禁止制御回路１６を用意すればよい。これにより複数のプロテクトエリアに対する消去制御が可能となる。【００６９】
また、書き換え禁止制御回路１７は、キーコード発生部（キーコード発生回路）２１、アドレス判定部（アドレス判定回路）２２、排他的否定論理和回路（キーコード判定部）２３、インバータ（書き換え制御回路）２４〜２６、否定論理積回路（書き換え制御回路）２７、保持回路（書き換え制御回路）２８、および論理積回路（書き換え制御回路）２９から構成されている。【００７０】
キーコード発生部２１は、予め設定するキーコード（第３の設定値、たとえば、Ｈ’１２３４）をハードウェアによって出力する回路からなる。排他的否定論理和回路２３の一方の入力部には、キーコード発生部１８が生成したキーコード（Ｈ’１２３４）が入力されるように接続されており、該排他的否定論理和回路２３の他方の入力部には、キーコードエリアＫＡに格納されているキーコード（第１の設定値）が入力されるように接続されている。【００７１】
アドレス判定部２２には、アドレス信号が入力されており、該アドレス判定部２２は、アドレス信号がアドレスＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦの場合には、’０’を出力し、それ以外の場合には’１’を出力する。【００７２】
インバータ２４〜２６の入力部には、メモリセレクト信号（図１）、ライト信号（図１）、およびアドレス判定部２２から出力される判定信号がそれぞれ入力されるように接続されている。【００７３】
否定論理積回路２７の入力部には、排他的否定論理和回路２３の出力部、インバータ２４〜２６の出力部がそれぞれ接続されており、該否定論理積回路２７の出力部には、保持回路２８の入力部が接続されている。この保持回路２８は、フラッシュメモリ７への書き込みが発生するまで、その信号状態を保持する回路である。【００７４】
論理積回路２９の一方の入力部には、プログラミングビットＰＢから出力されるプログラムモード信号Ｐが入力されるように接続されている。プログラミングビットＰＢは、書き換えを開始するプログラムモードを解除／遷移させるビットであり、’０’の際にはプログラムモードが解除となり、’１’の場合にはプログラムモードに遷移する。【００７５】
論理積回路２９の出力部には、読み出し／書き込み制御回路３０の入力部が接続されており、論理積回路２９の出力部からプログラムモード信号Ｐが出力される。【００７６】
上記キーコード発生部２１が生成したキーコード（第３の設定値）がキーコードエリアに格納されているキーコード（第１の設定値）に一致する場合、上記読み出し／書き込み制御回路３０は書き換え動作を禁止する。【００７７】
上記プログラムモード信号Ｐが有効な状態の時、上記読み出し／書き込み制御回路３０はプロテクトエリアＰＡ（Ｂｌｏｃｋ９）に対する書き換え制御を行う。【００７８】
ここでは、キーコードをＨ’１２３４としたが、該キーコードは、フラッシュメモリ７に格納されている初期値（Ｈ’ＦＦＦＦ）以外であれば、どのようなデータでもよい。【００７９】
次に、本実施の形態における半導体集積回路装置１の作用について説明する。【００８０】
図６から図９に示されるＣＰＵ２によって実行される命令は一つの具体例であって、それだけに限られず、各種の命令が実行される。アドレスに対応したメモリに格納されている命令やデータの値（たとえば、図６のアドレスＨ‘００＿４００８には「Ｈ’６８２８」が格納される）もプログラムによって様々である。本発明ではバスステートコントローラ３によるアドレス値およびプログラムカウンタの値の比較によって各種メモリおよびその他の周辺回路に対するアクセスが制御されるものである。【００８１】
始めに、フラッシュメモリ７のユーザアクセスエリアＵＡにおける読み出し制御動作について、図６を用いて説明する。【００８２】
図６の上方は、フラッシュメモリ７による読み出し制御の説明図を示しており、その下方には、各部信号のタイミングチャートを示している。【００８３】
この図６のタイミングチャートにおいては、上方から下方にかけて、クロック信号φ、ＣＰＵ２から出力されるプログラムカウンタの値、ＣＰＵ２から出力されるアドレス信号、バスステートコントローラ３から出力されるフラッシュメモリセレクト信号、ＣＰＵ２から出力されるデータ信号、およびプログラムカウンタの値がフラッシュメモリ７のプロテクトエリアＰＡを示しているか否かを示す状態信号（ＰＣ＝Ｈ‘０１＿ｘｘｘｘ）をそれぞれ示している。【００８４】
まず、ＣＰＵ２のプログラムカウンタは、アドレスＨ’００＿４０００番地を示し、アドレスＨ’００＿４０００を内部バスに出力し、アドレスＨ’００＿４０００番地における命令をＣＰＵ２がメモリから順次読み出す。続いて、ＣＰＵ２は、汎用レジスタ（Ｅ２）にＨ’００００を格納する。【００８５】
その後、ＣＰＵ２は、アドレスＨ’００＿４００４番地の命令を読み出し、続いて、アドレスＨ’００＿４００６を読み出して、汎用レジスタ（Ｒ２）にＨ’０Ｃ００を格納する。【００８６】
そして、ＣＰＵ２は、アドレスＨ’００＿４００８の命令を読み出して、該命令を解析（汎用レジスタＥＲ２が示すアドレス値が示すメモリに格納されているデータをリード）した後、その命令を実行してアドレスＨ’００＿０Ｃ００のデータを読み出し、汎用レジスタ（Ｒ０Ｌ）にＨ’１２３４を格納する。【００８７】
この場合、フラッシュメモリ７におけるプロテクトエリアＰＡの読み出しがない、つまりアドレス値がプロテクトエリアＰＡを示さないため、制限なくプログラム／データなどを読み出すことができる。【００８８】
また、フラッシュメモリ７のユーザアクセスエリアＵＡからプロテクトエリアＰＡを読み出す場合の制御動作について、図７を用いて説明する。【００８９】
この図７においても、上方に、フラッシュメモリ７による読み出し制御の説明図を示しており、その下方に、各部信号のタイミングチャートを示している。タイミングチャートは、上方から下方にかけて、クロック信号φ、ＣＰＵ２から出力されるプログラムカウンタの値、ＣＰＵ２から出力されるアドレス信号、バスステートコントローラ３から出力されるフラッシュメモリセレクト信号、データ、およびプログラムカウンタがフラッシュメモリ７のプロテクトエリアＰＡか否かを示す状態信号（ＰＣ＝Ｈ‘０１＿ｘｘｘｘ？）をそれぞれ示している。【００９０】
まず、ＣＰＵ２のプログラムカウンタが、アドレスＨ’００＿４００Ａを示し、内部バスにアドレスＨ‘００＿４００Ａを出力し、アドレスＨ’００＿４００Ａ番地の命令をメモリから順次読み出し、汎用レジスタ（Ｅ２）にＨ‘０００１を格納する。その後、ＣＰＵ２は、アドレスＨ’００＿４００Ｅ、およびアドレスＨ‘００＿４０１０番地を順次読み出して、汎用レジスタ（Ｒ２）にＨ’００００を格納する。その後、ＣＰＵ２は、アドレスＨ’００＿４０１２の命令を読み出して解析（汎用レジスタＥＲ２が示すアドレス値が示すメモリに格納されているデータをリード）を行い、それに基づいて、ＣＰＵ２は、アドレスＨ’０１＿００００のデータを読み出す。【００９１】
このとき、アドレスＨ’０１＿００００は、フラッシュメモリ７のプロテクトエリアＰＡ内であり、かつＣＰＵ２から出力されるプログラムカウンタの値がプロテクトエリアＰＡ外（ここではＨ‘００＿４０１４）となっているので、バスステートコントローラ３から出力されるフラッシュメモリセレクト信号がインアクティブ（’１’）となり、バスステートコントローラ３の制御により、内部バスＢのアドレス信号には、Ｈ’ＦＦＦＦのデータが出力されることになる。【００９２】
上記構成により、ユーザエリアＵＡからプロテクトエリアＰＡに対するデータ読み出しアクセスを禁止することが可能となる。【００９３】
さらに、フラッシュメモリ７のプロテクトエリアＰＡからプロテクトエリアＰＡを読み出す場合の制御動作について、図８を用いて説明する。【００９４】
図８も、上方に、フラッシュメモリ７による読み出し制御の説明図を示しており、その下方に、各部信号のタイミングチャートを示している。タイミングチャートは、上方から下方にかけて、クロック信号φ、ＣＰＵ２から出力されるプログラムカウンタの値、ＣＰＵ２から出力されるアドレス信号、バスステートコントローラ３から出力されるフラッシュメモリセレクト信号、データ、およびプログラムカウンタがフラッシュメモリ７のプロテクトエリアＰＡか否かを示す状態信号（ＰＣ＝Ｈ‘０１＿ｘｘｘｘ？）をそれぞれ示している。【００９５】
まず、ＣＰＵ２が、アドレスＨ’０１＿００００、およびアドレスＨ’０１＿０００２番地に格納される命令を順次読み出し、汎用レジスタ（Ｅ２）にＨ’０００１を格納する。その後、ＣＰＵ２は、アドレスＨ’０１＿０００４、アドレスＨ’０１＿０００６の命令をそれぞれ読み出して汎用レジスタ（Ｒ２）にＨ’０１００を格納する。【００９６】
続いて、ＣＰＵ２は、アドレスＨ’０１＿０００８の命令を読み出して解析（汎用レジスタＥＲ２が示すアドレスが示すメモリに格納されているデータをリード）を行い、それに基づいて、ＣＰＵ２は、命令を実行してアドレスＨ’０１＿０１００に格納されるデータを読み出し、汎用レジスタ（Ｒ０Ｌ）にＨ’１２３４を格納する。【００９７】
この場合、プロテクトエリアＰＡからプロテクトエリアＰＡを読み出すので、プログラムカウンタの値もプロテクトエリアＰＡ内となっており、フラッシュメモリセレクト信号がアクティブ（’０’）のままとなり、フラッシュメモリ７から読み出された正常なデータが内部バスＢのデータ信号（Ｄａｔａ）へ出力されることになる。【００９８】
次に、フラッシュメモリ７のプロテクトエリアＰＡからＲＡＭ４のプロテクトエリアＰＡ１のデータを読み出す場合の制御動作について、図９を用いて説明する。【００９９】
この図９においては、上方に、フラッシュメモリ７、およびＲＡＭ４による読み出し制御の説明図を示しており、その下方に、各部信号のタイミングチャートを示している。タイミングチャートは、上方から下方にかけて、クロック信号φ、ＣＰＵ２から出力されるプログラムカウンタの値、ＣＰＵ２から出力されるアドレス信号、同様にバスステートコントローラ３から出力されるＲＡＭメモリセレクト信号、データ、およびプログラムカウンタの値がフラッシュメモリ７のプロテクトエリアＰＡか否かを示す状態信号（ＰＣ＝Ｈ‘０１＿ｘｘｘｘ？）をそれぞれ示している。【０１００】
まず、ＣＰＵ２が、アドレスＨ’０１＿５０００、およびアドレスＨ’０１＿５００２の命令を順次読み出し、汎用レジスタ（Ｅ２）にＨ’ＦＦＦＦを格納する。その後、ＣＰＵ２は、アドレスＨ’０１＿５００４、ならびにアドレスＨ’０１＿５００６の命令を順次読み出し、汎用レジスタ（Ｒ２）にＨ’Ｄ０００を格納する。【０１０１】
その後、ＣＰＵ２は、アドレスＨ’０１＿５００８の命令を読み出し、その命令の解析（汎用レジスタＥＲ２が示すアドレスが示すメモリに格納されているデータをリード）を行い、それに基づいて、ＣＰＵ２は、ＲＡＭ４におけるアドレスＨ’ＦＦ＿Ｄ０００のデータを読み出して汎用レジスタ（Ｒ０Ｌ）に読み出したＨ’１２３４を格納する。【０１０２】
この場合、プログラムカウンタの値（Ｈ‘０１＿５０ｘｘ）は、プロテクトエリアＰＡ１にあるので、バスステートコントローラ３から出力されるＲＡＭセレクト信号がアクティブ（’０’）となり、正常なデータがＲＡＭ４から読み出されることになる。【０１０３】
ここで、ワークエリアとして用いられるＲＡＭ４の処理例について、図１０を用いて説明する。【０１０４】
この図１０では、たとえば、文字データを圧縮する場合の手順について説明する。図１０の左側は、ＲＡＭ４とフラッシュメモリ７との説明図であり、右側は、処理手順のフローチャートである。【０１０５】
まず、文字データをＲＡＭ４上に展開し（ステップＳ１０１）、ＲＡＭ４のプロテクトエリアＰＡ１へサブルーチンジャンプする（ステップＳ１０２）。その後、プロテクトエリアＰＡに格納されたプログラムに基づく圧縮処理において、圧縮処理の中間データ、圧縮処理結果をプロテクトエリアＰＡ１に格納する（ステップＳ１０３）。【０１０６】
続いて、プロテクトエリアＰＡに格納されたプログラムに基づく暗号化処理において、暗号化処理の中間データ、暗号化結果をプロテクトエリアＰＡ１に格納し（ステップＳ１０４）、暗号化結果データをユーザアクセスエリアＵＡ１に格納する（ステップＳ１０５）。【０１０７】
その後、リターンサブルーチンにより（ステップＳ１０６）、暗号化結果データを、たとえば半導体集積回路装置１に外部接続された外部メモリに格納する（ステップＳ１０７）。【０１０８】
このように、圧縮、暗号化のプログラム処理をＲＡＭ４のＰプロテクトエリアＰＡ１で処理することによって、該プログラムがどのような処理を行っているかを推測しにくくすることができる。【０１０９】
次に、図５に示す制御回路７ｂに設けられた消去禁止制御回路１６、および書き換え禁止制御回路１７の動作について説明する。【０１１０】
まず、フラッシュメモリ７の消去動作において、プロテクトエリアＰＡのブロック（Ｂｌｏｃｋ９）が指定されると、イレースブロックセレクタＥＢＳから、’０’のイレースブロック信号ＥＢ９が出力される。【０１１１】
このとき、消去禁止制御回路１６は、キーコードエリアＫＡに格納されているキーコード（第１の設定値）を読み出し、排他的否定論理和回路１９によって、読み出した該キーコードとキーコード発生部１８が生成したキーコード（第２の設定値）との排他的否定論理和をとり、読み出したキーコードとキーコード発生部１８が生成したキーコードとが一致した際に、後段の論理積回路２０から、’０’のイレースブロック制御信号ＥＢＣ９が読み出し／書き込み制御回路３０に出力される。このイレースブロック制御信号ＥＢＣ９によって、フラッシュメモリ７における消去動作が禁止されることになる。【０１１２】
また、フラッシュメモリ７の書き換え動作では、まず、プログラミングビットＰＢから、’１’のプログラムモード信号Ｐが出力され、書き換え先を指定するアドレスが入力される。【０１１３】
アドレス判定部２２は、入力されたアドレス信号がプロテクトエリアＰＡ内か否かを判定する。また、排他的否定論理和回路１９では、キーコード発生部２１が生成したキーコード（第３の設定値）とキーコードエリアＫＡに格納されているキーコード（第１の設定値）とを比較し、一致している際には’０’の信号を出力する。【０１１４】
さらに、フラッシュメモリ７の書き換えであるので、それぞれアクティブ（’０’）のフラッシュメモリセレクト信号、およびライト信号がバスステートコントローラ３から出力されている。【０１１５】
このとき、入力されたアドレスがプロテクトエリアＰＡ内の場合には、アドレス判定部２２から、’０’の信号が出力され、保持回路２８を介して、’０’の信号が論理積回路２９の他方の入力部に入力される。【０１１６】
よって、プログラミングビットＰＢからは、’１’のプログラムモード信号Ｐが出力されているので、論理積回路２９からは、’０’のプログラムモード信号Ｐが読み出し／書き込み制御回路３０に出力される。これにより、フラッシュメモリ７における書き換え動作が禁止されることになる。【０１１７】
また、入力されたアドレスがプロテクトエリアＰＡ外の場合には、アドレス判定部２２から、’１’の信号が出力されるので論理積回路２９から出力されるプログラムモード信号Ｐは、’１’となり、フラッシュメモリ７の書き換えが行われる。【０１１８】
次に、第一ユーザ（たとえば、ソフトＩＰベンダ）がプログラムを書き込んだ後にエンドユーザに半導体集積回路装置１を出荷し、第一ユーザにおいてキーコードを設定する際の処理について、図１１のフローチャートを用いて説明する。【０１１９】
まず、第１ユーザが作成したキーとなるプログラム（第１プログラム）のデバッグを開始し（ステップＳ２０１）。キーとなるプログラムの書き込みと消去（ステップＳ２０２）をデバッグが完了するまで行う（ステップＳ２０３）。そして、デバッグが完了すると、キーコードエリアＫＡにキーコード（第１の設定値）を書き込み（ステップＳ２０４）、ユーザアクセスエリアＵＡに格納されているデバッグ用プログラム（第３プログラム）などを消去してエンドユーザに出荷する（ステップＳ２０５）。【０１２０】
その後、エンドユーザ側において、エンドユーザが作成したメインプログラム（第２プログラム）のデバッグを開始する（ステップＳ３０１）。デバッグにより発生するメインプログラムの書き込み／消去をデバッグが終了するまで行う（ステップＳ３０２，Ｓ３０３）。【０１２１】
これらステップＳ３０２，Ｓ３０３の処理では、キーコードが第一ユーザにより設定されているので、エンドユーザによるプロテクトエリアＰＡに格納されている第一ユーザが書き込んだプログラム（第１プログラム）の書き込み／消去は不可となっている。【０１２２】
また、エンドユーザによりキーコードを設定する際の処理について、図１２を用いて説明する。【０１２３】
まず、エンドユーザにおいて、プロテクトエリアＰＡに格納されるキーとなるプログラム（第１プログラム）およびユーザエリアに格納されるメインプログラム（第２プログラム）のデバッグを開始する（ステップＳ４０１）。そして、デバッグにより発生するキーとなるプログラム（第１プログラム）およびメインプログラム（第２プログラム）の書き込み／消去を行う（ステップＳ４０２）。【０１２４】
続いて、デバッグが終了すると（ステップＳ４０３）、キーコードエリアにキーコード（第１の設定値）を書き込み、プロテクトエリアＰＡに書き込まれたキーとなるプログラムを保護する（ステップＳ４０４）。【０１２５】
それにより、本実施の形態１によれば、キーとなるプログラムに対しプロテクトを行うことが可能であるため、第三者によるキーとなるプログラムの読み出しやコピー、あるいは変更などを防止することができる。【０１２６】
（実施の形態２）
図１３は、本発明の実施の形態２による半導体集積回路装置のブロック図、図１４は、図１３の半導体集積回路装置におけるリセットシーケンスを示した説明図、図１５は、図１４のリセットシーケンスにおけるプロテクト処理制御部の設定処理を示すフローチャート、図１６は、図１３の半導体集積回路装置に設けられたフラッシュメモリ７におけるプロテクトエリアの任意設定処理を示すフローチャート、図１７は、図１６におけるフラッシュメモリ７のメモリマップの補足説明図である。【０１２７】
本実施の形態２において、半導体集積回路装置１は、図１３に示すように、ＣＰＵ２、バスステートコントローラ３、ＲＡＭ４、ＳＣＩ（Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）５などを含む周辺回路６、およびフラッシュメモリ７に例示される不揮発性半導体メモリなどの前記実施の形態１と同様の構成となっている。【０１２８】
前記実施の形態１では、フラッシュメモリ７のプロテクトエリアＰＡを、アドレスＨ’０１＿００００〜Ｈ’０１＿ＦＦＦＦまでの１つのブロックに固定されていたが、本実施の形態２のフラッシュメモリ７では、プロテクトエリアＰＡの領域を任意に変更することが可能となっている。【０１２９】
フラッシュメモリ７は、メモリマット７ａ、および制御回路７ｂから構成されており、該メモリマット７ａは、記憶の最小単位であるメモリセルが規則正しくアレイ状に並べられており、アドレスバッファ、アドレスデコーダ７ａ１、入出力バッファ７ａ２、およびセンスアンプなどの周辺回路を含んでいる。【０１３０】
制御回路７ｂ、ＣＰＵ２から入力される制御用信号を一時的に格納し、動作ロジックの制御を行う。制御回路７ｂには、プロテクト処理制御部３１が設けられている。【０１３１】
プロテクト処理制御部３１は、フラッシュメモリ７におけるプロテクトエリアＰＡの領域を任意に変更する制御を行う。また、プロテクトエリアＰＡには、プロテクトエリアＰＡの先頭アドレスを格納する先頭アドレス格納エリアＳＤＡ、プロテクトエリアＰＡの末尾アドレスを格納する末尾アドレス格納エリアＭＤＡ、およびキーコードエリアを格納するキーコードエリアＫＡが設けられている。【０１３２】
プロテクト処理制御部３１は、プロテクト処理制御回路３２、アドレス生成回路３３、リード信号生成回路３４、アドレス／キーコード格納レジスタ３５、およびセレクタ３６，３７から構成されている。【０１３３】
プロテクト処理制御回路３２、アドレス生成回路３３、リード信号生成回路３４、およびアドレス／キーコード格納レジスタ３５には、リセット信号を発生するリセット回路３８から出力されたリセット信号が入力されるようにそれぞれ接続されている。【０１３４】
プロテクト処理制御回路３２には、アドレス生成回路３３、リード信号生成回路３４、ならびにアドレス／キーコード格納レジスタ３５がそれぞれ接続されており、該プロテクト処理制御回路３２から出力された信号により、これらの回路が動作を開始する。【０１３５】
アドレス生成回路３３は、フラッシュメモリ７のメモリマット７ａに格納されているキーコードの格納アドレスを生成する。リード信号生成回路３４は、メモリマット７ａのリード信号を生成する。アドレス／キーコード格納レジスタ３５は、メモリマット７ａから読み出したキーコード、およびプロテクトエリアＰＡの領域を示すアドレスをそれぞれ格納する。【０１３６】
またプロテクト処理制御回路３２には、セレクタ３６，３７を制御する制御信号が入力されるようにそれぞれ接続されている。セレクタ３６は、プロテクト処理制御回路３２から出力される制御信号に基づいて、アドレス生成回路３３が生成したアドレスと、バスステートコントローラ３から出力されるアドレスとを切り替えて出力する。【０１３７】
セレクタ３７は、プロテクト処理制御回路３２から出力される制御信号に基づいて、リード信号生成回路３４が生成したリード信号と、バスステートコントローラ３から出力されるリード信号とを切り替えて出力する。【０１３８】
図１４は、半導体集積回路装置１におけるリセットシーケンスを示した説明図であり、図１５は、図１４のリセットシーケンスにおけるプロテクト処理制御部３１の設定処理を示すフローチャートである。【０１３９】
図１４においては、上方から下方にかけて、システムクロック、半導体集積回路装置１のリセット端子に入力されるリセット信号、プロテクト処理制御部３１の動作状態、半導体集積回路装置１の内部路セット信号、およびＣＰＵ２（半導体集積回路装置１）の動作状態をそれぞれ示している。【０１４０】
まず、半導体集積回路装置の外部ポートの１つであるリセット端子からリセット信号が入力され、そのリセット信号が解除となると（ステップＳ５０１）、プロテクト処理制御回路３２が起動する（ステップＳ５０２）。【０１４１】
プロテクト処理制御回路３２は、アドレス生成回路３３、ならびにリード信号生成回路３４に対して信号を出力し、これらアドレス生成回路３３、およびリード信号生成回路３４を動作させる（ステップＳ５０３）。【０１４２】
続いて、プロテクト処理制御回路３２は、メモリマット７ａのキーコードエリアＫＡに格納されているデータを読み出し（ステップＳ５０４）、そのデータをアドレス／キーコード格納レジスタ３５に格納する（ステップＳ５０５）。【０１４３】
そして、プロテクト処理制御回路３２は、アドレス／キーコード格納レジスタ３５にキーコード（第１の設定値）が格納されているか否かを判断し（ステップＳ５０６）、キーコードが格納されている場合、プロテクト処理制御回路３２は、メモリマット７ａからプロテクトエリアＰＡの先頭アドレスと末尾アドレスとを読み出して、アドレス／キーコード格納レジスタ３５にそれぞれ格納する（ステップＳ５０７，Ｓ５０８）。【０１４４】
ステップＳ５０８の処理の終了後、またはステップＳ５０６の処理においてキーコードがない場合には、半導体集積回路装置の内部リセットを解除する解除信号をリセット回路３８に出力した後（ステップＳ５０９）、プロテクト処理制御回路３２が停止して（ステップＳ５１０）半導体集積回路装置１が動作を開始することになる。【０１４５】
キーコードの読み出しおよび制御回路７ｂに対するキーコードの設定、プロテクトエリアに対するプロテクトの有無の確認は、リセット解除後に上記フローに従って実行される。半導体集積回路装置１が通常の動作を開始した後は、図４に従ったメモリアクセスアドレスに基づいた制御を実行する。【０１４６】
また、プロテクトエリアＰＡおよびプロテクトエリアＰＡ１がそれぞれ固定的な一つの領域とする場合はステップＳ５０７，Ｓ５０８は実行されない。【０１４７】
また、図１６は、フラッシュメモリ７におけるプロテクトエリアＰＡの任意設定処理を示すフローチャートであり、図１７は、図１６におけるフラッシュメモリ７のメモリマップの補足説明図である。【０１４８】
まず、プログラムのデバッグを開始し（ステップＳ６０１）、プログラム書き込みと消去（ステップＳ６０２）をデバッグが完了するまで行う（ステップＳ６０３）。そして、デバッグが完了すると、メモリマット７ａに設けられた先頭アドレス格納エリアＳＤＡ、および末尾アドレス格納エリアＭＤＡにプロテクトエリアＰＡの任意の先頭アドレスと任意の末尾アドレスとをそれぞれ書き込み、プロテクエリアＰＡの任意の領域を設定するとともに、キーコードエリアＫＡにキーコードを書き込む（ステップＳ６０４）。【０１４９】
この場合、先頭アドレス格納エリアＳＤＡ、末尾アドレス格納エリアＭＤＡに、ならびにキーコードエリアＫＡがプロテクトエリアＰＡの領域内となるように、先頭アドレスと末尾アドレスとをそれぞれ設定することにより、第三者による該プロテクトエリアの領域変更読み出し、あるいはキーコードの読み出しや変更などを防止することができる。【０１５０】
それにより、本実施の形態２によれば、プロテクトエリアＰＡの領域を任意変更することができるので、読み出しや書き換えなどを禁止したいプログラムのデータ容量などに応じてフレキシブルに変更することが可能となるとともに、第三者によるプログラムの読み出しやコピー、あるいは変更などを防止することができる。【０１５１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１５２】
本発明の半導体集積回路装置は、不揮発性半導体メモリにおける所定のブロックの読み出し、および書き換えを防止する技術に適している。
【図１】
2006040798.tif 000002
【図２】
2006040798.tif 000003
【図３】
2006040798.tif 000004
【図４】
2006040798.tif 000005
【図５】
2006040798.tif 000006
【図６】
2006040798.tif 000007
【図７】
2006040798.tif 000008
【図８】
2006040798.tif 000009
【図９】
2006040798.tif 000010
【図１０】
2006040798.tif 000011
【図１１】
2006040798.tif 000012
【図１２】
2006040798.tif 000013
【図１３】
2006040798.tif 000014
【図１４】
2006040798.tif 000015
【図１５】
2006040798.tif 000016
【図１６】
2006040798.tif 000017
【図１７】
2006040798.tif 000018
【国際調査報告】
2006040798.tif 000019
2006040798.tif 000020