(57)【特許請求の範囲】
【請求項１】
ＵＳＢで接続された主機器とその周辺機器との間で交わされる信号処理を仮想的に実行するＵＳＢシミュレーション装置において、
複数のテスト項目及びシミュレーション上の命令を記憶する記憶手段と、
前記記憶手段に記憶された内容に基づいてＵＳＢで接続される１つ或いは複数の外部機器に送信するデータを管理する送信データ管理手段と、
前記記憶手段に記憶された内容に基づいて前記外部機器のアドレスを設定する設定手段と、
前記記憶手段に記憶された内容に基づいてデータを出力するタイミングを発生するタイミング発生手段と、
前記タイミング発生手段により発生されるタイミングで、前記設定手段により設定されたアドレスに前記送信データ管理手段から指示されたデータを出力するデータ送信手段と、
ＵＳＢを介して前記外部機器から入力される信号を受信する受信手段と、
前記受信手段により受信される信号に基づいて次に送信するデータを判定し、前記送信データ管理手段に出力する判定手段と、を備え、接続される外部機器に対して仮想主機器、或いは、仮想周辺機器として機能することを特徴とするＵＳＢシミュレーション装置。
【請求項２】
前記送信データ管理手段は、トランザクションの単位で送信するデータを管理することを特徴とする請求項１記載のＵＳＢシミュレーション装置。
【請求項３】
前記送信データ管理手段は、意図的にエラーデータや異常なシーケンスを発生することを特徴とする請求項２記載のＵＳＢシミュレーション装置。
【請求項４】
前記判定手段は、前記受信手段により受信された前記外部機器から入力されるハンドシェイク信号に基づいて次に送信するデータを判定し、前記外部機器に対する全てのテスト項目が完了するまで通信の接続を切断しないことを特徴とする請求項３記載のＵＳＢシミュレーション装置。
【請求項５】
前記設定手段は、データを送信する外部機器のアドレスを設定すると共に、送信するデータの転送特性を任意のモードに設定することを特徴とする請求項１記載のＵＳＢシミュレーション装置。
【請求項６】
ＵＳＢで接続された主機器とその周辺機器との間で交わされる信号処理を仮想的に実行し、接続される外部機器に対して仮想主機器、或いは、仮想周辺機器として機能するためのコンピュータが実行可能なプログラムを格納した記憶媒体であって、
複数のテスト項目及びシミュレーション上の命令に基づいて、ＵＳＢを介して接続される１つ或いは複数の外部機器に送信するデータを管理するためのプログラムコードと、
複数のテスト項目及びシミュレーション上の命令に基づいて前記外部機器のアドレスを設定するためのプログラムコードと、
複数のテスト項目及びシミュレーション上の命令に基づいてデータを出力するタイミングを発生するためのプログラムコードと、
前記タイミングで、設定した前記アドレスに管理するデータを出力するためのプログラムコードと、
ＵＳＢを介して前記外部機器から入力される信号を受信するためのプログラムコードと、
受信される信号に基づいて次に送信するデータを判定するためのプログラムコードと、を含むプログラムを記憶することを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢ（Universal Serial Bus）で接続されたパーソナルコンピュータや周辺機器の通信機能とその動作を仮想的に行い検証するＵＳＢシミュレーション装置に関する。
【０００２】
【従来の技術】
近年では、パーソナルコンピュータ（ホスト）とＵＳＢ規格に準拠したインターフェースによって接続できるキーボード、マウス、スピーカ、モデム、プリンタ等の周辺機器（デバイス）が多く開発されている。
【０００３】
ＵＳＢによるホスト−デバイス間の通信は、ホストのＵＳＢプロトコルソフトウエアによって制御されている。つまり、デバイス側からデータを送信する場合であっても、ホストがデバイスにバス使用権を与えてからデバイスがホストにデータを送信する。
【０００４】
具体的には、ホスト及び各デバイスは、それぞれＵＳＢに準拠したコントローラを有する。ホスト側のＵＳＢコントローラは、ＵＳＢプロトコルソフトウエアのプログラムに従って各デバイスにトークン・パケットを発行する。トークンとは、ホストからデバイスにデータを送信するか（ＯＵＴ）、デバイスからホストにデータを送信するか（ＩＮ）等をデバイスが区別するためのコードであり、デバイスは、受信したトークン・パケットに応じた処理をする。また、パケットとは、ホストやデバイスが出力する情報や、そのデータ種を識別するコード、アドレス等を含んだ情報の単位を意味する。
【０００５】
ホストは、デバイスと通信する際、トランザクションと呼ばれる単位でデバイスとの通信スケジュールを立てる。例えば、まず、ホストがデバイスにトークン・パケットを送信し、データのやり取りが終了すると、データを受信した側が送信側にハンドシェイク・パケットを送信して、トランザクションと呼ばれる通信単位が終了する。
【０００６】
なお、ＵＳＢ上を流れるデータは、フレームという概念で時間分割され、フレームの始めには、必ずＳＯＦ（Start of Frame）パケットが付加される。ホストは、ＳＯＦ・パケットに続いて、予めスケジューリングした順序で各パケットをデバイスと送受信する。
【０００７】
このようなＵＳＢバス上を流れるデータをテストパターンによって調べたり、ＵＳＢを介したデバイスからの応答をＵＳＢバス上で直接検証する場合、一般的に、ＵＳＢシミュレーション・モデルを用いて行う。
【０００８】
ＵＳＢシミュレーションを行う従来の専用シミュレータ２０は、図８に示すように、ホストやデバイスに出力する送信データのパターン（ＵＳＢシミュレーション・モデル）を記憶したメモリ２１、送信データの送出タイミングを制御するタイミング発生器２２、及び、送信データをＵＳＢのシリアルデータに変調したり、受信データを復調するための符号変換回路２３とから構成される。
【０００９】
つまり、専用シミュレータ２０では、メモリ２１に記憶された送信パターンを、符号変換回路２３でフレーム分割し、同期パターンを付加して、タイミング発生器２２が指定するタイミングでホストやデバイスに出力する。
【００１０】
また、図９に示すように、汎用のＵＳＢコントローラＬＳＩ３１を用いてＵＳＢシミュレーションを行う場合もある。図９において、ＵＳＢシミュレーションシステム３０は、ＵＳＢコントローラＬＳＩ３１、制御マイコン３２、ＵＳＢドライバソフトウエア３３とから構成されており、制御マイコン３２は、ＵＳＢドライバソフトウエア３３に記憶されたテストプログラムに従ってＵＳＢコントローラＬＳＩ３１を制御する。
【００１１】
【発明が解決しようとする課題】
しかしながら、図８に示すような従来の専用シミュレータ２０では、同期化のタイミングがずれたり、エラーデータなどにより再送処理が必要になった場合、通信相手との接続が切れ、正常なシミュレーション動作ができない。また、エラーパケットや異常シーケンスを意図的に発生させた場合、その都度通信相手との接続が切れるために、作業時間が冗長化するという問題があった。
【００１２】
一方、図９に示すＵＳＢシミュレーションシステム３０では、検証するデバッグの用途に応じてＵＳＢドライバソフトウエア３３の内容をチューニングする必要があり、手間がかかる。また、ＵＳＢコントローラＬＳＩ３１では、制御マイコン３２が、送受信するデータを自動的に処理し、エラーが発生した場合には送信リトライ信号をデータ発信側に要求するため、エラーパケットや異常シーケンスを意図的に発生できない。
【００１３】
なお、通信のハンドシェイクを維持しながらシミュレーションを行う手法として、パケット単位でソフトウェアハンドリングしてシミュレーションプログラムを実行する方式が従来技術として確立しているが、ＵＳＢにおけるトランザクション中のパケット応答は非常に高速であるため、同一技術では実現が困難である。
【００１４】
本発明の課題は、シミュレーションプログラムによって、ＵＳＢを介して接続されたホスト及びデバイス間のハンドシェイクを維持しながら、意図的にエラーパケットやハンドシェイク等の異常シーケンスを発生させることである。
【００１５】
【課題を解決するための手段】
請求項１記載の発明は、
ＵＳＢで接続された主機器とその周辺機器との間で交わされる信号処理を仮想的に実行するＵＳＢシミュレーション装置において、
複数のテスト項目及びシミュレーション上の命令を記憶する記憶手段と、
前記記憶手段に記憶された内容に基づいてＵＳＢで接続される１つ或いは複数の外部機器に送信するデータを管理する送信データ管理手段（例えば、図４のＣＰＵ１１内のトランザクション管理部１２ｂ）と、
前記記憶手段に記憶された内容に基づいて前記外部機器のアドレスを設定する設定手段（例えば、図４のＣＰＵ１１内の設定部１２ａ）と、
前記記憶手段に記憶された内容に基づいてデータを出力するタイミングを発生するタイミング発生手段（例えば、図４のＵＳＢコントローラ１３内のＵＳＢ状態監視部１３ｃ）と、
前記タイミング発生手段により発生されるタイミングで、前記設定手段により設定されたアドレスに前記送信データ管理手段から指示されたデータを出力するデータ送信手段（例えば、図４のＵＳＢコントローラ１３内の送信制御部１３ｄ）と、
ＵＳＢを介して前記外部機器から入力される信号を受信する受信手段（例えば、図４のＵＳＢコントローラ１３内のステータス監視部１３ｆ）と、
前記受信手段により受信される信号に基づいて次に送信するデータを判定し、前記送信データ管理手段に出力する判定手段（例えば、図４のＣＰＵ１１内の受信データ判定部１２ｃ）と、を備え、接続される外部機器に対して仮想主機器、或いは、仮想周辺機器として機能することを特徴としている。
【００１６】
請求項１記載の発明によれば、
ＵＳＢで接続された主機器とその周辺機器との間で交わされる信号処理を仮想的に実行するＵＳＢシミュレーション装置において、記憶手段は、複数のテスト項目及びシミュレーション上の命令を記憶し、送信データ管理手段は、前記記憶手段に記憶された内容に基づいてＵＳＢで接続された１つ或いは複数の外部機器に送信するデータを管理し、設定手段は、前記記憶手段に記憶された内容に基づいて前記外部機器のアドレスを設定し、タイミング発生手段は、前記記憶手段に記憶された内容に基づいてデータを出力するタイミングを発生し、データ送信手段は、前記タイミング発生手段により発生されるタイミングで、前記設定手段により設定されたアドレスに前記送信データ管理手段から指示されたデータを出力し、受信手段は、ＵＳＢを介して前記外部機器から入力される信号を受信し、判定手段は、前記受信手段により受信される信号に基づいて次に送信するデータを判定し、前記送信データ管理手段に出力する。
【００１７】
従って、記憶手段に記憶した内容に合わせて接続する外部機器のアドレスを変更したり、データを出力するタイミングを変更したり、外部機器から入力される信号に応じて次に出力するデータを選択できる。
【００１８】
請求項２記載の発明は、請求項１記載のＵＳＢシミュレーション装置において、送信データ管理手段が、トランザクションの単位で送信するデータを管理することを特徴としている。
【００１９】
従って、情報をまとまった単位で管理するため、ＵＳＢのバス内で交わされる通信が高速であるにもかかわらず、外部機器から入力される信号に応じた処理ができる。
【００２０】
請求項３記載の発明は、請求項２記載のＵＳＢシミュレーション装置において、送信データ管理手段が、意図的にエラーデータや異常なシーケンスを発生することを特徴としている。
【００２１】
従って、エラーデータや、異常なシーケンスに対する外部機器の応答を検査できる。
【００２２】
請求項４記載の発明は、請求項３記載のＵＳＢシミュレーション装置において、判定手段が、受信手段により受信された外部機器から入力されるハンドシェイク信号に基づいて次に送信するデータを判定し、外部機器に対する全てのテスト項目が完了するまで通信の接続を切断しないことを特徴としている。
【００２３】
従って、エラーデータや異常なシーケンスを発生しても、外部機器との接続が切断されず、ＵＳＢシミュレーションでの論理検証やバス内の信号検索等の作業を効率的に実行できる。
【００２４】
請求項５記載の発明は、請求項１記載のＵＳＢシミュレーション装置において、前記設定手段が、データを送信する外部機器のアドレスを設定すると共に、送信するデータの転送特性を任意のモードに設定することを特徴としている。
【００２５】
従って、接続された外部機器に設定されたアドレスで転送モードに応じた送信を可能とするとともに、そのモードにおいて異常なシーケンスでパケット送信することで、外部機器の異常応答を検査できる。
【００２６】
【発明の実施の形態】
以下、図１〜図７を参照して本発明の実施の形態におけるＵＳＢシミュレーション装置を詳細に説明する。
図１は、ＵＳＢシミュレーション装置１にホスト２と複数の周辺機器（以下、デバイス３）を接続したＵＳＢ接続形態を示すブロック図である。図１において、ＵＳＢシミュレーション装置１は、各機器のＵＳＢコントローラ２ｂ・３ｂと接続されている。
【００２７】
本実施の形態では、ＵＳＢシミュレーション装置１は、仮想ホストとなってデバイス３と通信したり（図２参照）、仮想デバイスとなってホスト２と通信を行う（図３参照）。
【００２８】
図４は、本実施の形態におけるＵＳＢシミュレーション装置１の内部構成を示すブロック図である。図４において、ＵＳＢシミュレーション装置１は、記憶媒体１０、ＣＰＵ１１、及び、ＵＳＢコントローラ１３とから構成されている。
【００２９】
記憶媒体１０は、磁気的、光学的記憶媒体、若しくは半導体メモリなどＣＰＵ１０が読み取り可能な構成をしており、ＵＳＢシミュレーション装置１に着脱可能な媒体や、ハードディスク等の固定的な媒体を含む。記憶媒体１０には、ＵＳＢコントローラ１３を制御するための制御プログラムや、ＵＳＢシミュレーションプログラム等が記憶される。
【００３０】
ＣＰＵ１１は、記憶媒体１０に記憶されるプログラムに従ってＵＳＢコントローラ１３を制御する。
なお、ＣＰＵ１１は、設定部１２ａ、トランザクション管理部１２ｂ、及び、受信データ判定部１３ｃによって、記憶媒体１０に記憶されたＵＳＢシミュレーションプログラムを実行する。
【００３１】
設定部１２ａは、シミュレーション対象とするデバイスの転送モード、帯域、及びアドレス設定の定義をし、ＵＳＢコントローラ１３内のアドレス管理部１３ａ、帯域管理部１３ｂに指示信号を出力する。
【００３２】
ＵＳＢでは、１つの通信パイプに対するバス専有帯域をコントロールして通信を行っている。例えば、キーボードやマウスなどのデバイスから入力される信号を他のデバイスとの通信に割り込んで処理するためのインタラプト転送や、大量のデータを転送するためのバルク転送、オーディオやビデオなど途切れては困るデータを転送するためのアイソクロナス転送、ホストがデバイスの構成情報を取得するためのコントロール転送などの転送モードがある。
【００３３】
つまり、設定部１２ａは、どのデバイスにどの転送モードで通信するかを決定する。また、フレームの始めに付加するＳＯＦ・パケットの出力タイミングをずらしたり、異常なシーケンスで発生させる指示信号をＵＳＢコントローラ１３内のアドレス管理部１３ａ、帯域管理部１３ｂに出力する。
【００３４】
トランザクション管理部１２ｂは、送信するデータの内容を記憶媒体１０から呼び出して送信バッファ１３ｅに展開する展開指示信号と、エラーパケットの発生やハンドシェイク応答の異常シーケンス生成を制御する送信制御信号を生成し、ＵＳＢコントローラ１３内の送信制御部１３ｄに出力する。
【００３５】
トランザクションとは、ホストがデバイスとの通信を確立するために予め設定するスケジュール単位であり、例えば、ホストからデバイスへの通信開始のアクションで始まり、ハンドシェイクで終わる転送データの組み合わせである。つまり、トランザクション管理部１２ｂは、受信データ判定部１２ｃによる判定結果と、記憶媒体１０に記憶されたプログラムに基づいて、トークン・パケットやデータ・パケット、ハンドシェイク・パケット等のトランザクション内の各パケットを決定し、それらの組み合わせを作る。
【００３６】
受信データ判定部１２ｃは、ＵＳＢコントローラ１３内のステータス監視部１３ｆから入力されるデータから通信相手の応答が正常であったか異常終了したのかを判定し、処理を分岐させて次のトランザクションで出力するデータを決定して、トランザクション管理部１２ｂに処理結果を出力する。
【００３７】
例えば、受信データ判定部１２ｃは、出力したエラー・パケットや異常シーケンスの応答を通信相手から入力されるハンドシェイク・パケットに基づいて判定し、引き続きハンドシェイクを断たないための出力データを条件分岐によって決定する。
【００３８】
また、ホスト−デバイス間でコントロール転送を実行する場合、ホストは、デバイスの状態を知るために、デバイスにディスクリプタの転送要求（セットアップ・パケット）を出力する。ディスクリプタとは、デバイスの接続状態や処理状態を意味するコードである。従って、ＵＳＢシミュレーション装置１が仮想ホストであり、デバイスとコントロール転送する場合には、受信データ判定部１２ｃは、デバイスから入力されるディスクリプタに応じた処理をする。
【００３９】
ＵＳＢコントローラ１３は、アドレス管理部１３ａ、帯域管理部１３ｂ、ＵＳＢ状態監視部１３ｃ、送信制御部１３ｄ、送信バッファ１３ｅ、ステータス監視部１３ｆ、及び、コントロールデータキャプチャ１３ｇとから構成されており、ＣＰＵ１１から入力される指示に従って動作する。
【００４０】
アドレス管理部１３ａは、ＣＰＵ１１内の設定部１２ａから入力される指示に従って、デバイスのアドレスを管理し、ＵＳＢ状態監視部１３ｃに出力する。つまり、ＵＳＢシミュレーション装置１が仮想ホストである場合には、接続された１つ或いは複数のデバイスのアドレスを管理し、ＵＳＢシミュレーション装置１が仮想デバイスである場合には、ホストから与えられたアドレスを管理する。
【００４１】
帯域管理部１３ｂは、ＣＰＵ１１内の設定部１２ａから入力される指示に従って出力する信号の送信モードおよびその送信タイミングをコントロールする。
【００４２】
ＵＳＢ状態監視部１３ｃは、アドレス管理部１３ａ、帯域管理部１３ｂ、及び、受信データ判定部１３ｆから入力されるデータに基づいてＵＳＢバス状態を監視し、送信可能なタイミングやモード、アドレス等を送信制御部１３ｄに出力する。
【００４３】
送信制御部１３ｄは、ＣＰＵ１１内のトランザクション管理部１２ｂから入力される指示に従って各パケットを生成し、ＵＳＢコントローラ１３から入力されるタイミング及び転送モードに従って、ＵＳＢバスに出力する。なお、データを出力する場合には、トランザクション管理部１２ｂから入力される送信コマンドに従って展開された送信バッファ１３ｅ内のデータをデータ・パケットとして出力する。
【００４４】
ステータス監視部１３ｆは、ＵＳＢバスを介した接続相手から入力されるハンドシェイク・パケットやデータ・パケット（ディスクリプト等）を解読し、ＣＰＵ１１やＵＳＢ状態監視部１３ｃに出力する。
【００４５】
また、コントロールデータキャプチャ１３ｇは、ステータス監視部１３ｆの解読結果を記憶し、記憶された解読結果は、ＣＰＵ１１から入力される指示信号に応じてステータス監視部１３ｆから読み出されて受信データ判定部１２ｃに出力される。このようにコントロールデータキャプチャ１３ｇに通信相手のステータスを記憶することで、コントロール転送におけるセットアップ情報を正確に反映したプログラムを実行する。
【００４６】
次に、図５〜図７を用いて本発明の実施の形態における動作を説明する。
図５は、ＵＳＢシミュレーション装置１が仮想ホストであり、デバイス３にデータを転送する場合（図２参照）のＯＵＴトランザクションを説明するプロトコルフローである。
【００４７】
図５において、ＵＳＢシミュレーション装置１（仮想ホスト）のＣＰＵ１１は、転送モード、帯域、通信するデバイス３のアドレス等を設定し（ステップＳ１）、ＵＳＢコントローラ１３のアドレス管理部１３ａ及び帯域管理部１３ｂに出力する。
【００４８】
そして、ＣＰＵ１１は、送信制御部１３ｄにトークン・パケット生成指示を出力する。送信制御部１３ｄは、ＣＰＵ１１の指示に従ってトークンパケットを生成すると、ＵＳＢ状態監視部１３ｃから入力されるタイミングに従って指定された転送モード、帯域、及びアドレス（デバイス３）にトークン・パケットを出力する（ステップＳ２）。
【００４９】
ステップＳ２が終了すると、ＣＰＵ１１は、該トランザクションにおいて仮想ホスト１が出力するデータをＵＳＢコントローラ１３内の送信バッファ１３ｅに展開し（ステップＳ３）、データ・パケットの生成指示を送信制御部１３ｄに出力する。送信制御部１３ｄは、ＣＰＵ１１の指示に従って、送信バッファ１３ｅ内から送信するデータを読み出すと、データ・パケットを生成し、ＵＳＢ状態監視部１３ｃから入力されるタイミングに従ってデバイス３にデータ・パケットを出力する（ステップＳ４）
【００５０】
一方、デバイス３は、仮想ホスト１からデータ・パケットが入力されると、データの受信が正常に行われたか否かを判断し、ハンドシェイク・パケットを生成して仮想ホスト１に出力する（ステップＳ５）。
【００５１】
ＣＰＵ１１は、デバイス３から入力されたハンドシェイク・パケットからデバイス３の通信状態を把握し（ステップＳ６）、次のトランザクションで出力するトークンやデータを選択し、トランザクション内の各パケットの組み合わせを決定する。
【００５２】
以上に、ＵＳＢシミュレーション装置１が仮想ホストでデバイス３にデータを出力する場合のＯＵＴトランザクションの流れを説明した。逆に、仮想ホスト１にデバイス３がデータを送信する場合には、仮想ホスト１がトークン・パケットをデバイス３に出力すると、デバイス３はデータ・パケットを仮想ホスト１に出力する。そして、仮想ホスト１内のＣＰＵ１１は、受信したデータ・パケットに応じて出力するハンドシェイクを選択し、ハンドシェイク・パケットを生成するとデバイス３に出力する。
【００５３】
ハンドシェイクの選択は、ＵＳＢ規格に従った制御プロトコルによるものでも良いし、予め記憶媒体１０に記憶された判定コマンドによって意図的に選択するようにしてもよい。また、ハンドシェイク・パケットを出力するタイミングをずらしてエラーを発生させることもできる。
【００５４】
次に、ＵＳＢシミュレーション装置１が仮想デバイスで、ホスト２にデータを出力する場合（図３参照）のＩＮトランザクションについて、図６に示すプロトコルフローに基づいて説明する。
【００５５】
図６において、ホスト２がトークン・パケットを生成し、仮想デバイス１に出力すると（ステップＳ１０）、仮想デバイス１のＣＰＵ１１は、転送するデータをＵＳＢコントローラ１３内の転送バッファ１３ｅに展開し（ステップＳ１１）、データ・パケット生成指示を送信制御部１３ｄに出力する。
【００５６】
送信制御部１３ｄは、データ・パケットを生成して、ＵＳＢ状態監視部１３ｃから入力されるタイミングに従ってホスト２にデータ・パケットを出力する（ステップＳ１２）。
【００５７】
ホスト２は、仮想デバイス１からデータ・パケットを入力されるとハンドシェイク・パケットを生成し、仮想デバイス１に出力する（ステップＳ１３）。
【００５８】
ＣＰＵ１１は、ホスト２から入力されたハンドシェイク・パケットからホスト２の通信状態を把握し（ステップＳ１４）、次のトランザクションで仮想デバイス１が出力するデータを決定する。
【００５９】
以上に、仮想デバイス１がホスト２にデータを転送する場合のＩＮトランザクションについて説明をした。逆に、ホスト２が仮想デバイス１にデータを転送するＯＵＴトランザクションの場合には、ＣＰＵ１１は、受信したトークン・パケットやデータ・パケットに基づいてハンドシェイク・パケットを生成してホスト２に出力する。
【００６０】
続いて、ＵＳＢシミュレーション装置１が仮想ホストであり、デバイス３とコントロール転送による通信を実行する場合（図２参照）に、デバイス３が仮想ホスト１からの要求に応じてディスクリプタを出力するときのＩＮトランザクションについて図７に示すプロトコルフローを用いて説明する。
【００６１】
図７において、仮想ホスト１のＣＰＵ１１は、転送モード、帯域、通信するデバイス３のアドレス等を設定し（ステップＳ２０）、指示信号をＵＳＢコントローラ１３のアドレス管理部１３ａ及び帯域管理部１３ｂに出力する。
【００６２】
更に、ＣＰＵ１１は、送信制御部１３ｄにトークン・パケット生成指示を出力する。送信制御部１３ｄは、ＣＰＵ１１の指示に従ってトークンパケットを生成すると、ＵＳＢ状態監視部１３ｃから入力されるタイミングに従って指定された転送モード、帯域、及びアドレス（該デバイス）にトークン・パケットを出力する（ステップＳ２１）。
【００６３】
一方、デバイス３は、仮想ホスト１からトークン・パケットが入力されると、データ・パケット（ディスクリプタ）を生成し、仮想ホスト１に出力する（ステップＳ２２）。
【００６４】
ＣＰＵ１１は、デバイス３から入力されたディスクリプタからデバイス３の状態を把握し（ステップＳ２３）、次のトランザクションで出力するトークンやデータを選択し、トランザクション内の各パケットの組み合わせを決定する。
【００６５】
次いで、ＣＰＵ１１は、受信したデータ・パケットに対するハンドシェイク・パケットを生成してデバイス３に出力する（ステップＳ２４）。
【００６６】
以上は、デバイス３が仮想ホスト１にディスクリプタを出力するＩＮトランザクションについて説明したが、逆に図３に示す形態において、仮想デバイス１がホスト２にディスクリプタを出力するＯＵＴトランザクションに本発明を適用してもよい。つまり、仮想デバイス１が出力するディスクリプタの内容を、記憶媒体１０に予め記憶されたステータスを設定するコマンドに従って変更する。
【００６７】
以上のように、本発明の実施の形態におけるＵＳＢシミュレーション装置１は、ＣＰＵ１１内の設定部１２ａによって通信するデバイスのアドレスや転送モード、帯域を設定し、トランザクション管理部１２ｂでトランザクション毎にテスト項目（エラー・パケットや異常なシーケンス等）を設定し、受信データ判定部１２ｃで通信内定から入力される応答信号を判定し、判定結果に応じてその後の処理を分岐して、次のトランザクションで実行するテスト項目や送信するデータ等を選択する。
【００６８】
従って、ＵＳＢシミュレーション装置１は、通信相手から入力される応答信号に応じて次のトランザクションの内容を変更できるので、通信相手とのハンドシェイクを維持できる。また、ＣＰＵ１１内の設定部１２ａによって、ＵＳＢシミュレーション装置１が出力する信号の転送モードを随時変更できるため、リアルタイムで異常な信号を発信し、その応答を調べられる。
【００６９】
更に、ＣＰＵ１１が実行するシミュレーションの処理単位をパケットではなく、トランザクションにしたので、ＵＳＢでの高速な通信に対応できる。
【００７０】
なお、本発明は、上記実施の形態において示した内容に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。例えば、ホスト２のＣＰＵ２ａ及びＵＳＢコントローラ２ｂを用いて本発明を実行できるように変更してもよい。また、図５〜図７に本発明の実施の形態におけるプロトコルフローを示したが、テスト項目や通信する機器の応答信号に応じてこれらの流れは適宜変更されるものである。
【００７１】
【発明の効果】
請求項１記載のＵＳＢシミュレーション装置、請求項６記載の記憶媒体によれば、記憶手段に記憶した内容に合わせて接続する外部機器のアドレスを変更したり、データを出力するタイミングを変更したり、外部機器から入力される信号に応じて次に出力するデータを選択できる。
【００７２】
請求項２記載のＵＳＢシミュレーション装置によれば、送信データ管理手段がトランザクション単位でデータを管理するため、ＵＳＢのバス内で交わされる通信が高速であっても、外部機器から入力される信号に応じた処理ができる。
【００７３】
請求項３記載のＵＳＢシミュレーション装置によれば、送信データ管理手段がエラーデータや異常なシーケンスを発生するので、これらの異変な状況における外部機器の応答信号を検査できる。
【００７４】
請求項４記載のＵＳＢシミュレーション装置によれば、判定手段が外部機器から入力されるハンドシェイク信号に応じて次に送信するデータを選択するため、エラーデータや異常なシーケンスを発生させた後でも外部機器との接続を維持できる。
【００７５】
請求項５記載のＵＳＢシミュレーション装置によれば、設定手段は、送信するデータの転送特性を変更できるため、接続される外部機器の転送モードと異なるモードでデータを送信できる。従って、異常信号に対する該外部機器の応答を検査できる。
【図面の簡単な説明】
【図１】ＵＳＢシミュレーション装置１の接続形態を示すブロック図である。
【図２】ＵＳＢシミュレーション装置１とデバイス３の接続を示すブロック図である。
【図３】ＵＳＢシミュレーション装置１とホスト２の接続を示すブロック図である。
【図４】ＵＳＢシミュレーション装置１の内部構成を示すブロック図である。
【図５】ＯＵＴトランザクションのプロトコルフローである。
【図６】ＩＮトランザクションのプロトコルフローである。
【図７】ディスクリプタを送受信する場合のプロトコルフローである。
【図８】従来の専用シミュレータ２０の構成を示すブロック図である。
【図９】従来のＵＳＢシミュレーションシステム３０を示すブロック図である。
【符号の説明】
１        ＵＳＢシミュレーション装置
１０        記憶媒体
１１        ＣＰＵ
１２ａ        設定部
１２ｂ        トランザクション管理部
１２ｃ        受信データ判定部
１３        ＵＳＢコントローラ
１３ａ        アドレス管理部
１３ｂ        帯域管理部
１３ｃ        ＵＳＢ状態監視部
１３ｄ        送信制御部
１３ｅ        送信バッファ
１３ｆ        ステータス監視部
１３ｇ        コントロールデータキャプチャ
２        ホスト
２ａ        ＣＰＵ
２ｂ        ＵＳＢコントローラ
３        デバイス
３ａ        ＵＳＢデバイス
３ｂ        ＵＳＢコントローラ
４        ＵＳＢ（バス）
【図１】
0003750467.tif 000002
【図２】
0003750467.tif 000003
【図３】
0003750467.tif 000004
【図４】
0003750467.tif 000005
【図５】
0003750467.tif 000006
【図６】
0003750467.tif 000007
【図７】
0003750467.tif 000008
【図８】
0003750467.tif 000009
【図９】
0003750467.tif 000010