(57)【要約】【課題】  ＵＳＢバスを流れる差動信号を送受信する物理層と物理層の通信を行うシリアル・インタフェース・エンジンとの間のインタフェース信号をモニタしてＵＳＢバスを流れるトランザクションを識別し、物理層に依存しない部分の正当性の評価を新規に測定器を用いることなく行うＵＳＢテストモニタ回路を提供する。【解決手段】  ＵＳＢバスを流れる差動信号を送受信するＰＨＹとＰＨＹの通信を行うＳＩＥとの間のＵＴＭＩ信号に基づきＵＳＢバスを流れる差動信号のトランザクションを識別するステートマシン１０２と、ＵＴＭＩ信号に基づきＵＳＢバスを流れるデータ信号を生成するデータ生成部１０１と、ステートマシン１０２で識別されたトランザクション識別結果とデータ生成部１０１で生成されたデータ信号とをパラレル出力するパラレル制御部１４とを具備する。【選択図】  図１
2007026196.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢバスを流れる差動信号を送受信する物理層と前記物理層の通信を行うシリアル・インタフェース・エンジンとの間の第１のインタフェース信号を取得する第１インタフェース信号取得手段と、
前記第１のインタフェース信号に基づき前記ＵＳＢバスを流れる差動信号のトランザクションを識別するトランザクション識別手段と、
前記第１のインタフェース信号に基づき前記ＵＳＢバスを流れるデータ信号を生成するデータ信号生成手段と、
前記トランザクション識別手段で識別されたトランザクション識別結果と前記第１インタフェース信号取得手段で生成されたデータ信号とをパラレル出力する第１出力手段と
を具備することを特徴とするＵＳＢテストモニタ回路。
【請求項２】
前記トランザクション識別手段は、
前記第１のインタフェース信号に含まれるパケット識別子を識別することで前記ＵＳＢバスを流れる差動信号のトランザクションを識別して該トランザクションの種別を識別するフラグ信号を出力する
ことを特徴とする請求項１記載のＵＳＢテストモニタ回路。
【請求項３】
前記フラグ信号に基づき前記トランザクション識別手段で識別されたトランザクションンの種別毎の発生回数をカウントするトランザクションカウンタ
を更に具備することを特徴とする請求項２記載のＵＳＢテストモニタ回路。
【請求項４】
前記シリアル・インタフェース・エンジンとＤＭＡ制御回路との間の第２のインタフェース信号を取得する第２インタフェース信号取得手段と、
前記第２のインタフェース信号をパラレルデータで出力する第２出力手段と
を更に具備することを特徴とする請求項１記載のＵＳＢテストモニタ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢテストモニタ回路に関し、特に、ＵＳＢバスを流れる差動信号を送受信する物理層と物理層の通信を行うシリアル・インタフェース・エンジンとの間のインタフェース信号をモニタしてＵＳＢバスを流れるトランザクションを識別し、物理層に依存しない部分の正当性の評価を新規に測定器を用いることなく行うＵＳＢテストモニタ回路に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータやプリンタ、スキャナなどのＰＣ周辺機器を相互に接続するためのインタフェースとして、ＵＳＢ（ユニバーサルシリアルバス）、ＩＥＥＥ１３９４などが注目されている。
【０００３】
これらのインタフェースを介して接続された装置間でのデータ転送は、シリアル転送方式であり、データ転送が高速で行われる。
【０００４】
また、これらのインタフェースを制御するコントローラは、通常、配線間を流れるアナログ信号を物理層においてデジタル信号に変換し、それをデータリンク層に転送して規定の形式に変換することにより、データの送受信をおこなう構成となっている。
【０００５】
また、物理層では、データリンク層から送られてきたパラレルデータを高速シリアル変換して配線へ出力するため、物理層での信号測定はデータ転送が高速になるほど難易度が高くなる。
【０００６】
したがって、高速でデータ転送されるインタフェースのコントローラの評価をおこなうためには、非常に高価な測定器をそろえた環境でなければ、評価をおこなうことができないという問題があった。
【０００７】
そこで、特許文献１には、新規に高価な測定器を準備しなくても、物理層に依存しない部分のデバッグをおこなうことができる高速シリアルコントローラが提案されている。
【特許文献１】特開２００４−２７１２８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１では、テストモード時にＰＨＹ回路とＬＩＮＫ回路との間の信号をシリアルＩ／Ｆに出力し、ＰＨＹに依存しない回路部分の正当性を評価できるように構成されてものであり、高速シリアルバスを流れるトランザクションを識別しようとする場合には、トランザクションを識別する手段を別途用意する必要がある。
【０００９】
そこで、本発明は、ＵＳＢバスを流れる差動信号を送受信する物理層と物理層の通信を行うシリアル・インタフェース・エンジンとの間のインタフェース信号をモニタしてＵＳＢバスを流れるトランザクションを識別し、物理層に依存しない部分の正当性の評価を新規に測定器を用いることなく行うＵＳＢテストモニタ回路を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、請求項１の発明は、ＵＳＢバスを流れる差動信号を送受信する物理層と前記物理層の通信を行うシリアル・インタフェース・エンジンとの間の第１のインタフェース信号を取得する第１インタフェース信号取得手段と、前記第１のインタフェース信号に基づき前記ＵＳＢバスを流れる差動信号のトランザクションを識別するトランザクション識別手段と、前記第１のインタフェース信号に基づき前記ＵＳＢバスを流れるデータ信号を生成するデータ信号生成手段と、前記トランザクション識別手段で識別されたトランザクション識別結果と前記第１インタフェース信号取得手段で生成されたデータ信号とをパラレル出力する第１出力手段とを具備することを特徴とする。
【００１１】
また、請求項２の発明は、請求項１の発明において、前記トランザクション識別手段は、前記第１のインタフェース信号に含まれるパケット識別子を識別することで前記ＵＳＢバスを流れる差動信号のトランザクションを識別して該トランザクションの種別を識別するフラグ信号を出力することを特徴とする。
【００１２】
また、請求項３の発明は、請求項２の発明において、前記フラグ信号に基づき前記トランザクション識別手段で識別されたトランザクションンの種別毎の発生回数をカウントするトランザクションカウンタを更に具備することを特徴とする。
【００１３】
また、請求項４の発明は、請求項１の発明において、前記シリアル・インタフェース・エンジンとＤＭＡ制御回路との間の第２のインタフェース信号を取得する第２インタフェース信号取得手段と、前記第２のインタフェース信号をパラレルデータで出力する第２出力手段とを更に具備することを特徴とする。
【発明の効果】
【００１４】
この発明のＵＳＢテストモニタ回路によれば、ＰＨＹとＳＩＥを内蔵するＡＳＩＣのＵＳＢ動作評価を行うにあたって、ＵＳＢバスをモニタするための測定器を必要とせずに、既存の評価用測定器(ロジックアナライザ)を用いてパラレルＩ／Ｆに出力したインタフェース信号をＡＳＩＣ端子で観測することでＵＳＢバスを流れるトランザクションをモニタすることができる。
【００１５】
また、ＰＨＹとＳＩＥとの間のインタフェース信号であるＵＴＭＩ信号とは別に、各トランザクションを識別する識別フラグの信号を出力することで、動作しているトランザクションの種別を容易に確認することができる。
【００１６】
また、トランザクション動作の発生回数をＡＳＩＣ内のカウンタでカウントすることで、各トランザクション動作の発生回数を確認することができる。
【００１７】
また、ＳＩＥとＤＭＡ制御部との間の信号をパラレルＩ／Ｆに出力することができるので、不具合が発生した場合は、ＵＳＢバスの信号を容易にモニタすることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下、本発明に係わるＵＳＢ（ユニバーサルシリアルバス）テストモニタ回路の一実施例について添付図面を参照して詳細に説明する。
【００１９】
図１は、本発明に係わるＵＳＢテストモニタ回路１００が設けられたプリンタコントローラ１の一例を概略的に示した構成図である。
【００２０】
プリンタコントローラ１は、特定用途向け集積回路であるプリンタコントローラＡＳＩＣ（＝Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１０と、ＣＰＵ（中央演算処理装置）２０と、送受信バッファ用のメモリ３０と、パラレルＩ／Ｆ（インタフェース）４０とを備えており、プリンタコントローラＡＳＩＣ１０は、ホスト側のＵＳＢ２（以下、「ＵＳＢホスト２」という。）とプリンタコントローラＡＳＩＣ１０のＵＳＢとの間のＵＳＢ制御を行うＵＳＢ制御部と、ＵＳＢテストモニタ回路１００と、テストレジスタ１７とを備えている。
【００２１】
ＵＳＢ制御部は、物理層の送受信を行うＰＨＹ１１と、シリアル・インタフェース・エンジンであるＳＩＥ１２と、ＤＭＡ（＝Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ ）制御を行うＤＭＡ制御部１３と、パラレル制御部１４と、割込み制御部１５と、調停部１６とを備えており、ＵＳＢテストモニタ回路１００は、データ生成部１０１と、ステートマシン１０２と、トランザクションカウンタ１０３と、エラーカウンタ１０４と、動作選択部１０５と、第１セレクタ１０６、第２セレクタ１０７、第３セレクタ１０８とを備えている。
【００２２】
ＵＳＢ制御部のＰＨＹ１１は、ＵＳＢホスト２とプリンタコントローラＡＳＩＣ１０のＵＳＢとの間の物理層の送受信を行い、ＵＳＢホスト２から転送されるＵＳＢ差動信号（Ｄ＋、Ｄ−）をデジタル信号に変換する。
【００２３】
また、ＳＩＥ１２は、ＰＨＹ１１から送信されるデジタル信号を解釈してＵＳＢパケット（以下、「パケット」という。）を認識し、認識したパケットをＵＳＢプロトコルに沿ってＰＨＹ１１に送信する。
【００２４】
また、ＳＩＥ１２は、ＣＰＵ処理を必要としないパケットを受信した場合は、当該パケットをＰＨＹ１１に自動的に返信し、ＣＰＵ処理を必要とするパケットを受信した場合は、割込み制御部１５に割り込み信号を出力して割込み制御を行わせ、ＣＰＵ処理に基づくパケットをＰＨＹ１１に送信する（コントロール転送）。
【００２５】
ＤＭＡ制御部１３は、ＣＰＵ２０を介さずにＵＳＢホスト２側とメモリ３０との間で直接データ転送を行なうための制御を行う。
【００２６】
調停部１６は、入力信号の出力の順番を調停する。
【００２７】
具体的には、バルク転送のような大量のデータを送受信する場合は、ＳＩＥ１２からＤＭＡ制御部１３に対して出力される転送要求信号に基づきＤＭＡ制御部１３が調停部１６にＤＭＡ要求を出力し、調停部１６がＤＭＡ制御部１３からのＤＭＡ要求に基づきメモリ３０と図示せぬ外部メモリとのデータの出力順番を調停することで、大量のデータがメモリ３０と図示せぬ外部メモリとの間で送受信される。
【００２８】
パラレル制御部１４は、ＵＳＢテストモニタ回路１００の第２セレクタ１０７及び第３セレクタ１０８に制御信号を出力し、第２セレクタ１０７及び第３セレクタ１０８を介してパラレルデータがパラレルＩ／Ｆ４０に転送されるように制御する。
【００２９】
ＵＳＢテストモニタ回路１００は、ＵＳＢ制御部のＰＨＹ１１とＳＩＥ１２との間のインタフェース信号であるＵＴＭＩ（ＵＳＢ  Ｔｒａｎｓｃｅｉｖｅｒ  Ｍａｃｒｏｃｅｌｌ  Ｉｎｔｅｒｆａｃｅ）信号をモニタし、データ有効時のＰＩＤ（＝Ｐａｃｋｅｔ  ＩＤｅｎｔｉｆｉｅｒ：パケット識別子）によってトランザクションの種別を認識し、各種別毎のトランザクション動作の発生回数が検知できるように構成されている。
【００３０】
ＵＳＢテストモニタ回路１００のデータ生成部１０１は、ＵＳＢ制御部のＰＨＹ１１とＳＩＥ１２との間のＵＴＭＩ信号に基づき８ｂｉｔのデータを生成し、生成したデータはＵＳＢ制御部のパラレル制御部１４の指示信号に基づき第１セレクタ１０６及び第２セレクタ１０７を介してパラレルデータとなってパラレルＩ／Ｆ４０へ転送される。
【００３１】
なお、ＳＩＥ１２からＰＨＹ１１に出力される信号は、例えばＤａｔａＩｎ（８ｂｉｔ）、ＴｘＶａｌｉｄ（１ｂｉｔ）、ＴｘＲｅａｄｙ（１ｂｉｔ）等であり、ＰＨＹ１１からＳＩＥ１２に出力される信号は、例えばＤａｔａＯｕｔ（８ｂｉｔ）、ＲｘＡｃｔｉｖｅ（１ｂｉｔ）、ＲｘＶａｌｉｄ（１ｂｉｔ）等である。
【００３２】
ステートマシン１０２は、ＰＨＹ１１とＳＩＥ１２との間のＵＴＭＩ信号をモニタし、データ有効時のＰＩＤに基づきトランザクションの種別を認識する。
【００３３】
また、ステートマシン１０２は、トランザクションの動作を示すフラグを「Ｈｉｇｈ」または「１」、トランザクションの動作が終了してＩＤＬＥ状態に戻る時にフラグを「Ｌｏｗ」または「０」に設定し、ＴｘＶａｌｉｄ、ＴｘＲｅａｄｙがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＩｎが有効であると認識し、ＲｘＡｃｔｉｖｅとＲｘＶａｌｉｄがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＯｕｔが有効であると認識する。
【００３４】
ステートマシン１０２により設定され、出力されるフラグ値は、テストモード時にパラレルＩ／Ｆ４０の制御信号ラインから制御信号として出力される。  
トランザクションカウンタ１０３は、読み込み、クリアが可能なカウンタであり、トランザクション種別毎の発生回数をカウントする。
【００３５】
動作選択部１０５は、トランザクションカウンタ１０３でカウントする対象のトランザクション種別を選択指定する。
【００３６】
なお、テスト終了時の任意のタイミングでトランザクションカウンタ１０２のカウント値を読み取ることで、動作選択部１０５により選択指定された対象トランザクションの発生回数を読み取ることができる。
【００３７】
このトランザクションカウンタ１０３は、テストモードがＯＦＦの場合、すなわちテストモードでない通常動作モードの場合でも動作可能であり、通常動作時にＵＳＢバス上のトランザクション、ハンドシェイク等の発生回数をカウントすることで（例えば、ＮＹＥＴハンドシェイクの発生回数が分かれば受信バッファＦｕｌｌの度合いなどの目安を知ることができる。）ＵＳＢバスを流れるトランザクションの動作状態をモニタすることができる。
【００３８】
第１セレクタ１０６及び第２セレクタ１０７は、ＵＳＢテストモニタ回路１００内で有効なデータラインを選択し、第３セレクタ１０８は、ＵＳＢテストモニタ回路１００内で有効な制御ラインを選択する。
【００３９】
具体的には、第１セレクタ１０６は、テストモード時に、テストレジスタ１７から転送されるセレクト信号によって、データ生成部１０１で生成されて転送されたデータ信号もしくはＳＩＥ１２とＤＭＡ制御部１３との間で発生するデータ信号のうちの有効なデータ信号を選択して第２セレクタ１０７へ転送する。
【００４０】
また、第２セレクタ１０７は、プリンタコントローラＡＳＩＣ１０のテストモード時は、Ｔｅｓｔｐｉｎ（端子）やテストレジスタ１７から入力されるセレクト信号によって、第１セレクタ１０６で選択されて転送されたデータ信号（データ生成部１０１で生成されて転送されたデータ信号もしくはＳＩＥ１２とＤＭＡ制御部１３との間で発生するデータ信号）を選択し、通常動作時は、パラレル制御部１４から転送されるデータ信号を選択してパラレルＩ／Ｆ４０へ転送する。
【００４１】
エラーカウンタ１０４は、読み込み、クリアが可能なカウンタであり、ステートマシン１０２が認識したＰＩＤが何れのＰＩＤタイプ（例えば、トークン、ハンドシェイク、特殊等）にも該当しない場合は、エラーパルス信号をパラレルＩ／Ｆ４０に出力するとともに、カウント値をカウントアップする。
【００４２】
なお、ＰＨＹ１１とＳＩＥ１２との間のＵＴＭＩ信号のデータバスが８ｂｉｔの場合は６０ＭＨｚ同期の信号として動作し、ＵＴＭＩ信号のデータバスが１６ｂｉｔの場合は３０ＭＨｚ同期の信号として動作するので、ＵＳＢテストモニタ回路１００内で８ｂｉｔにバスサイジングし、パラレルＩ／Ｆ４０では６０ＭＨｚ同期の信号として動作する。
【００４３】
また、パラレルＩ／Ｆ４０のデータバスはテストモードに連動した出力方向となる。
【００４４】
第３セレクタ１０８は、プリンタコントローラＡＳＩＣ１０のテストモード時は、テストレジスタ１７またはＴｅｓｔｐｉｎ（端子)によって、ステートマシン１０２から転送されるフラグ値を示す信号を選択し、通常動作時は、パラレル制御部１４から転送される制御信号を選択してパラレルＩ／Ｆ４０へ転送する。
【００４５】
図２は、ステートマシン１０２でモニタされるＰＩＤとフラグの種類及びカウント対象動作の一例を示すＰＩＤ一覧表２００である。
【００４６】
なお、ステートマシン１０２は、ＤＡＴＡ０、ＤＡＴＡ１をモニタしない。
【００４７】
ＰＩＤ一覧表２０に示すように、ＰＩＤタイプには「トークン」、「ハンドシェイク」、「特殊」等があり、トランザクションは「トークン」または「特殊」パケットで始まり各ＰＩＤ名で示されるフェーズへ遷移する。
【００４８】
具体的には、「トークン」にはＰＩＤ名で示される「ＯＵＴ」、「ＩＮ」、「ＳＯＦ」、「ＳＥＴＵＰ」があり、ホスト側（本実施例ではＵＳＢホスト２）から「ＯＵＴ」トークンパケットが発行されるとＯＵＴトランザクションへ遷移し、「ＩＮ」トークンパケットが発行されるとＩＮトランザクションへ遷移し、「ＳＥＴＵＰ」トークンパケットが発行されるとＳＥＴＵＰトランザクションへ遷移する。
【００４９】
また、ホスト側から「ＳＯＦ」トークンパケットが発行されるとホスト側で複数のトランザクションを編成するフレーム生成が開始される。
【００５０】
ＯＵＴトランザクションはホスト側からデバイス側（本実施例ではプリンタコントローラＡＳＩＣ１０）への送信トランザクションの開始を示し、ＩＮトランザクションはデバイス側からホスト側への送信トランザクションの開始を示し、ＳＯＦトランザクションはフレームの開始を示し、ＳＥＴＵＰトランザクションはコントロール転送のリクエストを発行することを示しており、各トランザクションがホスト側から発行される。
【００５１】
また、「ハンドシェイク」の「ＡＣＫ」はエラーなしデータパケットを受信したことを送信側に通知することを示し、「ＮＡＫ」はデバイス側でデータの送受信に失敗したことを送信側に通知することを示し、「ＳＴＡＬＬ」はデバイス側の何らかの異常状態のために通信の続行ができない旨を送信側に通知することを示し、「ＮＹＥＴ」は受信側の準備がまだできていないことを通知することをそれぞれ示している。
【００５２】
また、「特殊」にはＰＩＤ名で示される「ＰＩＮＧ」があり、ホスト側から「ＰＩＮＧ」特殊パケットが発行されるとＰＩＮＧトランザクションへ遷移し、受信側（本実施例ではプリンタコントローラＡＳＩＣ１０）の状態を調べることを示している。
【００５３】
例えば、ホスト側から「ＯＵＴ」トークンパケットが発行されると、ＯＵＴトランザクションへ遷移し、その際にステートマシン１０２がＯＵＴトランザクション動作を示すｏｕｔフラグを「Ｈｉｇｈ」または「１」に設定し、ＯＵＴトランザクションの発行回数がトランザクションカウンタ１０２によりカウントされる。
【００５４】
ホスト側は、「ＯＵＴ」トークンに続いて、デバイス側の状態に関係なくＤＡＴＡ０またはＤＡＴＡ１のデータパケットを送信し、デバイス側はエラーなしでデータパケットを受信した場合は「ＡＣＫ」ハンドシェイクパケットを返信し、データ受信の準備不良のためにデータの受信に失敗した場合は「ＮＡＫ」ハンドシェイクパケットを返信し、何らかの異常状態が原因でデータパケットの受信に失敗した場合は「ＳＴＡＬＬ」ハンドシェイクパケットを返信する。
【００５５】
また、ホスト側から「ＩＮ」トークンパケットが発行され、ＩＮトランザクションへ遷移するとステートマシン１０２がＩＮトランザクション動作を示すｉｎフラグを「Ｈｉｇｈ」または「１」に設定し、ＩＮトランザクションの発行回数がトランザクションカウンタ１０２によりカウントされる。  
ＩＮトランザクションへ遷移するとデバイス側は、データ送信が可能な状態であればＤＡＴＡ０またはＤＡＴＡ１のデータパケットを送信し、デバイス側のデータ送信の準備が不良のためにデータ送信できない場合は「ＮＡＫ」ハンドシェイクパケットを返信し、何らかの原因でデータ送信できない場合は「ＳＴＡＬＬ」ハンドシェイクパケットを返信する。
【００５６】
ホスト側は、デバイス側から送信されたデータパケットを正常に受信すると「ＡＣＫ」ハンドシェイクパケットを送信し、デバイス側はホスト側から送信された「ＡＣＫ」ハンドシェイクパケットを受信することでデータ転送が成功したと判断する。
【００５７】
また、ホスト側から「ＳＥＴＵＰ」トークンパケットが発行され、ＳＥＴＵＰトランザクションへ遷移すると、ステートマシン１０２がＳＥＴＵＰトランザクション動作を示すｓｅｔｕｐフラグを「Ｈｉｇｈ」または「１」に設定し、ＳＥＴＵＰトランザクションの発行回数がトランザクションカウンタ１０２によりカウントされる。
【００５８】
ＳＥＴＵＰトランザクションへ遷移するとホスト側は、「ＳＥＴＵＰ」トークンに続いて、デバイス側の状態に関係なくＤＡＴＡ０のデータパケットを送信し、デバイス側はデータパケットの受信が成功した場合は「ＡＣＫ」ハンドシェイクパケットを返信する。
【００５９】
また、ホスト側から「ＳＯＦ」トークンパケットが発行されるとホスト側で複数のトランザクションが編成されたフレームが生成されるとともに、ステートマシン１０２がＳＯＦ動作を示すｓｏｆフラグを「Ｈｉｇｈ」または「１」に設定する。
【００６０】
図３は、ＳＥＴＵＰトランザクション動作時のＰＨＹ１１とＳＩＥ１２との間で出力されるデータバス信号とステートマシン１０２が生成するフラグ信号及びパラレルＩ／Ｆ４０から出力されるデータ信号の一例を示す図である。
【００６１】
図３に示すように、ＵＳＢテストモニタ回路１００は、ＵＳＢ制御部のＰＨＹ１１とＳＩＥ１２との間のインタフェース信号であるＵＴＭＩ信号をモニタし、ＰＨＹ１１からＳＩＥ１２に出力されるＲｘＡｃｔｉｖｅ信号３０２、ＲｘＶａｌｉｄ信号３０４がどちらも「Ｈｉｇｈ」または「１」の時は、ＤａｔａＯｕｔ「７：０」信号３０３が有効であると判断し、ＤａｔａＯｕｔ「７：０」信号３０３のＰＩＤ（この場合は「ＳＥＴＵＰ」）に基づきトランザクションをＳＥＴＵＰトランザクションと認識する。
【００６２】
また、ＳＥＴＵＰトランザクションが認識されると、ステートマシン１０２からＳＥＴＵＰフラグを「Ｈｉｇｈ」または「１」を示すＳＥＴＵＰフラグ信号が出力され、トランザクションカウンタ１０３のＳＥＴＵＰカウント値がカウントアップされたＳＥＴＵＰトランザクションカウンタ信号３１０が出力される。
【００６３】
ＳＥＴＵＰフラグ信号は、第３セレクタ１０及びパラレルＩ／Ｆ４０を介してＳＥＴＵＰフラグ（パラレルＩ／Ｆ）信号３０８として出力され、ＰＩＤ、Ｄａｔａ、Ｄａｔａを含むＤａｔａＯｕｔ「７：０」信号３０３が、第１セレクタ１０６、第２セレクタ１０７及びパラレルＩ／Ｆ４０を介してデータ信号（パラレルＩ／Ｆ）３０９ａとして出力される。
【００６４】
また、ＳＩＥ１２からＰＨＹ１１に出力されるＴｘＶａｌｉｄ信号３０５、ＴｘＲｅａｄｙ信号３０７がどちらも「Ｈｉｇｈ」または「１」の時は、ＤａｔａＩｎ「７：０」信号３０６が有効であると判断し、ＤａｔａＩｎ「７：０」信号３０６のＰＩＤ（この場合は「ＳＥＴＵＰ」）に基づきトランザクションをＳＥＴＵＰトランザクションと認識し、ＴｘＶａｌｉｄ３０５、ＴｘＲｅａｄｙ信号３０７がどちらも「Ｌｏｗ」となることで当該ＳＥＴＵＰトランザクション動作が終了し、ＩＤＬＥ状態に戻ったと判断してＳＥＴＵＰフラグを「Ｌｏｗ」または「１」に設定したＳＥＴＵＰフラグ信号３０８が第３セレクタ１０及びパラレルＩ／Ｆ４０を介して出力される。
【００６５】
このように各信号が送受信される動作においてステートマシン１０２がＰＨＹ１１とＳＩＥ１２との間のＵＴＭＩ信号をモニタし、データ有効時のＰＩＤに基づくトランザクション種別を認識する動作の詳細について図４乃至図８の流れ図を参照し説明する。
【００６６】
図４に示すように、プリンタコントローラ１に設けられたＵＳＢテストモニタ回路１００のステートマシン１０２は、ＰＨＹ１１とＳＩＥ１２との間のＵＴＭＩ信号をモニタし、ＰＨＹ１１からＳＩＥ１２に出力される信号であるＲｘＡｃｔｉｖｅ、ＲｘＶａｌｉｄがどちらも「Ｈｉｇｈ」または「１」の時は（ステップＳ４０１でＹＥＳ）、ＤａｔａＯｕｔ「７：０」が有効であると判断し、ホスト側（本実施例ではＵＳＢホスト２）から送信されたＤａｔａＯｕｔ「７：０」に含まれるＰＩＤが「ＳＥＴＵＰ」、「ＩＮ」、「ＯＵＴ」、「ＰＩＮＧ」、「ＳＯＦ」の何れのトークンパケットもしくは特殊パケットであるかを識別する。
【００６７】
具体的には、ステートマシン１０２がホスト側から送信されたＤａｔａＯｕｔ「７：０」のＰＩＤと「ＳＥＴＵＰ」、「ＩＮ」、「ＯＵＴ」、「ＳＯＦ」の各トークンパケット及び「ＰＩＮＧ」の特殊パケットの各ＰＩＤとを比較し、ＤａｔａＯｕｔ「７：０」のＰＩＤが「ＳＥＴＵＰ」トークンパケットのＰＩＤと一致している場合は（ステップＳ４０２でＹＥＳ）、ホスト側から送信されたトークンパケットを「ＳＥＴＵＰ」トークンパケットと認識し、ＳＥＴＵＰフラグを「１」、トランザクションカウンタ１０３のＳＥＴＵＰカウント値を＋１だけカウントアップする。
【００６８】
また、ＤａｔａＯＵＴ「７：０」のＰＩＤが「ＩＮ」トークンパケットのＰＩＤと一致している場合は（ステップＳ４０３でＹＥＳ）、ホスト側から送信されたトークンパケットを「ＩＮ」トークンパケットと認識し、ＩＮフラグを「１」、トランザクションカウンタ１０３のＩＮカウント値を＋１だけカウントアップする。
【００６９】
また、ＤａｔａＯＵＴ「７：０」のＰＩＤが「ＯＵＴ」トークンパケットのＰＩＤと一致している場合は（ステップＳ４０４でＹＥＳ）、ホスト側から送信されたトークンパケットを「ＯＵＴ」トークンパケットと認識し、ＯＵＴフラグを「１」、トランザクションカウンタ１０３のＯＵＴカウント値を＋１だけカウントアップする。
【００７０】
また、ＤａｔａＯＵＴ「７：０」のＰＩＤが「ＰＩＮＧ」特殊パケットのＰＩＤと一致している場合は（ステップＳ４０５でＹＥＳ）、ホスト側から送信された特殊パケットを「ＰＩＮＧ」特殊パケットと認識し、ＰＩＮＧフラグを「１」、トランザクションカウンタ１０３のＰＩＮＧカウント値を＋１だけカウントアップする。
【００７１】
また、ＤａｔａＯＵＴ「７：０」のＰＩＤが「ＳＯＦ」トークンパケットのＰＩＤと一致している場合は（ステップＳ４０６でＹＥＳ）、ＳＯＦフラグが「１」に設定される。
【００７２】
また、ＤａｔａＯＵＴ「７：０」のＰＩＤが「ＳＥＴＵＰ」、「ＩＮ」、「ＯＵＴ」、「ＰＩＮＧ」、「ＳＯＦ」の何れでもない場合は（ステップＳ４０６でＮＯ）、ステートマシン１０２によりエラーフラグが「１」、エラーカウンタのカウント値が＋１だけカウントアップされる。
【００７３】
なお、ホスト側からデバイス側（本実施例ではプリンタコントローラＡＳＩＣ１０）へ「ＳＥＴＵＰ」トークンパケットが送信されることで（ステップＳ４０２でＹＥＳ）ＩＤＬＥ状態からＳＥＴＵＰトランザクションへ遷移し（ステップＳ５００）、「ＩＮ」トークンパケットが送信されることで（ステップＳ４０３でＹＥＳ）ＩＤＬＥ状態からＩＮトランザクションへ遷移し（ステップＳ６００）、「ＯＵＴ」トークンパケットが送信されることで（ステップＳ４０４でＹＥＳ）ＩＤＬＥ状態からＯＵＴトランザクションへ遷移し（ステップＳ７００）、「ＰＩＮＧ」トークンパケットが送信されることで（ステップＳ４０５でＹＥＳ）ＩＤＬＥ状態からＰＩＮＧトランザクションへ遷移する（ステップＳ８００）。  
図５に示すように、ＳＥＴＵＰトランザクションへ遷移し、ＳＥＴＵＰトランザクション動作が開始されると（ステップＳ５００）、ステートマシン１０２は、ＳＩＥ１２からＰＨＹ１１に出力される信号であるＴｘＶａｌｉｄ、ＴｘＲｅａｄｙがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＩＮ「７：０」が有効であると判断し（ステップＳ５０１でＹＥＳ）、デバイス側からホスト側へ応答されるＤａｔａＩＮ「７：０」の内容が「ＡＣＫ」ハンドシェイクであるか否かを判別し（ステップＳ５０２）、「ＡＣＫ」の場合は、ＳＥＴＵＰフラグを「０」に設定する（ステップＳ５０２でＹＥＳ）。
【００７４】
また、ＤａｔａＩＮ「７：０」の内容が「ＡＣＫ」ハンドシェイクでない場合は（ステップＳ５０２でＮＯ）、ＳＥＴＵＰフラグを「０」、エラーフラグを「１」に設定し、エラーカウンタ１０４によりエラーのカウント値が＋１だけカウントアップされる。
【００７５】
また、ＳＥＴＵＰトランザクションへ遷移後、デバイス側からホスト側へ「ＡＣＫ」ハンドシェイクが応答されることでＳＥＴＵＰトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ５０３）。
【００７６】
また、図６に示すように、ＩＮトランザクションへ遷移し、ＩＮトランザクション動作が開始されると（ステップＳ６００）、ステートマシン１０２は、ＳＩＥ１２からＰＨＹ１１に出力される信号であるＴｘＶａｌｉｄ、ＴｘＲｅａｄｙがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＩＮ「７：０」が有効であると判断し（ステップＳ６０１でＹＥＳ）、デバイス側からホスト側へ応答されるＤａｔａＩＮ「７：０」の内容が「ＮＡＫ」または「ＳＴＡＬＬ」の各ハンドシェイクでないか否かを判別し、各ハンドシェイクの内容に基づき各フラグ及びカウンタ値がカウントアップする。
【００７７】
具体的には、デバイス側からホスト側へ応答されるＤａｔａＩＮ「７：０」の内容が「ＮＡＫ」ハンドシェイクの場合は（ステップＳ６０３でＹＥＳ）、ステートマシン１０２がＩＮフラグを「０」に設定し、トランザクションカウンタ１０３によりＮＡＫ（ＩＮ）のカウント値が＋１だけカウントアップされた後、ＩＮトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ６０６）。
【００７８】
また、ＤａｔａＩＮ「７：０」の内容が「ＳＴＡＬＬ」ハンドシェイクの場合は（ステップＳ６０４でＹＥＳ）、ステートマシン１０２がＩＮフラグを「０」に設定し、トランザクションカウンタ１０３によりＳＴＡＬＬ（ＩＮ）のカウント値が＋１だけカウントアップされた後、ＩＮトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ６０６）。
【００７９】
また、ステートマシン１０２は、ＰＨＹ１１からＳＩＥ１２に出力される信号であるＲｘＡｃｔｉｖｅ、ＲｘＶａｌｉｄがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＯＵＴ「７：０」が有効であると判断し（ステップＳ６０２でＹＥＳ）、ホスト側からデバイス側へ送信されるＤａｔａＯＵＴ「７：０」の内容に基づき各フラグ及びカウンタ値をカウントアップする。
【００８０】
具体的には、ＤａｔａＯＵＴ「７：０」の内容が「ＡＣＫ」ハンドシェイクの場合は（ステップＳ６０５でＹＥＳ）、ステートマシン１０２によりＩＮフラグが「０」に設定された後、ＩＮトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ６０６）。
【００８１】
また、ＤａｔａＯＵＴ「７：０」の内容が「ＡＣＫ」ハンドシェイクでない場合は（ステップＳ６０５でＮＯ）、ステートマシン１０２がＩＮフラグを「０」、エラーフラグを「１」に設定し、エラーカウンタ１０４によりエラーカウントのカウント値が＋１だけカウントアップされた後、ＩＮトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ６０６）。
【００８２】
図７に示すように、ＯＵＴトランザクションへ遷移すると、ＯＵＴトランザクション動作が開始され（ステップＳ７００）、ステートマシン１０２は、ＰＨＹ１１からＳＩＥ１２に出力される信号であるＴｘＶａｌｉｄ、ＴｘＲｅａｄｙがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＩＮ「７：０」が有効であると判断し（ステップＳ７０１でＹＥＳ）、デバイス側からホスト側へ応答されるＤａｔａＩＮ「７：０」の内容に基づき各フラグ及びカウンタ値をカウントアップする。
【００８３】
具体的には、ホスト側からデバイス側へ送信されるＤａｔａＩＮ「７：０」の内容が「ＡＣＫ」ハンドシェイクの場合は（ステップＳ７０２でＹＥＳ）、ステートマシン１０２によりＯＵＴフラグが「０」に設定された後、ＯＵＴトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ７０６）。
【００８４】
また、ＤａｔａＩＮ「７：０」の内容が「ＳＴＡＬＬ」ハンドシェイクの場合は（ステップＳ７０３でＹＥＳ）、ステートマシン１０２がＯＵＴフラグを「０」に設定し、トランザクションカウンタ１０３によりＳＴＡＬＬ（ＯＵＴ）のカウント値が＋１だけカウントアップされた後、ＯＵＴトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ７０６）。
【００８５】
また、ＤａｔａＩＮ「７：０」の内容が「ＮＡＫ」ハンドシェイクの場合は（ステップＳ７０４でＹＥＳ）、ステートマシン１０２がＯＵＴフラグを「０」に設定し、トランザクションカウンタ１０３によりＮＡＫ（ＯＵＴ）のカウント値が＋１だけカウントアップされた後、ＯＵＴトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ７０６）。
【００８６】
また、ＤａｔａＩＮ「７：０」の内容が「ＮＹＥＴ」ハンドシェイクの場合は（ステップＳ７０５でＹＥＳ）、ステートマシン１０２がＯＵＴフラグを「０」に設定し、トランザクションカウンタ１０３によりＮＹＥＴ（ＯＵＴ）のカウント値が＋１だけカウントアップされた後、ＯＵＴトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ７０６）。
【００８７】
また、ＤａｔａＩＮ「７：０」の内容が「ＡＣＫ」、「ＳＴＡＬＬ」、「ＮＡＫ」、「ＮＹＥＴ」の何れのハンドシェイクでもない場合は（ステップＳ７０５でＮＯ）、ステートマシン１０２がＯＵＴフラグを「０」、エラーフラグを「１」に設定し、エラーカウンタ１０４によりエラーのカウント値が＋１だけカウントアップされた後、ＯＵＴトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ７０６）。
【００８８】
図８に示すように、ＰＩＮＧトランザクションへ遷移し、ＰＩＮＧトランザクションが動作が開始されると（ステップＳ８００）、ステートマシン１０２は、ＰＨＹ１１からＳＩＥ１２に出力される信号であるＴｘＶａｌｉｄ、ＴｘＲｅａｄｙがどちらも「Ｈｉｇｈ」または「１」の時にＤａｔａＩＮ「７：０」の内容に基づき各フラグ及びカウンタ値をカウントアップする。
【００８９】
具体的には、ホスト側からデバイス側へ送信されるＤａｔａＩＮ「７：０」の内容が「ＡＣＫ」の場合は（ステップＳ８０１でＹＥＳ）、ステートマシン１０によりＰＩＮＧフラグが「０」に設定された後、ＰＩＮＧトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ８０５）。
【００９０】
また、ＤａｔａＩＮ「７：０」の内容が「ＳＴＡＬＬ」ハンドシェイクの場合は（ステップＳ８０２でＹＥＳ）、ステートマシン１０２がＰＩＮＧフラグを「０」に設定し、トランザクションカウンタ１０３によりＳＴＡＬＬ（ＰＩＮＧ）のカウント値が＋１だけカウントアップされた後、ＰＩＮＧトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ８０５）。
【００９１】
また、ＤａｔａＩＮ「７：０」の内容が「ＮＡＫ」ハンドシェイクの場合は（ステップＳ８０４でＹＥＳ）、ステートマシン１０２がＰＩＮＧフラグを「０」に設定し、トランザクションカウンタ１０３によりＮＡＫ（ＰＩＮＧ）のカウント値が＋１だけカウントアップされた後、ＰＩＮＧトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ８０５）。
【００９２】
また、ＤａｔａＩＮ「７：０」の内容が「ＡＣＫ」、「ＳＴＡＬＬ」、「ＮＡＫ」の何れのハンドシェイクでもない場合は（ステップＳ８０４でＮＯ）、ステートマシン１０２がＰＩＮＧフラグを「０」、エラーフラグを「１」に設定し、トランザクションカウンタ１０３によりエラーカウンタ１０４のカウント値を＋１だけカウントアップした後、ＰＩＮＧトランザクションからＩＤＬＥ状態へ遷移する（ステップＳ８０５）。
【００９３】
以上説明したように、本発明に係わるＵＳＢテストモニタ回路１００は、ＰＨＹ１１とＳＩＥ１２を内蔵するプリンタコントローラＡＳＩＣ１０のＵＳＢ動作評価を行うにあたって、既存の評価用測定器(ロジックアナライザ)を用いてパラレルＩ／Ｆに出力したインタフェース信号をプリンタコントローラＡＳＩＣ１０端子で計測することでＵＳＢバスを流れるトランザクションをモニタすることができる。
【００９４】
また、ＰＨＹ１１とＳＩＥ１２との間のインタフェース信号であるＵＴＭＩ信号とは別に、各トランザクションを識別する識別フラグの信号を出力することで、動作しているトランザクションの種別を容易に確認することができる。
【図面の簡単な説明】
【００９５】
【図１】本発明に係わるＵＳＢテストモニタ回路１００が設けられたプリンタコントローラ１の一例を概略的に示した構成図
【図２】ＰＩＤの種類の一例を示すＰＩＤ一覧表２００
【図３】ＳＥＴＵＰトランザクション動作時のステートマシン１０２が生成するフラグ信号とデータバス信号の一例を示す図
【図４】ステートマシン１０２がトランザクションの種別を認識し、各種別毎のトランザクション動作へ遷移する動作を示す流れ図
【図５】ＳＥＴＵＰトランザクション動作の流れ図
【図６】ＩＮトランザクション動作の流れ図
【図７】ＯＵＴランザクション動作の流れ図
【図８】ＰＩＮＧランザクション動作の流れ図
【符号の説明】
【００９６】
１        プリンタコントローラ
２        ＵＳＢホスト
１０      プリンタコントローラＡＳＩＣ（＝Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）
１１      ＰＨＹ（物理層）
１２      ＳＩＥ(シリアル・インタフェース・エンジン)
１３      ＤＭＡ（＝Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ ）制御部
１４      パラレル制御部
１５      割込み制御部
１６      調停部
１７      テストレジスタ
２０      ＣＰＵ（中央演算処理装置）
３０      メモリ（送受信バッファ）
４０      パラレルＩ／Ｆ（＝Ｉｎｔｅｒｆａｃｅ：インタフェース）
１００    ＵＳＢテストモニタ回路
１０１    データ生成部
１０２    ステートマシン
１０３    トランザクションカウンタ
１０４    エラーカウンタ
１０５    動作選択部
１０６    第１セレクタ
１０７    第２セレクタ
１０８    第３セレクタ
２００    ＰＩＤ一覧表
３０１    クロック信号
３０２    ＲｘＡｃｔｉｖｅ信号
３０３    ＤａｔａＯｕｔ「７：０」信号
３０４    ＲｘＶａｌｉｄ信号
３０５    ＴｘＶａｌｉｄ信号
３０６    ＤａｔａＩｎ「７：０」信号
３０７    ＴｘＲｅａｄｙ信号
３０８    ＳＥＴＵＰフラグ信号
３０９ａ  データ信号（パラレルＩ／Ｆ）
３０９ｂ  データ信号（パラレルＩ／Ｆ）
３１０    ＳＥＴＵＰトランザクションカウンタ信号
【図１】
2007026196.tif 000003
【図２】
2007026196.tif 000004
【図３】
2007026196.tif 000005
【図４】
2007026196.tif 000006
【図５】
2007026196.tif 000007
【図６】
2007026196.tif 000008
【図７】
2007026196.tif 000009
【図８】
2007026196.tif 000010