(57)【特許請求の範囲】
【請求項１】
マスタとスレーブ間のデータ転送に供するバスをバスモニタ出力するバスモニタ回路において、
前記マスタが前記スレーブに書き込む書き込みデータを記憶する第１のＦＩＦＯと、
第１のＦＩＦＯと異なるタイミングで動作する第２のＦＩＦＯであって前記マスタが前記スレーブから読み出す読み出しデータを記憶する第２のＦＩＦＯと、
第１のＦＩＦＯ及び第２のＦＩＦＯを制御する制御部と、
書き込みデータ又は読み出しデータを選択する選択部を具備し、
制御部は、バス上でマスタからスレーブ方向に転送されるアクセス情報をアクセス情報ＦＩＦＯに順次格納し、その後、前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性が書き込みアクセスか読み出しアクセスかに応じて、前記アクセス情報の属性が前記書き込みアクセスである場合には前記第１のＦＩＦＯに当該アクセス情報に対応する書き込みデータが格納されるのを待って前記第１のＦＩＦＯから当該格納された書き込みデータを出力させ、前記アクセス情報の属性が前記読み出しアクセスである場合には前記第２のＦＩＦＯに当該アクセス情報に対応する読み出しデータが格納されるのを待って前記第２のＦＩＦＯから当該格納された読み出しデータを出力させるとともに、前記アクセス情報ＦＩＦＯからアクセス情報を出力させ、
選択部により第１のＦＩＦＯの先頭に格納されたアクセス情報の属性に従って書き込みデータ又は読み出しデータを選択してアクセス情報とペアにして同一サイクルで出力することを特徴とするバスモニタ回路。
【請求項２】
前記制御部は、バス上でマスタからスレーブ方向に転送されるアクセス情報を前記アクセス情報ＦＩＦＯに順次格納するとともに、アクセス情報と同一タイミングで転送される書き込みデータを前記アクセス情報ＦＩＦＯと同一のＦＩＦＯとして構成される前記第１のＦＩＦＯに順次格納し、
バス上でスレーブからマスタ方向に返送される読み出しデータを前記第２のＦＩＦＯに順次格納し、
前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性が書き込みアクセスの場合、アクセス情報と対応する書き込みデータとを第１のＦＩＦＯから出力させ、
前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性が読み出しアクセスの場合、第２のＦＩＦＯが出力可能になるのを待って第１のＦＩＦＯからアクセス情報を出力させるとともに、第２のＦＩＦＯから読み出しデータを出力させるようにした請求項１記載のバスモニタ回路。
【請求項３】
前記アクセス情報ＦＩＦＯを更に具備し、
前記制御部は、バス上でマスタからスレーブ方向に転送されるアクセス情報を前記アクセス情報ＦＩＦＯに順次格納し、
バス上でマスタからスレーブ方向に転送される書き込みデータを前記第１のＦＩＦＯに順次格納し、
バス上でスレーブからマスタ方向に返送される読み出しデータを前記第２のＦＩＦＯに順次格納し、
前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性が書き込みアクセスの場合、書き込みデータが前記第１のＦＩＦＯに格納されるのを待って、前記第１のＦＩＦＯから書き込みデータを出力させるとともに、前記アクセス情報ＦＩＦＯからアクセス情報を出力させ、
前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性が読み出しアクセスの場合、読み出しデータが前記第２のＦＩＦＯに格納されるのを待って、前記第２のＦＩＦＯから読み出しデータを出力させるとともに、前記アクセス情報ＦＩＦＯからアクセス情報を出力させるようにした請求項１記載のバスモニタ回路。
【請求項４】
前記制御部は、前記アクセス情報ＦＩＦＯのオーバーフローを検出するとエラーフラグビットによりエラー状態を通知するとともに、
前記アクセス情報ＦＩＦＯの先頭に格納されオーバーフローにより消失するアクセス情報をエラーフラグビットとともに出力するようにした請求項１乃至請求項３のいずれかに記載のバスモニタ回路。
【請求項５】
バスモニタ出力をラッチする遅延部と、
時間的に前後するバスアクセスデータがインクリメンタルアドレスへのアクセスであるか否かを比較判定するアドレス比較部と、
バスモニタ出力のアドレス部をデータ部として共用させるアドレス情報選択部を更に具備する請求項１乃至請求項４のいずれかに記載のバスモニタ回路。
【請求項６】
バスモニタ出力をラッチする遅延部と、
時間的に前後するバスアクセスデータのアドレスの上位ビットが一致しているか否かを比較判定するアドレス比較部と、
バスモニタ出力のデータ部をアドレスの上位ビットとして共用させるデータ情報選択部を更に具備する請求項１乃至請求項４のいずれかに記載のバスモニタ回路。
【請求項７】
アクセス情報を前記アクセス情報ＦＩＦＯに格納するタイミングでタイムスタンプ情報を付加するようにした請求項１乃至請求項６のいずれかに記載のバスモニタ回路。
【請求項８】
異なるタイミングで動作する第１のＦＩＦＯと第２のＦＩＦＯを用いてマスタとスレーブ間のデータ転送に供するバスをバスモニタ出力するバスモニタ方法において、
バス上でマスタからスレーブ方向に転送されるアクセス情報をアクセス情報ＦＩＦＯに順次格納し、
前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性が書き込みアクセスか読み出しアクセスかに応じて、前記アクセス情報の属性が前記書き込みアクセスである場合には前記第１のＦＩＦＯに当該アクセス情報に対応する書き込みデータが格納されるのを待って前記第１のＦＩＦＯから当該格納された書き込みデータを出力させ、前記アクセス情報の属性が前記読み出しアクセスである場合には前記第２のＦＩＦＯに当該アクセス情報に対応する読み出しデータが格納されるのを待って前記第２のＦＩＦＯから当該格納された読み出しデータを出力させるとともに、前記アクセス情報ＦＩＦＯからアクセス情報を出力させ、
前記アクセス情報ＦＩＦＯの先頭に格納されたアクセス情報の属性に従って書き込みデータ又は読み出しデータを選択し、アクセス情報とペアにして同一サイクルで出力することを特徴とするバスモニタ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、システムＬＳＩ、及びＳｏＣ（システムオンチップ）などの信号処理装置内のバスアクセス情報をモニタするバスモニタ回路及び方法に関する。特に、本発明に係るバスモニタ回路及び方法は読み出し時のパイプライン転送やスプリット転送可能なバスインタフェースプロトコルに準拠するものである。
本願は、２００９年１１月２６日付で日本国に出願された特願２００９−２６８８０９号に基づき優先権を主張し、その内容をここに援用する。
【背景技術】
【０００２】
プロセッサ、システムＬＳＩ及びＳｏＣなどの信号処理装置において、チップ内部の主要バス上のバスアクセス情報を実作動時にデバッグ用としてチップ外部にて観測するために出力するバスモニタ回路が実装されている。【０００３】
バスモニタ回路は、バスアクセス情報（即ち、アドレスや制御情報）とデータ情報とをペアにして、バスアクセスの発生順序を保証して順序どおりに出力することが望まれる。また、チップ外部にバスアクセス情報を出力するために使用する外部出力ピン数や出力クロック周波数を考慮すると、出来るだけ少ないビット数で多くのバスアクセス情報を出力できることが望まれる。【０００４】
しかし、パイプライン転送可能なバスインタフェースプロトコルにおいて読み出しアクセスと書き込みアクセスが混在した場合、その読み出しアクセスと書き込みアクセスの実際の発生順序と読み出しデータ（ＲＤＡＴ）と書き込みデータ（ＷＤＡＴ）がバス上に転送される順序とが一致しないことがある。この場合、バスインタフェースプロトコルによりバスアクセス情報とデータ情報とをペアにしてバスモニタ出力させることが困難である。【０００５】
近年、プロセッサシステムの大規模化及び高速化に伴い、バスインタフェースプロトコルもレイテンシやスループットなどの観点でより高速なアクセスを実現するインタフェース仕様に進化してきている。特に、読み出しアクセスのスループットを向上するために、例えば、ＡＭＢＡ３．０ＡＸＩやＯＣＰ（Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ）などのようなパイプライン転送やスプリット転送を可能とするバスインタフェースプロトコルが用いられることが多くなっている。このようなバスインタフェースプロトコルでは、パイプライン転送をサポートするため、読み出しアクセスと書き込みアクセスが混在した場合にコマンドの発生順序と読み出しデータと書き込みデータの転送順序が逆転することがある。【０００６】
この場合、バスモニタ回路がデータ情報の転送順序でバスモニタ出力してチップ外部でそのバスモニタ出力を観察すると、そこにはバスアクセス順序が保証されていない。バスモニタ回路のバスモニタ出力によりバスアクセスの発生順序が保証されないと、実際にチップ内部で発生しているバスアクセスの順序でのバスアクセス情報が得られないため、効率良く信頼性の高いデバッグを行なうことができない。また、バスアクセス順序が保証されないため、バスアクセス情報とデータ情報とをペアにして出力することができない。【０００７】
必要最小限のバスアクセス情報をバスアクセス順序通りに出力するため、特許文献１ではアドレス、データ及び属性を同時にラッチしてメモリに格納する技術が開示されている。特許文献１の技術では、アドレス、データ、及び属性の全てが有効であるサイクルで予め設定されたバスモニタ条件に一致したもののみを同時にラッチし、アドレス、データ及び属性をセットにして各メモリの同一アドレスに格納することで必要最小限のバスアクセス情報をバスアクセス順序通りにメモリに格納可能としている。【０００８】
特許文献２には、複数のＦＩＦＯを用いて複数のバスを同時にバスモニタ出力する技術が開示されている。特許文献２の技術では、バス毎にフィルタ条件に適合したバスアクセスのみを各ＦＩＦＯに格納し、エンプティ状態ではないＦＩＦＯの格納データを順次出力しているため、複数のバス上のバスアクセス情報を効率良くバスモニタ出力することができる。【０００９】
特許文献３には、ＰＣＩバスのアクセス制御回路で書き込み用のＦＩＦＯと読み出し用のＦＩＦＯを具備し、データ依存性を維持しながらＰＣＩバス上での読み出し破棄を最小限にする技術が開示されている。特許文献３の技術では、ペンディング状態の読み出し要求が存在する場合、書き込みアクセスのターゲットアドレスにより書き込みアクセスを抑止したり継続させたりすることにより、読み出し要求の破棄を最小限にするものである。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−３３０８７７号公報
【特許文献２】特開２００７−３１０５１６号公報
【特許文献３】特開２００２−５４２５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
パイプライン転送やスプリット転送可能なバスインタフェースプロトコルをプロセッサ、システムＬＳＩ及びＳｏＣに実装されているバスモニタ回路に適用すると、バスアクセスの発生順序を保証してバスアクセス順序通りにバスモニタ出力することができない。【００１２】
その理由は、パイプライン転送やスプリット転送可能なバスインタフェースプロトコルでは、バス上における読み出しデータと書き込みデータの転送順序が実際のバスアクセス発生順序と異なるためである。この場合、前述のバスモニタ回路ではバスアクセス発生順序通りにバスモニタ出力をすることができない。即ち、データ情報の転送順序でバスモニタ出力すると、チップ外部でバスモニタ出力を観測した際に、バスアクセス順序が保証されない。バスモニタ時にバスアクセス順序が保証されないと、実際にチップ内で発生している順序でバスアクセス情報が得られないため、効率良く信頼性の高いデバッグを行なうことができない。【００１３】
また、プロセッサ、システムＬＳＩ及びＳｏＣに実装されたバスモニタ回路にパイプライン転送やスプリット転送可能なバスインタフェースプロトコルを適用すると、アドレスや制御信号などのバスアクセス情報を対応するデータ情報とペアにして同一サイクルで出力することができない。【００１４】
その理由は、パイプライン転送やスプリット転送可能なバスインタフェースプロトコルでは、バスアクセス情報と対応するデータ情報とが同一サイクルで転送されず、両者をペアにして同一サイクルで出力することが困難なためである。即ち、バスアクセス情報とデータ情報をペアにして出力できないと、チップ外部での観測時に両者を対応付ける作業が必要となり、デバッグの信頼性が低下してしまうこととなる。【００１５】
更に、データ情報のデータビット部分は書き込みデータと読み出しデータで共用するなど、必要最小限のビット数でより多くのバスアクセス情報をバスモニタ出力可能にすることが求められる。【００１６】
これにより、バスモニタ情報をチップ外部に出力する場合、バスモニタ出力用の限られた外部出力ピン数や出力クロック周波数内でより多くのバスアクセス情報を出力可能とし、また、バスアクセス情報をチップ内のバスモニタ用メモリに格納する場合には、限られたメモリ容量でより多くのバスアクセス情報を格納可能とすることで、より信頼性の高いデバッグが可能となる。また、より少ないデータビット数でバスモニタ出力を表すことにより、外部出力ピン数、出力サイクル数及びメモリ容量を削減することが可能となる。【００１７】
特許文献１の技術にパイプライン転送可能なバスインタフェースプロトコルを適用すると、書き込みデータと読み出しデータの転送順序がアドレス発行の順序と異なったり、アドレス、データ及び属性の全てが有効なサイクルが存在しない場合には対応することができず、バスアドレス情報の順序通りにバスモニタ出力することができない。【００１８】
特許文献２の技術にパイプライン転送可能なバスインタフェースプロトコルを適用すると、読み出しデータと書き込みデータの転送順序がバスアドレス情報の転送順序と異なる場合には対応できない。例えば、１つのバス上における書き込み転送と読み出し転送を２つのバス転送として別々にＦＩＦＯに割り当てると、書き込み／読み出しデータをＦＩＦＯに格納して外部出力することは可能となるが、エンプティ状態ではないＦＩＦＯから順次データを出力する場合、複数のバス間（或いは、複数のＦＩＦＯ間）における転送順序は保証されないため、バスアクセス順序を保証してその順序通りにバスモニタ出力することができない。【００１９】
特許文献３の技術にパイプライン転送可能なバスインタフェースプロトコルに準拠したバスモニタ回路を適用すると、条件によっては本来必要な読み出しアクセスを破棄する可能性がある。また、特許文献３の技術は１つの書き込みアクセスに対応するものであるため、関連アドレスに２個以上の書き込みアクセスが発生した場合には対応できない。更に、ペンディング状態の読み出し要求が２個以上になる場合にも対応できない。
【００２０】
上記の課題に鑑み、本発明はパイプライン転送可能なバスインタフェースプロトコルを適用しても、バスアクセス発生順序を保証してその順序通りにバスモニタ出力することができ、また、バスアクセス情報とデータ情報をペアにしてバスモニタ出力することができるバスモニタ回路及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明に係るバスモニタ回路は、マスタとスレーブ間のデータ転送に供するバスをバスモニタ出力するものであり、第１のＦＩＦＯと、第１のＦＩＦＯと異なるタイミングで動作する第２のＦＩＦＯと、第１のＦＩＦＯ及び第２のＦＩＦＯを制御する制御部と、書き込みデータ又は読み出しデータを選択する選択部を具備する。制御部は、バス上でマスタからスレーブ方向に転送されるアクセス情報を第１のＦＩＦＯに順次格納し、その後、第１のＦＩＦＯの先頭に格納されたアクセス情報の属性が書き込みアクセスか読み出しアクセスかに応じて、第１のＦＩＦＯ又は第２のＦＩＦＯが出力可能となるのを待って、第１のＦＩＦＯ又は第２のＦＩＦＯから書き込みデータ又は読み出しデータを出力させるとともに、第１のＦＩＦＯからアクセス情報を出力させる。また、選択部は第１のＦＩＦＯの先頭に格納されたアクセス情報の属性に従って書き込みデータ又は読み出しデータを選択してアクセス情報とペアにして同一サイクルで出力する。【００２２】
本発明に係るバスモニタ方法は、異なるタイミングで動作する第１のＦＩＦＯと第２のＦＩＦＯを用いてマスタとスレーブ間のデータ転送に供するバスをバスモニタ出力する。このバスモニタ方法は、バス上でマスタからスレーブ方向に転送されるアクセス情報を第１のＦＩＦＯに順次格納する処理と、第１のＦＩＦＯの先頭に格納されたアクセス情報の属性が書き込みアクセスか読み出しアクセスかに応じて、第１のＦＩＦＯ又は第２のＦＩＦＯが出力可能になるのを待って、第１のＦＩＦＯ又は第２のＦＩＦＯから書き込みデータ又は読み出しデータを出力させるとともに、第１のＦＩＦＯからアクセス情報を出力させる処理と、第１のＦＩＦＯの先頭に格納されたアクセス情報の属性に従って書き込みデータ又は読み出しデータを選択し、アクセス情報とペアにして同一サイクルで出力する処理より構成される。
【発明の効果】
【００２３】
本発明は、異なるタイミングで動作する第１のＦＩＦＯ及び第２のＦＩＦＯを具備し、アクセス情報の属性が書き込みアクセスか読み出しアクセスかに応じて第１のＦＩＦＯ及び第２のＦＩＦＯを制御する。これにより、書き込みデータと読み出しデータの転送順序がバスアクセスの発生順序と逆転する可能性があるパイプライン転送可能なバスインタフェースプロトコルでも、バスアクセスの発生順序を保証してバスモニタ出力することができる。具体的には、第１のＦＩＦＯの先頭に格納されるアクセス情報が書き込みアクセスを示す場合、アクセス情報を同一サイクルで転送される書き込みデータとともにそのままバスモニタ出力する。第１のＦＩＦＯの先頭に格納されるアクセス情報が読み出しアクセスを示す場合、読み出しデータが第２のＦＩＦＯに格納されるのを待って、アクセス情報と読み出しデータとをペアにして同一サイクルでバスモニタ出力する。即ち、バスアクセスの発生順序に従って第１のＦＩＦＯに格納されるアクセス情報が元の順序のままで出力されて対応するデータ情報とペアにしてバスモニタ出力される。【００２４】
また、第１のＦＩＦＯの先頭に格納されるアクセス情報の書き込みアクセスのサイクルで読み出しデータがバス上に転送された場合、その書き込みアクセスに供するアクセス情報をバスモニタ出力し、読み出しデータは第２のＦＩＦＯに格納するようにしてもよい。これにより、バスアクセスの発生順序に対応してバスモニタ出力を行なうとともに、読み出しデータが消失するのを防止することができる。【００２５】
更に、順次発生するバスアクセスデータがバスモニタ回路のＦＩＦＯ段数をオーバーフローする場合、エラーフラグビットを用いてアドレス情報とデータ情報の不一致をチップ外部に通知するようにしてもよい。これにより、信頼性の高いバスモニタ出力と信頼性の低いバスモニタ出力をチップ外部にて区別することが可能となる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施例１に係るバスモニタ回路の構成を示すブロック図である。
【図２】実施例１に係るバスモニタ回路の動作を示すタイミング図である。
【図３】実施例１に係るバスモニタ回路の動作を示すタイミング図である。
【図４】実施例１に係るバスモニタ回路に適用されるＦＩＦＯ入力／出力制御処理を示すフローチャートである。
【図５】実施例１に係るバスモニタ回路を適用したデータ符号化／復号化処理システムの構成を示すブロック図である。
【図６】本発明の実施例２に係るバスモニタ回路の構成を示すブロック図である。
【図７】実施例２に係るバスモニタ回路の動作を示すタイミング図である。
【図８】実施例２に係るバスモニタ回路に適用されるＦＩＦＯ入力／出力制御処理を示すフローチャートである。
【図９】実施例２に係るバスモニタ回路のエラー通知機構を説明するためのタイミング図である。
【図１０】本発明の実施例３に係るバスモニタ回路の構成を示すブロック図である。
【図１１】実施例３に係るバスモニタ回路の動作を示すタイミング図である。
【図１２】本発明の実施例４に係るバスモニタ回路の構成を示すブロック図である。
【図１３】実施例４に係るバスモニタ回路の動作を示すタイミング図である。
【発明を実施するための形態】
【００２７】
本発明について、実施例を参照して詳細に説明する。
【実施例１】
【００２８】
図１は、本発明の実施例１に係るバスモニタ回路の構成を示すブロック図である。実施例１は、読み出し時のパイプライン転送やスプリット転送可能なバスインタフェースプロトコルによりバスアクセス情報を出力するバスモニタ回路を提供するものである。【００２９】
図１に示すバスモニタ回路１０は、アクセス情報／書込データＦＩＦＯ１１及び読出データＦＩＦＯ１２の２種類のＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ）部を具備する。アクセス情報／書込データＦＩＦＯ１１は、モニタ対象のバス上に転送されるコマンドやアドレスなどのアクセス情報と、そのアクセス情報と同一サイクルで転送される書き込みデータを格納するメモリである。読出データＦＩＦＯ１２は、アクセス情報と異なるサイクルで転送される読み出しデータを格納するメモリである。
バスモニタ回路１０は、アクセス情報／書込データＦＩＦＯ１１を制御するためのＦＩＦＯ制御部１４と、読出データＦＩＦＯ１２を制御するためのＦＩＦＯ制御部１５を具備する。【００３０】
ＦＩＦＯ制御部１４は、アクセス情報／書込データＦＩＦＯ１１の書き込みを制御するための書き込みイネーブル信号（ＷＥ＿Ａ）と読み出しを制御するための読み出しイネーブル信号（ＲＥ＿Ａ）を出力する。アクセス情報／書込データＦＩＦＯ１１の書き込みイネーブル信号（ＷＥ＿Ａ）は、コマンド（Ｃｍｄ）とこのバス上にてコマンドを含むアクセス情報及び書き込みデータが受け付けられたことを示すアクセプト信号（Ａｃｋ）より構成される。アクセス情報／書込データＦＩＦＯ１１の読み出しイネーブル信号（ＲＥ＿Ａ）は、アクセス情報／書込データＦＩＦＯ１１のステータス、アクセス情報／書込データＦＩＦＯ１１の先頭データのアクセス属性（書き込み／読み出しアクセス）、及び読出データＦＩＦＯ１２のステータスより構成される。
【００３１】
ＦＩＦＯ制御部１５は、読出データＦＩＦＯ１２の書き込みを制御するための書き込みイネーブル信号（ＷＥ＿Ｒ）及びその読み出しを制御するための読み出しイネーブル信号（ＲＥ＿Ｒ）を出力する。読出データＦＩＦＯ１２の書き込みイネーブル信号（ＷＥ＿Ｒ）は、バス上に読み出しデータが転送されたことを示す応答信号（Ｒｅｓｐ）より構成される。読出データＦＩＦＯ１２の読み出しイネーブル信号（ＲＥ＿Ｒ）は、読出データＦＩＦＯ１２のステータス、アクセス情報／書込データＦＩＦＯ１１のステータス、及びアクセス情報／書込データＦＩＦＯ１１の先頭データのアクセス属性（書き込み／読み出しアクセス）より構成される。【００３２】
バスモニタ回路１０は、データ情報とアクセス情報をペアで出力するために、データ情報選択部（ＳＥＬ）１６を具備する。書き込みアクセスの場合、データ情報選択部１６は書き込みデータとアクセス情報をペアで出力し、読み出しアクセスの場合、データ情報選択部１６は読み出しデータとアクセス情報をペアで出力する。【００３３】
バスモニタ回路１０において、マスタ側（プロセッサ側）からスレーブ側（メモリ側）の方向に転送されるコマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）、バイトイネーブル信号（ＢｙｔｅＥｎ）、及び書き込みデータ（ＷＤａｔａ）については、アクセス情報／書込データＦＩＦＯ１１を介して出力される。一方、スレーブ側からマスタ側の方向に転送される読み出しデータ（ＲＤａｔａ）については、読出データＦＩＦＯ１２を介して出力される。また、バスモニタ回路１０からバスモニタ信号が出力される。【００３４】
図１に示すバスモニタ回路１０には、モニタ対象のバス上に転送される信号としてコマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）、バイトイネーブル信号（ＢｙｔｅＥｎ）、書き込みデータ（ＷＤａｔａ）、アクセプト信号（Ａｃｋ）、応答信号（Ｒｅｓｐ）、及び読み出しデータ（ＲＤａｔａ）が入力される。
【００３５】
コマンド（Ｃｍｄ）は、書き込みアクセスや読み出しアクセスを行うためのコマンドやそのアクセス属性を示す。アドレス（Ａｄｄｒ）は、書き込み時や読み出し時にデータのアドレスを指定する。バイトイネーブル信号（ＢｙｔｅＥｎ）は、アクセス領域やデータサイズを指定する。書き込みデータ（ＷＤａｔａ）は、マスタ側からスレーブ側の方向に書き込むデータを示す。ここで、コマンド、アドレス、及びバイトイネーブル信号のデータビット部分がアクセス情報を示しており、書き込みデータ分だけビット数を拡張して書き込みデータをアクセス情報と同一のタイミングで転送できるようにしている。【００３６】
アクセプト信号（Ａｃｋ）は、マスタ側からのコマンドをスレーブ側で受信し、受付け可能になると送信される。応答信号（Ｒｅｓｐ）は、読み出しデータの準備ができたサイクルを示す。読み出しデータ（ＲＤａｔａ）は、スレーブ側からマスタ側の方向に転送される。上記の信号に加えて、バスモニタ回路１０の外部からバスモニタ動作の開始や停止を制御するバスモニタイネーブル信号（ＢＭＥｎ）や読み出しイネーブル信号（ＲｅａｄＥｎ）を入力するようにしてもよい。【００３７】
バスモニタ信号は、バスモニタストローブ信号（ＢＭＳＴＢ）とバスモニタ出力信号（ＢＭＤＡＴ）より構成される。バスモニタストローブ信号（ＢＭＳＴＢ）は、バスモニタ出力信号（ＢＭＤＡＴ）が有効となるサイクルを示す。【００３８】
バスモニタ出力信号（ＢＭＤＡＴ）には、複数の情報が所定のビット数にて格納されている。以下に、バスモニタ出力信号のビット構成を示す。但し、このビット構成における各情報の整列順序は一例であり、異なる整列順序としてもよい。尚、括弧［］内の数字はビット番号を示す。【００３９】
ＢＭＤＡＴ［５５］：エラーフラグ（ＥｒｒｏｒＦｌａｇ）
ＢＭＤＡＴ［５４］：コマンド、ライトイネーブル（ＷｒｉｔｅＥｎ）
ＢＭＤＡＴ［５３：３６］：アドレス（Ａｄｄｒ）
ＢＭＤＡＴ［３５：３２］：バイトイネーブル（ＢｙｔｅＥｎ）
ＢＭＤＡＴ［３１：０］：アクセスデータ【００４０】
バスモニタ出力信号（ＢＭＤＡＴ）のＢＭＤＡＴ［５５：３２］には、エラーフラグ（ＥｒｒｏｒＦｌａｇ）、コマンド（ＷｒｉｔｅＥｎ）、アドレス（Ａｄｄｒ）、及びバイトイネーブル（ＢｙｔｅＥｎ）が含まれており、これらはアクセス情報を示す。【００４１】
次に、実施例１に係るバスモニタ回路１０の動作について説明する。
図２及び図３は、実施例１に係るバスモニタ回路１０の各部の動作を示すタイミング図である。実施例１では、読み出し時のパイプライン転送やスプリット転送可能なバスインタフェースプロトコルとして以下の動作が行なわれる。【００４２】
書き込みアクセス時には、マスタ側は書き込みアドレス（Ａｄｄｒ）を設定し、書き込みデータ領域／サイズをバイトネーブル信号（ＢｙｔｅＥｎ）に設定し、書き込みデータ（ＷＤａｔａ）を設定する。また、コマンド（Ｃｍｄ）を書き込み（Ｗ）とし、アクセプト信号（Ａｃｋ）がハイレベルで返送されるのを待つ。スレーブ側は、コマンド受付け可能になったサイクルでアクセプト信号（Ａｃｋ）をハイレベルにすることで書き込みアクセスの完了を示す。【００４３】
読み出しアクセス時には、マスタ側は読み出しアドレス（Ａｄｄｒ）を設定し、読み出しデータ領域／サイズをバイトイネーブル信号（ＢｙｔｅＥｎ）に設定する。また、コマンド（Ｃｍｄ）を読み出し（Ｒ）とし、アクセプト信号（Ａｃｋ）がハイレベルで返送されるのを待つ。応答信号（Ｒｅｓｐ）がハイレベルのサイクルで読み出しデータ（ＲＤａｔａ）が有効となるため、マスタ側はこの読み出しデータを取得する。スレーブ側は、コマンド受付け可能になったサイクルでアクセプト信号（Ａｃｋ）をハイレベルにし、また、読み出しデータを準備できたサイクルで応答信号（Ｒｅｓｐ）をハイレベルにすることで読み出しアクセスの完了を示す。【００４４】
実施例１のバスモニタ回路１０では、図２及び図３に示すように、アクセスデータ（ＢＭＤＡＴ［３１：０］（Ｄａｔａ））を対応するアクセス情報（ＢＭＤＡＴ［５５：３２］（Ｉｎｆｏ））とペアにしてバスモニタ出力する。【００４５】
上記のバスインタフェースプロトコルでは、読み出し時のパイプライン転送をサポートするため、マスタ側は読み出しデータが返送される前であっても、アクセプト信号（Ａｃｋ）がハイレベルになった次のサイクルで次の読み出し／書き込みコマンドを指定することが可能である（図２の時刻Ｔ７、Ｔ８参照）。また、コマンドの発生順序と対応する読み出しデータ／書き込みデータの転送順序が逆転する場合もある（図３のデータＲ４、Ｗ５参照）。但し、書き込みアクセス同士や読み出しアクセス同士についてはデータの転送順序の逆転は許容されない。【００４６】
尚、上記のバス仕様は読み出し時のパイプライン転送可能なバスインタフェースプロトコルの一例に相当するため、実施例１の適用範囲はこれに限定されるものではない。【００４７】
読み出しデータと書き込みデータの転送順序が逆転した場合でも、アクセスデータとアクセス情報とをペアでバスモニタ出力する必要がある。このため、実施例１に係るバスモニタ回路１０ではアクセス情報／書込データＦＩＦＯ１１に入力された先頭のアクセス情報の属性（書き込み／読み出しアクセス）に従って、アクセス情報／書込データＦＩＦＯ１１及び読出データＦＩＦＯ１２を制御している。これにより、書き込みデータと読み出しデータの転送順序がバスアクセス順序と逆転する可能性のあるパイプライン転送可能なバスインタフェースプロトコルの場合でも、アクセス発生順序を逆転させることなくバスモニタ出力することができる。【００４８】
アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報の属性が書き込みアクセスの場合、アクセス情報を同一のサイクルで転送される対応する書き込みデータとともにそのままバスモニタ出力する。一方、アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報の属性が読み出しアクセスの場合には、対応する読み出しデータが読出データＦＩＦＯ１２に格納されるのを待って、その読み出しデータとともにアクセス情報をバスモニタ出力する。この機能により、バスアクセスの発生順序に従うアクセス情報／書込データＦＩＦＯ１１の格納順序により、アドレスなどのアクセス情報とデータ情報とをペアにしてバスモニタ出力することができる。【００４９】
図４は、実施例１に係るバスモニタ回路１０のＦＩＦＯ入力／出力制御処理を示すフローチャートである。この処理手順により、アクセス情報とアクセスデータとをペアにしてバスモニタ出力するようアクセス情報／書込データＦＩＦＯ１１及び読出データＦＩＦＯ１２が制御される。【００５０】
ＦＩＦＯ制御部１４は、図４（Ａ）のフローチャートに従ってアクセス情報／書込データＦＩＦＯ１１のＦＩＦＯ入力制御処理を行う。先ず、バス上に書き込みコマンド／読み出しコマンドが転送されたタイミング、即ち、コマンド（Ｃｍｄ）が書き込み（Ｗ）／読み出し（Ｒ）を示し、かつ、アクセプト信号（Ａｃｋ）がハイレベルのサイクルであるか否かを判定する（ステップＳ１１）。コマンド（Ｃｍｄ）が書き込み（Ｗ）／読み出し（Ｒ）を示し、かつ、アクセプト信号（Ａｃｋ）がハイレベルのサイクルであれば、書き込みイネーブル信号をＷＥ＿Ａ＝１とし、コマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）、バイトイネーブル信号（ＢｙｔｅＥｎ）、及び書き込みデータ（ＷＤａｔａ）をアクセス情報／書込データＦＩＦＯ１１にラッチする（ステップＳ１２）。ステップＳ１１の判定結果が「ＮＯ」の場合、ＦＩＦＯ制御部１４は書き込みイネーブル信号をＷＥ＿Ａ＝０とし、アクセス情報／書込データＦＩＦＯ１１へのＦＩＦＯ入力制御処理は行わない（ステップＳ１３）。【００５１】
ＦＩＦＯ制御部１５は、図４（Ｂ）のフローチャートに従って読出データＦＩＦＯ１２のＦＩＦＯ入力制御処理を行なう。先ず、バス上に読み出しデータが返送されたタイミング、即ち、応答信号（Ｒｅｓｐ）がハイレベルのサイクルであるか否かを判定する（ステップＳ２１）。応答信号（Ｒｅｓｐ）がハイレベルのサイクルであれば、書き込みイネーブル信号をＷＥ＿Ｒ＝１とし、読み出しデータ（ＲＤａｔａ）を読出データＦＩＦＯ１２にラッチする（ステップＳ２２）。ステップＳ２１の判定結果が「ＮＯ」の場合、ＦＩＦＯ制御部１５は書き込みイネーブル信号をＷＥ＿Ｒ＝０とし、読出データＦＩＦＯ１２へのＦＩＦＯ入力制御処理は行わない（ステップＳ２３）。【００５２】
次に、アクセス情報／書込データＦＩＦＯ１１と読出データＦＩＦＯ１２のＦＩＦＯ出力制御処理について図４（Ｃ）のフローチャートを参照して説明する。ＦＩＦＯ出力制御処理は、２種類のＦＩＦＯ１１、１２のステータス（エンプティか否かの判定）と、アクセス情報／書込データＦＩＦＯ１１の先頭のバスアクセスのコマンド属性（ＢＭＤＡＴ［５４］：コマンド（ＷｒｉｔｅＥｎ）が書き込み（Ｗ）か読み出し（Ｒ）かの判定）によって分岐する。
【００５３】
図４（Ｃ）において、ＦＩＦＯ制御部１４、１５はアクセス情報／書込データＦＩＦＯ１１のステータスがエンプティか否かを判定する（ステップＳ３１）。アクセス情報／書込データＦＩＦＯ１１のステータスがエンプティの場合には、ＦＩＦＯ出力制御処理は行なわない（ステップＳ３２）。【００５４】
アクセス情報／書込データＦＩＦＯ１１のステータスがエンプティでない場合、ＦＩＦＯ制御部１４、１５はその先頭のアクセス情報のコマンド属性が書き込み（Ｗ）であるか否かを判定する（ステップＳ３３）。先頭のアクセス情報のコマンド属性が書き込み（Ｗ）の場合、ＦＩＦＯ制御部１４、１５はアクセス情報／書込データＦＩＦＯ１１の先頭に格納されている書き込みアクセス（即ち、コマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）、バイトイネーブル信号（ＢｙｔｅＥｎ）、及び書き込みデータ（ＷＤａｔａ））をそのままバスモニタ出力（ＲＥ＿Ａ＝１、ＳＥＬ＝１、ＢＭＳＴＢ＝１）する（ステップＳ３４）。このとき、データ情報選択部１６がＳＥＬ＝１となっているので、バスモニタ出力のデータ部分にはアクセス情報／書込データＦＩＦＯ１１の書き込みデータ（ＷＤａｔａ）が選択されて出力される。【００５５】
一方、アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報のコマンド属性が読み出し（Ｒ）の場合、ＦＩＦＯ制御部１４、１５は読出データＦＩＦＯ１２のステータスに依存してＦＩＦＯ出力制御処理を行なう。即ち、ＦＩＦＯ制御部１４、１５は読出データＦＩＦＯ１２のステータスがエンプティか否かを判定する（ステップＳ３５）。読出データＦＩＦＯ１２のステータスがエンプティの場合、未だ読出データがバス上に返送されていないので、ＦＩＦＯ１１、１２のＦＩＦＯ出力制御処理を行なわず待機状態（ＲＥ＿Ａ＝０、ＲＥ＿Ｒ＝０）とする（ステップＳ３６）。待機状態において、バス上に次のアクセス情報が出力された場合、アクセス情報／書込データＦＩＦＯ１１にバスアクセスデータが蓄積される。【００５６】
アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報の属性が読み出し（Ｒ）であり、かつ、読み出しデータが返送されて読出データＦＩＦＯ１２のステータスもエンプティでなくなった場合には、ＦＩＦＯ制御部１４、１５はＦＩＦＯ１１、１２の先頭に格納されている読み出しアクセス（即ち、コマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）、バイトイネーブル信号（ＢｙｔｅＥｎ）、及び読み出しデータ（ＲＤａｔａ））とともにバスモニタ出力（即ち、ＲＥ＿Ａ＝１、ＲＥ＿Ｒ＝１、ＳＥＬ＝０、ＢＭＳＴＢ＝１）する（ステップＳ３７）。このとき、データ情報選択部１６がＳＥＬ＝０となっているため、バスモニタ出力のデータ部分には読出データＦＩＦＯ１２の読み出しデータ（ＲＤａｔａ）が選択されて出力される。【００５７】
上記の処理手順により、実施例１に係るバスモニタ回路１０は図２及び図３に示すようにアクセス情報とデータ情報とをペアでバスモニタ出力することができる。【００５８】
図２の時刻Ｔ２、Ｔ３、Ｔ５及び図３の時刻Ｔ２、Ｔ７、Ｔ８、Ｔ１１のサイクルでは、アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報の属性が書き込みアクセスなので、書き込みアドレス情報と対応する書き込みデータとがペアでそのまま出力される。図２及び図３において、ＢＭＤＡＴ［５５：３２］（Ｉｎｆｏ）がアクセス情報のバスモニタ出力を示し、ＢＭＤＡＴ［３１：０］（Ｄａｔａ）がデータ情報（アクセスデータ）を示す。【００５９】
図２の時刻Ｔ７、Ｔ８、Ｔ９及び図３の時刻Ｔ３、Ｔ４、Ｔ５、Ｔ９のサイクルでは、アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報の属性が読み出しアクセスなので、対応する読み出しデータが読出データＦＩＦＯ１２に入力されるのを待って、図２の時刻Ｔ１０、Ｔ１１、Ｔ１２及び図３の時刻Ｔ６、Ｔ１０、Ｔ１２のサイクルで読み出しアドレス情報と読み出しデータとがペアで出力される。【００６０】
図２の時刻Ｔ８、Ｔ９及び図３の時刻Ｔ５、Ｔ６、Ｔ７、Ｔ９、Ｔ１０のサイクルでは、データの読み出し中に次のバスアクセスが発生している。この場合、アクセス情報／書込データＦＩＦＯ１１にバスアクセスが格納され、先頭の読み出しデータ待ちのバスアクセスの出力後に、順次ＦＩＦＯ処理される。【００６１】
図３の時刻Ｔ１１のサイクルでは、アクセス情報／書込データＦＩＦＯ１１の先頭のアクセス情報の属性が書き込みアクセスとなっているサイクルにおいて読み出しデータがバス上に返送されている。この場合、アクセス情報／書込データＦＩＦＯ１１の先頭の書き込みアクセス情報がバスモニタ出力され、読み出しデータは読出データＦＩＦＯ１２に格納される。【００６２】
以上のように、実施例１に係るバスモニタ回路１０はアクセス情報／書込データＦＩＦＯ１１と読出データＦＩＦＯ１２の２種類のＦＩＦＯを連携して出力制御を行なっているため、バスモニタ出力の順序をバスアクセスの発生順序が同一となることを保証できる。即ち、読み出し時のパイプライン転送可能であり、書き込みデータと読み出しデータの転送順序が実際のバスアクセスの発生順序と逆転する可能性があるバスインタフェースプロトコルにおいても、バスアクセスの発生順序通りにバスモニタ出力することができる。【００６３】
次に、実施例１に係るバスモニタ回路１０の適用例として、システムＬＳＩ及びＳｏＣについて説明する。
図５は、実施例１に係るバスモニタ回路１０が適用されるシステムＬＳＩ及びＳｏＣであるデータ符号化／復号化処理システム５００の構成を示すブロック図である。【００６４】
図５に示すデータ符号化／復号化処理システム５００は、システム全体を制御するメインプロセッサ（ＣＰＵ）１００、ＣＰＵバス１１０、割り込みコントローラ１０１、及び外部メモリコントローラ１０２を具備する。また、実際にデータ符号化／復号化処理を行なうプロセッサ要素（機能ブロック）として５個のサブプロセッサ２０１〜２０５と、外部装置とのデータ転送インタフェースを行なうプロセッサ要素（機能ブロック）として１個のサブプロセッサ２０６を具備する。【００６５】
データ符号化／復号化処理システム５００はサブプロセッサ２０１〜２０６を制御するための実行制御プロセッサ２００を実装している。また、実行制御プロセッサ２００とサブプロセッサ２０１〜２０６の間にコントロールバス２１０を設けている。サブプロセッサ２０１〜２０６間のデータ転送は共有メモリ３００を介して行なう。共有メモリ３００はマルチバンク化されているため、サブプロセッサ２０１〜２０６はマルチレイヤ構成の共有メモリバス３１０を介して共有メモリ３００の個々のバンクについて並列にアクセスすることができる。【００６６】
ＣＰＵバス１１０、コントロールバス２１０及び共有メモリバス３１０は、読み出し時のパイプライン転送（或いは、スプリット転送）を可能とする図２及び図３に示すようなバスインタフェースプロトコルに従って、データ転送のスループットを向上させている。また、サブプロセッサ２０１〜２０６間のデータ転送は全て共有メモリ３００を介して行なっているので、個々のサブプロセッサ２０１〜２０６間について直接の通信手段は不要となる。このようなマルチプロセッサ構成により、サブプロセッサ２０１〜２０６の再利用可能性の向上やシステム全体の拡張性の向上が期待できる。【００６７】
データ符号化／復号化処理システム５００は、チップ内の主要なバスインタフェースであるＣＰＵバス１１０、コントロールバス２１０、及び共有メモリバス３１０上のバスアクセスをチップ外部で観察するために、３つのバスモニタ回路１５１、１５２、１５３と実際のバスモニタ出力を制御するデバッグブロック（ＤＢＧ）４００を具備する。共有メモリバス３１０はマルチレイヤ化されているため、どのレイヤのバスアクセスをバスモニタ出力するのかをバス選択部（ＳＥＬ）３３０にて選択する。ここで、バスモニタ回路１５１〜１５３は図１に示したバスモニタ回路１０と同様の構成を有している。【００６８】
データ符号化／復号化処理システム５００におけるデータ符号化処理では、メインプロセッサ１００から実行制御プロセッサ２００に対して符号化シーケンスの実行コマンドを発行する。メインプロセッサ１００から符号化データ転送完了ステータスを受けると、実行制御プロセッサ２００はサブプロセッサ２０４へ符号化処理Ａ１のコマンドを発行する。サブプロセッサ２０４からの符号化処理Ａ１の完了ステータスを受けると、実行制御プロセッサ２００はサブプロセッサ２０５に符号化処理Ａ２のコマンドを発行する。サブプロセッサ２０５からの符号化処理Ａ２の完了ステータスを受けると、実行制御プロセッサ２００はサブプロセッサ２０６に符号化データ転送処理のコマンドを発行する。サブプロセッサ２０４〜２０６は上記のコマンドを受信すると、共有メモリ３００から処理データを読み出して各処理を実行し、その後、結果データを共有メモリ３００に書き込むか、或いは、チップ外部へのデータ転送を実行する。【００６９】
データ符号化／復号化システム５００における復号化処理では、メインプロセッサ１００から実行制御プロセッサ２００に対して復号化シーケンスの実行コマンドを発行する。周期的に発生するサブプロセッサ２０６の入力データ転送完了のステータスを受けると、実行制御プロセッサ２００はサブプロセッサ２０１に復号化処理Ｂ１のコマンドを発行する。復号化処理Ｂ１完了ステータスを受けると、実行制御プロセッサ２００はサブプロセッサ２０２に復号化処理Ｂ２のコマンドを発行する。復号化処理Ｂ２完了ステータスを受けると、実行制御プロセッサ２００はサブプロセッサ２０３に復号化処理Ｂ３のコマンドを発行する。復号化処理Ｂ３完了ステータスを受けると、実行制御プロセッサ２００はメインプロセッサ１００に復号化データ通知の割り込みを発行する。サブプロセッサ２０１〜２０３は上記のコマンドを受けると、共有メモリ３００から処理データを読み出して各処理を実行し、その後、結果データを共有メモリ３００に書き込む。【００７０】
デバッグ用にチップ内の主要なバスインタフェースのバスアクセスをバスモニタ出力する場合、メインプロセッサ１００はデバッグブロック４００に対してどのバスインタフェースのバスアクセスをバスモニタ出力するかを設定する。また、アドレス範囲やデータ範囲でバスモニタ出力するバスアクセスを制限するフィルタ設定を行なうとともに、バスモニタ出力の開始／停止条件やタイミング制御のためのトリガ設定も行なう。デバッグブロック４００は、選択されたバスインタフェースのバスモニタ回路１５１〜１５３に対するバスモニタ出力イネーブル信号をハイレベルとすることにより、当該バスモニタ回路１５１乃至１５３のバスモニタ出力動作を開始せしめる。【００７１】
バスモニタ回路１５１〜１５３として実施例１に係るバスモニタ回路１０を適用しているため、アクセス情報とデータ情報とをペアにして各バスインタフェースにおけるバスアクセス発生順序を保証したバスモニタ出力を行なうことができる。また、バスモニタ回路１５１〜１５３から出力されるバスモニタ出力ストローブ信号（ＢＭＳＴＢ）とバスモニタ出力データ（ＢＭＤＡＴ）に基づいて、デバッグブロック４００はフィルタ制御及びトリガ制御を行い、各処理結果をデバッグブロック４００内のＦＩＦＯ部に一旦格納する。デバッグブロック４００内のＭＵＸ部にて、バスモニタ出力用の外部出力ピン数や出力クロック周波数の制限により１バスモニタ出力データを１サイクルで出力できない場合、バスモニタ出力データを多重化処理する。また、複数のバスインタフェースが選択されている場合には、バスインタフェース間のアクセス調停を行なって、各ＦＩＦＯ部からバスモニタ出力データを順次出力する。【００７２】
この場合、ＣＰＵバス１１０、コントロールバス２１０、及び１レイヤ分の共有メモリバス３１０の合計３系統のバスインタフェースを一度に観察（即ち、バスモニタ出力）することが可能となる。また、バスモニタ回路１５１〜１５３にアドレス（Ａｄｄｒ）などのアクセス情報の入力時にタイムスタンプを付加する機構を実装することで、チップ外部での観測時に時間情報の取得が可能となる。この手法により、複数のバスインタフェース間のアクセス発生順序も観測することが可能となる。
【実施例２】
【００７３】
図６は、本発明の実施例２に係るバスモニタ回路２０を示すブロック図である。実施例２に係るバスモニタ回路２０は、コマンドやアドレスなどのアクセス情報、書込データ及び読出データの転送タイミングが異なるバスインタフェースプロトコルに対応するものである。【００７４】
図６に示すバスモニタ回路２０は、アクセス情報、読出データ及び書込データの転送タイミングが異なるバスインタフェースプロトコルに対応すべく、アクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３の３種類のＦＩＦＯを具備している。アクセス情報ＦＩＦＯ２１は、バスモニタ対象のバス上に転送されるコマンドやアドレスなどのアクセス情報を格納する。読出データＦＩＦＯ２２は読み出しデータを格納し、書込データＦＩＦＯ２３は書き込みデータを格納する。
【００７５】
実施例１と比較した実施例２の特徴は、アクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３の３種類のＦＩＦＯを独立して具備することである。また、アクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３を各々制御するためにＦＩＦＯ制御部２４、２５、２６が具備される。更に、読出データＦＩＦＯ２２又は書込データＦＩＦＯ２３の出力を選択するデータ情報選択部（ＳＥＬ）２７も具備される。【００７６】
実施例１と同様に、実施例２におけるアクセス情報として、書き込みアクセスと読み出しアクセスを区別するアクセス属性を示すコマンド（Ｃｍｄ）、書き込み時には書き込みアドレスを示し、読み出し時には読み出しアドレスを指定するアドレス（Ａｄｄｒ）、及びアクセス領域やデータサイズを指定するためのバイトイネーブル信号（ＢｙｔｅＥｎ）が想定される。【００７７】
アクセス情報ＦＩＦＯ２１の書き込みイネーブル信号（ＷＥ＿Ａ）は、コマンド（Ｃｍｄ）と、バス上でのコマンドを含むアクセス情報が受け付けられたことを示すコマンドアクセプト信号（ＣｍｄＡｃｋ）より構成される。アクセス情報ＦＩＦＯ２１の読み出しイネーブル信号（ＲＥ＿Ａ）は、アクセス情報ＦＩＦＯ２１のステータスと、アクセス情報ＦＩＦＯ２１の先頭データのアクセス属性（書き込み／読み出しアクセス）と、書込データＦＩＦＯ２３のステータス又は読出データＦＩＦＯ２２のステータスより構成される。【００７８】
読出データＦＩＦＯ２２の書き込みイネーブル信号（ＷＥ＿Ｒ）は、バス上に読み出しデータが転送されたことを示す応答信号（Ｒｅｓｐ）より構成される。読出データＦＩＦＯ２２の読み出しイネーブル信号（ＲＥ＿Ｒ）は、読出データＦＩＦＯ２２のステータスと、アクセス情報ＦＩＦＯ２１のステータスと、アクセス情報ＦＩＦＯ２１の先頭データのアクセス属性（書き込み／読み出しアクセス）より構成される。【００７９】
書込データＦＩＦＯ２３の書き込みイネーブル信号（ＷＥ＿Ｗ）は、バス上に書き込みデータが転送されたことを示す有効信号（Ｖａｌｉｄ）より構成される。書込データＦＩＦＯ２３の読み出しイネーブル信号（ＲＥ＿Ｗ）は、書込データＦＩＦＯ２３のステータスと、アクセス情報ＦＩＦＯ２１のステータスと、アクセス情報ＦＩＦＯ２１の先頭データのアクセス属性（書き込み／読み出しアクセス）より構成される。【００８０】
実施例１と同様に、実施例２でもアクセス情報とデータ情報（アクセスデータ）とをペアでバスモニタ出力するために、データ情報選択部（ＳＥＬ）２７を具備している。
【００８１】
次に、実施例２に係るバスモニタ回路２０の動作について説明する。図７は、実施例２に係るバスモニタ回路２０の動作を示すタイミング図である。【００８２】
実施例２に適用されるバスインタフェースプロトコルは、実施例１に適用されるバスインタフェースプロトコルと同様であり、読み出し時のパイプライン転送（スプリット転送）を可能とするものである。実施例１と異なり、実施例２では書き込みアクセス時において、コマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）及びバイトイネーブル信号（ＢｙｔｅＥｎ）などのアクセス情報の転送サイクルと、実際の書き込みデータ（ＷＤａｔａ）の転送サイクルとを分離することができる。即ち、実施例２では実施例１に比べて、書き込みデータ（ＷＤａｔａ）の転送サイクルを示すマスタからスレーブ方向へ有効信号（Ｖａｌｉｄ）が追加されていることである。【００８３】
尚、書き込みデータ（ＷＤａｔａ）についてスレーブ側とのハンドシェークが必要な場合には、スレーブからマスタ方向へデータアクセプト信号（ＤａｔａＡｃｋ）を追加してもよい。実施例１と同様に、実施例２のバスインタフェースプロトコルにおいても、アクセス情報の転送順序と読み出しデータ及び書き込みデータの転送順序が逆転することがある。但し、書き込みアクセス同士や読み出しアクセス同士におけるデータ情報の転送順序の逆転は許容されない。【００８４】
実施例２におけるバスモニタ出力のフォーマットは実施例１と同様である。即ち、バスモニタストローブ信号（ＢＭＳＴＢ）及びバスモニタ出力信号（ＢＭＤＡＴ）より構成される。ここで、バスモニタストローブ信号（ＢＭＳＴＢ）がハイレベルのサイクルで、バスモニタ出力信号（ＢＭＤＡＴ）が有効となる。実施例１と同様に実施例２においても、バスモニタ出力信号（ＢＭＤＡＴ）のビット構成により、コマンド（ＷｒｉｔｅＥｎ）、エラーフラグ（ＥｒｒｏｒＦｌａｇ）、アドレス（Ａｄｄｒ）及びバイトイネーブル信号（ＢｙｔｅＥｎ）などのアクセス情報と、書き込みデータ（ＷＤａｔａ）又は読み出しデータ（ＲＤａｔａ）などのデータ情報（アクセスデータ）とをペアにして同一サイクルで出力する。【００８５】
実施例２では、バスインタフェースプロトコル上では異なるサイクルにて転送されるアクセス情報と書き込みデータ／読み出しデータとをペアにして同一サイクルにてバスモニタ出力する。実施例１と同様に、実際のチップ外部での観測時にアクセス情報とデータ情報との対応付けが保証されているため、実施例２でも信頼性の高いデバッグを容易に実行できる。また、バスモニタ出力信号の所定のビット部分を書き込みデータと読み出しデータで共用しているため、少ないビット数で多くの情報を出力することができる。
【００８６】
実施例２に係るバスモニタ回路２０において、マスタからスレーブ方向に転送されるコマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）及びバイトイネーブル信号（ＢｙｔｅＥｎ）などのアクセス情報はアクセス情報ＦＩＦＯ２１を介して出力される。書き込みデータ（ＷＤａｔａ）は書込データＦＩＦＯ２３を介して出力される。スレーブからマスタ方向に転送される読み出しデータ（ＲＤａｔａ）は読出データＦＩＦＯ２２を介して出力される。【００８７】
実施例２のバスインタフェースプロトコルでは、アクセス情報、書き込みデータ及び読み出しデータは異なる転送タイミングとなる。このバスインタフェースプロトコルに対応して、実施例２に係るバスモニタ回路２０ではアクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２、書込データＦＩＦＯ２３を３種類のＦＩＦＯ制御部２４、２５、２６で制御している。【００８８】
図８は、実施例２に係るバスモニタ回路２０のＦＩＦＯ入力／出力制御処理を示すフローチャートである。
先ず、ＦＩＦＯ入力制御処理について説明する。図８（Ａ）において、アクセス情報ＦＩＦＯ２１を制御するＦＩＦＯ制御部２４は、バス上に書き込みコマンド又は読み出しコマンドが転送されたタイミング、即ち、コマンド（Ｃｍｄ）が書き込み（Ｗ）又は読み出し（Ｒ）を示し、かつ、コマンドアクセプト信号（ＣｍｄＡｃｋ）がハイレベルのサイクルであるか否かを判定する（ステップＳ４１）。コマンド（Ｃｍｄ）が書き込み（Ｗ）又は読み出し（Ｒ）を示し、かつ、コマンドアクセプト信号（ＣｍｄＡｃｋ）がハイレベルのサイクルであれば、ＦＩＦＯ制御部２４はコマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）及びバイトイネーブル信号（ＢｙｔｅＥｎ）をアクセス情報ＦＩＦＯ２１にラッチ（ＷＥ＿Ａ＝１）する（ステップＳ４２）。ステップＳ４１の判定結果が「ＮＯ」の場合には、ＦＩＦＯ制御部２４はアクセス情報ＦＩＦＯ２１への入力制御を行わない（ＷＥ＿Ａ＝０）（ステップＳ４３）。【００８９】
図８（Ｂ）において、書込データＦＩＦＯ２３を制御するＦＩＦＯ制御部２６は、バス上に書き込みデータが転送されたタイミング、即ち、有効信号（Ｖａｌｉｄ）がハイレベルのサイクルであるか否かを判定する（ステップＳ５１）。有効信号（Ｖａｌｉｄ）がハイレベルであれば、ＦＩＦＯ制御部２６は書き込みデータ（ＷＤａｔａ）を書込データＦＩＦＯ２３にラッチ（ＷＥ＿Ｗ＝１）する（ステップＳ５２）。ステップＳ５１の判定結果が「ＮＯ」の場合には、ＦＩＦＯ制御部２６は書込データＦＩＦＯ２３への入力制御を行わない（ＷＥ＿Ｗ＝０）（ステップＳ５３）。【００９０】
図８（Ｃ）において、読出データＦＩＦＯ２２を制御するＦＩＦＯ制御部２５は、バス上に読出データが返送されたタイミング、即ち、応答信号（Ｒｅｓｐ）がハイレベルのサイクルであるか否かを判定する（ステップＳ６１）。応答信号（Ｒｅｓｐ）がハイレベルのサイクルであれば、ＦＩＦＯ制御部２５は読み出しデータ（ＲＤａｔａ）を読出データＦＩＦＯ２２にラッチ（ＷＥ＿Ｒ＝１）する（ステップＳ６２）。ステップＳ６１の判定結果が「ＮＯ」の場合には、ＦＩＦＯ制御部２５は読出データＦＩＦＯ２２への入力制御を行わない（ＷＥ＿Ｒ＝０）（ステップＳ６３）。【００９１】
実施例２におけるアクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３の入力制御はバスインタフェース上に出力されるバス信号にのみ依存して実行される。【００９２】
次に、ＦＩＦＯ出力制御処理について説明する。ここで、アクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３の３種類のＦＩＦＯは、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３のステータス（エンプティか否かの判定）と、アクセス情報ＦＩＦＯ２１の先頭のアクセス情報のコマンド（書き込み（Ｗ）／読み出し（Ｒ）コマンド）により出力制御される。【００９３】
図８（Ｄ）において、ＦＩＦＯ制御部２４乃至２６はアクセス情報ＦＩＦＯ２１のステータスがエンプティか否かを判定する（ステップＳ７１）。アクセス情報ＦＩＦＯ２１のステータスがエンプティの場合、出力制御を行なわない（ステップＳ７２）。【００９４】
ステップＳ７１の判定結果が「ＮＯ」の場合には、ＦＩＦＯ制御部２４乃至２６はアクセス情報ＦＩＦＯ２１の先頭のアクセス情報に書き込みコマンド（Ｗ）が格納されているか否か判定する（ステップＳ７３）。【００９５】
アクセス情報ＦＩＦＯ２１の先頭のアクセス情報が書き込みコマンド（Ｗ）を示す場合、ＦＩＦＯ制御部２４乃至２６は書込データＦＩＦＯ２３のステータスがエンプティか否かを判定する（ステップＳ７４）。書込データＦＩＦＯ２３のステータスがエンプティの場合、未だ書き込みデータがバス上に転送されていないため、ＦＩＦＯ出力制御を行なわず、待機状態（ＲＥ＿Ａ＝０、ＲＥ＿Ｗ＝０）とする（ステップＳ７５）。書込データＦＩＦＯ２３のステータスがエンプティでない場合には、アクセス情報ＦＩＦＯ２１の先頭のアクセス情報（即ち、コマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）及びバイトイネーブル信号（ＢｙｔｅＥｎ））と、書込データＦＩＦＯ２３の先頭に格納されている書き込みデータ（ＷＤａｔａ）とをペアにしてバスモニタ出力する（ＲＥ＿Ａ＝１、ＲＥ＿Ｗ＝１、ＳＥＬ＝１、ＢＭＳＴＢ＝１）（ステップＳ７６）。このとき、ＳＥＬ＝１であるため、書込データＦＩＦＯ２３の書き込みデータ（ＷＤａｔａ）がデータ情報選択部（ＳＥＬ）２７にて選択され、バスモニタ出力のデータ部分に格納される。【００９６】
ステップＳ７３において、アクセス情報ＦＩＦＯ２１の先頭のアクセス情報が読み出しコマンド（Ｒ）を示す場合、ＦＩＦＯ制御部２４乃至２６は読出データＦＩＦＯ２２のステータスがエンプティか否か判定する（ステップＳ７７）。読出データＦＩＦＯ２２のステータスがエンプティの場合、未だ読み出しデータがバス上に返送されていないため、ＦＩＦＯ制御部２４乃至２６は出力制御を行なわず、待機状態（ＲＥ＿Ａ＝０、ＲＥ＿Ｒ＝０）とする（ステップＳ７８）。【００９７】
読出データＦＩＦＯ２２のステータスがエンプティでない場合、アクセス情報ＦＩＦＯ２１の先頭に格納されている読み出しアクセスを示すコマンド（Ｃｍｄ）、アドレス（Ａｄｄｒ）、バイトイネーブル信号（ＢｙｔｅＥｎ）及び読み出しデータ（ＲＤａｔａ）を合わせてバスモニタ出力する（ＲＥ＿Ａ＝１、ＲＥ＿Ｒ＝１、ＳＥＬ＝０、ＢＭＳＴＢ＝１）（ステップＳ７９）。このとき、ＳＥＬ＝０であるため、読出データＦＩＦＯ２２の読み出しデータ（ＲＤａｔａ）がデータ情報選択部（ＳＥＬ）２７にて選択され、バスモニタ出力のデータ部分に格納される。【００９８】
ステップＳ７５、Ｓ７８の待機状態において、バス上に次のバスアクセスが発生した場合、アクセス情報ＦＩＦＯ２１にバスアクセスデータが蓄積される。【００９９】
以上の処理手順は、コマンド（Ｃｍｄ）やアドレス（Ａｄｄｒ）などのアクセス情報の転送サイクルに対して、対応する書き込みデータ（ＷＤａｔａ）はアクセス情報と同タイミング、或いは、遅れたタイミングで転送されるとともに、読み出しデータ（ＲＤａｔａ）もアクセス情報と同タイミング、或いは、遅れたタイミングで転送されるバスインタフェースプロトコルの特徴を利用したものである。
【０１００】
以上の処理手順により、実施例２に係るバスモニタ回路２０は、図７に示すように、アクセス情報とデータ情報（アクセスデータ）とをペアでバスモニタ出力することができる。【０１０１】
例えば、図７の時刻Ｔ３、Ｔ７、Ｔ８、Ｔ１１のサイクルでは、アクセス情報ＦＩＦＯ２１の先頭のアクセス情報が書き込みコマンド（Ｗ）を示しているので、対応する書き込みデータが書込データＦＩＦＯ２３に入力されるのを待って、アクセス情報と対応する書き込みデータとがペアで出力される。【０１０２】
図７の時刻Ｔ４、Ｔ５、Ｔ９のサイクルでは、アクセス情報ＦＩＦＯ２１の先頭のアクセス情報が読み出しコマンド（Ｒ）を示しているので、対応する読み出しデータが読出データＦＩＦＯ２２に入力されるのを待って、時刻Ｔ６、Ｔ１０、Ｔ１２のサイクルにて、アクセス情報と対応する読み出しデータとがペアで出力される。【０１０３】
図７の時刻Ｔ５、Ｔ６、Ｔ７、Ｔ９、Ｔ１０のサイクルでは、書き込みデータ待機状態や読み出しデータ待機状態において次のバスアクセスが発生している。この場合、バスアクセスデータはアクセス情報ＦＩＦＯ２１に格納しておき、先頭の読み出しデータ待機状態のアクセス情報の出力後に順次ＦＩＦＯ処理される。【０１０４】
アクセス情報ＦＩＦＯ２１の先頭のアクセス情報が書き込みアクセスを示すサイクルにおいて読み出しデータがバス上に返送された場合、その読み出しデータは読出データＦＩＦＯ２２に蓄積される。図７の時刻Ｔ１０において、アクセス情報ＦＩＦＯ２１の先頭のアクセス情報が読み出しアクセスを示すサイクルであり、かつ、書き込みデータがバス上に転送されているので、その書き込みデータは書込データＦＩＦＯ２３に蓄積される。【０１０５】
このように、実施例２ではアクセス情報ＦＩＦＯ２１、読出データＦＩＦＯ２２及び書込データＦＩＦＯ２３の３種類のＦＩＦＯを連携させて出力制御を行なっているため、バスモニタ出力の転送順序がアクセス情報のアクセス情報ＦＩＦＯ２１への入力順序と同一となることが保証される。図７に示すように、読み出し時のパイプライン転送可能であり、書き込みデータと読み出しデータの転送順序が実際のバスアクセス発生順序と逆転する可能性があるバスインタフェースプロトコルにおいても、バスアクセス発生順序通りにバスモニタ出力することができる。【０１０６】
次に、実施例１及び実施例２に係るバスモニタ回路１０、２０（図１、図６参照）におけるＦＩＦＯ段数の設定方法とエラー通知機構について説明する。【０１０７】
実施例１のバスモニタ回路１０のアクセス情報／書込データＦＩＦＯ１１と読出データＦＩＦＯ１２のＦＩＦＯ段数は、バスモニタ対象であるバス上の読み出しレイテンシ（即ち、読み出しコマンドを受け付けたアクセプト信号（Ａｃｋ）がハイレベルとなるサイクルから、読み出しデータを返送する応答信号（Ｒｅｓｐ）がハイレベルとなるまでのサイクル数）の最大値によって見積もることができる。見積もられたＦＩＦＯ段数をバスモニタ回路１０に実装することにより、各ＦＩＦＯにオーバーフローが発生することを防止することができる。【０１０８】
実施例２のバスモニタ回路２０のＦＩＦＯ段数は、上記の読み出しレイテンシの最大値に加えて、書き込みレイテンシ（即ち、マスタからの書き込みコマンドが受け付けられたサイクルから、実際に有効信号（Ｖａｌｉｄ）をハイレベルにして書き込みデータを転送するまでのサイクル数）の最大値によって見積もることができる。即ち、読み出しレイテンシの最大値と書き込みレイテンシの最大値の大きい方の値に基づいて見積もられたＦＩＦＯ段数をバスモニタ回路２０に実装することにより、各ＦＩＦＯにオーバーフローが発生することを防止することができる。【０１０９】
また、バスコントローラ（例えば、図５に示すＣＰＵバス１１０、コントロールバス２１０、及び共有メモリバス３１０）内にバス制御用として読み出しデータ待ち中のマスタＩＤやスレーブＩＤを記憶しておくようなＦＩＦＯが実装される場合、そのＦＩＦＯ段数と同じＦＩＦＯ段数を用いてバスモニタ回路を実装することによりオーバーフローを防止するという手法もある。【０１１０】
しかし、実施例１のバスモニタ回路１０及び実施例２のバスモニタ回路２０の何れにおいても、回路規模削減などの理由からＦＩＦＯ段数を制限して実装する必要がある場合、アクセス情報／書込データＦＩＦＯ１１やアクセス情報ＦＩＦＯ２１においてオーバーフローが発生する可能性がある。アクセス情報／書込データＦＩＦＯ１１やアクセス情報ＦＩＦＯ２１のオーバーフローは、各ＦＩＦＯの先頭のアクセス情報に対応する書き込みデータ又は読み出しデータが未だバス上に転送されず待機状態となっているにも拘らず、次々にＦＩＦＯ段数以上のバスアクセスがバス上に発生することにより発生する。この場合、バスモニタ出力信号（ＢＭＤＡＴ）のエラーフラグビットを用いてアクセス情報とデータ情報の不一致を通知する。【０１１１】
図９は、実施例２に係るバスモニタ回路２０におけるエラー通知機構を説明するためのタイミング図である。図９は、エラーフラグビットを用いてアドレスとデータの不一致を通知するバスモニタ出力信号の出力タイミングを示している。ここでは、簡略化のためにＦＩＦＯ段数を「４」としているが、これに限定されるものではない。実際のＦＩＦＯ段数を「８」、「１６」、「３２」等としてもよい。【０１１２】
図９では、アクセス情報に対応する読み出しデータが読出データＦＩＦＯ２２に入力されないためにアクセス情報ＦＩＦＯ２１がフル状態となり、かつ、次のバスアクセスが発生した場合（即ち、時刻Ｔ５のサイクル）、本来ならＦＩＦＯ段数不足で消失するはずのアクセス情報ＦＩＦＯ２１の先頭のアクセス情報がバスモニタ出力される。このとき、対応する読み出しデータは存在しないため、アクセス情報はオールゼロのデータとペアでバスモニタ出力される。また、バスモニタ出力信号のエラーフラグビット（ＢＭＤＡＴ［５５］：ＥｒｒｏｒＦｌａｇ）をハイレベルとすることにより、アクセス情報とデータ情報の不一致を外部装置に通知する（時刻Ｔ６のサイクル参照）。【０１１３】
一旦アクセス情報ＦＩＦＯ２１がオーバーフローしてしまうと、その後、アクセス情報ＦＩＦＯ２１のステータスがエンプティになるまでアクセス情報とデータ情報の不一致が継続することとなるため、オーバーフロー時にアクセス情報ＦＩＦＯ２１の先頭だったアクセス属性（図９では読み出しアクセス（Ｒ））と同じ場合、アクセス情報ＦＩＦＯ２１のステータスがエンプティになるまで、エラーフラグをハイレベルにし続ける。【０１１４】
アクセス情報ＦＩＦＯ２１のステータスがエンプティになった後、読出データＦＩＦＯ２２や書込データＦＩＦＯ２３に読出データや書込データが存在する場合がある。この場合、アクセス情報をオールゼロのビットとし、エラーフラグをハイレベルにして、データ情報のみをバスモニタ出力するようにする（時刻Ｔ１２のサイクル参照）。【０１１５】
以上のように、エラーフラグ通知機構を実装することにより、信頼性の高いバスモニタ出力と信頼性の低いバスモニタ出力とをチップ外部にて区別することが可能となる。これは、バスアクセス情報の消失を防止することにも繋がり、チップ外部での観測時、エラーフラグビットを用いてアクセス情報とデータ情報との対応付けを推定することもできる。
【実施例３】
【０１１６】
図１０は、本発明の実施例３に係るバスモニタ回路３０の構成を示すブロック図である。実施例３は、バスモニタ出力のサイクル数を削減するためにアドレス情報とデータ情報を共用したバスモニタ出力信号を形成するものである。【０１１７】
実施例３に係るバスモニタ回路３０は、実施例１に係るバスモニタ回路１０を拡張した構成とするものである。バスモニタ回路３０は、アクセス情報／書込データＦＩＦＯ３１と読出データＦＩＦＯ３２の２種類のＦＩＦＯを具備している。また、バスモニタ回路３０にはアクセス情報／書込データＦＩＦＯ３１を制御するためのＦＩＦＯ制御部３４と読出データＦＩＦＯ３２を制御するためのＦＩＦＯ制御部３５を具備する。バスモニタ回路３０には、アクセス情報とデータ情報（アクセスデータ）とをペアにしてバスモニタ出力するためにデータ情報選択部（ＳＥＬ）３６が備えられる。上記の構成は、実施例１と同様である。【０１１８】
図１０において、アクセス情報／書込データＦＩＦＯ３１及び読出データＦＩＦＯ３２の後段に実施例３の特有構成として、バスモニタ出力信号（ＢＭＳＴＢ、ＢＭＤＡＴ）の遅延部（Ｓｔｂ、Ｅｒｒ、Ｃｎｔ、Ａｄｒ、Ｄａｔ）６０〜６４、アドレス比較器（ＣＭＰ）６５、制御情報マスク（ＭＳＫ）６６及びアドレス情報選択部（ＳＥＬ）６７が備えられる。【０１１９】
実施例３に係るバスモニタ回路３０において、バスモニタ出力信号（ＢＭＤＡＴ）は以下のビット構成を有している。ここで、バスモニタ出力信号中のＢＭＤＡＴ［６３：３２］はアドレス情報とデータ情報を共用できる。
ＢＭＤＡＴ［６９］：エラーフラグ（ＥｒｒｏｒＦｌａｇ）
ＢＭＤＡＴ［６８］：コマンド、ライトイネーブル（ＷｒｉｔｅＥｎ）
ＢＭＤＡＴ［６７：６４］：バイトイネーブル（ＢｙｔｅＥｎ）
ＢＭＤＡＴ［６３：３２］：アドレス／データ（Ａｄｄｒ／Ｄａｔａ）
ＢＭＤＡＴ［３１：０］：アクセスデータ【０１２０】
制御情報マスク（ＭＳＫ）６６にてバイトイネーブル信号（ＢｙｔｅＥｎ）などの制御情報をマスクするか否か、アドレス情報選択部（ＳＥＬ）６７にて遅延部６４からのアドレス情報とデータ情報選択部（ＳＥＬ）３６からのデータ情報の何れを選択するかについては、アドレス比較器（ＣＭＰ）６５の比較結果により決定される。【０１２１】
次に、実施例３に係るバスモニタ回路３０の動作について説明する。図１１は、実施例３に係るバスモニタ回路３０の動作を示すタイミング図である。図１１ではバスモニタ出力信号の転送タイミングを示しており、実施例３に適用されるバスインタフェースプロトコルは実施例１（図２及び図３参照）と同様である。
尚、図１１において最初の３個の書き込みアクセスＷ０、Ｗ１、Ｗ２は連続するインクリメンタルアドレスへのバーストアクセスであり、次の３個の読み出しアクセスＲ３、Ｒ４、Ｒ５もインクリメンタルアドレスへのバーストアクセスとしている。【０１２２】
バスモニタ回路３０にてバスモニタ出力可能となったバスアクセスデータがアクセス情報／書込データＦＩＦＯ３１やデータ情報選択部（ＳＥＬ）３６から出力された場合、実施例３ではそのまま出力せず、一旦バスモニタ出力出力信号の遅延部６０〜６４にてラッチしてから出力する（図１１の時刻Ｔ２、Ｔ３、Ｔ８、Ｔ９、Ｔ１１のサイクル参照）。このラッチタイミングにて、アドレス比較器（ＣＭＰ）６５にて今回のバスアクセスデータと前回のバスアクセスデータとの間でアドレス情報の比較が行なわれる。【０１２３】
今回のバスアクセスデータのアドレス情報が前回のバスアクセスデータのインクリメンタルアドレスと一致する場合には、今回のバスアクセスデータのバスモニタ出力が保留される。次回のバスアクセスデータがバスモニタ出力可能となった時にもアドレス比較器（ＣＭＰ）６５にてアドレス情報の比較が行なわれる。次回のバスアクセスデータも継続してインクリメンタルアドレスへのアクセスであると判定された場合、制御情報マスク（ＭＳＫ）６６にて制御情報ビットがマスクされ、アドレス情報選択部（ＳＥＬ）６７にて保留されていた今回のバスアクセスデータのアドレス情報ではなく、次回のバスアクセスデータを選択してバスモニタ出力する（図１１の時刻Ｔ４、Ｔ１０参照）。【０１２４】
上記のサイクルにおいて、制御情報ビットはオールゼロの固定値にマスクされ、アドレス情報ビットとデータ情報ビットを用いて２アクセス分のバスモニタ出力信号が形成される。即ち、制御情報ビットのマスクにより、前回のバスアクセスデータに対するインクリメンタルアドレスへのデータ情報であることを示すとともに、通常２サイクル必要な２アクセス分のデータ情報を１サイクルにてバスモニタ出力することができる。また、次回のバスアクセスデータがインクリメンタルアドレスへのアクセスではなかった場合、アドレス情報選択部（ＳＥＬ）６７にて保留していたバスアクセスデータをそのままバスモニタ出力するとともに、次回のバスアクセスデータが遅延部６０〜６４にてラッチされる。【０１２５】
実施例３では、前後のバスアクセスデータにおけるアドレス情報の比較を行い、インクリメンタルアドレスへのアクセスと判定された場合には、アドレス情報をデータ情報として共用することにより、実施例１に比べてバスモニタ出力のサイクル数を削減することができる。【０１２６】
また、実施例３はチップ外部で制御情報ビットがマスクされているか否かを観察するだけで実際のアドレス情報とデータ情報の復元が容易である。この技術的特長は、実施例１に示したようなアクセスの発生順序を保証可能なバスモニタ回路の後段に付加することにより、より大きなバスモニタ出力のサイクル数の削減が期待できる。即ち、バス上で転送されているインクリメンタルアドレスへのバーストアクセスがそのままの順序で出力されるという技術的特長をバスモニタ回路に組み合わせることにより、従来技術では実現できない技術的効果を奏することができる。【０１２７】
図１１において、時刻Ｔ８のサイクルで発生した書き込みアクセスＷ６よりも時刻Ｔ９にて読み出しデータが返送される読み出しアクセスＲ５を先にバスモニタ出力可能とすることにより、その前の読み出しアクセスＲ３、Ｒ４のインクリメンタルアドレスへのバーストアクセスが処理可能となる。また、読み出し時のパイプライン転送（スプリット転送）が可能なバスインタフェースプロトコルでは、インクリメンタルバーストによるデータ転送が多くなることが想定されるため、実施例３は高い技術的効果を奏する。
【実施例４】
【０１２８】
図１２は、本発明の実施例４に係るバスモニタ回路４の構成を示すブロック図である。実施例４は、バスモニタ出力信号のビット数を削減するためにアドレス情報とデータ情報を共用したバスモニタ出力信号を形成するものである。【０１２９】
実施例４に係るバスモニタ回路４０は、実施例１に係るバスモニタ回路１０を拡張した構成としている。バスモニタ回路４０は、アクセス情報／書込データＦＩＦＯ４１と読出データＦＩＦＯ４２の２種類のＦＩＦＯを具備する。バスモニタ回路４０はアクセス情報／書込データＦＩＦＯ４１を制御するＦＩＦＯ制御部４４と読出データＦＩＦＯ４２を制御するＦＩＦＯ制御部４５を具備する。また、バスモニタ回路４０はアクセス情報とデータ情報（アクセスデータ）とをペアにしてバスモニタ出力するためにデータ情報選択部（ＳＥＬ）４６を具備する。上記の構成は実施例１と同様である。【０１３０】
実施例４の特有構成として、図１２に示すようにアクセス情報／書込データＦＩＦＯ４１及びデータ情報選択部（ＳＥＬ）４６の後段に、バスモニタ出力信号（ＢＭＳＴＢ、ＢＭＤＡＴ）の遅延部（Ｓｔｂ、Ｅｒｒ、Ｃｎｔ、Ａｄｒ、Ｄａｔ）７０〜７４、アドレス比較器（ＣＭＰ）７５、制御情報／アドレス情報マスク（ＭＳＫ）７６及びデータ情報選択部（ＳＥＬ）７７が備えられる。【０１３１】
実施例４に係るバスモニタ回路４０において、バスモニタ出力信号（ＢＭＤＡＴ）は以下のビット構成を有している。これにより、実施例１に比べて実施例４ではバスモニタ出力信号（ＢＭＤＡＴ）のビット数が削減される。
ＢＭＤＡＴ［４５］：エラーフラグ（ＥｒｒｏｒＦｌａｇ）
ＢＭＤＡＴ［４４］：コマンド、ライトイネーブル（ＷｒｉｔｅＥｎ）
ＢＭＤＡＴ［４３：４０］：バイトイネーブル（ＢｙｔｅＥｎ）
ＢＭＤＡＴ［３９：３２］：アドレス（Ａｄｄｒ  Ｌｏｗ）
ＢＭＤＡＴ［３１：０］：アクセスデータ／アドレス（Ｄａｔａ／Ａｄｄｒ  Ｈｉｇｈ）【０１３２】
ここで、制御情報／アドレス情報マスク（ＭＳＫ）７６にてバイトイネーブル信号（ＢｙｔｅＥｎ）やアドレス（Ａｄｄｒ）の下位ビット（図１２では８ビットに削減）をマスクするか否か、データ情報選択部（ＳＥＬ）７７にて遅延部７０〜７４からのデータとアクセス情報／書込データＦＩＦＯ４１からのアドレス（Ａｄｄｒ）の上位ビットの何れを選択するかについては、アドレス比較器（ＣＭＰ）７５の比較結果によって決定される。【０１３３】
次に、実施例４に係るバスモニタ回路４０の動作について説明する。図１３は、実施例４に係るバスモニタ回路４０の動作を示すタイミング図である。図１３は、バスモニタ回路４０のバスモニタ出力信号の転送タイミングを示している。また、図１３に適用されるバスインタフェースプロトコルは実施例１（図２及び図３参照）と同様である。【０１３４】
但し、図１３では最初の３個の書き込みアクセスＷ０、Ｗ１、Ｗ２はそのアドレス（Ａｄｄｒ）の上位ビットが等しい隣接領域へのアクセスとし、次の３個の読み出しアクセスＲ３、Ｒ４、Ｒ５のアドレス（Ａｄｄｒ）も上位ビットが等しい隣接領域へのアクセスとする。【０１３５】
バスモニタ回路４０においてバスモニタ出力可能となったバスアクセスデータがアクセス情報／書込データＦＩＦＯ４１やデータ情報選択部（ＳＥＬ）４６から出力された場合、実施例４はこのバスモニタ出力信号をそのまま出力せず、図１３の時刻Ｔ３、Ｔ４、Ｔ５、Ｔ８、Ｔ９、Ｔ１０、Ｔ１２のサイクルに示すように一旦遅延部７０〜７４にてラッチされる。【０１３６】
今回のバスアクセスデータはそのラッチタイミング前にアドレス比較器（ＣＭＰ）７５にて前回のバスアクセスデータとアドレス情報の上位ビットが比較される。今回のバスアクセスデータのアドレスの上位ビットが前回のバスアクセスデータのアドレスの上位ビットと一致する場合、図１３の時刻Ｔ４、Ｔ５、Ｔ９、Ｔ１０のサイクルで示すように今回のバスアクセスデータのバスモニタ出力信号がラッチされ、次の１サイクルで出力される。このとき、アドレス情報は下位ビット（図１２では８ビット）のみが出力される。【０１３７】
一方、今回のバスアクセスデータのアドレスの上位ビットが前回のバスアクセスデータのアドレスの上位ビットと異なる場合には、バスアクセスデータが２サイクルにかけて出力される。１サイクル目では、制御情報／アドレス情報マスク（ＭＳＫ）７６により制御情報とアドレス情報が固定値ビットでマスクされる。同時に、図１３の時刻Ｔ２、Ｔ７、Ｔ１１のサイクルに示すように、データ情報選択部（ＳＥＬ）７７によりデータ情報にアドレス（Ａｄｄｒ）の上位ビットが選択されてバスモニタ出力される。その後、図１３の時刻Ｔ３、Ｔ８、Ｔ１２のサイクルで示すように、バスアクセスデータのバスモニタ出力信号が遅延部７０〜７４にラッチされ、２サイクル目において残りのバスモニタ出力信号（即ち、制御情報、アドレスの下位ビット、及びデータ）が出力される。【０１３８】
上記の１サイクル目では、前回のバスアクセスデータをバスモニタ出力するタイミングと重なる可能性があるため、ＦＩＦＯ制御部４４及び４５を用いてアクセス情報／書込データＦＩＦＯ４１及び読出データＦＩＦＯ４２によるバスモニタ出力信号の読み出しサイクルを１サイクル遅らせる。【０１３９】
このように、実施例４に係るバスモニタ回路４０は今回のバスアクセスデータと前回のバスアクセスデータとをアドレスの上位ビットにて比較し、両者が同一のアドレスの上位ビットを有しており隣接領域へのアクセスであると判定された場合にはアドレスの下位ビットのみを出力し、一方、両者のアドレスの上位ビットが異なる領域へのアクセスと判定された場合には２サイクルでバスモニタ出力信号を出力する。このような機構を実装することにより、実施例１に比べて実施例４ではバスモニタ出力信号（ＢＭＤＡＴ）のビット数を削減することができる。【０１４０】
また、実施例４ではチップ外部にて制御情報やアドレス情報が固定値ビットにマスクされているか否かを観察することにより、実際のバスアクセス情報の復元が容易となる。この実施例４の技術的特長は、実施例１に示したアクセスの発生順序を保証可能なバスモニタ回路の後段に付加することにより、２サイクルでバスモニタ出力を行なうことによるサイクルオーバーヘッドの発生確率を抑制することができる。即ち、実施例４の技術的特長をバス上に発生するバスアクセスをそのままの発生順序で出力するバスモニタ回路と組み合わせることにより、従来技術では実現できない技術的効果を奏することができる。【０１４１】
図１３において、時刻Ｔ８のサイクルで転送された書き込みアクセスＷ６よりも時刻Ｔ８のサイクルで読み出しデータが返送される読み出しアクセスＲ５を先にバスモニタ出力可能としているため、その前の読み出しアクセスＲ３、Ｒ４の隣接領域へのアクセスが可能となる。また、読み出し時のパイプライン転送（スプリット転送）可能なバスインタフェースプロトコルでは、バースト転送を用いた隣接領域へのデータ転送が多く発生することが想定されるため、少ないサイクルオーバーヘッドでバスモニタ出力信号（ＢＭＤＡＴ）のビット数を削減することが可能となる。【０１４２】
尚、本発明は前述の実施例に限定されるものではなく、添付する請求の範囲に規定された発明の範囲内で種々の変更や応用が可能である。
【産業上の利用可能性】
【０１４３】
本発明は、システムＬＳＩやＳｏＣなどの信号処理チップ内部のバスのアクセス情報をチップ外部で観察することを可能とするバスモニタ回路に適用されるものであり、特に、パイプライン転送やスプリット転送可能なバスインタフェースプロトコルに適用してバスアクセス発生順序を正確に反映したバスモニタ出力を行ない、以って、効率よく信頼性の高いデバッグを実現するものである。
【符号の説明】
【０１４４】
１０    バスモニタ回路
１１    アクセス情報／書込データＦＩＦＯ
１２    読出データＦＩＦＯ
１４    ＦＩＦＯ制御部
１５    ＦＩＦＯ制御部
１６    データ情報選択部
２０    バスモニタ回路
２１    アクセス情報ＦＩＦＯ
２２    読出データＦＩＦＯ
２３    書込データＦＩＦＯ
２４    ＦＩＦＯ制御部
２５    ＦＩＦＯ制御部
２６    ＦＩＦＯ制御部
２７    データ情報選択部
３０    バスモニタ回路
３１    アクセス情報／書込データＦＩＦＯ
３２    読出データＦＩＦＯ
３４    ＦＩＦＯ制御部
３５    ＦＩＦＯ制御部
３６    データ情報選択部
４０    バスモニタ回路
４１    アクセス情報／書込データＦＩＦＯ
４２    読出データＦＩＦＯ
４４    ＦＩＦＯ制御部
４５    ＦＩＦＯ制御部
４６    データ情報選択部
６０〜６４  遅延部
６５    アドレス比較器
６６    制御情報マスク
６７    アドレス情報選択部
７０〜７４  遅延部
７５    アドレス比較部
７６    制御情報／アドレス情報マスク
７７    データ情報選択部
１００  メインプロセッサ
１０１  割り込みコントローラ
１１０  ＣＰＵバス
１５１〜１５３  バスモニタ回路
２００  実行制御プロセッサ
２０１〜２０６  サブプロセッサ
２１０  コントロールバス
３００  共有メモリ
３１０  共有メモリバス
３３０  バス選択部
４００  デバッグブロック
５００  データ符号化／復号化処理システム
【図１】
0005637145.tif 000002
【図２】
0005637145.tif 000003
【図３】
0005637145.tif 000004
【図４】
0005637145.tif 000005
【図５】
0005637145.tif 000006
【図６】
0005637145.tif 000007
【図７】
0005637145.tif 000008
【図８】
0005637145.tif 000009
【図９】
0005637145.tif 000010
【図１０】
0005637145.tif 000011
【図１１】
0005637145.tif 000012
【図１２】
0005637145.tif 000013
【図１３】
0005637145.tif 000014