(57)【特許請求の範囲】
【請求項１】
アドレス・バス；
データ・バス；
前記アドレス・バスと、前記データ・バスに接続され、外部メモリに結合する外部アドレス・ポート；
機密アドレス・レンジに機密動作のための命令を格納する内部ＲＯＭであって、前記機密アドレス・レンジは開始アドレスを含む、内部ＲＯＭ；および
前記データ・バス，前記アドレス・バスおよび前記内部ＲＯＭに結合された内部コントローラであって、前記内部コントローラは、前記内部ＲＯＭの機密アドレス・レンジに格納された命令を実行することによって前記機密動作のための命令を実行するものであるが、前記内部コントローラは、前記機密動作のための命令の実行が、前記開始アドレスから開始されるのではない場合、前記命令の実行を阻止する、内部コントローラ；
によって構成されることを特徴とするマイクロコントローラ。
【請求項２】
前記内部コントローラは、セキュリティ論理と、前記セキュリティ論理に結合されたＣＰＵとを含むことを特徴とする請求項１記載のマイクロコントローラ。
【請求項３】
前記ＣＰＵは、プログラム・カウンタを含み、前記セキュリティ論理は、前記プログラム・カウンタに結合され、前記ＣＰＵを監視し、前記プログラム・カウンタのカレント・アドレスが前記機密アドレス・レンジ内にあるかどうかを判定することを特徴とする請求項２記載のマイクロコントローラ。
【請求項４】
前記セキュリティ論理は、前記プログラム・カウンタの前回アドレスを前記機密アドレス・レンジと比較する回路と、前記カレント・アドレスを前記開始アドレスと比較する回路とを含み、
前記カレント・アドレスが前記機密アドレス・レンジ内の場合に、前記前回アドレスは前記機密アドレス・レンジ内ではなく、かつ前記カレント・アドレスは前記開始アドレスではないとき、前記内部コントローラは、前記機密アドレス・レンジ内の命令を実行しないことを特徴とする請求項３記載のマイクロコントローラ。
【請求項５】
前記マイクロコントローラは内部ＥＥＰＲＯＭを含み、
前記セキュリティ論理はＥＥＰＲＯＭセキュリティ論理を含み、
前記ＣＰＵはプログラム・カウンタを含み、
前記ＥＥＰＲＯＭセキュリティ論理は、前記プログラム・カウンタのカレント・アドレスを前記内部ＲＯＭのアドレス・レンジと比較する回路を含み、前記ＣＰＵが前記内部ＲＯＭのアドレス・レンジ内のコードを実行していない場合に前記内部ＥＥＰＲＯＭのプログラミングをディセーブルする
ことを特徴とする請求項２記載のマイクロコントローラ。
【請求項６】
電源と前記内部ＲＯＭとの間に接続されたスイッチであって、前記スイッチは、前記内部コントローラに結合され、前記内部コントローラによって制御されて、電源を前記内部ＲＯＭに選択的に供給し、前記スイッチは前記内部コントローラ，前記電源および前記内部ＲＯＭに結合され、前記スイッチは前記内部ＲＯＭから前記電源を遮断して前記内部ＲＯＭをディセーブルするスイッチをさらに含んで構成されることを特徴とする請求項１記載のマイクロコントローラ。
【請求項７】
前記内部コントローラ，電源および前記内部ＲＯＭに結合されたスイッチをさらに含んで構成され、前記内部ＲＯＭは前記スイッチを介して給電され、前記スイッチは前記内部ＲＯＭから前記電源を遮断して前記内部ＲＯＭをディセーブルすることを特徴とする請求項１記載のマイクロコントローラ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データ・プロセッサに関し、さらに詳しくは、外部アクセス・ポートを有するマイクロコントローラ用のセキュリティ機能に関する。
【０００２】
【従来の技術】
マイクロコントローラとは、中央処理装置（ＣＰＵ），ランダム・アクセス・メモリ（ＲＡＭ），リード・オンリ・メモリ（ＲＯＭ）および周辺装置を含む、コンピュータ・システムに関連するいくつかの要素をオンチップで内蔵する集積回路のことである。ＣＰＵのオペレーティング・システムを格納するため不揮発性メモリが用いられる。多くの場合、オンチップ不揮発性メモリは、マイクロコントローラのプログラムのすべてを内蔵する十分な大きさである。この場合、マイクロコントローラは、動作するためにオフチップ・メモリにアクセスする必要はない。しかし、プログラムが大きすぎて、オンチップ不揮発性メモリに収まりきらない場合があり、マイクロコントローラはプログラムの一部をオフチップでフェッチできなければならない。この可能性に対処するため、一般的なマイクロコントローラは、拡張バスとして知られるものを有し、この拡張バスとは、外部メモリまたはメモリ・マップド周辺装置をアクセス可能にする、データ・ラインおよびアドレス・ラインを具備するバスのことである。
【０００３】
【発明が解決しようとする課題】
「ハッカー」がオンチップ・プログラムの知見を得ることを防ぐため、マイクロコントローラにセキュリティ機能を内蔵することが望ましい場合が多い。例えば、Wilkieらによって発明され、本明細書の譲受人に譲渡された米国特許第４，６９８，７５０号は、セキュリティ・モードになると不揮発性メモリの内容を外部ソースによって読み出すことを防ぐ、セキュリティ・モードを具備するマイクロコンピュータについて教示する。Sibigtrothらによって発明され、本明細書の譲受人に譲渡された米国特許第５，２５１，３０４号によって教示される別の方法は、マイクロコントローラが拡張バスと動作する場合に有用である。米国特許第５，２５１，３０４号は、オフチップ命令アクセスがディセーブルされる機密モードを具備するマイクロコントローラについて教示する。この教示は、オンチップ不揮発性メモリがオペレーティング・プログラムのすべてを格納するのに十分大きい場合に有用である。しかし、オペレーティング・プログラムが大きすぎて、実際的大きさのオンチップ不揮発性メモリに格納できない場合、新たな問題が生じる。例えば、ハッカーであれば、プログラムの外部部分のセグメントを書き直して、ＣＰＵに内部不揮発性メモリの内容を読み出させることができる。
【０００４】
【課題を解決するための手段】
従って、改善されたセキュリティを具備するマイクロコントローラが望ましい。
【０００５】
【実施例】
マイクロコントローラは、拡張バスに結合された拡張ポートを有する。マイクロコントローラは、内部ＲＯＭ，ＲＡＭおよびＥＥＰＲＯＭ(electronically erasable read only memory)ならびに拡張バスに結合された外部拡張ポートを含む。内部ＥＥＰＲＯＭは、ＣＰＵが内部ＲＯＭ内で命令を実行している場合にのみ、プログラム可能である。さらに、内部ＲＯＭに格納された機密動作に関連する命令は、まず機密動作の開始命令を実行しないとアクセスできない。有効なエントリ・アドレス以外のポイントで機密動作の実行を開始する試み、例えば、他のポイントで機密動作にＪＭＰ，ＪＳＲ，ＲＴＳまたはＲＴを行う試みは、内部ＲＯＭをディセーブルさせる。
【０００６】
マイクロコントローラ１００（図１）は、アドレス信号をアドレス・バス１０４に与え、データ・バス１０６を介してデータを双方向に交信する中央処理装置（ＣＰＵ）１０２を含むシングル・チップ・マイクロコントローラである。メモリ１０８，１０９，１１０は、アドレス・バス１０４およびデータ・バス１０６に接続される。これらのメモリは、ランダム・アクセス・メモリ（ＲＡＭ）１０８，ＥＥＰＲＯＭ１０９およびＲＯＭ１１０を含む。ＣＰＵ，ＲＡＭ，ＲＯＭおよびＥＥＰＲＯＭの動作は一般に当業者に周知であり、ここでは詳しく説明しない。本発明では、ＥＥＰＲＯＭ１０９に格納される情報の一部は、ある状況下で変更できる機密データを含み、内部ＲＯＭ１１０は、機密な固定オペレーティング命令を格納する。例えば、機密ＥＥＰＲＯＭは、マイクロコントローラが内部ＲＯＭからコードを実行する際にのみ読み出すことができ、機密内部ＲＯＭは、以下で詳しく説明するように、内部ＲＯＭからコードを実行する場合にのみマイクロコントローラによって読み出すことができる。
【０００７】
外部ポート１１２は、マイクロコントローラ１００を外部拡張バス１１４に接続することを可能にする。マイクロコントローラ１００を外部バスに接続することが望ましい状況の一つとして、オペレーティング・プログラムを格納するためにＥＥＰＲＯＭ１０９またはＲＯＭ１１０を十分に大きくできない場合がある。例えば、マイクロコントローラ上のＥＥＰＲＯＭは、３２〜４８キロバイト（Ｋｂｙｔｅ）の範囲にサイズが一般に制限されるが、高度なアプリケーション・プログラムには１００Ｋｂｙｔｅを越えるサイズを必要とするものがある。これらの大きなサイズのプログラムは、利用可能な技術を利用してオンチップで実施することはほぼ不可能である。
【０００８】
ＥＥＰＲＯＭ１０９および内部ＲＯＭ１１０内のデータの健全性を保護しつつ、外部バス１１４に接続された外部メモリに対するプログラム・アクセスを可能にするため、マイクロコントローラ１００はセキュリティ論理(security logic)１１６を内蔵する。セキュリティ論理１１６は、バス１１７上でＣＰＵ１０２からいくつかの制御信号を受ける。セキュリティ論理は、ＲＯＭ１１０に結合されたコンダクタ１１８上でＲＯＭ制御信号を出力し、ＥＥＰＲＯＭ１０９に結合されたコンダクタ１２０上でＥＥＰＲＯＭ制御信号を出力する。ＲＯＭおよびＥＥＰＲＯＭ制御信号は、ＲＯＭ１１０およびＥＥＰＲＯＭ１０９をそれぞれ選択的にイネーブルまたはディセーブルする。ＣＰＵ１０２およびセキュリティ論理１１６は、マイクロコントローラの内部コントローラ１１９を形成する。セキュリティ論理１１６は、ソフトウェアにより、あるいはＣＰＵに対して外部の回路を利用することによって、構成できる。
【０００９】
動作時に、ＣＰＵ１０２が内部ＲＯＭ１１０に対して外部のコードまたはマイクロコントローラ１１０に対して外部のコードを実行中に、ＥＥＰＲＯＭをプログラムすることを試みるとき、セキュリティ論理１１６はＥＥＰＲＯＭ１０９へのアクセスをディセーブルする。また、セキュリティ論理１１６は、ＣＰＵ１０２が開始アドレスにおいて命令を実行せずに、機密動作に関連するＲＯＭ１１０内のコードを実行することを試みるとき、内部ＲＯＭ１１０へのアクセスをディセーブルする。さらに、内部ＲＯＭ１１０以外の場所でコードが実行されるときにはいつでも、内部ＲＯＭ１１０へのアクセスはディセーブルされる。
【００１０】
これらのセキュリティ動作を実行するため、セキュリティ論理１１６は、図２ないし図５に示すＲＯＭセキュリティ論理と、図６に示すＥＥＰＲＯＭセキュリティ論理とを含む。ＲＯＭセキュリティ論理は、カレント・アドレス比較器２０２（図２）を含む。カレント・アドレス比較器は、バス２０３を介してプログラム・カウンタ２０４と、バス２０５を介して機密アドレス・レンジ・レジスタ(secured address range register)２０６とに結合される。プログラム・カウンタ２０４は、現在実行中の命令のアドレスを格納する、市販のマイクロコントローラにおけるレジスタである。機密アドレス・レンジ・レジスタ２０６は、機密動作のアドレス・レンジを格納する。例えば、機密アドレス・レンジ・レジスタ２０６は、機密レンジの開始アドレスより１だけ小さい第１アドレスと、機密動作の終了アドレスより１だけ高い第２アドレスとを格納し、ここで機密動作は内部ＲＯＭ１１０の順次アドレス番地に格納される。カレント・アドレス比較器２０２は、プログラム・カウンタ２０４におけるカレント・アドレスを機密アドレス・レンジ・レジスタにおける第１アドレスおよび第２アドレスと比較する。プログラム・カウンタ・アドレスが第１アドレスよりも大きく、かつ第２アドレスよりも小さい場合、カレント・アドレスは機密アドレス・レンジ内にあると判断される。カレント・アドレス比較器２０２は、カレント・アドレスが機密アドレス・レンジ内の場合に高論理レベル信号を出力し、機密アドレス・レンジ内でない場合に低論理レベル信号を出力する。複数のアドレス・レンジを採用する場合、各レンジについてそれぞれ比較器が設けられる。当業者であれば、カレント・アドレス比較器２０２は２つの大きさ比較回路(magnitude comparator circuit)と、これらの大きさ比較回路の出力を論理的に合成するＡＮＤゲートとを利用して構成できることが理解される。また、機密アドレス・レンジは内部ＲＯＭ１１０のアドレス・レンジ全体でもよいことが理解される。
【００１１】
前回アドレス比較器(previous address comparator) ２１０は、バス２０５を介して機密アドレス・レンジ・レジスタ２０６と、バス２１４を介して前回プログラム・カウンタ・アドレス・レジスタ２１２とに結合される。前回プログラム・カウンタ・アドレス・レジスタ２１２は、一つのアドレス、すなわち、前回のプログラム・カウンタ・アドレスを格納するメモリである。前回プログラム・カウンタ・アドレス・レジスタ２１２は、バス２０３を介してプログラム・カウンタ２０４に結合される。プログラム・カウンタが旧アドレスから新アドレスに変化する毎に、プログラム・カウンタからの旧アドレスは前回プログラム・カウンタ・アドレス・レジスタ２１２に格納される。前回プログラム・カウンタ・アドレスが機密アドレス・レンジ内の場合、前回アドレス比較器２１０は、高論理レベル信号を出力する。それ以外の場合には、前回アドレス比較器２１０は低論理レベル信号を出力する。前回アドレス比較器２１０は、カレント・アドレス比較器２０２がプログラム・カウンタ・アドレスを機密アドレス・レンジと比較するのと同じように、前回プログラム・カウンタ・アドレス・レジスタ２１２におけるアドレスを機密アドレス・レンジと比較し、そのためこれについては説明しない。
【００１２】
第１アドレス比較器２１６は、バス２２０を介して第１アドレス・レジスタ２１８と、バス２０３を介してプログラム・カウンタ２０４とに結合される。第１アドレス・レジスタ２１８は、ＲＯＭ１１０に格納される各機密動作の第１アドレスを格納する。第１アドレス比較器２１６は、プログラム・カウンタ・アドレスを、第１アドレス・レジスタ２１８に格納されたアドレスと比較する。プログラム・カウンタ２０４のアドレスが第１アドレス・レジスタ２１８におけるアドレスと一致した場合、第１アドレス比較器２１６は高論理レベルを出力する。それ以外の場合には、第１アドレス比較器は低論理レベルを出力する。
【００１３】
論理回路２３０は、コンダクタ２２４を介して前回アドレス比較器２１０の出力と、コンダクタ２２６を介してカレント・アドレス比較器２０２の出力と、コンダクタ２２８を介して第１アドレス比較器２１６の出力とに結合される。論理回路２３０の出力は、論理回路２３０がＲＯＭ１１０の動作をイネーブルするように、ＲＯＭのチップ・イネーブル入力に接続される。カレント・アドレス比較器２０２の出力が低論理レベルで、カレント命令が機密アドレス・レンジ内でないことを示すと、論理回路２３０の出力は低論理レベルを有し、ＲＯＭ１１０の動作をイネーブルする。内部ＲＯＭ１１０のチップ・イネーブル入力上のこの低レベル信号は、内部ＲＯＭをイネーブルする。カレント・アドレス比較器２０２の出力が高論理レベルで、カレント命令が機密アドレス・レンジ内であることを示すと、ＲＯＭをイネーブルするためには、以下の２つの状態のうちいずれか一方を満たさなければならない。すなわち、前回アドレス比較器２１０が高論理レベルを出力して、前回プログラム・カウンタ・アドレスが機密アドレス・レンジ内であることを示すか、あるいは第１アドレス比較器２１６が高論理レベルを有して、プログラム・カウンタ２０４におけるカレント命令アドレスが機密動作の第１アドレスであることを示さなければならない。それ以外の場合には、ＲＯＭ１１０の動作はディセーブルされる。
【００１４】
ＲＯＭセキュリティ論理の別の実施例を図３ないし図５に示す。セキュリティ論理は、バス２２０を介して第１アドレス・レジスタ２１８と、バス２０３を介してプログラム・カウンタ２０４とに結合された第１アドレス比較器２１６（図３）を含む。第１アドレス・レジスタは、各機密動作の第１アドレスを格納する。第１アドレス比較器２１６は、上で説明したようにプログラム・カウンタ・アドレスが第１アドレス・レジスタに格納された第１アドレスと一致した場合に、高論理レベルを出力する。カレント・アドレス比較器２０２は、バス２０５を介して機密アドレス・レンジ・レジスタ２０６と、バス２０３を介してプログラム・カウンタ２０４とに結合される。カレント・アドレス比較器２０２は、プログラム・カウンタ・アドレスをレジスタ２０６に格納された機密アドレス・レンジと比較する。アドレスが機密アドレス・レンジ外の場合、カレント・アドレス比較器２０２の出力は低論理レベルである。それ以外の場合には、カレント・アドレス比較器２０２の出力は高論理レベルである。
【００１５】
電源回路３０２（図３）は、コンダクタ３０６によって第１アドレス比較器２１６の出力と、コンダクタ３０４によってカレント・アドレス比較器２０２の出力とに結合される。電源回路３０２は、コンダクタ３１８によって内部ＲＯＭ１１０の電源入力に接続され、比較器２０２，２１２の出力に応じてコンダクタ３１０，３１８をＲＯＭ１１０の電源に選択的に接続する。
【００１６】
電源回路３０２は、ＲＳフリップフロップ４０２（図４）を含む。ＲＳフリップフロップ４０２のＳ入力は、コンダクタ３０６に接続される。ＲＳフリップフロップ４０２のＲ入力は、インバータ４０４を介してコンダクタ３０４に接続される。ＲＳフリップフロップ４０２の反転Ｑ出力は、ＡＮＤゲート４０８の一方の入力に接続される。ＡＮＤゲート４０８の他方の入力は、インバータ４０４の出力に接続される。ＲＳフリップフロップ４０２のＱ出力およびＡＮＤゲート４０８の出力は、ＯＲゲート４１０のそれぞれの入力に接続される。ＯＲゲートの出力は、ＭＯＳＦＥＴスイッチ４２６のゲートに接続される。ＭＯＳＦＥＴスイッチ４２６のソースおよびドレインは、ＲＯＭ１１０の電源Ｖｓと、ＲＯＭ１１０の電源入力に接続されたコンダクタ３１８との間に接続される。
【００１７】
動作時に、ＲＳフリップフロップ４０２は、機密状態と非機密状態との間でトグルする。コンダクタ３０６上の信号が高論理レベルを有し、プログラム・カウンタ・アドレスが機密動作の開始アドレスであることを示すと、コンダクタ３０４上の信号も高論理レベルを有し、プログラム・カウンタ・アドレスが機密アドレス・レンジ内であることを示す。従って、Ｓ入力は１で、Ｒ入力は０であり、これは図５に示すようにＱ出力を高論理レベルに設定する。ＯＲゲート４１０は、この高論理レベルをＭＯＳＦＥＴゲートまで通過させ、ＭＯＳＦＥＴを導通状態に保持する。Ｑ出力は、フリップフロップがリセットされるまでこの高論理レベルのままである。フリップフロップ４０２は、コンダクタ３０６，３０４上の信号がともに低レベル信号の場合にリセットされ、これはプログラム・カウンタが機密アドレス・レンジ内の信号を有していない場合に生じる。次に、Ｓ入力は値０を有し、Ｒ入力は値１を有する。これは、Ｑ出力を値０にし、反転Ｑ出力を値１にし、インバータ４０４の出力を値１にする。その結果、ＡＮＤゲート４０８の出力は高論理レベルを有し、この信号はＯＲゲート４１０を介してＭＯＳＦＥＴスイッチ４２６のゲートに送られる。
【００１８】
コンダクタ３０６が高論理レベルに変化せずに、コンダクタ３０４上の信号が高論理レベルに変化して、最初に開始アドレス命令を実行せずに機密アドレスを実行することを示すと、Ｓ入力は値０を有し、Ｒ入力は値０を有する。ＲＳフリップフロップの出力は、状態を変化しない（図５参照）。さらに、ＡＮＤゲート４０８の出力は０に変化する。そのため、ＯＲゲート４１０の出力は低論理レベルを有し、ＭＯＳＦＥＴは非導通状態となり、ＲＯＭへの電源供給を遮断する。従って、ＲＯＭはディセーブルされる。
【００１９】
ＯＲゲート４１０の出力は、図２の論理回路２３０の出力の場合と同様に、ＲＯＭをイネーブルおよびディセーブルするためにＲＯＭ１１０に接続できることがわかる。あるいは、図２における論理回路２３０の出力は、ＭＯＳＦＥＴ４２６のゲートを駆動できる。また、ＡＮＤゲート４０８およびＯＲゲート４１０は、図４の回路から省くことができ、この場合、機密アドレス・レンジはＲＯＭの全アドレス・レンジとなることがわかる。この実施例では、ＲＳフリップフロップ４０２のＱ出力は、ＲＯＭ１１０に格納されていないコードが実行されるときにはいつでもＲＯＭがディセーブルされるように、ＭＯＳＦＥＴ４２６のゲートを駆動する。
【００２０】
ＥＥＰＲＯＭセキュリティ回路６００（図６）は、ＥＥＰＲＯＭ１０９の動作を選択的にイネーブルする。この回路は、バス２０３を介してプログラム・カウンタ２０４に接続された比較器６０１を含む。この比較器は、プログラム・カウンタ・アドレスをＲＯＭ１１０（図１）のアドレス・レンジと比較する。プログラム・カウンタ・アドレスがＲＯＭアドレス・レンジ内の場合、比較器の出力は高論理レベルを有する。比較器の出力は、コンダクタ６０４を介して論理回路６０６に接続される。また、論理回路は、コンダクタ６０２上でＥＥＰＲＯＭリード／ライト（Ｒ／Ｗ）信号を受ける。ＥＥＰＲＯＭ  Ｒ／Ｗ信号は、マイクロコントローラによって内部生成され、ＣＰＵがＥＥＰＲＯＭから読み出し中か書き込み中であることを示す。論理回路６０６の出力は、コンダクタ１２０を介してＥＥＰＲＯＭ１０９に接続される。論理回路は、プログラム・カウンタが内部ＲＯＭ１１０のアドレスのレンジ内の場合に、ライト・サイクルについてのみＥＥＰＲＯＭをイネーブルする。そのため、ＥＥＰＲＯＭは、内部ＲＯＭ１１０に格納された命令を実行中の際にのみプログラムできる。あるいは、論理回路６０６は、プログラム・カウンタ２０４がＲＯＭアドレス・レンジ内でない場合には必ずＥＥＰＲＯＭをディセーブルできる。これは、マイクロコントローラがＲＯＭ１１０内のプログラムを実行していないときに、ＥＥＰＲＯＭが読み出されたり、書き込まれることを防ぐ。
【００２１】
ＲＯＭおよびＥＥＰＲＯＭセキュリティ論理について、ディスクリート回路を利用して構成されるものとして説明してきたが、当業者であれば、この論理は好ましくはマイクロコントローラ・チップ内に集積されることが理解される。また、セキュリティ論理１１６は、デジタル・プロセッサを利用して構成できることも想定される。デジタル・プロセッサを利用した場合、デジタル・プロセッサは、図７のブロック７００に示すように、プログラム・カウンタ２０４のアドレスが機密動作レンジ内であるかどうかを判定する。プログラム・カウンタが機密アドレス・レンジ内でない場合、プロセッサはブロック７０３に示すように内部ＲＯＭ１１０をイネーブルする。これは、ＲＯＭ１１０がディセーブルされた後にマイクロコントローラ１００が非機密アドレス・レンジに戻った場合に、ＲＯＭ１１０がイネーブルされることを保証する。次に、デジタル・プロセッサは、ブロック７０２に示すように、次のプログラム・カウンタ（ＰＣ）アドレスにて命令を入力する。プログラム・カウンタが機密アドレス・レンジ内にない場合、デジタル・プロセッサは、判定ブロック７０４に示すように、プログラム・カウンタ・アドレスが機密アドレス・レンジの開始アドレス内にあるかどうかを判定する。開始アドレス内にない場合には、プロセッサはブロック７０６に示すようにＲＯＭをディセーブルする。アドレスが第１アドレスである場合、プロセッサは、プログラム・カウンタが機密動作のままである限り、ブロック７０８に示すようにアドレスを入力し、プログラム・カウンタ・アドレスが機密アドレス・レンジ内であるかどうかを判定することにより、ＲＯＭをイネーブルし続ける。プログラム・カウンタ・アドレスが機密アドレス・レンジ内でなくなると、プロセッサはブロック７０２に進む。
【００２２】
図８は、デジタル・プロセッサを利用して、内部ＲＯＭ命令が実行されないときに必ず内部ＲＯＭ１１０をディセーブルするように構成されるセキュリティ論理１１６のプログラムを示す。ブロック８００において判定されるように、プログラム・カウンタ２０４のアドレスが機密アドレス・レンジ内にない場合、プロセッサはブロック８０２に示すようにＲＯＭ１１０をディセーブルする。プロセッサは、ブロック８０４に示すように、プログラム・カウンタ２０４の次のアドレスを入力する。プロセッサは、プログラム・カウンタがＲＯＭアドレス・レンジ内になるまで、ＲＯＭ１１０をディセーブルしたまま動作し続ける。プログラム・カウンタ２０４のアドレスがＲＯＭアドレス・レンジ内であると判定されると、判定ブロック８０６に示すように、プロセッサは、プログラム・カウンタ・アドレスが機密動作の開始アドレスであるかどうかを判定する。開始アドレスでない場合、デジタル・プロセッサは判定ブロック８００に戻る。プログラム・カウンタ２０４のアドレスが機密動作の開始アドレスである場合、プロセッサはブロック８０８に示すようにＲＯＭ１１０をイネーブルする。プロセッサは、ブロック８１０においてアドレスを入力し、かつ判定ブロック８１２においてプログラム・カウンタ・アドレスが機密アドレス・レンジ内であるかどうかを判定することによって判定されるように、プログラム・カウンタが機密動作のままである限り、ＲＯＭをイネーブルし続ける。プログラム・カウンタ・アドレスが機密アドレス・レンジ内でなくなると、プロセッサはブロック８０２で示すようにＲＯＭをディセーブルする。
【００２３】
以上、マイクロコントローラ用の改善されたセキュリティが開示されることがわかる。改善されたセキュリティは、マイクロコントローラの複雑性またはコストを実質的に増加せずに、マイクロコントローラに格納された情報について提供される。
【図面の簡単な説明】
【図１】拡張バスを有するマイクロコントローラを示す、ブロック図形式の回路図である。
【図２】図１によるマイクロコントローラ用のセキュリティ論理を示す、ブロック図形式の回路図である。
【図３】セキュリティ論理の別の実施例を示す、ブロック図形式の回路図である。
【図４】図３による回路用の電源回路を示す回路図である。
【図５】図４のＲＳフリップフロップの論理テーブルである。
【図６】図２のセキュリティ論理における別の回路を示す、ブロック図形式の回路図である。
【図７】プロセッサ実施セキュリティ論理(processor implemented security logic)を採用する別の実施例を示すフローチャートである。
【図８】プロセッサ実施セキュリティ論理を採用する別の実施例を示すフローチャートである。
【符号の説明】
１００  マイクロコントローラ
１０２  中央処理装置（ＣＰＵ）
１０４  アドレス・バス
１０６  データ・バス
１０８  ＲＡＭ
１０９  ＥＥＰＲＯＭ
１１０  ＲＯＭ
１１２  外部ポート
１１４  外部拡張バス
１１６  セキュリティ論理
１１８，１２０  コンダクタ
１１９  内部コントローラ
２０２  カレント・アドレス比較器
２０３，２０５  バス
２０４  プログラム・カウンタ
２０６  機密アドレス・レンジ・レジスタ
２１０  前回アドレス比較器
２１２  前回プログラム・カウンタ・アドレス・レジスタ
２１４，２２０  バス
２１６  第１アドレス比較器
２１８  第１アドレス・レジスタ
２２４，２２６，２２８  コンダクタ
２３０  論理回路
３０２  電源回路
３０４，３０６  コンダクタ
３１０  コンダクタ
３１８  コンダクタ
４０２  ＲＳフリップフロップ
４０４  インバータ
４０８  ＡＮＤゲート
４１０  ＯＲゲート
４２６  ＭＯＳＦＥＴスイッチ
６００  ＥＥＰＲＯＭセキュリティ回路
６０１  プログラム・カウンタ
６０２，６０４  コンダクタ
６０６  論理回路
【図１】
0004312272.tif 000002
【図２】
0004312272.tif 000003
【図３】
0004312272.tif 000004
【図４】
0004312272.tif 000005
【図５】
0004312272.tif 000006
【図６】
0004312272.tif 000007
【図７】
0004312272.tif 000008
【図８】
0004312272.tif 000009