明 細 書
半導体集積回路装置および電子システム
技術分野
[0001] 本発明は、不揮発性半導体メモリにおけるデータ保護技術に関し、特に、不揮発 性半導体メモリを内蔵した半導体集積回路装置におけるプログラムのコピー、書き換 えの防止に適用して有効な技術に関するものである。
背景技術
[0002] 近年、電子機器の開発 '改善の期間短縮を図るため、制御用のプログラムやデータ の書き換えが容易な不揮発性半導体メモリを内蔵した半導体集積回路装置、 V、わゆ るフラッシュメモリ内蔵マイクロコンピュータに対するニーズが高まっている。
[0003] このフラッシュメモリ内蔵マイクロコンピュータには、機密保持のためフラッシュメモリ に格納されたアプリケーションプログラムなどの書き換えなどを禁止するプロテクト機 能を有するものがある。
[0004] この種の不揮発性半導体メモリに格納されたデータやプログラムなどの保護機能と しては、たとえば、 EPROM (Erasable Programmable Read Only Memory) において、プログラマが設定した保護ブロックにプログラムを格納した後、該 EPRO M内の保護レジスタの指定ビットを設定することによって保護エリア外力 の読み出し Z書き込みを不可とする技術がある(たとえば、特許文献 1参照)。
特許文献 1:特開 2000-76133号公報
発明の開示
発明が解決しょうとする課題
[0005] ところが、上記のようなフラッシュメモリ内蔵のマイクロコンピュータにおけるプロテク ト技術では、次のような問題点があることが本発明者により見い出された。
[0006] フラッシュメモリのプロテクト機能を有効にした場合には、第三者がアプリケーション プログラムなどを読み出すことはできな 、が、該フラッシュメモリのすべてメモリ領域( ブロック)にプロテクトがかかってしまうことになるので、ユーザデータなどの書き換えも できなくなってしまうことになる。
[0007] また、フラッシュメモリは、ブートモードを起動させることによって、電子システムなど のプリント配線基板に実装した状態でアプリケーションプログラムなどの書き換えを容 易に行うことができ、第三者によって該アプリケーションプログラムの読み出しや書き 換えなどが行われてしまう恐れがある。
[0008] さらに、フラッシュメモリにプロテクトをかけた状態であっても、マイクロコンピュータに 設けられた CPUのワークエリアとして用いられる RAM (Random Access Memor y)の内容を読み出し、どのような命令を実行しているかなどを解析することによってァ プリケーシヨンプログラムの内容が推測されてしまう恐れがある。
[0009] 本発明の目的は、不揮発性半導体メモリの特定のメモリ領域における読み出しを禁 止することにより、第三者によるプログラムの不正コピーや改ざんなどを確実に防止 することのできる技術を提供することにある。
[0010] 本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添 付図面から明らかになるであろう。
課題を解決するための手段
[0011] 本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、 次のとおりである。
[0012] 本発明は、複数の不揮発性メモリセルを有するメモリアレイ部と、該不揮発性メモリ セルに情報を格納する書き込み動作、該不揮発性メモリセルに格納した情報を読み 出す読み出し動作、該不揮発性メモリセルに格納した情報を消去する消去動作の各 動作を制御する制御部とを備えた不揮発性記憶部と、該不揮発性記憶部に格納さ れたプログラムのワークエリアとして用いられる揮発性記憶部と、所定の処理を実行し 、該不揮発性記憶部に動作指示を行うことが可能である中央処理装置と、不揮発性 記憶部、および揮発性記憶部の読み出し動作を制御するプロテクト動作制御部とを 有した半導体集積回路装置であって、メモリアレイ部は、プロテクト動作制御部の制 御により格納された情報の読み出しおよび書き込みが禁止される第 1のプロテクトメモ リ領域を有し、揮発性記憶部は、プロテクト動作制御部の制御によりメモリアレイ部の 第 1のプロテクトメモリ領域以外力 の読み出しおよび書き込みが禁止される第 2のプ ロテクトメモリ領域を有し、不揮発性記憶部の第 1のプロテクトメモリ領域に格納された
プログラムのワークエリアとして揮発性記憶部の第 2のプロテクトメモリ領域を用いるこ とを特徴とする半導体集積回路装置。
[0013] また、本発明の半導体集積回路装置は、複数の不揮発性メモリセルを有するメモリ アレイ部と、該不揮発性メモリセルに情報を格納する書き込み動作、該不揮発性メモ リセルに格納した情報を読み出す読み出し動作、該不揮発性メモリセルに格納した 情報を消去する消去動作の各動作を制御する制御部とを備えた不揮発性記憶部と 、揮発性記憶部と、所定の処理を実行し、該不揮発性記憶部に動作指示を行うこと が可能である中央処理装置と、不揮発性記憶部、および揮発性記憶部の読み出し 動作を制御するプロテクト動作制御部とを有した半導体集積回路装置であって、メモ リアレイ部は、プロテクト動作制御部の制御により格納された情報の読み出しおよび 書き込みが禁止される第 1のプロテクトメモリ領域を有し、揮発性記憶部は、プロテクト 動作制御部の制御によりメモリアレイ部の第 1のプロテクトメモリ領域以外力 の読み 出しおよび書き込みが禁止される第 2のプロテクトメモリ領域を有したものである。
[0014] また、本願のその他の発明の概要を簡単に示す。
[0015] 本発明は、複数の不揮発性メモリセルを有するメモリアレイ部と、該不揮発性メモリ セルに情報を格納する書き込み動作、該不揮発性メモリセルに格納した情報を読み 出す読み出し動作、該不揮発性メモリセルに格納した情報を消去する消去動作の各 動作を制御する制御部とを備えた不揮発性半導体記憶装置と、該不揮発性半導体 記憶装置に格納されたプログラムのワークエリアとして用いられる揮発性半導体記憶 装置と、所定の処理を実行し、不揮発性半導体記憶装置に動作指示を行うことが可 能である中央処理装置と不揮発性半導体記憶装置、および揮発性半導体記憶装置 の読み出し動作を制御するプロテ外動作制御部とを備えた半導体集積回路装置と を有した電子システムであって、メモリアレイ部は、プロテクト動作制御部の制御により 格納された情報の読み出しが禁止される第 1のプロテクトメモリ領域を有し、揮発性半 導体記憶装置は、プロテクト動作制御部の制御によりメモリアレイ部の第 1のプロテク トメモリ領域以外からの読み出しが禁止される第 2のプロテクトメモリ領域を有し、不揮 発性半導体記憶装置に格納されたプログラムのワークエリアとして第 2のプロテクトメ モリ領域を用いるものである。
発明の効果
[0016] 本願において開示される発明のうち、代表的なものによって得られる効果を簡単に 説明すれば以下のとおりである。
[0017] (1)第 1のプロテクトメモリ領域の読み出しや書き換えなどを制限することができるの で、プログラムの不正なコピーや改ざんなどを防止することができ、セキュリティを向 上させることができる。
[0018] (2)また、第 2のプロテクトメモリ領域の読み出しを制限することにより、プログラムの 推測などを困難にすることが可能となり、プログラムの不正なコピーや改ざんなどをよ り効果的に防止することができる。
[0019] (3)上記(1)、 (2)により、半導体集積回路装置やそれを用いた電子システムなど の信頼性を大幅に向上させることができる。
図面の簡単な説明
[0020] [図 1]本発明の実施の形態 1による半導体集積回路装置のブロック図である。
[図 2]図 1の半導体集積回路装置に設けられたフラッシュメモリにおけるメモリマップの 一例を示した説明図である。
[図 3]図 1の半導体集積回路装置に設けられた RAMにおけるメモリマップの一例を 示した説明図である。
[図 4]図 1の半導体集積回路装置に設けられたバスステートコントローラの一部構成 例を示した説明図である。
[図 5]図 1の半導体集積回路装置に設けられたフラッシュメモリにおける消去禁止制 御回路、および書き換え禁止制御回路のブロック図である。
[図 6]図 1の半導体集積回路装置に設けられたフラッシュメモリのユーザアクセスエリ ァにおける読み出し制御動作例を示すタイミングチャートである。
[図 7]図 1の半導体集積回路装置に設けられたフラッシュメモリのユーザアクセスエリ ァ力 プロテクトエリアを読み出す場合の制御動作例を示すタイミングチャートである
[図 8]図 1の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアから プロテクトエリアを読み出す場合の制御動作例を示すタイミングチャートである。
[図 9]図 1の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアから RAMのプロテクトエリアのデータを読み出す場合の制御動作例を示すタイミングチヤ ートである。
[図 10]図 1の半導体集積回路装置に設けられた RAMの処理例を示した説明図であ る。
[図 11]図 1の半導体集積回路装置における第一ユーザによるキーコードの設定例を 示すフローチャートである。
[図 12]図 1の半導体集積回路装置におけるエンドユーザによるキーコードの設定例 を示すフローチャートである。
[図 13]本発明の実施の形態 2による半導体集積回路装置のブロック図である。
[図 14]図 13の半導体集積回路装置におけるリセットシーケンスを示した説明図であ る。
[図 15]図 14のリセットシーケンスにおけるプロテクト処理制御部の設定処理を示すフ ローチャートである。
[図 16]図 13の半導体集積回路装置に設けられたフラッシュメモリにおけるプロテクト エリアの任意設定処理を示すフローチャートである。
[図 17]図 16におけるフラッシュメモリのメモリマップの補足説明図である。
発明を実施するための最良の形態
[0021] 以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態 を説明するための全図において、同一の部材には原則として同一の符号を付し、そ の繰り返しの説明は省略する。
[0022] (実施の形態 1)
図 1は、本発明の実施の形態 1による半導体集積回路装置のブロック図、図 2は、 図 1の半導体集積回路装置に設けられたフラッシュメモリにおけるメモリマップの一例 を示した説明図、図 3は、図 1の半導体集積回路装置に設けられた RAMにおけるメ モリマップの一例を示した説明図、図 4は、図 1の半導体集積回路装置に設けられた バスステートコントローラの一部構成例を示した説明図、図 5は、図 1の半導体集積回 路装置に設けられたフラッシュメモリにおける消去禁止制御回路、および書き換え禁
止制御回路のブロック図、図 6は、図 1の半導体集積回路装置に設けられたフラッシ ュメモリのユーザアクセスエリアにおける読み出し制御動作例を示すタイミングチヤ一 ト、図 7は、図 1の半導体集積回路装置に設けられたフラッシュメモリのユーザァクセ スエリア力 プロテクトエリアを読み出す場合の制御動作例を示すタイミングチャート、 図 8は、図 1の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリアか らプロテクトエリアを読み出す場合の制御動作例を示すタイミングチャート、図 9は、 図 1の半導体集積回路装置に設けられたフラッシュメモリのプロテクトエリア力も RAM のプロテクトエリアのデータを読み出す場合の制御動作例を示すタイミングチャート、 図 10は、図 1の半導体集積回路装置に設けられた RAMの処理例を示した説明図、 図 11は、図 1の半導体集積回路装置における第一ユーザによるキーコードの設定例 を示すフローチャート、図 12は、図 1の半導体集積回路装置におけるエンドユーザに よるキーコードの設定例を示すフローチャートである。
[0023] 本実施の形態 1において、半導体集積回路装置 1は、図 1に示すように、 CPU (中 央処理装置) 2、バスステートコントローラ (プロテクト動作制御部) 3、 RAM (揮発性 記憶部) 4、 SCI (Serial Communication Interface) 5などを含む周辺回路 6、 およびフラッシュメモリ 7に例示される不揮発性半導体メモリなど力も構成されている。
[0024] CPU2は、フラッシュメモリ(不揮発性記憶部) 7に格納された命令を読み出し、所 定の処理を行う。バスステートコントローラ 3は、アドレスバスやデータバスなどを含む 内部バス Bにおける信号の転送を制御するとともに、該内部バス Bの状態を制御する
。 RAM (揮発性メモリ) 4は、随時読み出し Z書き込みが可能なメモリであり、 CPU2 のワークエリアとして用いられる。
[0025] SCI5は、外部接続されるデバイスとシリアル通信を行うインタフェースである。周辺 回路 6は、そのほかに、たとえば、タイマ、 WDT(Watch Dog Timer)、 TPU (Tim er Pulse Unit)、 AZD (AnalogZDigital)変^^、および DZA(DigitalZAn alog)変翻など力 構成されて!、る。
[0026] タイマは、たとえば、 8ビットのカウンタをベースとしたタイマである。 WDTは、半導 体集積回路装置 1の暴走などの監視を行う。 TPUは、 PWM (Pulse Width Mod ulation)波形を出力することのできるタイマである。 AZD変換器は、アナログ信号を
デジタル信号に変換して出力する。 DZA変換器は、デジタル信号をアナログ信号 に変換して出力する。
[0027] フラッシュメモリ 7は、電気的にデータの書き換え Z消去が可能な不揮発性半導体 メモリであり、 CPU2によって実行されるプログラム命令を含む制御プログラムなどを 格納する。フラッシュメモリ 7は、 CPU2からの指示に応じてデータの書き込み Z読み 出しや消去などを行う。
[0028] これら CPU2、バスステートコントローラ 3、 RAM4、 SCI5などを含む周辺回路 6、 およびフラッシュメモリ 7は、内部バス Bにより相互に接続されている。
[0029] また、 CPU2からは、次に読み出される命令のアドレスを示すプログラムカウンタの 値、書き込みを許可するライト信号、ならびに読み出しを許可するリード信号がバスス テートコントローラ 3に入力されるように接続されて 、る。
[0030] RAM4には、バスステートコントローラ 3から出力された RAMセレクト信号 Sl、ライ ト信号、およびリード信号がそれぞれ入力されるように接続されている。 RAMセレクト 信号 S1は、 RAM4を選択する信号である。ライト信号は、 RAM4のライトを許可する 信号であり、リード信号は RAM4のリードを許可する信号である。
[0031] SCI5には、シリアルセレクト信号、ライト信号、ならびにリード信号がそれぞれ入力 されるように接続されている。シリアルセレクト信号は、 SCI5を選択する信号である。 ライト信号は、 SCI5のライトを許可する信号であり、リード信号は SCI5のリードを許可 する信号である。
[0032] フラッシュメモリ 7には、フラッシュメモリセレクト信号、ライト信号、およびリード信号 がそれぞれ入力されるように接続されている。フラッシュメモリセレクト信号は、フラッシ ュメモリ 7を選択する信号である。ライト信号は、フラッシュメモリ 7のライトを許可する信 号であり、リード信号は該フラッシュメモリ 7のリードを許可する信号である。
[0033] フラッシュメモリ 7は、メモリマット (メモリアレイ部) 7a、および制御回路 (制御部) 7b から構成されている。
[0034] メモリマット 7aは、記憶の最小単位であるメモリセルが規則正しくアレイ状に並べら れており、アドレスバッファ、行デコーダ、列デコーダ、およびセンスアンプなどの周辺 回路を含んでいる。制御回路 7bは、 CPU2から入力される各種制御用信号を一時
的に格納し、動作ロジックの制御を行う。
[0035] 図 2は、フラッシュメモリ 7のメモリマット 7aにおけるメモリマップの一例を示した説明 図である。
[0036] 図示するように、メモリマット 7a、ユーザアクセスエリア UAとプロテクトエリア(第 1の プロテクトメモリ領域) PAと力も構成されている。ユーザアクセスエリア UAは、ユーザ がアクセスできる複数の領域 (ブロック)力 構成されている。また、プロテクトエリア P Aは、プログラムやデータなどが格納された領域 (ブロック)であり、これらプログラムや データなどの読み出しが制限される。プロテクトエリア PAは一つの連続したアドレス 領域のみに限られず、例えば、複数の領域に配置されていてもよい。
[0037] 図 3は、 RAM4におけるメモリマップの一例を示した説明図である。
[0038] RAM4においても同様に、ユーザアクセスエリア UA1とプロテクトエリア(第 2のプロ テクトメモリ領域) PA1と力も構成されている。ユーザアクセスエリア UA1は、フラッシ ュメモリ 7などのデータを展開する領域であり、プロテクトエリア PA1は、フラッシュメモ リ 7のプロテクトエリア PA (第 1のプロテクトメモリ領域)に格納されたプログラムのヮー クエリアとして用いられる領域である。
[0039] メモリマット 7aのプロテクトエリア PAに格納されているプログラムやデータは、該プロ テクトエリア PA内のプログラムによって読み出すことは可能となっている力 該メモリ マット 7aのユーザアクセスエリア UAや RAM4のユーザアクセスエリア UA1やプロテ タトエリア PA1に格納されたプログラムからの読み出しは不可となっている。
[0040] また、 RAM4のプロテクトエリア PA1に格納されているデータなどは、メモリマット 7a のプロテクトエリア PA力 読み出すことは可能である力 そのほかのエリア (メモリマツ ト 7aのユーザアクセスエリア UA、および RAM4のユーザアクセスエリア UA、プロテ タトエリア PA1)力もの読み出しは不可となって 、る。
[0041] さらに、フラッシュメモリ 7は、後述するキーコードエリア KA (図 5)に所定のキーコー ドを設定するまでは、フラッシュメモリ 7のプロテクトエリア PAにプログラムやデータな どを RAM4のユーザアクセスエリア UA1から書き換え Z消去することが可能となって いる。所定のキーコードを設定するまでは、フラッシュメモリ 7のプロテクトエリア PAや ユーザアクセスエリア UAやユーザアクセスエリア UA1、何れの領域からもそれぞれ
の領域に対してアクセスが可能となる。
[0042] キーコードが設定された場合には、フラッシュメモリ 7のプロテクトエリア PAを書き換 え Z消去することが不可となる。
[0043] RAM4のプロテクトエリア PA1に格納されているデータなどは、フラッシュメモリ 7の プロテクトエリア PAから書き換え/消去することが可能となって 、るが、そのほかのェ リア(フラッシュメモリ 7のユーザアクセスエリア UA、 RAM4のユーザアクセスエリア U Al、プロテクトエリア PA1)力もの書き換え Z消去は不可となっている。更に、キーコ ードの設定有無に関わらず RAMのプロテクトエリア PA1は、プロテクト動作制御部の 制御によってフラッシュメモリ 7のプロテクトエリア PA以外力もの書き換え Z消去が禁 止される。
[0044] また、フラッシュメモリ 7において、読み出しが禁止されているプロテクトエリア PAの プログラムやデータなどをユーザアクセスエリア UAから読み出した場合には、たとえ ば、常に H' FFのデータが読み出される。
[0045] ここでは、フラッシュメモリ 7に書き込まれている初期値のデータにあわせて H' FFと したが、この場合に読み出されるデータは、ハイインピーダンス状態 (Hi— Z)以外で あればよぐたとえば、 H' 00や前値保持などの無意味なデータ、ユーザが設定した 任意の値などであってもよ 、。
[0046] 同様に、 RAM4にお!/、て、読み出しが禁止されて!、るプロテクトエリア PA1のプロ グラムやデータなどをユーザアクセスエリア UA1から読み出した場合には、たとえば
、常に H' 00のデータが読み出される。
[0047] ここでも、 RAM4の NOP命令にあわせて H ' 00とした力 読み出されるデータは、 ハイインピーダンス状態 (Hi— Z)以外であればよぐたとえば、 H' FFや前値保持など の無意味なデータ、ユーザが設定した任意の値などであってもよ 、。
[0048] 図 4は、バスステートコントローラ 3の一部構成例を示した説明図である。
[0049] バスステートコントローラ 3は、図示するように、セレクタ 8— 11、否定論理和回路 12
, 13、およびドライバ 14, 15など力も構成されている。
[0050] セレクタ 8— 11の一方の入力部には、 CPU2 (図 1)力も出力されるアドレス信号が 入力されるようにそれぞれ接続されており、該セレクタ 8— 11の他方の入力部には、
CPU2から出力されるプログラムカウンタ値 (PC値)が入力されるようにそれぞれ接続 されている。
[0051] セレクタ 8は、アドレス信号力 フラッシュメモリ 7のユーザアクセスエリア UA (図 2)を 示すアドレス H, 00— 0000— H, 00_FFFF、またはアドレス H, 02— 0000— H, 0 3_FFFF、あるいはフラッシュメモリ 7のプロテクトエリア PA (図 2)を示すアドレス H, 01— 0000— H' Ol— FFFF、かつプログラムカウンタの値が、 H, 01— 0000— 01 —FFFFとなった場合にフラッシュメモリセレクト信号がアクティブとなる' 0' (Loレべ ル信号)を出力し、そのほかの場合には、該フラッシュメモリセレクト信号力 Sインァクテ イブとなる' 1 ' (Hiレベル信号)を出力する。つまり、 CPU2が出力するアドレス値がフ ラッシュメモリ 7のユーザアクセスエリア UAを示す場合はプログラムカウンタ値によら ずアクセスが可能である。更に、アドレス値がフラッシュメモリ 7のプロテクトエリア PA を示し、かつプログラムカウンタの値もフラッシュメモリ 7のプロテクトエリア PAを示す 場合、フラッシュメモリ 7はアクセス可能な状態、つまりセレクト信号がアクティブ状態と なる。
[0052] セレクタ 9は、アドレス信号が、 RAM4のユーザアクセスエリア UA1 (図 3)を示すァ ドレス H' FF— D800— H' FF— EFFF、または RAM4のプロテクトエリア PA1 (図 3) を示すアドレス H' FF— D000— H' FF— D7FF、かつプログラムカウンタの値が、 H ,01— 0000— 01_FFFF (フラッシュメモリ 7のプロテクトエリア PAを示すアドレス)と なった場合に RAMセレクト信号がアクティブとなる' 0' (Loレベル信号)を出力し、そ のほかの場合には、該 RAMセレクト信号がインアクティブとなる ' (Hiレベル信号) を出力する。つまり、 CPU2が出力するアドレス値が RAM4のユーザアクセスエリア UA1を示す場合はプログラムカウンタ値によらずアクセスが可能である。更に、プロ グラムカウンタ値がフラッシュメモリ 7のプロテクトエリア PAを示し、アドレス値が RAM 4のプロテクトエリア PA1を示す場合は、 RAM4はアクセス可能な状態となる。
[0053] セレクタ 10は、アドレス信号が、フラッシュメモリ 7のプロテクトエリア PAを示すアドレ ス H, 01— 0000— H, 01— FFFF、かつプログラムカウンタの値が H, 01— 0000— 01— FFFF以外となった場合に、,0,の信号を出力し、アドレス H,01— 0000— H, 01 FFFF、かつプログラムカウンタの値が H, 01 0000— 01 FFFFの場合に
は、 ' 1 'の信号を出力する。
[0054] セレクタ 11は、アドレス信号が、 RAM4のプロテクトエリア PA1を示すアドレス H,F F— DOOO— H' FF— D7FF、かつプログラムカウンタの値が H, 01— OOOO— 01— FFFF以外となった場合に、,0,の信号を出力し、アドレス値が H' FF— D000— H, FF— D7FF、かつプログラムカウンタの値が H, 01— 0000— 01— FFFFの場合に は、 ' 1 'の信号を出力する。
[0055] このように、フラッシュメモリ 7のプロテクトエリア PAをリード Zライトする際のフラッシ ュメモリ 7のセレクト条件としては、プログラムカウンタの値とアドレス信号の値と力 い ずれもフラッシュメモリ 7のプロテクトエリア PAに一致する場合にのみ、フラッシュメモ リセレクト信号が有効になる。上記一致する場合以外はフラッシュメモリセレクト信号 は無効となる。
[0056] RAM4においても、該 RAM4のプロテクトエリア PA1をリード Zライトする場合の R AM4のセレクト条件としては、プログラムカウンタの値がフラッシュメモリ 7のプロテクト エリア PAで、かつアドレス値が RAM4のプロテクトエリア PA1である場合に限って R AMセレクト信号が有効となる。上記の場合以外には RAMセレクト信号は無効となる
[0057] 否定論理和回路 12は、セレクタ 10から出力される信号とリード信号との否定論理 和をとり、ドライバ 14の制御部に出力する。否定論理和回路 12は、アドレス信号が、 フラッシュメモリ 7のプロテクトエリア PAを示すアドレス H, 01—0000— H, 01— FFF F、かつプログラムカウンタの値が H' 01— 0000— 01— FFFF以外となり、かつァク ティブなリード信号(, 0,)が入力された際にドライバ 14からフラッシュメモリ 7の初期値 である H' FFFFが出力されるように制御信号を出力する。上記制御に従い、内部バ ス Bのデータ信号には H 'FFFFが出力される。ここで、出力される信号の値は H' FF FFに限られず、出力値を任意に設定することも可能である。つまり CPU2が出力する アドレス信号に従ったフラッシュメモリ 7からの読み出しデータでない限り、どのような 値が出力可能な構成であってもよい。
[0058] 否定論理和回路 13は、セレクタ 11から出力される信号とリード信号との否定論理 和をとりドライバ 15の制御部に出力する。否定論理和回路 13は、アドレス信号が、 R
AM4のプロテクトエリア PA1を示すアドレス H, FF— DOOO— H, FF— D7FF、かつ プログラムカウンタの値が H, 01—0000— H, 01— FFFF以外となり、かつアクティブ なリード信号(,0,)が入力された際にドライバ 15から RAM4の NOP命令にあわせた 値である H' OOOOが出力されるように制御信号を出力する。上記制御に従い、内部 バス Bのデータ信号には H '0000が出力される。ここで、出力される信号の値は H' O 000に限られず、出力値を任意に設定することも可能である。つまり CPU2が出力す るアドレス信号に従った RAM4からの読み出しデータでない限り、どのような値が出 力可能な構成であってもよ ヽ。
[0059] ここで、 CPU2からフラッシュメモリ 7、または' 0' )が出力された場合で、上記フラッ シュメモリセレクト信号 RAMセレクト信号が無効である場合にはフラッシュメモリ 7およ び RAM4へのアクセスが禁止されるため、データ信号は、たとえば前値保持の状態 となる。
[0060] 図 5は、フラッシュメモリ 7における該フラッシュメモリ 7の動作制御を司る制御回路 7 bに設けられた消去禁止制御回路 (消去禁止制御部) 16、ならびに書き換え禁止制 御回路(書き換え禁止制御部) 17のブロック図である。
[0061] 消去禁止制御回路 16は、フラッシュメモリ 7の消去禁止を制御する回路であり、予 めメモリマット 7aのキーコードエリア KAに書き込まれたキーコード (第 1の設定値)が 予め設定されて 、るキーコード (第 2の設定値)と一致した場合、メモリマット 7aのプロ テクトエリア PAに対するデータへの消去が発生した際に該プロテクトエリア PAの消 去を禁止する。
[0062] 消去禁止制御回路 16は、キーコード発生部(キーコード発生回路) 18、排他的否 定論理和回路 (消去制御回路) 19、および論理積回路 (消去制御回路) 20から構成 されている。キーコード発生部 18は、予め設定するキーコード (第 2の設定値、たとえ ば、 H' 1234)をノヽードウエアによって出力する回路力もなる。
[0063] 排他的否定論理和回路 19の一方の入力部には、キーコード発生部 18が生成した キーコード (Η' 1234)が入力されるように接続されており、該排他的否定論理和回 路 19他方の入力部には、キーコードエリア ΚΑに格納されているキーコード (第 1の 設定値)が入力されるように接続されて ヽる。
[0064] 論理積回路 20の一方の入力部には、ィレースブロックセレクタ EBS力 出力される ィレースブロック信号 EB9が入力されるように接続されて!、る。ィレースブロックセレク タ EBSは制御回路 7bに設けられており、どのブロックを消去するかを選択するレジス タのうちの 1つである。このィレースブロックセレクタ EBSは、フラッシュメモリ 7のメモリ マット 7aにおけるプロテクトエリア PA(Block9)を消去する際に, 0,のィレースブロッ ク信号 EB9を出力する。
[0065] 論理積回路 20の他方の入力部には、排他的否定論理和回路 19から出力される信 号が入力されるように接続されている。論理積回路 20の出力部には、フラッシュメモリ 7の読み出し Z書き込みを制御する読み出し Z書き込み制御回路 30の入力部が接 続されており、論理積回路 20の出力部からィレースブロック制御信号 EBC9が出力 される。
[0066] 上記キーコード発生部 18が生成したキーコード (第 2の設定値)がキーコードエリア に格納されているキーコード (第 1の設定値)に一致する場合、上記消去禁止制御回 路 16はィレースブロック制御信号が無効となるように制御し、上記読み出し Z書き込 み制御回路 30は消去動作を禁止する。
[0067] 上記ィレースブロック制御信号 EBC9が有効な状態の時、上記読み出し Z書き込 み制御回路 30はプロテクトエリア PA (Block9)に対する消去制御を行う。
[0068] ここで、フラッシュメモリ 7のメモリセル部に複数のプロテクトエリアを設置する場合に は、プロテクトエリア毎に上記消去禁止制御回路 16を用意すればよい。これにより複 数のプロテクトエリアに対する消去制御が可能となる。
[0069] また、書き換え禁止制御回路 17は、キーコード発生部(キーコード発生回路) 21、 アドレス判定部 (アドレス判定回路) 22、排他的否定論理和回路 (キーコード判定部) 23、インバータ (書き換え制御回路) 24— 26、否定論理積回路 (書き換え制御回路) 27、保持回路 (書き換え制御回路) 28、および論理積回路 (書き換え制御回路) 29 から構成されている。
[0070] キーコード発生部 21は、予め設定するキーコード (第 3の設定値、たとえば、 H' 12 34)をノ、一ドウエアによって出力する回路力もなる。排他的否定論理和回路 23の一 方の入力部には、キーコード発生部 18が生成したキーコード (Η' 1234)が入力され
るように接続されており、該排他的否定論理和回路 23の他方の入力部には、キーコ 一ドエリア KAに格納されて 、るキーコード (第 1の設定値)が入力されるように接続さ れている。
[0071] アドレス判定部 22には、アドレス信号が入力されており、該アドレス判定部 22は、ァ ドレス信号がアドレス H, 01— 0000— H, 01— FFFFの場合には、,0,を出力し、そ れ以外の場合には' 1 'を出力する。
[0072] インバータ 24— 26の入力部には、メモリセレクト信号(図 1)、ライト信号(図 1)、およ びアドレス判定部 22から出力される判定信号がそれぞれ入力されるように接続され ている。
[0073] 否定論理積回路 27の入力部には、排他的否定論理和回路 23の出力部、インバー タ 24— 26の出力部がそれぞれ接続されており、該否定論理積回路 27の出力部に は、保持回路 28の入力部が接続されている。この保持回路 28は、フラッシュメモリ 7 への書き込みが発生するまで、その信号状態を保持する回路である。
[0074] 論理積回路 29の一方の入力部には、プログラミングビット PBから出力されるプログ ラムモード信号 Pが入力されるように接続されている。プログラミングビット PBは、書き 換えを開始するプログラムモードを解除 Z遷移させるビットであり、 ' 0,の際にはプロ グラムモードが解除となり、, 1 'の場合にはプログラムモードに遷移する。
[0075] 論理積回路 29の出力部には、読み出し Z書き込み制御回路 30の入力部が接続さ れており、論理積回路 29の出力部力もプログラムモード信号 Pが出力される。
[0076] 上記キーコード発生部 21が生成したキーコード (第 3の設定値)がキーコードエリア に格納されているキーコード (第 1の設定値)に一致する場合、上記読み出し Z書き 込み制御回路 30は書き換え動作を禁止する。
[0077] 上記プログラムモード信号 Pが有効な状態の時、上記読み出し Z書き込み制御回 路 30はプロテクトエリア PA (Block9)に対する書き換え制御を行う。
[0078] ここでは、キーコードを H, 1234とした力 該キーコードは、フラッシュメモリ 7に格納 されて 、る初期値 (Η' FFFF)以外であれば、どのようなデータでもよ!/、。
[0079] 次に、本実施の形態における半導体集積回路装置 1の作用について説明する。
[0080] 図 6から図 9に示される CPU2によって実行される命令は一つの具体例であって、
それだけに限られず、各種の命令が実行される。アドレスに対応したメモリに格納さ れている命令やデータの値(たとえば、図 6のアドレス H '00— 4008には「H, 6828」 が格納される)もプログラムによって様々である。本発明ではノ スステートコントローラ 3によるアドレス値およびプログラムカウンタの値の比較によって各種メモリおよびそ の他の周辺回路に対するアクセスが制御されるものである。
[0081] 始めに、フラッシュメモリ 7のユーザアクセスエリア UAにおける読み出し制御動作に ついて、図 6を用いて説明する。
[0082] 図 6の上方は、フラッシュメモリ 7による読み出し制御の説明図を示しており、その下 方には、各部信号のタイミングチャートを示している。
[0083] この図 6のタイミングチャートにおいては、上方から下方にかけて、クロック信号 φ、 CPU2から出力されるプログラムカウンタの値、 CPU2から出力されるアドレス信号、 バスステートコントローラ 3から出力されるフラッシュメモリセレクト信号、 CPU2から出 力されるデータ信号、およびプログラムカウンタの値がフラッシュメモリ 7のプロテクト エリア PAを示しているか否かを示す状態信号 (PC =Η ' 01— xxxx)をそれぞれ示し ている。
[0084] まず、 CPU2のプログラムカウンタは、アドレス Η, 00— 4000番地を示し、アドレス Η ,00— 4000を内部バスに出力し、アドレス Η, 00— 4000番地における命令を CPU 2カ モリから順次読み出す。続いて、 CPU2は、汎用レジスタ(E2)に H, 0000を格 納する。
[0085] その後、 CPU2は、アドレス H, 00— 4004番地の命令を読み出し、続いて、ァドレ ス H, 00— 4006を読み出して、汎用レジスタ (R2)に H' OCOOを格納する。
[0086] そして、 CPU2は、アドレス H, 00— 4008の命令を読み出して、該命令を解析(汎 用レジスタ ER2が示すアドレス値が示すメモリに格納されて 、るデータをリード)した 後、その命令を実行してアドレス H' 00_0C00のデータを読み出し、汎用レジスタ( R0L)に H, 1234を格納する。
[0087] この場合、フラッシュメモリ 7におけるプロテクトエリア PAの読み出しがない、つまり アドレス値がプロテクトエリア PAを示さな 、ため、制限なくプログラム/データなどを 読み出すことができる。
[0088] また、フラッシュメモリ 7のユーザアクセスエリア UA力もプロテクトエリア PAを読み出 す場合の制御動作について、図 7を用いて説明する。
[0089] この図 7においても、上方に、フラッシュメモリ 7による読み出し制御の説明図を示し ており、その下方に、各部信号のタイミングチャートを示している。タイミングチャート は、上方から下方にかけて、クロック信号 φ、 CPU2から出力されるプログラムカウン タの値、 CPU2から出力されるアドレス信号、バスステートコントローラ 3から出力され るフラッシュメモリセレクト信号、データ、およびプログラムカウンタがフラッシュメモリ 7 のプロテクトエリア PA力否かを示す状態信号 (PC=H '01— xxxx? )をそれぞれ示 している。
[0090] まず、 CPU2のプログラムカウンタ力 アドレス H' OO— 400Aを示し、内部バスにァ ドレス H '00— 400Aを出力し、アドレス H, 00— 400A番地の命令をメモリ力 順次 読み出し、汎用レジスタ(E2)に H '0001を格納する。その後、 CPU2は、アドレス H, 00— 400E、およびアドレス H 'OO— 4010番地を順次読み出して、汎用レジスタ(R 2)に H, 0000を格納する。その後、 CPU2は、アドレス H' OO— 4012の命令を読み 出して解析 (汎用レジスタ ER2が示すアドレス値が示すメモリに格納されているデー タをリード)を行い、それに基づいて、 CPU2は、アドレス H, 01— 0000のデータを読 み出す。
[0091] このとき、アドレス H' 01— 0000は、フラッシュメモリ 7のプロテクトエリア PA内であり 、かつ CPU2から出力されるプログラムカウンタの値がプロテクトエリア PA外(ここで は H 'OO— 4014)となっているので、バスステートコントローラ 3から出力されるフラッ シュメモリセレクト信号がインアクティブ(, 1,)となり、バスステートコントローラ 3の制御 により、内部バス Bのアドレス信号には、 H' FFFFのデータが出力されることになる。
[0092] 上記構成により、ユーザエリア UAからプロテクトエリア PAに対するデータ読み出し アクセスを禁止することが可能となる。
[0093] さらに、フラッシュメモリ 7のプロテクトエリア PAからプロテクトエリア PAを読み出す 場合の制御動作について、図 8を用いて説明する。
[0094] 図 8も、上方に、フラッシュメモリ 7による読み出し制御の説明図を示しており、その 下方に、各部信号のタイミングチャートを示している。タイミングチャートは、上方から
下方に力けて、クロック信号 φ、 CPU2から出力されるプログラムカウンタの値、 CPU 2から出力されるアドレス信号、バスステートコントローラ 3から出力されるフラッシュメ モリセレクト信号、データ、およびプログラムカウンタがフラッシュメモリ 7のプロテクトェ リア PAか否かを示す状態信号 (PC=H '01— xxxx? )をそれぞれ示して ヽる。
[0095] まず、 CPU2力 アドレス H, 01—0000、およびアドレス H,01—0002番地に格納 される命令を順次読み出し、汎用レジスタ (E2)に H' 0001を格納する。その後、 CP U2は、アドレス H, 01—0004、アドレス H, 01— 0006の命令をそれぞれ読み出して 汎用レジスタ (R2)に H' 0100を格納する。
[0096] 続いて、 CPU2は、アドレス H, 01— 0008の命令を読み出して解析(汎用レジスタ ER2が示すアドレスが示すメモリに格納されて 、るデータをリード)を行 、、それに基 づいて、 CPU2は、命令を実行してアドレス H, 01—0100に格納されるデータを読 み出し、汎用レジスタ(R0L)に H, 1234を格納する。
[0097] この場合、プロテクトエリア PA力 プロテクトエリア PAを読み出すので、プログラム カウンタの値もプロテクトエリア PA内となっており、フラッシュメモリセレクト信号がァク ティブ( ' 0 ' )のままとなり、フラッシュメモリ 7から読み出された正常なデータが内部バ ス Bのデータ信号 (Data)へ出力されることになる。
[0098] 次に、フラッシュメモリ 7のプロテクトエリア PAから RAM4のプロテクトエリア PA1の データを読み出す場合の制御動作について、図 9を用いて説明する。
[0099] この図 9においては、上方に、フラッシュメモリ 7、および RAM4による読み出し制御 の説明図を示しており、その下方に、各部信号のタイミングチャートを示している。タ イミングチャートは、上方から下方にかけて、クロック信号 φ、 CPU2から出力される プログラムカウンタの値、 CPU2から出力されるアドレス信号、同様にバスステートコン トローラ 3から出力される RAMメモリセレクト信号、データ、およびプログラムカウンタ の値がフラッシュメモリ 7のプロテクトエリア PAか否かを示す状態信号 (PC = H ' 01— xxxx? )をそれぞれ示して!/、る。
[0100] まず、 CPU2力 アドレス H, 01—5000、およびアドレス H, 01— 5002の命令を順 次読み出し、汎用レジスタ(E2)に H' FFFFを格納する。その後、 CPU2は、アドレス H' 01 5004、ならびにアドレス H, 01 5006の命令を順次読み出し、汎用レジス
タ (R2)に H, D000を格納する。
[0101] その後、 CPU2は、アドレス H, 01— 5008の命令を読み出し、その命令の解析(汎 用レジスタ ER2が示すアドレスが示すメモリに格納されて 、るデータをリード)を行!ヽ
、それに基づいて、 CPU2は、 RAM4におけるアドレス H' FF— D000のデータを読 み出して汎用レジスタ (R0L)に読み出した H' 1234を格納する。
[0102] この場合、プログラムカウンタの値(H '01— 50xx)は、プロテクトエリア PA1にある ので、バスステートコントローラ 3から出力される RAMセレクト信号がアクティブ(,0,) となり、正常なデータが RAM4から読み出されることになる。
[0103] ここで、ワークエリアとして用いられる RAM4の処理例について、図 10を用いて説 明する。
[0104] この図 10では、たとえば、文字データを圧縮する場合の手順について説明する。
図 10の左側は、 RAM4とフラッシュメモリ 7との説明図であり、右側は、処理手順のフ ローチャートである。
[0105] まず、文字データを RAM4上に展開し (ステップ S 101)、 RAM4のプロテクトエリア PA1へサブルーチンジャンプする(ステップ S 102)。その後、プロテクトエリア PAに 格納されたプログラムに基づく圧縮処理において、圧縮処理の中間データ、圧縮処 理結果をプロテクトエリア PA1に格納する(ステップ S 103)。
[0106] 続いて、プロテクトエリア PAに格納されたプログラムに基づく暗号化処理において 、暗号化処理の中間データ、暗号ィ匕結果をプロテクトエリア PA1に格納し (ステップ S 104)、暗号ィ匕結果データをユーザアクセスエリア UA1に格納する(ステップ S 105)
[0107] その後、リターンサブルーチンにより(ステップ S106)、暗号化結果データを、たとえ ば半導体集積回路装置 1に外部接続された外部メモリに格納する (ステップ S107)。
[0108] このように、圧縮、暗号化のプログラム処理を RAM4の Pプロテクトエリア PA1で処 理することによって、該プログラムがどのような処理を行っているかを推測しに《する ことができる。
[0109] 次に、図 5に示す制御回路 7bに設けられた消去禁止制御回路 16、および書き換え 禁止制御回路 17の動作について説明する。
[0110] まず、フラッシュメモリ 7の消去動作において、プロテクトエリア PAのブロック(Block 9)が指定されると、ィレースブロックセレクタ EBSから、,0,のィレースブロック信号 E B9が出力される。
[0111] このとき、消去禁止制御回路 16は、キーコードエリア KAに格納されているキーコー ド (第 1の設定値)を読み出し、排他的否定論理和回路 19によって、読み出した該キ 一コードとキーコード発生部 18が生成したキーコード (第 2の設定値)との排他的否 定論理和をとり、読み出したキーコードとキーコード発生部 18が生成したキーコード とが一致した際に、後段の論理積回路 20から、,0'のィレースブロック制御信号 EBC 9が読み出し Z書き込み制御回路 30に出力される。このィレースブロック制御信号 E BC9によって、フラッシュメモリ 7における消去動作が禁止されることになる。
[0112] また、フラッシュメモリ 7の書き換え動作では、まず、プログラミングビット PBから、, 1, のプログラムモード信号 Pが出力され、書き換え先を指定するアドレスが入力される。
[0113] アドレス判定部 22は、入力されたアドレス信号がプロテクトエリア PA内力否かを判 定する。また、排他的否定論理和回路 19では、キーコード発生部 21が生成したキー コード (第 3の設定値)とキーコードエリア KAに格納されているキーコード (第 1の設 定値)とを比較し、一致している際には' 0'の信号を出力する。
[0114] さらに、フラッシュメモリ 7の書き換えであるので、それぞれアクティブ(,0,)のフラッ シュメモリセレクト信号、およびライト信号がバスステートコントローラ 3から出力されて いる。
[0115] このとき、入力されたアドレスがプロテクトエリア PA内の場合には、アドレス判定部 2 2から、,0'の信号が出力され、保持回路 28を介して、,0'の信号が論理積回路 29 の他方の入力部に入力される。
[0116] よって、プログラミングビット PBからは、, 1 'のプログラムモード信号 Pが出力されて いるので、論理積回路 29からは、,0'のプログラムモード信号 Pが読み出し Z書き込 み制御回路 30に出力される。これにより、フラッシュメモリ 7における書き換え動作が 禁止されること〖こなる。
[0117] また、入力されたアドレスがプロテクトエリア PA外の場合には、アドレス判定部 22か ら、 ' 1 'の信号が出力されるので論理積回路 29から出力されるプログラムモード信号
Pは、,1,となり、フラッシュメモリ 7の書き換えが行われる。
[0118] 次に、第一ユーザ (たとえば、ソフト IPベンダ)がプログラムを書き込んだ後にエンド ユーザに半導体集積回路装置 1を出荷し、第一ユーザにおいてキーコードを設定す る際の処理にっ 、て、図 11のフローチャートを用いて説明する。
[0119] まず、第 1ユーザが作成したキーとなるプログラム (第 1プログラム)のデバッグを開 始し (ステップ S 201)。キーとなるプログラムの書き込みと消去 (ステップ S202)をデ ノ ッグが完了するまで行う (ステップ S203)。そして、デバッグが完了すると、キーコ 一ドエリア KAにキーコード (第 1の設定値)を書き込み (ステップ S 204)、ユーザァク セスエリア UAに格納されて 、るデバッグ用プログラム(第 3プログラム)などを消去し てエンドユーザに出荷する (ステップ S205)。
[0120] その後、エンドユーザ側にお 、て、エンドユーザが作成したメインプログラム (第 2プ ログラム)のデバッグを開始する (ステップ S301)。デバッグにより発生するメインプロ グラムの書き込み Z消去をデバッグが終了するまで行う(ステップ S302, S303)。
[0121] これらステップ S302, S303の処理では、キーコードが第一ユーザにより設定され て!、るので、エンドユーザによるプロテクトエリア PAに格納されて!、る第一ユーザが 書き込んだプログラム (第 1プログラム)の書き込み Z消去は不可となっている。
[0122] また、エンドユーザによりキーコードを設定する際の処理について、図 12を用いて 説明する。
[0123] まず、エンドユーザにおいて、プロテクトエリア PAに格納されるキーとなるプログラム
(第 1プログラム)およびユーザエリアに格納されるメインプログラム (第 2プログラム)の デバッグを開始する (ステップ S401)。そして、デバッグにより発生するキーとなるプロ グラム (第 1プログラム)およびメインプログラム (第 2プログラム)の書き込み Z消去を 行う(ステップ S402)。
[0124] 続いて、デバッグが終了すると (ステップ S403)、キーコードエリアにキーコード(第 1の設定値)を書き込み、プロテクトエリア PAに書き込まれたキーとなるプログラムを 保護する (ステップ S404)。
[0125] それにより、本実施の形態 1によれば、キーとなるプログラムに対しプロテクトを行う ことが可能であるため、第三者によるキーとなるプログラムの読み出しやコピー、ある
いは変更などを防止することができる。
[0126] (実施の形態 2)
図 13は、本発明の実施の形態 2による半導体集積回路装置のブロック図、図 14は 、図 13の半導体集積回路装置におけるリセットシーケンスを示した説明図、図 15は、 図 14のリセットシーケンスにおけるプロテクト処理制御部の設定処理を示すフローチ ヤート、図 16は、図 13の半導体集積回路装置に設けられたフラッシュメモリ 7におけ るプロテクトエリアの任意設定処理を示すフローチャート、図 17は、図 16におけるフ ラッシュメモリ 7のメモリマップの補足説明図である。
[0127] 本実施の形態 2において、半導体集積回路装置 1は、図 13に示すように、 CPU2、 バスステートコントローラ 3、 RAM4、 SCI (Serial Communication Interface) 5 などを含む周辺回路 6、およびフラッシュメモリ 7に例示される不揮発性半導体メモリ などの前記実施の形態 1と同様の構成となっている。
[0128] 前記実施の形態 1では、フラッシュメモリ 7のプロテクトエリア PAを、アドレス H, 01— 0000— H' 01— FFFFまでの 1つのブロックに固定されていた力 本実施の形態 2の フラッシュメモリ 7では、プロテクトエリア PAの領域を任意に変更することが可能となつ ている。
[0129] フラッシュメモリ 7は、メモリマット 7a、および制御回路 7bから構成されており、該メモ リマット 7aは、記憶の最小単位であるメモリセルが規則正しくアレイ状に並べられてお り、アドレスバッファ、アドレスデコーダ 7al、入出力バッファ 7a2、およびセンスアンプ などの周辺回路を含んでいる。
[0130] 制御回路 7b、 CPU2から入力される制御用信号を一時的に格納し、動作ロジック の制御を行う。制御回路 7bには、プロテクト処理制御部 31が設けられている。
[0131] プロテクト処理制御部 31は、フラッシュメモリ 7におけるプロテクトエリア PAの領域を 任意に変更する制御を行う。また、プロテクトエリア PAには、プロテクトエリア PAの先 頭アドレスを格納する先頭アドレス格納エリア SDA、プロテクトエリア PAの末尾アドレ スを格納する末尾アドレス格納エリア MDA、およびキーコードエリアを格納するキー コードエリア KAが設けられて 、る。
[0132] プロテクト処理制御部 31は、プロテクト処理制御回路 32、アドレス生成回路 33、リ
ード信号生成回路 34、アドレス Zキーコード格納レジスタ 35、およびセレクタ 36, 37 から構成されている。
[0133] プロテクト処理制御回路 32、アドレス生成回路 33、リード信号生成回路 34、および アドレス/キーコード格納レジスタ 35には、リセット信号を発生するリセット回路 38か ら出力されたリセット信号が入力されるようにそれぞれ接続されている。
[0134] プロテクト処理制御回路 32には、アドレス生成回路 33、リード信号生成回路 34、な らびにアドレス Zキーコード格納レジスタ 35がそれぞれ接続されており、該プロテクト 処理制御回路 32から出力された信号により、これらの回路が動作を開始する。
[0135] アドレス生成回路 33は、フラッシュメモリ 7のメモリマット 7aに格納されているキーコ ードの格納アドレスを生成する。リード信号生成回路 34は、メモリマット 7aのリード信 号を生成する。アドレス Zキーコード格納レジスタ 35は、メモリマット 7aから読み出し たキーコード、およびプロテクトエリア PAの領域を示すアドレスをそれぞれ格納する。
[0136] またプロテクト処理制御回路 32には、セレクタ 36, 37を制御する制御信号が入力 されるようにそれぞれ接続されている。セレクタ 36は、プロテクト処理制御回路 32から 出力される制御信号に基づいて、アドレス生成回路 33が生成したアドレスと、ノ スス テートコントローラ 3から出力されるアドレスとを切り替えて出力する。
[0137] セレクタ 37は、プロテクト処理制御回路 32から出力される制御信号に基づいて、リ ード信号生成回路 34が生成したリード信号と、バスステートコントローラ 3から出力さ れるリード信号とを切り替えて出力する。
[0138] 図 14は、半導体集積回路装置 1におけるリセットシーケンスを示した説明図であり、 図 15は、図 14のリセットシーケンスにおけるプロテクト処理制御部 31の設定処理を 示すフローチャートである。
[0139] 図 14においては、上方から下方にかけて、システムクロック、半導体集積回路装置 1のリセット端子に入力されるリセット信号、プロテクト処理制御部 31の動作状態、半 導体集積回路装置 1の内部路セット信号、および CPU2 (半導体集積回路装置 1)の 動作状態をそれぞれ示して ヽる。
[0140] まず、半導体集積回路装置の外部ポートの 1つであるリセット端子からリセット信号 が入力され、そのリセット信号が解除となると (ステップ S501)、プロテクト処理制御回
路 32が起動する(ステップ S502)。
[0141] プロテクト処理制御回路 32は、アドレス生成回路 33、ならびにリード信号生成回路
34に対して信号を出力し、これらアドレス生成回路 33、およびリード信号生成回路 3
4を動作させる(ステップ S503)。
[0142] 続いて、プロテクト処理制御回路 32は、メモリマット 7aのキーコードエリア KAに格 納されているデータを読み出し (ステップ S504)、そのデータをアドレス Zキーコード 格納レジスタ 35に格納する(ステップ S505)。
[0143] そして、プロテクト処理制御回路 32は、アドレス Zキーコード格納レジスタ 35にキー コード (第 1の設定値)が格納されている力否かを判断し (ステップ S506)、キーコード が格納されている場合、プロテクト処理制御回路 32は、メモリマット 7aからプロテクト エリア PAの先頭アドレスと末尾アドレスとを読み出して、アドレス Zキーコード格納レ ジスタ 35にそれぞれ格納する(ステップ S507, S508)。
[0144] ステップ S508の処理の終了後、またはステップ S506の処理においてキーコードが ない場合には、半導体集積回路装置の内部リセットを解除する解除信号をリセット回 路 38に出力した後 (ステップ S 509)、プロテクト処理制御回路 32が停止して (ステツ プ S510)半導体集積回路装置 1が動作を開始することになる。
[0145] キーコードの読み出しおよび制御回路 7bに対するキーコードの設定、プロテクトェ リアに対するプロテクトの有無の確認は、リセット解除後に上記フローに従って実行さ れる。半導体集積回路装置 1が通常の動作を開始した後は、図 4に従ったメモリァク セスアドレスに基づ 、た制御を実行する。
[0146] また、プロテクトエリア PAおよびプロテクトエリア PA1がそれぞれ固定的な一つの領 域とする場合はステップ S507, S508は実行されない。
[0147] また、図 16は、フラッシュメモリ 7におけるプロテクトエリア PAの任意設定処理を示 すフローチャートであり、図 17は、図 16におけるフラッシュメモリ 7のメモリマップの補 足説明図である。
[0148] まず、プログラムのデバッグを開始し (ステップ S601)、プログラム書き込みと消去( ステップ S602)をデバッグが完了するまで行う(ステップ S603)。そして、デバッグが 完了すると、メモリマット 7aに設けられた先頭アドレス格納エリア SDA、および末尾ァ
ドレス格納エリア MDAにプロテクトエリア PAの任意の先頭アドレスと任意の末尾アド レスとをそれぞれ書き込み、プロテクエリア PAの任意の領域を設定するとともに、キ 一コードエリア KAにキーコードを書き込む(ステップ S604)。
[0149] この場合、先頭アドレス格納エリア SDA、末尾アドレス格納エリア MDAに、ならび にキーコードエリア KAがプロテクトエリア PAの領域内となるように、先頭アドレスと末 尾アドレスとをそれぞれ設定することにより、第三者による該プロテクトエリアの領域変 更読み出し、あるいはキーコードの読み出しや変更などを防止することができる。
[0150] それにより、本実施の形態 2によれば、プロテクトエリア PAの領域を任意変更するこ とができるので、読み出しや書き換えなどを禁止した 、プログラムのデータ容量など に応じてフレキシブルに変更することが可能となるとともに、第三者によるプログラム の読み出しやコピー、あるいは変更などを防止することができる。
[0151] 以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが 、本発明は前記実施の形態に限定されるものではなぐその要旨を逸脱しない範囲 で種々変更可能であることは 、うまでもな!/、。
産業上の利用可能性
[0152] 本発明の半導体集積回路装置は、不揮発性半導体メモリにおける所定のブロック の読み出し、および書き換えを防止する技術に適して 、る。