(57)【特許請求の範囲】
【請求項１】
第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有するデータメモリと、前記データメモリの各エリアに対してアクセスの許可／禁止を決定する手段とを具備し、
前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、
前記手段は、前記第１及び第２のエリアの１つを指定する命令アドレスと、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する
半導体回路。
【請求項２】
第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有する周辺回路と、前記周辺回路の各エリアに対してアクセスの許可／禁止を決定する手段とを具備し、
前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、
前記手段は、前記第１及び第２のエリアの１つを指定する命令アドレスと、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する
半導体回路。
【請求項３】
第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有するデータメモリと、前記データメモリの各エリアに対してアクセスの許可／禁止を決定する手段とを具備し、
前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、
前記手段は、前記第１及び第２のエリアの各々に付加される判別標識と、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する
半導体回路。
【請求項４】
第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有する周辺回路と、前記周辺回路の各エリアに対してアクセスの許可／禁止を決定する手段とを具備し、
前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、
前記手段は、前記第１及び第２のエリアの各々に付加される判別標識と、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する
半導体回路。
【請求項５】
前記第１のエリアと前記第３のエリアとは一対一に対応し、前記第２のエリアと前記第４のエリアとは一対一に対応する請求項１乃至４のいずれか１項に記載の半導体回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロテクト機能を持つ半導体回路に関し、特に、マイクロコンピュータ（マイクロコントローラ）に使用される。
【背景技術】
【０００２】
マイクロコンピュータなどの半導体回路（ＩＣ）では、出荷前に、異なる複数のソフトウェア販売者により、順次、プログラムのインストールが行われる。
【０００３】
ここで、各ソフトウェア販売者は、それぞれ独自にプログラムの著作権を保有しているため、あるソフトウェア販売者によるソフトウェアのインストールの際に他のソフトウェア販売者のプログラムを保護する技術が必要である。
【０００４】
その技術の一つに、プログラムメモリとしてのＲＯＭを複数のエリアに分け、エリアごとに異なる判別標識を付して、ソフトウェア販売者がアクセスできるエリアを制限する、というセキュリティ技術がある（例えば、特許文献１参照）。
【０００５】
しかし、マイクロコンピュータなどの半導体回路内には、プログラムが格納されるＲＯＭの他に、演算の対象となる数値や変数などのデータ（オペランドデータ）を格納するデータメモリとしてのＲＡＭや、データの入出力を制御するＩ／Ｏ(input/output circuit)などが存在する。
【０００６】
これらＲＡＭやＩ／Ｏなどのデータを一時的に保持する機能を有する回路に関しては、特にアクセス方法に制限を設けていないため、異なる複数のソフトウェア販売者により、ＲＡＭやＩ／Ｏなどが共通に使用されて問題を起こす場合がある（ハードウェアの競合）。
【０００７】
例えば、あるソフトウェア販売者がソフトウェアをインストールする際に、他のソフトウェア販売者が既にインストールしたプログラムを使用する場合、後者のプログラムを実行するために必要なデータに上書きをしてしまい、そのデータを破壊することがある。
【０００８】
従って、異なる複数のソフトウェア販売者間でプログラムの流失を防ぐセキュリティ機能に加えて、ハードウェアの競合によるデータ破壊を防ぐプロテクト機能の開発が望まれる。
【特許文献１】特開２００５−１２９０４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の例では、ＲＯＭ以外のＲＡＭやＩ／Ｏなどのデータを一時的に保持する回路に関し、この回路を複数のエリアに分け、ユーザ（例えば、ソフトウェア販売者）がアクセスできるエリアを制限してデータの破壊を防ぐ、というプロテクト機能を持つ半導体回路を提案する。
【課題を解決するための手段】
【００１０】
本発明の例に関わる半導体回路は、第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有するデータメモリと、前記データメモリの各エリアに対してアクセスの許可／禁止を決定する手段とを備え、前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、前記手段は、前記第１及び第２のエリアの１つを指定する命令アドレスと、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する。
本発明の例に関わる半導体回路は、第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有するデータメモリと、前記データメモリの各エリアに対してアクセスの許可／禁止を決定する手段とを備え、前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、前記手段は、前記第１及び第２のエリアの各々に付加される判別標識と、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する。
【００１１】
本発明の例に関わる半導体回路は、第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有する周辺回路と、前記周辺回路の各エリアに対してアクセスの許可／禁止を決定する手段とを備え、前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、前記手段は、前記第１及び第２のエリアの１つを指定する命令アドレスと、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する。
本発明の例に関わる半導体回路は、第１及び第２のエリアを有し、各エリアに対してアクセスの許可／禁止が設定されるプログラムメモリと、第３及び第４のエリアを有する周辺回路と、前記周辺回路の各エリアに対してアクセスの許可／禁止を決定する手段とを備え、前記手段は、前記プログラムメモリの前記第１のエリアから第１のプログラムを読み出すとき、前記第３のエリアに対するアクセスを許可し、前記第４のエリアに対するアクセスを禁止することにより、前記第１のプログラムに関するオペランドデータを前記第３のエリアに記憶させ、かつ、前記プログラムメモリの前記第２のエリアに第２のプログラムを書き込むとき、前記第３のエリアに対するアクセスを禁止し、前記第４のエリアに対するアクセスを許可し、前記手段は、前記第１及び第２のエリアの各々に付加される判別標識と、前記第３及び第４のエリアの１つを指定するオペランドデータアドレスとを比較することにより、前記アクセスの許可／禁止を決定する。
【発明の効果】
【００１２】
本発明の例によれば、ＲＯＭ以外のＲＡＭやＩ／Ｏなどのデータを一時的に保持する回路に関し、この回路を複数のエリアに分け、ユーザ（例えば、ソフトウェア販売者）がアクセスできるエリアを制限することにより、データの破壊を防ぐ、というプロテクト機能を実現できる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しながら、本発明の例を実施するための最良の形態について詳細に説明する。
【００１４】
１．  概要  
本発明の例では、マイクロコンピュータなどの半導体回路（ＩＣ）が異なる複数のユーザにより使用されることを前提とし、この場合に、プログラムのセキュリティとハードウェアの競合の防止（データプロテクト）とを同時に実現する。
【００１５】
例えば、図１に示すように、まず、プログラムメモリとしてのＲＯＭ１１を複数のエリア１１−１，１１−２，・・・１１−ｉに分け、ユーザごとに、各エリアに対するアクセスの許可／禁止を設定し、プログラムの流失を防止することにより、プログラムのセキュリティ機能を確保する。
【００１６】
ＲＯＭ１１の各エリアに対するアクセスの許可／禁止の設定方法については、特に限定されることはないが、例えば、特許文献１に開示されるように、エリアごとに判別標識を付すなどして行うことができる。
【００１７】
次に、ＲＡＭ１２やＩ／Ｏ１３などのデータを一時的に保持する回路に関し、この回路を複数のエリア１２−１，１２−２，・・・１２−ｊ，１３−１，１３−２，・・・１３−ｋに分け、ユーザごとに、各エリアに対するアクセスの許可／禁止を設定し、データの破壊を防止することにより、データプロテクト機能を確保する。
【００１８】
ＲＡＭ１２やＩ／Ｏ１３などの回路の各エリアに対するアクセスの許可／禁止の設定方法については、ＲＯＭ１１の場合と同様に、特に限定されることはないが、例えば、エリアを特定するアドレス信号を利用したり、エリアごとに判別標識を付すなどして行うことができる。
【００１９】
但し、このようなＲＡＭ１２やＩ／Ｏ１３などの回路の場合、通常は、読み出し(data read)については制限することなく、書き込み(data write)のみを制限すれば足りる。
【００２０】
尚、ＲＯＭ１１内の複数のエリア１１−１，１１−２，・・・１１−ｉと、ＲＡＭ１２やＩ／Ｏ１３などのデータを一時的に保持する回路内の複数のエリア１２−１，１２−２，・・・１２−ｊ，１３−１，１３−２，・・・１３−ｋとは、一対一に対応させてアクセスを制限することが好ましい。
【００２１】
例えば、ユーザＸについては、ＲＯＭ１１内のエリア１１−１、ＲＡＭ１２内のエリア１２−１及びＩ／Ｏ１３内のエリア１３−１に対するアクセスを許可し、その他のエリアに対するアクセスを禁止する。また、ユーザＹについては、ＲＯＭ１１内のエリア１１−２、ＲＡＭ１２内のエリア１２−２及びＩ／Ｏ１３内のエリア１３−２に対するアクセスを許可し、その他のエリアに対するアクセスを禁止する。
【００２２】
このようにすれば、ユーザＹがソフトウェアをインストールする際に、ユーザＸが既にインストールしたソフトウェアを使用する場合であっても、そのプログラムを実行するために必要なデータを記憶するＲＡＭ１２内のエリア１２−１又はＩ／Ｏ１３内のエリア１３−１とユーザＹがソフトウェアをインストールするために必要なデータを記憶するＲＡＭ１２内のエリア１２−２又はＩ／Ｏ１３内のエリア１３−２とは異なるため、ハードウェアの競合を防止でき、データの破壊を防ぐことができる。
【００２３】
２．  実施の形態  
次に、最良と思われるいくつかの実施の形態について説明する。
【００２４】
(1)   第１実施の形態  
第１実施の形態は、ＲＯＭ内の複数のエリアに対応させて、ＲＡＭ内を複数のエリアに分け、命令アドレスとオペランドデータアドレスとを利用することにより、ユーザがアクセスできるＲＡＭ内のエリアを制限する半導体回路に関する。
【００２５】
A.  構成  
図２は、第１実施の形態に関わる半導体回路を示している。
【００２６】
この半導体回路は、ＣＰＵ(central processing unit)１０、ＲＯＭ１１、ＲＡＭ１２、判別回路１４及びアクセス制御回路１５とから構成される。
【００２７】
ＣＰＵ１０は、プログラムメモリとしてのＲＯＭ１１に記憶されたプログラム（命令データ）や、チップ内外のその他の回路から供給される命令データなどに基づいて所定の処理を行う。
【００２８】
命令アドレス１０ａは、ＲＯＭ１１にアクセスするときのアドレスであり、命令データ１０ｂは、ＲＯＭ１１から読み出されるプログラムである。
【００２９】
ＲＯＭ１１が電気的にプログラム可能なＥＰＲＯＭやフラッシュメモリのような場合には、命令データ１０ｂは、ＲＯＭ１１に書き込まれるプログラムとなることもある。
【００３０】
オペランドデータアドレス１０ｃは、ＲＡＭ１２にアクセスするときのアドレスであり、オペランドデータ１０ｄは、ＲＡＭ１２から読み出されるデータ又はＲＡＭ１２に書き込まれるデータである。
【００３１】
ここで、第１実施の形態では、まず、プログラムメモリとしてのＲＯＭ１１を複数のエリア１１−１，１１−２，・・・１１−ｉに分け、ユーザごとに、各エリアに対するアクセスの許可／禁止を設定する。
【００３２】
ＲＯＭ１１の各エリアに対するアクセスの許可／禁止の設定方法については、特許文献１に開示されるように、エリアごとに判別標識を付すことにより行うことができるので、ここでは、その説明については省略する。
【００３３】
これにより、ユーザ間でのプログラムの流失を防止し、プログラムのセキュリティ機能を確保する。
【００３４】
次に、データメモリとしてのＲＡＭ１２を複数のエリア１２−１，１２−２，・・・１２−ｊに分け、ユーザごとに、各エリアに対するアクセスの許可／禁止を設定する。
【００３５】
ＲＡＭ１２の各エリアに対するアクセスの許可／禁止の設定方法については、ＲＯＭ１１に対する命令アドレス１０ａとＲＡＭ１２に対するオペランドデータアドレス１０ｃとを用い、判別回路１４により両者を比較することにより行う。
【００３６】
例えば、ユーザＸについては、ＲＯＭ１１内のエリア１１−１及びＲＡＭ１２内のエリア１２−１のアクセスを許可し、その他のエリアに対するアクセスを禁止する、また、ユーザＹについては、ＲＯＭ１１内のエリア１１−２及びＲＡＭ１２内のエリア１２−２のアクセスを許可し、その他のエリアに対するアクセスを禁止するものと仮定する。
【００３７】
この場合、判別回路１４は、オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−１を指定しているときは、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１を指定しているときに判別信号を許可（例えば、“Ｈ”）にし、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１以外のエリアを指定しているときに、判別信号を禁止（例えば、“Ｌ”）にする。
【００３８】
このようにすれば、例えば、ユーザＸがソフトウェアをＲＯＭ１１内のエリア１１−１内にインストールするときは、オペランドデータアドレスの供給／遮断を制御するアクセス制御回路１５により、ＲＡＭ１２内のエリア１２−１のみがアクセス可能となる。
【００３９】
また、同様に、例えば、ユーザＹがソフトウェアをＲＯＭ１１内のエリア１１−２内にインストールするときは、アクセス制御回路１５により、ＲＡＭ１２内のエリア１２−２のみがアクセス可能となる。
【００４０】
この時、ユーザＸが既にインストールしたＲＯＭ１１内のエリア１１−１内のソフトウェアを使用する場合であっても、そのプログラムを実行するために必要なオペランドデータは、判別回路１４及びアクセス制御回路１５により、ＲＡＭ１２内のエリア１２−１に記憶されるため、ハードウェアの競合が発生することがなく、データプロテクト機能が確保される。
【００４１】
尚、第１実施の形態に関わる半導体回路を構成する各要素、ＣＰＵ１１、ＲＯＭ１１、ＲＡＭ１２、判別回路１４及びアクセス制御回路１５については、全てを１チップ内に混載していてもよいし、これら要素の少なくとも１つを他の要素が形成されるチップとは異なるチップ内に形成してもよい。
【００４２】
以上のように、第１実施の形態によれば、オペランドデータを記憶するＲＡＭについても、ＲＯＭと同様に、複数のエリアに分け、ユーザ（例えば、ソフトウェア販売者）がアクセスできるエリアを制限することにより、データの破壊を防ぐことができる。
【００４３】
B.  判別回路  
図２の判別回路１４の例について説明する。
【００４４】
・  第１例  
まず、図２及び図３を参照しつつ第１例について説明する。
【００４５】
第１例では、ＲＯＭ１１内のエリア１１−１，１１−２，・・・１１−ｉとＲＡＭ１２内のエリア１２−１，１２−２，・・・１２−ｊとを一対一に対応させてアクセスを制限する。また、簡単のため、ｉ＝ｊとする。
【００４６】
判別回路１４は、ＲＡＭ１２内のエリア１２−１，１２−２，・・・１２−ｊの数に対応してｊ個の判別部１６−１，１６−２，・・・１６−ｊから構成される。
【００４７】
全ての判別部１６−１，１６−２，・・・１６−ｊには、共通に、命令アドレス１０ａとオペランドデータアドレス１０ｃが入力される。また、判別部１６−１，１６−２，・・・１６−ｊには、それぞれ、ＲＯＭ１１内又はＲＡＭ１２内の対応するエリアのスタートアドレスとエリアサイズとが個別に入力される。
【００４８】
判別部１６−１，１６−２，・・・１６−ｊの構成は、全て同じであるので、以下では、判別部１６−１を例にとって説明する。
【００４９】
判別部１６−１には、ＲＯＭ１１内のエリア１１−１のスタートアドレスとエリアサイズ、さらに、ＲＡＭ１２内のエリア１２−１のスタートアドレスとエリアサイズが入力される。
【００５０】
ＲＯＭ１１内のエリア１１−１のスタートアドレスとエリアサイズとが分かれば、加算回路１７により、ＲＯＭ１１内のエリア１１−１のエンドアドレスを求めることができる。
【００５１】
ＲＡＭ１２内のエリア１２−１のスタートアドレスとエリアサイズとが分かれば、加算回路１８により、ＲＡＭ１２内のエリア１２−１のエンドアドレスを求めることができる。
【００５２】
ロジック回路１９は、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１の指定以外かどうか、エリア１１−１のスタートアドレスとエンドアドレスとに基づいて判別する。
【００５３】
ロジック回路２０は、オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−１の指定かどうか、エリア１２−１のスタートアドレスとエンドアドレスとに基づいて判別する。
【００５４】
オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−１の指定である場合には、制御信号Ｓ２が“Ｈ”になる。
【００５５】
この時、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１の指定以外である場合には、制御信号Ｓ１が“Ｈ”になる。
【００５６】
従って、書き込み信号ＷＲ、チップセレクト信号ＣＳ及びオペランドデータアクセス信号ＯＡがそれぞれ“Ｈ”であると、アンドゲート回路２１の出力信号は、“Ｈ”になり、オアゲート回路２２から出力される判別信号は、アクセスの禁止を示す“Ｈ”となる。
【００５７】
また、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１の指定である場合には、制御信号Ｓ１が“Ｌ”になるため、オアゲート回路２２から出力される判別信号は、アクセスの許可を示す“Ｌ”となる。
【００５８】
つまり、判別回路１４は、オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−１を指定しているときは、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１を指定しているときに判別信号を許可にし、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１以外のエリアを指定しているときに、判別信号を禁止にする。
【００５９】
このような判別回路１４によれば、ＲＯＭ１１内の１つのエリアとＲＡＭ１２内の１つのエリアとをペアにし、常にペアで使用することにより、ハードウェアの競合が生じることはない。
【００６０】
・  第２例  
次に、図２及び図４を参照しつつ第２例について説明する。
【００６１】
第２例では、アクセス許可信号φ１，φ２，・・・φｉを用いて、ＲＡＭ１２内のエリア１２−１，１２−２，・・・１２−ｊに対するアクセスを個別に制限する。また、簡単のため、ｉ＝ｊとする。
【００６２】
判別回路１４は、ＲＡＭ１２内のエリア１２−１，１２−２，・・・１２−ｊの数に対応する判別部１６−１，１６−２，・・・１６−ｊから構成される。
【００６３】
全ての判別部１６−１，１６−２，・・・１６−ｊには、共通に、命令アドレス１０ａとオペランドデータアドレス１０ｃが入力される。また、判別部１６−１，１６−２，・・・１６−ｊには、それぞれ、ＲＯＭ１１内のエリア１１−１，１１−２，・・・１１−ｉのスタートアドレスとエリアサイズ、さらに、ＲＯＭ１１内のエリア１１−１，１１−２，・・・１１−ｉに対するアクセス許可信号φ１，φ２，・・・φｉが入力される。
【００６４】
判別部１６−１，１６−２，・・・１６−ｊの構成は、全て同じであるので、以下では、判別部１６−１を例にとって説明する。
【００６５】
ロジック回路１９，２０及び加算回路１７，１８の構成は、第１例と同じであるため、ここでは、その説明を省略する。
【００６６】
アクセス許可信号φ１，φ２，・・・φｉは、ＲＡＭ１２内のエリア１２−１，１２−２，・・・１２−ｊに対するアクセスの制限を決定する。
【００６７】
アクセス許可信号φ１，φ２，・・・φｉの全てが“Ｈ”のときは、第１例と同じロジックとなる。
【００６８】
オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−１の指定である場合には、制御信号Ｓ２が“Ｈ”になる。
【００６９】
この時、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１の指定である場合には、ロジック回路１９の出力信号（制御信号）Ｓ１が“Ｈ”になる。
【００７０】
このため、アクセス許可信号φ１がエリア１１−１のアクセスを許可する“Ｈ”であると、アンドゲート回路２１及びナンドゲート回路２３の出力信号は、共に“Ｌ”となり、オアゲート回路２２から出力される判別信号は、アクセスの許可を示す“Ｌ”となる。
【００７１】
ここで、アクセス許可信号φ１がエリア１１−１のアクセスを禁止する“Ｌ”であるときは、アンドゲート回路２１及びナンドゲート回路２３の出力信号は、共に“Ｈ”となり、オアゲート回路２２から出力される判別信号は、アクセスの禁止を示す“Ｈ”となる。
【００７２】
従って、アクセス制御回路により、ＲＡＭ１２内のエリア１２−１に対するアクセスが強制的に禁止される。
【００７３】
このような判別回路１４によれば、アクセス許可信号φ１，φ２，・・・φｉにより、ＲＡＭ１２内のエリア１２−１，１２−２，・・・１２−ｊに対するアクセスを制限することで、ハードウェアの競合を防止できる。
【００７４】
C.  アクセス制御方法  
ＲＡＭに対するアクセス制御方法について簡単に説明する。
【００７５】
図５は、アクセス制御方法の例を示している。
【００７６】
このアクセス制御方法は、例えば、ＲＯＭに記憶されたプログラムを実行するときや、ＲＯＭにソフトウェアをインストールするときなどに、ＣＰＵにより所定の演算を実行し、オペランドデータをＲＡＭに記憶する場合に適用される。
【００７７】
まず、書き込み信号ＷＲが“Ｈ”になることにより、ＲＡＭに対する書き込み動作が確認される（ステップＳＴ１）。
【００７８】
次に、オペランドデータアクセス信号ＯＡが“Ｈ”になり、ＲＡＭに対するオペランドデータアクセスであることが確認される（ステップＳＴ２）。
【００７９】
次に、チップセレクト信号ＣＳが“Ｈ”になり、アクセスを行うＲＡＭがプロテクト対象であることが確認される（ステップＳＴ３）。
【００８０】
そして、命令アドレスとオペランドデータアドレスとが比較され、両者が予め決められたペア（ＲＯＭのエリア１１−ｎとＲＡＭのエリア１２−ｎ）を指定するものである場合には、ＲＡＭに対するアクセスが許可され、書き込みが実行される。
【００８１】
また、命令アドレスとオペランドデータアドレスとが予め決められたペア（ＲＯＭのエリア１１−ｎとＲＡＭのエリア１２−ｎ）を指定するものでない場合には、ＲＡＭに対するアクセスが禁止され、書き込みが中止される（ステップＳＴ４）。
【００８２】
尚、ｎは、１〜ｉ又は１〜ｊのうちの予め決められた値（エリア）である。
【００８３】
(2)   第２実施の形態  
第２実施の形態は、ＲＯＭ内の複数のエリアに対応させて、ＲＡＭ内を複数のエリアに分け、判別標識を利用することにより、ユーザがアクセスできるＲＡＭ内のエリアを制限する半導体回路に関する。
【００８４】
図６は、第２実施の形態に関わる半導体回路を示している。
【００８５】
この半導体回路は、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２及びアクセス制御回路１５とから構成される。
【００８６】
ＣＰＵ１０は、プログラムメモリとしてのＲＯＭ１１に記憶されたプログラム（命令データ）や、チップ内外のその他の回路から供給される命令データなどに基づいて所定の処理を行う。
【００８７】
命令データ１０ｂは、ＲＯＭ１１から読み出されるプログラム又はＲＯＭ１１に書き込まれるプログラムである。
【００８８】
オペランドデータアドレス１０ｃは、ＲＡＭ１２にアクセスするときのアドレスであり、オペランドデータ１０ｄは、ＲＡＭ１２から読み出されるデータ又はＲＡＭ１２に書き込まれるデータである。
【００８９】
ここで、第２実施の形態では、まず、プログラムメモリとしてのＲＯＭ１１を複数のエリア１１−１，１１−２，・・・１１−ｉに分け、ユーザごとに、各エリアに対するアクセスの許可／禁止を設定する。
【００９０】
ＲＯＭ１１の各エリアに対するアクセスの許可／禁止の設定方法については、エリアごとに判別標識を付すことにより行う。例えば、ＲＯＭ１１内のエリア１１−１，１１−２，・・・１１−ｉに対し、判別標識Ｆ１，Ｆ２，・・・Ｆｉを付加する。判別標識Ｆ１，Ｆ２，・・・Ｆｉは、それぞれ、例えば、複数ビットのデータ列から構成される。
【００９１】
そして、ユーザがＲＯＭ１１にアクセスするときには、判別標識Ｆ１，Ｆ２，・・・Ｆｉによりアクセスが制限される。
【００９２】
例えば、判別標識Ｆ１を知らされたユーザＸは、ＲＯＭ１１内のエリア１１−１にアクセスすることはできるが、その他のエリアにはアクセスすることはできない。同様に、判別標識Ｆ２を知らされたユーザＹは、ＲＯＭ１１内のエリア１１−２にアクセスすることはできるが、その他のエリアにはアクセスすることはできない。
【００９３】
これにより、ユーザ間でのプログラムの流失を防止し、プログラムのセキュリティ機能を確保する。
【００９４】
次に、データメモリとしてのＲＡＭ１２を複数のエリア１２−１，１２−２，・・・１２−ｊに分け、ユーザごとに、各エリアに対するアクセスの許可／禁止を設定する。
【００９５】
ＲＡＭ１２の各エリアに対するアクセスの許可／禁止の設定方法については、ＲＯＭ１１内のエリア１１−１，１１−２，・・・１１−ｉに付加された判別標識Ｆ１，Ｆ２，・・・Ｆｉを用いることにより行う。
【００９６】
例えば、ユーザＸは、判別標識Ｆ１を用いて、ＲＯＭ１１内のエリア１１−１にソフトウェアをインストールする。この時、アクセス制御回路１５により、オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−１を指定していると、ＲＡＭ１２に対するアクセスが許可され、それ以外のときは、ＲＡＭ１２に対するアクセスが禁止される。
【００９７】
また、ユーザＹは、判別標識Ｆ２を用いて、ＲＯＭ１１内のエリア１１−２にソフトウェアをインストールする。この時、アクセス制御回路１５により、オペランドデータアドレス１０ｃがＲＡＭ１２内のエリア１２−２を指定していると、ＲＡＭ１２に対するアクセスが許可され、それ以外のときは、ＲＡＭ１２に対するアクセスが禁止される。
【００９８】
このようにすれば、例えば、ユーザＹがソフトウェアをＲＯＭ１１内のエリア１１−２内にインストールするとき、ユーザＸが既にインストールしたＲＯＭ１１内のエリア１１−１内のソフトウェアを使用する場合であっても、そのプログラムを実行するために必要なオペランドデータは、ＲＡＭ１１内のエリア１１−１に記憶されるため、ハードウェアの競合が発生することがなく、データプロテクト機能が確保される。
【００９９】
尚、第２実施の形態に関わる半導体回路を構成する各要素、ＣＰＵ１１、ＲＯＭ１１、ＲＡＭ１２及びアクセス制御回路１５についても、全てを１チップ内に混載していてもよいし、これら要素の少なくとも１つを他の要素が形成されるチップとは異なるチップ内に形成してもよい。
【０１００】
以上のように、第２実施の形態においては、オペランドデータを記憶するＲＡＭについて、ＲＯＭと同様に、複数のエリアに分け、ユーザ（例えば、ソフトウェア販売者）がアクセスできるエリアを制限することにより、データの破壊を防ぐことができる。
【０１０１】
(3)   第３実施の形態  
第３実施の形態は、ＲＯＭ内の複数のエリアに対応させて、Ｉ／Ｏを複数のエリアに分け、命令アドレスとＩ／Ｏを指定するアドレスとを利用して、ユーザがアクセスできるＩ／Ｏを制限する半導体回路に関する。
【０１０２】
図７は、第３実施の形態に関わる半導体回路を示している。
【０１０３】
この半導体回路は、ＣＰＵ１０、ＲＯＭ１１、Ｉ／Ｏ１３、判別回路１４及びアクセス制御回路１５とから構成される。
【０１０４】
この半導体回路は、図２に示す第１実施の形態に関わる半導体回路と比べると、ＲＡＭの代わりに、周辺回路としてのＩ／Ｏ１３を複数のエリア１３−１，１３−２，・・・１３−ｋに分け、ユーザごとに、各エリアに対するアクセスを制限する点に特徴を有し、その他の構成については、第１実施の形態と同じである。
【０１０５】
アドレス１０ｅは、Ｉ／Ｏ１３にアクセスするときのアドレスであり、入出力データ１０ｆは、Ｉ／Ｏ１３から読み出されるデータ又はＩ／Ｏ１３に書き込まれるデータである。
【０１０６】
Ｉ／Ｏ１３に対するアクセスの許可／禁止の設定方法については、ＲＯＭ１１に対する命令アドレス１０ａとＩ／Ｏ１３に対するアドレス１０ｅとを用い、判別回路１４により両者を比較することにより行う。
【０１０７】
例えば、アドレス１０ｅがＩ／Ｏ１３内のエリア１３−１を指定しているときは、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１を指定しているときに判別信号を許可（例えば、“Ｈ”）にし、命令アドレス１０ａがＲＯＭ１１内のエリア１１−１以外のエリアを指定しているときに、判別信号を禁止（例えば、“Ｌ”）にする。
【０１０８】
このようにすれば、第１実施の形態と同様に、Ｉ／Ｏ１３内の複数のエリア１３−１，１３−２，・・・１３−ｋに関して、ユーザ間で使い分けを実施することにより、ハードウェアの競合が発生することがなく、データプロテクト機能が確保される。
【０１０９】
尚、第３実施の形態では、ＣＰＵ１１、ＲＯＭ１１、Ｉ／Ｏ１３、判別回路１４及びアクセス制御回路１５は、全て１チップ内に混載されていることを前提とする。但し、ＲＯＭ１１については、他の要素とは異なるチップ内に形成されていてもよい。
【０１１０】
以上のように、第３実施の形態によれば、データの入出力に関するＩ／Ｏについて、ユーザがアクセスできるエリアを制限することにより、データの破壊を防ぐことができる。
【０１１１】
(4)   第４実施の形態  
第４実施の形態は、ＲＯＭ内の複数のエリアに対応させて、Ｉ／Ｏを複数のエリアに分け、判別標識を利用することにより、ユーザがアクセスできるＩ／Ｏを制限する半導体回路に関する。
【０１１２】
図８は、第４実施の形態に関わる半導体回路を示している。
【０１１３】
この半導体回路は、ＣＰＵ１０、ＲＯＭ１１、Ｉ／Ｏ１３及びアクセス制御回路１５とから構成される。
【０１１４】
この半導体回路は、図６に示す第２実施の形態に関わる半導体回路と比べると、ＲＡＭの代わりに、周辺回路としてのＩ／Ｏ１３を複数のエリア１３−１，１３−２，・・・１３−ｋに分け、ユーザごとに、各エリアに対するアクセスを制限する点に特徴を有し、その他の構成については、第２実施の形態と同じである。
【０１１５】
アドレス１０ｅは、Ｉ／Ｏ１３にアクセスするときのアドレスであり、入出力データ１０ｆは、Ｉ／Ｏ１３から読み出されるデータ又はＩ／Ｏ１３に書き込まれるデータである。
【０１１６】
Ｉ／Ｏ１３に対するアクセスの許可／禁止の設定方法については、ＲＯＭ１１内のエリア１１−１，１１−２，・・・１１−ｉに付加された判別標識Ｆ１，Ｆ２，・・・Ｆｉを用いることにより行う。
【０１１７】
例えば、判別標識Ｆ１を使用して、ＲＯＭ１１内のエリア１１−１にソフトウェアをインストールする場合、アドレス１０ｅがＩ／Ｏ１３内のエリア１３−１を指定しているときは、アクセス制御回路１５によりアクセスを許可し、アドレス１０ｅがＩ／Ｏ１３内のエリア１３−１以外のエリアを指定しているときは、アクセス制御回路１５によりアクセスを禁止する。
【０１１８】
このようにすれば、第２実施の形態と同様に、Ｉ／Ｏ１３内の複数のエリア１３−１，１３−２，・・・１３−ｋに関して、ユーザ間で使い分けを実施することにより、ハードウェアの競合が発生することがなく、データプロテクト機能が確保される。
【０１１９】
尚、第４実施の形態では、ＣＰＵ１１、ＲＯＭ１１、Ｉ／Ｏ１３及びアクセス制御回路１５は、全て１チップ内に混載されていることを前提とする。但し、ＲＯＭ１１については、他の要素とは異なるチップ内に形成されていてもよい。
【０１２０】
以上のように、第４実施の形態によれば、データの入出力に関するＩ／Ｏについて、ユーザがアクセスできるエリアを制限することにより、データの破壊を防ぐことができる。
【０１２１】
(5)   第５実施の形態  
第５実施の形態は、ダイレクトメモリアクセスコントローラ（以下、ＤＭＡＣと称する）を有する半導体回路に関し、命令アドレスとオペランドデータアドレスとを用いて、ＤＭＡＣにより、ＲＡＭに対するアクセスを制限する半導体回路に関する。
【０１２２】
図９は、第５実施の形態に関わる半導体回路を示している。
【０１２３】
この半導体回路は、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２、判別回路１４、アクセス制御回路１５及びＤＭＡＣ２４とから構成される。
【０１２４】
この半導体回路は、図２に示す第１実施の形態に関わる半導体回路と比べると、ＣＰＵ１０に代えて、ＤＭＡＣ２４により、ＲＡＭ１２の各エリアに対するアクセスを制限する点に特徴を有し、その他の構成については、第１実施の形態と同じである。
【０１２５】
ＤＭＡＣ２４は、ＣＰＵ１０を介することなく、メモリ（ＲＯＭ１１及びＲＡＭ１２を含む）間、又は、メモリ及びＩ／Ｏ間でのデータ転送を実行することにより、高速データ転送を実現する。
【０１２６】
このような場合に、ＤＭＡＣ２４は、ユーザごとに、ＲＡＭ１２の各エリアに対するアクセスの許可／禁止を設定する。
【０１２７】
ＲＡＭ１２に対するアクセスの許可／禁止の設定方法については、第１実施の形態と同じであるので、ここでは、その説明を省略する。
【０１２８】
尚、ＤＭＡＣ２４を用いて、第３実施の形態におけるＩ／Ｏの各エリアに対するアクセスを制限することもできる。
【０１２９】
このように、第５実施の形態によれば、ＤＭＡＣ２４によりＲＡＭ１２に対するアクセスを制限することにより、ユーザ間での使い分けを可能とし、ハードウェアの競合をなくし、データプロテクト機能を実現できる。
【０１３０】
(6)   第６実施の形態  
第６実施の形態は、ＤＭＡＣを有する半導体回路に関し、ＲＯＭの判別標識を用いて、ＤＭＡＣにより、ＲＡＭに対するアクセスを制限する半導体回路に関する。
【０１３１】
図１０は、第６実施の形態に関わる半導体回路を示している。
【０１３２】
この半導体回路は、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２、アクセス制御回路１５及びＤＭＡＣ２４とから構成される。
【０１３３】
この半導体回路は、図６に示す第２実施の形態に関わる半導体回路と比べると、ＣＰＵ１０に代えて、ＤＭＡＣ２４により、ＲＡＭ１２の各エリアに対するアクセスを制限する点に特徴を有し、その他の構成については、第２実施の形態と同じである。
【０１３４】
このような場合に、ＤＭＡＣ２４は、ユーザごとに、ＲＡＭ１２の各エリアに対するアクセスの許可／禁止を設定する。
【０１３５】
ＲＡＭ１２に対するアクセスの許可／禁止の設定方法については、第２実施の形態と同じであるので、ここでは、その説明を省略する。
【０１３６】
尚、ＤＭＡＣ２４を用いて、第４実施の形態におけるＩ／Ｏの各エリアに対するアクセスを制限することもできる。
【０１３７】
このように、第６実施の形態によれば、ＤＭＡＣ２４によりＲＡＭ１２に対するアクセスを制限することにより、ユーザ間での使い分けを可能とし、ハードウェアの競合をなくし、データプロテクト機能を実現できる。
【０１３８】
３．  適用例  
本発明の例は、マイクロコンピュータに適用できる。
【０１３９】
図１１は、マイコンチップの概要を示している。
【０１４０】
マイコンチップ２５は、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２ａ，１２ｂ、Ｉ／Ｏ１３、判別回路１４及びアクセス制御回路１５を有する。
【０１４１】
これらの要素は、上述の第１〜第６実施の形態の要素に対応している。
【０１４２】
例えば、ＲＡＭ１２ａがプロテクト対象外であり、ＲＡＭ１２ｂがプロテクト対象である場合、アドレスや判別標識などを用いて、ユーザごとに、ＲＡＭ１２ｂの各エリアに対するアクセスを制限する。
【０１４３】
尚、本発明の例の適用対象としては、マイクロコンピュータの他、ＭＰＵ(micro processing unit)、ＤＳＰ(digital signal processor)や、システムＬＳＩなどの半導体回路がある。
【０１４４】
３．  その他  
上述の各実施の形態では、ＲＡＭやＩ／Ｏなどの回路に対するアクセスの制限を、アクセス制御回路を用いて、ＲＡＭやＩ／Ｏなどの回路のエリアを指定するアドレスの供給／遮断を制御することにより行ったが、アクセスを制限する手段は、これに限定されることはない。
【０１４５】
また、ＲＯＭのエリア及びＲＡＭのエリアは、１チップ内のエリアを前提としているが、それぞれ、異なる別個のＲＯＭチップ又はＲＡＭチップとしても、本発明の例の適用に当たっては問題ない。
【０１４６】
さらに、アクセスを制限するメモリとしては、プログラムメモリとしてのＲＯＭ以外であれば、フラッシュメモリであっても、又は、ハードディスクとしての磁気メモリであっても構わない。
【０１４７】
本発明の例は、上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で、各構成要素を変形して具体化できる。また、上述の実施の形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。例えば、上述の実施の形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施の形態の構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１４８】
【図１】本発明の概要を示す図。
【図２】第１実施の形態に関わる半導体回路を示す図。
【図３】判別回路の第１例を示す図。
【図４】判別回路の第２例を示す図。
【図５】アクセス制御方法を示す図。
【図６】第２実施の形態に関わる半導体回路を示す図。
【図７】第３実施の形態に関わる半導体回路を示す図。
【図８】第４実施の形態に関わる半導体回路を示す図。
【図９】第５実施の形態に関わる半導体回路を示す図。
【図１０】第６実施の形態に関わる半導体回路を示す図。
【図１１】本発明の例の適用例を示す図。
【符号の説明】
【０１４９】
１０：  ＣＰＵ、  １１：  ＲＯＭ、  １２：  ＲＡＭ、  １３：  Ｉ／Ｏ、  １４：  判別回路、  １５：  アクセス制御回路、  １６−１，１６−２，・・・１６−ｊ：  判別部、  １７，１８：  加算回路、  １９，２０：  ロジック回路、  ２１：  アンドゲート回路、  ２２：  オアゲート回路、  ２３：  ナンドゲート回路、  ２４：  ＤＭＡＣ、  ２５：  マイコンチップ。
【図１】
0004828921.tif 000002
【図２】
0004828921.tif 000003
【図３】
0004828921.tif 000004
【図４】
0004828921.tif 000005
【図５】
0004828921.tif 000006
【図６】
0004828921.tif 000007
【図７】
0004828921.tif 000008
【図８】
0004828921.tif 000009
【図９】
0004828921.tif 000010
【図１０】
0004828921.tif 000011
【図１１】
0004828921.tif 000012