(57)【特許請求の範囲】
【請求項１】
デバッグツールからのデバッグプログラムを入力可能なシリアルインタフェースと、
上記シリアルインタフェースから入力されたデバッグプログラム中の命令コードを保持する第１のレジスタと、
上記第１のレジスタに入力された命令コードを転送され保持する命令バッファ、及び上記命令バッファに保持された命令コードに基づいて実行するＣＰＵとを備え、
上記命令バッファに有効な命令コードが格納されていない場合にプログラムカウンタに格納されているアドレスを更新しないアドレスへの分岐命令を前記ＣＰＵへ供給する命令供給部を有したマイクロコンピュータ。
【請求項２】
上記命令バッファは、複数の命令コードを保持可能な複数の保持領域を有し、
上記第１のレジスタは、上記シリアルインタフェースによって入力されたデバッグプログラム中の命令コードと共にその命令コードが上記命令バッファ中のどの保持領域に保持されるか指定する領域指定コードとを保持する保持領域を有し、
上記第１のレジスタに保持された命令コードをその領域指定コードに応じた上記命令バッファ中の保持領域に保持させる入力制御部を備えたことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
上記命令バッファは、複数の命令コードを保持可能な複数の保持領域を有し、
上記第１のレジスタに保持された命令コードを命令コード毎に格納すべき領域を示す領域指定値を増加させて上記命令バッファ中の保持領域に保持させる入力制御部を備えたことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項４】
上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、
上記第１のバリッド制御部によって生成されたバリッド信号を保持する保持領域を有し、そのバリッド信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えたことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項５】
上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、
上記第１のバリッド制御部によって生成されたバリッド信号が無効を示す場合にＣＰＵに無意のアクセス終了信号を出力し、バリッド信号が有効を示す場合にＣＰＵに有意のアクセス終了信号を出力する内部バスインタフェース部とを備え、
前記命令供給部は前記バリッド信号が無効を示す場合に前記分岐命令を供給することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項６】
上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、
ＣＰＵからの命令フェッチ要求に対して上記第１のバリッド制御部によって生成されたバリッド信号が無効を示す場合に上記命令供給部は上記分岐命令を出力することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項７】
命令フェッチ要求が命令プリフェッチ要求である場合、または上記第１のバリッド制御部によって生成されたバリッド信号が無効を示す場合に上記命令供給部は上記分岐命令を出力する特徴とする請求項６記載のマイクロコンピュータ。
【請求項８】
シリアルインタフェースから入力された命令コード設定済信号を保持する保持領域を有する第２のレジスタと、
上記第２のレジスタの保持領域に命令コード設定済信号が保持されているか検出する命令コード設定済信号検出部と、
上記命令コード設定済信号検出部によって命令コード設定済信号の保持が検出された場合に上記命令バッファに保持された命令コードの有効を示すバリッド信号を生成する第１のバリッド制御部とを備えたことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項９】
ＣＰＵからデータを書き込みすることが可能で、そのデータをシリアルインタフェースを介してデバッグツールから読み出し可能にした第３のレジスタを備えたことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項１０】
上記第３のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第２のバリッド制御部と、
上記第２のバリッド制御部によって生成されたバリッド信号を保持する保持領域を有し、そのバリッド信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えたことを特徴とする請求項９記載のマイクロコンピュータ。
【請求項１１】
シリアルインタフェースから入力されたデータを保持する第４のレジスタを備え、
ＣＰＵは、上記第４のレジスタに保持されたデータを読み出すことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項１２】
上記第４のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第３のバリッド制御部と、
上記第３のバリッド制御部によって生成されたバリッド信号を保持する保持領域を有し、そのバリッド信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えたことを特徴とする請求項１１記載のマイクロコンピュータ。
【請求項１３】
シリアルインタフェースは、ＪＴＡＧインタフェースであることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項１４】
シリアルインタフェースおよび第１のレジスタを第１のクロックで動作し、バッファおよびＣＰＵをその第１のクロックとは互いに独立した第２のクロックで動作することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項１５】
第１のクロックで動作し、第１のレジスタへの命令コードが設定可能であるか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、
第１のクロックで動作し、上記デバッグツールからの上記第１のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第１のアクセス検出部と、
第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第１のアクセス検出信号伝送部と、
第２のクロックで動作し、上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、
第１のクロックで動作し、上記第１のアクセス検出部から出力されたアクセス検出信号に応じて上記第２のレジスタの保持領域に設定不可能を示す信号を保持させると共に、上記第１のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に上記第１のバリッド制御部によって生成されたバリッド信号を保持させる第１の保持領域制御部とを備えたことを特徴とする請求項１４記載のマイクロコンピュータ。
【請求項１６】
第１のクロックで動作し、バッファに命令コードが設定済であるか否かを示す信号を保持する保持領域を有する第２のレジスタと、
第１のクロックで動作し、上記第２のレジスタの保持領域の命令コードの設定済の検出に応じて命令コード設定済信号を出力する命令コード設定済信号検出部と、
第２のクロックで動作し、命令コード設定済信号の入力に応じて命令コード設定済承認信号を出力する命令コード設定済信号伝送部と、
第２のクロックで動作し、上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、
第１のクロックで動作し、上記命令コード設定済信号検出部から出力された命令コード設定済信号に応じて上記第２のレジスタの保持領域に設定済を示す信号を保持させると共に、上記命令コード設定済信号伝送部から出力された命令コード設定済承認信号に応じてその第２のレジスタの保持領域に上記第１のバリッド制御部によって生成されたバリッド信号を保持させる第１の保持領域制御部とを備えたことを特徴とする請求項１４記載のマイクロコンピュータ。
【請求項１７】
第１のクロックで動作し、第３のレジスタに保持されたデータが有効か無効かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、
第１のクロックで動作し、上記デバッグツールからの上記第３のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第２のアクセス検出部と、
第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第２のアクセス検出信号伝送部と、
第２のクロックで動作し、第５のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第２のバリッド制御部と、
第１のクロックで動作し、上記第２のアクセス検出部から出力されたアクセス検出信号に応じて上記第２のレジスタの保持領域に無効を示す信号を保持させると共に、上記第２のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に上記第２のバリッド制御部によって生成されたバリッド信号を保持させる第２の保持領域制御部とを備えたことを特徴とする請求項１４記載のマイクロコンピュータ。
【請求項１８】
第１のクロックで動作し、第４のレジスタに設定されたデータがＣＰＵによって読み出されたか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、
第１のクロックで動作し、上記デバッグツールからの上記第４のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第３のアクセス検出部と、
第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第３のアクセス検出信号伝送部と、
第２のクロックで動作し、上記第４のレジスタから伝送されて第６のレジスタに保持されたデータがＣＰＵによって読み出されたか否かを示すバリッド信号を生成する第３のバリッド制御部と、
第１のクロックで動作し、上記第３のアクセス検出部から出力されたアクセス検出信号に応じて上記第２のレジスタの保持領域にＣＰＵによってまだ読み出されていないことを示す信号を保持させると共に、上記第３のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に上記第３のバリッド制御部によって生成されたバリッド信号を保持させる第３の保持領域制御部とを備えたことを特徴とする請求項１４記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、実使用環境下でデバッグを行う場合に有効なマイクロコンピュータに関するものである。
【０００２】
【従来の技術】
図１４は例えば特開平８−１８５３３６号公報の従来例１として示された従来のマイクロコンピュータを示す構成図であり、図において、１はマイクロコンピュータ応用機器などのユーザターゲットシステム、２はホストコンピュータである。また、ユーザターゲットシステム１において、３はホストコンピュータ２に接続されるシリアルインタフェース、４はメモリ、５はメモリ４に格納されたモニタプログラム、６はＩ／Ｏ、７はマイクロプロセッサ、８はマイクロプロセッサ７に設けられたレジスタ、９はプロセッサバスである。
【０００３】
次に動作について説明する。
ユーザターゲットシステム１のデバッグを行う場合は、シリアルインタフェース３にホストコンピュータ２を接続する。マイクロプロセッサ７は、モニタプログラム５を実行することにより、メモリ４、Ｉ／Ｏ６、レジスタ８にプロセッサバス９を通じてアクセスする。さらに、ソフトウェアブレイク命令を使用してユーザプログラムの実行制御を行い、その実行結果をシリアルインタフェース３を通じてホストコンピュータ２に出力する。
【０００４】
図１５は例えば特開平８−１８５３３６号公報の従来例２として示された従来のマイクロコンピュータを示す構成図であり、図において、１１はデバッグツールである。また、マイクロプロセッサ７において、１２はレジスタ、１３はシーケンサ、１４はバスコントローラ、１５は伝送経路である。その他の構成は図１４と同一である。
【０００５】
次に動作について説明する。
ユーザターゲットシステム１のデバッグを行う場合は、シリアルインタフェース３にデバッグツール１１およびホストコンピュータ２を接続する。デバッグツール１１は、ホストコンピュータ２からのコマンドをマイクロプロセッサ７のシーケンサ１３が理解可能なデバッグ専用のコマンドに変換する。マイクロプロセッサ７のシーケンサ１３は、そのデバッグ専用のコマンドに従って、ユーザプログラムの実行を一時停止し、伝送経路１５を通じてレジスタ１２にアクセスしたり、バスコントローラ１４を使用してメモリ４やＩ／Ｏ６にアクセスする。さらに、その時の実行結果をシリアルインタフェース３を通じてデバッグツール１１に出力する。そして、デバッグツール１１は、その実行結果をホストコンピュータ２が理解可能なデータ形式に変換してホストコンピュータ２に出力する。
【０００６】
図１６は例えば特開平８−１８５３３６号公報の従来例３として示された従来のマイクロコンピュータを示す構成図であり、図のデバッグツール１１において、２１はデバッグ用マイクロプロセッサ、２２はモニタプログラムメモリ、２３はトレースメモリである。その他の構成は図１４と同一である。
【０００７】
次に動作について説明する。
図１６は、一般にインサーキットエミュレータと呼ばれるデバッグシステムである。ユーザターゲットシステム１のデバッグを行う場合は、ユーザターゲットシステム１のマイクロプロセッサ７を取り外すか、または無効にし、この部分にデバッグツール１１のプローブを接続して、デバッグ用マイクロプロセッサ２１を代わりに動作させる。デバッグ用マイクロプロセッサ２１は、デバッグツール１１上のモニタプログラムメモリ２２に格納されているモニタプログラムを実行することにより、ユーザプログラムの実行を制御したり、メモリ４やＩ／Ｏ６にアクセスする。また、デバッグ用マイクロプロセッサ２１は、あたかもマイクロプロセッサ７が実行しているかのように、ユーザターゲットシステム１上のメモリ４に格納されているプログラムを実行する。また、デバッグツール１１は、トレースメモリ２３を有し、デバッグ用マイクロプロセッサ２１のプロセッサバスの状態をトレースすることができる。デバッグ用マイクロプロセッサ２１は、マイクロプロセッサ７からは得られないトレース情報を出力する。これにより、プロセッサバス９からだけではトレースできないプロセッサの内部状態の一部がトレース可能になる。
【０００８】
図１７は例えば特開平８−１８５３３６号公報の従来例４として示された従来のマイクロコンピュータを示す構成図であり、図において、３１はユーザターゲットシステム１に接続されたロジックアナライザである。その他の構成は図１４と同一である。
【０００９】
次に動作について説明する。
図１７は、一般にプリプロセッサと呼ばれるデバッグシステムである。ユーザターゲットシステム１のデバッグを行う場合は、ユーザターゲットシステム１上のプロセッサバス９にロジックアナライザ３１のプローブを接続することにより、マイクロプロセッサ７のメモリ４やＩ／Ｏ６に対するアクセスをトレースすることができる。
【００１０】
図１８は例えば特開平８−１８５３３６号公報の実施例として示された従来のマイクロコンピュータを示す構成図であり、図のデバッグツール１１において、４１はモニタプログラムである。また、ユーザターゲットシステム１において、４２は外部デバッグインタフェース、マイクロプロセッサ７において、４３はプロセッサコア、４４はデバッグモジュール、４５は内部デバッグインタフェース、４６は内部プロセッサバスである。その他の構成は図１４と同一である。
【００１１】
次に動作について説明する。
ユーザターゲットシステム１のデバッグを行う場合は、外部デバッグインタフェース４２にデバッグツール１１を接続する。プロセッサコア４３は、内部デバッグインタフェース４５およびデバッグモジュール４４を介してデバッグツール１１上のモニタプログラム４１を実行する。この時、プロセッサコア４３からデバッグツール１１に対してアドレスやサイズ情報を出力し、デバッグツール１１では、対応するモニタプログラム４１のコードをプロセッサコア４３に出力する。モニタプログラム４１では、メモリ４やＩ／Ｏ６のリードやライト、ハードウエアブレイクポイントの設定、ユーザプログラムの実行開始アドレスの指定などの実行制御機能を実現する。また、デバッグモジュール４４では、デバッグモードで有効なシリアルモニタバス機能と、ノーマルモードで有効なＰＣトレース機能、トレーストリガ機能、ハードウエアブレイク機能、ソフトウエアブレイク機能、デバッグ割り込み機能、デバッグリセット機能、およびマスク機能を実現する。
【００１２】
【発明が解決しようとする課題】
従来のマイクロコンピュータは以上のように構成されているので、図１４に示した従来例では、デバッグを行うためのモニタプログラム５をユーザターゲットシステム１のメモリ４に格納しておかなくてはならず、メモリ４が大型化してしまう。また、デバッグされるユーザプログラムを格納したメモリ４の動作が不安定の時は、デバッグするモニタプログラム５の動作も不安定となり、有効にデバッグを行うことができない課題があった。
また、図１５に示した従来例では、デバッグ専用にレジスタ１２にアクセスするための伝送経路１５やバスコントローラ１４を設けなくてはならず、構成が大型化し、よって、チップ面積が増大してしまう課題があった。
さらに、図１６に示した従来例では、ユーザターゲットシステム１へのデバッグツール１１の接続をプローブによって行うので、プローブによる接続が不安定になりやすく、この場合に、ユーザターゲットシステム１の動作が不安定になってしまう。また、そのプローブをユーザターゲットシステム１の品種毎に用意する必要が生じてしまう課題があった。
さらに、図１７に示した従来例では、図１６に示した従来例の課題に加えて、マイクロプロセッサ７の実行制御機能が無く、木目細かなデバッグを行うことができない課題があった。
さらに、図１８に示した従来例では、モニタプログラム４１をアクセスするために、プロセッサコア４３からデバッグツール１１に対してアドレスやサイズ情報を出力しなくてはならず、モニタプログラム４１を高速に実行することができないなどの課題があった。
【００１３】
この発明は上記のような課題を解決するためになされたもので、構成規模の大型化を低減すると共に、デバッグツールからのデバッグプログラムをＣＰＵが実行することによって高性能にデバッグ可能なマイクロコンピュータを得ることを目的とする。
【００１４】
【課題を解決するための手段】
この発明に係るマイクロコンピュータは、シリアルインタフェースを介してデバッグツールから入力されたデバッグプログラム中の命令コードを保持する第１のレジスタと、第１のレジスタに保持された命令コードに基づいて実行するＣＰＵとを備えたものである。
【００１５】
この発明に係るマイクロコンピュータは、第１のレジスタに保持された命令コードを入力して保持するバッファを備えたものである。
【００１６】
この発明に係るマイクロコンピュータは、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第１のレジスタに、領域指定コードを保持する保持領域を設け、第１のレジスタに保持された命令コードを領域指定コードに応じたバッファ中の保持領域に保持させる入力制御部を備えたものである。
【００１７】
この発明に係るマイクロコンピュータは、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第１のレジスタに保持された命令コードを命令コード毎に領域指定を増加させてバッファ中の保持領域に保持させる入力制御部を備えたものである。
【００１８】
この発明に係るマイクロコンピュータは、第１のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えたものである。
【００１９】
この発明に係るマイクロコンピュータは、第１のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、そのバリッド信号が無効を示す場合にＣＰＵに無意のアクセス終了信号を出力し、バリッド信号が有効を示す場合にＣＰＵに有意のアクセス終了信号を出力する内部バスインタフェース部とを備えたものである。
【００２０】
この発明に係るマイクロコンピュータは、第１のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、ＣＰＵからの命令フェッチ要求に対してそのバリッド信号が無効を示す場合にＣＰＵに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えたものである。
【００２１】
この発明に係るマイクロコンピュータは、命令フェッチ要求が命令プリフェッチ要求である場合、または第１のバリッド制御部によって生成されたバリッド信号が無効を示す場合にＣＰＵに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えたものである。
【００２２】
この発明に係るマイクロコンピュータは、シリアルインタフェースから入力された命令コード設定済信号を保持する保持領域を有する第２のレジスタと、その保持領域に命令コード設定済信号が保持されているか検出する命令コード設定済信号検出部と、その命令コード設定済信号の保持が検出された場合にバッファに保持された命令コードの有効を示すバリッド信号を生成する第１のバリッド制御部とを備えたものである。
【００２３】
この発明に係るマイクロコンピュータは、ＣＰＵからデータを書き込みすることが可能で、そのデータをシリアルインタフェースを介してデバッグツールから読み出し可能にした第３のレジスタを備えたものである。
【００２４】
この発明に係るマイクロコンピュータは、第３のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第２のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えたものである。
【００２５】
この発明に係るマイクロコンピュータは、シリアルインタフェースを介してデバッグツールから入力されたデータを保持する第４のレジスタと、第４のレジスタに保持されたデータを読み出すＣＰＵとを備えたものである。
【００２６】
この発明に係るマイクロコンピュータは、第４のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第３のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えたものである。
【００２７】
この発明に係るマイクロコンピュータは、シリアルインタフェースとしてＪＴＡＧインタフェースを用いたものである。
【００２８】
この発明に係るマイクロコンピュータは、シリアルインタフェースおよび第１のレジスタを第１のクロックで動作し、バッファおよびＣＰＵをその第１のクロックとは互いに独立した第２のクロックで動作するようにしたものである。
【００２９】
この発明に係るマイクロコンピュータは、第１のクロックで動作し、第１のレジスタへの命令コードが設定可能であるか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、第１のクロックで動作し、デバッグツールからの第１のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第１のアクセス検出部と、第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第１のアクセス検出信号伝送部と、第２のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、第１のクロックで動作し、第１のアクセス検出部から出力されたアクセス検出信号に応じて第２のレジスタの保持領域に設定不可能を示す信号を保持させると共に、第１のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に第１のバリッド制御部によって生成されたバリッド信号を保持させる第１の保持領域制御部とを備えたものである。
【００３０】
この発明に係るマイクロコンピュータは、第１のクロックで動作し、バッファに命令コードが設定済であるか否かを示す信号を保持する保持領域を有する第２のレジスタと、第１のクロックで動作し、第２のレジスタの保持領域の命令コードの設定済の検出に応じて命令コード設定済信号を出力する命令コード設定済信号検出部と、第２のクロックで動作し、命令コード設定済信号の入力に応じて命令コード設定済承認信号を出力する命令コード設定済信号伝送部と、第２のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、第１のクロックで動作し、命令コード設定済信号検出部から出力された命令コード設定済信号に応じて第２のレジスタの保持領域に設定済を示す信号を保持させると共に、命令コード設定済信号伝送部から出力された命令コード設定済承認信号に応じてその第２のレジスタの保持領域に第１のバリッド制御部によって生成されたバリッド信号を保持させる第１の保持領域制御部とを備えたものである。
【００３１】
この発明に係るマイクロコンピュータは、第１のクロックで動作し、第３のレジスタに保持されたデータが有効か無効かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、第１のクロックで動作し、デバッグツールからの第３のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第２のアクセス検出部と、第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第２のアクセス検出信号伝送部と、第２のクロックで動作し、第５のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第２のバリッド制御部と、第１のクロックで動作し、第２のアクセス検出部から出力されたアクセス検出信号に応じて第２のレジスタの保持領域に無効を示す信号を保持させると共に、第２のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に第２のバリッド制御部によって生成されたバリッド信号を保持させる第２の保持領域制御部とを備えたものである。
【００３２】
この発明に係るマイクロコンピュータは、第１のクロックで動作し、第４のレジスタに設定されたデータがＣＰＵによって読み出されたか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、第１のクロックで動作し、デバッグツールからの第４のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第３のアクセス検出部と、第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第３のアクセス検出信号伝送部と、第２のクロックで動作し、第４のレジスタから伝送されて第６のレジスタに保持されたデータがＣＰＵによって読み出されたか否かを示すバリッド信号を生成する第３のバリッド制御部と、第１のクロックで動作し、第３のアクセス検出部から出力されたアクセス検出信号に応じて第２のレジスタの保持領域にＣＰＵによってまだ読み出されていないことを示す信号を保持させると共に、第３のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に第３のバリッド制御部によって生成されたバリッド信号を保持させる第３の保持領域制御部とを備えたものである。
【００３３】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるマイクロコンピュータを示す構成図であり、図において、５１はマイクロコンピュータ応用機器などに設けられた１チップのマイクロコンピュータ、５２はマイクロコンピュータ５１のデバッグ時に接続される汎用的なデバッグツールである。また、マイクロコンピュータ５１において、５３は３２ビット汎用レジスタを１６本（Ｒ０〜Ｒ１５）備えたマイクロプロセッサであるＣＰＵ、５４はこの実施の形態１の特徴であるデバッグモジュール、５５はユーザプログラムなどが格納された内蔵フラッシュメモリ、５６は内蔵ＳＲＡＭ、５７はＤＭＡコントローラ、割り込みコントローラ、タイマなどの内蔵周辺Ｉ／Ｏ、５８はバス制御回路、５９は上記各モジュールを接続する３２ビットの内部バスである。
【００３４】
図２はマイクロコンピュータのＣＰＵおよびデバッグモジュールの詳細を示す構成図であり、図において、６１はデバッグモジュール５４と外部のデバッグツール５２とを接続するＩＥＥＥ  １１４９．１で定められた５本のＪＴＡＧインタフェース端子であり、各端子の機能を以下に説明する。
・ＴＣＫ端子  クロック入力端子
・ＴＤＩ端子  テスト命令コードまたはテストデータをシリアルに入力する端子
・ＴＤＯ端子  テスト命令コードまたはテストデータをシリアルに出力する端子
・ＴＭＳ端子  テスト回路の状態遷移を制御するテストモード選択を入力する端子
・ＴＲＳＴ端子  テスト回路を非同期に初期化するテストリセット入力をする端子
６２はチップ外部からＣＰＵ５３に対してデバッグ割り込み入力する端子である。
【００３５】
また、ＣＰＵ５３において、６３ａはデバッグトラップ命令実行機能であり、このデバッグトラップ命令実行機能６３ａは、デバッグ専用のトラップ命令であり、ＣＰＵ５３がこの命令を実行することによりデバッグ事象が発生し、デバッグモードに移行するものである。６３ｂはプログラムカウンタであり、このプログラムカウンタ６３ｂは、ＣＰＵ５３が実行している命令のアドレスを保持するレジスタである。６３ｃはプログラムカウンタ退避用レジスタであり、このプログラムカウンタ退避用レジスタ６３ｃは、デバッグ事象等が発生した時にプログラムカウンタ６３ｂ値の退避先となるレジスタである。６３ｄはＰＳＷレジスタであり、このＰＳＷレジスタ６３ｄは、ＣＰＵ５３の状態を示すレジスタである。６３ｅはＰＳＷ退避用レジスタであり、このＰＳＷ退避用レジスタ６３ｅは、デバッグ事象が発生した時にＰＳＷレジスタ６３ｄ値の退避先となるレジスタである。ＣＰＵ５３は、上記以外にもロード命令、ストア命令、分岐命令、加算命令等、一般的なＣＰＵが備えている命令実行機能と１６本の汎用レジスタ６３ｆを備えている。ここではこの実施の形態１とは直接関係が無いので詳細は省略する。６４は実行後ＰＣブレーク機能であり、この実行後ＰＣブレーク機能６４は、ターゲットとなる命令のプログラムカウンタ値を設定すると、その命令の実行直後にデバッグ事象が発生し、デバッグモードに移行するものである。
【００３６】
さらに、デバッグモジュール５４において、６５はＪＴＡＧ制御部であり、このＪＴＡＧ制御部６５は、ＪＴＡＧインタフェース端子６１を通じてデバッグツール５２と通信を行い、デバッグ機能の制御を行うものであり、ＪＴＡＧインタフェース端子６１でアクセス可能なデバッグ関連の制御レジスタやＪＴＡＧインタフェース端子６１でのアクセスを制御するＴＡＰコントローラなどで構成されている。６６はこの実施の形態１の特徴であるＪＴＡＧインタフェース端子６１を通じてＣＰＵ命令を実行するモニタコード供給機能、６７はアクセスブレーク機能であり、このアクセスブレーク機能６７は、ターゲットとなるデータアクセスの条件を設定すると、設定された条件を満たすデータアクセスを検出し、ＣＰＵ５３に対してデバッグ割込み要求を出力するものである。６８は実行前ＰＣ（プログラムカウンタ）ブレーク機能であり、この実行前ＰＣブレーク機能６８は、ターゲットとなる命令のプログラムカウンタ値を設定すると、その命令がフェッチされたことを検出してＣＰＵ５３に実行前ＰＣブレーク要求を出力し、ＣＰＵ５３が実行前ＰＣブレーク要求を受け取ると、その命令の実行直前にデバッグ事象が発生し、デバッグモードに移行するものである。６９はデバッグ割り込み要求であり、このデバッグ割り込み要求６９は、デバッグ専用の割り込みであり、ＤＢＩ端子６２、ＪＴＡＧ制御部６５、アクセスブレーク機能６７の３個所から発生するデバッグ割り込み要求を論理和して１本化してからＣＰＵ５３に対して出力するものである。ＣＰＵ５３にデバッグ割り込み要求が入力されるとデバッグ事象が発生し、デバッグモードに移行する。
以上のように、マイクロコンピュータ５１には、デバッグ機能が内蔵されており、主にデバッグモジュール５４がデバッグ機能の制御を行っている。
【００３７】
ここで、ＪＴＡＧについて補足説明する。
今日のマイクロコンピュータ応用機器では、高密度実装化、デバイスの高集積、大規模、狭ピッチ化により、ボードレベルのテストが困難となってきている。このようなボードレベルのテストの課題を解決する目的で欧米の半導体、電子機器メーカ、テスタメーカなどが中心となってＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）が結成された。このＪＴＡＧより提案されたボードレベルのテスト方式がバウンダリスキャン方式といわれるものであり、現在はＩＥＥＥ１１４９．１テストポートアクセス規格（ＩＥＥＥ  Ｓｔａｎｄａｒｄ  Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ  ａｎｄ  Ｂｏｕｎｄａｒｙ  Ｓｃａｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＥＥＥ  Ｓｔｄ．１１４９．１ａ−１９９３）として標準化されている。
バウンダリスキャン方式では、ボード上に搭載されている各デバイスの入出力ピンと内部回路間にスキャンレジスタ回路（バウンダリスキャン）を挿入し、さらにコントロール回路と専用ピンを設ける。ボード上では、各デバイスのバウンダリスキャンを接続して、専用ポートを使用してシリアルにデータの入出力を行うことにより、全てのスキャンレジスタのアクセスとコントロールを可能にしている。シリアルに命令やデータを入力し、シリアルに出力されるデータを観測することによって、ボード上にテスト用のプローブを接触させることなく、ボード上のデバイス間の接続テストやデバイス内部のテストを行うことができる。
【００３８】
バウンダリスキャンは、以下のコンポーネントで構成される。
ＴＡＰ（Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ）バウンダリスキャンへのデータの入出力およびコントロールを行うためのポートであり、図２におけるＪＴＡＧインタフェース端子６１に相当する。
ＴＡＰコントローラ  ＴＣＫ端子およびＴＭＳ端子からの入力に応じて状態遷移を行い、テスト回路の制御を行う。
命令レジスタ  テスト命令コードを保持するレジスタで、この値をデコードしてテスト回路の制御信号を生成する。テスト命令コードとして、ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ命令、ＥＸＴＥＳＴ命令、ＢＹＰＡＳＳ命令などがある。また、上記命令とは別にデバイス独自のプライベート命令を追加することも許されている。この実施の形態１のマイクロコンピュータにおいても内蔵デバッグ機能用にいくつかのプライベート命令を備えている。
データレジスタ
・バイパスレジスタ  ＴＤＩ端子とＴＤＯ端子との間に設けられた１ビットのレジスタで、テスト回路をバイパスするために使用する。
・バウンダリスキャンレジスタ  デバイスの内部回路と各ピンとの間に設けられたシフトレジスタをシリアルに接続した一連のレジスタ。
上記以外にもデバイス独自のデータレジスタを追加することも許されている。この実施の形態１のマイクロコンピュータにおいても内蔵デバッグ機能用にいくつかのデータレジスタを備えている。
【００３９】
図３はデバッグ事象発生時の処理手順を示す説明図である。
マイクロコンピュータ５１には、ユーザモードとデバッグモードの２つの実行モードがあり、ユーザプログラムを実行しているモードがユーザモードであり、ユーザプログラムの実行中にデバッグ事象が発生するとユーザモードからデバッグモードに遷移する。デバッグモードではデバッグツール５２から供給されるモニタプログラム（デバッグプログラム）を実行する。
デバッグ事象の種類には、デバッグトラップ命令の実行、デバッグ割り込み要求、実行前／実行後プログラムカウンタブレーク要求がある。
デバッグ事象が発生すると、以下の処理をＣＰＵ５３およびデバッグモジュール５４が自動的に行った後、デバッグモードに遷移する。
・プログラムカウンタ６３ｂの値をプログラムカウンタ退避用レジスタ６３ｃに退避
・ＰＳＷレジスタ６３ｄの値をＰＳＷ退避用レジスタ６３ｅに退避した後、ＰＳＷレジスタ６３ｄの値を更新
・発生したデバッグ事象を示すフラグ（デバッグ事象発生要因フラグ）をＪＴＡＧ制御部６５にあるＪＴＡＧレジスタにセット
・デバッグ事象のベクタアドレスに分岐
デバッグ事象のベクタアドレスに分岐したら、デバッグツール５２は、モニタコード供給機能６６を使用して命令コードをＣＰＵ５３に供給することによってモニタプログラムを実行する。
ユーザモードへの復帰命令（ＲＴＥ命令）を実行することにより、デバッグモードからユーザモードに遷移する。ユーザモードに遷移する際には、以下の処理をＣＰＵ５３およびデバッグモジュール５４が自動的に行う。
・デバッグ事象発生要因フラグをクリア
・ＰＳＷ退避用レジスタ６３ｅに退避されていた値をＰＳＷレジスタ７２に復帰・プログラムカウンタ退避用レジスタ６３ｃに退避されていた値をプログラムカウンタ６３ｂに復帰すると共に、その値の番地に分岐する。
【００４０】
図４は内蔵領域にマッピングされたデバッグモジュール用領域を示す説明図であり、図において、７１はデバッグモジュール用内蔵Ｉ／Ｏ領域（Ｈ’ＦＦＦＦ８０００〜Ｈ’ＦＦＦＦ９ＦＦＦ）、７２はデバッグモジュール用制御レジスタ領域（Ｈ’ＦＦＦＦ８０００〜Ｈ’ＦＦＦＦ８ＦＦＦ）であり、実行前ＰＣ機能用のレジスタ群、アクセスブレーク機能用のレジスタ群、モニタコード供給機能用のレジスタ群がこの領域に配置されている。７３はモニタコード供給領域（Ｈ’ＦＦＦＦ９０００〜Ｈ’ＦＦＦＦ９ＦＦＦ）であり、モニタコード供給機能６６にアクセスできる領域である。この領域内での命令フェッチは、全てモニタコード供給機能６６を使用したＪＴＡＧインタフェース端子６１経由の命令コードをフェッチすることになる。この中のデバッグ事象ベクタエントリ（Ｈ’ＦＦＦＦ９０００〜Ｈ’ＦＦＦＦ９００３）は、デバッグ事象が発生するとこの領域に分岐するものである。
【００４１】
図５はＪＴＡＧ制御部およびモニタコード供給機能の詳細を示す構成図であり、ここで、ＪＴＡＧ制御部６５およびモニタコード供給機能６６は、主にＪＴＡＧインタフェース端子（シリアルインタフェース）６１を使用してデバッグツール５２からＣＰＵ５３に対して命令コードを供給する機能である。このモニタコード供給機能６６は、デバッグ事象が発生すると、図４に示したモニタコード供給領域７３の先頭であるＨ’ＦＦＦＦ９０００番地へ分岐し、ＣＰＵ５３は、このモニタコード供給機能６６から供給される命令コードを実行するものである。
また、デバッグツール５２およびＪＴＡＧ制御部６５は、ＴＣＫクロック（第１のクロック）、ＣＰＵ５３およびモニタコード供給機能６６は、ＣＬＫクロック（第２のクロック）で動作し、これらＴＣＫクロックおよびＣＬＫクロックの周波数がどのような組合せになっても動作するように、ＪＴＡＧ制御部６５とモニタコード供給機能６６との間でハンドシェークを行うものである。
ＪＴＡＧ制御部６５において、８１はＪＴＡＧインタフェース端子６１でのアクセスを制御するＴＡＰコントローラ、８２はいづれのレジスタを用いてどのようなテストを行うか選択する命令レジスタである。
【００４２】
８３はＭＯＮ＿ＣＯＤＥレジスタ（第１のレジスタ）であり、このＭＯＮ＿ＣＯＤＥレジスタ８３は、デバッグモード時にＪＴＡＧインタフェース端子６１経由でモニタプログラム（デバッグプログラム）を実行する場合に、デバッグツール５２から供給される命令コードの設定に使用する３２ビットのレジスタである。ＭＯＮ＿ＣＯＤＥレジスタ８３に設定された命令コードは、モニタコード供給機能６６の命令コードバッファ（バッファ）８７に転送される。この時、命令コードバッファ８７の入力ポインタも自動的にインクリメントされる。
【００４３】
８４はＭＯＮ＿ＰＡＲＡＭレジスタ（第４のレジスタ）であり、このＭＯＮ＿ＰＡＲＡＭレジスタ８４は、デバッグモード時にＪＴＡＧインタフェース端子６１経由でモニタプログラムを実行する場合に、デバッグツール５２からパラメータを渡すためのインタフェースとなる３２ビットのレジスタである。デバッグツール５２からＪＴＡＧインタフェース端子６１経由でＭＯＮ＿ＰＡＲＡＭレジスタ８４に書き込みを行うと、モニタコード供給機能６６のＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８に転送され、モニタプログラム上でロード命令を使用してそのパラメータを読み出すことができる。
【００４４】
８５はＭＯＮ＿ＤＡＴＡレジスタ（第３のレジスタ）であり、このＭＯＮ＿ＤＡＴＡレジスタ８５は、デバッグモード時にＪＴＡＧインタフェース端子６１経由でモニタプログラムを実行する場合に、実行結果をデバッグツール５２に出力するインタフェースとなる３２ビットのレジスタである。モニタプログラム上でストア命令を使用してモニタコード供給機能６６のＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９に書き込みを行うと、その値がＭＯＮ＿ＤＡＴＡレジスタ８５に転送され、ＪＴＡＧインタフェース端子６１経由でデバッグツール５２から読み出すことができる。
【００４５】
８６はＭＯＮ＿ＡＣＣＥＳＳレジスタ（第２のレジスタ）であり、このＭＯＮ＿ＡＣＣＥＳＳレジスタ８６は、デバッグモード時にＪＴＡＧインタフェース端子６１経由でデバッグツール５２から供給されるモニタプログラムを実行する場合に、アクセス制御情報を設定／格納する４ビットのレジスタである。以下に、各ビットの機能を示す。
ｂｉｔ０  ＭＮＳＴＡＲＴ  モニタコード供給開始ビット（読み出し／書き込み可）
１：命令コード設定済み
０：命令コード未設定
“１”を設定することにより、命令コードバッファ８７に有効な命令コードが設定されたことを示す。すなわち、モニタコード供給機能６６における命令フェッチ要求を受け付けるようになる。
ｂｉｔ１  ＭＮＤＴＶＬＤ  ＦｒｏｎｔＭＯＮ＿ＤＡＴＡ有効ビット（読み出し専用）
１：ＦｒｏｎｔＭＯＮ＿ＤＡＴＡ有効（ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９への書き込みがあり、かつ、ＭＯＮ＿ＤＡＴＡレジスタ８５は未参照）
０：ＦｒｏｎｔＭＯＮ＿ＤＡＴＡ無効（ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９への書き込みがない、またはＭＯＮ＿ＤＡＴＡレジスタ８５を参照した後）
このビットは、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９への書き込みがあった時、“１”にセットされる。このビットは、以下の条件でゼロクリアされる。
・ＭＯＮ＿ＤＡＴＡレジスタ８５をアクセスした時
・デバッグモードでのＲＴＥ命令実行時
・デバッグ制御部のリセット時（デバッグリセット）
ｂｉｔ２  ＭＮＰＲＭＶＬＤ  ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭ有効ビット（読み出し専用）
１：ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭ有効（ＭＯＮ＿ＰＡＲＡＭレジスタ８４は設定済みであるが、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８が未だ読み出されていない）
０：ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭ無効（ＭＯＮ＿ＰＡＲＡＭレジスタ８４が設定されていないか、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８が読み出された後）
このビットは、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８への設定が行われた時に“１”がセットされる。このビットは、以下の条件でゼロクリアされる。
・ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８に対して読み出しがあった時
・デバッグモードでのＲＴＥ命令実行時
・デバッグ制御部のリセット時（デバッグリセット）
ｂｉｔ３  ＭＮＣＤＢＵＳＹ  ＭＯＮ＿ＣＯＤＥビジービット（読み出し専用）
１：ＭＯＮ＿ＣＯＤＥへの設定不可
０：ＭＯＮ＿ＣＯＤＥへの設定可
このビットは、次の命令コードをＭＯＮ＿ＣＯＤＥレジスタ８３に設定してもよいかどうかを示すビットである。このビットは、以下のような２つの意味がある。
・ＭＯＮ＿ＣＯＤＥレジスタ８３から命令コードバッファ８７への転送中＝“１”、転送完了＝“０”
・命令コードバッファ８７にフェッチされていない命令コードがある＝“１”、ない＝“０”
このビットは、以下の条件で“１”にセットされる。
・ＭＯＮ＿ＣＯＤＥレジスタ８３をアクセスした時
・ＭＮＳＴＡＲＴビットに“１”をセットした時
このビットは、以下の条件でゼロクリアされる。
・ＭＯＮ＿ＣＯＤＥレジスタ８３に書き込んだ値が命令コードバッファ８７に転送された時
・命令コードバッファ８７に格納されている命令が全てＣＰＵ５３によってフェッチされた時（注１）
・デバッグモードでのＲＴＥ命令実行時
・デバッグ制御部のリセット時（デバッグリセット）（注１）
命令コードバッファ８７の先頭のワードに対して、２回目の命令フェッチ要求が発生した時を「命令コードバッファ８７の全ての命令コードをフェッチした」と判断する。例えば、命令コードバッファ８７の２ワード目に分岐命令があった場合には、３ワード目、４ワード目に命令コードが設定されていても、２ワード目の分岐命令による分岐先の命令フェッチ要求が、命令コードバッファ８７に対して発生した時点で「全ての命令コードがフェッチされた」ことになる。なお、モニタコード供給機能６６で分岐を行う場合には「必ず分岐先を命令コードバッファ８７の先頭アドレスにしなくてはならない」という制限がデバッグツール５２に対して要求されているものとする。すなわち、デバッグツール５２がＭＯＮ＿ＣＯＤＥレジスタ８３に設定する分岐命令の分岐先アドレスは常に４ワード境界上のアドレス（アドレスの下位４ビット[２８：３１]が“００００”）にする必要がある。この制限によって、モニタコード供給機能６６で分岐した場合には、必ず命令コードバッファ８７の１ワード目に対する命令フェッチ要求になることが保証される。
【００４６】
また、モニタコード供給機能６６において、８７は上述した命令コードバッファ（バッファ）であり、この命令コードバッファ８７は、４ワードで構成され、ＪＴＡＧ制御部６５のＭＯＮ＿ＣＯＤＥレジスタ８３の内容が転送される。命令コードバッファ８７は、図４における（Ｈ’ＦＦＦＦ９０００〜Ｈ’ＦＦＦＦ９ＦＦＦ）にマッピングされており、どのワードが選択されるかは、アドレスの下位２ビット［２８：２９］で決定される。
【００４７】
８８はＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ（第６のレジスタ）であり、このＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８は、デバッグツール５２から供給されるパラメータを受け渡しするための３２ビットのレジスタである。ＪＴＡＧ制御部６５のＭＯＮ＿ＰＡＲＡＭレジスタ８４の内容がこのＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８に転送される。
【００４８】
８９はＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ（第５のレジスタ）であり、このＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９は、実行結果をデバッグツール５２に受け渡しするための３２ビットのレジスタである。このＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９の内容がＪＴＡＧ制御部６５のＭＯＮ＿ＤＡＴＡレジスタ８５に転送される。
【００４９】
さらに、ＪＴＡＧ制御部６５において、９１はＭＯＮ＿ＣＯＤＥアクセス検出部（第１のアクセス検出部）であり、このＭＯＮ＿ＣＯＤＥアクセス検出部９１は、ＭＯＮ＿ＣＯＤＥレジスタ８３に対するアクセスがあった時に“１”のＭＯＮ＿ＣＯＤＥアクセスＡ信号を生成し、ＭＯＮ＿ＣＯＤＥアクセスＣ信号が返ってくると、そのＭＯＮ＿ＣＯＤＥアクセスＣ信号の立上りエッジで“０”を生成するものである。生成された信号は、ＭＮＣＤＢＵＳＹビット制御部９３およびモニタコード供給機能６６に出力される。
９２はＭＮＳＴＡＲＴビット“１”セット検出部（命令コード設定済信号検出部）であり、このＭＮＳＴＡＲＴビット“１”セット検出部９２は、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＳＴＡＲＴビットに対する“１”が書き込まれた時に“１”のスタート要求Ａ信号を生成し、スタート要求Ｃ信号が返ってくると、そのスタート要求Ｃ信号の立上りエッジで“０”を生成するものである。生成された信号は、ＭＮＣＤＢＵＳＹビット制御部９３およびモニタコード供給機能６６に出力される。
【００５０】
９３はＭＮＣＤＢＵＳＹビット制御部（第１の保持領域制御部）であり、このＭＮＣＤＢＵＳＹビット制御部９３は、デバッグモジュールリセット信号でＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＣＤＢＵＳＹビットをゼロクリアし、ＭＯＮ＿ＣＯＤＥレジスタ８３に対するアクセスが検出されるか、ＭＮＳＴＡＲＴビットに“１”セットが検出されれば、ＭＮＣＤＢＵＳＹビットに“１”をセットし、ＭＯＮ＿ＣＯＤＥアクセスＣ信号が“１”になるか、スタート要求Ｃ信号が“１”になると、ＭＮＣＤＢＵＳＹビットにはバッファバリッド信号の値を入力し、上記以外は値を保持するものである。
【００５１】
９４はＭＯＮ＿ＰＡＲＡＭアクセス検出部（第３のアクセス検出部）であり、このＭＯＮ＿ＰＡＲＡＭアクセス検出部９４は、ＭＯＮ＿ＰＡＲＡＭレジスタ８４に対するアクセスがあった時に“１”のＭＯＮ＿ＰＡＲＡＭアクセスＡ信号を生成し、ＭＯＮ＿ＰＡＲＡＭアクセスＣ信号が返ってくると、そのＭＯＮ＿ＰＡＲＡＭアクセスＣ信号の立上りエッジで“０”を生成するものである。生成された信号は、ＭＮＰＲＭＶＬＤビット制御部９５およびモニタコード供給機能６６に出力される。
【００５２】
９５はＭＮＰＲＭＶＬＤビット制御部（第３の保持領域制御部）であり、このＭＮＰＲＭＶＬＤビット制御部９５は、デバッグモジュールリセット信号でＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＰＲＭＶＬＤビットをゼロクリアし、ＭＯＮ＿ＰＡＲＡＭレジスタ８４に対するアクセスが検出されれば、ＭＮＰＲＭＶＬＤビットに“１”をセット、ＭＯＮ＿ＰＡＲＡＭアクセスＣ信号が“１”になると、ＭＮＰＲＭＶＬＤビットにはＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号の値を入力し、上記以外は値を保持するものである。
【００５３】
９６はＭＯＮ＿ＤＡＴＡアクセス検出部（第２のアクセス検出部）であり、このＭＯＮ＿ＤＡＴＡアクセス検出部９６は、ＭＯＮ＿ＤＡＴＡレジスタ８５に対するアクセスがあった時に“１”のＭＯＮ＿ＤＡＴＡアクセスＡ信号を生成し、ＭＯＮ＿ＤＡＴＡアクセスＣ信号が返ってくると、そのＭＯＮ＿ＤＡＴＡアクセスＣ信号の立上りエッジで“０”を生成するものである。生成された信号は、ＭＮＤＴＶＬＤビット制御部９７およびモニタコード供給機能６６に出力される。
【００５４】
９７はＭＮＤＴＶＬＤビット制御部（第２の保持領域制御部）であり、このＭＮＤＴＶＬＤビット制御部９７は、デバッグモジュールリセット信号でＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＤＴＶＬＤビットをゼロクリア、ＭＯＮ＿ＤＡＴＡレジスタ８５に対するアクセスが検出されれば、ＭＮＤＴＶＬＤビットに“１”をセット、ＭＯＮ＿ＤＡＴＡアクセスＣ信号が“１”になると、ＭＮＤＴＶＬＤビットにはＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号の値を入力し、上記以外は値を保持するものである。
１００ａ〜１００ｎはＴＣＫクロックの立上りエッジでサンプリングするフリップフロップ回路である。
【００５５】
モニタコード供給機能６６において、１０１ａ〜１０１ｎはＣＬＫクロックの立上りエッジでサンプリングするフリップフロップ回路であり、フリップフロップ回路１００ａ〜１００ｎとフリップフロップ回路１０１ａ〜１０１ｎの２段構成にすることで、ＴＣＫクロックに同期した信号をＣＬＫクロックに同期した信号に変更したり、逆にＣＬＫクロックに同期した信号をＴＣＫクロックに同期した信号に変更している。
１０２ｂ，１０３ｂはＭＯＮ＿ＣＯＤＥアクセス信号系のフリップフロップ回路（第１のアクセス検出信号伝送部）およびＡＮＤ回路であり、ＡＮＤ回路１０３ｂからはＭＯＮ＿ＣＯＤＥアクセスＢ信号が出力され、また、フリップフロップ回路１０２ｂからはＭＯＮ＿ＣＯＤＥアクセスＣ信号が、フリップフロップ回路１０１ｃ，１００ｃを通じてＪＴＡＧ制御部６５に出力される。
１０２ｄ，１０３ｄはスタート要求信号系のフリップフロップ回路（命令コード設定済信号伝送部）およびＡＮＤ回路であり、ＡＮＤ回路１０３ｄからはスタート要求Ｂ信号が出力され、また、フリップフロップ回路１０２ｄからはスタート要求Ｃ信号が、フリップフロップ回路１０１ｅ，１００ｅを通じてＪＴＡＧ制御部６５に出力される。
１０２ｈ，１０３ｈはＭＯＮ＿ＰＡＲＡＭアクセス信号系のフリップフロップ回路（第３のアクセス検出信号伝送部）およびＡＮＤ回路であり、ＡＮＤ回路１０３ｈからはＭＯＮ＿ＰＡＲＡＭアクセスＢ信号が出力され、また、フリップフロップ回路１０２ｈからはＭＯＮ＿ＰＡＲＡＭアクセスＣ信号が、フリップフロップ回路１０１ｉ，１００ｉを通じてＪＴＡＧ制御部６５に出力される。
１０２ｌ，１０３ｌはＭＯＮ＿ＤＡＴＡアクセス信号系のフリップフロップ回路（第２のアクセス検出信号伝送部）およびＡＮＤ回路であり、ＡＮＤ回路１０３ｌからはＭＯＮ＿ＤＡＴＡアクセスＢ信号が出力され、また、フリップフロップ回路１０２ｌからはＭＯＮ＿ＤＡＴＡアクセスＣ信号が、フリップフロップ回路１０１ｍ，１００ｍを通じてＪＴＡＧ制御部６５に出力される。
【００５６】
１１１はバッファ入力制御部（入力制御部）であり、このバッファ入力制御部１１１は、ＭＯＮ＿ＣＯＤＥアクセスＢ信号が“１”の時にＭＯＮ＿ＣＯＤＥ出力Ｂ信号を命令コードバッファ８７に入力する。どのエントリに入力するかは入力ポインタの値（０〜３）に従う。入力ポインタは、デバッグモジュールリセット信号、スタート要求Ｂ信号のいずれかが“１”でゼロクリアし、ＭＯＮ＿ＣＯＤＥアクセスＢ信号が“１”の時に＋１し、上記以外では値を保持するものである。
【００５７】
１１２はバッファ出力制御部（出力制御部）であり、このバッファ出力制御部１１２は、命令コードバッファ８７のどのエントリを出力するかを制御する。アドレス［２８：２９］の値に応じて出力するエントリを選択する。アドレス［２８：２９］＝“００”なら＃０エントリ、“０１”なら＃１エントリ、“１０”なら＃２エントリ、“１１”なら＃３エントリを出力、ただし、「アドレス［２８：２９］＝“００”かつバッファバリッド信号が無効である時」、または、「アドレス［２８：２９］＝“００”かつ分岐／先読み信号が“０”（＝先読み）である時」は、自身への分岐命令を出力するものである。
【００５８】
１１３はバッファバリッド制御部（第１のバリッド制御部）であり、このバッファバリッド制御部１１３は、命令コードバッファ８７の内容が有効である（＝１）か無効である（＝０）かを示すバッファバリッド信号を生成する。生成条件は、デバッグモジュールリセット信号およびユーザモード復帰信号のいずれかが“１”の時にゼロクリアし、スタート要求Ｂ信号が“１”の時に“１”にセットし、バッファリード要求信号が“１”かつアドレス［２８：２９］＝“００”かつ分岐／先読み信号が“１”（＝分岐）の時にゼロクリアし、上記以外では値を保持するものである。
【００５９】
１１４はＭＯＮ＿ＰＡＲＡＭバリッド制御部（第３のバリッド制御部）であり、このＭＯＮ＿ＰＡＲＡＭバリッド制御部１１４は、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の内容が有効である（＝１）か無効である（＝０）かを示すＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号を生成する。生成条件は、デバッグモジュールリセット信号、ユーザモード復帰信号、およびＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭリード要求信号のいずれかが“１”の時にゼロクリアし、ＭＯＮ＿ＰＡＲＡＭアクセスＢ信号が“１”の時に“１”にセットし、上記以外では値を保持するものである。
【００６０】
１１５はＭＯＮ＿ＤＡＴＡバリッド制御部（第２のバリッド制御部）であり、このＭＯＮ＿ＤＡＴＡバリッド制御部１１５は、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９の内容が有効である（＝１）か無効である（＝０）かを示すＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号を生成する。生成条件は、デバッグモジュールリセット信号、ユーザモード復帰信号、およびＭＯＮ＿ＤＡＴＡアクセスＢ信号のいずれかが“１”の時にゼロクリアし、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡライト要求信号が“１”の時に“１”にセットし、上記以外では値を保持するものである。
【００６１】
１１６は内部バスインタフェース部であり、この内部バスインタフェース部１１６は、モニタコード供給機能６６の内部バスアクセスを制御するものであり、以下の機能を有する。
・内部バスプロトコル制御  内部バスからのアクセス要求信号とリード／ライト要求信号を受けて、アクセス完了を示すアクセス終了信号を返す機能。
・出力制御  命令コードバッファ８７の出力データ、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の出力データをデータバス５９ｂ上に出力する機能。
・入力制御  データバス５９ｂの値を入力し、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９に出力する機能。
・アドレスデコード  命令コードバッファ８７へのリード要求を示すバッファリード要求信号、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９へのライト要求を示すＦｒｏｎｔＭＯＮ＿ＤＡＴＡライト要求信号、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８へのリード要求を示すＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭリード要求信号を生成する機能。
【００６２】
次に動作について説明する。
上記図５の構成図を参照しながら動作を説明する。
（１）命令コードバッファへの設定
Ａ．ＭＯＮ＿ＣＯＤＥレジスタから命令コードバッファへの転送
▲１▼ＭＯＮ＿ＣＯＤＥレジスタへの書き込み
・デバッグツール５２がＪＴＡＧインタフェース端子６１を使用してシリアルにＭＯＮ＿ＣＯＤＥレジスタ８３に命令コードを書き込む。
・ＭＯＮ＿ＣＯＤＥレジスタ８３の出力であるＭＯＮ＿ＣＯＤＥ出力Ａ信号は、フリップフロップ回路１００ａ，１０１ａを経てモニタコード供給機能６６に伝わり、ＣＬＫ同期のＭＯＮ＿ＣＯＤＥ出力Ｂ信号となる。
▲２▼ＭＯＮ＿ＣＯＤＥレジスタへのアクセス検出
・ＭＯＮ＿ＣＯＤＥアクセス検出部９１は、命令レジスタ８２の値とＴＡＰコントローラ８１の状態からＭＯＮ＿ＣＯＤＥレジスタ８３へのアクセスがあったことを検出する。そして、ＭＯＮ＿ＣＯＤＥアクセスＡ信号を“１”にする。
▲３▼命令コードバッファへの書き込み
・ＭＯＮ＿ＣＯＤＥアクセスＡ信号は、フリップフロップ回路１００ｂ，１０１ｂを経てモニタコード供給機能６６に伝わり、ＣＬＫ同期の信号となり、さらに、フリップフロップ回路１０２ｂ、ＡＮＤ回路１０３ｂによって、ＭＯＮ＿ＣＯＤＥアクセスＡ信号が“０”から  “１”へ変化した時に１ＣＬＫ分だけ“１”となるＭＯＮ＿ＣＯＤＥアクセスＢ信号が生成される。
・バッファ入力制御部１１１により、ＭＯＮ＿ＣＯＤＥアクセスＢ信号が“１”の間にＭＯＮ＿ＣＯＤＥ出力Ｂ信号が命令コードバッファ８７に書き込まれる。この時書き込まれるエントリは、入力ポインタの値（０〜３）が示すエントリとなる。最初の入力ポインタの値は“０”で、命令コードバッファ８７への書き込み後、入力ポインタの値は＋１される。
上記の手順を繰り返すことによって、命令コードバッファ８７に最大４エントリ分まで命令コードを設定することができる。デバッグツール５２は、複数の命令コードを設定する場合、次の命令コードをＭＯＮ＿ＣＯＤＥレジスタ８３に設定してもよいかどうかをＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＣＤＢＵＳＹビットの値によって知ることができる。ＭＯＮ＿ＣＯＤＥレジスタ８３の値が命令コードバッファ８７に転送されるとＭＮＣＤＢＵＳＹビットの値が“０”になって、デバッグツール５２から次の命令コードをＭＯＮ＿ＣＯＤＥレジスタ８３に設定してもよいことを示す。このＭＮＣＤＢＵＳＹビットの制御を以下に示す。
【００６３】
Ｂ．命令コード設定時のデバッグツールとのハンドシェイク制御
▲１▼デバッグツールによるＭＯＮ＿ＣＯＤＥレジスタの設定でＭＮＣＤＢＵＳＹビットの“１”セット
・ＭＮＣＤＢＵＳＹビット制御部９３では、ＭＯＮ＿ＣＯＤＥアクセスＡ信号が“１”になると、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＣＤＢＵＳＹビットに“１”をセットする。
・ＭＮＣＤＢＵＳＹビットが“１”であることは、ＭＯＮ＿ＣＯＤＥレジスタ８３にセットした命令コードがまだ命令コードバッファ８７に転送されていないことを示している。
・デバッグツール５２は、ＭＯＮ＿ＣＯＤＥレジスタ８３への設定を行なった後、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６をアクセスしてＭＮＣＤＢＵＳＹビットの値を確認し、“１”である間は次の命令コードの設定を行わない。
▲２▼命令コードバッファへの転送完了でＭＮＣＤＢＵＳＹビットの“０”クリア
・モニタコード供給機能６６は、ＭＯＮ＿ＣＯＤＥアクセスＡ信号がモニタコード供給機能６６に伝わったことを示す信号として、フリップフロップ回路１０２ｂを経たＭＯＮ＿ＣＯＤＥアクセスＣ信号をＪＴＡＧ制御部６５に返す。
・ＭＮＣＤＢＵＳＹビット制御部９３では、ＭＯＮ＿ＣＯＤＥアクセスＣ信号が“１”になると、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＣＤＢＵＳＹビットにバッファバリッド信号の値が設定されるように制御する。命令コード設定時のバッファバリッド信号は“０”となっているので、実際にはＭＮＣＤＢＵＳＹビットは“０”にクリアされる。
・ＭＮＣＤＢＵＳＹビットが“０”であることは、ＭＯＮ＿ＣＯＤＥレジスタ８３にセットした命令コードが命令コードバッファ８７へ転送されたことを示している。
・デバッグツール５２は、ＭＯＮ＿ＣＯＤＥレジスタ８３への設定を行なった後、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６をアクセスしてＭＮＣＤＢＵＳＹビットの値を確認し、“０”になれば次の命令コードの設定を行う。
・ＭＮＣＤＢＵＳＹビットの値をＢ−▲１▼で強制的に“１”にセットし、その後、ＭＯＮ＿ＣＯＤＥアクセスＣ信号が返ってきてからバッファバリッド信号の値が設定されるように制御するのは、ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合のための対策である。ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合は、ＭＯＮ＿ＣＯＤＥレジスタ８３に設定された値が命令コードバッファ８７まで転送されるのも非常に遅くなる。このため、ＭＯＮ＿ＣＯＤＥレジスタ８３から命令コードバッファ８７への転送と同じように、モニタコード供給機能６６に転送されるＭＯＮ＿ＣＯＤＥアクセスＣ信号を使用して、ＭＯＮ＿ＣＯＤＥレジスタ８３の値が命令コードバッファ８７に転送し終わったかどうかを判断している。ＭＯＮ＿ＣＯＤＥアクセスＣ信号がＪＴＡＧ制御部６５に返ってこないうちは、ＭＯＮ＿ＣＯＤＥレジスタ８３の値も命令コードバッファ８７にまだ到達していないものとしてＭＮＣＤＢＵＳＹビットを強制的に“１”にし、デバッグツール５２が次の命令コードを設定するのを防いでいる。
図６は命令コードバッファへの設定動作時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャート、図７は命令コードバッファへの設定動作時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【００６４】
（２）ＣＰＵによる命令コードの実行
Ａ．命令コードバッファに設定された命令コードの実行
▲１▼ＭＮＳＴＡＲＴビットへの“１”書き込み
・（１）の手順で命令コードを命令コードバッファ８７に設定し終わると、デバッグツール５２は、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＳＴＡＲＴビットに“１”を書き込む。
▲２▼ＭＮＳＴＡＲＴビットに“１”がセットされたことを検出
・ＭＮＳＴＡＲＴビット“１”セット検出部９２、命令レジスタ８２の値、ＴＡＰコントローラ８１の状態およびＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＳＴＡＲＴビットの値からＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＳＴＡＲＴビットに“１”が書き込まれたことを検出する。そして、スタート要求Ａ信号を“１”にする。
▲３▼命令コードバッファの値を読み出し可能にする
・スタート要求Ａ信号は、フリップフロップ回路１００ｄ，１０１ｄを経てモニタコード供給機能６６に伝わり、ＣＬＫ同期の信号となり、さらに、フリップフロップ回路１０２ｄ、ＡＮＤ回路１０３ｄによって、スタート要求Ａ信号が“０”から“１”へ変化した時に１ＣＬＫ分だけ“１”となるスタート要求Ｂ信号が生成される。
・バッファ入力制御部１１１では、スタート要求Ｂ信号が“１”になると、入力ポインタの値を“０”に初期化する。これにより、ＣＰＵ５３による命令フェッチが終了した後、デバッグツール５２が新たな命令コードを設定する場合には、命令コードバッファ８７にはエントリ＃０から設定が行われる。
・バッファバリッド制御部１１３では、スタート要求Ｂ信号が“１”になると、バッファバリッド信号を“１”にする。これにより、命令コードバッファ８７の命令コードが読み出し可能になったことを示している。
▲４▼命令コードバッファの出力制御
・命令コードバッファ８７からどのエントリの命令コードを出力するかはバッファ出力制御部１１２で行う。
・アドレス［２８：２９］の値に応じて出力するエントリを選択する。すなわち、アドレス［２８：２９］  ＝“００”ならエントリ＃０、“０１”ならエントリ＃１、“１０”ならエントリ＃２、“１１”ならエントリ＃３を出力する。
・ただし、アドレス［２８：２９］  ＝“００”の場合に、バッファバリッド信号が“０”もしくは分岐／先読み信号が“０”（＝先読み）である時は、ＣＰＵ５３からの命令フェッチ要求に対して「自分自身への分岐命令」の命令コードを内部バスインタフェース部１１６に出力する。
【００６５】
以下に、ＣＰＵ５３からの命令フェッチ要求に対する処理について詳細に説明する。
▲４▼−ａ．デバッグ事象発生時のＣＰＵの命令フェッチ要求
・ＣＰＵ５３はデバッグ事象が発生するとＨ’ＦＦＦＦ９０００番地に分岐する。この時、ＣＰＵ５３はバス制御回路５８に対して命令フェッチ要求を出す。バス制御回路５８がＣＰＵ５３からの要求を受け付けると、ＣＰＵ５３とバス制御回路５８はモニタコード供給機能６６に対して次の信号を出力する。
ＣＰＵから出力される値
・アドレスバス  ：Ｈ’ＦＦＦＦ９０００
・分岐／先読み  ：“１”（＝分岐）
バス制御部から出力される値
・アクセス要求  ：“１”
・リード／ライト  ：“１”（＝リード）
▲４▼−ｂ命令コードバッファに命令コードが未設定の場合の処理
・モニタコード供給機能６６の内部バスインタフェース部１１６は、アドレスをデコードして命令コードバッファ８７へのリード要求であることを検出し、バッファリード要求信号を“１”にする。
・バッファバリッド信号が“０”の場合は、命令コードバッファ８７からの出力は「自分自身への分岐命令」となる。内部バスインタフェース部１１６は、バス制御回路５８に対して次の信号を出力する。
・データバス  ：自分自身への分岐命令
・アクセス終了  ：“１”
ＣＰＵ５３は「自分自身への分岐命令」を受け取る。
▲４▼−ｃ命令コードの先読み
ＣＰＵ５３は命令の先読み（命令プリフェッチ）を行なうため、引き続きＣＰＵ５３からＨ’ＦＦＦＦ９００４番地への命令フェッチ要求がバス制御部８０に対して出力される。バス制御回路５８がＣＰＵ５３からの要求を受け付けるとＣＰＵ５３とバス制御回路５８は次の信号を出力する。
ＣＰＵ５３から出力される値
・アドレスバス  ：Ｈ’ＦＦＦＦ９００４
・分岐／先読み  ：“０”（＝先読み）
バス制御回路５８から出力される値
・アクセス要求  ：“１”
・リード／ライト  ：“１”  （＝リード）
・この命令フェッチ要求に対して、モニタコード供給機能６６は▲４▼−ｂと同様の動作を行なう。ただし、バッファ出力制御部１１２はアドレス［２８：２９］の値が“０１”なので、命令コードバッファ８７のエントリ＃１を選択し、この値がデータバス５９ｂ上に出力される。ＣＰＵ５３は、このデータバス５９ｂ上の命令を受け取る。
・こうして、引き続きＨ’ＦＦＦＦ９００８、Ｈ’ＦＦＦＦ９００Ｃ番地への命令プリフェッチ要求が続き、ＣＰＵ５３はモニタコード供給機能６６からエントリ＃２の値、エントリ＃３の値を受け取る。
・さらに引き続いてＨ’ＦＦＦＦ９０１０番地への命令プリフェッチ要求が続いた場合には、モニタコード供給機能６６は▲４▼−ｂと同様「自分自身への分岐命令」をデータバス５９ｂに出力する。
・なお、これらの命令プリフェッチ動作は▲４▼−ｂでＣＰＵ５３が受け取った「自分自身への分岐命令」が実行されるまで続き、命令プリフェッチ要求の回数は、ＣＰＵ５３やバスの状態によって変化する。
▲４▼−ｄ自分自身への分岐命令の実行
・受け取った「自分自身への分岐命令」が実行されると、ＣＰＵ５３は再びＨ’ＦＦＦＦ９０００番地への命令フェッチ要求を出し、▲４▼−ａの処理に戻る。この時、▲４▼−ｃの先読みで受け取っていた命令コードはすべてキャンセルとなり実行されることはない。
・こうして、モニタコード供給機能６６のバッファバリッド信号が“１”にならない間は、▲４▼−ａ〜ｃの動作が繰り返される。この間命令フェッチ要求は毎回終了するのでＣＰＵ５３以外のものが要求を出した場合には内部バスを使用することも可能である。
▲４▼−ｅ．バッファバリッドが“１”になったときの動作
・Ａ−▲３▼の処理でバッファバリッド信号が“１”になった場合、モニタコード供給機能６６は、“１”になったタイミングに応じて次のように処理を行い、ＣＰＵ５３による命令実行が行われる。
・ＣＰＵ５３がデバッグ事象の発生でＨ’ＦＦＦＦ９０００番地に分岐するより前にバッファバリッド信号が“１”になった場合には、モニタコード供給機能６６からは次の信号を出力する。
・データバス  ：エントリ＃０の値
・アクセス終了  ：“１”
ＣＰＵ５３はエントリ＃０の命令を実行し、その後もエントリ＃１，＃２・・の命令フェッチが行われてＣＰＵ５３による実行が行われる。
・▲４▼−ｃの処理の途中でバッファバリッド信号が“１”になった場合、▲４▼−ｄまでは処理が進んで「自分自身への分岐命令」を実行する。それまでに受け取った命令はキャンセルされる。「自分自身への分岐命令」の実行による命令フェッチに対して、モニタコード供給機能６６からは次の信号を出力する。
・データバス  ：エントリ＃０の値
・アクセス終了  ：“１”
ＣＰＵ５３はエントリ＃０の命令を実行し、その後もエントリ＃１，＃２・・の命令フェッチが行われてＣＰＵ５３による実行が行われる。
＜命令プリフェッチ動作による誤動作の防止機能＞
上記の▲４▼−ｃの処理の途中でバッファバリッド信号が“１”になった場合の処理の中で、Ｈ’ＦＦＦＦ９０１０番地への命令プリフェッチ要求が発生した時、分岐／先読み信号の値が“０”（＝先読み）である場合には「自分自身への分岐命令」を出力するよう制御される。そして、この「自分自身への分岐命令」実行後から命令コードバッファ８７の命令を実行することになる。もし、分岐／先読み信号の値に応じて制御していなければ、Ｈ’ＦＦＦＦ９０１０番地への命令プリフェッチ要求に対してエントリ＃０の命令コードを出力してしまう。そうなると、エントリ＃０の命令コードは実行すべきであるにもかかわらず、先に▲４▼−ｂで受け取っている「自分自身への分岐命令」の実行によってキャンセルされてしまう。「自分自身への分岐命令」の実行による分岐先の命令フェッチの時には既にエントリ＃０の命令コードは読み出された後であるため、バッファバリッド信号は“０”となっており、モニタコード供給機能６６からは「自分自身への分岐命令」を出力することになり、結局エントリ＃０の命令コードは実行されないままとなる。
▲５▼バッファバリッド信号の“０”クリア
・バッファリード要求信号が“１”、かつ、アドレス［２８：２９］の値＝“００”、かつ、分岐／先読み信号が“１”（＝分岐）の時にバッファバリッド信号は“０”クリアされ、命令コードバッファ８７の命令コードが全てＣＰＵ５３によって読み出されたことを示す。
なお、一度、命令コードバッファ８７に設定した命令コードを何度も使用する場合は、デバッグツール５２から次の命令コードを転送することなく、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＳＴＡＲＴビットに“１”を書き込めば、ＣＰＵ５３によって命令コードバッファ８７に設定された同一の命令コードを読み出すことができ、このようにして複数回に渡って命令コードバッファ８７に保持された同一の命令コードをＣＰＵ５３から読み出すことができ、命令コードの設定の手間を省くことができる。
【００６６】
Ｂ．ＣＰＵによる命令実行時のデバッグツールとのハンドシェイク制御
▲１▼デバッグツールによるスタート要求でＭＮＣＤＢＵＳＹビットの“１”セット
・ＭＮＣＤＢＵＳＹビット制御部９３では、スタート要求Ａ信号が“１”になると、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＣＤＢＵＳＹビットに  “１”をセットする。
・ＭＮＣＤＢＵＳＹビットが“１”であることは、命令コードバッファ８７の全命令コードがまだＣＰＵ５３によって読み出しされていないことを示している。
・デバッグツール５２は、ＭＮＳＴＡＲＴビットへの“１”セットの後、ＭＮＣＤＢＵＳＹビットの値を確認し、“１”である間は次の命令コードの設定やスタート要求を行わない。
▲２▼ＣＰＵによる命令コードバッファ読み出し完了でＭＮＣＤＢＵＳＹビットの“０”クリア
・モニタコード供給機能６６は、スタート要求Ａ信号がモニタコード供給機能６６に伝わったことを示す信号として、スタート要求Ｃ信号をＪＴＡＧ制御部６５に返す。
・ＭＮＣＤＢＵＳＹビット制御部９３では、スタート要求Ｃ信号が“１”になると、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＣＤＢＵＳＹビットにバッファバリッド信号の値が設定されるよう制御する。
・バッファバリッド信号は、バッファバリッド制御部１１３によって次のように生成される。
ａ．デバッグツール５２によってＭＮＳＴＡＲＴビットに“１”がセットされると、Ａ−▲２▼〜▲３▼の処理によってスタート要求Ｂ信号が“１”になる。スタート要求Ｂ信号が“１”になるとバッファバリッド信号は“１”になり、有効な命令コードが命令コードバッファ８７に設定されていることを示している。
ｂ．この後、ＣＰＵ５３によって命令コードバッファ８７の読みだしが行われると、Ａ−▲５▼の処理によってバッファバリッド信号が“１”にクリアされ、命令コードバッファ８７の値がＣＰＵ５３によって全て読み出されたことを示す。
・デバッグツール５２は、ＭＮＳＴＡＲＴビットに“１”セットを行なった後、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６をアクセスしてＭＮＣＤＢＵＳＹビットの値を確認する。ＭＮＣＤＢＵＳＹビットが“１”であることは命令コードバッファ８７の命令コードがＣＰＵ５３によってすべて読み出されたことを示しており、次の命令コードの設定やスタート要求を行うことができる。
・ＭＮＣＤＢＵＳＹビットの値をＢ−▲１▼で強制的に“１”セットし、その後スタート要求Ｃ信号が返ってきてからバッファバリッド信号の値が設定されるように制御するのは、ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合のための対策である。ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合は、ＭＮＳＴＡＲＴビットへの“１”書きこみの後、バッファバリッド信号が“１”セットされるのが遅くなり、ＭＮＣＤＢＵＳＹビットチェック時にまだセットされていない可能性がある。そのため、ＭＮＳＴＡＲＴビットへの設定が行なわれると同時にＭＮＣＤＢＵＳＹビットを強制的に“１”セットしておき、バッファバリッド信号が命令コードバッファ８７の有効／無効が正しく反映できていることがわかってからＭＮＣＤＢＵＳＹビットにはバッファバリッド信号の値を反映するように制御している。
図８はＣＰＵによる命令コードの実行動作時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャート、図９はＣＰＵによる命令コードの実行動作時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【００６７】
（３）ＭＯＮ＿ＰＡＲＡＭレジスタ関連の動作
ＭＯＮ＿ＰＡＲＡＭレジスタ８４は、モニタプログラムの実行時に必要なデータをチップ外部のデバッグツール５２から与えるためのインタフェースとなるレジスタである。したがって、ＭＯＮ＿ＰＡＲＡＭレジスタ８４を使用する場合には、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８のリードを行なう命令を含んだモニタプログラムをＭＯＮ＿ＣＯＤＥレジスタ８３経由で実行させることになる。例えば、内蔵ＳＲＡＭ５６へのダウンロードを行なう場合に有効である。ダウンロードさせるデータをＭＯＮ＿ＰＡＲＡＭレジスタ８４経由で外部から与えておいてから次のようなプログラムを上記（１）（２）で述べたような手順でＣＰＵ５３に実行させるという処理を繰り返すことによってダウンロード機能を実現できる。
ＬＤ    Ｒ２，＠Ｒ０    レジスタ０が示す番地（＝Ｈ’ＦＦＦＦ８００４番地）をリードし、レジスタ２に格納する
ＳＴ    Ｒ２，＠Ｒ１    レジスタ２の内容をレジスタ１が示す番地（＝ダウンロード先）に書き込む
ＡＤＤ  Ｒ１，＃４      レジスタ１の値を＋４
ＢＲＡ                  命令バッファの先頭番地に分岐
※レジスタ０には予めＨ’ＦＦＦＦ８００４（＝ＭＯＮ＿ＰＡＲＡＭレジスタの番地）が、レジスタ１には予めダウンロード先の先頭アドレスがセットされているものとする。
【００６８】
ＭＯＮ＿ＰＡＲＡＭレジスタ関連の詳細な動作を以下に示す。
Ａ．ＭＯＮ＿ＰＡＲＡＭレジスタを使用したデバッグツールからＣＰＵへのデータの受け渡し
▲１▼デバッグツールによるＭＯＮ＿ＰＡＲＡＭレジスタへの書き込み
・デバッグツール５２がＪＴＡＧインタフェース端子６１を使用してＭＯＮ＿ＰＡＲＡＭ８４レジスタにシリアルにデータを書き込む。
・ＭＯＮ＿ＰＡＲＡＭレジスタ８４の出力であるＭＯＮ＿ＰＡＲＡＭ出力Ａ信号は、フリップフロップ回路１００ｇ，１０１ｇを経てモニタコード供給機能６６に伝わり、ＣＬＫ同期のＭＯＮ＿ＰＡＲＡＭ出力Ｂ信号となる。
▲２▼ＭＯＮ＿ＰＡＲＡＭレジスタへのアクセスを検出
・ＭＯＮ＿ＰＡＲＡＭアクセス検出部９４は、命令レジスタ８２の値とＴＡＰコントローラ８１の状態からＭＯＮ＿ＰＡＲＡＭレジスタ８４にアクセスがあったことを検出する。そして、ＭＯＮ＿ＰＡＲＡＭアクセスＡ信号を“１”にする。
▲３▼ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタへの書き込み
・ＭＯＮ＿ＰＡＲＡＭアクセスＡ信号は、フリップフロップ回路１００ｈ，１０１ｈを経てモニタコード供給機能６６に伝わり、ＣＬＫ同期の信号になる。さらに、フリップフロップ回路１０２ｈ、およびＡＮＤ回路１０３ｈによって、ＭＯＮ＿ＰＡＲＡＭアクセスＡ信号が“０”から“１”に変化した時に１ＣＬＫ分だけ“１”となるＭＯＮ＿ＰＡＲＡＭアクセスＢ信号が生成される。
・ＭＯＮ＿ＰＡＲＡＭアクセスＢ信号が“１”の時に、ＭＯＮ＿ＰＡＲＡＭ出力Ｂ信号がＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８に書き込まれる。
▲４▼ＣＰＵによる読み出し
・ＣＰＵ５３がＨ’ＦＦＦＦ８４０４番地のデータをリードする命令を実行すると、ＣＰＵ５３からバス制御回路５８にリード要求が出る。
・バス制御回路５８がＣＰＵ５３からのリード要求を受け付けると、ＣＰＵ５３とバス制御回路５８はモニタコード供給機能６６に対して次の値を出力する。
ＣＰＵから出力される値
・アドレスバス  ：Ｈ’ＦＦＦＦ８４０４
バス制御部から出力される値
・アクセス要求  ：“１”
・リード／ライト  ：“１”（＝リード）
・モニタコード供給機能６６の内部バスインタフェース回路１１６は、アドレスバス５９ａの値をデコードしてＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８へのリード要求であることを知り、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭリード要求信号を“１”にする。また、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の値をデータバス５９ｂに出力しアクセス終了信号を“１”にする。
・アクセス終了信号が“１”になるとＣＰＵ５３はデータバス５９ｂ上の値を取り込む。
なお、デバッグツール５２は、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の値がＣＰＵ５３によって読み出されたことをＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＰＲＭＶＬＤビットの値によって知ることができる。ＭＮＰＲＭＶＬＤビットの値が“１”になるとＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の値が読み出されたことを示している。このＭＮＰＲＭＶＬＤビットの制御を以下に示す。
【００６９】
Ｂ．ＭＯＮ＿ＰＡＲＡＭレジスタ使用時のハンドシェイク制御
▲１▼デバッグツールによるＭＯＮ＿ＰＡＲＡＭレジスタへの設定でＭＮＰＲＭＶＬＤビットの“１”セット
・ＭＮＰＲＭＶＬＤビット制御部９５では、ＭＯＮ＿ＰＡＲＡＭアクセス検出Ａ信号が“１”になると、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＰＲＭＶＬＤビットに“１”をセットする。
・ＭＮＰＲＭＶＬＤビットが“１”であることは、ＭＯＮ＿ＰＡＲＡＭレジスタ８４にセットしたデータがまだＣＰＵ５３によって読み出されていないことを示している。
・デバッグツール５２は、ＭＯＮ＿ＰＡＲＡＭレジスタ８４への設定を行なった後、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６をアクセスしてＭＮＰＲＭＶＬＤビットの値を確認し、“１”である間は次のデータの設定を行なわない。
▲２▼ＣＰＵによるＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタの読み出しでＭＮＰＲＭＶＬＤビットの“０”クリア
・モニタコード供給機能６６は、ＭＯＮ＿ＰＡＲＡＭアクセスＡ信号がモニタコード供給機能６６に伝わったことを示す信号として、ＭＯＮ＿ＰＡＲＡＭアクセスＣ信号をＪＴＡＧ制御部６５に返す。
・ＭＮＰＲＭＶＬＤビット制御部９５では、ＭＯＮ＿ＰＡＲＡＭアクセスＣ信号が“１”になると、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＰＲＭＶＬＤビットにＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号の値が設定されるよう制御する。
・ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号は、ＭＯＮ＿ＰＡＲＡＭバリッド制御部１１４によって次のように生成される。
ａ．デバッグツール５２によってＭＯＮ＿ＰＡＲＡＭレジスタ８４へのアクセスが行われると、Ａ−▲２▼〜▲３▼の処理によってＭＯＮ＿ＰＡＲＡＭアクセスＢ信号が“１”になる。ＭＯＮ＿ＰＡＲＡＭアクセスＢ信号が“１”になるとＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号は“１”にセットされ、有効なデータがＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８に設定されていることを示している。
ｂ．この後、ＣＰＵ５３によってＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の読み出しが行われると、Ａ−▲４▼の処理によってＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭリード要求が“１”になる。ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭリード要求が“１”になるとＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号は“０”にクリアされ、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の値が読み出されたことを示している。
・デバッグツール５２は、ＭＯＮ＿ＰＡＲＡＭレジスタ８４への設定を行なった後、ＭＯＮ＿ＡＣＣＥＳＳレジスタ８６をアクセスしてＭＮＰＲＭＶＬＤビットの値を確認し、“０”になることによってＭＯＮ＿ＰＡＲＡＭレジスタ８４に設定した値がＣＰＵ５３によって読み出されたことを知ることができる。
・ＭＮＰＲＭＶＬＤビットの値をＢ−▲１▼で強制的に“１”セットし、その後、ＭＯＮ＿ＰＡＲＡＭアクセスＣ信号が返ってきてからＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号の値が設定されるように制御するのは、ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合のための対策である。ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合は、ＭＯＮ＿ＰＡＲＡＭレジスタ８４への書き込みの後、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号が“１”セットされるのが遅くなり、次のＭＯＮ＿ＰＡＲＡＭレジスタ８４への設定のためのＭＮＰＲＭＶＬＤビットのチェック時にもまだセットされていない可能性がある。そのため、ＭＯＮ＿ＰＡＲＡＭレジスタ８４への設定が行なわれると同時にＭＮＰＲＭＶＬＤビットを強制的に“１”セットしておき、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号が次のＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８の有効／無効が正しく反映できていることがわかってからＭＮＰＲＭＶＬＤビットにはＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭバリッド信号の値を反映するように制御している。
図１０はＭＯＮ＿ＰＡＲＡＭレジスタ関連の動作時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャート、図１１はＭＯＮ＿ＰＡＲＡＭレジスタ関連の動作時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【００７０】
（４）ＭＯＮ＿ＤＡＴＡレジスタ関連の動作
ＭＯＮ＿ＤＡＴＡレジスタ８５は、モニタプログラムの実行で得られたデータをチップ外部のデバッグツール５２に受け渡すためのインタフェースとなるレジスタである。したがって、ＭＯＮ＿ＤＡＴＡレジスタ８５を使用する場合には、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９へのライトを行なう命令を含んだモニタプログラムをＭＯＮ＿ＤＡＴＡレジスタ８５経由で実行させることになる。例えば、１００番地のメモリのデータを読み出したい場合には、まず、次のようなプログラムを上記（１）（２）で述べたような手順でＣＰＵ５３に実行させ、その後でＭＯＮ＿ＤＡＴＡレジスタ８５の値を読み出す。
ＬＤＩ    Ｒ０，＃１００  “１００”をレジスタ０にセット
ＬＤ      Ｒ２，＠Ｒ０    レジスタ０が示す番地（＝１００番地）をリードし、レジスタ２に格納する
ＬＤＩ    Ｒ１，＃Ｈ’ＦＦＦＦ８０００
“Ｈ’ＦＦＦＦ８０００”（＝ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタの番地）をレジスタ１にセット
ＳＴ      Ｒ２，＠Ｒ１    レジスタ２の内容をレジスタ１が示す番地（＝Ｈ’ＦＦＦＦ８０００番地）に書き込む
ＭＯＮ＿ＤＡＴＡレジスタ関連の詳細な動作を以下に示す。
【００７１】
Ａ．ＭＯＮ＿ＤＡＴＡレジスタを使用したＣＰＵからデバッグツールへのデータの受け渡し
▲１▼ＣＰＵによる書き込み要求
・ＣＰＵ５３がＨ’ＦＦＦＦ８４００番地にデータをライトする命令を実行すると、ＣＰＵ５３からバス制御回路５８にライト要求が出る。
・バス制御回路５８がＣＰＵ５３からのライト要求を受け付けると、ＣＰＵ５３とバス制御回路５８はモニタコード供給機能６６に対して次の値を出力する。
ＣＰＵから出力される値
・アドレスバス  ：Ｈ’ＦＦＦＦ８４００
・データバス  ：書きこみデータ
バス制御部から出力される値
・アクセス要求  ：“１”
・リード／ライト  ：“０”（＝ライト）
▲２▼ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタへの書き込み
・モニタコード供給機能６６の内部バスインタフェース部１１６は、アドレスバス５９ａの値をデコードしてＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９へのライト要求であることを知り、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡライト要求信号を“１”にする。また、データバス５９ｂはＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９に接続されており、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡライト要求信号が“１”の間にデータバス５９ｂ上の書き込みデータがＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９に書き込まれる。
▲３▼ＭＯＮ＿ＤＡＴＡレジスタへの転送
・ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９の値は、フリップフロップ１０１ｋ，１００ｋを通ってＭＯＮ＿ＤＡＴＡレジスタ８５に転送される。
▲４▼デバッグツールによるＭＯＮ＿ＤＡＴＡレジスタの読み出し
・デバッグツール５２がＪＴＡＧインタフェース端子６１を使用してＭＯＮ＿ＤＡＴＡレジスタ８５の値をシリアルに読み出す。
なお、デバッグツール５２は、ＭＯＮ＿ＤＡＴＡレジスタ８５にＣＰＵ５３からの書き込みデータが設定されたことをＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＤＴＶＬＤビットの値によって知ることができる。ＭＮＤＴＶＬＤビットの値が“１”になるとＭＯＮ＿ＤＡＴＡレジスタ８５にデータが設定されたことを示している。このＭＮＤＴＶＬＤビットの制御を以下に示す。
【００７２】
Ｂ．ＭＯＮ＿ＤＡＴＡレジスタ使用時のハンドシェイク制御
▲１▼ＭＮＤＴＶＬＤビットの初期化
・ＭＮＤＴＶＬＤビットは、デバッグモジュール５４に対するリセットで“０”に初期化される。
▲２▼ＣＰＵによるＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタへの書き込みでＭＮＤＴＶＬＤビットに“１”セット
・ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９への書き込みが行なわれるとＦｒｏｎｔＭＯＮ＿ＤＡＴＡライト要求が“１”となる（Ａ−▲２▼の処理）。ＭＯＮ＿ＤＡＴＡバリッド制御部１１５ではこれを受けて、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号を“１”にする。これが、フリップフロップ１０１ｎ，１００ｎを通ってＭＮＤＴＶＬＤ制御部９７に伝わる。ＭＮＤＴＶＬＤ制御部９７ではこの信号をＭＯＮ＿ＡＣＣＥＳＳレジスタ８６のＭＮＤＴＶＬＤビットに設定する。つまり、ＭＮＤＴＶＬＤビットには“１”がセットされる。
・デバッグツール５２は、ＭＮＤＴＶＬＤビットが“１”になったことでＭＯＮ＿ＤＡＴＡレジスタ８５にデータが設定されたことを知り、この後、ＭＯＮ＿ＤＡＴＡレジスタ８５を読み出すことになる。
▲３▼デバッグツールによるＭＯＮ＿ＤＡＴＡレジスタの読み出しでＭＮＤＴＶＬＤビットを“０”クリア
・Ｂ−▲２▼の処理でデバッグツール５２がＭＯＮ＿ＤＡＴＡレジスタを読み出すと、ＭＯＮ＿ＤＡＴＡアクセス検出部９６は命令レジスタ８２の値とＴＡＰコントローラ８１の状態からＭＯＮ＿ＤＡＴＡレジスタ８５へのアクセスがあったことを検出し、ＭＯＮ＿ＤＡＴＡアクセスＡ信号を“１”にする。ＭＯＮ＿ＤＡＴＡアクセスＡ信号が“１”になるとＭＮＤＴＶＬＤビット制御部９７は、ＭＮＤＴＶＬＤビットの値を“０”にクリアする。
▲４▼ＭＯＮ＿ＤＡＴＡバリッド信号の“０”クリア
・ＭＯＮ＿ＤＡＴＡアクセスＡ信号は、フリップフロップ回路１００ｌ，１０１ｌを通ってモニタコード供給機能６６に伝わり、フリップフロップ回路１０２ｌ、ＡＮＤ回路１０３ｌによって、ＭＯＮ＿ＤＡＴＡアクセスＡ信号が“０”から“１”へ変化した時に１ＣＬＫ分だけ“１”となるＭＯＮ＿ＤＡＴＡアクセスＢ信号が生成される。ＭＯＮ＿ＤＡＴＡアクセスＢ信号が“１”になると、ＭＯＮ＿ＤＡＴＡバリッド制御部１１５はＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号を“０”にする。
・モニタコード供給機能６６に伝わったＭＯＮ＿ＤＡＴＡアクセスＡ信号はフリップフロップ回路１０２ｌを経て、ＭＯＮ＿ＤＡＴＡアクセスＣ信号としてＪＴＡＧ制御部６５に返っていく。これは、ＭＯＮ＿ＤＡＴＡアクセスＡ信号がモニタコード供給機能６６に伝わったことを示す信号である。ＭＯＮ＿ＤＡＴＡアクセスＣ信号が“１”になると、ＭＮＤＴＶＬＤビット制御部９７は、Ｂ−▲３▼の処理で“０”クリアしていたＭＮＤＴＶＬＤビットの値をＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号の値となるように制御する。この後、ＣＰＵ５３によってＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９への書き込みが発生するとＢ−▲２▼の処理に移り、ＭＮＤＴＶＬＤビットに“１”がセットされる。
・ＭＮＤＴＶＬＤビットの値をＢ−▲３▼で強制的に“０”クリアし、その後、ＭＯＮ＿ＤＡＴＡアクセスＣ信号が返ってきてからＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号の値が設定されるように制御するのは、ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合のための対策である。ＣＬＫクロックがＴＣＫクロックに比べて非常に遅い場合は、ＭＯＮ＿ＤＡＴＡレジスタ８５の読み出しの後、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号が“０”クリアされるのが遅くなり、次のＭＯＮ＿ＤＡＴＡレジスタ８５の読み出しのためのＭＮＤＴＶＬＤビットのチェック時にもまだクリアされていない可能性がある。そのため、ＭＯＮ＿ＤＡＴＡレジスタ８５が読み出されると同時にＭＮＤＴＶＬＤビットを強制的に“０”クリアしておき、ＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号が次のＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９の有効／無効が正しく反映できていることがわかってからＭＮＤＴＶＬＤビットにはＦｒｏｎｔＭＯＮ＿ＤＡＴＡバリッド信号の値を反映するように制御している。
図１２はＭＯＮ＿ＤＡＴＡレジスタ関連の動作時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャート、図１３はＭＯＮ＿ＤＡＴＡレジスタ関連の動作時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【００７３】
なお、この実施の形態１によれば、命令コードの転送に応じて命令コードバッファ８７の入力ポインタを自動的にインクリメントするバッファ入力制御部１１１を設けたが、ＭＯＮ＿ＣＯＤＥレジスタ８３に２ビットの保持領域を追加し、デバッグツール５２からは、そのＭＯＮ＿ＣＯＤＥレジスタ８３に命令コードと共にその命令コードが命令コードバッファ８７中のどのエントリ（＃０〜＃３）に保持されるか指定する領域指定コード（“００”＝＃０，“０１”＝＃１，“１０”＝＃２，“１１”＝＃３）を送り、バッファ入力制御部１１１は、命令コードバッファ８７の入力ポインタを、その命令コードの領域指定コードに応じて指定するようにしてもよい。この場合、デバッグツール５２から任意の命令コードバッファ８７中のエントリに命令コードを保持させることができる。
【００７４】
また、この実施の形態１によれば、ＣＰＵ５３による命令フェッチ時に、命令コードバッファ８７にまだ命令コードが設定されていない場合に、ＣＰＵ５３に現在のＰＣ値が進まないような分岐命令を出力するように制御するバッファ出力制御部１１２を設けたが、バッファバリッド制御部１１３が“０”のバッファバリッド信号を出力している時、すなわち、命令コードバッファ８７にまだ命令コードが設定されていない場合に、ＣＰＵ５３に“０”（無意）のアクセス終了信号を出力し、バッファバリッド制御部１１３が“１”のバッファバリッド信号を出力した時点、すなわち、命令コードバッファ８７に命令コードが設定された場合に、ＣＰＵ５３に“１”（有意）のアクセス終了信号を出力する内部バスインタフェース部１１６を設けてもよい。この場合は、命令コードバッファ８７に命令コードが設定されるまでの間のＣＰＵ５３の無駄な命令実行を無くすことができる。
【００７５】
さらに、この実施の形態１によれば、命令コードの伝送効率を高めるために命令コードバッファ８７を設けたが、命令コードバッファ８７は必須な構成要素ではなく、ＣＰＵ５３からは内部バスインタフェース部１１６を通じて直接にＭＯＮ＿ＣＯＤＥレジスタ８３から命令コードを読み出すようにしてもよい。
この場合は、バッファ入力制御部１１１、バッファ出力制御部１１２、およびバッファバリッド制御部１１３は、ＭＯＮ＿ＣＯＤＥレジスタ８３に対して設けるようにしてもよい。
さらに、この実施の形態１によれば、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８、およびＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９を設けたが、ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ８８、およびＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ８９は必須な構成要素ではなく、ＣＰＵ５３からは内部バスインタフェース部１１６を通じて直接にＭＯＮ＿ＰＡＲＡＭレジスタ８４からパラメータを読み出したり、直接にＭＯＮ＿ＤＡＴＡレジスタ８５にデータを設定するようにしてもよい。
この場合は、ＭＯＮ＿ＰＡＲＡＭバリッド制御部１１４、およびＭＯＮ＿ＤＡＴＡバリッド制御部１１５は、ＭＯＮ＿ＰＡＲＡＭレジスタ８４、およびＭＯＮ＿ＤＡＴＡレジスタ８５に対して設けるようにしてもよい。
【００７６】
以上のように、この実施の形態１によれば、ＪＴＡＧインタフェースに接続された各種レジスタ、およびバッファを設けるだけで、デバッグツールからのモニタプログラムをＣＰＵが実行することができ、構成規模を大型化することなく、高性能にデバッグ可能なマイクロコンピュータを得ることができる効果が得られる。
【００７７】
【発明の効果】
以上のように、この発明によれば、シリアルインタフェースを介してデバッグツールから入力されたデバッグプログラム中の命令コードを保持する第１のレジスタと、第１のレジスタに保持された命令コードに基づいて実行するＣＰＵとを備えるように構成したので、シリアルインタフェースに接続された第１のレジスタを設けるだけで、デバッグツールからのデバッグプログラムをＣＰＵが実行することができ、構成規模を大型化することなく、高性能にデバッグすることができる効果が得られる。
【００７８】
この発明によれば、第１のレジスタに保持された命令コードを入力して保持するバッファを備えるように構成したので、ＣＰＵがバッファに設定された命令コードを読み出している間に、デバッグツールから次の命令コードを第１のレジスタに設定することができ、命令コードの転送効率を高め、よって、デバッグ処理効率を高めることができる効果が得られる。
【００７９】
この発明によれば、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第１のレジスタに、領域指定コードを保持する保持領域を設け、第１のレジスタに保持された命令コードを領域指定コードに応じたバッファ中の保持領域に保持させる入力制御部を備えるように構成したので、バッファに複数の保持領域を設けることによって、命令コードの転送効率、およびデバッグ処理効率を高めることができると共に、デバッグツールからバッファ中の任意の保持領域に命令コードを保持させることができる効果が得られる。
【００８０】
この発明によれば、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第１のレジスタに保持された命令コードを命令コード毎に領域指定を増加させてバッファ中の保持領域に保持させる入力制御部を備えるように構成したので、バッファに複数の保持領域を設けることによって、命令コードの転送効率、およびデバッグ処理効率を高めることができると共に、デバッグツールから領域指定コードを転送する必要がなく、命令コードの設定を容易にすることができる効果が得られる。
【００８１】
この発明によれば、第１のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えるように構成したので、デバッグツールは、バリッド信号の無効に応じて次の命令コードの第１のレジスタへの転送タイミングを認識することができ、効率よく命令コードを設定することができる効果が得られる。
【００８２】
この発明によれば、第１のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、そのバリッド信号が無効を示す場合にＣＰＵに無意のアクセス終了信号を出力し、バリッド信号が有効を示す場合にＣＰＵに有意のアクセス終了信号を出力する内部バスインタフェース部とを備えるように構成したので、第１のレジスタに命令コードが設定されるまでの間のＣＰＵの無駄な命令実行を無くすことができる効果が得られる。
【００８３】
この発明によれば、第１のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、ＣＰＵからの命令フェッチ要求に対してそのバリッド信号が無効を示す場合にＣＰＵに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えるように構成したので、第１のレジスタに命令コードが設定されるまでの間はＣＰＵからアクセスされるバスを開放することができる効果が得られる。
【００８４】
この発明によれば、命令フェッチ要求が命令プリフェッチ要求である場合、または第１のバリッド制御部によって生成されたバリッド信号が無効を示す場合にＣＰＵに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えるように構成したので、命令プリフェッチ要求に対する誤動作を防止することができる効果が得られる。
【００８５】
この発明によれば、シリアルインタフェースから入力された命令コード設定済信号を保持する保持領域を有する第２のレジスタと、その保持領域に命令コード設定済信号が保持されているか検出する命令コード設定済信号検出部と、その命令コード設定済信号の保持が検出された場合にバッファに保持された命令コードの有効を示すバリッド信号を生成する第１のバリッド制御部とを備えるように構成したので、シリアルインタフェースから次の命令コードを転送することなく、命令コード設定済信号を転送すれば、バッファに保持された命令コードの有効を示すバリッド信号が生成され、バッファに保持された同一の命令コードを複数回に渡ってＣＰＵから読み出すことができ、命令コードの設定の手間を省くことができる効果が得られる。
【００８６】
この発明によれば、ＣＰＵからデータを書き込みすることが可能で、そのデータをシリアルインタフェースを介してデバッグツールから読み出し可能にした第３のレジスタを備えるように構成したので、ＣＰＵによって書き込まれたデータをデバッグツールから読み出すことができ、デバッグの作業効率を高めることができる効果が得られる。
【００８７】
この発明によれば、第３のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第２のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えるように構成したので、デバッグツールは、バリッド信号に応じて次のデータの読み出しタイミングを認識するすることができ、効率よくデータを読み出すことができる効果が得られる。
【００８８】
この発明によれば、シリアルインタフェースを介してデバッグツールから入力されたデータを保持する第４のレジスタと、第４のレジスタに保持されたデータを読み出すＣＰＵとを備えるように構成したので、デバッグツールからＣＰＵにデータを転送することができ、デバッグの作業効率を高めることができる効果が得られる。
【００８９】
この発明によれば、第４のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第３のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタとを備えるように構成したので、デバッグツールは、バリッド信号に応じて次のデータの第４のレジスタへの転送タイミングを認識することができ、効率よくデータを設定することができる効果が得られる。
【００９０】
この発明によれば、シリアルインタフェースとしてＪＴＡＧインタフェースを用いるように構成したので、バウンダリスキャンテストを行うＪＴＡＧインタフェースと共有化することができ、新たなシリアルインタフェースを設ける必要が無く、構成を簡単にすることができる効果が得られる。
【００９１】
この発明によれば、シリアルインタフェースおよび第１のレジスタを第１のクロックで動作し、バッファおよびＣＰＵをその第１のクロックとは互いに独立した第２のクロックで動作するように構成したので、デバッグツールとの転送を第１のクロックで一定速度に保ちながらＣＰＵの動作周波数を自由に設定することができる効果が得られる。
【００９２】
この発明によれば、第１のクロックで動作し、第１のレジスタへの命令コードが設定可能であるか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、第１のクロックで動作し、デバッグツールからの第１のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第１のアクセス検出部と、第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第１のアクセス検出信号伝送部と、第２のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、第１のクロックで動作し、第１のアクセス検出部から出力されたアクセス検出信号に応じて第２のレジスタの保持領域に設定不可能を示す信号を保持させると共に、第１のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に第１のバリッド制御部によって生成されたバリッド信号を保持させる第１の保持領域制御部とを備えるように構成したので、第１のクロックに対して第２のクロックが非常に遅かったり、逆に第１のクロックに対して第２のクロックが非常に速かったりしても、命令コードの設定時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【００９３】
この発明によれば、第１のクロックで動作し、バッファに命令コードが設定済であるか否かを示す信号を保持する保持領域を有する第２のレジスタと、第１のクロックで動作し、第２のレジスタの保持領域の命令コードの設定済の検出に応じて命令コード設定済信号を出力する命令コード設定済信号検出部と、第２のクロックで動作し、命令コード設定済信号の入力に応じて命令コード設定済承認信号を出力する命令コード設定済信号伝送部と、第２のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第１のバリッド制御部と、第１のクロックで動作し、命令コード設定済信号検出部から出力された命令コード設定済信号に応じて第２のレジスタの保持領域に設定済を示す信号を保持させると共に、命令コード設定済信号伝送部から出力された命令コード設定済承認信号に応じてその第２のレジスタの保持領域に第１のバリッド制御部によって生成されたバリッド信号を保持させる第１の保持領域制御部とを備えるように構成したので、第１のクロックに対して第２のクロックが非常に遅かったり、逆に第１のクロックに対して第２のクロックが非常に速かったりしても、設定された命令コードのＣＰＵによる実行時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【００９４】
この発明によれば、第１のクロックで動作し、第３のレジスタに保持されたデータが有効か無効かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、第１のクロックで動作し、デバッグツールからの第３のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第２のアクセス検出部と、第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第２のアクセス検出信号伝送部と、第２のクロックで動作し、第５のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第２のバリッド制御部と、第１のクロックで動作し、第２のアクセス検出部から出力されたアクセス検出信号に応じて第２のレジスタの保持領域に無効を示す信号を保持させると共に、第２のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に第２のバリッド制御部によって生成されたバリッド信号を保持させる第２の保持領域制御部とを備えるように構成したので、第１のクロックに対して第２のクロックが非常に遅かったり、逆に第１のクロックに対して第２のクロックが非常に速かったりしても、ＣＰＵによるデータの設定時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【００９５】
この発明によれば、第１のクロックで動作し、第４のレジスタに設定されたデータがＣＰＵによって読み出されたか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第２のレジスタと、第１のクロックで動作し、デバッグツールからの第４のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第３のアクセス検出部と、第２のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第３のアクセス検出信号伝送部と、第２のクロックで動作し、第４のレジスタから伝送されて第６のレジスタに保持されたデータがＣＰＵによって読み出されたか否かを示すバリッド信号を生成する第３のバリッド制御部と、第１のクロックで動作し、第３のアクセス検出部から出力されたアクセス検出信号に応じて第２のレジスタの保持領域にＣＰＵによってまだ読み出されていないことを示す信号を保持させると共に、第３のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第２のレジスタの保持領域に第３のバリッド制御部によって生成されたバリッド信号を保持させる第３の保持領域制御部とを備えるように構成したので、第１のクロックに対して第２のクロックが非常に遅かったり、逆に第１のクロックに対して第２のクロックが非常に速かったりしても、データの設定時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【図面の簡単な説明】
【図１】  この発明の実施の形態１によるマイクロコンピュータを示す構成図である。
【図２】  マイクロコンピュータのＣＰＵおよびデバッグモジュールの詳細を示す構成図である。
【図３】  デバッグ事象発生時の処理手順を示す説明図である。
【図４】  内蔵領域にマッピングされたデバッグモジュール用領域を示す説明図である。
【図５】  ＪＴＡＧ制御部およびモニタコード供給機能の詳細を示す構成図である。
【図６】  命令コードバッファへの設定時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図７】  命令コードバッファへの設定時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図８】  ＣＰＵによる命令コードの実行時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図９】  ＣＰＵによる命令コードの実行時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図１０】  ＭＯＮ＿ＰＡＲＡＭレジスタ関連の動作時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図１１】  ＭＯＮ＿ＰＡＲＡＭレジスタ関連の動作時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図１２】  ＭＯＮ＿ＤＡＴＡレジスタ関連の動作時におけるＴＣＫの周波数＜ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図１３】  ＭＯＮ＿ＤＡＴＡレジスタ関連の動作時におけるＴＣＫの周波数＞ＣＬＫの周波数の場合の各種信号を示すタイミングチャートである。
【図１４】  従来のマイクロコンピュータを示す構成図である。
【図１５】  従来のマイクロコンピュータを示す構成図である。
【図１６】  従来のマイクロコンピュータを示す構成図である。
【図１７】  従来のマイクロコンピュータを示す構成図である。
【図１８】  従来のマイクロコンピュータを示す構成図である。
【符号の説明】
５１  マイクロコンピュータ、５２  デバッグツール、５３  ＣＰＵ、５４  デバッグモジュール、５５  内蔵フラッシュメモリ、５６  内蔵ＳＲＡＭ、５７内蔵周辺Ｉ／Ｏ、５８  バス制御回路、５９  内部バス、６１  ＪＴＡＧインタフェース端子（シリアルインタフェース）、６２  端子、６３ａ  デバッグトラップ命令実行機能、６３ｂ  プログラムカウンタ、６３ｃ  プログラムカウンタ退避用レジスタ、６３ｄ  ＰＳＷレジスタ、６３ｅ  ＰＳＷ退避用レジスタ、６３ｆ  汎用レジスタ、６４  実行後ＰＣブレーク機能、６５  ＪＴＡＧ制御部、６６  モニタコード供給機能、６７  アクセスブレーク機能、６８  実行前ＰＣブレーク機能、６９  デバッグ割り込み要求、７１  デバッグモジュール用内蔵Ｉ／Ｏ領域、７２  デバッグモジュール用制御レジスタ領域、７３  モニタコード供給領域、８１  ＴＡＰコントローラ、８２  命令レジスタ、８３  ＭＯＮ＿ＣＯＤＥレジスタ（第１のレジスタ）、８４  ＭＯＮ＿ＰＡＲＡＭレジスタ（第４のレジスタ）、８５  ＭＯＮ＿ＤＡＴＡレジスタ（第３のレジスタ）、８６ＭＯＮ＿ＡＣＣＥＳＳレジスタ（第２のレジスタ）、８７  命令コードバッファ（バッファ）、８８  ＦｒｏｎｔＭＯＮ＿ＰＡＲＡＭレジスタ（第６のレジスタ）、８９  ＦｒｏｎｔＭＯＮ＿ＤＡＴＡレジスタ（第５のレジスタ）、９１  ＭＯＮ＿ＣＯＤＥアクセス検出部（第１のアクセス検出部）、９２  ＭＮＳＴＡＲＴビット“１”セット検出部（命令コード設定済信号検出部）、９３  ＭＮＣＤＢＵＳＹビット制御部（第１の保持領域制御部）、９４  ＭＯＮ＿ＰＡＲＡＭアクセス検出部（第３のアクセス検出部）、９５  ＭＮＰＲＭＶＬＤビット制御部（第３の保持領域制御部）、９６  ＭＯＮ＿ＤＡＴＡアクセス検出部（第２のアクセス検出部）、９７  ＭＮＤＴＶＬＤビット制御部（第２の保持領域制御部）、１００ａ〜１００ｎ，１０１ａ〜１０１ｎ  フリップフロップ回路、１０２ｂ  フリップフロップ回路（第１のアクセス検出信号伝送部）、１０３ｂ，１０３ｄ，１０３ｈ，１０３ｌ  ＡＮＤ回路、１０２ｄ  フリップフロップ回路（命令コード設定済信号伝送部）、１０２ｈ  フリップフロップ回路（第３のアクセス検出信号伝送部）、１０２ｌ  フリップフロップ回路（第２のアクセス検出信号伝送部）、１１１  バッファ入力制御部（入力制御部）、１１２  バッファ出力制御部（出力制御部）、１１３  バッファバリッド制御部（第１のバリッド制御部）、１１４  ＭＯＮ＿ＰＡＲＡＭバリッド制御部（第３のバリッド制御部）、１１５  ＭＯＮ＿ＤＡＴＡバリッド制御部（第２のバリッド制御部）、１１６内部バスインタフェース部。
【図１】
0004190114.tif 000002
【図２】
0004190114.tif 000003
【図３】
0004190114.tif 000004
【図４】
0004190114.tif 000005
【図５】
0004190114.tif 000006
【図６】
0004190114.tif 000007
【図７】
0004190114.tif 000008
【図８】
0004190114.tif 000009
【図９】
0004190114.tif 000010
【図１０】
0004190114.tif 000011
【図１１】
0004190114.tif 000012
【図１２】
0004190114.tif 000013
【図１３】
0004190114.tif 000014
【図１４】
0004190114.tif 000015
【図１５】
0004190114.tif 000016
【図１６】
0004190114.tif 000017
【図１７】
0004190114.tif 000018
【図１８】
0004190114.tif 000019