(57)【特許請求の範囲】
【請求項１】
情報処理を行うマイクロコンピュータであって、
命令の実行処理を行うプロセッサと、
エミュレーションメモリと少なくとも１つの他の外部メモリとが接続可能な外部バスと、
エミュレーションモードがオンになった場合に、前記プロセッサの内部メモリへのアクセスが、前記外部バスを介した前記エミュレーションメモリへのアクセスに切り替わるように、前記プロセッサのバスを前記外部バスに接続するバス制御手段と、
前記外部バスに接続されると共にデータを記憶する前記外部メモリを制御するための第１の制御信号と、前記外部バスに接続されると共に命令を記憶する前記エミュレーションメモリを制御するための、前記第１の制御信号とは別系統の第２の制御信号とを出力するメモリ制御手段とを含み、
前記メモリ制御手段は、
前記エミュレーションモードがオンになった場合に、前記第２の制御信号に含まれる第２のメモリリード信号をアクティブにして前記エミュレーションメモリから命令を読み出し、前記第１の制御信号に含まれる第１のメモリリード信号をアクティブにして前記外部メモリからデータを読み出す信号制御を行うと共に、前記第２の制御信号に含まれる第２のチップイネーブル信号がアクティブになってから前記第２のメモリリード信号がアクティブになるまでのタイミングが、前記第１の制御信号に含まれる第１のチップイネーブル信号がアクティブになってから前記第１のメモリリード信号がアクティブになるまでのタイミングよりも早くなるように信号制御を行うことを特徴とするマイクロコンピュータ。
【請求項２】
請求項１のマイクロコンピュータと、
前記マイクロコンピュータの処理対象となる情報の入力源と、
前記マイクロコンピュータにより処理された情報を出力するための出力装置とを含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータ及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、家庭用のゲーム装置、カーナビゲーションシステム、プリンタ、携帯情報端末、携帯電話などの電子機器に組み込まれ、高度な情報処理を実現できるマイクロコンピュータに対する需要が高まっている。
【０００３】
このようなマイクロコンピュータでは、図１（Ａ）に示すような量産用の製品チップ７００以外にも、図１（Ｂ）に示すようなプログラムやシステム開発用の評価チップ７１０が作成される。そして、この評価チップ７１０では、汎用メモリ等の外部メモリ７０６が接続される通常の外部アドレスバス７０２、外部データバス７０４以外にも、エミュレーションメモリ（内部ＲＯＭ７１８をエミュレーションするためのメモリ）７１６に専用のアドレスバス７１２、データバス７１４が設けられる。即ち、開発途中のプログラムについては、内部ＲＯＭ７１８に記憶させずに、高速ＳＲＡＭ等のエミュレーションメモリ７１６に記憶させる。そして、プログラムのデバッグを行い、デバッグが完全に終了し完成したプログラムを内部ＲＯＭ７１８に記憶するようにする。完成前のプログラムを内部ＲＯＭ７１８に記憶させると、プログラムに変更が生じた場合等に、内部ＲＯＭ７１８のマスクパターンを変更して内部ＲＯＭ７１８を新たに作り直さなければならなくなるからである。
【０００４】
このように、評価チップ７１０にはエミュレーションメモリ７１６に専用のアドレスバス７１２、データバス７１４が設けられる。従って、評価チップ７１０のピン数は、製品チップ７００の端子（ピン）数に比べて非常に多くなってしまう。このため、評価チップ７１０を実装できるパッケージの入手が困難になったり、製品チップ７００と評価チップ７１０との端子の整合性をとるのが煩雑になるという問題が生じる。また、評価チップ７１０では正常に動作していたプログラムが、製品チップ７００では動作しなくなるという問題も生じる。
【０００５】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、端子数の節約を図りながら最適な評価環境を実現できるマイクロコンピュータ及び電子機器を提供することにある。
【０００６】
【課題を解決するための手段】
上記課題を解決するために本発明は、情報処理を行うマイクロコンピュータであって、命令の実行処理を行うプロセッサと、エミュレーションメモリと少なくとも１つの他の外部メモリとが接続可能な外部バスと、エミュレーションモードがオンになった場合に、前記プロセッサの内部メモリへのアクセスが、前記外部バスを介した前記エミュレーションメモリへのアクセスに切り替わるように、前記プロセッサのバスを前記外部バスに接続するバス制御手段とを含むことを特徴とする。
【０００７】
本発明では、外部メモリとエミュレーションメモリとが接続可能な外部バス（外部バス端子）が設けられ、外部メモリとエミュレーションメモリとにより外部バスが共用可能になっている。そして、エミュレーションモードがオンになると、プロセッサの内部メモリへのアクセスが、外部バスを介したエミュレーションメモリへのアクセスに切り替わる。従って、エミュレーションモードがオフの時には、内部メモリに記憶される情報に基づいてプロセッサが動作し、エミュレーションモードがオンの時には、エミュレーションメモリに記憶される情報に基づいてプロセッサが動作するようになる。これにより、エミュレーションメモリを用いた、プログラム開発などの評価作業が可能になる。しかも、本発明によれば、エミュレーションメモリに専用のバスを設けることなく、他の外部メモリ用の外部バスを介してエミュレーションメモリへのアクセスが行われる。従って、特に限定はされないが、評価用のマイクロコンピュータの端子と製品用のマイクロコンピュータの端子を同一形態のものにすることが可能になり、マイクロコンピュータの端子数の節約を図りながら最適な評価環境を実現できるようになる。
【０００８】
なお、外部バスは、外部メモリとエミュレーションメモリとが接続可能であれば十分であり、例えば製品時においては、エミュレーションメモリを外部バスに接続する必要はない。
【０００９】
また、プロセッサの内部メモリへのアクセスは、内部メモリが割り当てられるメモリ空間のエリアへのアクセスであれば十分であり、例えば評価時においては、内部メモリをマイクロコンピュータに実際に内蔵させる必要性は必ずしもない。
【００１０】
また、製品時において、エミュレーションに必要な回路を恣意的に排除したり、エミュレーション機能を無効にしたようなマイクロコンピュータも、本発明の均等な範囲に含まれる。
【００１１】
また本発明は、エミュレーションモードのオン、オフを選択するためのモード選択端子を含むことを特徴とする。このようにすれば、内部メモリに記憶されるプログラムなどの情報を書き換えるとなく、製品時にエミュレーションモードをオフにすることが可能になる。
【００１２】
また本発明は、エミュレーションモードのオン、オフを選択するための情報を記憶し前記プロセッサがアクセス可能なモード選択レジスタを含むことを特徴とする。このようにすれば、マイクロコンピュータの端子への信号の設定を変更することなく、ソフトウェア処理によりエミュレーションモードのオン、オフを切り替えることが可能になる。
【００１３】
なお、本発明では、プロセッサのアドレスバスについては、エミュレーションモードのオン、オフに依存せずに外部アドレスバス及び前記内部メモリのアドレスバスに接続され、プロセッサのデータバスについては、エミュレーションモードがオンになった場合に外部データバスに接続されるようにしてもよい。
【００１４】
また本発明は、前記外部バスに接続される前記外部メモリを制御するための第１の制御信号と、前記外部バスに接続される前記エミュレーションメモリを制御するための、前記第１の制御手段とは別系統の第２の制御信号とを出力するメモリ制御手段を含むことを特徴とする。このようにすれば、外部メモリを制御する第１の制御信号とは別系統の第２の制御信号で、エミュレーションメモリを制御できるようになる。これにより、外部メモリが接続される外部バスを用いてエミュレーションメモリへのアクセスを行った場合にも、エミュレーションメモリへの適正なアクセスを実現できるようになる。
【００１５】
また本発明は、前記第２の制御信号が含む第２のメモリリード信号が、前記第１の制御信号が含む第１のメモリリード信号よりも早いタイミングでアクティブになることを特徴とする。このようにすれば、例えばエミュレーションメモリに記憶される命令をプロセッサが１クロックサイクルでフェッチしデコードしなければならない等の制約がある場合にも、このような制約に容易に対応できるようになる。
【００１６】
また本発明は、リセット後に前記プロセッサが最初にアクセスするアクセス先が前記エミュレーションメモリになる第１のモードと、前記アクセス先が前記内部メモリになる第２のモードを選択するためのモード選択端子を含むことを特徴とする。このようにすれば、評価時には第１のモードを選択し、製品（実動作）時には第２のモードを選択することが可能になり、プログラム開発などの評価作業の効率化を図れるようになる。
【００１７】
また本発明は、前記アクセス先が前記外部メモリになる第３のモードが、前記モード選択端子により選択可能なことを特徴とする。このようにすれば、外部メモリからのブートが可能になり、幅広い層のユーザの要望に応えることができるようになる。
【００１８】
また本発明は、リセット後に前記外部メモリから前記エミュレーションメモリに情報が送信され、その後に前記プロセッサが最初に前記エミュレーションメモリにアクセスする第４のモードが、前記モード選択端子により選択可能なことを特徴とする。このようにすれば、エミュレーションメモリの情報が消失する毎に、エミュレーションメモリに情報をダウンロードしなければならない等の手間を省くことが可能になり、評価作業の効率化を図れるようになる。
【００１９】
また本発明に係る電子機器は、上記のいずれかのマイクロコンピュータと、前記マイクロコンピュータの処理対象となる情報の入力源と、前記マイクロコンピュータにより処理された情報を出力するための出力装置とを含むことを特徴とする。このようにすれば、電子機器に組み込まれるマイクロコンピュータとして、評価時と製品時とで同じものを使用できるようになり、電子機器の低コスト化や信頼性の向上を図れるようになる。また、マイクロコンピュータを電子機器に組み込んだ状態で行われる評価作業の効率化も図れるようになる。
【００２０】
また本発明は、命令の実行処理を行うプロセッサと、エミュレーションメモリ及び少なくとも１つの他の外部メモリが接続可能な外部バスとを含むマイクロコンピュータのためのエミュレーション方法であって、マイクロコンピュータの評価時においては、前記エミュレーションメモリと前記外部メモリとで前記外部バスを共用させると共に、前記外部バスを介して前記エミュレーションメモリにアクセスし、該アクセスにより前記エミュレーションメモリから読み出される情報に基づいて前記プロセッサを動作させ、マイクロコンピュータの製品時においては、内部メモリから読み出される情報に基づいて前記プロセッサを動作させることを特徴とする。
【００２１】
本発明によれば、マイクロコンピュータの評価時においては、外部メモリが接続される外部バスを介して、エミュレーションメモリへのアクセスが行われ、エミュレーションメモリを用いた、プログラム開発などの評価作業が可能になる。そして、本発明によれば、エミュレーションメモリに専用のバスを設けることなく、他の外部メモリ用の外部バスを介してエミュレーションメモリへのアクセスが行われる。従って、特に限定はされないが、評価用のマイクロコンピュータの端子と製品用のマイクロコンピュータの端子を同一形態のものにすることが可能になり、マイクロコンピュータの端子数の節約を図りながら最適な評価環境を実現できるようになる。
【００２２】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２３】
１．マイクロコンピュータ
図２に、本実施形態のマイクロコンピュータの構成例を示す。
【００２４】
図２のマイクロコンピュータ１０は、ＣＰＵ（広義にはプロセッサ）１２、バス制御部（ＢＣＵ）１４、内部ＲＯＭ（広義には内部メモリ）１６、エミュレーション指示部１８、メモリ制御部２０を含む。また、マイクロコンピュータ１０の外部バス（外部バス端子）２８には、汎用メモリ（フラッシュメモリ、ＤＲＡＭ）等の外部メモリ３０や、高速ＳＲＡＭなどで構成されるエミュレーションメモリ３２が接続可能になっている。なお、外部バス２８に、ゲートアレイなどの他の外部デバイスを接続してもよい。
【００２５】
ここで、ＣＰＵ１２は、命令の実行処理を行うものであり、ＣＰＵ１２のＣＰＵバス２２はバス制御部１４に接続される。またＣＰＵ１２からのステータス信号ＳＴもバス制御部１４に出力される。
【００２６】
内部ＲＯＭ１６は、プログラムやデータなどの情報を記憶するものであり、内部ＲＯＭ１６の内部ＲＯＭバス２６はバス制御部１４に接続される。なお、評価時等においては、内部ＲＯＭ１６をマイクロコンピュータ１０に内蔵させないようにしもよい。
【００２７】
エミュレーション指示部１８は、エミュレーションモードがオンの時に、エミュレーション指示信号ＥＭをアクティブにし、エミュレーションの指示をバス制御部１４に対して行うものである。この場合、エミュレーションモードのオン、オフは、マイクロコンピュータ１０にモード選択端子を設け、このモード選択端子を制御することにより切り替えてもよいし、マイクコンピュータ１０にモード選択レジスタを設け、このモード選択レジスタに記憶する情報を制御することにより切り替えてもよい。
【００２８】
メモリ制御部２０は、外部メモリ３０、エミュレーションメモリ３２、内部ＲＯＭ１６を制御するための各種の制御信号（チップイネーブル信号、メモリリード信号等）ＣＮＴ１、ＣＮＴ２、ＣＮＴ３を出力する。特に、本実施形態では、同じ外部バス２８に接続される外部メモリ３０とエミュレーションメモリ３２に対して、互いに別系統の制御信号ＣＮＴ１、ＣＮＴ２を出力している点に特徴がある。
【００２９】
バス制御部１４は、ＣＰＵバス２２、内部ＲＯＭバス２６、外部バス２８などの制御を行うためのものである。バス制御部１４は、ＣＰＵ１２からのアドレスやステータス信号ＳＴに基づいて、内部ＲＯＭ１６の内部ＲＯＭバス２６を、ＣＰＵバス２２に接続したり、外部メモリ３０、エミュレーションメモリ３２が接続される外部バス２８を、ＣＰＵバス２２に接続したりする等のバス制御を行う。
【００３０】
そして、バス制御部１４は、エミュレーション指示部１８からの信号ＥＭによりエミュレーションモード（内部ＲＯＭ１６をエミュレーションメモリ３２でエミュレーションするモード）がオンであると指示された場合には、ＣＰＵ１２の内部ＲＯＭ１６へのアクセスを、外部バス２８を介したエミュレーションメモリ３２へのアクセスに切り替える。即ち、ＣＰＵバス２２を内部ＲＯＭバス２６ではなく外部バス２８に接続し、ＣＰＵバス２２及び内部ＲＯＭバス２６を介した内部ＲＯＭ１６へのＣＰＵ１２のアクセスを、ＣＰＵバス２２及び外部バス２８を介したエミュレーションメモリ３２へのアクセスに切り替える。
【００３１】
このようにすることで、ＣＰＵ１２は、内部ＲＯＭ１６に格納されるプログラム（或いはデータ）ではなく、エミュレーションメモリ３２に格納されるプログラムに基づいて動作するようになる。従って、ユーザは、プログラムが完成するまでは開発途中のプログラムをエミュレーションメモリ３２にダウンロードしてプログラム開発を行うことができる。そして、開発が終了した後に完成したプログラムを内部ＲＯＭ１６に記憶させて、最終的な製品チップとすることが可能になる。
【００３２】
そして、本実施形態では、外部メモリ３０とエミュレーションメモリ３２とで外部バス２８を共用している。従って、図１（Ｂ）に示すようなエミュレーションメモリ７１６に専用のアドレスバス７１２、データバス７１４を設ける必要がない。このため、製品チップと評価チップの端子（ピン）数を同一にできるようになる。従って、製品チップをそのまま評価チップとして使えるようになり、製品の低コスト化を図れるようになる。
【００３３】
また本実施形態によれば、評価チップ用の別パッケージを用意したり、製品チップと評価チップの端子の整合性をとる等の手間を省くことができる。
【００３４】
また本実施形態によれば、製品チップをそのまま評価チップとして使用できるため、評価チップでは正常に動作していたプログラムが製品チップでは正常に動作しなくなるというような問題が生じなくなる。即ち、評価チップと製品チップの端子（ピン）数が異なると、端子が接続されるパッド（入力パッド、出力パッド、入出力パッド）のレイアウト配置やパッドへの信号線の引き回しが、評価チップと製品チップとで異なったものになってしまう。そして、パッドのレイアウト配置やパッドへの信号線の引き回しが異なると、これらの信号線を通る信号の遅延時間も異なったものになってしまう。従って、例えば製品チップは高いクロック周波数で動作するが評価チップはそのような高いクロック周波数で動作しないというような問題が生じる。このため、評価チップについては低いクロック周波数で動作確認をせざるを得なくなり、実動作時とは異なる環境、信号のタイミングでのプログラム開発を強いられることになる。
【００３５】
これに対して、本実施形態では、製品チップをそのまま評価チップとして使用できるため、実動作時と同じ環境、信号のタイミングでプログラム開発を行えるようになる。この結果、製品チップの信頼性を向上できると共に、開発期間の短縮化、製品コストの低減化を図れるようになる。
【００３６】
なお、ＣＰＵ１２の内部ＲＯＭ１６へのアクセスを、エミュレーションメモリ３２へのアクセスに切り替える場合、内部ＲＯＭ１６へのアクセスは、内部ＲＯＭ１６が割り当てられるメモリ空間のエリアへのアクセスであれば十分である。例えば評価時等において内部ＲＯＭ１６をマイクロコンピュータ１０に内蔵させない場合を考える。この場合には、内部ＲＯＭ１６は物理的には存在しないため、ＣＰＵ１２が内部ＲＯＭ１６へアクセスしても、そのアクセスは、内部ＲＯＭ１６が割り当てられたメモリ空間のエリアへのアクセスにとどまることになる。
【００３７】
さて、図２のように、外部メモリ３０とエミュレーションメモリ３２に外部バスを共用させると、次のような問題が生じる。
【００３８】
即ち、内部ＲＯＭ１６に格納される命令（プログラム）のフェッチ及びデコードは、１クロックサイクル内で完了する必要がある。従って、エミュレーションモード時には、エミュレーションメモリ３２の命令を１クロックサイクル内でフェッチ及びデコードしなければならなくなる。
【００３９】
ところが、外部バス２８は、図１（Ｂ）と異なり、エミュレーションメモリ３２に専用のバスではない。従って、他の外部デバイス３０と全く同様にエミュレーションメモリ３２を制御しようとすると、１クロックサイクル内での命令のフェッチ及びデコードを実現できなくなる問題が生じる。特に、クロック周波数が高くなると、この問題は更に深刻になり、エミュレーションメモリ３２を用いたプログラム開発を、実動作時のクロック周波数で行えなくなるおそれがある。
【００４０】
そこで、本実施形態では、外部メモリ３０を制御するための制御信号ＣＮＴ１とは別系統の制御信号ＣＮＴ２を用意し、このＣＮＴ２を用いてエミュレーションメモリ３２からの読み出し動作等を制御するようにしている。より具体的には、ＣＮＴ１に含まれるメモリリード信号よりも早いタイミングでＣＮＴ２に含まれるメモリリード信号がアクティブになるように信号を制御している。このようにすることで、外部バス２８を外部メモリ３０とエミュレーションメモリ３２とで共用させた場合にも、１クロックサイクル内で命令のフェッチ及びデコードを完了できるようになる。これにより、エミュレーションメモリ３２を用いたプログラム開発を、実動作時のクロック周波数で行うことが容易になる。
【００４１】
図３に、本実施形態のマイクロコンピュータの詳細な構成例を示す。
【００４２】
ここではＣＰＵ１２は、ハーバードアーキテクチャのバス構成を採用している。ＣＰＵ１２の命令用アドレスバス５０、データ用アドレスバス５２は、マルチプレクサ４０に入力される。マルチプレクサ４０は、ＣＰＵ１２からの命令／データ切り替え信号ＤＩＳ（ステータス信号の１つ）に基づいて、命令用アドレスバス５０からのアドレスと、データ用アドレスバス５２からのアドレスのいずれか選択して、外部アドレスバス５４に出力する。
【００４３】
また図３では、ＣＰＵ１２からの命令用、データ用アドレスバス５０、５２は、エミュレーションモードのオン、オフに依存せずに、外部アドレスバス５４及び内部ＲＯＭアドレスバス５５の両方に接続される。
【００４４】
またＣＰＵ１２のデータ出力バス５８は、入出力パッドセル４８を介して外部データバス５６に接続される。また、ＣＰＵ１２のデータ入力バス６０は、命令／データ切り替え部４２、データバス６２、入出力パッドセル４８を介して、外部データバス５６に接続される。
【００４５】
またＣＰＵ１２の命令フェッチ用バス６４は、内部ＲＯＭ１６に接続されると共に、命令／データ切り替え部４２、データバス６２、入出力パッドセル４８を介して、外部データバス５６に接続される。
【００４６】
メモリ制御部２０は、第１のチップイネーブル信号ＣＥ１、第１のメモリリード信号ＲＤ１を外部メモリ３０に出力する。また、ＣＥ１、ＲＤ１とは別系統の第２のチップイネーブル信号ＣＥ２、第２のメモリリードＲＤ２をエミュレーションメモリ３２に出力する。また第３のチップイネーブル信号ＣＥ３、第３のメモリリード信号ＲＤ３を内部ＲＯＭ１６に出力する。即ち、メモリ制御部２０は、これらのＣＥ１、ＲＤ１、ＣＥ２、ＲＤ２、ＣＥ３、ＲＤ３を用いて、外部メモリ３０、エミュレーションメモリ３２、内部ＲＯＭ１６からのリード動作等を制御することになる。
【００４７】
モード選択端子ＭＴ、モード選択レジスタ４４、ＯＲ回路４６は、図２のエミュレーション指示部１８に相当するものである。即ち端子ＭＴがＨレベルになる、或いは、モード選択レジスタ４４にＨレベルが記憶されると、エミュレーションモード指示信号ＥＭがＨレベルになり、エミュレーションモードのためのバス切り替え制御が行われるようになる。
【００４８】
なお、モード選択レジスタ４４には、図示しないバスを介してＣＰＵ１２がアクセス可能になっている。即ち、モード選択レジスタ４４の情報は、ソフトウェア処理により書き換え可能になっている。例えばマイクロコンピュータ１０をシステムボード（回路ボード）に実装してプログラム開発を行うユーザの中には、プログラム完成後に、端子ＭＴに与える信号レベルをＨレベルからＬレベルに切り替える（エミュレーションモードをオフにする）ことを望まないユーザもいる。端子ＭＴの信号レベルを変更すると、動作環境が変化し、信号レベルの変更前に動作していたシステムが動作しなくなることも考えられるからである。また、端子ＭＴの信号レベルの変更は、コスト増につながる可能性もあるからである。従って、このようなユーザには、ＣＰＵ１２がアクセス可能なモード選択レジスタ４４を設けることで、その要望に応えることができる。モード選択レジスタ４４を用いれば、端子ＭＴの信号レベルを変更することなく、プログラムを用いてソフトウェア処理でエミュレーションモードのオン、オフを制御できるようになるからである。
【００４９】
一方、ユーザの中には、プログラムの完成後は、プログラムの書き換えを一切行いたくないユーザもいる。即ち、モード選択レジスタ４４を用いる場合には、プログラム完成後に、エミュレーションモードがオフになるようにプログラムを書き換える必要がある。しかしながら、このようなプログラムの書き換えは、新たなバグの発生を引き起こす可能性がある。従って、このようなバグの発生を、嫌いプログラム完成後にはプログラムの書き換えを一切望まないユーザには、端子ＭＴを設けることで、その要望に応えることができる。端子ＭＴを用いれば、プログラムを書き換えることなく、端子ＭＴの信号レベルを変更するだけでハードウェア的にエミュレーションモードのオン、オフを制御できるようになるからである。
【００５０】
次に、図３のマイクロコンピュータ１０の命令のフェッチ動作について簡単に説明する。
【００５１】
命令フェッチの場合には、命令／データ切り替え信号ＤＩＳが命令を指示するようになり、マルチプレクサ４０が命令用アドレスバス５０を選択する。これにより、外部アドレスバス５４及び内部ＲＯＭアドレスバス５５には、命令用のアドレスが出力される。即ち、エミュレーションメモリ３２、内部ＲＯＭ１６には共に、命令用アドレスが入力されることになる。
【００５２】
この時、モード選択レジスタ４４にＬレベルが記憶され、且つ端子ＭＴもＬレベルに設定されていると、エミュレーションモードがオフになり、信号ＥＭがＬレベルになる。また命令フェッチであるため、ＣＰＵ１２からの信号ＲＥＡＤ（ステータス信号の１つ）もアクティブになる。これにより、メモリ制御部２０は、アドレスバス５５からのアドレスをデコードし、内部ＲＯＭエリアのアドレスであれば、内部ＲＯＭ１６への第３のチップイネーブル信号ＣＥ３、第３のメモリリード信号ＲＤ３をアクティブにする。これにより、内部ＲＯＭ１６からの命令が、命令フェッチ用バス６４を介してＣＰＵ１２に読み出されるようになる。即ちＣＰＵ１２は、内部ＲＯＭ１６に記憶されている命令をフェッチして実行することになる。
【００５３】
一方、モード選択レジスタ４４にＨレベルが記憶される、或いは端子ＭＴがＨレベルに設定されると、エミュレーションモードがオンになり、信号ＥＭがＨレベルになる。すると、メモリ制御部２０は、今度は、ＣＥ３、ＲＤ３ではなく、エミュレーションメモリ３２への第２のチップイネーブル信号ＣＥ２、第２のメモリリード信号ＲＤ２をアクティブにする。また、命令フェッチであるため、信号ＤＩＳが命令を指示するようになると共に信号ＲＥＡＤがアクティブになり、命令／データ切り替え部４２がデータ入力バス６０ではなく、命令フェッチ用バス６４を選択するようになる。以上により、エミュレーションメモリ３２からの命令が、外部データバス５６、入出力パッドセル４８、データバス６２、命令／データ切り替え部４２、命令フェッチ用バス６４を介して、ＣＰＵ１２に読み出されるようになる。即ちＣＰＵ１２は、内部ＲＯＭ１６ではなくエミュレーションメモリ３２に記憶されている命令をフェッチして実行するようになる。
【００５４】
なお、このようにエミュレーションメモリ３２の命令が読み出されている間は、内部ＲＯＭ１６が内蔵するトライステートバッファ１７の出力がトライステート状態になる。これにより、命令フェッチ用バス６４でのデータの衝突が防止される。
【００５５】
以上のように図３の実施形態では、ＣＰＵ１２の命令フェッチ時にエミュレーションモードがオフ（信号ＥＭがＬレベル）の場合には、通常通り、内部ＲＯＭ１６からの命令が命令用フェッチバス６４を介してＣＰＵ１２にフェッチされて実行される。一方、ＣＰＵ１２の命令フェッチ時にエミュレーションモードがオン（信号ＥＭがＨレベル）の場合には、内部ＲＯＭ１６ではなくエミュレーションメモリ３２からの命令が外部データバス５６を介してＣＰＵ１２にフェッチされて実行されるようになる。
【００５６】
従って、プログラムの完成前においてはユーザは、端子ＭＴ又はモード選択レジスタ４４を用いてエミュレーションモードをオンにし、エミュレーションメモリ３２に開発途中のプログラムを随時ダウンロードしながらプログラム開発を行う。そして、プログラムの開発が完了すると、ユーザは、完成後のプログラムを内部ＲＯＭ１６に記憶させる（マスクパターンを作成する）。そして、端子ＭＴ又はモード選択レジスタ４４を用いてエミュレーションモードをオフにする。これにより、内部ＲＯＭ１６からの命令に基づいてＣＰＵ１２が動作する製品チップが完成する。
【００５７】
そして、本実施形態によれば、エミュレーションメモリ３２に専用のアドレスバス、データバスは設けられず、外部アドレスバス、外部データバス５４、５６が外部メモリ３０とエミュレーションメモリ３２で共用される。従って、エミュレーションメモリ３２からの命令（プログラム）でＣＰＵ１２が動作する評価チップと、内部ＲＯＭ１６からの命令でＣＰＵ１２に動作する製品チップとが、端子数、パッドのレイアウト配置、信号線の引き回し等が異ならない同一チップとなる。このため、製品チップそのものを用いてプログラムを開発できるようになる。この結果、評価時と製品時（実動作時）とで動作環境、信号のタイミングが異なることに起因して、評価時には正常に動作していたが製品時には動作しなくなる等の問題を効果的に解決できるようになる。
【００５８】
さて、以上のように外部アドレスバス、外部データバス５４、５６を外部メモリ３０とエミュレーションメモリ３２で共用する手法を採用することで、製品チップと評価チップを同一チップにできる利点を得ることができる。しかしながら、その反面、この手法によると、エミュレーションメモリ３２からの命令の読み出しが間に合わなくなるという問題が生じる。
【００５９】
即ち、外部アドレスバス、外部データバス５４、５６は、エミュレーションメモリ３２に専用のアドレスバス、データバス（図１（Ｂ）の７１２、７１４参照）ではなく、元々、外部メモリ３０用に設計されたアドレスバス、データバスである。そして、外部メモリ３０からの情報の読み出しについては、通常、時間的な余裕が十分にある。これに対して、ＣＰＵ１２による命令のフェッチ及びデコードは１クロックサイクル内で完了する必要があるため、エミュレーションメモリ３２からの命令の読み出しについては時間的な余裕がない。
【００６０】
そこで、本実施形態では、外部メモリ３０用のＣＥ１、ＲＤ１とは別系統のチップイネーブル信号ＣＥ２、メモリリード信号ＲＤ２をメモリ制御部２０に出力させている。これにより、外部アドレスバス、外部データバス５４、５６を外部メモリ３０とエミュレーションメモリ３２で共用しながらも、エミュレーションメモリ３２からの命令のフェッチ及びデコードを、１クロックサイクル内で完了できるようになる。以上のことについて図４の信号波形図を用いて詳細に説明する。
【００６１】
図４では、ＣＰＵ１２が次のような命令を実行する。
・命令（１）  ｌｄ    ％ｒ２，０ｘ００
・命令（２）  ｌｄ    ％ｒ１，［％ｒ９］
・命令（３）  ａｄｄ  ％ｒ４，％ｒ１
・命令（４）  ｓｕｂ  ％ｒ５，％ｒ１
上記において、命令（１）は、ＣＰＵ１２の汎用レジスタｒ２にデータ０ｘ００をロードするという命令である。命令（２）は、汎用レジスタｒ９に格納されているアドレスである外部メモリ３０のアドレスからのデータを、汎用レジスタｒ１にロードする命令である。即ち外部メモリ３０からのデータを汎用レジスタｒ１にロードする命令である。命令（３）は、汎用レジスタｒ４のデータとｒ１のデータを加算する命令である。命令（４）は、汎用レジスタｒ５のデータからｒ１のデータを減算する命令である。
【００６２】
これらの命令（１）、（２）、（３）、（４）は、図４のＢ１に示すようにパイプライン処理により実行される。なおＢ１において、Ｆは命令のフェッチを、Ｄは命令のデコードを、Ｒはレジスタのリードを、Ａはアドレスの計算を、Ｅは命令の実行を、Ｗはレジスタへのライトを表す。
【００６３】
図４のＢ２に示すＢＣＬＫは、バスサイクルを決めるバスクロックであり、ここでは、ＢＣＬＫはＣＰＵ１２の動作クロックにもなっている。
【００６４】
図４ではＢ３に示すように、まずエミュレーションメモリ３２からの命令の読み出しが行われ、次に、外部メモリ３０からのデータの読み出しが行われ、次に、エミュレーションメモリ３２からの命令の読み出しが行われる。
【００６５】
即ち、図４のＢ４、Ｂ５、Ｂ６に示すように、命令（１）、（２）、（３）をエミュレーションメモリ３２から読み出すためのアドレスが外部アドレスバス５４に出力される。これらのアドレスは、ＣＰＵ１２から命令用アドレスバス５０、マルチプレクサ４０を介して外部アドレスバス５４に出力される。これにより、Ｂ７、Ｂ８、Ｂ９に示すように、各アドレスに対応する命令（命令データ）がエミュレーションメモリ３２から読み出され、外部データバス５６に出力される。そして、これらの命令は、外部データバス５６から入出力パッドセル４８、データバス６２、命令／データ切り替え部４２、命令フェッチ用バス６４を介して、ＣＰＵ１２にフェッチされデコードされる。
【００６６】
また、図４のＢ１０では、外部メモリ３０への読み出しアドレスが、ＣＰＵ１２からデータ用アドレスバス５２、マルチプレクサ４０を介して外部アドレスバス５４に出力される。このアドレスは、上記命令（２）により指定されるアドレス［％ｒ９］である。これにより、Ｂ１１に示すように、外部メモリ３０からのデータが外部データバス５６に出力され、入出力パッドセル４８、データバス６２、命令／データ切り替え部４２、データ入力バス６０を介してＣＰＵ１２に読み出される。
【００６７】
また、図４のＢ１２では、命令（４）をエミュレーションメモリ３２から読み出すためのアドレスが外部アドレスバス５４に出力される。これによりＢ１３に示すように、このアドレスに対応する命令がエミュレーションメモリ３２から外部データバス５６に出力される。
【００６８】
外部メモリ３０からデータを読み出す場合には、図４のＢ１４、Ｂ１５に示すように第１のチップイネーブル信号ＣＥ１、第１のメモリリード信号ＲＤ１をアクティブにする（Ｌレベルにする）。一方、エミュレーションメモリ３２から命令を読み出す場合には、Ｂ１６〜Ｂ２１に示すように、第２のチップイネーブル信号ＣＥ２、第２のメモリリード信号ＲＤ２をアクティブにする。
【００６９】
この時、Ｂ１５に示すように、ＲＤ１はＢＣＬＫの立ち下がりに同期してアクティブになる。一方、Ｂ１８〜Ｂ２１に示すように、ＲＤ２は、ＢＣＬＫの立ち上がりに同期してアクティブになる。より具体的には、ＢＣＬＫの立ち上がりから所与の遅延時間（遅延素子における遅延時間）ＴＤ経過後にアクティブになる。即ち、ＲＤ２は、ＲＤ１よりも早いタイミングでアクティブになるように制御される。
【００７０】
このようにＲＤ２を早いタイミングアクティブにすることで、ＣＰＵ１２による命令のフェッチ（Ｆ）及びデコード（Ｄ）を、１クロックサイクル内で完了できるようになる。
【００７１】
即ち、他の外部メモリ３０に使用するＲＤ１を用いてエミュレーションメモリ３２からの命令の読み出しを行うと、ＲＤ１はＢＣＬＫの立ち下がりに同期してアクティブになるため、ＣＰＵ１２による命令のフェッチ及びデコードが１クロックサイクル内で完了できなくなる問題が生じる。特に、ＢＣＬＫのクロック周波数が高くなった場合には、この問題が生じる可能性は更に高まる。
【００７２】
この場合、例えば、評価時、即ちエミュレーションメモリ３２からの命令の読み出し時においては、ＢＣＬＫのクロック周波数を低くするようにすれば、上記問題を解消できる。しかしながら、これでは、実動作時のクロック周波数とプログラム開発時のクロック周波数が異なることになってしまい、プログラム開発時には正常に動作していたプログラムが実動作時には正常に動作しなくなるという問題を招く。従って、製品チップと評価チップを同一チップにできるという本実施形態の利点が、実質的に失われてしまう。
【００７３】
これに対して、図４では、ＲＤ１と別系統のＲＤ２を用意し、Ｂ１８〜Ｂ２１に示すようにＲＤ２を早いアクティブでアクティブにしているため、エミュレーションメモリ３２からの命令のフェッチ及びデコードを１クロックサイクル内で適正に完了できるようになる。従って、実動作時と同一のクロック周波数でプログラム開発をできるようになり、プログラム開発が終了し完成後のプログラムを内部ＲＯＭ１６に記憶させた場合にも、問題なくプログラムが正常に動作するようになる。従って、外部アドレスバス、外部データバス５４、５６の共用により製品チップと評価チップを同一チップにできるという本実施形態の利点を、より生かせるようになる。
【００７４】
なお、図４のＢ２２では、外部メモリ３０からのデータの読み出しにウェイトが挿入されているため、ＣＰＵ１２のパイプライン処理がストールしている。即ち、外部アドレスバス５４、外部データバス５６には、読み出しや書き込みスピードが異なる種々の外部メモリ３０が接続される可能性がある。従って、信号ＣＥ１、ＲＤ１がアクティブになる期間に対してはウェイトの挿入が可能になっており、読み出しや書き込みスピードが異なる種々の外部メモリ３０に対応できるようになっている。
【００７５】
一方、信号ＣＥ２、ＲＤ２が出力されるエミュレーションメモリ３２については、上述したように１クロックサイクルで命令を読み出す必要がある。従って、ＣＥ２、ＲＤ２がアクティブになる期間に対しては、ＣＥ１、ＲＤ１とは異なり、ウェイトの挿入は行われないことになる。
【００７６】
さて、図３では、１ビットのモード選択端子ＭＴによりエミュレーションモードのオン、オフを選択できるようになっているが、この端子ＭＴを例えば複数ビットにし、他のモードを選択できるようにしてもよい。
【００７７】
例えば図５では端子ＭＴを２ビットにしている。そして、端子ＭＴが（００）に設定された場合には、エミュレーションメモリ３２からブートするモードが選択される。即ち、リセット後にＣＰＵ１２が最初にアクセスするアクセス先がエミュレーションメモリ３２になるモード（エミュレーションモードがオンになるモード）が選択される。また端子ＭＴが（０１）に設定された場合には、外部メモリ３０からエミュレーションメモリ３２に情報を転送した後に、エミュレーションメモリ３２からブートするモードが選択される。また端子ＭＴが（１０）に設定された場合には、内部ＲＯＭ１６からブートするモードが選択される。即ち、リセット後のＣＰＵ１２の最初のアクセス先が内部ＲＯＭ１６になるモードが選択される。また端子ＭＴが（１１）に設定された場合には、外部メモリ３０からブートするモードが選択される。即ち、リセット後のＣＰＵ１２の最初のアクセス先が外部メモリ３０になるモードが選択される。
【００７８】
このように、端子ＭＴを用いて各種モードを選択できるようにすることで、プログラム開発の更なる効率化を図れるようになる。
【００７９】
例えば、プログラムの開発途中においては端子ＭＴを（００）に設定する。このようにすることで、リセット後は常にエミュレーションメモリ３２からブートするようになる。従って、エミュレーションメモリ３２に記憶されたプログラム（命令）によりＣＰＵ１２が動作するようになり、エミュレーションメモリ３２に随時プログラムをダウンロードしながらプログラム開発を行えるようになる。
【００８０】
また、プログラムの開発が終了し完成したプログラムを内部ＲＯＭ１６に記憶させた後は、端子ＭＴを（１０）に設定する。このようにすることで、リセット後は常に内部ＲＯＭ１６からブートするようになる。従って、マイクロコンピュータ１０を製品チップとして使用できるようになる。即ち、端子ＭＴの設定を（００）から（１０）に変更するだけで、評価チップを、製品チップとして使用できるようになる。
【００８１】
また、リセット後に外部メモリ３０からブートしたいユーザは、端子ＭＴを（１１）に設定すればよい。即ち、ユーザの中には、ユーザのシステムボード上の外部メモリ３０に、リセット後に最初に起動させるプログラムを格納することを望むユーザもいる。このようなユーザには、内部ＲＯＭ１６は不要であり、電子機器の低コスト化のために内部ＲＯＭ１６を内蔵しないタイプのマイクロコンピュータを提供することが望ましい。このような場合にも本実施形態によれば、端子ＭＴを（１１）に設定するだけで、このようなユーザの要望に容易に対応できるようになる。
【００８２】
次に、端子ＭＴを（０１）にした場合のモード（以下、ＯＴＰ（ＯｎｅＴｉｍｅＰｒｏｍ）モードと呼ぶ）について図６を用いて詳細に説明する。
【００８３】
ＯＴＰモードにおいては、リセット後に、図６のＣ１に示すように、フラッシュメモリ３１（外部メモリの１つ）からのプログラム（情報）がマイクロコンピュータ１０が内蔵するＤＭＡコントローラ８０を介してエミュレーションメモリ３２に転送される。即ち、エミュレーションメモリ３２は、処理の高速化のために、通常、高速ＳＲＡＭにより構成される。従って、電源が切れてしまうと、エミュレーションメモリ３２に記憶されていたプログラムは失われてしまう。このため、電源を切る毎に、エミュレーションメモリ３２にプログラムをダウンロードする手間が必要になり、プログラム開発の作業が煩雑化する。
【００８４】
そこで、このような場合に本実施形態では、端子ＭＴを（０１）に設定する。このようにすれば、フラッシュメモリ（ＥＥＰＲＯＭ）３１に記憶されていたプログラムが、リセット後に自動的にエミュレーションメモリ３２に転送されるようになる。そして、フラッシュメモリ３１は不揮発性のメモリであるため、電源が切れた場合にもフラッシュメモリ３１に記憶されるプログラムは消失しない。従って、電源が切れた場合にも、エミュレーションメモリ３２にプログラムを再度ダウンロードする必要がなくなり、プログラム開発の効率化を図れるようになる。
【００８５】
以上のように、複数ビットの端子ＭＴを設け、この端子ＭＴにより上記した種々のモードを選択できるようにすることで、幅広い層のユーザの要望に応えることができるようになると共にプログラム開発の効率化や自由度を増すことができるようになる。
【００８６】
２．電子機器
次に、本実施形態のマイクロコンピュータを含む電子機器に関して説明する。
【００８７】
例えば図７（Ａ）に、電子機器の１つであるカーナビゲーションシステムの内部ブロック図を示し、図８（Ａ）に、その外観図を示す。カーナビゲーションシステムの操作はリモコン５１０を用いて行われ、ＧＰＳやジャイロからの情報に基づいて位置検出部５２０が車の位置を検出する。地図などの情報はＣＤＲＯＭ５３０（情報記憶媒体）に格納されている。メモリ５４０は画像処理や音声処理の際の作業領域になるメモリであり、生成された画像は画像出力部５５０を用いて運転者に表示される。また、生成されたカーナビゲーション用のガイド音声は、音出力部５３５を用いて運転者に出力される。マイクロコンピュータ５００は、リモコン５１０、位置検出部５２０、ＣＤＲＯＭ５３０などの情報入力源から情報を入力し、種々の処理を行い、処理後の情報を、画像出力部５５０、音出力部５３５などの出力装置を用いて出力する。
【００８８】
図７（Ｂ）に、電子機器の１つであるゲーム装置の内部ブロック図を示し、図８（Ｂ）に、その外観図を示す。このゲーム装置では、ゲームコントローラ５６０からのプレーヤの操作情報、ＣＤＲＯＭ５７０からのゲームプログラム、ＩＣカード５８０からのプレーヤ情報等に基づいて、メモリ５９０を作業領域としてゲーム画像やゲーム音を生成し、画像出力部６１０、音出力部６００を用いて出力する。
【００８９】
図７（Ｃ）に電子機器の１つであるプリンタの内部ブロック図を示し、図８（Ｃ）にその外観図を示す。このプリンタでは、操作パネル６２０からの操作情報、コードメモリ６３０及びフォントメモリ６４０から文字情報に基づいて、ビットマップメモリ６５０を作業領域として、印刷画像を生成し、プリント出力部６６０を用いて出力する。またプリンタの状態やモードを表示パネル６７０を用いてユーザに伝える。
【００９０】
本実施形態のマイクロコンピュータによれば、電子機器（システムボード）に組み込むマイクロコンピュータのチップとして、評価時と製品時（実動作時）とで同一のチップを使用できるようになる。従って、評価時と製品時とで、マイクロコンピュータのチップのソケットやマイクロコンピュータへの配線の引き回しを同一にできるようになり、電子機器の低コスト化を図れるようになる。また、評価時には正常に動作していたのに製品時には正常に動作しなくなるというような事態も効果的に防止できる。また、マイクロコンピュータを電子機器に組み込んだ状態で行われるプログラム開発の効率化を図ることができ、開発期間の短縮化や電子機器の低コスト化を図れる。
【００９１】
なおマイクロコンピュータを適用できる電子機器としては、上記以外にも例えば、携帯電話（セルラーフォン）、ＰＨＳ、ページャ、携帯型情報端末、デジタルカメラ、ハードディスク装置、光ディスク（ＣＤ、ＤＶＤ）装置、光磁気ディスク（ＭＯ）装置、オーディオ機器、電子手帳、電子卓上計算機、ＰＯＳ端末、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、パーソナルコンピュータ、テレビ、ビューファインダ型、又はモニタ直視型のビデオテープレコーダなど種々のものを考えることができる。
【００９２】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【００９３】
例えば、エミュレーションモードがオンの時に、プロセッサ（ＣＰＵ）のバスを外部バスに接続する手法も、図３で説明したものに限定されず、種々の変形実施が可能である。
【００９４】
また、エミュレーションモードのオン、オフの設定は、モード選択レジスタやモード選択端子により行うことが特に好ましいが、他の手法を用いることも可能である。
【００９５】
また、外部メモリを制御するための第１の制御信号や、エミュレーションメモリを制御するための第２の制御信号も、図３、図４で説明したような信号が特に望ましいが、これに限定されるものではない。
【００９６】
また、本発明の電子機器の構成も、図７（Ａ）〜図８（Ｃ）で説明したものに限定されるものでなく、種々の変形実施が可能である。
【図面の簡単な説明】
【図１】図１（Ａ）、（Ｂ）は、製品チップと評価チップを別チップにする従来の手法について説明するための図である。
【図２】本実施形態のマイクロコンピュータの構成例を示すブロック図である。
【図３】本実施形態のマイクロコンピュータの更に詳細な構成例を示すブロック図である。
【図４】本実施形態のマイクロコンピュータの動作を説明するための信号波形図である。
【図５】モード選択端子ＭＴにより設定可能な各種のモードについて説明するための図である。
【図６】ＯＰＴモードについて説明するための図である。
【図７】図７（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図８】図８（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    マイクロコンピュータ
１２    ＣＰＵ
１４    バス制御部
１６    内部ＲＯＭ（内部メモリ）
１７    トライステートバッファ
１８    エミュレーション指示部
２０    メモリ制御部
２２    ＣＰＵバス
２６    内部ＲＯＭバス
２８    外部バス
３０    外部メモリ
３１    フラッシュメモリ
３２    エミュレーションメモリ
４０    マルチプレクサ
４２    命令／データ切り替え部
４４    モード選択レジスタ
４６    ＯＲ回路
４８    入出力パッドセル
５０    命令用アドレスバス
５２    データ用アドレスバス
５４    外部アドレスバス
５５    内部ＲＯＭアドレスバス
５６    外部データバス
５８    データ出力バス
６０    データバス
６２    データ入力バス
６４    命令フェッチ用バス
８０    ＤＭＡコントローラ
【図１】
0003943277.tif 000002
【図２】
0003943277.tif 000003
【図３】
0003943277.tif 000004
【図４】
0003943277.tif 000005
【図５】
0003943277.tif 000006
【図６】
0003943277.tif 000007
【図７】
0003943277.tif 000008
【図８】
0003943277.tif 000009