(57)【要約】【課題】第１、第２のＵＳＢデバイス間でのデータ転送を可能にするデータ転送制御装置、接続機器及びデータ転送制御方法の提供。【解決手段】接続機器に用いられる転送コントローラ８０は、ＵＳＢデバイス１、ＵＳＢデバイス２のいずれか一方又は両方にコマンド受信のためのＩＮトークンを発行する。ＩＮトークンに対する応答としてコマンドを含むデータを受信した場合に、受信したに基づいてＵＳＢデバイス１、ＵＳＢデバイス２間のデータ転送を制御する。ＵＳＢデバイス１にＩＮトークンを発行してデータを受信し、ＵＳＢデバイス２にＯＵＴトークンを発行して受信データをＵＳＢデバイス２に送信する。ＵＳＢデバイス１に発行したＩＮトークンに対する応答として、ＮＡＫ（或いは零長パケット）ではなくデータを受信した場合には、ＵＳＢデバイス１から受信したデータをＵＳＢデバイス２に送信する。【選択図】        図２
2004362422.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を用いて第１、第２のＵＳＢデバイスを接続する接続機器のためのデータ転送制御装置であって、
転送データを一時的に格納するデータバッファと、
データ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してコマンド受信のためのＩＮトークンを発行し、
コマンド受信のためのＩＮトークンに対する応答としてコマンドを含むデータを受信した場合に、受信したコマンドに基づいて、前記第１、第２のＵＳＢデバイス間のデータ転送を制御することを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記転送コントローラが、
コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスに対してＩＮトークンを発行して、前記一方のＵＳＢデバイスからデータを受信し、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のＵＳＢデバイスに送信することを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
前記転送コントローラが、
コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、ライトコマンド又はリードコマンドを含むデータを他方のＵＳＢデバイスに送信することを特徴とするデータ転送制御装置。
【請求項４】
請求項２において、
前記転送コントローラが、
コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスに対してＯＵＴトークンを発行して、リードコマンドを含むデータを前記一方のＵＳＢデバイスに送信し、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、ライトコマンドを含むデータを前記他方のＵＳＢデバイスに送信することを特徴とするデータ転送制御装置。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記転送コントローラが、
前記コマンドにより前記第１のＵＳＢデバイスから前記第２のＵＳＢデバイスにデータを転送することが指示された場合には、前記第１のＵＳＢデバイスに対してＩＮトークンを発行して、前記第１のＵＳＢデバイスからデータを受信し、前記第２のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第１のＵＳＢデバイスから受信したデータを前記第２のＵＳＢデバイスに送信し、
前記コマンドにより前記第２のＵＳＢデバイスから前記第１のＵＳＢデバイスにデータを転送することが指示された場合には、前記第２のＵＳＢデバイスに対してＩＮトークンを発行して、前記第２のＵＳＢデバイスからデータを受信し、前記第１のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第２のＵＳＢデバイスから受信したデータを前記第１のＵＳＢデバイスに送信することを特徴とするデータ転送制御装置。
【請求項６】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を用いて第１、第２のＵＳＢデバイスを接続する接続機器のためのデータ転送制御装置であって、
転送データを一時的に格納するデータバッファと、
データ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してＩＮトークンを発行し、
発行したＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスから、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）ではなく零長ではないデータを受信した場合には、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のデバイスに送信することを特徴とするデータ転送制御装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記転送コントローラが、
前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してインタラプト転送を用いて定期的にＩＮトークンを発行することを特徴とするデータ転送制御装置。
【請求項８】
請求項１乃至６のいずれかにおいて、
前記転送コントローラが、
前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してバルク転送を用いて定期的に又は不定期にＩＮトークンを発行することを特徴とするデータ転送制御装置。
【請求項９】
請求項１乃至８のいずれかのデータ転送制御装置と、
前記第１のＵＳＢデバイスを接続するための第１のコネクタと、
前記第２のＵＳＢデバイスを接続するための第２のコネクタと、
を含むことを特徴とする接続機器。
【請求項１０】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御装置であって、
転送データを一時的に格納するデータバッファと、
データ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
送信すべきコマンドが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、
送信すべきコマンドがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、コマンドを含むデータを送信することを特徴とするデータ転送制御装置。
【請求項１１】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御装置であって、
転送データを一時的に格納するデータバッファと、
データ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
前記第２のＵＳＢデバイスに送信すべきデータが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、
前記第２のＵＳＢデバイスに送信すべきデータがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、前記第２のＵＳＢデバイスに送信すべきデータを送信することを特徴とするデータ転送制御装置。
【請求項１２】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して第１、第２のＵＳＢデバイス間でデータを転送するためのデータ転送制御方法であって、
前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してコマンド受信のためのＩＮトークンを発行し、
コマンド受信のためのＩＮトークンに対する応答としてコマンドを含むデータを受信した場合に、受信したコマンドに基づいて、前記第１、第２のＵＳＢデバイス間のデータ転送を制御することを特徴とするデータ転送制御方法。
【請求項１３】
請求項１２において、
コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスに対してＩＮトークンを発行して、前記一方のＵＳＢデバイスからデータを受信し、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のＵＳＢデバイスに送信することを特徴とするデータ転送制御方法。
【請求項１４】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して第１、第２のＵＳＢデバイス間でデータを転送するためのデータ転送制御方法であって、
前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してＩＮトークンを発行し、
発行したＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスから、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）ではなく零長ではないデータを受信した場合には、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のデバイスに送信することを特徴とするデータ転送制御方法。
【請求項１５】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御方法であって、
送信すべきコマンドが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、
送信すべきコマンドがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、コマンドを含むデータを送信することを特徴とするデータ転送制御方法。
【請求項１６】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御方法であって、
前記第２のＵＳＢデバイスに送信すべきデータが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、
前記第２のＵＳＢデバイスに送信すべきデータがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、前記第２のＵＳＢデバイスに送信すべきデータを送信することを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置、接続機器及びデータ転送制御方法に関する。
【０００２】
【背景技術】
従来より、パーソナルコンピュータなどのホストとペリフェラルデバイスを接続するためのシリアルバス・インターフェース規格として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が知られている。また、従来のＵＳＢ１．１規格に対する互換性を保ちながら、高速な４８０Ｍｂｐｓ（ＨＳモード）の転送速度を実現できる規格としてＵＳＢ２．０も策定され、注目を浴びている。
【０００３】
【特許文献１】
特開２００２−１３５１３２号公報
【０００４】
【発明が解決しようとする課題】
ＵＳＢにおいては、ＩＥＥＥ１３９４とは異なり、データ転送の主導権をホストが有している。即ちデータ転送のトランザクションを発行するのはホストであり、データ転送に関する大部分の制御はホストが行う。従って第１、第２のＵＳＢデバイス（ペリフェラルデバイス）間でデータのやり取りを行う場合には、パーソナルコンピュータを用意し、このパーソナルコンピュータに第１、第２のＵＳＢデバイスを接続する必要がある。このため、第１、第２のＵＳＢデバイス間を直接に接続してデータ転送を行うことが難しかった。
【０００５】
また、ＵＳＢを用いた従来のデータ転送制御手法では、ＵＳＢデバイス側からホストに対して能動的にコマンドを発行して、データ転送を制御することはできなかった。
【０００６】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、第１、第２のＵＳＢデバイス間でのデータ転送を可能にするデータ転送制御装置、接続機器及びデータ転送制御方法を提供することにある。
【０００７】
【課題を解決するための手段】
本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を用いて第１、第２のＵＳＢデバイスを接続する接続機器のためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してコマンド受信のためのＩＮトークンを発行し、コマンド受信のためのＩＮトークンに対する応答としてコマンドを含むデータを受信した場合に、受信したコマンドに基づいて、前記第１、第２のＵＳＢデバイス間のデータ転送を制御するデータ転送制御装置に関係する。
【０００８】
本発明によれば、第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してコマンド受信のためのＩＮトークンが発行される。そしてこのＩＮトークンに対する応答してコマンドを受信すると、このコマンド（コマンドの解釈結果）に基づいて第１、第２のＵＳＢデバイス間のデータ転送が制御される。これにより、ホストが常に主導権を有する通常のＵＳＢデータ転送手法とは異なり、ＵＳＢデバイス側に主導権を持たせた第１、第２のＵＳＢデバイス間でのデータ転送制御を実現できる。
【０００９】
また本発明では、前記転送コントローラが、コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスに対してＩＮトークンを発行して、前記一方のＵＳＢデバイスからデータを受信し、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のＵＳＢデバイスに送信するようにしてもよい。
【００１０】
このようにすれば、ＩＮトークンにより発生するＩＮトランザクションとＯＵＴトークンにより発生するＯＵＴトランザクションを上手く利用して、第１、第２のＵＳＢデバイス間でのデータ転送を実現できる。
【００１１】
また本発明では、前記転送コントローラが、コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、ライトコマンド又はリードコマンドを含むデータを他方のＵＳＢデバイスに送信するようにしてもよい。
【００１２】
また本発明では、前記転送コントローラが、コマンド受信のためのＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイス間のデータ転送を指示するコマンドを含むデータを受信した場合に、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスに対してＯＵＴトークンを発行して、リードコマンドを含むデータを前記一方のＵＳＢデバイスに送信し、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、ライトコマンドを含むデータを前記他方のＵＳＢデバイスに送信するようにしてもよい。
【００１３】
また本発明では、前記転送コントローラが、前記コマンドにより前記第１のＵＳＢデバイスから前記第２のＵＳＢデバイスにデータを転送することが指示された場合には、前記第１のＵＳＢデバイスに対してＩＮトークンを発行して、前記第１のＵＳＢデバイスからデータを受信し、前記第２のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第１のＵＳＢデバイスから受信したデータを前記第２のＵＳＢデバイスに送信し、前記コマンドにより前記第２のＵＳＢデバイスから前記第１のＵＳＢデバイスにデータを転送することが指示された場合には、前記第２のＵＳＢデバイスに対してＩＮトークンを発行して、前記第２のＵＳＢデバイスからデータを受信し、前記第１のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第２のＵＳＢデバイスから受信したデータを前記第１のＵＳＢデバイスに送信するようにしてもよい。
【００１４】
このようにすれば、第１のＵＳＢデバイスから第２のＵＳＢデバイスへの第１の方向でのデータ転送と、第２のＵＳＢデバイスから第１のＵＳＢデバイスへの第２の方向でのデータ転送を、ＵＳＢデバイスからのコマンドに基づいて簡素に実現できる。
【００１５】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を用いて第１、第２のＵＳＢデバイスを接続する接続機器のためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してＩＮトークンを発行し、発行したＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスから、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）ではなく零長ではないデータを受信した場合には、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のデバイスに送信するデータ転送制御装置に関係する。
【００１６】
本発明によれば、第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してＩＮトークンが発行される。そしてこのＩＮトークンに対する応答して、一方のＵＳＢデバイスからデータ（零長ではないデータ）を受信すると、他方のＵＳＢデバイスに対してＯＵＴトークンが発行されて、受信データが他方のＵＳＢデバイスに送信される。これにより、ＵＳＢデバイス側に主導権を持たせながら、第１、第２のＵＳＢデバイス間でデータを転送することが可能になる。
【００１７】
また本発明では、前記転送コントローラが、前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してインタラプト転送を用いて定期的にＩＮトークンを発行するようにしてもよい。
【００１８】
また本発明では、前記転送コントローラが、前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してバルク転送を用いて定期的に又は不定期にＩＮトークンを発行するようにしてもよい。
【００１９】
また本発明は上記のいずれかのデータ転送制御装置と、前記第１のＵＳＢデバイスを接続するための第１のコネクタと、前記第２のＵＳＢデバイスを接続するための第２のコネクタとを含む接続機器に関係する。
【００２０】
このような構成の接続機器によれば、あたかも第１、第２のＵＳＢデバイス間で直接にデータ転送しているかのように見えるデータ転送を実現できる。
【００２１】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、送信すべきコマンドが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、送信すべきコマンドがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、コマンドを含むデータを送信するデータ転送制御装置に関係する。
【００２２】
本発明によれば、コマンドの非送信時には、ＩＮトークンに対する応答としてＮＡＫ又は零長パケットが送信される。一方、コマンドの送信時には、ＩＮトークンに対する応答としてコマンドが送信される。これにより、ホストが常に主導権を有する通常のＵＳＢデータ転送手法とは異なり、ＵＳＢデバイスに主導権を持たせた第１、第２のＵＳＢデバイス間でのデータ転送制御を実現できる。
【００２３】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、前記第２のＵＳＢデバイスに送信すべきデータが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、前記第２のＵＳＢデバイスに送信すべきデータがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、前記第２のＵＳＢデバイスに送信すべきデータを送信するデータ転送制御装置に関係する。
【００２４】
本発明によれば、データの非送信時には、ＩＮトークンに対する応答としてＮＡＫ又は零長パケットが送信される。一方、データの送信時には、ＩＮトークンに対する応答としてコマンドが送信される。これにより、ＵＳＢデバイスに主導権を持たせながら、第１、第２のＵＳＢデバイス間でデータを転送することが可能になる。
【００２５】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して第１、第２のＵＳＢデバイス間でデータを転送するためのデータ転送制御方法であって、前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してコマンド受信のためのＩＮトークンを発行し、コマンド受信のためのＩＮトークンに対する応答としてコマンドを含むデータを受信した場合に、受信したコマンドに基づいて、前記第１、第２のＵＳＢデバイス間のデータ転送を制御するデータ転送制御方法に関係する。
【００２６】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して第１、第２のＵＳＢデバイス間でデータを転送するためのデータ転送制御方法であって、前記第１、第２のＵＳＢデバイスのいずれか一方又は両方に対してＩＮトークンを発行し、発行したＩＮトークンに対する応答として、前記第１、第２のＵＳＢデバイスの一方のＵＳＢデバイスから、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）ではなく零長ではないデータを受信した場合には、前記第１、第２のＵＳＢデバイスの他方のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記一方のＵＳＢデバイスから受信したデータを前記他方のデバイスに送信するデータ転送制御方法に関係する。
【００２７】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御方法であって、送信すべきコマンドが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、送信すべきコマンドがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、コマンドを含むデータを送信するデータ転送制御方法に関係する。
【００２８】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及び接続機器を介して第２のＵＳＢデバイスと接続される第１のＵＳＢデバイスのためのデータ転送制御方法であって、前記第２のＵＳＢデバイスに送信すべきデータが無い場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、ＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）又は零長パケットを送信し、前記第２のＵＳＢデバイスに送信すべきデータがある場合には、前記接続機器が含むデータ転送制御装置からのＩＮトークンに対する応答として、前記第２のＵＳＢデバイスに送信すべきデータを送信するデータ転送制御方法に関係する。
【００２９】
【発明の実施の形態】
以下、本実施形態について説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３０】
１．ＵＳＢ
ＵＳＢではデータ転送の主導権をホストが有している。このためホストの処理負荷は重くなるが、ホストとなるパーソナルコンピュータ等は高性能なＣＰＵ（プロセッサ）を有しているため、それほど問題にはならない。一方、ＵＳＢデバイス（ＵＳＢデバイス機器、ターゲット）はホストからの要求に対して単に応答するだけでよいため、ＵＳＢデバイス側の処理、構成については簡素化できるという利点がある。ＵＳＢではこのようなホスト主導のデータ転送を実現するために、図１（Ａ）に示すようなエンドポイント（ＥＰ０〜１５）がＵＳＢデバイス側に用意される。ホストは、デバイスアドレスとエンドポイント番号を指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。
【００３１】
なおＵＳＢでは、データ転送のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送が用意されている。コントロール転送は、ホストとＵＳＢデバイス（ターゲット）との間でエンドポイント０を介して行われる制御用の転送モードである。アイソクロナス転送は、画像や音声のデータを定期的に転送するために用意された転送モードである。インタラプト転送は、比較的低い転送速度で少量のデータを定期的に転送するために用意された転送モードである。バルク転送は、不定期に発生する大量のデータを転送するために用意された転送モードである。
【００３２】
図１（Ｂ）に示すように、ＵＳＢのトランザクションは、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
【００３３】
ここでトークンパケットは、ホストがＵＳＢデバイスのエンドポイントのリードやライトを要求する場合などに使用されるパケットである。このトークンパケットは、ＰＩＤ（ＯＵＴ、ＩＮ、ＳＯＦ、ＳＥＴＵＰなどのパケットＩＤ）、ＡＤＤＲ（デバイスアドレス）、ＥＮＤＰ（エンドポイント番号）、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）のフィールドを有する。データパケットは、データの実体（ｄａｔａ  ｂｏｄｙ）を送るためのパケットであり、ＰＩＤ（ＤＡＴＡ０、ＤＡＴＡ１）、ＤＡＴＡ、ＣＲＣのフィールドを有する。ハンドシェークパケットは、データ受信に成功したか否かを受信側が送信側に伝えるためのパケットであり、ＰＩＤ（ＡＣＫ、ＮＡＫ、ＳＴＡＬＬ）のフィールドを有する。
【００３４】
ＯＵＴトランザクション（ホストがＵＳＢデバイスに情報を出力するトランザクション）では、図１（Ｃ）に示すように、まず、ホストがＵＳＢデバイスに対してＯＵＴトークン（トークンパケット）を発行する。次に、ホストはＵＳＢデバイスに対してＯＵＴデータ（データパケット）を送信する。そして、ＵＳＢデバイスは、ＯＵＴデータの受信に成功すれば、ホストに対してＡＣＫ（ハンドシェークパケット）を送信する。このようにすることで、ホストがＵＳＢデバイスにデータをライトする処理が実現される。
【００３５】
一方、ＩＮトランザクション（ホストがＵＳＢデバイスから情報を入力するトランザクション）では、図１（Ｄ）に示すように、まず、ホストがＵＳＢデバイスに対してＩＮトークン（トークンパケット）を発行する。そして、ＩＮトークンを受信したＵＳＢデバイスは、ホストに対してＩＮデータ（データパケット）を送信する。そしてホストは、ＩＮデータの受信に成功すると、ＵＳＢデバイスに対してＡＣＫを送信する。このようにすることで、ホストがＵＳＢデバイスからデータをリードする処理が実現される。
【００３６】
なお図１（Ｃ）、（Ｄ）において、”Ｄ←Ｈ”は、ホストからＵＳＢデバイスに対して情報が転送されることを意味し、”Ｄ→Ｈ”は、ＵＳＢデバイスからホストに対して情報が転送されることを意味する。
【００３７】
図１（Ｃ）（Ｄ）に示すようにＵＳＢでは、ライト処理の場合にはホストがＯＵＴトークンを発行し、リード処理の場合にはホストがＩＮトークンを発行するというように、データ転送の主導権をホストが有している。従って第１、第２のＵＳＢデバイス間でデータのやり取りを行う場合には、常にホストが必要になるという課題があった。またＵＳＢデバイス側からホストに対して能動的にコマンドを発行して、データ転送を制御することが難しいという課題があった。
【００３８】
２．構成例
図２に、以上のような課題を解決できる本実施形態のデータ転送制御装置（データ転送制御回路、データ転送制御ＩＣ）の構成例を示す。なお図２の一部の機能ブロックを省略する構成としてもよい。また図２の機能ブロックはハードウェア回路のみにより実現してもよいし、ハードウェア回路とファームウェア（ソフトウェア）の両方により実現してもよい。
【００３９】
データ転送制御装置１１０はトランシーバ１０−１、１０−２を含む。このトランシーバ１０−１、１０−２は、差動データ信号ＤＰ、ＤＭを用いてＵＳＢ（広義にはバス）のデータを送受信する回路であり、ＵＳＢの物理層回路を含む。トランシーバ１０−１、１０−２は、ＵＳＢポートを介してＵＳＢデバイスが接続可能となっている。
【００４０】
データ転送制御装置１１０はルートハブ２０を含む。このルートハブ２０はホストコントローラ３０に直接接続されるハブである。ルートハブ２０は、ホストコントローラ３０と１又は複数のＵＳＢポートとの間のコネクションを提供する。
【００４１】
データ転送制御装置１１０はホストコントローラ３０（広義には転送コントローラ。他の説明でも同様）を含む。このホストコントローラ３０はＵＳＢを介したデータ転送を制御するものである。具体的にはＩＮトークン（ＩＮトークンパケット）やＯＵＴトークン（ＯＵＴトークンパケット）を発行する処理や、パケットを組み立てたり分解する処理や、ハンドシェークパケットを発行する処理や、データ転送のフェーズを制御する処理などを行う。なお本実施形態のホストコントローラ３０は、パーソナルコンピュータのホストコントローラに要求されるような全てのホスト機能を具備する必要はなく、例えばＵＳＢ  Ｏｎ−Ｔｈｅ−Ｇｏ（ＯＴＧ）規格のホストコントローラに要求されるような簡易的なホスト機能（少なくともＩＮトランザクション、ＯＵＴトランザクションを発生できる機能）を具備すれば十分である。
【００４２】
ホストコントローラ３０はメインコントローラ３２（ＣＰＵ、プロセッサ）とＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）３４を含む。メインコントローラ３２はホストコントローラ３０の処理シーケンス等を制御するものであり、例えばＵＳＢのドライバ・ソフトウェアなどにより動作する。ＳＩＥ３４は、ＵＳＢのパケット・ハンドル処理、トランザクション管理処理などを行うものである。
【００４３】
データ転送制御装置１１０はデータバッファ４０（ＦＩＦＯ、パケットバッファ）を含む。データバッファ４０は、ＵＳＢを介して転送されるデータ（送信データ又は受信データ）を一時的に格納（バッファリング）するためものである。このデータバッファ４０はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリにより構成できる。
【００４４】
本実施形態ではホストコントローラ３０が、ＵＳＢデバイス１、ＵＳＢデバイス２のいずれか一方又は両方に対してＩＮトークン（ＩＮトークンのパケット）を発行して、ホストコントローラ３０に対して発行すべきコマンドが無いか否かを確かめる。
【００４５】
このＩＮトークンの発行は、インタラプト転送などを用いて例えば定期的に行うことができる。即ちホストコントローラ３０は、パケットの転送順序を制御、管理し、各転送タイプのパケットの転送を指示する。このためにホストコントローラ３０は、フレーム管理を行い、フレーム（１ｍｓ、１２５μｓ）毎に、ＳＯＦ（Ｓｔａｒｔ  Ｏｆ  Ｆｒａｍｅ）パケットをＵＳＢデバイス（ペリフェラル機器）に発行する。ここでＳＯＦは、フレームの先頭を示すためのトークンパケットであり、ＰＩＤとフレーム番号とＣＲＣを含む。またフレームは、ＳＯＦと次のＳＯＦとの間のインターバルである。ホストコントローラ３０は、１つのトランザクションが複数のフレームにまたがらないようにスケジューリング管理を行うことになる。このＳＯＦを利用することでホストコントローラ３０は、コマンド受信のためのＩＮトークンパケットを定期的にＵＳＢデバイスに発行することができる。
【００４６】
なおＩＮトークンの発行を、バルク転送を用いて定期的又は不定期に行ってもよい。或いは他の転送モード（アイソクロナス転送、コントロール転送）を利用してＩＮトークンを発行してもよい。
【００４７】
ホストコントローラ３０は、発行したＩＮトークンに対する応答としてコマンド（コマンドを含むデータ）をＵＳＢデバイスから受信した場合には、受信したコマンドを解釈する。例えば受信したコマンドの変換処理（ライトコマンドやリードコマンドへの変換処理）を行う。そしてホストコントローラ３０は、コマンドの解釈結果に基づいてデータ転送を制御し、ＵＳＢデバイス１、ＵＳＢデバイス２間でのピア・ツー・ピア（ｐｅｅｒ  ｔｏ  ｐｅｅｒ）のデータ転送を実現する。
【００４８】
より具体的には、ＩＮトークンに対する応答として、ＵＳＢデバイス１、ＵＳＢデバイス２間のデータ転送を指示するコマンド（コマンドを含むデータパケット）を受信した場合には、例えばＵＳＢデバイス１に対してＩＮトークンを発行して、ＵＳＢデバイス１からデータ（データパケット）を受信する。そしてＵＳＢデバイス２に対してＯＵＴトークンパケットを発行して、ＵＳＢデバイス１からＩＮトークンにより受信したデータを、ＵＳＢデバイス２に送信する。或いは逆に、ＵＳＢデバイス２に対してＩＮトークンを発行して、ＵＳＢデバイス２からデータを受信し、ＵＳＢデバイス１に対してＯＵＴトークンを発行して、ＵＳＢデバイス２から受信したデータをＵＳＢデバイス１に送信してもよい。
【００４９】
なお、ＵＳＢデバイスから受信したコマンドに基づくデータ転送制御処理は、上記のようなデータ転送処理に限定されない。またＵＳＢデバイス１、ＵＳＢデバイス２の一方から受信したデータ（転送すべきデータやコマンドを含むデータ）を、コマンド等の解釈を行わずに、そのままＵＳＢデバイス１、ＵＳＢデバイス２の他方に送信してもよい。即ち、発行したＩＮトークンに対する応答として、ＵＳＢデバイス１、ＵＳＢデバイス２の一方のＵＳＢデバイスからＮＡＫ（ＮＡＫのハンドシェークパケット）ではなく零長ではないデータ（零長ではないデータパケット）を受信した場合に、受信データを他方のＵＳＢデバイスに送信するようにしてもよい。
【００５０】
またデータ転送制御装置１１０の構成は図２の構成に限定されない。例えば図３（Ａ）に示すように、ＵＳＢデバイス１用（第１のＵＳＢポート用）のトランシーバ１０−１、ルートハブ２０−１、ホストコントローラ３０−１、データバッファ４０−１と、ＵＳＢデバイス２用（第２のＵＳＢポート用）のトランシーバ１０−２、ルートハブ２０−２、ホストコントローラ３０−２、データバッファ４０−２を別々に設けてもよい。即ち図２の構成では、ＵＳＢデバイス１、ＵＳＢデバイス２は１つのＵＳＢにより接続されている。これに対して図３（Ａ）の構成では、ＵＳＢデバイス１が接続されるＵＳＢと、ＵＳＢデバイス２が接続されるＵＳＢとは異なっている。
【００５１】
図３（Ａ）のような構成にすれば、ＵＳＢデバイス１とデータ転送制御装置１１０との間の第１のＵＳＢデータ転送と、ＵＳＢデバイス２とデータ転送制御装置１１０との間の第２のＵＳＢデータ転送を、並列（独立）に行うことが可能になる。これによりデータ転送の高速化を図れる。例えばＵＳＢデバイス１との間でＩＮトランザクションのデータ転送を行っている最中に、ＵＳＢデバイス２との間でＯＵＴトランザクションのデータ転送を行うことなどが可能になる。
【００５２】
なお図３（Ａ）のような構成を採用する場合、図３（Ｂ）に示すようにデータバッファ４０をホストコントローラ３０−１、３０−２で共用するようにしてもよい。このようにすれば回路の小規模化を図りながらも、ＵＳＢデバイス１との間の第１のＵＳＢデータ転送とＵＳＢデバイス２との間の第２のＵＳＢデータ転送を、並列（独立）に行うことが可能になる。
【００５３】
３．接続機器
図４（Ａ）に本実施形態のデータ転送制御装置１１０を含む接続機器１００（広義には電子機器）の一例を示す。
【００５４】
この接続機器１００は、データ転送制御装置１１０（データ転送制御ＩＣ）が内蔵される封止部１１２（接続部、中継部、カバー部）と、封止部１１２の一端にその一端が接続されるケーブル１２０と、封止部１１２の他端にその一端が接続されるケーブル１２２と、ケーブル１２０の他端に接続されるコネクタ１３０（シリーズＢコネクタ）と、ケーブル１２２の他端に接続されるコネクタ１３２（シリーズＢコネクタ）を含む。このコネクタ１３０、１３２にはＵＳＢデバイス１、ＵＳＢデバイス２が接続可能になっている。また第１のコネクタ１３０はデータ転送制御装置１１０の第１のＵＳＢポートと電気的に接続され、第２のコネクタ１３２はデータ転送制御装置１１０の第２のＵＳＢポートと電気的に接続されている。
【００５５】
なおコネクタ１３０、１３２は、プラグ（Ｂ−Ｐｌｕｇ）であってもよいし、受け側コネクタであるレセプタクル（Ｂ−Ｒｅｃｅｐｔａｃｌｅ）であってもよい。また図４（Ｂ）に示すように一方のケーブル１２０を設けない構成にしたり、図４（Ｃ）に示すように両方のケーブル１２０、１２２を設けない構成としてもよい。
【００５６】
図４（Ａ）（Ｂ）（Ｃ）に示す接続機器１００を用いれば、ＵＳＢデバイス１とＵＳＢデバイス２を接続機器１００を介して接続できる。そしてデータ転送制御装置１１０を用いて、ＵＳＢデバイス１、ＵＳＢデバイス２間でのピア・ツー・ピアのデータ転送を実現できる。例えばＵＳＢデバイス１がデジタルカメラ、携帯電話などの携帯型電子機器であり、ＵＳＢデバイス２がプリンタである場合には、いわゆるダイレクト・プリンティングを実現できる。またＵＳＢデバイス１が携帯型電子機器であり、ＵＳＢデバイス２が光ディスクドライブ、ハードディスクドライブなどのストレージ装置である場合には、ＵＳＢデバイス１のデータをこれらのストレージ装置にダイレクトにセーブすることが可能になる。
【００５７】
４．ＵＳＢデバイス用データ転送制御装置の構成
図５に、ＵＳＢデバイス側に内蔵されるデータ転送制御装置１９０の構成例を示す。なお図５の一部の機能ブロックを省略する構成としてもよい。
【００５８】
データ転送制御装置１９０はトランシーバ６０を含む。このトランシーバ６０は、差動データ信号ＤＰ、ＤＭを用いてＵＳＢのデータを送受信する回路である。このトランシーバ６０としては、ＵＳＢ２．０の物理層回路や論理層回路の一部についてのインターフェースを定義したＵＴＭＩ（ＵＳＢ２．０  Ｔｒａｎｓｃｅｉｖｅｒ  Ｍａｃｒｏｃｅｌｌ  Ｉｎｔｅｒｆａｃｅ）に準拠したマクロセルなどを用いることができる。
【００５９】
データ転送制御装置１９０はペリフェラルコントローラ８０（広義には転送コントローラ。他の説明でも同様）を含む。このペリフェラルコントローラ８０はＵＳＢを介したデータ転送を制御するものである。なおペリフェラルコントローラ８０としてＯＴＧ規格に準拠したコントローラ（ペリフェラル機能とホスト機能の両方を有するコントローラ）を用いてもよい。
【００６０】
データ転送制御装置１９０はデータバッファ９０（ＦＩＦＯ、パケットバッファ）を含む。データバッファ９０は、ＵＳＢを介して転送されるデータ（送信データ又は受信データ）を一時的に格納（バッファリング）するためものである。このデータバッファ９０はＲＡＭなどのメモリにより構成できる。
【００６１】
そして本実施形態ではペリフェラルコントローラ８０は、送信すべきコマンドが無い場合には、図４（Ａ）（Ｂ）（Ｃ）の接続機器１００が含むデータ転送制御装置１１０（ホスト）からのＩＮトークン受信時に、ＮＡＫ（ＮＡＫのハンドシェークパケット）をデータ転送制御装置１１０（ホスト）に送信する。なお送信すべきコマンドが無い場合にペリフェラルコントローラ８０が、零長パケット（零長のデータパケット、ショートパケット）をデータ転送制御装置１１０（ホスト）に送信するようにしてもよい。
【００６２】
一方、送信すべきコマンドがある場合には、ＩＮトークン受信時に、コマンド（コマンドを含むデータパケット）をデータ転送制御装置１１０（ホスト）に送信する。或いは、ＵＳＢデバイス２に送信すべきデータが無い場合には、データ転送制御装置１１０からのＩＮトークン受信時に、ＮＡＫ（或いは零長パケット）を送信し、ＵＳＢデバイス２に送信すべきデータがある場合には、ＩＮトークン受信時に送信データ（零長ではないデータ）をデータ転送制御装置１１０に送信するようにしてもよい。
【００６３】
５．動作
次に本実施形態の動作について説明する。
【００６４】
５．１  第１のデータ転送制御手法
図６に本実施形態の第１のデータ転送制御手法のフェーズ遷移図を示し、図７（Ａ）〜図８（Ｃ）に第１のデータ転送制御手法の動作説明図を示す。
【００６５】
ＵＳＢデバイス１は、通常のＵＳＢ規格で定義されるデバイスでありながら、能動的な動作を実行できるデバイスであり、ホストにコマンドを発行することが可能なデバイスとなっている。一方、ＵＳＢデバイス２は、通常のＵＳＢ規格で定義されるデバイスとなっている。なお、ＵＳＢデバイス１、ＵＳＢデバイス２の両方が、能動的な動作（コマンド発行）を実行できるデバイスであってもよい。またＵＳＢデバイスの能動的な動作は、このような動作を実現するプログラム（ファームウェア、アプリケーション層プログラム）をＵＳＢデバイス側のデータ転送制御装置（図５参照）に実装することで実現できる。
【００６６】
図６では、まず、ＵＳＢデバイス１がアイドル状態からデータ転送指示コマンド（コピーコマンド）のコマンドフェーズに移行する。次にＵＳＢデバイス２がライトコマンド（或いはリードコマンド）のコマンドフェーズに移行する。その後、ＵＳＢデバイス１、ＵＳＢデバイス２の両方がデータフェーズに移行して、ＵＳＢデバイス１、ＵＳＢデバイス２間でデータが転送される。データフェーズが終了するとＵＳＢデバイス２がライトコマンド（或いはリードコマンド）についてのステータスフェーズに移行する。その後、ＵＳＢデバイス１がデータ転送指示コマンド（コピーコマンド）についてのステータスフェーズに移行する。
【００６７】
より具体的には図７（Ａ）に示すように、ホストコントローラ３０（ホストと同義。他の説明でも同様）がＵＳＢデバイス１に対して例えばインタラプト転送により定期的にＩＮトークンを発行する。なおインタラプト転送以外の転送モードでＩＮトークンを発行してもよい。またＩＮトークンを不定期に発行してもよい。また図７（Ａ）ではＵＳＢデバイス１にだけコマンド受信のためのＩＮトークンを発行している。しかしながら、ＵＳＢデバイス２も能動的な動作が可能な場合（コマンド発行のためのプログラムが実装されている場合）には、ホストコントローラ３０は、ＵＳＢデバイス１のみならずＵＳＢデバイス２に対しても、コマンド受信のためのＩＮトークンを定期的に或いは不定期に発行してもよい。
【００６８】
ＵＳＢデバイス１はホストコントローラ３０に発行すべきコマンド（データ転送指示コマンド）が無い場合には、ＩＮトークンに対する応答としてＮＡＫ（Ｎｅｇａｔｉｖｅ  ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）を送信する。即ちＩＮトークンで発生したＩＮトランザクションにおいてＮＡＫのハンドシェークパケットを送信する。
【００６９】
なおＵＳＢデバイス１が、発行すべきコマンドが無い場合に、ホストコントローラ３０からのＩＮトークンに対する応答として零長パケット（零長のデータパケット、ショートパケット）を送信するようにしてもよい。この零長パケットは、ＩＲＰ（Ｉ／Ｏリクエストパケット）によるデータ転送を終了させる場合などに使用されるものである。そしてホストコントローラ３０は、ＵＳＢデバイス１に発行したＩＮトークンに対する応答として、ＵＳＢデバイス１から零長パケットを受信すると、ＵＳＢデバイス１に対してＡＣＫ（ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）のハンドシェークパケットを送信する。そして、その後に、再度、ＵＳＢデバイス１（或いはＵＳＢデバイス２）に対してＩＮトークンを発行する。
【００７０】
ＵＳＢデバイス１は、ホストコントローラ３０に発行すべきコマンドがある場合には図６の（２）に示すようにコマンドフェーズに移行し、図７（Ｂ）に示すようにＩＮトークンに対する応答として、ＮＡＫ（零長パケット）ではなくコマンドを送信する。即ちＩＮトークンで発生したＩＮトランザクションにおいて、データ転送指示コマンドを含むデータパケットを送信する。このデータ転送指示コマンド（コピーコマンド）は、例えばＵＳＢデバイス１からＵＳＢデバイス２にデータを転送することを指示するコマンドである。ホストコントローラ３０は、コマンド受信に成功するとＡＣＫ（ＡｃＫｎｏｗｌｅｄｇｍｅｎｔ）を返送する。
【００７１】
通常のＵＳＢでは、コマンドの発行主体はホストコントローラ３０に限定されている。これに対して本実施形態では図７（Ｂ）に示すようにＵＳＢデバイスが能動的にコマンドを発行する点に大きな特徴がある。
【００７２】
ホストコントローラ３０は、ＵＳＢデバイス１からコマンドを受信すると、このコマンドを解釈する。具体的にはデータ転送指示コマンド（コピーコマンド）を例えばライトコマンド（或いはリードコマンド）に変換する。そしてＵＳＢデバイス２に対してバルク転送によりＯＵＴトークンを発行する。なおバルク転送以外の転送モードでＯＵＴトークンを発行してもよい。
【００７３】
そしてホストコントローラ３０は、ＯＵＴトークンで発生したＯＵＴトランザクションにおいて、ＵＳＢデバイス２に対してライトコマンド（ライトコマンドを含むデータパケット）を送信する。ＵＳＢデバイス２はこのライトコマンドの受信に成功するとＡＣＫを返送する。これにより図６の（３）に示すようにＵＳＢデバイス２はライトコマンドのコマンドフェーズに移行する。
【００７４】
次に図８（Ａ）に示すようにホストコントローラ３０はＵＳＢデバイス１に対して例えばバルク転送（他の転送モードでもよい）によりＩＮトークンを発行する。そしてＩＮトークンで発生したＩＮトランザクションにおいて、ＵＳＢデバイス１からデータ（データパケット）を受信し、ＡＣＫを返送する。そしてホストコントローラ３０はＵＳＢデバイス２に対して例えばバルク転送（他の転送モードでもよい）によりＯＵＴトークンを発行する。そしてＯＵＴトークンで発生したＯＵＴトランザクションにおいて、ＵＳＢデバイス１からの受信データをＵＳＢデバイス２に送信する。即ち図６の（３）（４）に示すようにＵＳＢデバイス１、ＵＳＢデバイス２はデータフェーズに移行してデータ転送を行う。
【００７５】
なお図２の構成の場合には、ホストコントローラ３０、ＵＳＢデバイス１間のＩＮトランザクション転送と、ホストコントローラ３０、ＵＳＢデバイス２間のＯＵＴトランザクション転送は、１つのＵＳＢを用いて例えば交互に行われる。一方、図３（Ａ）（Ｂ）の構成の場合には、これらのＩＮトランザクション転送、ＯＵＴトランザクション転送を、２つのＵＳＢを用いて並列（独立）に行うことができる。
【００７６】
全てのデータの転送が終了すると、図８（Ｂ）に示すようにホストコントローラ３０が、ＵＳＢデバイス２に対してステータス確認のためのＩＮトークンを発行し、図６の（５）に示すようにＵＳＢデバイス２がライトコマンドについてのステータスフェーズに移行する。そしてＵＳＢデバイス２がライトコマンドの処理完了を示すステータスを送信すると、ホストコントローラ３０はＡＣＫを返送する。
【００７７】
次に、図８（Ｃ）に示すようにホストコントローラ３０がＯＵＴトークンを発行し、データ転送指示コマンドの処理完了を示すステータスをＵＳＢデバイス１に送信する。すると、図６の（６）に示すようにデータ転送指示コマンドについてのステータスフェーズに移行したＵＳＢデバイス１は、ホストコントローラ３０にＡＣＫを返送する。以上のようにしてＵＳＢデバイス１、ＵＳＢデバイス２間の一連のデータ転送処理が完了する。
【００７８】
なお図７（Ａ）〜図８（Ｃ）ではＵＳＢデバイス１からＵＳＢデバイス２にデータを転送する場合について示したが、ＵＳＢデバイス２からＵＳＢデバイス１にデータを転送する場合には図９（Ａ）〜図１０（Ｃ）に示すように処理を行えばよい。即ち図９（Ｂ）に示すように、ホストコントローラ３０からのＩＮトークンに対する応答として、ＵＳＢデバイス１が、ＵＳＢデバイス２からＵＳＢデバイス１へのデータ転送を指示するコマンドを送信する。このデータ転送指示コマンドは図７（Ｂ）のデータ転送指示コマンドとは逆方向の転送方向を指示するコマンドである。
【００７９】
このデータ転送指示コマンドを受信したホストコントローラ３０は、受信したデータ転送指示コマンドを解釈して、図９（Ｃ）に示すようにＵＳＢデバイス２に対してＯＵＴトークンを発行して、リードコマンド（リードコマンドを含むデータパケット）を送信する。即ち図７（Ｃ）ではホストコントローラがデータ転送指示コマンド（コピーコマンド）をライトコマンドに変換してＵＳＢデバイス２に送信しているが、図９（Ｃ）では、データ転送指示コマンド（コピーコマンド）をリードコマンドに変換して、ＵＳＢデバイス２に送信する。
【００８０】
そして図１０（Ａ）に示すようにホストコントローラ３０は、ＵＳＢデバイス２に対してＩＮトークンを発行して、ＵＳＢデバイス１からデータを受信する。またホストコントローラ３０は、ＵＳＢデバイス１に対してＯＵＴトークンを発行して、ＵＳＢデバイス２からの受信データをＵＳＢデバイス１に送信する。即ち図８（Ａ）ではＵＳＢデバイス１にＩＮトークンを発行し、ＵＳＢデバイス２にＯＵＴトークンを発行していたが、図１０（Ａ）では、ＵＳＢデバイス２にＩＮトークンを発行し、ＵＳＢデバイス１にＯＵＴトークンを発行している。これにより図７（Ａ）〜図８（Ｃ）とは逆方向のデータ転送を実現できる。
【００８１】
５．２  第２のデータ転送制御手法
図１１に本実施形態の第２のデータ転送制御手法のフェーズ遷移図を示し、図１２（Ａ）〜図１３（Ｃ）に第２のデータ転送制御手法の動作説明図を示す。
【００８２】
図１１では、まず、ＵＳＢデバイス１がアイドル状態からデータ転送指示コマンドのコマンドフェーズに移行する。次にＵＳＢデバイス１がリードコマンドのコマンドフェーズに移行し、ＵＳＢデバイス２がライトコマンドのコマンドフェーズに移行する。その後、ＵＳＢデバイス１、ＵＳＢデバイス２がデータフェーズに移行して、ＵＳＢデバイス１、ＵＳＢデバイス２間でデータが転送される。データ転送が終了するとＵＳＢデバイス１がリードコマンドについてのステータスフェーズに移行し、ＵＳＢデバイス２がライトコマンドについてのステータスフェーズに移行する。その後、ＵＳＢデバイス１がデータ転送指示コマンドについてのステータスフェーズに移行する。
【００８３】
より具体的には図１２（Ａ）に示すように、ホストコントローラ３０がＵＳＢデバイス１に対してＩＮトークンを発行する。ＵＳＢデバイス１はホストコントローラ３０に発行すべきコマンド（データ転送指示コマンド）が無い場合には、ＩＮトークンに対する応答としてＮＡＫ（或いは零長パケット）を送信する。
【００８４】
一方、ＵＳＢデバイス１は、ホストコントローラ３０に発行すべきコマンドがある場合には、図１１の（２）に示すようにデータ転送指示コマンドのコマンドフェーズに移行し、図１２（Ｂ）に示すようにＩＮトークンに対する応答として、ＮＡＫ（零長パケット）ではなく、データ転送指示コマンドを送信する。
【００８５】
ホストコントローラ３０は、ＵＳＢデバイス１からデータ転送指示コマンドを受信すると、このコマンドを解釈して、コマンドの変換処理を行う。そしてホストコントローラ３０は図１２（Ｃ）に示すように、ＵＳＢデバイス１に対してＯＵＴトークンで発行して、リードコマンド（リードコマンドを含むデータパケット）をＵＳＢデバイス１に送信する。またＵＳＢデバイス２に対してＯＵＴトークンで発行して、ライトコマンド（ライトコマンドを含むデータパケット）をＵＳＢデバイス２に送信する。これにより図１１の（３）に示すようにＵＳＢデバイス１、ＵＳＢデバイス２はリードコマンド、ライトコマンドについてのコマンドフェーズに移行する。
【００８６】
次に図１３（Ａ）に示すようにホストコントローラ３０はＵＳＢデバイス１に対してＩＮトークンを発行し、ＵＳＢデバイス１からデータを受信する。またＵＳＢデバイス２に対してＯＵＴトークンを発行し、ＵＳＢデバイス１からの受信データをＵＳＢデバイス２に送信する。即ち図１１の（４）に示すようにＵＳＢデバイス１、ＵＳＢデバイス２はデータフェーズに移行してデータ転送を行う。
【００８７】
全てのデータの転送が終了すると、図１３（Ｂ）に示すようにホストコントローラ３０が、ＵＳＢデバイス１、ＵＳＢデバイス２に対してステータス確認のためのＩＮトークンを発行し、図１１の（５）に示すようにＵＳＢデバイス１、ＵＳＢデバイス２がリードコマンド、ライトコマンドについてのステータスフェーズに移行する。
【００８８】
次に、図１３（Ｃ）に示すようにホストコントローラ３０がＯＵＴトークンを発行し、データ転送指示コマンドの処理完了を示すステータスをＵＳＢデバイス１に送信する。すると、図１１の（６）に示すようにデータ転送指示コマンドについてのステータスフェーズに移行したＵＳＢデバイス１は、ホストコントローラ３０にＡＣＫを返送する。
【００８９】
以上のようにしてＵＳＢデバイス１、ＵＳＢデバイス２間の一連のデータ転送処理が完了する。なお、ＵＳＢデバイス２からＵＳＢデバイス１にデータを転送する場合には、図１２（Ｃ）においてホストコントローラ３０がＵＳＢデバイス２に対してリードコマンドを送信し、ＵＳＢデバイス１に対してライトコマンドを送信する。そして図１３（Ａ）においてホストコントローラ３０が、ＵＳＢデバイス２に対してＩＮトークンを発行して、データを受信し、ＵＳＢデバイス１に対してＯＵＴトークンを発行して、ＵＳＢデバイス２からの受信データをＵＳＢデバイス１に送信すればよい。
【００９０】
図６〜図１０（Ｃ）の第１のデータ転送制御手法では、ホストコントローラ３０は、ＵＳＢデバイス１（広義には、ＵＳＢデバイス１、ＵＳＢデバイス２の一方のＵＳＢデバイス。他の説明でも同様）からデータ転送指示コマンドを含むデータを受信すると、ＵＳＢデバイス２（広義には他方のＵＳＢデバイス。他の説明でも同様）に対してライトコマンド（或いはリードコマンド）を含むデータを送信する。そしてＵＳＢデバイス１はデータ転送指示コマンド（コピーコマンド）についてのコマンドフェーズ、データフェーズ、ステータスフェーズに順次移行する。一方、ＵＳＢデバイス２はライトコマンド（或いはリードコマンド）についてのコマンドフェーズ、データフェーズ、ステータスフェーズに順次移行する。
【００９１】
一方、図１１〜図１３（Ｃ）の第２のデータ転送制御手法では、ホストコントローラ３０は、データ転送指示コマンドを含むデータを受信すると、ＵＳＢデバイス１（一方のＵＳＢデバイス）に対してはリードコマンドを含むデータを送信し、ＵＳＢデバイス２（他方のＵＳＢデバイス）に対してはライトコマンドを含むデータを送信する。そしてＵＳＢデバイス１はデータ転送指示コマンドについてのコマンドフェーズに移行した後、リードコマンドについてのコマンドフェーズ、データフェーズ、ステータスフェーズに順次移行し、最後にデータ転送指示コマンドについてのステータスフェーズに移行する。一方、ＵＳＢデバイス２はライトコマンドについてのコマンドフェーズ、データフェーズ、ステータスフェーズに順次移行する。
【００９２】
このように第１、第２のデータ転送制御手法は、データ転送指示コマンドを受信したホストコントローラ３０がその後に行うコマンド変換処理等が異なっている。そして図６〜図１０（Ｃ）の第１のデータ転送制御手法では、ＵＳＢデバイス１（一方のＵＳＢデバイス）は、ホストコントローラ３０からのデータ転送指示コマンドに対してどのようにフェーズ処理を行うのかを予め知っておく必要がある。これに対して図１１〜図１３（Ｃ）の第２のデータ転送制御手法では、フェーズ処理の主導権は全てホストコントローラ３０が有している。従って、ＵＳＢデバイス１、ＵＳＢデバイス２は、ホストコントローラ３０からのデータ転送指示コマンドに対してどのようにフェーズ処理を行うのかを予め知っておく必要がない。
【００９３】
５．３  第３のデータ転送制御手法
図１４（Ａ）〜（Ｃ）に本実施形態の第３のデータ転送制御手法の動作説明図を示す。第３のデータ転送制御手法では、ホストコントローラ３０が、ＵＳＢデバイス１、ＵＳＢデバイス２のいずれか一方又は両方に対してＩＮトークンを発行する。そして発行したＩＮトークンに対する応答として、ＵＳＢデバイス１、ＵＳＢデバイス２の一方のＵＳＢデバイスから、ＮＡＫではなく零長ではないデータ（零長ではないデータパケット）を受信した場合には、一方のＵＳＢデバイスから受信したデータを、他方のＵＳＢデバイスにそのまま送信する（解釈することなく送信する）。
【００９４】
より具体的には図１４（Ａ）に示すように、ホストコントローラ３０はＵＳＢデバイス１（一方のＵＳＢデバイス）に対してデータ受信のためのＩＮトークンを発行する。ＵＳＢデバイス１は、ＵＳＢデバイス２に送信すべきデータが無い場合には、ＩＮトークンに対する応答としてＮＡＫ（零長パケット）を返送する。なおホストコントローラ３０がＵＳＢデバイス１、ＵＳＢデバイス２の両方に対してＩＮトークンを発行してもよい。
【００９５】
一方、図１４（Ｂ）に示すようにＵＳＢデバイス１は、ＵＳＢデバイス２に転送すべきデータがある場合には、ＩＮトークンに対する応答として、ＮＡＫ（零長パケット）ではなく、その転送データをホストコントローラ３０に送信する。この場合に送信する転送データは、画像データ、音声データ、或いはプリントデータなどのデータそのものであってもよいし、コマンドを含むデータ（パケットのデータ本体のフィールドにコマンドを埋め込んだもの）であってもよい。
【００９６】
そして図１４（Ｃ）に示すようにホストコントローラ３０は、ＵＳＢデバイス１（一方のＵＳＢデバイス）からデータを受信すると、ＵＳＢデバイス２（他方のＵＳＢデバイス）に対してデータ送信のためのＯＵＴトークンを発行する。そしてＯＵＴトークンで発生したＯＵＴトランザクションにおいて、ＵＳＢデバイス１からの受信データをＵＳＢデバイス２に送信する。
【００９７】
以上のようにすることでＵＳＢデバイス１からＵＳＢデバイス２にデータを送信することが可能になる。これにより、画像データ、音声データ、或いはプリントデータなどのデータそのものをＵＳＢデバイス１からＵＳＢデバイス２に送信できる。これにより、例えばＵＳＢデバイス１がデジタルカメラや携帯電話であり、ＵＳＢデバイス２がプリンタである場合には、いわゆるダイレクト・プリンティングを実現できる。またこの第３のデータ転送制御手法を用いれば、ＵＳＢデバイス１のＵＳＢデバイス２に対するコマンドを、ＵＳＢデバイス１からＵＳＢデバイス２に送信することも可能になる。この場合にはホストコントローラ３０は、このコマンドを解釈することなくそのままＵＳＢデバイス１からＵＳＢデバイス２にコマンドを転送することになる。
【００９８】
なおＵＳＢデバイス２からＵＳＢデバイス１にデータ（データそのもの、或いはコマンドを含むデータ）を送信する場合には、ホストコントローラ３０が、ＵＳＢデバイス２に対してデータ受信のためのＩＮトークンを発行し、ＵＳＢデバイス１に対してデータ送信のためのＯＵＴトークンを発行すればよい。
【００９９】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１００】
例えば、本発明のデータ転送制御装置の構成は図２、図３（Ａ）（Ｂ）、図５等で説明した構成に限定されず、接続機器の構成も図４（Ａ）（Ｂ）（Ｃ）で説明した構成に限定されない。また図６〜図１４（Ｃ）で説明した第１〜第３のデータ転送制御手法以外の手法によりデータ転送を制御してもよい。また本発明のデータ転送制御装置は接続機器以外の電子機器にも適用できる。
【０１０１】
また本実施形態では、ホストからのＩＮトークンに対する応答としてＵＳＢデバイスがＮＡＫを送信する場合について主に説明したが、ホストからのＩＮトークンに対する応答としてＵＳＢデバイスが零長パケット（零長のデータパケット）を送信する場合にも本発明は適用できる。
【０１０２】
また、明細書や図面中の記載において広義な用語（転送コントローラ、一方のＵＳＢデバイス、他方のＵＳＢデバイス、電子機器等）として引用された用語（ホストコントローラ・ペリフェラルコントローラ、ＵＳＢデバイス１、ＵＳＢデバイス２、接続機器等）は、明細書や図面中の他の記載においても広義な用語に置き換えることができる。
【０１０３】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１０４】
また本発明は、ＵＳＢ１．１、ＵＳＢ２．０、或いはこれらの規格と同様の思想に基づく規格や、これらの規格を発展させた規格におけるデータ転送制御手法にも適用できる。
【図面の簡単な説明】
【図１】図１（Ａ）〜（Ｄ）はＵＳＢの転送手法の説明図である。
【図２】本実施形態のデータ転送制御装置の構成の一例である。
【図３】図３（Ａ）（Ｂ）は本実施形態のデータ転送制御装置の構成の他の例である。
【図４】図４（Ａ）（Ｂ）（Ｃ）は接続機器の構成例である。
【図５】ＵＳＢデバイス用のデータ転送制御装置の構成例である。
【図６】第１のデータ転送制御手法のフェーズ遷移図である。
【図７】図７（Ａ）（Ｂ）（Ｃ）は第１のデータ転送制御手法の動作説明図である。
【図８】図８（Ａ）（Ｂ）（Ｃ）も第１のデータ転送制御手法の動作説明図である。
【図９】図９（Ａ）（Ｂ）（Ｃ）も第１のデータ転送制御手法の動作説明図である。
【図１０】図１０（Ａ）（Ｂ）（Ｃ）も第１のデータ転送制御手法の動作説明図である。
【図１１】第２のデータ転送制御手法のフェーズ遷移図である。
【図１２】図１２（Ａ）（Ｂ）（Ｃ）は第２のデータ転送制御手法の動作説明図である。
【図１３】図１３（Ａ）（Ｂ）（Ｃ）も第２のデータ転送制御手法の動作説明図である。
【図１４】図１４（Ａ）（Ｂ）（Ｃ）は第３のデータ転送制御手法の動作説明図である。
【符号の説明】
１０−１、１０−２  トランシーバ、２０  ルートハブ、
３０  ホストコントローラ（転送コントローラ）、３２  メインコントローラ、３４  ＳＩＥ、４０  データバッファ（ＦＩＦＯ）、６０  トランシーバ、８０ペリフェラルコントローラ（転送コントローラ）、８２  メインコントローラ、８４  ＳＩＥ、９０  データバッファ（ＦＩＦＯ）、１００  接続機器、１１０  データ転送制御装置（接続機器用）、１１２  封止部、１２０、１２２  ケーブル、１３０、１３２  コネクタ、１９０  データ転送制御装置（ＵＳＢデバイス用）
【図１】
2004362422.tif 000003
【図２】
2004362422.tif 000004
【図３】
2004362422.tif 000005
【図４】
2004362422.tif 000006
【図５】
2004362422.tif 000007
【図６】
2004362422.tif 000008
【図７】
2004362422.tif 000009
【図８】
2004362422.tif 000010
【図９】
2004362422.tif 000011
【図１０】
2004362422.tif 000012
【図１１】
2004362422.tif 000013
【図１２】
2004362422.tif 000014
【図１３】
2004362422.tif 000015
【図１４】
2004362422.tif 000016