(57)【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus)を用いてデータ転送を行うホストのためのデータ転送制御装置であって、
転送データが一時的に格納されるデータバッファに接続され、データ転送を制御する転送コントローラを含み、
前記転送コントローラは、
ＵＳＢに接続される複数のＵＳＢデバイスのうちＬＡＮ（Local Area Network）ノード宣言を行ったＵＳＢデバイスに対してＩＮトークンを発行し、
ＵＳＢに接続される複数のＵＳＢデバイスの中の第１のＵＳＢデバイスに発行したＩＮトークンに対する応答として、ディスティネーションＩＤとソースＩＤとデータを有するＬＡＮパケットがデータフィールドに設定されたＵＳＢデータパケットを受信した場合には、前記ディスティネーションＩＤに基づいて宛先を決定し、前記宛先が第２のＵＳＢデバイスである場合には、前記第２のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第１のＵＳＢデバイスから受信したデータを前記第２のＵＳＢデバイスに送信することを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記転送コントローラは、
ゲット・ディスクリプタのデバイスリクエストをＵＳＢに接続される複数のＵＳＢデバイスに対して発行し、デバイスリクエストに対する応答としてＵＳＢデバイスからディスクリプタのデータを受信し、受信したディスクリプタに基づいて、ＵＳＢデバイスがＬＡＮノード宣言を行ったか否かを判断することを特徴とするデータ転送制御装置。
【請求項３】
請求項１又は２において、
前記転送コントローラは、
発行したＩＮトークンに対する応答として、ＵＳＢデバイスからＮＡＫ（Negative AcKnowledgment）を受信した場合に、次の他のＵＳＢデバイスに対してＩＮトークンを順次発行することを特徴とするデータ転送制御装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記転送コントローラは、
発行したＩＮトークンに対する応答として、ＵＳＢデバイスから零長パケットを受信した場合に、次の他のＵＳＢデバイスに対してＩＮトークンを順次発行することを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記転送コントローラは、
ＵＳＢに接続される複数のＵＳＢデバイスに対してインタラプト転送を用いて定期的にＩＮトークンを発行することを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記転送コントローラは、
ＵＳＢに接続される複数のＵＳＢデバイスに対してバルク転送を用いて定期的に又は不定期にＩＮトークンを発行することを特徴とするデータ転送制御装置。
【請求項７】
請求項１乃至６のいずれかのデータ転送制御装置と、
複数のＵＳＢデバイスを接続するための複数のＵＳＢポートと、
を含むことを特徴とする電子機器。
【請求項８】
ＵＳＢ（Universal Serial Bus)を用いてデータ転送を行うＵＳＢデバイスのためのデータ転送制御装置であって、
転送データが一時的に格納されるデータバッファに接続され、データ転送を制御する転送コントローラを含み、
前記転送コントローラは、
他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、ＮＡＫ（Negative AcKnowledgment）を前記ホストに送信し、
ＵＳＢデバイスがＬＡＮ（Local Area Network）ノード宣言を行っており、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーションＩＤとソースＩＤとデータを有するＬＡＮパケットを、ＵＳＢデータパケットのデータフィールドに設定し、該ＵＳＢデータパケットを前記ホストに送信することを特徴とするデータ転送制御装置。
【請求項９】
ＵＳＢ（Universal Serial Bus)を用いてデータ転送を行うＵＳＢデバイスのためのデータ転送制御装置であって、
転送データが一時的に格納されるデータバッファに接続され、データ転送を制御する転送コントローラを含み、
前記転送コントローラは、
他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、零長パケットを前記ホストに送信し、
ＵＳＢデバイスがＬＡＮ（Local Area Network）ノード宣言を行っており、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーションＩＤとソースＩＤとデータを有するＬＡＮパケットを、ＵＳＢデータパケットのデータフィールドに設定し、該ＵＳＢデータパケットを前記ホストに送信することを特徴とするデータ転送制御装置。
【請求項１０】
請求項８又は９において、
ゲット・ディスクリプタのデバイスリクエストを前記ホストから受信した場合に、ＬＡＮ（Local Area Network）ノード宣言情報を含むディスクリプタのデータを、前記ホストに送信することを特徴とするデータ転送制御装置。
【請求項１１】
ＵＳＢ（Universal Serial Bus)を介してデータ転送を行うホストのためのデータ転送制御方法であって、
ＵＳＢに接続される複数のＵＳＢデバイスのうちＬＡＮ（Local Area Network）ノード宣言を行ったＵＳＢデバイスに対してＩＮトークンを発行し、
ＵＳＢに接続される複数のＵＳＢデバイスの中の第１のＵＳＢデバイスに発行したＩＮトークンに対する応答として、ディスティネーションＩＤとソースＩＤとデータを有するＬＡＮパケットがデータフィールドに設定されたＵＳＢデータパケットを受信した場合には、前記ディスティネーションＩＤに基づいて宛先を決定し、前記宛先が第２のＵＳＢデバイスである場合には、前記第２のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第１のＵＳＢデバイスから受信したデータを前記第２のＵＳＢデバイスに送信することを特徴とするデータ転送制御方法。
【請求項１２】
ＵＳＢ（Universal Serial Bus)を介してデータ転送を行うＵＳＢデバイスのためのデータ転送制御方法であって、
他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、ＮＡＫ（Negative AcKnowledgment）を前記ホストに送信し、
ＵＳＢデバイスがＬＡＮ（Local Area Network）ノード宣言を行っており、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーションＩＤとソースＩＤとデータを有するＬＡＮパケットを、ＵＳＢデータパケットのデータフィールドに設定し、該ＵＳＢデータパケットを前記ホストに送信することを特徴とするデータ転送制御方法。
【請求項１３】
ＵＳＢ（Universal Serial Bus)を介してデータ転送を行うＵＳＢデバイスのためのデータ転送制御方法であって、
他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、零長パケットを前記ホストに送信し、
ＵＳＢデバイスがＬＡＮ（Local Area Network）ノード宣言を行っており、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーションＩＤとソースＩＤとデータを有するＬＡＮパケットを、ＵＳＢデータパケットのデータフィールドに設定し、該ＵＳＢデータパケットを前記ホストに送信することを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【０００２】
【背景技術】
従来より、パーソナルコンピュータなどのホストとペリフェラルデバイスを接続するためのシリアルバス・インターフェース規格として、ＵＳＢ（Universal Serial Bus)が知られている。また、従来のＵＳＢ１．１規格に対する互換性を保ちながら、高速な４８０Ｍｂｐｓ（ＨＳモード）の転送速度を実現できる規格としてＵＳＢ２．０も策定され、注目を浴びている。
【０００３】
【特許文献１】
特開２００２−１３５１３２号公報
【０００４】
【発明が解決しようとする課題】
ＵＳＢにおいては、ＩＥＥＥ１３９４とは異なり、データ転送の主導権をホストが有している。即ちデータ転送のトランザクションを発行するのはホストであり、データ転送に関する大部分の制御はホストが行う。従ってＵＳＢデバイス（ペリフェラルデバイス）間でデータのやり取りを行う場合には、パーソナルコンピュータを用意し、このパーソナルコンピュータにこれらのＵＳＢデバイスを接続する必要がある。このため、ＵＳＢデバイス間でピア・ツー・ピア（peer to peer）でデータ転送を行うことが難しかった。
【０００５】
またＩＥＥＥ１３９４では、ＩＥＥＥ１３９４バス上でインターネットプロトコル（ＩＰ）を実現するためのプロトコルとしてＩＰｏｖｅｒ１３９４が定義されている。このＩＰｏｖｅｒ１３９４によれば、アプリケーションデータにＴＣＰ（Transmission Control Protocol）ヘッダとＩＰ（Internet Protocol）ヘッダを付加することで得られるＩＰパケットを、ＩＥＥＥ１３９４上で転送することができ、ＩＥＥＥ１３９４を用いたＬＡＮ（Local Area Network）を実現できる。
【０００６】
しかしながらＵＳＢでは、ＩＰｏｖｅｒ１３９４のようなプロトコルは定義されておらず、ＵＳＢデバイスをＬＡＮノード（ＩＰノード）として動作させることができないという課題があった。
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ＵＳＢデバイスをＬＡＮノードとして動作させることなどを可能にするデータ転送制御装置、電子機器及びデータ転送制御方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、ＵＳＢ（Universal Serial Bus)を用いてデータ転送を行うホストのためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、ＵＳＢに接続される複数のＵＳＢデバイスに対してＩＮトークンを発行し、ＵＳＢに接続される複数のＵＳＢデバイスの中の第１のＵＳＢデバイスに発行したＩＮトークンに対する応答として、第２のＵＳＢデバイスを宛先として指定するディスティネーション識別情報を含んだデータを受信した場合には、前記第２のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第１のＵＳＢデバイスから受信したデータを前記第２のＵＳＢデバイスに送信するデータ転送制御装置に関係する。
【０００９】
本発明によれば、ＵＳＢデバイスに対してＩＮトークンが発行される。そしてＩＮトークンに対する応答して、第１のＵＳＢデバイスからディスティネーション識別情報を含んだデータが受信されると、ディスティネーション識別情報で指定される第２のＵＳＢデバイスに対して、ＯＵＴトークンが発行され、受信データが第２のＵＳＢデバイスに送信される。これにより、ホストが主導権を有するＵＳＢにおいて、ＵＳＢデバイスをＬＡＮノード等として動作させたデータ転送を実現できる。
【００１０】
また本発明では、前記転送コントローラが、ＵＳＢに接続される複数のＵＳＢデバイスのうちＬＡＮ（Local Area Network）ノード宣言を行ったＵＳＢデバイスに対してＩＮトークンを発行するようにしてもよい。
【００１１】
このようにすれば、ＬＡＮノード宣言を行った第１のＵＳＢデバイスに対してＩＮトークンを発行し、そのＩＮトークンの応答として第１のＵＳＢデバイスから受信したデータを、ＬＡＮノード宣言を行った第２のＵＳＢデバイスに送信できる。
【００１２】
また本発明では、前記転送コントローラが、ゲット・ディスクリプタのデバイスリクエストをＵＳＢに接続される複数のＵＳＢデバイスに対して発行し、デバイスリクエストに対する応答としてＵＳＢデバイスからディスクリプタのデータを受信し、受信したディスクリプタに基づいて、ＵＳＢデバイスがＬＡＮノード宣言を行ったか否かを判断するようにしてもよい。
【００１３】
このようにすればＵＳＢのコントロール転送を利用して、ＬＡＮセグメントとなるＵＳＢデバイスの設定を行うことが可能になる。
【００１４】
また本発明では、前記転送コントローラが、発行したＩＮトークンに対する応答として、ＵＳＢデバイスからＮＡＫ（Negative AcKnowledgment）を受信した場合には、次の他のＵＳＢデバイスに対してＩＮトークンを順次発行するようにしてもよい。また本発明では、前記転送コントローラが、発行したＩＮトークンに対する応答として、ＵＳＢデバイスから零長パケットを受信した場合に、次の他のＵＳＢデバイスに対してＩＮトークンを順次発行するようにしてもよい。
【００１５】
このようにすればトークンバスにおけるトークンのようにＵＳＢのＩＮトークンを機能させることが可能になる。
【００１６】
また本発明では、前記転送コントローラが、ＵＳＢに接続される複数のＵＳＢデバイスに対してインタラプト転送を用いて定期的にＩＮトークンを発行するようにしてもよい。
【００１７】
また本発明では、前記転送コントローラが、ＵＳＢに接続される複数のＵＳＢデバイスに対してバルク転送を用いて定期的に又は不定期にＩＮトークンを発行するようにしてもよい。
【００１８】
また本発明は、上記のいずれかのデータ転送制御装置と、複数のＵＳＢデバイスを接続するための複数のＵＳＢポートとを含む電子機器に関係する。
【００１９】
また本発明は、ＵＳＢ（Universal Serial Bus)を用いてデータ転送を行うＵＳＢデバイスのためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、ＮＡＫ（Negative AcKnowledgment）を前記ホストに送信し、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーション識別情報を含んだデータを、前記ホストに送信するデータ転送制御装置に関係する。
【００２０】
本発明によれば、データの非送信時には、ＩＮトークンに対する応答としてＮＡＫが送信される。一方、データの送信時には、ＩＮトークンに対する応答としてデータ（零長ではないデータパケット）が送信される。これにより、ホストが主導権を有するＵＳＢにおいて、ＵＳＢデバイスをＬＡＮノードとして動作させることなどが可能になる。
【００２１】
また本発明は、ＵＳＢ（Universal Serial Bus)を用いてデータ転送を行うＵＳＢデバイスのためのデータ転送制御装置であって、転送データを一時的に格納するデータバッファと、データ転送を制御する転送コントローラとを含み、前記転送コントローラが、他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、零長パケットを前記ホストに送信し、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーション識別情報を含んだデータを、前記ホストに送信するデータ転送制御装置に関係する。
【００２２】
本発明によれば、データの非送信時には、ＩＮトークンに対する応答として零長パケット（零長のデータパケット、ショートパケット）が送信される。一方、データの送信時には、ＩＮトークンに対する応答としてデータ（零長ではないデータパケット）が送信される。これにより、ホストが主導権を有するＵＳＢにおいて、ＵＳＢデバイスをＬＡＮノードとして動作させることなどが可能になる。
【００２３】
また本発明では、ゲット・ディスクリプタのデバイスリクエストを前記ホストから受信した場合に、ＬＡＮ（Local Area Network）ノード宣言情報を含むディスクリプタのデータを、前記ホストに送信するようにしてもよい。
【００２４】
このようにすればＵＳＢデバイスのＬＡＮノード宣言を、ＵＳＢのコントロール転送を利用して実現できる。
【００２５】
また本発明は、ＵＳＢ（Universal Serial Bus)を介してデータ転送を行うホストのためのデータ転送制御方法であって、ＵＳＢに接続される複数のＵＳＢデバイスに対してＩＮトークンを発行し、ＵＳＢに接続される複数のＵＳＢデバイスの中の第１のＵＳＢデバイスに発行したＩＮトークンに対する応答として、第２のＵＳＢデバイスを宛先として指定するディスティネーション識別情報を含んだデータを受信した場合には、前記第２のＵＳＢデバイスに対してＯＵＴトークンを発行して、前記第１のＵＳＢデバイスから受信したデータを前記第２のＵＳＢデバイスに送信するデータ転送制御方法に関係する。
【００２６】
また本発明は、ＵＳＢ（Universal Serial Bus)を介してデータ転送を行うＵＳＢデバイスのためのデータ転送制御方法であって、他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、ＮＡＫ（Negative AcKnowledgment）を前記ホストに送信し、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーション識別情報を含んだデータを、前記ホストに送信するデータ転送制御方法に関係する。
【００２７】
また本発明は、ＵＳＢ（Universal Serial Bus)を介してデータ転送を行うＵＳＢデバイスのためのデータ転送制御方法であって、他のＵＳＢデバイスに送信すべきデータが無い場合には、ホストからのＩＮトークンに対する応答として、零長パケットを前記ホストに送信し、他のＵＳＢデバイスに送信すべきデータがある場合には、前記ホストからのＩＮトークンに対する応答として、前記他のＵＳＢデバイスを宛先として指定するディスティネーション識別情報を含んだデータを、前記ホストに送信するデータ転送制御方法に関係する。
【００２８】
【発明の実施の形態】
以下、本実施形態について説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２９】
１．ＵＳＢ
ＵＳＢではデータ転送の主導権をホストが有している。このためホストの処理負荷は重くなるが、ホストとなるパーソナルコンピュータ等は高性能なＣＰＵ（プロセッサ）を有しているため、それほど問題にはならない。一方、ＵＳＢデバイス（ＵＳＢデバイス機器、ターゲット）はホストからの要求に対して単に応答するだけでよいため、ＵＳＢデバイス側の処理、構成については簡素化できるという利点がある。ＵＳＢではこのようなホスト主導のデータ転送を実現するために、図１（Ａ）に示すようなエンドポイント（ＥＰ０〜１５）がＵＳＢデバイス側に用意される。ホストは、デバイスアドレスとエンドポイント番号を指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。
【００３０】
なおＵＳＢでは、データ転送のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送が用意されている。コントロール転送は、ホストとＵＳＢデバイス（ターゲット）との間でエンドポイント０を介して行われる制御用の転送モードである。アイソクロナス転送は、画像や音声のデータを定期的に転送するために用意された転送モードである。インタラプト転送は、比較的低い転送速度で少量のデータを定期的に転送するために用意された転送モードである。バルク転送は、不定期に発生する大量のデータを転送するために用意された転送モードである。
【００３１】
図１（Ｂ）に示すように、ＵＳＢのトランザクションは、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
【００３２】
ここでトークンパケットは、ホストがＵＳＢデバイスのエンドポイントのリードやライトを要求する場合などに使用されるパケットである。このトークンパケットは、ＰＩＤ（ＯＵＴ、ＩＮ、ＳＯＦ、ＳＥＴＵＰなどのパケットＩＤ）、ＡＤＤＲ（デバイスアドレス）、ＥＮＤＰ（エンドポイント番号）、ＣＲＣ（Cyclic Redundancy Check）のフィールドを有する。データパケットは、データの実体（data body）を送るためのパケットであり、ＰＩＤ（ＤＡＴＡ０、ＤＡＴＡ１）、ＤＡＴＡ、ＣＲＣのフィールドを有する。ハンドシェークパケットは、データ受信に成功したか否かを受信側が送信側に伝えるためのパケットであり、ＰＩＤ（ＡＣＫ、ＮＡＫ、ＳＴＡＬＬ）のフィールドを有する。
【００３３】
ＯＵＴトランザクション（ホストがＵＳＢデバイスに情報を出力するトランザクション）では、図１（Ｃ）に示すように、まず、ホストがＵＳＢデバイスに対してＯＵＴトークン（トークンパケット）を発行する。次に、ホストはＵＳＢデバイスに対してＯＵＴデータ（データパケット）を送信する。そして、ＵＳＢデバイスは、ＯＵＴデータの受信に成功すれば、ホストに対してＡＣＫ（ハンドシェークパケット）を送信する。このようにすることで、ホストがＵＳＢデバイスにデータをライトする処理が実現される。
【００３４】
一方、ＩＮトランザクション（ホストがＵＳＢデバイスから情報を入力するトランザクション）では、図１（Ｄ）に示すように、まず、ホストがＵＳＢデバイスに対してＩＮトークン（トークンパケット）を発行する。そして、ＩＮトークンを受信したＵＳＢデバイスは、ホストに対してＩＮデータ（データパケット）を送信する。そしてホストは、ＩＮデータの受信に成功すると、ＵＳＢデバイスに対してＡＣＫを送信する。このようにすることで、ホストがＵＳＢデバイスからデータをリードする処理が実現される。
【００３５】
なお図１（Ｃ）、（Ｄ）において、”Ｄ←Ｈ”は、ホストからＵＳＢデバイスに対して情報が転送されることを意味し、”Ｄ→Ｈ”は、ＵＳＢデバイスからホストに対して情報が転送されることを意味する。
【００３６】
図１（Ｃ）（Ｄ）に示すようにＵＳＢでは、ライト処理の場合にはホストがＯＵＴトークンを発行し、リード処理の場合にはホストがＩＮトークンを発行するというように、データ転送の主導権をホストが有している。従ってＵＳＢデバイス間でデータのやり取りを行う場合には、常にホストが必要になるという課題があった。またＩＥＥＥ１３９４におけるＩＰｏｖｅｒ１３９４のようなプロトコルが定義されておらず、ＵＳＢデバイスをＬＡＮノード（ＩＰノード）として動作させることができないという課題があった。
【００３７】
２．構成例
図２に、以上のような課題を解決できる本実施形態のデータ転送制御装置（データ転送制御回路、データ転送制御ＩＣ）の構成例を示す。なお図２の一部の機能ブロックを省略する構成としてもよい。また図２の機能ブロックはハードウェア回路のみにより実現してもよいし、ハードウェア回路とファームウェア（ソフトウェア）の両方により実現してもよい。
【００３８】
データ転送制御装置１１０はトランシーバ１０-1、１０-2、１０-3を含む。このトランシーバ１０-1、１０-2、１０-3は、差動データ信号ＤＰ、ＤＭを用いてＵＳＢ（広義にはバス）のデータを送受信する回路であり、ＵＳＢの物理層回路を含む。トランシーバ１０-1、１０-2、１０-3には、ＵＳＢポート（第１〜第３のＵＳＢポート）を介してＵＳＢデバイスＤ１、Ｄ２、Ｄ３が接続可能となっている。なおトランシーバ（ＵＳＢポート）の個数は３個に限定されず、１個や２個でもよいし、４個以上でもよい。
【００３９】
データ転送制御装置１１０はルートハブ２０を含む。このルートハブ２０はホストコントローラ３０に直接接続されるハブである。ルートハブ２０は、ホストコントローラ３０と１又は複数のＵＳＢポートとの間のコネクションを提供する。
【００４０】
データ転送制御装置１１０はホストコントローラ３０（広義には転送コントローラ。他の説明でも同様）を含む。このホストコントローラ３０はＵＳＢを介したデータ転送を制御するものである。具体的にはＩＮトークン（ＩＮトークンパケット）やＯＵＴトークン（ＯＵＴトークンパケット）を発行する処理や、パケットを組み立てたり分解する処理や、ハンドシェークパケットを発行する処理や、データ転送のフェーズを制御する処理などを行う。
【００４１】
なお本実施形態のホストコントローラ３０は、パーソナルコンピュータのホストコントローラに要求されるようなホスト機能を具備するものであってもよいし、ＵＳＢ Ｏｎ−Ｔｈｅ−Ｇｏ（ＯＴＧ）規格のホストコントローラに要求されるような簡易的なホスト機能（少なくともＩＮトランザクション、ＯＵＴトランザクションを発生したり、コントロール転送を行う機能）を具備するものであってもよい。
【００４２】
ホストコントローラ３０はメインコントローラ３２（ＣＰＵ、プロセッサ）とＳＩＥ（Serial Interface Engine）３４を含む。メインコントローラ３２はホストコントローラ３０の処理シーケンス等を制御するものであり、例えばＵＳＢのドライバ・ソフトウェアなどにより動作する。ＳＩＥ３４は、ＵＳＢのパケット・ハンドル処理、トランザクション管理処理などを行うものである。
【００４３】
データ転送制御装置１１０はデータバッファ４０（ＦＩＦＯ、パケットバッファ）を含む。データバッファ４０は、ＵＳＢを介して転送されるデータ（送信データ又は受信データ）を一時的に格納（バッファリング）するためものである。このデータバッファ４０はＲＡＭ（Random Access Memory）などのメモリにより構成できる。
【００４４】
図３に、本実施形態により実現されるネットワークのシステム構成例を示す。
【００４５】
パーソナルコンピュータ（ＰＣ）等のホスト１００（電子機器）は図２のデータ転送制御装置１１０を含む。そしてホスト（データ転送制御装置１１０）の複数のＵＳＢポート（ダウンストリーム）には、ＵＳＢデバイスＤ１、Ｄ２、Ｄ３が接続されている。ここでＵＳＢデバイスＤ３はＵＳＢハブであり、このＵＳＢデバイスＤ３のＵＳＢポート（ダウンストリーム）にはＵＳＢデバイスＤ４、Ｄ５が接続されている。そしてこれらのホスト１００及びＵＳＢデバイスＤ１〜Ｄ５によりＵＳＢセグメントが構成される。
【００４６】
ホスト１００は、例えば１０ＢＡＳＥ−Ｔや１００ＢＡＳＥ−Ｔなどを介してハブ１２０（イーサネット（登録商標））に接続されている。そしてこのハブ１２０には１０ＢＡＳＥ−Ｔや１００ＢＡＳＥ−Ｔなどを介して他のパーソナルコンピュータ１３０、１３２が接続されている。またハブ１２０にはルータ１４０が接続され、このルータ１４０には他のハブ１２２が接続されている。またＬＡＮのルート位置にあるルータ１４０には、更に広域のＷＡＮ（Wide Area Network）が接続され、インターネットなどに接続可能になっている。そして本実施形態では、これらのルータ１４０、ハブ１２０、１２２、ＰＣ１００、１３０、１３２、ＵＳＢデバイスＤ１、Ｄ４により、ＬＡＮセグメントが構成される。
【００４７】
なおＬＡＮとは、多数の独立した装置（ＰＣ、ワークステーション、周辺機器）が、適度なデータ転送速度（例えば１０Ｍｂｐｓ以上）を持つ物理的伝送路（同軸ケーブル、光ファイバケーブル、電波、赤外線）を通じて、適当な距離内（１つのオフィスやフロア、建物内、複数の建物群）で直接的に通信可能とするデータ通信システムである。
【００４８】
ＩＥＥＥ１３９４では、バスに接続されるノードは全て平等な立場でトランザクションを発行できる。これに対してＵＳＢでは、ホストが主導権を有しており、デバイス側から能動的な動作（トランザクション発行、コマンド発行）を行うことができない。またＵＳＢでは、ＩＥＥＥ１３９４におけるＩＰＯｖｅｒ１３９４のようなプロトコルが定義されていない。このため従来では、ＵＳＢセグメントに属するＵＳＢデバイスはＬＡＮセグメント（ＬＡＮノード、ＩＰノード）にはなり得なかった。即ちＩＥＥＥ１３９４を用いたＬＡＮの構築は可能であったが、ＵＳＢを用いたＬＡＮの構築はできなかった。
【００４９】
これに対して図２の本実施形態のデータ転送制御装置１１０によれば、ＵＳＢデバイスをＬＡＮノードとして動作させることができ、ＵＳＢを用いたＬＡＮを構築できる。このために図２のデータ転送制御装置１１０は以下に説明するような処理を行う。
【００５０】
即ち、本実施形態ではホストコントローラ３０が、ＵＳＢに接続されるＵＳＢデバイスに対して、他のＵＳＢデバイスに送信すべきデータが無いかを問い合わせるＩＮトークン（ＩＮトークンのパケット）を発行する。この場合に本実施形態では例えば、ＵＳＢに接続される複数のＵＳＢデバイスのうちＬＡＮノード（狭義にはＩＰアドレスを有するＩＰノード）であることを宣言したＵＳＢデバイスに対して、ＩＮトークンを発行する。別の言い方をすれば、ＬＡＮセグメントに属するＵＳＢデバイスに対して、ＩＮトークンを発行する。例えば図３ではＵＳＢデバイスＤ１、Ｄ４に対してＩＮトークンを発行する。
【００５１】
またホストコントローラ３０は、例えばＬＡＮセグメントであるＵＳＢデバイスＤ１に対してＩＮトークンを発行し、その応答としてＵＳＢデバイスＤ１からＮＡＫ（Negative AcKnowledgment）を受信すると、次の他のＬＡＮセグメントであるＵＳＢデバイスＤ４に対してＩＮトークンを発行する。即ちＬＡＮセグメントに属するＵＳＢデバイス（（ＬＡＮノードを宣言したＵＳＢデバイス）に対して順次にＩＮトークンを発行する。
【００５２】
なおＵＳＢデバイスＤ４に対しては、ハブであるＵＳＢデバイスＤ３を介してＩＮトークンを発行する。またＵＳＢデバイスがＬＡＮノード宣言を行ったデバイスか否かは、ゲット・ディスクリプタのデバイスリクエストの応答として当該ＵＳＢデバイスから返送されたディスクリプタ（デバイスディスクリプタ）に基づいて判断できる。
【００５３】
またホストコントローラ３０が、ＬＡＮセグメントであるＵＳＢデバイスＤ１に対してＩＮトークンを発行し、その応答としてＵＳＢデバイスＤ１から零長パケット（零長のデータパケット、ショートパケット）を受信した場合に、次の他のＬＡＮセグメントであるＵＳＢデバイスＤ４に対してＩＮトークンを発行するようにしてもよい。この零長パケットは、ＩＲＰ（Ｉ／Ｏリクエストパケット）によるデータ転送を終了させる場合などに使用されるものである。そしてホストコントローラ３０は、ＵＳＢデバイスＤ１に発行したＩＮトークンに対する応答として、零長パケットを受信すると、ＵＳＢデバイスＤ１に対してＡＣＫ（AcKnowledgment）のハンドシェークパケットを送信する。そして、その後に他のＬＡＮセグメントであるＵＳＢデバイスＤ４に対してＩＮトークンを発行する。
【００５４】
ホストコントローラ３０によるＩＮトークンの発行は、インタラプト転送などを用いて例えば定期的に行うことができる。即ちホストコントローラ３０は、パケットの転送順序を制御、管理し、各転送タイプのパケットの転送を指示する。このためにホストコントローラ３０は、フレーム管理を行い、フレーム（１ｍｓ、１２５μｓ）毎に、ＳＯＦ（Start Of Frame）パケットをＵＳＢデバイス（ペリフェラル機器）に発行する。ここでＳＯＦは、フレームの先頭を示すためのトークンパケットであり、ＰＩＤとフレーム番号とＣＲＣを含む。またフレームは、ＳＯＦと次のＳＯＦとの間のインターバルである。ホストコントローラ３０は、１つのトランザクションが複数のフレームにまたがらないようにスケジューリング管理を行うことになる。このＳＯＦを利用することでホストコントローラ３０は、コマンド受信のためのＩＮトークンを定期的にＵＳＢデバイスに発行することができる。
【００５５】
なおＩＮトークンの発行を、バルク転送を用いて定期的又は不定期に行ってもよい。或いは他の転送モード（アイソクロナス転送、コントロール転送）を利用してＩＮトークンを発行してもよい。
【００５６】
ホストコントローラ３０は、ＵＳＢデバイスに対して発行したＩＮトークンに対する応答として、ＮＡＫ（ハンドシェークパケット）ではなくデータ（零長ではないデータ）を受信すると、受信したデータ（コマンド）を解析する。例えばホストコントローラ３０が、ＵＳＢデバイスＤ１（広義には第１のＵＳＢデバイス。他の説明でも同様）に発行したＩＮトークンに対する応答として、ＵＳＢデバイスＤ４（広義には第２のＵＳＢデバイス。他の説明でも同様）を宛先として指定するディスティネーション識別情報（ディスティネーションＩＤ）を含んだデータ（データパケット）を受信したとする。するとホストコントローラ３０は、受信したディスティネーション識別情報で指定されるＵＳＢデバイスＤ４に対してＯＵＴトークンを発行する。そしてＵＳＢデバイスＤ１から受信したデータ（画像データ、音データ、或いはプリントデータなどのアプリケーションデータ）をＵＳＢデバイスＤ４に送信する。
【００５７】
逆に、例えばＵＳＢデバイスＤ４に発行したＩＮトークンに対する応答として、ＵＳＢデバイスＤ１を宛先として指定するディスティネーション識別情報を含んだデータを受信すると、ＵＳＢデバイスＤ１に対してＯＵＴトークンを発行する。そしてＵＳＢデバイスＤ４から受信したデータをＵＳＢデバイスＤ１に送信する。
【００５８】
このようにすることで、ＬＡＮセグメントを構成するＵＳＢデバイス間でのピア・ツー・ピア（peer to peer）のデータ転送を実現できる。即ちデータ転送制御装置１１０（ホスト１００）を、あたかもＵＳＢのルータのように機能させて、ＵＳＢによるＬＡＮのデータ転送を実現できる。
【００５９】
なお、以上ではＬＡＮセグメントを構成するＵＳＢデバイスが２個である場合について説明したが、ＬＡＮセグメントを構成するＵＳＢデバイスが３個以上である場合も本発明の範囲に含まれる。この場合にも、トークンバスにおけるトークンのようにＵＳＢのＩＮトークンを機能させて、ＬＡＮセグメントを構成するＵＳＢデバイス間でのデータ転送を実現できる。
【００６０】
３．電子機器
図４（Ａ）（Ｂ）に本実施形態のデータ転送制御装置１１０を含む電子機器１０２（図３のホスト１００）の例を示す。
【００６１】
本実施形態のデータ転送制御装置１１０を含む電子機器１０２としては図４（Ａ）に示すようなＵＳＢポートを備えたパーソナルコンピュータ（デスクトップ型、ノートブック型ＰＣ）を想定できる。この場合、本実施形態のデータ転送制御手法は、データ転送制御装置１１０を制御するファームウェアや、ＯＳのドライバ・ソフトウェアなどにより実現できる。
【００６２】
また本実施形態のデータ転送制御装置１１０を含む電子機器１０２は、図４（Ｂ）に示すようなＵＳＢポートを備えたＵＳＢルータであってもよい。このＵＳＢルータは、ＵＳＢデバイス間のデータ転送経路を決めるルーティング処理を行うものである。図４（Ｂ）の場合には、データ転送制御装置１１０のホストコントローラ３０は、パーソナルコンピュータのホストコントローラに要求されるような全てのホスト機能を持つ必要は必ずしもなく、簡易的なホスト機能を持つだけでもよい。即ち、ＵＳＢポートに接続されるＵＳＢデバイスにＩＮトークンを発行する処理や、ＩＮトークンの応答としてディスティネーション識別情報を含んだデータを受信した場合に宛先のＵＳＢデバイスにＯＵＴトークンを発行してデータを送信する処理などを、実行できる簡易的なホスト機能を持つだけでもよい。或いはＵＳＢ Ｏｎ−Ｔｈｅ−Ｇｏ（ＯＴＧ）規格のホストに要求されるような簡易的なホスト機能を持つだけでもよい。
【００６３】
なお本実施形態が適用される電子機器１０２は図４（Ａ）（Ｂ）には限定されず、少なくともデータ転送制御装置１１０と、ＵＳＢデバイス（ハブも含む）を接続するためのＵＳＢポートを備えていればよい。また電子機器１０２は、データ転送制御装置１９０やＵＳＢポートの他に、例えばＣＰＵ、ＲＯＭ、ＲＡＭ、表示部、或いは操作部などを含むことができる。
【００６４】
４．ＵＳＢデバイス用データ転送制御装置の構成
図５に、ＵＳＢデバイス側に内蔵されるデータ転送制御装置１９０の構成例を示す。なお図５の一部の機能ブロックを省略する構成としてもよい。
【００６５】
データ転送制御装置１９０はトランシーバ６０を含む。このトランシーバ６０は、差動データ信号ＤＰ、ＤＭを用いてＵＳＢのデータを送受信する回路である。このトランシーバ６０としては、ＵＳＢ２．０の物理層回路や論理層回路の一部についてのインターフェースを定義したＵＴＭＩ（USB2.0 Transceiver Macrocell Interface）に準拠したマクロセルなどを用いることができる。
【００６６】
データ転送制御装置１９０はペリフェラルコントローラ８０（広義には転送コントローラ。他の説明でも同様）を含む。このペリフェラルコントローラ８０はＵＳＢを介したデータ転送を制御するものである。なおペリフェラルコントローラ８０としてＯＴＧ規格に準拠したコントローラ（ペリフェラル機能とホスト機能の両方を有するコントローラ）を用いてもよい。
【００６７】
データ転送制御装置１９０はデータバッファ９０（ＦＩＦＯ、パケットバッファ）を含む。データバッファ９０は、ＵＳＢを介して転送されるデータ（送信データ又は受信データ）を一時的に格納（バッファリング）するためものである。このデータバッファ９０はＲＡＭなどのメモリにより構成できる。
【００６８】
そして本実施形態ではペリフェラルコントローラ８０は、ＬＡＮセグメントを構成する他のＵＳＢデバイスに送信すべきデータが無い場合には、図３のホスト１００（データ転送制御装置１１０）からのＩＮトークン（トークンパケット）に対する応答として、ＮＡＫ（ハンドシェークパケット）をホスト１００に送信する。なおＩＮトークンに対して零長パケット（零長のデータパケット）をホスト１００に送信するようにしてもよい。
【００６９】
一方、ペリフェラルコントローラ８０は、他のＵＳＢデバイスに送信すべきデータがある場合には、ホスト１００からのＩＮトークンに対する応答として、他のＵＳＢデバイスのディスティネーション識別情報（ディスティネーションＩＤ）を含んだデータ（データパケット）をホスト１００に送信する。このようにすることで、ペリフェラルコントローラ８０を含んだＵＳＢデバイスをＬＡＮノードとして動作させることが可能となり、ＵＳＢを用いたＬＡＮを構築できる。
【００７０】
なおデータ転送制御装置１１０を含むＵＳＢデバイスとしては、光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶチューナ、ビデオカメラ、オーディオ機器、携帯電話、プロジェクタ、携帯情報端末、或いは電子手帳などの種々の電子機器を想定できる。またこの場合のＵＳＢデバイス（電子機器）は、データ転送制御装置１９０やＵＳＢポートの他に、例えばＣＰＵ、ＲＯＭ、ＲＡＭ、表示部、或いは操作部などを含むことができる。
【００７１】
５．動作
次に本実施形態の動作について説明する。
【００７２】
５．１  ＬＡＮノード宣言
図６に、ＵＳＢデバイスのＬＡＮノード宣言処理の動作説明図を示す。
【００７３】
まず図６のＡ１に示すようにホスト（ホストコントローラ。他の説明でも同様）が、ＵＳＢデバイスＤ１に対してGetDescriptorのデバイスリクエストを発行する。するとＵＳＢデバイスＤ１は、ＬＡＮノード宣言を行う場合には、Ａ２に示すようにＬＡＮノード宣言情報（自身がＬＡＮノード宣言したことを知らせる情報）をディスクリプタ（狭義にはデバイスディスクリプタ）に記述し、そのデバイスリクエストをホストに返信する。この場合のＬＡＮノード（ＩＰノード）宣言情報はベンダに固有（ユニーク）の情報又はデバイスクラスに定義された情報になる。
【００７４】
ホストは、ディスクリプタをＵＳＢデバイスＤ１から受信すると、そのディスクリプタを解析する。そして受信したディスクリプタに基づいて、ＵＳＢデバイスＤ１がＬＡＮノード宣言を行ったか否かを判断する。そしてＵＳＢデバイスＤ１がＬＡＮノード宣言を行ったと判断すると、ＬＡＮノード動作を許可するか否かを判断する。そして許可する場合には、図６のＡ３に示すようにSetIPのデバイスリクエストをＵＳＢデバイスＤ１に発行して、ＬＡＮノードとして動作することを許可する情報や、ＬＡＮのアドレス（ＩＰアドレス）情報などをＵＳＢデバイスＤ１に送信する。なお、SetIPはベンダに固有又はデバイスクラスに定義された情報のデバイスリクエストである。
【００７５】
同様にしてホストは図６のＡ４に示すように、ＵＳＢデバイスＤ４に対してGetDescriptorのデバイスリクエストを発行する。するとＡ５に示すようにＵＳＢデバイスＤ４は、ＬＡＮノード宣言を行う場合には、ＬＡＮノード宣言情報をディスクリプタに記述して、ホストに返信する。
【００７６】
ホストは、ディスクリプタをＵＳＢデバイスＤ４から受信すると、それを解析し、ＵＳＢデバイスＤ４がＬＡＮノード宣言を行ったか否かを判断する。そしてＬＡＮノード宣言を行ったと判断すると、SetIPのデバイスリクエストをＵＳＢデバイスＤ４に発行して、ＬＡＮノードとして動作することを許可する情報や、ＬＡＮのアドレス（ＩＰアドレス）情報などをＵＳＢデバイスＤ４に送信する。
【００７７】
ホストは以上のような処理をＵＳＢポートに接続される複数のＵＳＢデバイスに対して行い、受信したディスクリプタに基づいて、これらのＵＳＢデバイスの中からＬＡＮセグメントとなるＵＳＢデバイスを特定する。そして特定したＵＳＢデバイスに対して定期的に又は不定期にＩＮトークンを発行し、ＵＳＢデバイス間のＬＡＮによるデータ転送を実現する。
【００７８】
なお図６の一連の処理はＵＳＢのコントロール転送により実現できる。コントロール転送は、ホストとＵＳＢデバイス（ターゲット、ペリフェラル）との間でコントロールエンドポイント（エンドポイント番号が０のエンドポイント）を介して行われる制御用の転送モードである。このコントロール転送は、ホストがＵＳＢデバイスにデバイスリクエストを送るセットアップステージと、デバイスリクエストで指定される転送方向でデータを転送するデータステージと、データ転送が成功したか否かを伝えるステータスステージとにより構成される。
【００７９】
デバイスリクエストは、ＵＳＢのデバイスに対するホストからのコマンドである。このデバイスリクエストには、標準デバイスリクエスト、デバイスクラス固有のリクエスト、ベンダ固有のリクエストがある。
【００８０】
コントロール転送のセットアップステージでは、ホストがＳＥＴＵＰトークパケットを生成して、ＵＳＢデバイスに送信する。次に、デバイスリクエストを含むＳＥＴＵＰデータのパケットを、ホストがＵＳＢデバイスに送信する。ＳＥＴＵＰデータパケットを受信したＵＳＢデバイスは、ＡＣＫ（ACKnowledgement）のハンドシェークパケットをホストに送信する。ＵＳＢデバイスからＡＣＫのハンドシェークパケットが返ってくると、ホストはセットアップステージを終了する。
【００８１】
セットアップステージが終了するとデータステージに移行する。なおデータステージが無いデバイスリクエストでは、データステージは省略されてステータスステージに移行する。
【００８２】
データステージでの転送方向が「ＩＮ」であるデバイスリクエスト（例えばGetDescriptor）では、データステージにおいてホストがＩＮトランザクションを発生し、ＵＳＢデバイスからホストにデータが転送される。例えばデバイスリクエストがGetDescriptorである場合、ＵＳＢデバイスは、ディスクリプタをＩＮデータに含ませてホストに送信する（図６のＡ２、Ａ５参照）。一方、  データステージでの転送方向が「ＯＵＴ」であるデバイスリクエスト（SetDescriptor, SetIP等）では、データステージにおいてホストがＯＵＴトランザクションを発生し、ホストからＵＳＢデバイスにデータが転送される（図６のＡ３、Ａ６参照）。そしてデータステージが終了するとステータスステージに移行する。
【００８３】
なおＵＳＢデバイスが返信するディスクリプタとしては、デバイスディスクリプタ、コンフィギュレーションディスクリプタ、インターフェースディスクリプタ、エンドポイントディスクリプタ、ストリングディスクリプタがある。ホストは、デバイスリクエストの中のwValueなどを用いて、取得したいディスクリプタのタイプを指定する。ここでデバイスディスクリプタにはＵＳＢデバイスの一般的な情報が記述される。コンフィギュレーションディスクリプタにはデバイス構成についての情報が記述される。エンドポイントディスクリプタにはエンドポイントについての情報が記述される。ストリングディスクリプタはオプショナルのディスクリプタである。
【００８４】
５．２  ＬＡＮプロトコルによるデータ転送
図７は、本実施形態で実現されるＬＡＮプロトコルでの仮想的なセッション定義によるデータ転送の様子を示した図である。
【００８５】
まず図７のＢ１に示すようにホストは、ＬＡＮセグメントであるＵＳＢデバイスＤ１に対して送信データ（ＬＡＮによる送信データ）があるか否かを問い合わせる。ＵＳＢデバイスＤ１は、ＬＡＮセグメントの他のＵＳＢデバイスに対する送信データが無い場合には、Ｂ２に示すように「送信データ無し」の応答をホストに送信する。
【００８６】
次に図７のＢ３に示すようにホストは、ＬＡＮセグメントであるＵＳＢデバイスＤ４に対して送信データがあるか否かを問い合わせる。ＵＳＢデバイスＤ４は、送信データが無い場合には、Ｂ４に示すように「送信データ無し」の応答をホストに送信する。
【００８７】
次にＢ５に示すようにホストは、ＵＳＢデバイスＤ１に対して送信データがあるか否かを再度問い合わせる。ＵＳＢデバイスＤ１は、例えばＵＳＢデバイスＤ４への送信データがある場合には、Ｂ６に示すようにそのデータをホストに送信する。そしてホストはＢ７に示すように、そのデータを、その宛先であるＵＳＢデバイスＤ４に送信する。以上のような処理を繰り返すことで、ＬＡＮセグメントに属する複数のＵＳＢデバイス間でのデータ転送が実現される。
【００８８】
図８は、図７のデータ転送をＵＳＢのトランザクションに分解して示した図である。
【００８９】
まず図８のＣ１に示すようにホストは、ＬＡＮセグメントであるＵＳＢデバイスＤ１に対してＩＮトークン（ＩＮトークンパケット）を発行して、ＩＮトランザクションを発生する。ＵＳＢデバイスＤ１は、他のＬＡＮセグメントのＵＳＢデバイスに対する送信データが無い場合には、発生したＩＮトランザクションにおいて、ＩＮトークンに対する応答としてＣ２に示すようにＮＡＫ（ＮＡＫのハンドシェークパケット）をホストに送信する。
【００９０】
次に図８のＣ３に示すようにホストは、ＬＡＮセグメントであるＵＳＢデバイスＤ４に対してＩＮトークンを発行して、ＩＮトランザクションを発生する。ＵＳＢデバイスＤ４は、送信データが無い場合には、ＩＮトークンに対する応答としてＣ４に示すようにＮＡＫをホストに送信する。
【００９１】
次に図８のＣ５に示すようにホストは、ＵＳＢデバイスＤ１に対してＩＮトークンを再度発行して、ＩＮトランザクションを発生する。ＵＳＢデバイスＤ１は、送信データがある場合には、このＩＮトランザクションにおいて、ＩＮトークンに対する応答としてＣ６に示すようにデータ（ＵＳＢデバイスＤ４宛のディスティネーションＩＤを含むデータパケット）をホストに送信する。ホストはデータの受信に成功すると、Ｃ７に示すようにＡＣＫをＵＳＢデバイスＤ１に送信する。
【００９２】
次にＣ８に示すようにホストは、受信データに含まれるディスティネーションＩＤで指定されるＵＳＢデバイスＤ４に対してＯＵＴトークン（ＯＵＴトークンパケット）を発行して、ＯＵＴトランザクションを発生する。ホストは、ＵＳＢデバイスＤ１から受信したデータを、Ｃ９に示すように、この発生したＯＵＴトランザクションにおいてＵＳＢデバイスＤ４に送信する。そしてＵＳＢデバイスＤ４は、データの受信に成功するとＡＣＫをホストに送信する。
【００９３】
以上のような処理を繰り返すことで、ＬＡＮセグメントに属するＵＳＢデバイス間でのピア・ツー・ピアでのデータ転送を実現できる。
【００９４】
なお図９に、本実施形態で用いられるＵＳＢデータパケット、ＬＡＮパケットのフォーマット例を示す。ＵＳＢデータパケットは、ＰＩＤ（パケットＩＤ）のフィールドとデータフィールドとＣＲＣ１６のフィールドを有する。そして本実施形態ではこのＵＳＢデータパケットのデータフィールドにＬＡＮパケットが埋め込まれる。このＬＡＮパケットは、ディスティネーションＩＤ（ディスティネーション情報）のフィールドとソースＩＤ（ソース情報）のフィールドとデータ（画像データ、音データ、或いはプリントデータなどのアプリケーションデータ）のフィールドを有する。
【００９５】
例えば図８のＣ６では、ＵＳＢデバイスＤ１は、図９に示すフォーマットのＵＳＢデータパケットをホストに送信する。この際にＵＳＢデバイスＤ１は、ディスティネーションＩＤのフィールドに、データ送信の宛先であるＵＳＢデバイスＤ４のＩＤを書き込む。またソースＩＤのフィールドに、自身のＩＤを書き込む。そして作成されたＵＳＢデータパケットをホストに送信する。
【００９６】
するとホストは、受信したＵＳＢデータパケットのデータに埋め込まれたＬＡＮパケットの中のディスティネーションＩＤのフィールドを見て、データ送信の宛先を決める。そして宛先であるＵＳＢデバイスＤ４に対してＯＵＴトークンを発行して、ＵＳＢデータパケットを送信する。
【００９７】
ＵＳＢデバイスＤ４は、受信したＵＳＢデータパケットのＬＡＮパケットの中のディスティネーションＩＤを見ることで、自身に宛てられたＬＡＮパケットであることを認識できる。またＬＡＮパケットの中のソースＩＤを見ることで、送信元がＵＳＢデバイスＤ１であることを認識できる。また、ＬＡＮパケットのデータフィールドの中のデータ（画像データ、音データ、或いはプリントデータ等）を用いて種々の処理（画像処理、音処理、或いはプリント処理）を行うことが可能になる。
【００９８】
なお図８では、ホストが発行したＩＮトークンに対する応答として、ＵＳＢデバイスがＮＡＫを送信する場合について説明したが、図１０に示すように、ＩＮトークンに対する応答としてＵＳＢデバイスが零長パケットを送信する場合にも本発明は適用できる。
【００９９】
例えば図１０のＥ１では、ホストがＵＳＢデバイスＤ１に対してＩＮトークンを発行している。そしてＵＳＢデバイスＤ１は、ＩＮトークンに対する応答としてＥ２に示すように零長パケット（零長のデータパケット）をホストに送信する。するとこの零長パケットの受信に成功したホストは、Ｅ３に示すようにＡＣＫのハンドシェークパケットをＵＳＢデバイスＤ１に送信する。そしてホストは、ＵＳＢデバイスＤ１から零長パケットを受信したので、今度は、Ｅ４に示すように次のＵＳＢデバイスＤ４に対してＩＮトークンを発行する。そしてＥ５に示すようにＵＳＢデバイスＤ４がＩＮトークンに対する応答として零長パケットをホストに送信すると、Ｅ６の示すようにホストはＵＳＢデバイスＤ４に対してＡＣＫのハンドシェークパケットを送信する。そしてＥ７に示すようにホストは、ＵＳＢデバイスＤ１に対して再度ＩＮトークンを発行する。このように図１０ではホスト（ホストコントローラ）は、発行したＩＮトークンに対する応答としてＵＳＢデバイスから零長パケットを受信した場合に、次の他のＵＳＢデバイスに対してＩＮトークンを順次発行するようにしている。
【０１００】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１０１】
例えば、本発明のデータ転送制御装置の構成は図２、図５等で説明した構成に限定されない。また本発明のデータ転送制御手法も本実施形態で説明したものに限定されるものではなく、種々の変形実施が可能である。
【０１０２】
また、明細書や図面中の記載において広義な用語（転送コントローラ、第１のＵＳＢデバイス、第２のＵＳＢデバイス等）として引用された用語（ホストコントローラ・ペリフェラルコントローラ、ＵＳＢデバイスＤ１、ＵＳＢデバイスＤ４等）は、明細書や図面中の他の記載においても広義な用語に置き換えることができる。
【０１０３】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１０４】
また本発明は、ＵＳＢ１．１、ＵＳＢ２．０、或いはこれらの規格と同様の思想に基づく規格や、これらの規格を発展させた規格におけるデータ転送制御手法にも適用できる。
【図面の簡単な説明】
【図１】図１（Ａ）〜（Ｄ）はＵＳＢの転送手法の説明図である。
【図２】本実施形態のデータ転送制御装置の構成例である。
【図３】ネットワークのシステム構成例である。
【図４】図４（Ａ）（Ｂ）は電子機器の例である。
【図５】ＵＳＢデバイス用のデータ転送制御装置の構成例である。
【図６】ＬＡＮノード宣言の処理の動作説明図である。
【図７】仮想的なセッション定義によるデータ転送の説明図である。
【図８】トランザクションレベルでのデータ転送の説明図である。
【図９】ＵＳＢデータパケット、ＬＡＮパケットのフォーマット例である。
【図１０】トランザクションレベルでのデータ転送の説明図である。
【符号の説明】
１０-1、１０-2、１０-3  トランシーバ、２０  ルートハブ、
３０  ホストコントローラ（転送コントローラ）、３２  メインコントローラ、
３４  ＳＩＥ、４０  データバッファ（ＦＩＦＯ）、
６０  トランシーバ、８０  ペリフェラルコントローラ（転送コントローラ）、
８２  メインコントローラ、８４  ＳＩＥ、９０  データバッファ（ＦＩＦＯ）、１００  ホスト、１０２  電子機器、１１０  データ転送制御装置（接続機器用）、１９０  データ転送制御装置（ＵＳＢデバイス用）
【図１】
0003649227.tif 000002
【図２】
0003649227.tif 000003
【図３】
0003649227.tif 000004
【図４】
0003649227.tif 000005
【図５】
0003649227.tif 000006
【図６】
0003649227.tif 000007
【図７】
0003649227.tif 000008
【図８】
0003649227.tif 000009
【図９】
0003649227.tif 000010
【図１０】
0003649227.tif 000011