(57)【要約】      （修正有）【課題】外部からのアクセスを簡素な構成で且つ少ないオーバーヘッドで実現する半導体装置及びデバッグシステムを提供する。【解決手段】デバッグシステム１０は、半導体装置１１と、外部デバッグ装置１２と、ホストコンピュータ１３を備える。半導体装置は、ＣＰＵ２０、デバッグ制御部２１、内部バス２２、内部バスに接続された記憶部２３、２４、２６、及び、セレクタ２７を備える。セレクタは、ＣＰＵからの選択制御信号ＣＮＴに基づき、ＣＰＵからの信号を内部バスに伝達するＣＰＵ選択状態と、デバッグ制御部からの信号を内部バスに伝達するデバッガ選択状態の何れかとなる。原則はＣＰＵ選択状態とされる。デバッグ制御部にて外部装置１２、１３から所定コマンドが受信されたとき、それに対応する信号がデバッグ制御部からＣＰＵに送られることを通じ、セレクタが一時的にデバッガ選択状態とされてデバッガ制御部による内部バスへのアクセスが行われる。【選択図】図１
2020149214.tif 000002
【特許請求の範囲】
【請求項１】
バスと、前記バスに接続された記憶部と、前記バスに接続されたセレクタと、プログラムを実行し且つ前記セレクタを介して前記バスにアクセス可能な処理部と、外部装置との間で双方向通信が可能に構成され且つ前記セレクタを介して前記バスにアクセス可能なデバッグ制御部と、を備えた半導体装置であって、
前記セレクタは、前記処理部からの選択制御信号に基づき、前記処理部からの第１信号及び前記デバッグ制御部からの第２信号の内、前記第１信号を前記内部バスに伝達する第１選択状態、及び、前記第２信号を前記内部バスに伝達する第２選択状態の何れかの状態をとり、
前記セレクタの状態が前記第１選択状態であるときにおいて前記デバッグ制御部にて前記外部装置から所定コマンドが受信されたとき、前記デバッグ制御部及び前記処理部の協働により前記セレクタの状態が一時的に前記第２選択状態に切り替えられ、前記セレクタの状態が前記第２選択状態とされているときにおいて前記デバッグ制御部が前記セレクタを介し前記所定コマンドに応じた前記バスへのアクセスを行う
ことを特徴とする半導体装置。
【請求項２】
前記セレクタの状態が前記第２選択状態とされているときにおいて前記プログラムの実行は停止される
ことを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記プログラムの実行開始後、前記所定コマンドの受信に応答して前記セレクタの状態が一時的に前記第２選択状態とされるときを除き、前記セレクタの状態は前記第１選択状態とされる
ことを特徴とする請求項１又は２に記載の半導体装置。
【請求項４】
前記デバッグ制御部は、前記所定コマンドの受信に応答して所定のアクセス開始信号を前記処理部に対して出力し、前記処理部は、前記アクセス開始信号の入力に応答して前記セレクタの状態を前記第１選択状態から前記第２選択状態に切り替え、
その後、前記デバッグ制御部による前記所定コマンドに応じたアクセスが終了すると、前記デバッグ制御部は、所定のアクセス終了信号を前記処理部に対して出力し、前記処理部は、前記アクセス終了信号の入力に応答して前記セレクタの状態を前記第２選択状態から前記第１選択状態に戻す
ことを特徴とする請求項１〜３の何れかに記載の半導体装置。
【請求項５】
前記処理部は、前記プログラムの実行状態を制御するステートマシンを有し、
前記ステートマシンが、前記プログラムを構成する命令のフェッチ及び実行が行われるフェッチステートにあるときにおいて、前記処理部にて前記アクセス開始信号の入力を受けると、前記ステートマシンは前記命令のフェッチ及び実行が停止されるブレークステートに遷移し、前記処理部にて前記アクセス終了信号の入力を受けたことに応答して前記ステートマシンは前記フェッチステートへと戻り、
前記ステートマシンは、前記ブレークステートにおいて前記セレクタを前記第２選択状態に制御する
ことを特徴とする請求項４に記載の半導体装置。
【請求項６】
前記セレクタの状態が前記第１選択状態であるときにおいて前記デバッグ制御部にてリードコマンドが前記所定コマンドとして受信されたとき、前記デバッグ制御部及び前記処理部の協働により前記セレクタの状態が一時的に前記第２選択状態に切り替えられ、前記セレクタの状態が前記第２選択状態とされているときにおいて前記デバッグ制御部は前記セレクタを介し前記リードコマンドに応じたリードアクセスを前記バスに対して行い、その後、前記リードアクセスにより前記記憶部から取得したリードデータを前記外部装置に対して送信する
ことを特徴とする請求項１〜５の何れかに記載の半導体装置。
【請求項７】
前記記憶部は複数のアドレスが割り当てられた複数の記憶領域を有し、
前記リードコマンドにて前記複数のアドレスの何れかが指定され、
前記デバッグ制御部は、前記リードコマンドに応じた前記リードアクセスにおいて、前記リードコマンドにて指定されたアドレスの記憶領域内のデータを前記リードデータとして前記記憶部から取得するためのアクセスを前記セレクタを介し前記バスに対して行い、これによって得られた前記リードデータを前記外部装置に対して送信する
ことを特徴とする請求項６に記載の半導体装置。
【請求項８】
前記セレクタの状態が前記第１選択状態であるときにおいて前記デバッグ制御部にてライトコマンドが前記所定コマンドとして受信されたとき、前記デバッグ制御部及び前記処理部の協働により前記セレクタの状態が一時的に前記第２選択状態に切り替えられ、前記セレクタの状態が前記第２選択状態とされているときにおいて前記デバッグ制御部は前記セレクタを介し前記ライトコマンドに応じたライトアクセスを前記バスに対して行い、
前記ライトアクセスにより、前記ライトコマンドに応じたデータの書き込みが前記記憶部にて行われる
ことを特徴とする請求項１〜５の何れかに記載の半導体装置。
【請求項９】
前記記憶部は複数のアドレスが割り当てられた複数の記憶領域を有し、
前記ライトコマンドにて前記複数のアドレスの何れかが指定されるとともにライトデータが指定され、
前記デバッグ制御部は、前記ライトコマンドに応じた前記ライトアクセスにおいて、前記ライトコマンドにて指定されたアドレスの記憶領域に前記ライトデータを書き込むためのアクセスを前記セレクタを介し前記バスに対して行う
ことを特徴とする請求項８に記載の半導体装置。
【請求項１０】
請求項１〜９の何れかに記載の半導体装置と、
前記半導体装置に接続され、前記半導体装置の前記デバッグ制御部に対して前記所定コマンドを送信可能な外部装置と、を備えた
ことを特徴とするデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びデバッグシステムに関する。
【背景技術】
【０００２】
プログラムを実行するＣＰＵ等を備えた半導体装置において、実行されるプログラムを開発する際に、プログラムのデバッグ作業を支援するためのデバッグシステムが用いられることが多い。
【０００３】
デバッグ作業において、プログラムの動作中に外部から半導体装置内の記憶部（レジスタやレジスタに分類されないメモリ等であり、以下、内部資源と称する）へアクセスを行いたいという要望がある。この要望に応えるべく、多くのデバッグシステムは、ＬＳＩ等にて構成された半導体装置の外部からシリアル通信などを利用して、内部資源へのアクセスを行い、必要な読み書きをできるような仕組みを有している。
【０００４】
その際、特定のアドレスの命令が実行されたときにＣＰＵを停止（ブレーク）させて内部資源へのアクセスを行うこともある。但し、プログラム実行開始後のＣＰＵ停止が問題となる装置もある。例えば、モータ制御装置では、ＣＰＵが停止するとモータの回転制御が不能となって装置が破壊されることがあるため、プログラム実行開始後のＣＰＵ停止は回避されるべきである。故に、そのような装置に適用されるデバッグシステムでは、ＣＰＵを停止させることなく内部資源へアクセスすることが要求される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５４００４４３号公報
【特許文献２】特開２００４−８６４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デバッグのために半導体装置に搭載される回路は、本来の半導体装置の動作に関係のないものであるため、なるだけ小規模の回路とされることが望まれる。
【０００７】
また、ＣＰＵを停止させずにプログラムを動作させながらデバッグ作業を行う場合には、プログラムの動作をなるだけ邪魔しないようにするべく、極力小さなオーバーヘッド（クロックオーバーヘッド）で外部から内部資源へのアクセスを完了させることが望ましい。
【０００８】
尚、特許文献１に係るデバッグシステムでは、半導体装置に設けられるデバッグ回路内にＤＭＡコントローラが必要となるため、回路規模が大きくなる（特許文献１の図４参照）。また、ＣＰＵのメモリアクセスとデバッガのメモリアクセスを調停するためのバス調停回路を半導体装置内に設ける必要があり（特許文献１の図７参照）、これによっても回路規模が大きくなり、またアクセス権獲得のためのオーバーヘッド（クロックオーバーヘッド）も大きくなる。即ち、特許文献１に係るデバッグシステムにおいて、ブレーク処理に入ると、ＣＰＵはブレーク専用のアドレスへ分岐し、ブレーク専用のデバッグプログラムで制御されるように動作するため、デバッグ動作に要するクロック数（即ちオーバーヘッド）が大きくなる。
【０００９】
また、特許文献２に係るデータシステムでは、外部から内部資源へのアクセスのために、半導体装置（マイクロコンピュータ）に元々備えられたＤＭＡコントローラに相当する構成要素を用いている。逆に言えば、特許文献２に係る方法は、ＤＭＡコントローラを有さない半導体装置には適用できない。また、特許文献２に係る方法では、デバッグ（エミュレーション）用のプログラムで内部資源へのアクセスを実施するため、半導体装置の内部にデバッグプログラム専用のＲＡＭ（ＥＲＡＭ）が必要となる。結果、半導体装置に設けられるデバッグ用の回路の規模が大きくなり、且つ、デバッグ動作に要するクロック数（即ちオーバーヘッド）も大きなものとなる。
【００１０】
本発明は、外部からのアクセスを簡素な構成で且つ少ないオーバーヘッドで実現する半導体装置及びデバッグシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る半導体装置は、バスと、前記バスに接続された記憶部と、前記バスに接続されたセレクタと、プログラムを実行し且つ前記セレクタを介して前記バスにアクセス可能な処理部と、外部装置との間で双方向通信が可能に構成され且つ前記セレクタを介して前記バスにアクセス可能なデバッグ制御部と、を備えた半導体装置であって、前記セレクタは、前記処理部からの選択制御信号に基づき、前記処理部からの第１信号及び前記デバッグ制御部からの第２信号の内、前記第１信号を前記内部バスに伝達する第１選択状態、及び、前記第２信号を前記内部バスに伝達する第２選択状態の何れかの状態をとり、前記セレクタの状態が前記第１選択状態であるときにおいて前記デバッグ制御部にて前記外部装置から所定コマンドが受信されたとき、前記デバッグ制御部及び前記処理部の協働により前記セレクタの状態が一時的に前記第２選択状態に切り替えられ、前記セレクタの状態が前記第２選択状態とされているときにおいて前記デバッグ制御部が前記セレクタを介し前記所定コマンドに応じた前記バスへのアクセスを行う構成（第１の構成）である。
【００１２】
上記第１の構成に係る半導体装置において、前記セレクタの状態が前記第２選択状態とされているときにおいて前記プログラムの実行は停止される構成（第２の構成）であっても良い。
【００１３】
上記第１又は第２の構成に係る半導体装置において、前記プログラムの実行開始後、前記所定コマンドの受信に応答して前記セレクタの状態が一時的に前記第２選択状態とされるときを除き、前記セレクタの状態は前記第１選択状態とされる構成（第３の構成）であっても良い。
【００１４】
上記第１〜第３の構成の何れかに係る半導体装置において、前記デバッグ制御部は、前記所定コマンドの受信に応答して所定のアクセス開始信号を前記処理部に対して出力し、前記処理部は、前記アクセス開始信号の入力に応答して前記セレクタの状態を前記第１選択状態から前記第２選択状態に切り替え、その後、前記デバッグ制御部による前記所定コマンドに応じたアクセスが終了すると、前記デバッグ制御部は、所定のアクセス終了信号を前記処理部に対して出力し、前記処理部は、前記アクセス終了信号の入力に応答して前記セレクタの状態を前記第２選択状態から前記第１選択状態に戻す構成（第４の構成）であっても良い。
【００１５】
上記第４の構成に係る半導体装置において、前記処理部は、前記プログラムの実行状態を制御するステートマシンを有し、前記ステートマシンが、前記プログラムを構成する命令のフェッチ及び実行が行われるフェッチステートにあるときにおいて、前記処理部にて前記アクセス開始信号の入力を受けると、前記ステートマシンは前記命令のフェッチ及び実行が停止されるブレークステートに遷移し、前記処理部にて前記アクセス終了信号の入力を受けたことに応答して前記ステートマシンは前記フェッチステートへと戻り、前記ステートマシンは、前記ブレークステートにおいて前記セレクタを前記第２選択状態に制御する構成（第５の構成）であっても良い。
【００１６】
上記第１〜第５の構成の何れかに係る半導体装置において、前記セレクタの状態が前記第１選択状態であるときにおいて前記デバッグ制御部にてリードコマンドが前記所定コマンドとして受信されたとき、前記デバッグ制御部及び前記処理部の協働により前記セレクタの状態が一時的に前記第２選択状態に切り替えられ、前記セレクタの状態が前記第２選択状態とされているときにおいて前記デバッグ制御部は前記セレクタを介し前記リードコマンドに応じたリードアクセスを前記バスに対して行い、その後、前記リードアクセスにより前記記憶部から取得したリードデータを前記外部装置に対して送信する構成（第６の構成）であっても良い。
【００１７】
上記第６の構成に係る半導体装置において、前記記憶部は複数のアドレスが割り当てられた複数の記憶領域を有し、前記リードコマンドにて前記複数のアドレスの何れかが指定され、前記デバッグ制御部は、前記リードコマンドに応じた前記リードアクセスにおいて、前記リードコマンドにて指定されたアドレスの記憶領域内のデータを前記リードデータとして前記記憶部から取得するためのアクセスを前記セレクタを介し前記バスに対して行い、これによって得られた前記リードデータを前記外部装置に対して送信する構成（第７の構成）であっても良い。
【００１８】
上記第１〜第５の構成の何れかに係る半導体装置において、前記セレクタの状態が前記第１選択状態であるときにおいて前記デバッグ制御部にてライトコマンドが前記所定コマンドとして受信されたとき、前記デバッグ制御部及び前記処理部の協働により前記セレクタの状態が一時的に前記第２選択状態に切り替えられ、前記セレクタの状態が前記第２選択状態とされているときにおいて前記デバッグ制御部は前記セレクタを介し前記ライトコマンドに応じたライトアクセスを前記バスに対して行い、前記ライトアクセスにより、前記ライトコマンドに応じたデータの書き込みが前記記憶部にて行われる構成（第８の構成）であっても良い。
【００１９】
上記第８の構成に係る半導体装置において、前記記憶部は複数のアドレスが割り当てられた複数の記憶領域を有し、前記ライトコマンドにて前記複数のアドレスの何れかが指定されるとともにライトデータが指定され、前記デバッグ制御部は、前記ライトコマンドに応じた前記ライトアクセスにおいて、前記ライトコマンドにて指定されたアドレスの記憶領域に前記ライトデータを書き込むためのアクセスを前記セレクタを介し前記バスに対して行う構成（第９の構成）であっても良い。
【００２０】
本発明に係るデバッグシステムは、上記第１〜第９の構成の何れかに係る半導体装置と、前記半導体装置に接続され、前記半導体装置の前記デバッグ制御部に対して前記所定コマンドを送信可能な外部装置と、を備えた構成（第１０の構成）である。
【発明の効果】
【００２１】
本発明によれば、外部からのアクセスを簡素な構成で且つ少ないオーバーヘッドで実現する半導体装置及びデバッグシステムを提供することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１実施形態に係るデバッグシステムの概略構成図である。
【図２】ＬＳＩ内に設けられる記憶部を示す図である。
【図３】本発明の第１実施形態に係り、リードアクセス及びリード動作の説明図である。
【図４】本発明の第１実施形態に係り、ライトアクセス及びライト動作の説明図である。
【図５】本発明の第１実施形態に係り、ステートマシンの状態遷移図である。
【図６】本発明の第１実施形態に係り、フェッチステートへの遷移後におけるＬＳＩの動作フローチャートである。
【図７】本発明の第１実施形態に係り、リードコマンドの受信に応答したＬＳＩのタイミングチャートである。
【図８】本発明の第２実施形態に係り、２つのＣＰＵ、デバッグ制御部、セレクタ及び内部バス間の関係を示す図である。
【図９】本発明の第２実施形態に係り、ＣＰＵ内部レジスタへのアクセスに関わるデバッグ制御部及びＣＰＵの構成図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、素子又は部位等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、素子又は部位等の名称を省略又は略記することがある。例えば、後述の“ＲＥ”によって参照されるリードイネーブル信号は（図１参照）、リードイネーブル信号ＲＥと表記されることもあるし、信号ＲＥと略記されることもあり得るが、それらは全て同じものを指す。
【００２４】
＜＜第１実施形態＞＞
本発明の第１実施形態を説明する。図１は、本発明の第１実施形態に係るデバッグシステム１０の概略構成図である。デバッグシステム１０は、ＣＰＵ（Central Processing Unit）を内蔵したＬＳＩ（Large Scale Integration）１１と、外部デバッグ装置１２と、ホストコンピュータ１３（以下、ホストＰＣ１３と称され得る）と、を備える。
【００２５】
半導体装置としてのＬＳＩ１１は、ＣＰＵ（Central Processing Unit）２０、デバッグ制御部２１、内部バス２２及びセレクタ２７を備えると共に、内部バス２２に接続される構成要素として、１以上のＲＯＭ（Read only memory）と、１以上のＲＡＭ（Random access memory）と、１以上の周辺回路である１以上のペリフェラルと、を備える。図１には、１以上のＲＯＭに含まれる１つのＲＯＭとしてＲＯＭ２３が示され、１以上のＲＡＭに含まれる１つのＲＡＭとしてＲＡＭ２４が示され、１以上のペリフェラルに含まれる１つのペリフェラルとしてペリフェラル２５が示されている。以下では、ＲＯＭ、ＲＡＭ及びペリフェラルとしてＲＯＭ２３、ＲＡＭ２４及びペリフェラル２５に注目する。ペリフェラル２５にはレジスタ２６が内蔵されている。
【００２６】
ＣＰＵ２０は、ＬＳＩ１１に設けられたプログラムメモリ（不図示）に格納されたプログラムを実行する。プログラムメモリはＣＰＵ２０に内蔵されていても良い。ＣＰＵ２０は、プログラムの実行時に必要に応じセレクタ２７を介して内部バス２２にアクセスすることで、ＲＯＭ２３、ＲＡＭ２４又はレジスタ２６の格納データを読み込んだり、ＲＡＭ２４又はレジスタ２６にデータを書き込んだりすることができる。以下の説明において、単にプログラムと称した場合、それは、ＣＰＵ２０にて実行されるべきプログラム又はＣＰＵ２０にて実行されているプログラムを指す。
【００２７】
外部デバッグ装置１２は、ＬＳＩ１１に設けられた図示されない端子を介してデバッグ制御部２１に接続され、デバッグ制御部２１とホストＰＣ１３との間のインターフェースとして機能する。外部デバッグ装置１２及びホストＰＣ１３は双方向通信が可能な態様で互いに接続される。ホストＰＣ１３ではデバッグソフトウェア１４が実行されている。デバッグシステム１０のユーザは、デバッグソフトウェア１４が実行されているホストＰＣ１３を操作することで、ＣＰＵ２０が実行するプログラムのデバッグ作業を行うことができる。
【００２８】
図２を参照し、以下では、便宜上、ＬＳＩ１１に設けられた記憶回路であって、ＲＯＭ２３、ＲＡＭ２４及びレジスタ２６を含む記憶回路を記憶部３０と称する。記憶部３０には、所定サイズのデータを格納可能な記憶領域が多数含まれる。記憶部３０に対して所定のアドレス空間が定義されており、記憶部３０を構成する各記憶領域には固有のアドレスが割り当てられる。
【００２９】
セレクタ２７は、第１入力部２７ａ、第２入力部２７ｂ及び出力部２７ｃを有し、第１入力部２７ａはＣＰＵ２０に接続され、第２入力部２７ｂはデバッグ制御部２１に接続され、出力部２７ｃは内部バス２２に接続される。これについて、詳細に説明する。
【００３０】
ＣＰＵ２０及びデバッグ制御部２１は、夫々に、リードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを出力可能であり、ＣＰＵ２０から出力されるリードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを、特に、夫々、リードイネーブル信号ＲＥ１、ライトイネーブル信号ＷＥ１、アドレス信号ＡＤＤ１及びライトデータＷＤ１と称し、且つ、デバッグ制御部２１から出力されるリードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを、特に、夫々、リードイネーブル信号ＲＥ２、ライトイネーブル信号ＷＥ２、アドレス信号ＡＤＤ２及びライトデータＷＤ２と称する。ライトデータは、換言すれば、ライトデータを示す信号であるとも言え、以下では、記述の便宜上、ライトデータＷＤ１、ＷＤ２を、信号ＷＤ１、ＷＤ２と表記することもある（後述のライトデータＷＤについても同様）。
【００３１】
第１入力部２７ａは、ＣＰＵ２０及びセレクタ２７間に設けられた、信号ＲＥ１、ＷＥ１、ＡＤＤ１及びＷＤ１を伝搬する配線に接続され、ＣＰＵ２０からの信号ＲＥ１、ＷＥ１、ＡＤＤ１及びＷＤ１の入力を受ける。第２入力部２７ｂは、デバッグ制御部２１及びセレクタ２７間に設けられた、信号ＲＥ２、ＷＥ２、ＡＤＤ２及びＷＤ２を伝搬する配線に接続され、デバッグ制御部２１からの信号ＲＥ２、ＷＥ２、ＡＤＤ２及びＷＤ２の入力を受ける。
【００３２】
また、セレクタ２７に対してはＣＰＵ２０から選択制御信号ＣＮＴが供給されており、セレクタ２７は選択制御信号ＣＮＴに基づいて、第１入力部２７ａ及び第２入力部２７ｂの何れか一方を選択的に出力部２７ｃに接続する。選択制御信号ＣＮＴは“１”又は“０”の値をとる１ビット信号であるものとし、選択制御信号ＣＮＴの値が“０”であるときにはセレクタ２７の状態はＣＰＵ選択状態となり、選択制御信号ＣＮＴの値が“１”であるときにはセレクタ２７の状態はデバッガ選択状態となるものとする。以下では、セレクタ２７の状態がＣＰＵ選択状態であることを単に“ＣＰＵ選択状態”と表現することがあり、同様に、セレクタ２７の状態がデバッガ選択状態であることを単に“デバッガ選択状態”と表現することがある。尚、“デバッガ”とは、デバッグ作業に供される部位の総称であり、デバッグ制御部２１、外部デバッグ装置１２及びホストＰＣ１３の全部又は一部を含むと解釈することができる。
【００３３】
ＣＰＵ選択状態においては、第１入力部２７ａが出力部２７ｃに接続され、結果、信号ＲＥ１、ＷＥ１、ＡＤＤ１及びＷＤ１を伝搬する配線が出力部２７ｃを通じ内部バス２２に接続されて、それらの信号ＲＥ１、ＷＥ１、ＡＤＤ１及びＷＤ１が内部バス２２に伝達される。デバッガ選択状態においては、第２入力部２７ｂが出力部２７ｃに接続され、結果、信号ＲＥ２、ＷＥ２、ＡＤＤ２及びＷＤ２を伝搬する配線が出力部２７ｃを通じ内部バス２２に接続されて、それらの信号ＲＥ２、ＷＥ２、ＡＤＤ２及びＷＤ２が内部バス２２に伝達される。
【００３４】
出力部２７ｃから出力されるリードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを、特に、夫々、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤと称する。尚、ライトデータ（ＷＤ、ＷＤ１、ＷＤ２）は、後述のライトアクセスの実行時においてのみ出力されるデータである。
【００３５】
ＣＰＵ選択状態においては、第１入力部２７ａが出力部２７ｃに接続されるため、ＣＰＵ２０からのリードイネーブル信号ＲＥ１、ライトイネーブル信号ＷＥ１、アドレス信号ＡＤＤ１及びライトデータＷＤ１が、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤとして出力部２７ｃから内部バス２２に出力される。デバッガ選択状態においては、第２入力部２７ｂが出力部２７ｃに接続されるため、デバッグ制御部２１からのリードイネーブル信号ＲＥ２、ライトイネーブル信号ＷＥ２、アドレス信号ＡＤＤ２及びライトデータＷＤ２が、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤとして出力部２７ｃから内部バス２２に出力される。
【００３６】
このように、ＣＰＵ２０はセレクタ２７がＣＰＵ選択状態にあるときに内部バス２２へアクセスすることができ、デバッグ制御部２１はセレクタ２７がデバッガ選択状態にあるときに内部バス２２へアクセスすることができる。内部バス２２へのアクセスとして、リードアクセスとライトアクセスがある。内部バス２２へのリードアクセス又はライトアクセスは、換言すれば、内部バス２２を通じた記憶部３０へのリードアクセス又はライトアクセスである。ＲＡＭ２４及びレジスタ２６に対するアクセスはリードアクセス及びライトアクセスの何れかであるが、ＲＯＭ２３に対するアクセスはリードアクセスに限定される。  
【００３７】
記憶部３０（例えばＲＡＭ２４）は、ＣＰＵ２０又はデバッグ制御部２１からリードアクセスを受けたとき必要なリードデータＲＤを内部バス２２に出力するリード動作を行い、ＣＰＵ２０又はデバッグ制御部２１からライトアクセスを受けたとき内部バス２２を通じて送られてきたライトデータＷＤに応じたデータを記憶するライト動作を行う。リードデータは、換言すれば、リードデータを示す信号であるとも言え、以下では、記述の便宜上、リードデータＲＤを信号ＲＤと表記することもある。
【００３８】
内部バス２２は、信号ＲＥ、ＷＥ、ＡＤＤ、ＲＤ及びＷＤ（即ち信号ＲＥ、ＷＥ及びＡＤＤ並びにデータＲＤ及びＷＤ）を個別に伝送するための複数の配線から成る。内部バス２２を構成する配線の内、リードデータＲＤを伝送するための配線は、ＣＰＵ２０及びデバッグ制御部２１の夫々に接続されている。故に、リードアクセスに応答して記憶部３０から内部バス２２に対しリードデータＲＤが出力されているとき、ＣＰＵ２０及びデバッグ制御部２１は当該リードデータＲＤを取得することができる。
【００３９】
ここでは、リードイネーブル信号（ＲＥ、ＲＥ１、ＲＥ２）は“１”又は“０”の値をとる１ビット信号であるものとし、“１”のリードイネーブル信号（ＲＥ、ＲＥ１、ＲＥ２）はリード動作を許可する信号として機能し、且つ、“０”のリードイネーブル信号（ＲＥ、ＲＥ１、ＲＥ２）はリード動作を禁止する信号として機能するものとする。また、ライトイネーブル信号（ＷＥ、ＷＥ１、ＷＥ２）も“１”又は“０”の値をとる１ビット信号であるものとし、“１”のライトイネーブル信号（ＷＥ、ＷＥ１、ＷＥ２）はライト動作を許可する信号として機能し、且つ、“０”のライトイネーブル信号（ＷＥ、ＷＥ１、ＷＥ２）はライト動作を禁止する信号として機能するものとする。アドレス信号（ＡＤＤ、ＡＤＤ１、ＡＤＤ２）は、記憶部３０内の何れかの記憶領域のアドレスを指定する信号であり、記憶部３０に定義されたアドレス空間の大きさに応じたビット数を有する。リードデータ（ＲＤ）は、記憶部３０内の何れかの記憶領域に格納されたデータを当該記憶領域から読み出したデータである。ライトデータ（ＷＤ、ＷＤ１、ＷＤ２）は、記憶部３０内の何れかの記憶領域に書き込まれるべきデータである。リードデータ及びライトデータの夫々のビット数は任意である（例えば８ビットである）。
【００４０】
また、デバッグ制御部２１はＣＰＵ２０に対してデバッガアクセス開始信号Ｓａｃｓ及びデバッガアクセス終了信号Ｅａｃｓを出力することができるが、これらの信号については後述される。
【００４１】
ホストＰＣ１３（換言すればデバッグソフトウェア１４）は、デバッグシステム１０のユーザによるホストＰＣ１３への操作に基づき所定コマンドを発行可能であり、発行された所定コマンドは外部デバッグ装置１２を通じてデバッグ制御部２１に送信される。
【００４２】
上記所定コマンドとして、デバッグ制御部２１にリードアクセスを行わせることを要求するリードコマンドと、デバッグ制御部２１にライトアクセスを行わせることを要求するライトコマンドと、がある。リードコマンドではアクセス対象アドレスが指定される。ライトコマンドではアクセス対象アドレスとライトデータが指定される。外部デバッグ装置１２からデバッグ制御部２１に対してリードコマンドが送信されるときに、アクセス対象アドレスを示す信号がリードコマンドに付加されて送信されると考えても良い。同様に、外部デバッグ装置１２からデバッグ制御部２１に対してライトコマンドが送信されるときに、アクセス対象アドレスを示す信号及びライトデータを示す信号がライトコマンドに付加されて送信されると考えても良い。
【００４３】
アクセス対象アドレスは、記憶部３０のアドレス空間における何れかのアドレスを指す。リードコマンドで指定されるアクセス対象アドレスは、デバッグ制御部２１によるリードアクセスの対象となるアドレスであり、ライトコマンドで指定されるアクセス対象アドレスは、デバッグ制御部２１によるライトアクセスの対象となるアドレスである。ライトコマンドで指定されるライトデータは、アクセス対象アドレスに書き込まれるべきデータを表す。
【００４４】
リードコマンドが発行されたとき、デバッグ制御部２１及びＣＰＵ２０が協働することで一時的にセレクタ２７のデバッガ選択状態が実現され、デバッガ選択状態にてデバッグ制御部２１がリードコマンドに応じたリードアクセスを内部バス２２に対して行うことでアクセス対象アドレスの記憶領域の格納データをリードデータＲＤとして取得する。取得されたリードデータＲＤは、デバッグ制御部２１から外部デバッグ装置１２に送信され、外部デバッグ装置１２を通じてホストＰＣ１３に送られる。
【００４５】
ライトコマンドが発行されたとき、デバッグ制御部２１及びＣＰＵ２０が協働することで一時的にセレクタ２７のデバッガ選択状態が実現され、デバッガ選択状態にてデバッグ制御部２１がライトコマンドに応じたライトアクセスを内部バス２２に対して行うことでアクセス対象アドレスの記憶領域にライトコマンドにて指定されるライトデータが書き込まれる。
【００４６】
図３（ａ）及び（ｂ）を参照して、リードアクセス及びリード動作について更に説明を加える。ＣＰＵ選択状態においてＣＰＵ２０は自身が実行するプログラムに基づきリードアクセスを行うことができ、デバッガ選択状態においてデバッグ制御部２１は受信したリードコマンドに基づきリードアクセスを行うことができる。
【００４７】
図３（ａ）に示す如く、ＣＰＵ２０は、ＣＰＵ選択状態におけるリードアクセスにおいて、“１”のリードイネーブル信号ＲＥ１と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ１とをセレクタ２７を介し、リードイネーブル信号ＲＥ及びアドレス信号ＡＤＤとして内部バス２２に出力し、これによって記憶部３０にリード動作を行わせる。
【００４８】
図３（ｂ）に示す如く、デバッグ制御部２１は、デバッガ選択状態におけるリードアクセスにおいて、“１”のリードイネーブル信号ＲＥ２と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ２とをセレクタ２７を介し、リードイネーブル信号ＲＥ及びアドレス信号ＡＤＤとして内部バス２２に出力し、これによって記憶部３０にリード動作を行わせる。アドレス信号ＡＤＤ２にて指定されるアドレスは、リードコマンドにて指定されるアクセス対象アドレスと一致する。
【００４９】
リードアクセスに応答するリード動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０又はデバッグ制御部２１から入力されたアドレス信号ＡＤＤにより指定されるアドレスの記憶領域の格納データを読み出し、読み出したデータをリードデータＲＤとして内部バス２２に出力する。リード動作により内部バス２２に出力されたリードデータＲＤは、内部バス２２とＣＰＵ２０及びデバッグ制御部２１との間の配線を介してＣＰＵ２０及びデバッグ制御部２１に入力される。
【００５０】
図４（ａ）及び（ｂ）を参照して、ライトアクセス及びライト動作について更に説明を加える。ＣＰＵ選択状態においてＣＰＵ２０は自身が実行するプログラムに基づきライトアクセスを行うことができ、デバッガ選択状態においてデバッグ制御部２１は受信したライトコマンドに基づきライトアクセスを行うことができる。
【００５１】
図４（ａ）に示す如く、ＣＰＵ２０は、ＣＰＵ選択状態におけるライトアクセスにおいて、“１”のライトイネーブル信号ＷＥ１と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ１と、アドレス信号ＡＤＤ１により指定されるアドレスの記憶領域に書き込まれるべきライトデータＷＤ１とを、セレクタ２７を介し、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤとして、内部バス２２に出力し、これによって記憶部３０にライト動作を行わせる。
【００５２】
図４（ｂ）に示す如く、デバッグ制御部２１は、デバッガ選択状態におけるライトアクセスにおいて、“１”のライトイネーブル信号ＷＥ２と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ２と、アドレス信号ＡＤＤ２により指定されるアドレスの記憶領域に書き込まれるべきライトデータＷＤ２とを、セレクタ２７を介し、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤとして、内部バス２２に出力し、これによって記憶部３０にライト動作を行わせる。アドレス信号ＡＤＤ２にて指定されるアドレスは、ライトコマンドにて指定されるアクセス対象アドレスと一致する。ライトデータＷＤ２は、ライトコマンドにて指定されるライトデータと一致する。
【００５３】
ライトアクセスに応答するライト動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０又はデバッグ制御部２１から入力されたアドレス信号ＡＤＤにより指定されるアドレスの記憶領域に対し、ＣＰＵ２０又はデバッグ制御部２１からのライトデータＷＤに応じたデータを格納する。ライト動作後における対応する記憶領域の格納データはライトデータＷＤと一致することもあるし、仕様によっては、ライトデータＷＤに基づくデータではあるもののライトデータＷＤとは一致しないこともある。
【００５４】
ＣＰＵ２０は、原則としてセレクタ２７の状態をＣＰＵ選択状態とし、デバッグ制御部２１による内部バス２２へのアクセスが必要な時に限りセレクタ２７の状態をデバッガ選択状態とする。これを実現する制御を、ＣＰＵ２０が備えるステートマシンの動作との関係において詳細に説明する。
【００５５】
図５は、ステートマシンの状態遷移図である。ステートマシンはＣＰＵ２０におけるプログラムの実行状態を制御する。ステートマシンは、４つの状態であるアイドルステート、プリフェッチステート、フェッチステート及びブレークステートの何れかのステート（状態）をとる。ステートマシンの実体は、ＣＰＵ２０におけるプログラムの実行状態が、それら４つの状態の何れかであるかを指し示す値を格納したレジスタである。アイドルステートは、ＣＰＵ２０によるプログラムの実行が開始される前の状態であり、ステートマシンの初期状態はアイドルステートである。ＬＳＩ１１に対する電源供給が開始されると、まずステートマシンの状態はアイドルステートとなる。
【００５６】
ＬＳＩ１１に対する電源供給の開始後、ＬＳＩ１１にて所定の初期化動作が実行され、プログラムの実行を開始する準備が整うと、ステートマシンはアイドルステートからプリフェッチステートに遷移し、その後、フェッチステートに遷移する。プリフェッチステートはフェッチステートへの遷移直前のステートであり、アイドルステート又はブレークステートからフェッチステートに遷移する際には、プリフェッチステートを介してからフェッチステートに遷移する。プリフェッチステートは、プログラムメモリへのアクセスを開始又は再開するためのステートである。
【００５７】
プログラムメモリに格納されるプログラムはＣＰＵ２０が実行すべき命令（命令コード）の束から成り、ＣＰＵ２０は、ＣＰＵ２０の動作クロックに同期してプログラムメモリから必要な命令を順次読み出し、順次読み出した命令を、デコード等を経て順次実行することによりプログラムを実行してゆく。プログラムメモリから必要な命令を読み出して取得する動作はフェッチと称される。フェッチステートは、プログラムを構成する命令のフェッチ及び実行が行われるステートである。フェッチが行われてないアイドルステート又はブレークステートからフェッチステートに遷移する際には、プログラムメモリへのアクセスを開始又は再開するための区間が１クロック分の時間だけ存在し、その区間においてステートマシンはプリフェッチステートとなる。故に、アイドルステート又はブレークステートからプリフェッチステートへ遷移した後、１クロック分の時間が経過すればプリフェッチステートからフェッチステートに遷移することになる。１クロック分の時間とは、ＣＰＵ２０の動作クロックの１周期分の長さに相当する。
【００５８】
プリフェッチステート及びフェッチステートにおいてセレクタ２７の状態はＣＰＵ選択状態とされる。即ち、ＣＰＵ２０は、プリフェッチステート及びフェッチステートにおいて“０”の選択制御信号ＣＮＴを出力することによりセレクタ２７の状態をＣＰＵ選択状態とする。フェッチステートへの遷移が発生することでＣＰＵ２０にてプログラムが実行開始された後は、デバッグ制御部２１からのデバッガアクセス開始信号ＳａｃｓがＣＰＵ２０にて受信されない限り、ステートマシンの状態はフェッチステートに維持される。尚、アイドルステートにおいてもセレクタ２７の状態はＣＰＵ選択状態である（但し、デバッガ選択状態とされても構わない）。
【００５９】
フェッチステートにて命令のフェッチ及び実行が繰り返されることでプログラムの実行が進行してゆく。フェッチステートではＣＰＵ選択状態とされているため、ＣＰＵ２０は、自身が実行するプログラムに従って内部バス２２に対し自由にアクセスでき、記憶部３０に必要なリード動作又はライト動作を行わせることができる。
【００６０】
フェッチステートへの遷移後におけるＬＳＩ１１の動作フローチャートを図６に示す。図５及び図６を参照しつつ、フェッチステートへの遷移後のＬＳＩ１１の動作を説明する。
【００６１】
ＬＳＩ１１の起動後、デバッグ制御部２１は、外部デバッグ装置１２からのコマンドの受信の有無を監視している。デバッグ制御部２１は、ステップＳ１１にて外部デバッグ装置１２からリードコマンド又はライトコマンドを受信すると、その受信に応答して、ステップＳ１２において、ＣＰＵ２０に対し（換言すればステートマシンに対し）所定のデバッガアクセス開始信号Ｓａｃｓを出力し、更にリードアクセス用の信号又はライトアクセス用の信号をセレクタ２７に対して出力する。デバッガアクセス開始信号Ｓａｃｓは、デバッグ制御部２１による内部バス２２へのアクセスを開始することを通知する信号であるとも言えるし、内部バス２２へのアクセスの権限をデバッグ制御部２１に明け渡すことを要求する信号であるとも言える。
【００６２】
ステップＳ１１にてリードコマンドを受信した場合にはステップＳ１２にてリードアクセス用の信号がセレクタ２７に対して出力される。リードアクセス用の信号は、“１”のリードイネーブル信号ＲＥ２と上述のアドレス信号ＡＤＤ２と、から成る。アドレス信号ＡＤＤ２にて指定されるアドレスは、リードコマンドにて指定されるアクセス対象アドレスと一致する。
ステップＳ１１にてライトコマンドを受信した場合にはステップＳ１２にてライトアクセス用の信号がセレクタ２７に対して出力される。ライトアクセス用の信号は、“１”のライトイネーブル信号ＷＥ２と上述のアドレス信号ＡＤＤ２及びライトデータＷＤ２とから成る。アドレス信号ＡＤＤ２にて指定されるアドレスは、ライトコマンドにて指定されるアクセス対象アドレスと一致する。ライトデータＷＤ２は、ライトコマンドにて指定されるライトデータと一致する。
【００６３】
セレクタ２７に対するリードアクセス用の信号又はライトアクセス用の信号の出力タイミングは、デバッガアクセス開始信号Ｓａｃｓの出力タイミングと同時であっても良いし、同時でなくても良い。セレクタ２７に対するリードアクセス用の信号又はライトアクセス用の信号の出力は、デバッグ制御部２１による内部バス２２への実際のアクセスが実行される段階で行われておれば良い。
【００６４】
尚、デバッグ作業では、ＣＰＵ２０によるプログラムの実行中に記憶部３０へのアクセスを行うことが有益であり、故に、リードコマンド又はライトコマンドは基本的にステートマシンがフェッチステートにあるときに発行される。従ってここでは、ステートマシンがフェッチステートにあるときにデバッガアクセス開始信号Ｓａｃｓが出力されることを考える。
【００６５】
ＣＰＵ２０にてデバッガアクセス開始信号Ｓａｃｓの入力を受けると、ステップＳ１３において、その入力に応答してステートマシンが直ちにフェッチステートからブレークステートに遷移すると共に、“１”の選択制御信号ＣＮＴがＣＰＵ２０からセレクタ２７に対して出力される。
【００６６】
ブレークステートではプログラムの実行は停止される（詳細には命令のフェッチ及び実行が停止される）。“１”の選択制御信号ＣＮＴは、ステートマシンがブレークステートにあることを示す信号として機能し、“１”の選択制御信号ＣＮＴを受けてセレクタ２７の状態はＣＰＵ選択状態からデバッガ選択状態へと切り替わる。つまり、ブレークステートにおいてセレクタ２７の状態はデバッガ選択状態とされる。逆に言えば、セレクタ２７の状態がデバッガ選択状態とされているときにおいて、ステートマシンはブレークステートにあり、故に、プログラムの実行は停止されている（詳細には命令のフェッチ及び実行が停止されている）。
【００６７】
ステップＳ１３に続くステップＳ１４において、デバッグ制御部２１は、セレクタ２７を介し内部バス２２に対して（換言すればセレクタ２７及び内部バス２２を介し記憶部３０に対して）必要なアクセスを行う。ここにおけるアクセスは、ステップＳ１１にてリードコマンドを受信している場合には上述のリードアクセス用の信号をセレクタ２７を介し内部バス２２に出力することを指し、ステップＳ１１にてライトコマンドを受信している場合には上述のライトアクセス用の信号をセレクタ２７を介し内部バス２２に出力することを指す。内部バス２２に出力されたリードアクセス用の信号又はライトアクセス用の信号は記憶部３０に伝達される。リードアクセス用の信号の入力に基づき記憶部３０にて上述のリード動作が行われる、又は、ライトアクセス用の信号の入力に基づき記憶部３０にて上述のライト動作が行われる。
【００６８】
ステップＳ１４におけるアクセスが終了すると、ステップＳ１５においてデバッグ制御部２１からＣＰＵ２０（換言すればステートマシン）に対し所定のデバッガアクセス終了信号Ｅａｃｓが出力される。
【００６９】
ＣＰＵ２０にてデバッガアクセス終了信号Ｅａｃｓの入力を受けると、ステップＳ１６において、その入力に応答してステートマシンが直ちにブレークステートからプリフェッチステートに遷移し、その後、フェッチステートに遷移する（即ち、ブレークステートからプリフェッチステートを介してフェッチステートに戻る）。また、デバッガアクセス終了信号Ｅａｃｓの入力に応答して、ブレークステートからプリフェッチステートに遷移する際、ＣＰＵ２０は選択制御信号ＣＮＴの値を“１”から“０”に切り替えることによりセレクタ２７の状態をＣＰＵ選択状態に戻す。フェッチステートに戻ることで、ブレークステートへの遷移で一時的に中断されていたプログラムの実行が再開されることになる。
【００７０】
ステップＳ１１にて受信されたコマンドがライトコマンドであった場合には、ライトコマンドの受信に伴う一連の動作は、ステップＳ１６の段階で終了する（後述のステップＳ１７の処理は実行されない）。
【００７１】
ステップＳ１１にて受信されたコマンドがリードコマンドであった場合には、ステップＳ１７の動作も実行される。ステップＳ１７において、デバッグ制御部２１は、ステップＳ１４でのアクセス（リードアクセス）に応答して記憶部３０から内部バス２２に出力されたリードデータＲＤをラッチし（保持し）、ラッチしたリードデータＲＤを外部デバッグ装置１２に対して送信する。このリードデータＲＤは外部デバッグ装置１２からホストＰＣ１３に送られ、ホストＰＣ１３の表示画面上に表示されるなどしてデバッグ作業に供される。
【００７２】
デバッグ制御部２１は、上記ラッチを行うためのラッチ回路（不図示）を備えている。図６では、ステップＳ１６の後にステップＳ１７の処理が実行されるかのように図示されているが、上記ラッチのタイミングはステップＳ１４でのアクセス（リードアクセス）に応答した記憶部３０からのリードデータＲＤが内部バス２２に表れている区間であれば任意である。ステップＳ１７における外部デバッグ装置１２へのリードデータＲＤの送信は、上記ラッチの後の任意のタイミングで行われて良い。例えば、ステップＳ１６にてステートマシンがフェッチステートに戻ってプログラムの実行が再開された後、プログラムの実行に並行して、外部デバッグ装置１２へのリードデータＲＤの送信が行われて良い。
【００７３】
上述の如く、デバッグシステム１０では、原則としてセレクタ２７の状態がＣＰＵ選択状態とされ、所定コマンド（リード又はライトコマンド）がデバッグ制御部２１にて受信されると、デバッグ制御部２１及びＣＰＵ２０の協働によりセレクタ２７の状態が一時的にデバッガ選択状態に切り替えられる（ステップＳ１１〜Ｓ１３）。そして、セレクタ２７の状態がデバッガ選択状態とされているときにおいてデバッグ制御部２１がセレクタ２７を介し所定コマンドに応じた内部バス２２へのアクセス（換言すれば、セレクタ２７及び内部バス２２を介した記憶部３０へのアクセス）を行う（ステップＳ１４）。
【００７４】
このような構成及び動作によれば、バス調停回路やＤＭＡコントローラは不要であり（従って回路追加は小規模で済み）、デバッガが記憶部３０にアクセスするために必要なオーバーヘッドを極めて小さくすることができる。ブレークステートへの遷移は１クロック分の時間で足り、ブレークステートからの復帰にも１クロック分の時間があれば足る。これに、記憶部３０へのアクセスに必要な時間が加わるが、通常、ＬＳＩ内蔵ＲＡＭ等に対しては１クロック分の時間でアクセスが可能であるため、僅か３クロック分のオーバーヘッドでデバッガの記憶部３０へのアクセスを実現でき、ＣＰＵ２０の通常動作を殆ど邪魔しない。
【００７５】
プログラムの実行開始後は（即ちアイドルステートからプリフェッチステートを経てフェッチステートに遷移した後は）、リードコマンド又はライトコマンドの受信に応答してセレクタ２７の状態が一時的にデバッガ選択状態とされることを除き、セレクタ２７の状態はＣＰＵ選択状態される。このため、プログラムの実行に伴うＣＰＵ２０の内部バス２２へのアクセスは、上記のオーバーヘッドの区間を除き、何ら阻害されない。
【００７６】
上述の説明から理解されるが、リードコマンドを受信した場合、デバッグ制御部２１は、デバッガ選択状態においてリードアクセス用の信号の出力によりセレクタ２７を介しリードコマンドに応じたリードアクセスを内部バス２２に対して行う（換言すれば、リードコマンドに応じたリードアクセスをセレクタ２７及び内部バス２２を介し記憶部３０に対して行う）。詳細には、このリードアクセスにおいて、デバッグ制御部２１は、リードコマンドにより指定されたアドレス（アクセス対象アドレス）の記憶領域内のデータをリードデータＲＤとして記憶部３０から取得するためのアクセスをセレクタ２７を介し内部バス２２に対して行い（換言すれば、セレクタ２７及び内部バス２２を介し記憶部３０に対して行い）、これによって得られたリードデータＲＤを外部デバッグ装置１２に対して送信する。
【００７７】
一方、ライトコマンドを受信した場合、デバッグ制御部２１は、デバッガ選択状態においてライトアクセス用の信号の出力によりセレクタ２７を介しライトコマンドに応じたライトアクセスを内部バス２２に対して行う（換言すれば、ライトコマンドに応じたライトアクセスをセレクタ２７及び内部バス２２を介し記憶部３０に対して行う）。詳細には、このライトアクセスにおいて、デバッグ制御部２１は、ライトコマンドにより指定されたアドレス（アクセス対象アドレス）の記憶領域に対しライトコマンドにより指定されたライトデータを書き込むためのアクセスをセレクタ２７を介し内部バス２２に対して行う（換言すれば、セレクタ２７及び内部バス２２を介し記憶部３０に対して行う）。
【００７８】
図７に、リードコマンドの受信に応答したＬＳＩ１１のタイミングチャートを示す。図７において、波形ｙ１はデバッガクロックの波形を示し、波形ｙ４はＣＰＵクロックの波形を示す。ＣＰＵクロックはＣＰＵ２０の動作クロックを指す。デバッガクロックは、デバッグ制御部２１の一部と外部デバッグ装置１２の動作クロックである。デバッグ制御部２１の残部はＣＰＵ２０の動作クロックに同期して動作する。デバッガクロックは、例えば、外部デバッグ装置１２内のクロック生成回路（不図示）にて生成されて、外部デバッグ装置１２及びデバッグ制御部２１間の通信線を介してデバッグ制御部２１に提供される。ＣＰＵクロックとデバッガクロックは互いに非同期である。ＣＰＵクロック及びデバッガクロックの周波数の一致／不一致は問わない。通常、デバッガクロックの周波数がＣＰＵクロックの周波数よりも低い。
【００７９】
デバッガクロック及びＣＰＵクロックを含む任意のクロックは、ハイレベル及びローレベルを交互に且つ周期的にとる矩形波信号である。任意のクロック又は信号について、ハイレベルはローレベルよりも電位が高い。任意の信号において、ローレベルからハイレベルへの切り替わりをアップエッジと称し、ローレベルからハイレベルへの切り替わりのタイミングをアップエッジタイミングと称する。ここでは、デバッガクロックに基づいて動作するデバッグ制御部２１の一部は、デバッガクロックのアップエッジを契機に、自身への入力信号を取り込んだり、出力すべき信号のレベルを変化させたり、自身の状態を変化させたりするものとし、ＣＰＵクロックに基づいて動作するデバッグ制御部２１の残部及びＣＰＵ２０（ステートマシンを含む）は、ＣＰＵクロックのアップエッジを契機に、自身への入力信号を取り込んだり、出力すべき信号のレベルを変化させたり、自身の状態を変化させたりするものとする。時間の経過につれて、タイミングｔ１、ｔ２、ｔ３、ｔ４、ｔ５、ｔ６、ｔ７及びｔ８が、この順番で訪れる。タイミングｔ２、ｔ３、ｔ４、ｔ５、ｔ６、ｔ７及びｔ８の夫々において、ＣＰＵクロックのアップエッジが生じる。タイミングｔ２及びｔ３間、タイミングｔ３及びｔ４間、タイミングｔ４及びｔ５間、タイミングｔ５及びｔ６間、タイミングｔ６及びｔ７間、タイミングｔ７及びｔ８間の時間長さは、全て、ＣＰＵクロックの１周期に等しい。
【００８０】
図７において、波形ｙ２は、デバッガデータを表しており、外部デバッグ装置１２からデバッグ制御部２１へ送信される信号を模式的に示したものである。デバッガデータとしてリードコマンドやライトコマンドがデバッグ制御部２１に送られる。図７の例では、タイミングｔ１以前又はタイミングｔ１にて外部デバッグ装置１２からデバッグ制御部２１へのリードコマンドの発行及び送信が完了しており、タイミングｔ１において、デバッグ制御部２１は、自身の内部にて、波形ｙ３に示されるデバッガアクセスパルスを発生させる。タイミングｔ１はデバッガクロックにおける或る１つのアップエッジタイミングである。デバッガアクセスパルスはデバッガクロックに同期するパルス信号であり、デバッグ制御部２１では、デバッガアクセスパルスをＣＰＵクロックにて同期化することで波形ｙ８に示されるアクセス開始パルスを生成する。アクセス開始パルスはタイミングｔ２及びｔ３間に生じる。アクセス開始パルスは上述のデバッガアクセス開始信号Ｓａｃｓとしてデバッグ制御部２１からＣＰＵ２０に出力される。
【００８１】
アクセス開始パルス（信号Ｓａｃｓ）の入力に応答し、タイミングｔ３において、ＣＰＵ２０は、波形ｙ６にて示されるプログラムメモリリードイネーブル信号をハイレベルからローレベルに切り替えると共に、ステートマシンをブレークステートに遷移させるためのブレークパルスを発生させる。
【００８２】
ＣＰＵ２０には、次にフェッチされるべき命令が格納された、プログラムメモリ上の番地（以下、プログラムメモリアドレスと称する）をカウント及び指定するプログラムカウンタが設けられており、プログラムメモリリードイネーブル信号がハイレベルであるときのみ、プログラムカウンタを利用してプログラムメモリアドレスがＣＰＵクロックに同期し且つＣＰＵクロックの周期にて順次更新されてゆく。図７において“ｙ５”はプログラムメモリアドレスの時系列変化を表している。プログラムメモリリードイネーブル信号はタイミングｔ３及びｔ５間においてのみローレベルとされ、タイミングｔ３及びｔ５間においてプログラムメモリアドレスは有意な値を持たない（図７では、有意な値でないことを示すものとして“０”を図示している）。
【００８３】
図７において“ｙ１０”はステートマシンの状態の時系列変化を表している。ステートマシンがフェッチステートにあるとき、プログラムメモリアドレスに対してアクセスが行われ、次クロックに（即ちＣＰＵクロックにおける１クロック分の時間経過の後に）、アクセスの対象となったプログラムメモリアドレスに格納された命令がフェッチされ且つラッチされる。即ち例えば、タイミングｔ２及びｔ３間におけるプログラムメモリアドレスが“２４”である場合、タイミングｔ３におけるＣＰＵクロックのアップエッジにて、“２４”のプログラムメモリアドレスの記憶領域に格納された命令（図７では命令コード“２４ｂｂ”に対応）がフェッチされ、フェッチされた命令がタイミングｔ３及びｔ４間でラッチされる。タイミングｔ４まではステートマシンはフェッチステートにあって命令のフェッチ及び実行が行われている。
【００８４】
波形ｙ９にて示されるブレークパルスがステートマシンに与えられることで、タイミングｔ４を境にステートマシンがフェッチステートからブレークステートに遷移する。ブレークステートでは上述の如くセレクタ２７の状態がデバッガ選択状態とされる。タイミングｔ４及びｔ５間でリードコマンドに応じたリードアクセス用の信号がセレクタ２７を通じて内部バス２２に伝達されるよう、デバッグ制御部２１は、リードアクセス用の信号をセレクタ２７に出力している。波形ｙ１１は内部バス２２に加わるリードイネーブル信号ＲＥを表しており、タイミングｔ４及びｔ５間では、デバッグ制御部２１からのリードアクセス用の信号によりリードイネーブル信号ＲＥが“１”となる（図７においてアドレス信号ＡＤＤは図示せず）。
【００８５】
デバッグ制御部２１によるリードアクセスが完了すると、デバッグ制御部２１は、波形ｙ１３に示されるアクセス終了パルスを生成する。アクセス終了パルスはタイミングｔ５及びｔ６間に生じる。アクセス終了パルスは上述のデバッガアクセス終了信号Ｅａｃｓとしてデバッグ制御部２１からＣＰＵ２０に出力される。
【００８６】
アクセス終了パルス（信号Ｅａｃｓ）の入力に応答し、タイミングｔ５においてＣＰＵ２０によりプログラムメモリリードイネーブル信号はローレベルからハイレベルに切り替えられ、タイミングｔ５を境にステートマシンはブレークステートからプリフェッチステートに遷移する。プログラムメモリリードイネーブル信号がハイレベルに戻ったことを受け、上述したようなプログラムメモリアドレスの更新動作が再開される。
【００８７】
ブレークステートからプリフェッチステートに遷移して１クロック分の時間が経過するとタイミングｔ６に至り、タイミングｔ６を境にステートマシンはプリフェッチステートからフェッチステートに遷移する。タイミングｔ６及びｔ７間では、タイミングｔ３及びｔ４間でラッチされていた命令（図７において命令コード“２４ｂｂ”に対応）の次にフェッチされるべき命令（図７において命令コード“２５ｂｂ”に対応）を格納したプログラムメモリアドレス（図７においてプログラムメモリアドレス“２５”に対応）がプログラムカウンタにて指し示され、次のクロック周期であるタイミングｔ７及びｔ８間にて、上記次にフェッチされるべき命令（図７において命令コード“２５ｂｂ”に対応）が実際にフェッチされ且つラッチされる。図７において、“ｙ７”はフェッチを通じてラッチされた命令（命令コード）の時系列変化を表しており、その内、“ｆｆｆｆ”が示された区間（即ちタイミングｔ４及びｔ７間の区間）は、プログラムの実行停止区間（命令のフェッチ及び実行の停止区間）を表している。上述したように、３クロック分のオーバーヘッドでデバッグ制御部２１の記憶部３０へのアクセスを実現できていることが分かる。
【００８８】
図７において、“ｙ１２”は内部バス２２に表れるリードデータＲＤを表しており、内部バス２２に表れたリードデータＲＤは、タイミングｔ６にてデバッグ制御部２１によりラッチされる。“ｙ１４”はラッチされたリードデータＲＤを表している。ラッチされたリードデータＲＤは、タイミングｔ６以降において、デバッグ制御部２１から外部デバッガ装置１２へ送信される。
【００８９】
リードコマンドの受信に応答したＬＳＩ１１のタイミングチャートを示したが、ライトコマンドの受信に応答したＬＳＩ１１のタイミングチャートも同様となる。但し、ライトコマンドを受信した場合には、タイミングｔ４及びｔ５間において、デバッグ制御部２１からライトアクセス用の信号がセレクタ２７を介して内部バス２２に出力され、当然、記憶部３０から内部バス２２へのリードデータＲＤの出力及びデバッグ制御部２１によるリードデータＲＤのラッチは行われない。
【００９０】
＜＜第２実施形態＞＞
本発明の第２実施形態を説明する。第２実施形態では、上述の第１実施形態に対して適用可能な幾つかの応用技術、変形技術などを説明する。第２実施形態は以下の実施例ＥＸ２＿１〜ＥＸ２＿５を含む。
【００９１】
［実施例ＥＸ２＿１］
実施例ＥＸ２＿１を説明する。ＬＳＩ１１内に複数のＣＰＵ２０が設けられていても良い。この場合、２以上のＣＰＵ２０が同時に内部バス２２に対してアクセスを行うことが無いように、各ＣＰＵ２０のアクセスタイミングを調整する調停回路（不図示）がＬＳＩ１１に設けられる。説明の具体化のため、図８に示す如く、複数のＣＰＵ２０としてＣＰＵ２０［１］及び２０［２］が設けられている場合を考えると、調停回路の構成要素として上述のセレクタ２７の代わりにセレクタ２７’が設けられる。セレクタ２７’は、ＣＰＵ２０［１］からのアクセス用の信号が伝搬される信号線１１１、ＣＰＵ２０［２］からのアクセス用の信号が伝搬される信号線１１２、及び、デバッガ制御部２１からのアクセス用の信号が伝搬される信号線１１３の内、何れか１つを選択的に内部バス２２に接続する。信号線１１１〜１１３の各々は複数の配線から成る。ＣＰＵ２０［１］からのアクセス用の信号、ＣＰＵ２０［２］からのアクセス用の信号、及び、デバッガ制御部２１からのアクセス用の信号は、夫々に、リードイネーブル信号、ライトイネーブル信号及びアドレス信号を含み、ライトアクセス時にはライトデータを更に含む。
【００９２】
外部デバッグ装置１２からのリードコマンド又はライトコマンドが受信される前において、調停回路は、信号線１１１又は１１２が内部バス２２に接続されるようセレクタ２７’を制御する。デバッガ制御部２１は、外部デバッグ装置１２からリードコマンド又はライトコマンドを受信したとき、各ＣＰＵ２０に対してデバッガアクセス開始信号Ｓａｃｓを出力し、各ＣＰＵ２０はデバッガアクセス開始信号Ｓａｃｓの入力に応答して各々のステートマシンをブレークステートに遷移させる。調停回路は、全ＣＰＵ２０のステートマシンがブレークステートに遷移すると、信号線１１３が内部バス２２に接続されるようセレクタ２７’を制御すれば良い。
【００９３】
デバッガ制御部２１によるアクセスが終了すると、デバッガ制御部２１から各ＣＰＵ２０及び調停回路に対してデバッガアクセス終了信号Ｅａｃｓが出力され、各ＣＰＵ２０はデバッガアクセス終了信号Ｅａｃｓの入力に応答して各々のステートマシンをブレークステートからプリフェッチステートを介してフェッチステートに遷移させる。デバッガ制御部２１からのデバッガアクセス終了信号Ｅａｃｓの出力を受けて、調停回路は、信号線１１１又は１１２が内部バス２２に接続される状態へとセレクタ２７’の状態を戻せば良い。内部バス２２へアクセスし得るＣＰＵ２０が３つ以上ある場合も同様である。
【００９４】
［実施例ＥＸ２＿２］
実施例ＥＸ２＿２を説明する。第１実施形態で述べた方法を利用すれば、ＣＰＵ２０内に設けられたレジスタ（以下、ＣＰＵ内部レジスタと称する）へのデバッガによるアクセスも可能である。
【００９５】
この場合、図９に示す如く、ＣＰＵ２０内に、ＣＰＵ内部レジスタ１３１と、ＣＰＵ内部バス１３２と、ＣＰＵ内部セレクタ１３３と、ＣＰＵ内部バスコントローラ１３４とを設けておき、ＣＰＵ内部レジスタ１３１、ＣＰＵ内部バス１３２、ＣＰＵ内部セレクタ１３３、ＣＰＵ内部バスコントローラ１３４を、夫々、第１実施形態における記憶部３０、内部バス２２、セレクタ２７、ＣＰＵ２０と見立てて、第１実施形態と同様の接続関係及び動作を実現すれば良い。
【００９６】
［実施例ＥＸ２＿３］
実施例ＥＸ２＿３を説明する。図１の構成においてＣＰＵ２０は内部バス２２に対してアクセスを行う処理部の例であるが、本発明において、そのような処理部はＣＰＵに限定されず、内部バス２２に対してアクセスを行う任意の部位が処理部に成り得る。
【００９７】
［実施例ＥＸ２＿４］
実施例ＥＸ２＿４を説明する。ＬＳＩ１１を構成する各回路素子は半導体集積回路の形態で形成され、当該半導体集積回路を、樹脂にて構成された筐体（パッケージ）内に封入することで半導体装置が構成される。但し、複数のディスクリート部品を用いてＬＳＩ１１内の回路と同等の回路を構成するようにしても良い。
【００９８】
［実施例ＥＸ２＿５］
実施例ＥＸ２＿５を説明する。本発明に係るデバッグシステムは、ＬＳＩ１１にて例示される半導体装置と、半導体装置に接続された外部装置と、を備える。ここにおける外部装置は、図１の構成においては、外部デバッグ装置１２を指すと解しても良いし、外部デバッグ装置１２及びホストＰＣ１３の双方を含むと解しても良い。
【００９９】
本発明の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本発明の実施形態の例であって、本発明ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
【符号の説明】
【０１００】
１０  デバッグシステム
１１  ＬＳＩ
１２  外部デバッグ装置
１３  ホストコンピュータ
１４  デバッグソフトウェア
２０  ＣＰＵ
２１  デバッグ制御部
２２  内部バス
２３  ＲＯＭ
２４  ＲＡＭ
２５  ペリフェラル
２６  レジスタ
２７  セレクタ
３０  記憶部
【図１】
2020149214.tif 000003
【図２】
2020149214.tif 000004
【図３】
2020149214.tif 000005
【図４】
2020149214.tif 000006
【図５】
2020149214.tif 000007
【図６】
2020149214.tif 000008
【図７】
2020149214.tif 000009
【図８】
2020149214.tif 000010
【図９】
2020149214.tif 000011