(57)【特許請求の範囲】
【請求項１】
第１および第２の領域を有する不揮発性メモリと、
前記第１の領域に外部からプログラムをダウンロードするための第１のプログラムと、前記不揮発性メモリの書き換えを行うための第２のプログラムと、を記憶した記憶部と、
前記第１のプログラム、および、前記第１のプログラムにより前記第１の領域にダウンロードされたプログラムを実行する演算部と、を備え、
前記第１の領域は、前記ダウンロードされたプログラムが前記第２のプログラムを呼び出すことにより書き込みおよび消去可能であり、
前記第２の領域は、前記ダウンロードされたプログラムにより消去できず、
前記演算部は、前記第２の領域に記憶されたデータに応じて、前記第１のプログラムを実行して前記第１の領域にプログラムをダウンロードするか、前記ダウンロードされたプログラムを実行するか、を判断することを特徴とする半導体集積回路装置。
【請求項２】
前記演算部は、前記ダウンロードされたプログラムを実行することにより前記第２のプログラムを呼び出し、前記第１のプログラムが実行されるよう前記第２の領域にデータを書き込むことを特徴とする請求項１に記載の半導体集積回路装置。
【請求項３】
第１および第２の領域を有する不揮発性メモリと、
前記第１の領域に外部からプログラムをダウンロードするための第１のプログラムと、前記不揮発性メモリの書き換えを行うための第２のプログラムと、を記憶した記憶部と、
前記第１のプログラム、および、前記第１のプログラムにより前記第１の領域にダウンロードされたプログラムを実行する演算部と、を備え、
前記第１の領域は、前記ダウンロードされたプログラムが前記第２のプログラムを呼び出すことにより書き込みおよび消去可能であり、
前記第２の領域は、前記ダウンロードされたプログラムにより消去できず、
前記第２の領域は、消去制御信号に応じて消去され、
前記演算部は、前記第１の領域にダウンロードされたプログラムを実行する前に、前記第２の領域が消去されないよう、前記消去制御信号を設定することを特徴とする半導体集積回路装置。
【請求項４】
前記第２の領域は、
初回起動時に、前記第１のプログラムを実行させるための第１のデータと、
前記第１の領域にダウンロードされたプログラムを書き換えるか否かを制御するための第２のデータと、
前記第１の領域にダウンロードされたプログラムの書き換えを禁止するための第３のデータと、を記憶することを特徴とする請求項１乃至３のいずれかに記載の半導体集積回路装置。
【請求項５】
前記第２の領域は、
複数のデータを記憶するデータ領域と、
前記複数のデータのそれぞれの履歴情報を記憶する管理領域と、を有することを特徴とする請求項１乃至４のいずれかに記載の半導体集積回路装置。
【請求項６】
プログラムがダウンロードされた第１の領域と、消去制御信号に応じて消去される第２の領域と、を有するメモリの管理方法であって、
前記第２の領域が消去されないよう、前記消去制御信号を設定するステップと、
前記消去制御信号が設定された後に、前記第１の領域にダウンロードされたプログラムを実行するステップと、を備えることを特徴とするメモリの管理方法。
【請求項７】
前記第２の領域に記憶されたデータに応じて、前記第１の領域にダウンロードされた前記プログラムを書き換えるか否かを判断するステップを備えることを特徴とする請求項６に記載のメモリの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路装置およびメモリの管理方法に関する。
【背景技術】
【０００２】
ＳＩＭ（Subscriber Identity Module）カードは携帯電話等に使用されるＩＣ（Integrated Circuit）の一種である。ＳＩＭカードには、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）およびＯＴＰ（One Time Programmable ROM）が搭載される。ＥＥＰＲＯＭはデータの書き込みおよび消去が可能な不揮発性メモリとして使用される。また、ＯＴＰは一回だけ書き込み可能な不揮発性メモリとして使用される。このように２種類の不揮発性メモリを搭載すると、２種類の不揮発性メモリに加え、それぞれの制御回路が必要となり、ＩＣの製造コストが増大するとともに、面積が大型化してしまうという問題がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３１９０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
製造コストを抑制し、小型化が可能な半導体集積回路装置およびメモリの管理方法を提供する。
【課題を解決するための手段】
【０００５】
本実施形態によれば、半導体集積回路装置は、不揮発性メモリと、記憶部と、演算部と、を備える。不揮発性メモリは、第１および第２の領域を有する。記憶部は、前記第１の領域に外部からプログラムをダウンロードするための第１のプログラムと、前記不揮発性メモリの書き換えを行うための第２のプログラムと、を記憶している。演算部は、前記第１のプログラム、および、前記第１のプログラムにより前記第１の領域にダウンロードされたプログラムを実行する。前記第１の領域は、前記ダウンロードされたプログラムが前記第２のプログラムを呼び出すことにより書き込みおよび消去可能であるが、前記第２の領域は、前記ダウンロードされたプログラムにより消去できない。また、前記演算部は、前記第２の領域に記憶されたデータに応じて、前記第１のプログラムを実行して前記第１の領域にプログラムをダウンロードするか、前記ダウンロードされたプログラムを実行するか、を判断する。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に係る半導体集積回路装置１００の概略ブロック図。
【図２】制御回路３１の一例を示す回路ブロック図。
【図３】図２中の各信号を説明する図。
【図４】ノーマル領域２１の書き込みルーチンを示すフローチャート。
【図５】ノーマル領域２１の消去ルーチンを示すフローチャート。
【図６】ＯＴＰ領域２２の書き込みルーチンを示すフローチャート。
【図７】ＯＴＰ領域２２の消去ルーチン。
【図８】図１の半導体集積回路装置１００の各部の処理動作の一例を示すフローチャート。
【図９】各プログラムからのノーマル領域２１およびＯＴＰ領域２２の書き換えの可否を示す図。
【発明を実施するための形態】
【０００７】
以下、半導体集積回路装置およびメモリの管理方法の実施形態について、図面を参照しながら具体的に説明する。
【０００８】
図１は、一実施形態に係る半導体集積回路装置１００の概略ブロック図である。同図の半導体集積回路装置１００は、例えば携帯電話に搭載されるＩＣである。
【０００９】
半導体集積回路装置１００は、電源端子ＶＤＤと、接地端子ＧＮＤと、クロック端子ＣＬＫと、リセット端子ＲＳＴと、入出力端子Ｉ／Ｏとを備えている。電源端子ＶＤＤと接地端子ＧＮＤとの間に電源電圧が供給される。クロック端子ＣＬＫおよびリセット端子ＲＳＴには外部からクロック信号およびリセット信号がそれぞれ入力される。入出力端子Ｉ／Ｏは、例えば外部からプログラムが入力される。その他にも半導体集積回路装置１００は、種々の端子、例えば高速にデータ通信を行うためにアナログ信号を入出力するＳＷＰ端子（不図示）を備えていてもよい。
【００１０】
また、半導体集積回路装置１００は、ＲＯＭ（Read Only Memory、記憶部）１と、ＥＥＰＲＯＭ２と、ロジック回路３と、ＣＰＵ（Central Processing Unit、演算部）４と、を備えている。半導体集積回路装置１００は、ロジック回路３とデータを送受するアナログ回路（不図示）や、データを一時的に記憶するＲＡＭ（不図示）を備えていてもよい。また、ＥＥＰＲＯＭ２ではなく、他の不揮発性メモリであってもよい。
【００１１】
ＲＯＭ１は、３つのプログラム、すなわち、ブートプログラム１１と、ダウンローダ（第１のプログラム）１２と、ＥＥＰＲＯＭ制御ルーチン（第２のプログラム）１３とを記憶している。ブートプログラム１１は、リセット信号によりリセットが解除された後に最初に実行されるプログラムである。ダウンローダ１２はＥＥＰＲＯＭ２に外部からプログラムをダウンロードするプログラムである。ＥＥＰＲＯＭ制御ルーチン１３は、ＥＥＰＲＯＭ２に書き込みおよび消去を行うプログラムであり、ダウンローダ１２やＥＥＰＲＯＭ２にダウンロードされたプログラム（以下、ＥＥＰＲＯＭ２のプログラム、という）から呼び出されて使用される。これらのプログラムはＣＰＵ４により実行される。
【００１２】
ＥＥＰＲＯＭ２はバイト単位で書き込みおよび消去可能な不揮発性メモリである。初期状態では、ＥＥＰＲＯＭ２に記憶されるデータはハイであり、書き込みによりロウに、消去によりハイにそれぞれ設定できる。以下、本明細書では、「書き込み」とは初期状態である領域をハイおよびロウのいずれかに設定することを意味し、「消去」とは書き込まれた領域を初期状態であるハイに設定することを意味するものとする。また、「書き換え」とは「書き込みおよび消去」を意味するものとする。
【００１３】
ＥＥＰＲＯＭ２は、ノーマル領域（第１の領域）２１と、ＯＴＰ（One Time Programmable）領域（第２の領域）２２とを有する。ノーマル領域２１およびＯＴＰ領域２２は、それぞれ互いに異なるアドレスが割り当てられている。
【００１４】
ノーマル領域２１は、外部からダウンロードされたプログラムや、各種データを記憶する。ノーマル領域２１にダウンロードされたプログラムはＣＰＵ４により実行される。本実施形態では、ＥＥＰＲＯＭ２のプログラムから直接ＯＴＰ領域２２に書き換えを行うことはできず、ＲＯＭ１に記憶されたＥＥＰＲＯＭ２制御ルーチン１３を呼び出すことにより、ＯＴＰ領域２２に書き込みのみを行うことができる点である。この点は後に詳述する。
【００１５】
ＯＴＰ領域２２は、データ領域２２１と、管理領域２２２とを有する。データ領域２２１はデータＯＴＰＡ〜ＯＴＰＣ，ＯＴＰ０〜ＯＴＰ１２７を記憶し、管理領域２２２は、データＯＴＰＡ〜ＯＴＰＣ，ＯＴＰ０〜ＯＴＰとそれぞれ対応する履歴情報ＣＯＮＡ〜ＣＯＮＣ，ＣＯＮ０〜ＣＯＮ１２７を記憶する。データおよび履歴情報のそれぞれは１バイトである。
【００１６】
履歴情報とは対応するデータの書き込み履歴である。より具体的には、履歴情報ＣＯＮＡ〜ＣＯＮＣ，ＣＯＮ０〜ＣＯＮ１２７は、対応するデータＯＴＰＡ〜ＯＴＰＣ，ＯＴＰ０〜ＯＴＰ１２７が初期状態である場合はＦＦｈ（末尾のｈは１６進数であることを示す）であり、書き込みが行われると００ｈとなる。この履歴情報を用いて、対応するデータ領域２２１の書き込みを許可または禁止できる。
【００１７】
データ領域２２１のデータＯＴＰＡ〜ＯＰＴＣは、ＥＥＰＲＯＭ２へのプログラムのダウンロードの許可および禁止を制御する。また、データＯＴＰ０〜ＯＰＴ１２７には、管理領域２２２の履歴情報ＣＯＮ０〜ＣＯＮ１２７により書き込みを禁止できることを利用して、書き換えられたくないデータ、例えば、この半導体集積回路装置１００が搭載される携帯電話の電話番号や製造番号等が記憶される。
【００１８】
ロジック回路３は制御回路３１を有する。制御回路３１は、ＥＥＰＲＯＭ２から供給されるビジー信号ＢＵＳＹおよびＣＰＵ４から供給される制御信号に基づいて、書き込み信号ＷＲ、消去信号ＥＲおよび読み出し信号ＲＤを生成し、ＥＥＰＲＯＭ２に供給する。書き込み信号ＷＲ、消去信号ＥＲおよび読み出し信号ＲＤのハイパルスにより、書き込み、消去および読み出しがそれぞれ行われる。また、ビジー信号ＢＵＳＹがハイであると書き込み動作中または消去動作中であることを示す。
【００１９】
さらに、ロジック回路３は、ＯＴＰ領域２２の消去を禁止する信号ＯＴＰ＿ＥＲＤＩＳ（消去制御信号）の値を記憶するレジスタ（ＲＥＧ）３２を有する。制御信号ＯＴＰ＿ＥＲＤＩＳがロウである場合はＥＥＰＲＯＭ２のＯＴＰ領域２２の消去を許可し、ハイである場合は禁止する。
【００２０】
図２は、制御回路３１の一例を示す回路ブロック図であり、同図（ａ）は、書き込み信号ＷＲを生成する回路３１ａを、同図（ｂ）は、消去信号ＥＲを生成する回路３１ｂを示している。また、図３は、図２中の各信号を説明する図である。制御回路３１に入力される信号のうち、信号ＮＯＲＭ＿ＡＤＤＲ，ＮＯＲＭ＿ＷＲＥＮ，ＯＴＰ＿ＡＤＤＲ，ＯＴＰ＿ＷＲＥＮ，ＮＯＲＭ＿ＥＲＥＮ，ＯＴＰ＿ＥＲＥＮは、ロジック回路３内の信号生成回路（不図示）により生成され、信号ＣＰＵ＿ＵＤはＣＰＵ４から入力され、信号ＯＴＰ＿ＥＲＤＩＳはレジスタ３２に記憶されている。
【００２１】
図２（ａ）に示す、書き込み信号ＷＲを生成する回路３１ａは、論理積回路３１１，３１２，３１４と、論理和回路３１３とを有する。論理積回路３１１には信号ＮＯＲＭ＿ＡＤＤＲ，ＮＯＲＭ＿ＷＲＥＮが入力される。これらの入力がともにハイである場合、論理積回路３１１は出力信号をハイに設定する。同様に、論理積回路３１２には信号ＯＴＰ＿ＡＤＤＲ，ＯＴＰ＿ＷＲＥＮが入力される。これらの入力がともにハイである場合、論理積回路３１２は出力信号をハイに設定する。論理積回路３１１，３１２の出力信号の一方がハイである場合、論理和回路３１３は出力信号をハイに設定する。さらに、信号ＣＰＵ＿ＵＤがハイである場合、論理積回路３１４は書き込み信号ＷＲをハイに設定する。これと同時に、ＣＰＵ４から書き込みを行うＥＥＰＲＯＭ２上のアドレスがＥＥＰＲＯＭ２に設定され、設定されたアドレスにデータが書き込まれる。
【００２２】
ＣＰＵ４がＥＥＰＲＯＭ制御ルーチン１３を実行することにより、図２の制御回路３１に入力される各信号が制御される。信号ＮＯＲＭ＿ＡＤＤＲは、ＥＥＰＲＯＭ２のノーマル領域２１に割り当てられたアドレスがＣＰＵ４からロジック回路３へ入力された場合、ハイに設定される。また、信号ＮＯＲＭ＿ＷＲＥＮは、ＣＰＵ４からノーマル領域２１への書き込み許可命令を受信し、かつ、ビジー信号ＢＵＳＹがロウである場合、ハイに設定される。その後、書き込み期間中はＥＥＰＲＯＭ２はビジー信号ＢＵＳＹをハイに設定するが、書き込みが終了するとビジー信号をロウに設定する。これに同期して、信号ＮＯＲＭ＿ＷＲＥＮはロウに設定される。信号ＣＰＵ＿ＵＤは、ＣＰＵ４の書き換え命令に同期して、ハイに設定される。
【００２３】
図２（ｂ）に示す、消去信号ＥＲを生成する制御回路３１ｂも、ほとんど図２（ａ）の回路３１ａと同様の構成である。異なる点は、レジスタ３２に記憶される信号ＯＴＰ＿ＥＲＤＩＳの反転信号が論理積回路３１６に入力される点である。信号ＯＴＰ＿ＥＲＤＩＳがハイであると、信号ＯＴＰ＿ＡＤＤＲ，ＯＴＰ＿ＥＲＥＮの値に関わらず、論理積回路３１６の出力信号はロウに設定され、ＯＴＰ領域２２を消去することはできない。
【００２４】
ここで、ＣＰＵ４が、ＲＯＭ１に記憶されるプログラム以外のプログラム、すなわち、ＥＥＰＲＯＭ２のプログラムを実行する場合、信号ＮＯＲＭ＿ＷＲＥＮ，ＯＴＰ＿ＷＲＥＮ，ＮＯＲＭ＿ＥＲＥＮ，ＯＴＰ＿ＥＲＥＮはロウに設定される。これにより、ＥＥＰＲＯＭ２のプログラムからは直接ＥＥＰＲＯＭ２の書き換えを行うことができない。
【００２５】
なお、ＥＥＰＲＯＭ２のプログラムからＥＥＰＲＯＭ制御ルーチン１３を呼び出して、ＥＥＰＲＯＭ２のノーマル領域２１およびＯＴＰ領域２２に書き込みを行うことは可能である。また、図２（ｂ）の回路３１ｂから明らかなように、信号ＯＴＰ＿ＥＲＤＩＳはＯＴＰ領域２２の消去を禁止するだけであって、ノーマル領域２１への消去を行うことはできる。よって、ＥＥＰＲＯＭ２のプログラムからＥＥＰＲＯＭ制御ルーチン１３を呼び出して、ＥＥＰＲＯＭ２のノーマル領域２１を消去することも可能である。
【００２６】
次に、図２の制御回路３１を用いたノーマル領域２１の書き込みルーチンおよび消去ルーチン、ＯＴＰ領域２２の書き込みルーチンおよび消去ルーチンについて、それぞれ説明する。これらのルーチンは図１のＥＥＰＲＯＭ制御ルーチン１３に含まれる。
【００２７】
図４は、ノーマル領域２１の書き込みルーチンを示すフローチャートである。
【００２８】
まず、ロジック回路３は書き込み先のデータを読み出し、そのデータがＦＦｈであることを確認する（ステップＳ１）。書き込み先のデータがＦＦｈでない場合（ステップＳ１のＮＯ）、異常終了とする。ＥＥＰＲＯＭ２の性質上、正常であれば、書き込みの前は初期状態、すなわち、データがＦＦｈとなっているはずだからである。
【００２９】
書き込み先のデータがＦＦｈであれば（ステップＳ１のＹＥＳ）、ＣＰＵ４はロジック回路３にノーマル領域２１の書き込み許可信号を送信し、信号ＮＯＲＭ＿ＷＲＥＮはハイに設定される。さらに、ＣＰＵ４はロジック回路３にノーマル領域２１の書き込みを行うアドレスを送信し、信号ＮＯＲＭ＿ＡＤＤＲはハイに設定される（ステップＳ２）。その結果、図２（ａ）の論理積回路３１１は出力信号をハイに設定し、論理和回路３１３も出力信号をハイに設定する。
【００３０】
さらに、ＣＰＵ４はロジック回路３に書き換え命令を送信し、信号ＣＰＵ＿ＵＤはハイに設定される（ステップＳ３）。その結果、図２（ａ）の論理積回路３１４は書き込み信号ＷＲをハイに設定し、書き込みが行われる。
【００３１】
書き込みが行われている間、ＥＥＰＲＯＭ２はビジー信号ＢＵＳＹをハイに設定する。そして、書き込みが終了すると、ＥＥＰＲＯＭ２はビジー信号ＢＵＳＹをロウに設定する。ロジック回路３はビジー信号ＢＵＳＹがロウになるまで待機した後（ステップＳ４）、ＥＥＰＲＯＭ２に書き込んだデータのベリファイを行う。仮に、ベリファイの結果、異常があれば（ステップＳ５のＮＯ）、異常終了とし、異常がなければ（ステップＳ５のＹＥＳ）、書き込みが完了したとして正常終了とする。
【００３２】
図５は、ノーマル領域２１の消去ルーチンを示すフローチャートである。図５の消去ルーチンは、既に任意のデータが書き込まれた領域を消去するため、予め消去先のデータを確認しない点が図４の書き込みルーチンと異なる。その他の処理は図４の書き込みルーチンと類似しているため、説明を省略する。
【００３３】
以上のように、ＥＥＰＲＯＭ２のノーマル領域２１は、特に書き換えに制限がない、書き換え可能な領域として使用できる。
【００３４】
図６は、ＯＴＰ領域２２の書き込みルーチンを示すフローチャートである。上述のように、ＯＴＰ領域２２には、データ領域２２１と、これと対応して履歴情報を記憶する管理領域２２２がある。したがって、データ領域２２１に書き込みを行った後、管理領域２２２にも履歴情報を書き込む必要がある。以下では、図４のノーマル領域２１の書き込みルーチンと共通する点は説明を省略する。
【００３５】
まず、ロジック回路３は書き込み先のデータ領域２２１のデータを読み出し、そのデータがＦＦｈであることを確認する（ステップＳ２１）。さらに、ロジック回路３は書き込み先のデータ領域２２１に対応する管理領域２２２の履歴情報を読み出し、その履歴情報がＦＦｈであることを確認する（ステップＳ２２）。仮に対応する管理領域２２２の履歴情報がＦＦｈでない場合、既に書き込みが行われているとして、異常終了する（ステップＳ２２のＮＯ）。データ領域２２１だけでなく管理領域２２２の履歴情報も確認する理由は、データ領域２２１に偶然ＦＦｈが書き込まれることもあるためである。
【００３６】
書き込み先のデータ領域２２１のデータおよびこれと対応する管理領域２２２の履歴情報がともにＦＦｈであれば（ステップＳ２１，Ｓ２２のＹＥＳ）、ＣＰＵ４はロジック回路３にＯＴＰ領域２２の書き込み許可信号を送信し、信号ＯＴＰ＿ＷＲＥＮはハイに設定される。さらに、ＣＰＵ４はロジック回路３に書き込みを行うデータ領域２２１のアドレスを送信し、信号ＯＴＰ＿ＡＤＤＲはハイに設定される（ステップＳ２３）。その結果、図２（ａ）の論理積回路３１２は出力信号をハイに設定し、論理和回路３１３も出力信号をハイに設定する。
【００３７】
さらに、ＣＰＵ４はロジック回路３に書き換え命令を送信し、信号ＣＰＵ＿ＵＤはハイに設定される（ステップＳ２４）。これにより、図２（ａ）の論理積回路３１４は書き込み信号ＷＲをハイに設定し、書き込みが行われる。そして、ビジー信号がロウになると、ロジック回路３は書き込んだデータのベリファイを行う（ステップＳ２５，Ｓ２６）。以上により、データ領域２２１にデータが書き込まれる。
【００３８】
続いて、データ領域２２１に書き込みを行ったという履歴情報を対応する管理領域２２２に書き込むべく、ＣＰＵ４はロジック回路３にＯＴＰ領域２２の書き込み許可信号を送信し、信号ＯＴＰ＿ＷＲＥＮはハイに設定される。さらに、ＣＰＵ４は、書き込んだデータ領域２２１に対応する管理領域２２２のアドレスをロジック回路３に送信し、信号ＯＴＰ＿ＡＤＤＲはハイに設定される（ステップＳ２７）。例えば、データ領域２２１のデータＯＴＰ６４に書き込みを行った場合、ＣＰＵ４は管理領域２２２の履歴情報ＣＯＮ６４に対応するアドレスをロジック回路３に送信する。以下、同様にして管理領域２２２の履歴情報ＣＯＮ６４は００ｈに設定され、対応するデータ領域２２１のデータＯＴＰ６４は書き込み済みであるという履歴情報が記憶される（ステップＳ２８〜Ｓ３０）。
【００３９】
図７は、ＯＴＰ領域２２の消去ルーチンを示すフローチャートである。図７の消去ルーチンは、既に任意のデータが書き込まれた領域を消去するため、予め消去先のデータを確認しない点が図６の書き込みルーチンと異なる。その他の処理は図６の書き込みルーチンと類似しているため、説明を省略する。
【００４０】
図８は、図１の半導体集積回路装置１００の各部の処理動作の一例を示すフローチャートである。同図を用いて、半導体集積回路装置１００全体の処理動作を説明する。なお、図１の半導体集積回路装置１００は、出荷時、ＯＴＰＡ（第１のデータ）＝ＯＴＰＢ（第２のデータ）＝ＯＴＰＣ（第３のデータ）＝ＦＦｈに設定されるものとする。
【００４１】
リセット端子ＲＳＴからリセットを解除する信号が入力されると（ステップＳ５１）、ＣＰＵ４はブートプログラム１１を実行する（ステップＳ５２）。ブートプログラム１１は、ＯＴＰ領域２２のデータ領域２２１に記憶されるデータＯＴＰＡ〜ＯＴＰＣの値に応じて、以下のようにして、ダウンローダ１２またはＥＥＰＲＯＭ２のプログラムをＣＰＵ４に実行させる。
【００４２】
出荷後に初めて半導体集積回路装置１００を動作させた時は、ＯＴＰＡ＝ＦＦｈであるから（ステップＳ５３のＹＥＳ）、ＣＰＵ４はダウンローダ１２を実行する（ステップＳ５４）。ダウンローダ１２が実行されると、図４のノーマル領域２１の書き込みルーチンに従って、外部から入出力端子Ｉ／Ｏを介して入力されるプログラムがＥＥＰＲＯＭ２のノーマル領域２１にダウンロードされる（ステップＳ５５）。さらに、図６のＯＴＰ領域２２書き込みルーチンに従い、データ領域２２１のデータＯＴＰＡを００ｈに設定する（ステップＳ５６）。データ領域２２１のデータＯＴＰＡは出荷後に一旦書き込まれると、再度書き換えられることはない。
【００４３】
次に半導体集積回路装置１００を動作させ、リセットを解除してブートプログラム１１が実行されると（ステップＳ５１，Ｓ５２）、ＯＴＰＡ＝００ｈであり（ステップＳ５３のＮＯ）、ＯＴＰＢ＝ＦＦｈであるから（ステップＳ５７のＮＯ）、ＣＰＵ４は信号ＯＴＰ＿ＥＲＤＩＳをハイに設定した（ステップＳ５８）後に、ＥＥＰＲＯＭ２のプログラムを実行する（ステップＳ５９）。信号ＯＴＰ＿ＥＲＤＩＳは、一旦ハイに設定されると、リセット以外でロウに設定されることはない。このように、ＥＥＰＲＯＭ２のプログラムを実行するのに先立って信号ＯＴＰ＿ＥＲＤＩＳがハイに設定されるため、ＥＥＰＲＯＭ２のプログラムが実行される場合、図２（ｂ）の論理積回路３１６の出力信号が常にロウに設定され、ＯＴＰ領域２２を消去できない。結果として、ＯＴＰ領域２２の書き換えを禁止できる。
【００４４】
ここで、ＥＥＰＲＯＭ２のプログラムを書き換えたい場合（ステップＳ６０のＹＥＳ）、図６のＯＴＰ領域２２の書き込みルーチンに従い、データ領域２２１のデータＯＴＰＢを００ｈに設定する（ステップＳ６１）。この書き込みは、ＥＥＰＲＯＭ２のプログラムがＥＥＰＲＯＭ制御ルーチン１３を呼び出すことにより、行われる。
【００４５】
この状態でリセットを解除してブートプログラム１１が実行されると（ステップＳ５１，Ｓ５２）、ＯＴＰＡ＝００ｈ（ステップＳ５３のＮＯ）、ＯＴＰＢ＝００ｈ，ＯＴＰＣ＝ＦＦｈ（ステップＳ５７のＹＥＳ）であるから、ＣＰＵ４はダウンローダ１２を実行する（ステップＳ５４）。これにより、外部から再度プログラムがＥＥＰＲＯＭ２にダウンロードされる（ステップＳ５５）。さらに、ＣＰＵ４は、図７のＯＴＰ領域２２の消去ルーチンに従ってデータ領域２２１のデータＯＴＰＢを消去し、ＦＦｈに設定する（ステップＳ５６）。
【００４６】
ＥＥＰＲＯＭ２のプログラムの書き換えは、書き換えを禁止しない限り、ステップＳ６０，Ｓ６１の処理により、何度でも行える。
【００４７】
一方、ＥＥＰＲＯＭ２にプログラムをダウンロードした後、そのプログラムの書き換えを禁止したい場合（ステップＳ６２のＹＥＳ）、データ領域２２１のデータＯＴＰＢ，ＯＴＰＣを００ｈに設定する（ステップＳ６３）。これらのデータを００ｈに設定する書き込みは、ＥＥＰＲＯＭ２のプログラムがＥＥＰＲＯＭ制御ルーチン１３を呼び出すことにより、行われる。また、ダウンローダ１２の機能により行ってもよい。
【００４８】
この状態でリセットを解除してブートプログラム１１が実行されると（ステップＳ５１，Ｓ５２）、ＯＴＰＡ＝００ｈ（ステップＳ５３のＮＯ）、ＯＴＰＢ＝ＯＴＰＣ＝００ｈ（ステップＳ５７のＮＯ）であるから、ＣＰＵ４は信号ＯＴＰ＿ＥＲＤＩＳをハイに設定した（ステップＳ５８）後に、ＥＥＰＲＯＭ２のプログラムを実行する（ステップＳ５９）。これにより、ＥＥＰＲＯＭ２のプログラムの書き換えが禁止される。
【００４９】
ＥＥＰＲＯＭ２のプログラムを書き換えるには、ステップＳ５７でＹＥＳの分岐に進むために、データ領域２２１のデータＯＴＰＣを消去してＦＦｈに設定する必要がある。ところが、ＥＥＰＲＯＭ２のプログラムが実行される前に、必ず信号ＯＴＰ＿ＥＲＤＩＳがハイに設定される（ステップＳ５８）。
【００５０】
そのため、図２（ｂ）の制御回路３１の論理積回路３１６の出力信号が常にロウに設定され、ＥＥＰＲＯＭ２のプログラムからＯＴＰ領域２２のデータ領域２２１のデータＯＴＰＣを消去することはできない。したがって、図８のステップＳ５７は必ずＮＯとなり、ＥＥＰＲＯＭ２のプログラムを書き換えることができなくなる。また、仮にＥＥＰＲＯＭ２のプログラムがダウンローダ１２を呼び出したとしても、プログラムが実行される（ステップＳ５９）のに先立って信号ＯＴＰ＿ＥＲＤＩＳがハイに設定される（ステップＳ５８）ため、データ領域２２１のデータＯＴＰＣを消去できない。これにより、プログラムの書き換えが禁止され、プログラムの不正な書き換え等を防止できる。
【００５１】
さらに、信号ＯＴＰ＿ＥＲＤＩＳがハイであるため、データ領域２２１のデータＯＴＰ０〜ＯＴＰ１２７および管理領域２２２の管理情報ＣＯＮ０〜ＣＯＮ１２７のデータを消去することもできない。消去できないと、図６のステップＳ２２がＮＯになるため、一旦書き込み行って、対応する履歴情報が００ｈに設定されたデータ領域２２１内のデータに新たなデータを書き込むことができなくなる。
【００５２】
以上のように、図８のステップＳ６３が一度実行され、ＯＴＰＣ＝００ｈに設定されると、ＥＥＰＲＯＭ２のプログラムを書き換えることができなくなるばかりでなく、ＯＴＰ領域２２のデータ領域２２１のデータＯＴＰ０〜ＯＴＰ１２７を書き換えることもできなくなる。このようにして、ＥＥＰＲＯＭ２内のＯＴＰ領域２２を、書き換えを禁止することが可能な領域として使用できる。例えば、一度データ領域２２１に書き込みを行った後にＯＴＰＢ＝ＯＴＰＣ＝００ｈに設定することで、ＯＴＰ領域２２を一度だけ書き込み可能な領域として使用できる。
【００５３】
図９は、ＲＯＭ１のプログラム、（すなわち、ブートプログラム１１、ダウンローダ１２およびＥＥＰＲＯＭ制御ルーチン１３）、ＥＥＰＲＯＭ２のプログラム、および、ＥＥＰＲＯＭ２のプログラムに呼び出されたＥＥＰＲＯＭ制御ルーチン１３から、ノーマル領域２１およびＯＴＰ領域２２の書き換えの可否を示す図であり、以上の説明をまとめたものである。
【００５４】
同図に示すように、ＥＥＰＲＯＭ２のプログラムから直接ノーマル領域２１およびＯＴＰ領域２２を書き換えることはできない。図３に示すように、ＥＥＰＲＯＭ２のプログラムが実行される場合、信号ＮＯＲＭ＿ＷＲＥＮ，ＮＯＲＭ＿ＥＲＥＮ，ＯＴＰ＿ＷＲＥＮ，ＯＴＰ＿ＥＲＥＮがそれぞれロウに設定されるためである。
【００５５】
一方、ＥＥＰＲＯＭ２のプログラムからＥＥＰＲＯＭ制御ルーチン１３を呼び出せば、ノーマル領域２１の書き換えおよびＯＴＰ領域２２の書き込みを行うことができる。しかしながら、ＯＴＰ領域２２を消去することはできない。図８に示すように、ＥＥＰＲＯＭ２のプログラムが実行される（ステップＳ５９）のに先立って、必ずＯＴＰ領域２２の消去を禁止する信号ＯＴＰ＿ＥＲＤＩＳがハイに設定される（ステップＳ５８）ためである。
【００５６】
これに対し、ＲＯＭ１のプログラムからは、ＥＥＰＲＯＭ２のプログラムから呼び出された場合を除き、ノーマル領域２１およびＯＴＰ領域２２の書き換えを行うことができる。上述のように、ＥＥＰＲＯＭ２のプログラムから呼び出された場合、信号ＯＴＰ＿ＥＲＤＩＳがハイに設定されているため、ＯＴＰ領域２２の消去はできない。
【００５７】
このように、本実施形態では、ＥＥＰＲＯＭ２内にノーマル領域２１とＯＴＰ領域２２を設ける。そして、ＥＥＰＲＯＭ２のプログラムを実行する前に、ＯＴＰ領域２２の消去を禁止する信号ＯＰＴ＿ＥＲＤＩＳをハイに設定する。そのため、ＥＥＰＲＯＭ２のプログラムからＯＴＰ領域２２を消去することができない。したがって、ＥＥＰＲＯＭ２のノーマル領域２１を書き換えの制限がない不揮発性メモリとして、ＯＴＰ領域２２を書き換えを禁止することが可能な領域としてそれぞれ使用できる。結果として、半導体集積回路装置１００に２種類の不揮発性メモリ、すなわち、書き換えが可能な不揮発性メモリと、書き換えを禁止することが可能な不揮発性メモリの両方を搭載する必要がなくなり、製造コストを抑制できるとともに、面積を小型化できる。
【００５８】
さらに、データ領域２２１のデータＯＴＰＡ〜ＯＴＰＣにより実行されるプログラムを切り替えるため、簡易にＥＥＰＲＯＭ２へのプログラムのダウンロードの許可および禁止を制御できる。
【００５９】
上記の記載に基づいて、当業者であれば、本発明の追加の効果や種々の変形を想到できるかもしれないが、本発明の態様は、上述した個々の実施形態には限定されるものではない。特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【００６０】
１  ＲＯＭ
１２  ダウンローダ
１３  ＥＥＰＲＯＭ制御ルーチン
２  ＥＥＰＲＯＭ
２１  ノーマル領域
２２  ＯＴＰ領域
２２１  データ領域
２２２  管理領域
４  ＣＰＵ
１００  半導体集積回路装置
【図１】
0005269020.tif 000002
【図２】
0005269020.tif 000003
【図３】
0005269020.tif 000004
【図４】
0005269020.tif 000005
【図５】
0005269020.tif 000006
【図６】
0005269020.tif 000007
【図７】
0005269020.tif 000008
【図８】
0005269020.tif 000009
【図９】
0005269020.tif 000010