(57)【特許請求の範囲】
【請求項１】
外部から値を設定可能な第１のレジスタと、
プログラムカウンタの値をアドレス値とした読み出しであり、かつ前記アドレス値が前記第１のレジスタの値と一致したときにイベント検出信号を出力する第１の検出手段と、
外部から値を設定可能な第２のレジスタと、
前記第２のレジスタの値と同じアドレスからのフェッチではない読み出しを検出する第２の検出手段とを備え、
前記第１のレジスタの値は、前記第２の検出手段による検出がなされるとその検出に対する読み出しデータの書き込み先のアドレス値に書き換えられるようにしたことを特徴とするイベント検出回路。
【請求項２】
第１のレジスタの値と同じアドレスに対する書き込みを検出する第３の検出手段を設け、
前記第１のレジスタの値は、前記第３の検出手段による検出がなされると第２のレジスタの値に書き換えられるようにしたことを特徴とする請求項１記載のイベント検出回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサのプログラムのデバッグにおいて必要とされるイベント検出回路に関する。
【０００２】
【従来の技術】
図６は従来のイベント検出回路の例を示すブロック図であり、この例では２種類の検出条件を設定可能なものである。図６において、４１はＲＯＭ、４２はＲＡＭ、１００はインサーキットエミュレータ、１０１はプロセッサ、１２１，１３１は比較器、１２２，１３２はレジスタ、１４１はＯＲ（論理和）ゲートである。
【０００３】
この従来のイベント検出回路は、プロセッサ１０１におけるプログラムの走行を一時的に停止させたりするために、アドレス信号ＡＤＤＲＥＳＳの状態を監視する比較器１２１，１３１を備える。加えて、比較器１２１，１３１にて比較される検出条件（検出したいアドレス値）を記憶するレジスタ１２２，１３２を備える。
【０００４】
インサーキットエミュレータ（ＩＣＥ）１００からレジスタ１２２および１３２に検出したいアドレス値（検出条件）が書き込まれる。プロセッサ１０１の読み出し動作のときに、アドレス信号ＡＤＤＲＥＳＳがレジスタ１２２の値と一致すると比較器１２１は一致したことを示すイベント検出信号を出力し、アドレス信号ＡＤＤＲＥＳＳがレジスタ１３２の値と一致すると比較器１３１がイベント検出信号を出力する。インサーキットエミュレータ１００に対しては比較器１２１，１３１のいずれかが検出したことを知らせればよいので、ＯＲゲート１４１を通してインサーキットエミュレータ１００に与える。これを受けてインサーキットエミュレータ１００はプロセッサ１０１に対して割り込みをかけてプログラムの走行を一時的に停止させる。
【０００５】
ここで、プロセッサ１０１に接続されるメモリにはＲＯＭ４１のように低速なものとＲＡＭ４２のように高速なものとがあるが、ＲＯＭ４１上に記憶されているプログラムをそのままＲＯＭ４１上で走行させるとプログラムの実行速度がＲＯＭ４１の速度により制限される。そのため、実行前にＲＯＭ４１からＲＡＭ４２にプログラムを転送し、ＲＡＭ４２上でプログラムを走行させる場合がある。このような場合にはＲＯＭ４１上のアドレス値を上記イベント検出回路に設定すると、転送後にＲＡＭ４２上でプログラムを走行させるとイベント検出回路はイベントを検出しない。そのためイベント検出回路にはＲＡＭ４２上のアドレス値を設定してやる必要がある。
【０００６】
【発明が解決しようとする課題】
従来のイベント検出回路において、インサーキットエミュレータなどを接続してプログラムをデバッグする際に、ＲＯＭからＲＡＭにプログラムを転送した後でＲＡＭ上でそのプログラムを走行させるような使い方の場合には、ＲＡＭ上でのアドレス値をイベント検出回路に設定してやる必要がある。ところがＲＯＭ上でもＲＡＭ上でも走行させるような場合にはイベント検出回路を２組用いて、それぞれＲＯＭ上でのアドレス値，ＲＡＭ上でのアドレス値を設定する必要がある。
【０００７】
また、図７のように複数種類のプログラムをＲＯＭからＲＡＭに転送するような場合、別のプログラムを転送した後ではそれまでのイベント検出回路に対する設定値は意味を持たない。加えてそのままの状態では関係のないところでイベント検出してしまうので、別のプログラムを転送した後、直ちにレジスタに書き込まれているアドレス値を変えるか、あるいはイベント検出回路の動作を停止させなければならない。これを行うには転送を検出するためのイベント検出回路が別個に必要になるし、また、この検出回路で転送を検出させてプログラムの走行を一時的に停止させた後、インサーキットエミュレータの操作者は先の転送後のイベントを検出する検出回路の動作を停止させるか、あるいはアドレス値を変えるなど、操作が煩雑になる。
【０００８】
このように操作が煩雑になったり、イベント検出回路を余計に使ってしまうために、従来はＲＯＭからＲＡＭへの転送を行わないことにしてすべてのプログラムをＲＯＭ上で走行させ、デバッグが終了してからＲＯＭからＲＡＭへの転送を行わせてＲＡＭ上で走行するようにプログラムを書き換えるということが行われてきたが、ＲＡＭ上で走行させる場合にはプログラムの実行速度がＲＯＭ上の場合とは異なるので、最終的に問題が残る場合があった。
【０００９】
本発明の目的は、プログラムが異なる領域間で転送されて走行する環境に対して、イベントの検出が可能なイベント検出回路を提供することにある。また、インサーキットエミュレータがプログラムの転送が発生したかどうか監視することを不要にすることを目的としたものである。
【００１０】
【課題を解決するための手段】
請求項１記載のイベント検出回路は、外部から値を設定可能な第１のレジスタと、プログラムカウンタの値をアドレス値とした読み出しであり、かつアドレス値が第１のレジスタの値と一致したときにイベント検出信号を出力する第１の検出手段と、外部から値を設定可能な第２のレジスタと、第２のレジスタの値と同じアドレスからのフェッチではない読み出しを検出する第２の検出手段とを備え、第１のレジスタの値は、第２の検出手段による検出がなされるとその検出に対する読み出しデータの書き込み先のアドレス値に書き換えられるようにしたことを特徴とする。
【００１１】
この構成によれば、プログラムのメモリ間の転送（例えばＲＯＭからＲＡＭへの転送）が行われる前に検出条件（検出したいアドレス値）を設定する場合には、外部（インサーキットエミュレータ）から第１のレジスタと第２のレジスタに検出条件を書き込んだ後、プログラムの転送を行う。プログラムの転送においては、プログラムは単なるデータとして扱われるので、フェッチ信号は「０」であり、第１の検出手段は応答せず、第２の検出手段が応答する。これにより第１のレジスタの値は書き込み先（転送先）のアドレス値に書き換えられる。この状態で転送先の領域で転送したプログラムが走行すると、フェッチ信号が「０」で、かつ第１のレジスタの値と一致したアドレスに対する読み出しが発生する。第１の検出手段はこれに応答してイベント検出信号を出力する。このように、第１の検出手段の比較値を記憶している第１のレジスタの値が転送先のものに書き換わることにより、プログラムの転送が行われても有効にイベントを検出することができる。
【００１２】
また、プログラムを転送した後で検出条件を設定したい場合には、検出条件である転送元のアドレス値を第２のレジスタに書き込み、転送先のアドレス値を第１のレジスタに書き込む。この状態でプログラムを走行させれば、アドレス値が当然第１のレジスタの値になったときにイベントを検出することができる。なお、転送されるプログラムの転送元および転送先アドレスは、外部（インサーキットエミュレータ）で把握されている。
【００１３】
請求項２記載のイベント検出回路は、請求項１記載のイベント検出回路において、第１のレジスタの値と同じアドレスに対する書き込みを検出する第３の検出手段を設け、第１のレジスタの値は、第３の検出手段による検出がなされると第２のレジスタの値に書き換えられるようにしたことを特徴とする。
【００１４】
この構成によれば、プログラムＡを転送する前に、請求項１と同様に第１および第２のレジスタに転送元のアドレス値を書き込んでおくと、プログラムＡを転送したときに第２の検出手段がプログラムの転送が発生したことを検出する。その結果、プログラムＡを転送した後は、請求項１と同様に第１のレジスタは転送先のアドレス値を、第２のレジスタは転送元のアドレス値を記憶している。この状態でプログラムＢをプログラムＡと同じ領域に転送すると、第３の検出手段が第１のレジスタの値と転送先アドレスとが一致したことを検出する。それにより、第１のレジスタは第２のレジスタの値に書き換えられる。つまり、第１のレジスタと第２のレジスタの値は転送元のアドレス値となり、プログラムＡが転送される前の状態に戻る。したがって、プログラムＡと同じ領域にプログラムＢが転送された際のイベントの誤検出を避けることができる。
【００１５】
【発明の実施の形態】
〔第１の実施の形態〕
図１は本発明の第１の実施の形態のイベント検出回路の例を示すブロック図であり、この例では２種類の検出条件（検出したいアドレス値）を設定可能なものとしている。図１において、１はプロセッサ、２はプロセッサ１内のプログラムカウンタ、３はプロセッサ１内のアドレスポインタ、４はプログラムカウンタ２の値とアドレスポインタ３と値とのうち一方を選択して出力するプロセッサ１内のマルチプレクサ、１１はＯＲ（論理和）ゲート、２０，３０は第１，第２のイベント検出回路、２１，３１は第１の比較器（第１の検出手段）、２２，３２は第２の比較器（第２の検出手段）、２５，３５は第１のレジスタ、２６，３６は第２のレジスタ、４１はＲＯＭ、４２はＲＡＭ、１００はインサーキットエミュレータである。
【００１６】
プロセッサ１は、アドレス信号ＡＤＤＲＥＳＳ、読み出し信号Ｒ、書き込み信号Ｗ、プログラムカウンタ２の値をアドレスとした読み出し（フェッチ）を行なうことを示すフェッチ信号ＦＥＴＣＨを出力するとともに、データＤＡＴＡの入出力を行う。なお、プロセッサ１の出力するアドレス信号ＡＤＤＲＥＳＳは、プログラムカウンタ２かアドレスポインタ３のいずれかがマルチプレクサ４で選択されたものである。プロセッサ１は、プログラムの取り込みを行うときはプログラムカウンタ２を選択してその出力をアドレス信号ＡＤＤＲＥＳＳとして出力するとともに、プログラムの取り込みを行っていることを示すためにフェッチ信号ＦＥＴＣＨを論理値「１」（すなわちハイレベル）にする。また、データの取り込みやデータの書き込みを行うときには、アドレスポインタ３の出力をアドレス信号ＡＤＤＲＥＳＳとして出力する。このときにはフェッチ信号ＦＥＴＣＨは論理値「０」（すなわちローレベル）になる。
【００１７】
本実施の形態のイベント検出回路は、第１のイベント検出回路２０，第２のイベント検出回路３０およびＯＲゲート１１からなる。
【００１８】
第１のイベント検出回路２０は、第１，第２の比較器２１，２２および第１，第２のレジスタ２５，２６を備えている。第１の比較器２１は、イベント検出用の比較器であり、フェッチ状態（フェッチ信号ＦＥＴＣＨが論理値「１」で、かつ読み出し信号Ｒが論理値「１」）であって、かつ第１のレジスタ２５の値とアドレス信号ＡＤＤＲＥＳＳとが一致したときに、イベント検出信号Ｓ１  を出力する。
【００１９】
第１のレジスタ２５は第１の比較器２１で比較される値を記憶し、第２のレジスタ２６は第２の比較器２２で比較される値を記憶するもので、操作者がインサーキットエミュレータ１００に対して第２のレジスタ２６の値を設定すると、インサーキットエミュレータ１００から第２のレジスタ２６とともに第１のレジスタ２５にも同じ値が書き込まれる。また、操作者がインサーキットエミュレータ１００に対して第１のレジスタ２５の値を設定すると、インサーキットエミュレータ１００から第１のレジスタ２５にのみ値が書き込まれ、第２のレジスタ２６には書き込まれない。
【００２０】
第２の比較器２２は、第２のレジスタ２６の値と同じアドレスからのフェッチではない読み出し動作を検出するもので、フェッチ信号ＦＥＴＣＨが論理値「０」で、かつ読み出し信号Ｒが論理値「１」のときに、第２のレジスタ２６の値とアドレス信号ＡＤＤＲＥＳＳとが一致すると、ハイレベルの検出信号を第１のレジスタ２５へ出力するものである。この検出信号を第１のレジスタ２５に入力すると次の書き込み動作のときに、第１のレジスタ２５の値はプロセッサ１が出力しているアドレス信号ＡＤＤＲＥＳＳの値に書き換えられる。
【００２１】
また、第２のイベント検出回路３０は、第１のイベント検出回路２０と同様の構成であり、詳細な説明は省略する。第１のイベント検出回路２０のイベント検出信号Ｓ１  と第２のイベント検出回路３０のイベント検出信号Ｓ２  とはＯＲゲート１１を介してインサーキットエミュレータ１００へ出力される。これを受けてインサーキットエミュレータ１００はプロセッサ１に対して割り込みをかけてプログラムの走行を一時的に停止させる。
【００２２】
このように構成される本実施の形態のイベント検出回路において、例えばＲＯＭ４１のプログラムをＲＡＭ４２に転送してＲＡＭ４２上でプログラムを走行させる場合の動作について、さらに図２を参照しながら説明する。第１のイベント検出回路２０と第２のイベント検出回路３０とは検出条件が異なるだけで同様の動作であるため、ここでは第１のイベント検出回路２０の動作についてのみ説明する。
【００２３】
図２は本実施の形態のイベント検出回路の第１のイベント検出回路２０の動作を説明するための図であり、アドレス信号ＡＤＤＲＥＳＳ，読み出し信号Ｒ，書き込み信号Ｗ，フェッチ信号ＦＥＴＣＨ，レジスタ２６・２５の値，比較器２１・２２の出力値を示し、Ｎｏ．１，Ｎｏ．２，・・・・・・の順に動作が行われる。図２において、アドレス信号ＡＤＤＲＥＳＳの値，レジスタ２６の値，レジスタ２５の値は１６進数表示（ｈ）である。読み出し信号Ｒ，書き込み信号Ｗの「０」「１」は論理値を示し、読み出し信号Ｒが論理値「１」のハイレベルのとき読み出し動作を行い、論理値「０」のローレベルのときは読み出し動作を行わない。また、書き込み信号Ｗが論理値「１」のハイレベルのとき書き込み動作を行い、論理値「０」のローレベルのときは書き込み動作を行わない。フェッチ信号ＦＥＴＣＨの「０」は論理値「０」を示し、プログラムが転送元（ＲＯＭ４１）から転送先（ＲＡＭ４２）に転送されるときにはプログラムは単なるデータとして扱われ、図２中ではプログラムカウンタ２の値ではなくアドレスポインタ３の値をアドレスとするため、フェッチ信号ＦＥＴＣＨは全て論理値「０」となっている。比較器２１，２２の出力値の「１」は比較結果が一致したときのハイレベルの信号で、「０」は比較結果が不一致のときのローレベルの信号である。
【００２４】
ここでは、ＲＯＭ４１の領域上に記憶されているプログラムが８０００００ｈ番地から８０００ＦＦｈ番地にあり、これをＲＡＭ４２の領域００１０００ｈ番地から００１０ＦＦｈ番地に転送する場合で、転送前の８０００１０ｈ番地のフェッチでイベント検出信号を出すようにしたいときについて説明する。
【００２５】
転送前にイベント検出条件を設定する場合は、まず、レジスタ２６に対して検出条件である８０００１０ｈを書き込む。その結果、レジスタ２５の値も８０００１０ｈになる（Ｎｏ．１）。その後（Ｎｏ．２以降）、転送を行なわせると、Ｎｏ．３４の読み出し動作のとき、アドレス信号ＡＤＤＲＥＳＳとレジスタ２６との値とが一致するため比較器２２が論理値「１」の検出信号を出力する。これを受けてレジスタ２５は、次のＮｏ．３５の書き込み動作のときにアドレス信号ＡＤＤＲＥＳＳの値００１０１０ｈに書き換わる。
【００２６】
従って、転送が終了してＲＡＭ４２上でプログラムが走行すると、００１０１０ｈ番地のフェッチのときに比較器２１が応答（一致を検出）してイベント検出信号Ｓ１  を出力する。イベント検出信号Ｓ１  はＯＲゲート１１を介してインサーキットエミュレータ１００へ出力される。これを受けてインサーキットエミュレータ１００はプロセッサ１に対して割り込みをかけてプログラムの走行を一時的に停止させる。
【００２７】
なお、転送が終わった後でイベント検出条件を設定したい場合には、最初に転送元のアドレスである８０００１０ｈをレジスタ２６に対して書き込む。その後でレジスタ２５に対して転送先のアドレス００１０１０ｈを書き込む。その結果、図２のＮｏ．３５以降の状態と同じになるので、転送後のプログラムを走行させれば００１０１０ｈ番地のフェッチを比較器２１が検出するようになる。
【００２８】
以上のように本実施の形態によれば、プログラムの転送前にインサーキットエミュレータ１００により検出条件をレジスタ２５，２６（３５，３６）に一度設定しておけば、転送されるときに自動的に転送先のアドレス値にレジスタ２５（３５）の値が書き換えられるので、インサーキットエミュレータ１００の操作を容易にして、比較器２１（３１）によりイベント検出を行うことができる。なお、検出条件をレジスタ２５，２６（３５，３６）に設定しておくことで、転送されずにＲＯＭ４１でプログラムが走行しても、当然比較器２１（３１）によりイベント検出がなされる。このように、１度のイベント検出条件の設定だけで済ますことができ、効率のよいデバッグ環境を提供することができる。
【００２９】
〔第２の実施の形態〕
図３は本発明の第２の実施の形態のイベント検出回路の例を示すブロック図であり、この例では第１の実施の形態と同様に２種類の検出条件を設定可能なものとしている。図３において、５０，６０は第１，第２のイベント検出回路、５１，６１は第１の比較器（第１の検出手段）、５２，６２は第２の比較器（第２の検出手段）、５３，６３は第３の比較器（第３の検出手段）、５５，６５は第１のレジスタ、５６，６６は第２のレジスタであり、その他の図１と同じものには同一符号を付しその説明を省略する。
【００３０】
本実施の形態のイベント検出回路は、第１のイベント検出回路５０，第２のイベント検出回路６０およびＯＲゲート１１からなる。
【００３１】
第１のイベント検出回路５０は、第１，第２，第３の比較器５１，５２，５３および第１，第２のレジスタ５５，５６を備えている。第１の比較器５１は、イベント検出用の比較器であり、フェッチ状態（読み出し信号Ｒが論理値「１」で、フェッチ信号ＦＥＴＣＨが論理値「１」）であって、かつ第１のレジスタ５５の値とアドレス信号ＡＤＤＲＥＳＳとが一致したときに、イベント検出信号Ｓ１  を出力する。
【００３２】
第１のレジスタ５５は第１，第３の比較器５１，５３で比較される値を記憶し、第２のレジスタ５６は第２の比較器５２で比較される値を記憶するもので、操作者がインサーキットエミュレータ１００に対して第２のレジスタ５６の値を設定すると、インサーキットエミュレータ１００から第２のレジスタ５６とともに第１のレジスタ５５にも同じ値が書き込まれる。操作者がインサーキットエミュレータ１００に対して第１のレジスタ５５の値を設定すると、インサーキットエミュレータ１００から第１のレジスタ５５にのみ値が書き込まれ、第２のレジスタ５６には書き込まれない。
【００３３】
第２の比較器５２は、第２のレジスタ５６の値と同じアドレスからのフェッチではない読み出し動作を検出するもので、読み出し信号Ｒが論理値「１」で、かつフェッチ信号ＦＥＴＣＨが論理値「０」のときに、第２のレジスタ５６の値とアドレス信号ＡＤＤＲＥＳＳとが一致すると、ハイレベルの検出信号を第１のレジスタ５５へ出力するものである。この検出信号を第１のレジスタ５５に入力すると次の書き込み動作のときに、第１のレジスタ５５の値はプロセッサ１が出力しているアドレス信号ＡＤＤＲＥＳＳの値に書き換えられる。
【００３４】
第３の比較器５３は、第１のレジスタ５５の値と同じアドレスに対する書き込みを検出するもので、書き込み信号Ｗが論理値「１」のときに、第１のレジスタ５５の値とアドレス信号ＡＤＤＲＥＳＳとが一致すると、ハイレベルの検出信号を第１のレジスタ５５へ出力するものである。この検出信号が第１のレジスタ５５に入力されると、第１のレジスタ５５の値は第２のレジスタ５６の値に書き換えられる。なお、この書き換えよりも、前述の第２の比較器５２の検出による書き換えの方が優先される。
【００３５】
また、第２のイベント検出回路６０は、第１のイベント検出回路５０と同様の構成であり、詳細な説明は省略する。第１のイベント検出回路５０のイベント検出信号Ｓ１  と第２のイベント検出回路６０のイベント検出信号Ｓ２  とはＯＲゲート１１を介してインサーキットエミュレータ１００へ出力される。これを受けてインサーキットエミュレータ１００はプロセッサ１に対して割り込みをかけてプログラムの走行を一時的に停止させる。
【００３６】
このように構成される本実施の形態のイベント検出回路において、例えばＲＯＭ４１のプログラムをＲＡＭ４２に転送してＲＡＭ４２上でプログラムを走行させる場合の動作について、さらに図４を参照しながら説明する。第１のイベント検出回路５０と第２のイベント検出回路６０とは検出条件が異なるだけで同様の動作であるため、ここでは第１のイベント検出回路５０の動作についてのみ説明する。
【００３７】
図４は本実施の形態のイベント検出回路の第１のイベント検出回路５０の動作を説明するための図であり、アドレス信号ＡＤＤＲＥＳＳ，読み出し信号Ｒ，書き込み信号Ｗ，フェッチ信号ＦＥＴＣＨ，レジスタ５６・５５の値，比較器５１・５２・５３の出力値を示し、Ｎｏ．１，Ｎｏ．２，・・・・・・の順に動作が行われる。図４中における値は、図２と同様にして示してあり、比較器５３の出力値も比較器５１，５２と同様、「１」は比較結果が一致したときのハイレベルの信号で、「０」は比較結果が不一致のときのローレベルの信号である。
【００３８】
ここでは、ＲＯＭ４１の領域上に記憶されているプログラムが８０００００ｈ番地から８０００ＦＦｈ番地にあり、これをＲＡＭ４２の領域００１０００ｈ番地から００１０ＦＦｈ番地に転送する場合で、転送前の８０００１０ｈ番地のフェッチでイベント検出信号を出すようにしたいときについて説明する。
【００３９】
転送前にイベント検出条件を設定する場合は、まず、レジスタ５６に対して検出条件である８０００１０ｈを書き込む。その結果、レジスタ５５の値も８０００１０ｈになる（Ｎｏ．１）。その後（Ｎｏ．２以降）、転送を行なわせると、Ｎｏ．３４の読み出し動作のとき、アドレス信号ＡＤＤＲＥＳＳとレジスタ５６との値とが一致するため比較器５２が論理値「１」の検出信号を出力する。これを受けてレジスタ５５は、次のＮｏ．３５の書き込み動作のときにアドレス信号ＡＤＤＲＥＳＳの値００１０１０ｈに書き換わる。
【００４０】
従って、転送が終了してＲＡＭ４２上でプログラムが走行すると、００１０１０ｈ番地のフェッチのときに比較器５１が応答（一致を検出）してイベント検出信号Ｓ１  を出力する。イベント検出信号Ｓ１  はＯＲゲート１１を介してインサーキットエミュレータ１００へ出力される。これを受けてインサーキットエミュレータ１００はプロセッサ１に対して割り込みをかけてプログラムの走行を一時的に停止させる。
【００４１】
なお、転送が終わった後でイベント検出条件を設定したい場合には、最初に転送元のアドレスである８０００１０ｈをレジスタ５６に対して書き込む。その後でレジスタ５５に対して転送先のアドレス００１０１０ｈを書き込む。その結果、図４のＮｏ．３５以降の状態と同じになるので、転送後のプログラムを走行させれば００１０１０ｈ番地のフェッチを比較器５１が検出するようになる。以上の動作は第１の実施の形態と同様である。
【００４２】
また、上記の状態の後で、別のプログラムをＲＡＭ４２の同じ領域に転送してくる場合について、図５を参照して説明する。図５中における値は、図４と同様にして示している。
【００４３】
この場合、レジスタ５６には、先に転送されたプログラムのＲＯＭ４１のアドレスが書き込まれているため、比較器５２は応答せず（一致を検出しない）、図５のＮｏ．３５の書き込み動作のときに、比較器５３が００１０１０ｈ番地に対する書き込みを検出する。この検出に応答して、レジスタ５５の値はレジスタ５６と同じ値に書き換えられる。従って、転送が終わった後で、００１０１０ｈ番地のフェッチが行われても比較器５１は応答しないので誤検出が防止される。
【００４４】
以上のように本実施の形態によれば、第１の実施の形態の効果に加え、第３の比較器５３（６３）を設け、プログラムの転送が行われた後、それと同じ転送先に別のプログラムの転送が行われる場合に、書き込み動作のときに、第３の比較器５３（６３）がアドレス信号ＡＤＤＲＥＳＳと第１のレジスタ５５（６５）の値との一致を検出すると、第１のレジスタ５５（６５）の値は第２のレジスタ５６（６６）の値（転送元のアドレス値）に書き換えられるので、別のプログラムの転送後には第１の比較器５１（６１）によるイベントの検出は行われなくなり、イベントの誤検出は起こらない。このように、複数種のプログラムが転送先に転送される状態、すなわち転送先上で走行するプログラムが頻繁に書き換わる場合でも有効にイベントを検出することが可能になる。
【００４５】
【発明の効果】
以上のように本発明によれば、プログラムの転送前に外部（インサーキットエミュレータ）により検出条件を第１および第２のレジスタに一度設定しておけば、転送されるときに自動的に転送先のアドレス値に第１のレジスタの値が書き換えられるので、インサーキットエミュレータの操作を容易にして、第１の検出手段によりイベント検出を行うことができる。なお、検出条件を第１および第２のレジスタに設定しておくことで、転送が行われない場合でもプログラムが走行すると、第１の検出手段によりイベント検出がなされる。このように、１度のイベント検出条件の設定だけで済ますことができ、効率のよいデバッグ環境を提供することができる。
【００４６】
そしてさらに、第３の検出手段を設け、プログラムの転送が行われた後、それと同じ転送先に別のプログラムの転送が行われる場合に、書き込み動作のときに、第３の検出手段がアドレス値と第１のレジスタの値との一致を検出すると、第１のレジスタの値は第２のレジスタの値（転送元のアドレス値）に書き換えられるので、別のプログラムの転送後には第１の検出手段によるイベントの検出は行われなくなり、イベントの誤検出は起こらない。このように、複数種のプログラムが転送先に転送される状態、すなわち転送先上で走行するプログラムが頻繁に書き換わる場合でも有効にイベントを検出することが可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態のイベント検出回路を示すブロック図。
【図２】本発明の第１の実施の形態における動作を説明するための図。
【図３】本発明の第２の実施の形態のイベント検出回路を示すブロック図。
【図４】本発明の第２の実施の形態における動作を説明するための図。
【図５】本発明の第２の実施の形態における動作を説明するための図。
【図６】従来のイベント検出回路を示すブロック図。
【図７】複数のプログラムのＲＯＭからＲＡＭへの転送を示す図。
【符号の説明】
１  プロセッサ
２  プログラムカウンタ
１１  ＯＲゲート
２０，３０  イベント検出回路
２１，３１  第１の比較器
２２，３２  第２の比較器
２５，３５  第１のレジスタ
２６，３６  第２のレジスタ
４１  ＲＯＭ
４２  ＲＡＭ
５０，６０  イベント検出回路
５１，６１  第１の比較器
５２，６２  第２の比較器
５３，６３  第３の比較器
５５，６５  第１のレジスタ
５６，６６  第２のレジスタ
１００  インサーキットエミュレータ
【図１】
0003590289.tif 000002
【図２】
0003590289.tif 000003
【図３】
0003590289.tif 000004
【図４】
0003590289.tif 000005
【図５】
0003590289.tif 000006
【図６】
0003590289.tif 000007
【図７】
0003590289.tif 000008