(57)【要約】【課題】  ＵＳＢ規格よりも低速な通信路を用いた場合でも、通信効率の低下を抑制可能なＵＳＢシステムを提供する。【解決手段】  ホスト側コントローラ１１のホストＳＭ３２が、ホスト１０からデバイス１３に向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避する。また、デバイス側コントローラ１２のデバイスＳＭ４２が、ホスト１０とデバイス１３との接続の確立後、所定周期で、ＳＯＦパケットをデバイス１３に送信する。従って、コントローラ１１・１２間でＳＯＦパケットを送信する必要がない。このため、通信速度の遅いコントローラ１１・１２間の通信帯域を、ＳＯＦパケット以外の、他のパケットのためだけに利用できる。従って、これら他のパケットの通信効率を向上させられる。【選択図】  図１
2005129010.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢシステムのデバイスに備えられ、
ホストとデバイスとの間の通信を中継するデバイス側コントローラにおいて、
ホストとデバイスとの接続が確立された後、ＳＯＦパケットをデバイスに送信するデバイス側制御部を備えていることを特徴とするデバイス側コントローラ。
【請求項２】
ホストと、デバイスと、請求項１に記載のデバイス側コントローラとを備えたＵＳＢシステムのホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラにおいて、
ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避するホスト側制御部を備えていることを特徴とするホスト側コントローラ。
【請求項３】
請求項１に記載のデバイス側コントローラと、請求項２に記載のホスト側コントローラとを備えたＵＳＢシステム。
【請求項４】
上記デバイス側制御部は、ＳＯＦパケットを、所定周期でデバイスに送信するように設定されていることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項５】
上記ホスト側コントローラのホスト側制御部は、
ホストから所定時間以上パケットを受信しなかった場合、リセット通知信号をデバイス側コントローラに送信し、
上記デバイス側コントローラのデバイス側制御部は、
リセット通知信号の受信に応じて、デバイスに対するＳＯＦパケットの送信を停止するように設定されていることを特徴とする請求項４に記載のＵＳＢシステム。
【請求項６】
上記デバイス側コントローラのデバイス側制御部は、
デバイスに対してＳＯＦパケット以外の他のパケットを送信する際、
この送信に応じて実行されるデバイスとの通信中に、ＳＯＦパケットの送信タイミングが訪れることを回避するように、
送信タイミングを調整することを特徴とする請求項４に記載のＵＳＢシステム。
【請求項７】
上記デバイス側制御部は、
ホスト側コントローラから受信したＯＵＴパケットあるいはＳＥＴＵＰパケットとＤＡＴＡパケットとをデバイスに送信する際、
ＤＡＴＡパケットのサイズに基づいて、上記の送信タイミングを調整することを特徴とする請求項６に記載のＵＳＢシステム。
【請求項８】
上記のホスト側制御部が、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、ＳＯＦパケットを受信したことを示すＳＯＦ受信通知信号をデバイス側に送信するとともに、
上記デバイス側制御部が、ＳＯＦ受信通知信号の受信に応じて、ＳＯＦパケットをデバイスに送信するように設定されていることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項９】
上記ホスト側コントローラおよびデバイス側コントローラは、
両コントローラ間の通信速度を設定する速度設定部を備えていることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項１０】
上記の速度設定部により、コントローラ間の通信速度が所定値以上に設定された場合、
上記ホスト側コントローラのホスト側制御部が、ホストから受信したＳＯＦパケットをデバイス側に送信する一方、
上記デバイス側コントローラのデバイス側制御部が、ホスト側コントローラから受信したＳＯＦパケットをデバイスに送信するように設定されていることを特徴とする請求項９に記載のＵＳＢシステム。
【請求項１１】
上記ホスト側制御部およびデバイス側制御部の少なくとも一方が、
両コントローラ間でのパケットの送受信におけるエラーレートを算出し、
このエラーレートが所定値以上となった場合に、上記速度設定部が、コントローラ間の通信速度を低下させることを特徴とする請求項９に記載のＵＳＢシステム。
【請求項１２】
上記両コントローラ間の通信経路における通信方式が、全二重通信であることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項１３】
上記両コントローラ間の通信経路が、光ケーブルによって形成されていることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項１４】
上記両コントローラ間の通信が、光無線通信によってなされることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項１５】
上記両コントローラ間の通信が、電波を用いた無線通信によってなされることを特徴とする請求項３に記載のＵＳＢシステム。
【請求項１６】
ＵＳＢシステムにおけるホストとデバイスとの間でパケットを通信するパケット通信方法において、
ホストに備えられたホスト側コントローラのホスト側制御部によって、ホストから送信されたＳＯＦパケットをデバイス側に転送することを回避する送信回避工程と、
デバイスに備えられたデバイス側コントローラのデバイス側制御部によって、ＳＯＦパケットをデバイスに送信する送信工程とを含むことを特徴とするパケット通信方法。
【請求項１７】
ＵＳＢシステムのホストに備えられたコンピューターに、請求項１５に記載の送信回避工程を実行させるとともに、
ＵＳＢシステムのデバイスに備えられたコンピューターに、請求項１５に記載の送信工程を実行させるためのパケット通信プログラム。
【請求項１８】
請求項１７に記載のパケット通信プログラムを記録した記録媒体。
【請求項１９】
ホストと、
デバイスと、
ホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラと、
デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを含むＵＳＢシステムにおいて、
コントローラ間のデータ転送を光通信で行うように設定されており、
さらに、この光通信のデータ転送速度が、ＵＳＢ２．０におけるハイスピードモードでのデータ転送速度より遅くなっていることを特徴とするＵＳＢシステム。
【請求項２０】
ホストとデバイスとの間の通信を中継し、ホスト側コントローラとしての機能とデバイス側コントローラとしての機能とを備えている通信コントローラにおいて、
通信コントローラがデバイス側コントローラとして機能している時、ホストとデバイスとの接続が確立された後、ＳＯＦパケットをデバイスに送信する通信制御部を備えていることを特徴とする通信コントローラ。
【請求項２１】
ホストとデバイスとの間の通信を中継し、ホスト側コントローラとしての機能とデバイス側コントローラとしての機能とを備えている通信コントローラにおいて、
通信コントローラがホスト側コントローラとして機能している時、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避する通信制御部を備えていることを特徴とする通信コントローラ。
【請求項２２】
通信コントローラがホスト側コントローラとして機能している時、
上記通信制御部は、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避することを特徴とする請求項２０に記載の通信コントローラ。
【請求項２３】
通信コントローラがデバイス側コントローラとして機能している時、
上記通信制御部は、ＳＯＦパケットを、所定周期でデバイスに送信するように設定されていることを特徴とする請求項２２に記載の通信コントローラ。
【請求項２４】
通信コントローラがデバイス側コントローラとして機能している時、
上記通信制御部は、デバイスに対してＳＯＦパケット以外の他のパケットを送信する際、
この送信に応じて実行されるデバイスとの通信中に、ＳＯＦパケットの送信タイミングが訪れることを回避するように、送信タイミングを調整することを特徴とする請求項２３に記載の通信コントローラ。
【請求項２５】
通信コントローラがデバイス側コントローラとして機能している時、
上記通信制御部は、ホスト側コントローラから受信したＯＵＴパケットあるいはＳＥＴＵＰパケットとＤＡＴＡパケットとをデバイスに送信する際、
ＤＡＴＡパケットのサイズに基づいて、上記の送信タイミングを調整することを特徴とする請求項２４に記載の通信コントローラ。
【請求項２６】
ホストと、デバイスと、請求項２０に記載の通信コントローラと、請求項２１に記載の通信コントローラとを備えたＵＳＢシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコンピューター（ホスト）と、その周辺機器（デバイス）との間におけるＵＳＢ通信（ＵＳＢ規格に沿ったデータ通信）を実現するための通信システムである、ＵＳＢシステムに関するものである。
【背景技術】
【０００２】
ユニバーサルシリアルバス（Universal Serial Bus：以下ＵＳＢ）は、パーソナルコンピューター等のホストに接続して用いる周辺装置（デバイス）に関する、拡張性の自由度を高めるために開発されたインタフェース仕様である。そして、このＵＳＢは、ホストと様々なＵＳＢ対応デバイスとの通信を、共通のバスラインを用いて実施できるシリアルインタフェース規格である。
【０００３】
ＵＳＢでは、原理上、１つのシステムの中で、１台のホスト（ＵＳＢホスト）と、最大１２７台までのデバイスとを、同一バス上に接続できる。これらの接続は、物理的には、ツリー型のネットワーク構造をとっている。また、論理的には、ホスト（クライアントソフトウェア）とデバイス（ＵＳＢファンクション）とが、１対１で通信する接続形態であるといえる。このような接続形態を維持するために、各デバイスは、時分割で（タイムシェアをして）、ホストと通信を行う。また、ホストは、時分割のスケジューリングを行う。
【０００４】
ＵＳＢ１.ｘでは、データ転送速度の異なる２つのモード、すなわち、１.５Ｍｂｐｓのロースピードモード（ＬＳ）、および、１２Ｍｂｐｓのフルスピードモード（ＦＳ）が規定されている。
【０００５】
しかし、近年、ハードディスク，ＤＶＤ（Digital Versatile Disc）などの高速データ転送の必要なデバイス（アプリケーション）にも、ＵＳＢを適用するようになってきている。このため、前記のような転送速度では不十分であった。
【０００６】
そこで、ＵＳＢ２.０という新しい規格が策定されている。このＵＳＢ２.０では、４８０Ｍｂｐｓの速度でデータ転送を行うハイスピードモード（ＨＳ）が追加されている。
【０００７】
ここで、ＵＳＢでのデータ通信（データ転送）の構造について簡単に説明する。ＵＳＢでのデータ転送は、ホストおよびデバイスにそれぞれ備えられているバッファ間で行われる。
【０００８】
デバイス側のバッファは、エンドポイントと呼ばれるＦＩＦＯ（First In First Out）バッファである。各デバイスは、最大で１６個のエンドポイントを持つことが可能である。また、各エンドポイントには、識別のための番号が付けられている。
【０００９】
そして、ホストは、データ転送の際に、デバイスのアドレスとエンドポイント番号とを用いて、所望のエンドポイントにアクセスするようになっている。
【００１０】
なお、エンドポイント０（番号が０のエンドポイント）は、デバイスをＵＳＢに接続した直後の状態（コンフィギュレーション前の状態）から設定され、ホストとの間のコントロール転送の通信（初期化のための通信など）のために使用される。
【００１１】
また、ホスト−デバイス間のデータ通信は、フレームと呼ばれる通信枠を用いて行われる。このフレームは、所定周期で、ホスト−デバイス間で繰り返し転送されている（ＬＳ，ＦＳモードでは１ｍｓ周期、またＨＳモードでは１２５ｕｓ周期）。そして、全てのデータが、このフレームの中でやり取りされている。
【００１２】
また、このフレームは、複数のトランザクションから成り立っており、トランザクションは、複数のパケットから構成されている。
【００１３】
パケットは、トランザクションを構成する最小の通信単位であり、実際に通信されるデータの基本単位である。また、パケットには、内容に応じて、トークンパケット、データパケット、ハンドシェイクパケットなど、いくつかの種類がある。そして、このパケットを複数含み、意味のあるデータ転送の単位となったものをトランザクションと呼ぶ。
【００１４】
すなわち、ＵＳＢでのデータ通信は、フレームの中でトランザクションごとに行われる。そして、１つのトランザクションでは、ホスト−デバイス間で複数のパケットが転送されるようになっている。
【００１５】
また、上記のトークンパケットには、各デバイスのアドレスおよびエンドポイント番号が含まれており、これによって、ホストが、データ通信の相手先を指定できるようになっている。
【００１６】
図１１は、ＵＳＢパケットの種別を示す説明図である。この図に示すように、パケットには、トークンパケット、データパケット、ハンドシェイクパケット、および特殊パケットがある。
【００１７】
また、トークンパケットには、ＩＮパケット、ＯＵＴパケット、ＳＥＴＵＰパケット、ＳＯＦパケットがある。それぞれのパケットは、図１１に示す目的で用いられる。データパケットには、ＤＡＴＡ０パケット、ＤＡＴＡ１パケットなどがある。ハンドシェイクパケットには、ＡＣＫパケット、ＮＡＫパケット、ＳＴＡＬＬパケット、ＮＹＥＴパケットがある。また、特殊パケットとして、ＰＩＮＧパケットなどがある。
【００１８】
また、図１２は、ＵＳＢのパケットフォーマットを示す説明図である。この図に示すＰＩＤは、パケットの識別子であり、８ビットで構成される。また、トークンパケットには、ＣＲＣ５、データパケットにはＣＲＣ１６がそれぞれ付加されている。これらのＣＲＣは、受信パケットにおける誤りの有無を判別するために用いられるものである。
【００１９】
なお、トークンパケットの１つであるＳＯＦ（Start of Frame）パケットは、ホストの発行するフレームの始まりを示すパケットである。そして、このＳＯＦパケットは、ホストとデバイスとの間のバスがリセットされていないことを示す機能を有している。
【００２０】
ＵＳＢのケーブルは、Ｄ＋，Ｄ−の２本の信号線があり、それ以外に電源とグランドの都合４本の線を含んでいる。また、ＵＳＢ２.０においては、ホストは、ＨＳモードでパスリセット状態を得る場合、バスリセット信号として、Ｄ＋信号線およびＤ−信号線を、ともに１０ｍｓ以上、ローレベル（ＳＥ０状態）とする。
【００２１】
そして、デバイスは、このＳＥ０状態を３ｍｓ以上検出することで、バスリセット状態であると認識する。なお、ＳＥ０状態は、アイドル状態と同一である。このため、デバイスは、パケットを受信しない時間が３ｍｓ以上である場合に、バスリセット状態であると認識し、ホストとの接続を切断してしまう。
【００２２】
このような切断が行われると、デバイスとの物理的な接続をしなおしても（ケーブルのコネクタを抜き差ししても）、バスを復帰させる（デバイスを再認識する）ことは不可能となることが多い。従って、バスを復帰させるためには、ホストを再起動する必要が生じる。
【００２３】
そこで、ＵＳＢシステムでは、このような事態を回避するために、フレームの先頭にＳＯＦパケットを配置して、ホストからデバイスに対して、周期的かつ優先的にＳＯＦパケットを送信するようになっている。すなわち、ホストは、ＵＳＢシステム（ケーブル）に接続されているデバイス（バスリセットされていないデバイス）に対し、ＬＳ，ＦＳモードでは１ｍｓ周期で、またＨＳモードでは、１２５ｕｓ周期で、ＳＯＦパケットを常に送信するようになっている。
【００２４】
なお、ＵＳＢ規格では、このようなＳＯＦパケットの送信を、他のパケットの送信に優先して行うように設定されている。また、デバイスは、このようなＳＯＦパケットを受信しても、ホストに返信を行うことはない。また、このＳＯＦパケットは、アイソクロナス転送時にホストとデバイスとの同期をとるためにも用いられる。
【００２５】
次に、ＵＳＢ通信における各トランザクションについて説明する。ＵＳＢ２.０規格では、ホストがデバイスからデータを読み出す場合、ＩＮトランザクションが用いられる。以下に、図１３を用いて、ＩＮトランザクションについて説明する。
【００２６】
まず、Ｔ３０１において、ホストは、デバイスに向けてＩＮパケットを送信し、ＩＮトランザクションの開始を通知する。ＩＮパケットを受信したデバイスは、転送すべきデータのない場合、その旨を通知するＮＡＫパケットを、Ｔ３０２においてホストに向けて送信する。ＮＡＫパケットを受信したホストは、送信すべきデータがデバイスにないことを認識する。そして、次の送信タイミング（Ｔ３０３）で、再びＩＮパケットを送信する。
【００２７】
これを受信したデバイスは、転送すべきデータを既に有している場合、Ｔ３０４のタイミングで、ホストに向けてＤＡＴＡパケットを送信する。ホストは、所定時間以内に誤りなくＤＡＴＡパケットを受信すると、Ｔ３０５のタイミングで、データを正常に受信したことを示すＡＣＫパケットを、デバイスに向けて送信する。デバイスは、所定時間以内にＡＣＫパケットを受信することで、ホストに対して正常にデータを転送できたことを認識できる。
【００２８】
なお、Ｔ３０４でホストに送信されるＤＡＴＡパケットには、ＣＲＣ１６の符号が付加されている。このため、ホスト（データ受信側）は、受信データにおける誤りの有無を判別できる。
【００２９】
なお、ＣＲＣ１６により、データに誤りがあると判別された場合は、ホストは、何もパケットを返さない。従って、この場合、デバイスは、ホストからＡＣＫパケットを所定時間内に受信できない。このため、デバイスは、ホストに対して正常にデータを転送できなかったことを認識し、ＩＮトランザクションが失敗に終わったと認識する。
【００３０】
以上のようなＩＮトランザクションにより、ホストは、デバイスからデータを取得する（読み出す）ことが可能となる。
【００３１】
また、ＵＳＢ２.０規格では、ホストがデバイスにデータを書き込む場合、ＯＵＴトランザクションが用いられる。以下に、図１４を用いて、ＯＵＴトランザクションについて説明する。
【００３２】
まず、Ｔ４０１において、ホストは、デバイスに対してＯＵＴパケットを送信し、ＯＵＴトランザクションの開始を通知する。その後、ホストは、Ｔ４０２において、デバイスにＤＡＴＡパケットを送信する。
【００３３】
デバイスは、受信したＯＵＴパケットおよびＤＡＴＡパケットのＣＲＣチェックを行い、受信パケットにおける誤りの有無を判別する。受信パケットに誤りがないとき、デバイスは、受信したＤＡＴＡパケットを処理できる状態であるならば、ＡＣＫパケットをホストに送信する。一方、ＤＡＴＡパケットを処理できる状態でなければ、デバイスは、ホストにＮＡＫパケットを返す。また、受信パケットに誤りのある場合は、デバイスはホストに何も返さない。
【００３４】
図１４においては、受信パケットに誤りがないが、データを処理できないとして、Ｔ４０３において、デバイスがＮＡＫパケットをホストに返している。このＮＡＫパケットを受信したホストは、デバイスが受信パケットを処理できる状態でないことを認識する。そして、デバイスの状態を把握するために、Ｔ４０４において、ＰＩＮＧパケットをデバイスに送信する。
【００３５】
ＰＩＮＧパケットを受信したデバイスは、データを処理できる状態であるならば、ＡＣＫパケットを、またデータを処理できる状態でなければＮＡＫパケットをホストに送信する。
【００３６】
図１４においては、Ｔ４０５において、デバイスが、データを処理できる状態であるとし、ＡＣＫパケットをホストに送信している。ホストは、ＰＩＮＧパケットに対してＡＣＫパケットが返ってきたことから、デバイスがデータを処理できる状態であることを認識する。
【００３７】
なお、ホストは、ＰＩＮＧパケットに対してＮＡＫパケットを受信した場合、デバイスがデータを処理できない状態であると認識し、再びＰＩＮＧパケットを送信する。ここで、ホストは、デバイスがデータを処理できる状態になるまで（ＡＣＫパケットを受信するまで）、ＰＩＮＧパケットの送信を繰り返す。
【００３８】
図１４においては、ホストは、ＰＩＮＧパケットに対してＡＣＫパケットを受信したため、Ｔ４０６およびＴ４０７において、ＯＵＴパケットおよびＤＡＴＡパケットを再送信する。
【００３９】
これを受信したデバイスは、今度はデータを処理できる状態である。このため、デバイスは、受信パケットのＣＲＣチェック後、誤りがなければＡＣＫパケットを送信する。ホストは、ＡＣＫパケットを受信することで、ＯＵＴパケットおよびＤＡＴＡパケットがデバイスに誤りなく転送され、またデバイスで処理されたことを認識し、ＯＵＴトランザクションを終了する。このようなＯＵＴトランザクションにより、ホストは、デバイスにデータを書き込むことが可能となる。
【００４０】
次に、ＳＥＴＵＰトランザクションについて説明する。ＳＥＴＵＰトランザクションは、ＵＳＢ２.０規格において、ホストにデバイスを接続した際に、ホスト−デバイス間でのシステム的な接続を確立する（コンフィギュレーションを完成させる）ために行われるものである。なお、このトランザクションは、ホストが、デバイスのエンドポイント０に対してデータ転送を行うことで実行される。以下に、図１５を用いて、ＳＥＴＵＰトランザクションについて説明する。
【００４１】
ＳＥＴＵＰトランザクションでは、まず、Ｔ５０１において、ホストがデバイスにＳＥＴＵＰパケットを送信し、ＳＥＴＵＰトランザクションの開始を通知する。その後、ホストは、Ｔ５０２において、ＤＡＴＡパケットを送信する。デバイスは、受信したＳＥＴＵＰパケットおよびＤＡＴＡパケットのＣＲＣをチェックする。
【００４２】
そして、受信パケットに誤りがないと判別された場合、デバイスは、Ｔ５０３において、ＡＣＫパケットをホストに送信する。一方、デバイスは、受信したＳＥＴＵＰパケットおよびＤＡＴＡパケットに誤りがあると判断された場合には、ホストに何も返さない。
【００４３】
ホストは、ＡＣＫパケットを受信することで、デバイスにＳＥＴＵＰパケットおよびＤＡＴＡパケットを正しく転送できたことを認識し、ＳＥＴＵＰトランザクションを終了する。
【００４４】
なお、ＤＡＴＡパケットの送信から所定時間以内にＡＣＫパケットを受信できない場合、ホストは、デバイスにＳＥＴＵＰパケットもしくはＤＡＴＡパケットを正常に転送できなかったこと、すなわち、ＳＥＴＵＰトランザクションが失敗に終わったことを認識する。
【００４５】
前記の方法により、ホスト・デバイス間でのＳＥＴＵＰトランザクションを行うことが可能となる。
【００４６】
ところで、近年、デジタルカメラ、ＰＤＡ（personal digital assistant）などのモバイル機器にも、ＵＳＢ端子が搭載され、ＵＳＢに対応可能になってきている。
【００４７】
これらのモバイル機器とホストとの接続には、クレイドル（cradle；ゆりかご）方式が多く用いられている。すなわち、ホストに接続されたクレイドルのＵＳＢコネクタと、モバイル機器のＵＳＢコネクタとを接続することで、ＵＳＢ伝送を可能としている。
【００４８】
これらのＵＳＢコネクタは、物理的な接点を持つ。このため、コネクタの抜き差しにより、コネクタの劣化が進み、品質の高いデータ転送を行えなくなる可能性がある。
【００４９】
上記のような物理的な接点をなくす方法として、ホストとモバイル機器との間で、光を用いた空間伝送を行う技術がある。このような技術は、例えば、特許文献１に記載されている。
【特許文献１】特開２０００−２８４８７２号公報（公開日；２０００年１０月１３日）
【発明の開示】
【発明が解決しようとする課題】
【００５０】
しかしながら、ＵＳＢ２.０のハイスピードモードに完全に対応するためには、４８０Ｍｂｐｓの転送速度を保ちながらデータを空間伝送する必要がある。従って、ホストおよびデバイスに備える光通信部（光学系および送受信部）として、高いＣＤＲ（Clock Data Recovery）性能をもつものが必要となるため、コスト増を招来する。
【００５１】
そこで、このようなコスト増を抑えるために、光通信の転送速度を低くしてＵＳＢ２.０のデータ転送を行うことが考えられる。
【００５２】
図１６は、ホストからホストの光通信部（ホスト光通信部）までの通信を４８０Ｍｂｐｓで、ホスト光通信部からデバイスの光通信部（デバイス光通信部）までの通信を１００Ｍｂｐｓで、さらに、デバイス光通信部からデバイスまでの通信を４８０Ｍｂｐｓで行う場合における、ＳＯＦパケットの送信の様子を示すタイミングチャートである。なお、このＳＯＦパケットの送信は、バスがリセットされていないことをデバイスに示すためのものである。
【００５３】
図１６に示すように、Ｔ６０１において、ホストから送信されたＳＯＦパケットは、ホスト光通信部で光信号に変換され、デバイス光通信部に送信される。デバイス光通信部は、ＳＯＦパケットを受信すると、デバイスに対し、ＳＯＦパケットをリピート送信する。また、ホストは、デバイスからの返信を待たずに、１２５ｕｓ後のＴ６０２において、新たなＳＯＦパケットを再送信する。
【００５４】
しかしながら、このような構成では、光通信部間の転送速度が遅いため、ＳＯＦパケット送信にかかる時間が、ＵＳＢ２.０の本来の（ネイティブの）時間に比べて長くなる。さらに、ＳＯＦパケットは、通信速度によらず、１２５ｕｓごとに、優先的に送信される。このため、ＳＯＦパケットの送信による光通信帯域の占有率が上昇して、他のパケットを送信するための帯域が減ってしまい、ホスト−デバイス間の通信効率が著しく低下してしまうという問題があった。
【００５５】
本発明は、上記のような従来の問題点に鑑みてなされたものである。そして、その目的は、ＵＳＢ規格における本来の通信速度よりも低速な通信路（例えば１００Ｍｂｐｓの光通信路）を用いた場合でも、通信効率の低下を抑制することの可能なＵＳＢシステムを提供することにある。
【課題を解決するための手段】
【００５６】
上記の目的を達成するために、本発明のデバイス側コントローラ（本デバイス側コントローラ）は、ＵＳＢシステムのデバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラにおいて、ホストとデバイスとの接続が確立された後、ＳＯＦパケットをデバイスに送信するデバイス側制御部を備えていることを特徴としている。
【００５７】
また、本発明のホスト側コントローラ（本ホスト側コントローラ）は、ホストと、デバイスと、本デバイス側コントローラとを備えたＵＳＢシステムのホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラにおいて、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避するホスト側制御部を備えていることを特徴としている。
【００５８】
また、本発明のＵＳＢシステム（本システム）は、本デバイス側コントローラと、本ホスト側コントローラとを備えたシステムである。また、本デバイス側コントローラでは、上記デバイス側制御部は、ＳＯＦパケットを、所定周期でデバイスに送信するように設定されていることが好ましい。
【００５９】
また、この場合、ホスト側コントローラのホスト側制御部は、ホストから所定時間以上パケットを受信しなかった場合、リセット通知信号をデバイス側コントローラに送信し、上記デバイス側コントローラのデバイス側制御部は、リセット通知信号の受信に応じて、デバイスに対するＳＯＦパケットの送信を停止するように設定されていることが好ましい。
【００６０】
また、デバイス側コントローラのデバイス側制御部は、デバイスに対してＳＯＦパケット以外の他のパケットを送信する際、この送信に応じて実行されるデバイスとの通信中に、ＳＯＦパケットの送信タイミングが訪れることを回避するように、送信タイミングを調整するように設定されていることが好ましい。
【００６１】
また、この場合、デバイス側制御部は、ホスト側コントローラから受信したＯＵＴパケットあるいはＳＥＴＵＰパケットとＤＡＴＡパケットとをデバイスに送信する際、ＤＡＴＡパケットのサイズに基づいて、上記の送信タイミングを調整することが好ましい。
【００６２】
また、本システムでは、上記のホスト側制御部が、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、ＳＯＦパケットを受信したことを示すＳＯＦ受信通知信号をデバイス側に送信するとともに、上記デバイス側制御部が、ＳＯＦ受信通知信号の受信に応じて、ＳＯＦパケットをデバイスに送信するように設定されていてもよい。
【００６３】
また、本システムでは、ホスト側コントローラおよびデバイス側コントローラが、両コントローラ間の通信速度を設定する速度設定部を備えていることが好ましい。また、速度設定部により、コントローラ間の通信速度が所定値以上に設定された場合、ホスト側コントローラのホスト側制御部が、ホストから受信したＳＯＦパケットをデバイス側に送信する一方、上記デバイス側コントローラのデバイス側制御部が、ホスト側コントローラから受信したＳＯＦパケットをデバイスに送信するように設定されていてもよい。
【００６４】
また、上記ホスト側制御部およびデバイス側制御部の少なくとも一方が、両コントローラ間でのパケットの送受信におけるエラーレートを算出し、このエラーレートが所定値以上となった場合に、上記速度設定部が、コントローラ間の通信速度を低下させるように設定されていることが好ましい。
【００６５】
また、本システムでは、両コントローラ間の通信経路における通信方式が、全二重通信であることが好ましい。また、両コントローラ間の通信経路は、光ケーブルによって形成されていてもよい。さらに、両コントローラ間の通信は、光無線通信、あるいは、電波を用いた無線通信によってなされてもよい。
【００６６】
また、本発明のパケット通信方法（本通信方法）は、ＵＳＢシステムにおけるホストとデバイスとの間でパケットを通信するパケット通信方法において、ホストに備えられたホスト側コントローラのホスト側制御部によって、ホストから送信されたＳＯＦパケットをデバイス側に転送することを回避する送信回避工程と、デバイスに備えられたデバイス側コントローラのデバイス側制御部によって、ＳＯＦパケットをデバイスに送信する送信工程とを含む方法である。
【００６７】
また、本発明のパケット通信プログラムは、ＵＳＢシステムのホストに備えられたコンピューターに、本通信方法の送信回避工程を実行させるとともに、ＵＳＢシステムのデバイスに備えられたコンピューターに、本システムの送信工程を実行させるプログラムである。また、本発明の記録媒体は、このパケット通信プログラムを記録した記録媒体である。
【００６８】
また、本発明の第２ＵＳＢシステムは、ホストと、デバイスと、ホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを含むＵＳＢシステムにおいて、コントローラ間のデータ転送を光通信で行うように設定されており、さらに、この光通信のデータ転送速度が、ＵＳＢ２．０におけるハイスピードモードでのデータ転送速度より遅くなっていることを特徴とするシステムである。
【００６９】
また、本発明の第１通信コントローラ（本第１通信コントローラ）は、ホストとデバイスとの間の通信を中継し、ホスト側コントローラとしての機能とデバイス側コントローラとしての機能とを備えている通信コントローラにおいて、通信コントローラがデバイス側コントローラとして機能している時、ホストとデバイスとの接続が確立された後、ＳＯＦパケットをデバイスに送信する通信制御部を備えていることを特徴とする通信コントローラである。
【００７０】
また、本発明の第２通信コントローラ（本第２通信コントローラ）は、ホストとデバイスとの間の通信を中継し、ホスト側コントローラとしての機能とデバイス側コントローラとしての機能とを備えている通信コントローラにおいて、通信コントローラがホスト側コントローラとして機能している時、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避する通信制御部を備えていることを特徴とする通信コントローラである。
【００７１】
また、本第１通信コントローラは、通信コントローラがホスト側コントローラとして機能している時、上記通信制御部は、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避するようにしてもよい。
【００７２】
また、本第１通信コントローラは、通信コントローラがデバイス側コントローラとして機能している時、上記通信制御部は、ＳＯＦパケットを、所定周期でデバイスに送信するように設定されていてもよい。
【００７３】
また、本第１通信コントローラは、通信コントローラがデバイス側コントローラとして機能している時、上記通信制御部は、デバイスに対してＳＯＦパケット以外の他のパケットを送信する際、この送信に応じて実行されるデバイスとの通信中に、ＳＯＦパケットの送信タイミングが訪れることを回避するように、送信タイミングを調整してもよい。
【００７４】
また、本第１通信コントローラは、通信コントローラがデバイス側コントローラとして機能している時、上記通信制御部は、ホスト側コントローラから受信したＯＵＴパケットあるいはＳＥＴＵＰパケットとＤＡＴＡパケットとをデバイスに送信する際、ＤＡＴＡパケットのサイズに基づいて、上記の送信タイミングを調整してもよい。
【００７５】
また、本発明の第３ＵＳＢシステムは、ホストと、デバイスと、上述した第１通信コントローラとを備えたＵＳＢシステムである。
【発明の効果】
【００７６】
本発明のデバイス側コントローラは（本デバイス側コントローラ）は、ＵＳＢシステムのデバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラにおいて、ホストとデバイスとの接続が確立された後、所定周期でＳＯＦパケットをデバイスに送信するデバイス側制御部を備えていることを特徴とするものである。
【００７７】
本デバイス側コントローラは、ＵＳＢシステムに適用されるものである。ここで、ＵＳＢシステムとは、ホストコンピューター（ホスト）と、その周辺機器（デバイス；ＵＳＢファンクション）との間におけるＵＳＢ通信（ＵＳＢ規格に沿ったデータ通信）を実現するための通信システムである。
【００７８】
そして、本デバイス側コントローラは、ＵＳＢシステムのデバイスに備えられ、ホストとデバイスとの間の通信を中継するものである。すなわち、本デバイス側コントローラは、デバイスから送信されるパケットを受信してホストに送信する一方、デバイスに送信されたパケットを受信してデバイスに伝達する機能を有している。ここで、パケットとは、ＵＳＢシステムで通信されるデータの基本単位である。
【００７９】
また、ＵＳＢシステムでは、パケットの１つであるＳＯＦパケットを、他のパケットに優先させて、ホストからデバイスに対して送信するように規定されている。そして、本デバイス側コントローラには、このＳＯＦパケットを自ら作成し、デバイスに送信するデバイス側制御部を備えている。
【００８０】
これにより、本デバイス側コントローラを用いれば、ホストと本デバイス側コントローラとの間でＳＯＦパケットの送受信を実行する必要がない（すなわち、ホスト側からデバイスに向けてＳＯＦパケットを送信する必要がない）。このため、ホストと本デバイス側コントローラとの間の通信経路を、ＳＯＦパケット以外の、他のパケットのためだけに利用できる。従って、これら他のパケットの通信効率を向上させられる。
【００８１】
また、本発明のＵＳＢシステム（本システム）は、ホストおよびデバイスに加えて、本デバイス側コントローラを含んだＵＳＢシステムである。このようなシステムを構築すれば、パケットの通信効率を向上することが可能となる。また、本システムに、以下に示すような本ホスト側コントローラを備えることも好ましい。本ホスト側コントローラは、ホストに備えられ、ホストとデバイスとの間の通信を中継するものである。すなわち、本ホスト側コントローラは、ホストから送信されるパケットを受け取ってデバイスに送信するとともに、ホストに向けて送信されたパケットを受信して、ホストに伝達するものである。
【００８２】
このように、本システムに、ホスト，本ホスト側コントローラ，本デバイス側コントローラ，デバイスを備える場合、通信経路は、この順に沿って形成されることとなる。すなわち、ホストとデバイスとの間の通信を、両コントローラが中継するように設定される。
【００８３】
また、特に、本ホスト側コントローラには、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避するホスト側制御部を備えることが好ましい。これにより、本システムでは、ホストからデバイスに向けてＳＯＦパケットを送信しても、このＳＯＦパケットを本ホスト側コントローラで止められるため、これより先に送信されることがない。従って、上記した本デバイス側コントローラと併用することで、コントローラ間の通信効率を容易に向上させられる。
【００８４】
なお、上記した２つのコントローラを備えた本システムは、ホストとデバイスとの間に、通信速度（データ転送速度）の遅い（ＵＳＢの規格に沿った通常の速度（通常速度；例えばＨＳでの４８０Ｍｂｐｓ）より遅い）通信経路が形成されている場合に、特に有効である。すなわち、通常、ホストは、ＳＯＦパケットを一定周期でデバイスに送信する。このため、通信速度の遅いときには、ＳＯＦパケットによって、通信経路の多くが占有されてしまい、他のパケットの通信効率を悪化させてしまう。
【００８５】
そこで、このような場合に、ホストおよびデバイスに、通常速度で通信可能なように両コントローラを接続すれば、コントローラ間でのＳＯＦパケットの送受信を不要とできる。従って、コントローラ間の通信速度の遅い場合でも、他のパケットに関する通信効率の悪化を抑制させられる。
【００８６】
なお、本ホスト側コントローラは、ホストに直接に接続されても、また、ＵＳＢハブのダウンストリーム側のポートに接続されてもよい。さらに、ホストあるいはＵＳＢハブの一部として構成されてもよい。また、本デバイス側コントローラは、デバイスに直接に接続されても、ＵＳＢハブのアップストリーム側のポートに接続されてもよい。さらに、デバイスあるいはＵＳＢハブの一部として構成されてもよい。
【００８７】
また、本システムでは、デバイス側制御部は、ＳＯＦパケットを、所定周期で（自主的に）デバイスに送信することが好ましい。これにより、外部から何らのきっかけ（合図）がなくとも、ＳＯＦパケットをデバイスに送信できる。
【００８８】
また、この場合、ホスト側制御部は、ホストから所定時間以上パケットを受信しなかった場合、「ホストがデバイスのバスをリセットしようとしている」と認識し、リセット通知信号をデバイス側コントローラに送信するように設定されていることが好ましい。そして、デバイス側制御部が、リセット通知信号を受けたときに、デバイスに対するＳＯＦパケットの送信を停止することが好ましい。これにより、デバイスのバスリセットを容易に行える。
【００８９】
また、本システムでは、デバイス側制御部は、ＩＮトランザクション，ＯＵＴトランザクション，ＳＥＴＵＰトランザクション時など、デバイスに対してＳＯＦパケット以外の他のパケットを送信することも多い。また、他のパケットをデバイスに送信すると、デバイスから返信を受けることもある。
【００９０】
従って、所定周期でＳＯＦパケットをデバイスに送信する場合、デバイス側制御部は、他のパケットの送信に応じて実行されるデバイスとの通信中に、ＳＯＦパケットの送信タイミングが訪れることを回避するように、他のパケットの送信タイミングを調整することが好ましい。
【００９１】
このような調整では、デバイス側制御部は、他のパケットの送信に応じてなされるデバイスとの通信に、最大でどの程度の時間（通信完了時間）がかかるか、を見積もる。そして、見積もった通信完了時間の過ぎるまでに、ＳＯＦパケットの送信タイミングが訪れないときには、他のパケットをデバイスに送信する。一方、通信完了時間の過ぎるまでにＳＯＦパケットの送信タイミングが訪れてしまう場合、デバイス側制御部は、他のパケットの送信を、ＳＯＦパケットの送信後に行うこととなる。このような調整を行うことで、他のパケットの送受信によってＳＯＦパケットの送信が妨げられてしまうことを回避できる。
【００９２】
また、デバイス側制御部は、ＯＵＴトランザクション，ＳＥＴＵＰトランザクション時では、ホスト側から送信された、ＯＵＴパケットあるいはＳＥＴＵＰパケットと、ＤＡＴＡパケットとを、デバイスに送信する。そして、デバイスから、ＡＣＫパケットを受信することとなる。従って、デバイス側制御部は、デバイスに送信するＤＡＴＡパケットのサイズ（パケット長）を、送信前に知ることが可能である。従って、このサイズに基づいて、上記の通信完了時間を見積もることで、正確な見積もりが可能となる。
【００９３】
また、デバイス側制御部は、外部（ホスト側コントローラ）からの合図によって、ＳＯＦパケットをデバイスに送信するように設定されていてもよい。すなわち、この構成では、ホスト側制御部は、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、ＳＯＦパケットを受信したことを示すＳＯＦ受信通知信号をデバイス側に送信する。そして、デバイス側制御部が、ＳＯＦ受信通知信号の受信に応じて、ＳＯＦパケットをデバイスに送信するように設定される。
【００９４】
この構成では、ホスト側制御部が、ＳＯＦパケットより転送速度の著しく早いＳＯＦ受信通知信号をデバイス側コントローラに送信することで、デバイス側側制御部に対し、ＳＯＦパケットの送信タイミングを伝達するようになっている。従って、この構成でも、コントローラ間でＳＯＦパケットを送受信する構成に比して、ＳＯＦパケット以外の他のパケットの通信効率を向上させられる。
【００９５】
また、本システムでは、本ホスト側コントローラおよび本デバイス側コントローラが、両コントローラ間の通信速度を設定する速度設定部をそれぞれ備えていることが好ましい。この速度設定部は、各コントローラに備えられ、コントローラ間の通信の開始時に、通信速度の設定（スピードネゴシエーション）を行うものである。
【００９６】
また、この構成では、速度設定部によってコントローラ間の通信速度が所定値以上に設定された場合、ホスト側制御部およびデバイス側制御部は、ＳＯＦパケットの通信を通常のＵＳＢ通信に沿って行うように設定されていてもよい。すなわち、この場合、ホスト側制御部が、ホストから受信したＳＯＦパケットをデバイス側に送信する一方、デバイス側制御部が、受信したＳＯＦパケットをデバイスに送信するように設定されていてもよい。
【００９７】
ここで、上記の所定値とは、例えば、上記した通常速度（ＵＳＢの規格に沿った通常の速度）程度の、ＳＯＦパケットを送信しても通信に支障のない速度に応じた値である。すなわち、この構成では、コントローラ間の通信速度が所定値以上の場合、ホスト側制御部は、ホストから受信したＳＯＦパケットをそのままデバイス側に送信する。そして、デバイス側制御部が、受信したＳＯＦパケットをデバイスに伝達することとなる。
【００９８】
このように、コントローラ間の通信速度をある程度速くできる場合には、コントローラ間でＳＯＦパケットを送受信しても、この間での通信帯域におけるＳＯＦパケットの占有率を、通常程度に低く抑えられる。このため、ＳＯＦパケットの送受信によって、他のパケットの通信効率を悪化させることはない。
【００９９】
また、本システムでは、速度設定部による通信速度の設定後、ホスト側制御部およびデバイス側制御部の少なくとも一方（あるいは速度設定部）が、コントローラでのパケット送受信におけるエラーレートを算出することが好ましい。ここで、エラーレートとは、エラーの発生回数を、送受信回数で割った値（エラー発生率）である。また、この場合、速度設定部は、エラーレートが所定値以上となった場合に、コントローラ間の通信速度を低下させることが好ましい。これにより、通信速度の高すぎることに起因するエラーレートを低下させられる。
【０１００】
また、本システムでは、両コントローラ間の通信経路における通信方式が、全二重通信であることが好ましい。これにより、半二重通信において必要なプリアンブルをなくすことが可能となるため、コントローラ間の通信効率を向上させられる。
【０１０１】
また、本システムでは、両コントローラ間の通信経路を、光ケーブル（光ファイバー）によって形成してもよい。これにより、パケットの長距離伝送が可能となる。
【０１０２】
また、両コントローラ間の通信を、光無線通信、あるいは、電波を用いた無線通信によって行ってもよい。また、無線通信（空間通信）を用いる場合には、ケーブルレスのため、利便性（コントローラの配置自由度など）を向上させられる。
【０１０３】
また、本発明のパケット通信方法（本通信方法）は、ＵＳＢシステムにおけるホストとデバイスとの間でパケットを通信するパケット通信方法において、ホストに備えられたホスト側コントローラのホスト側制御部によって、ホストから送信されたＳＯＦパケットをデバイス側に転送することを回避する送信回避工程と、デバイスに備えられたデバイス側コントローラのデバイス側制御部によって、ＳＯＦパケットをデバイスに送信する送信工程とを含む方法である。
【０１０４】
本通信方法は、上記した本システムにおいて用いられている通信方法である。従って、本通信方法を用いれば、コントローラ間の通信効率を容易に向上させられる。
【０１０５】
また、本発明のパケット通信プログラムは、ＵＳＢシステムのホストに備えられたコンピューターに、本通信方法の送信回避工程を実行させるとともに、ＵＳＢシステムのデバイスに備えられたコンピューターに、本通信方法の送信工程を実行させるためのプログラムである。
【０１０６】
上記のようなコンピューターにこのプログラムを読み込ませることで、本通信方法の送信回避工程および送信工程を、そのコンピューターによって実現することが可能となる。また、このプログラムをコンピューターによって読取可能な記録媒体に記録させておくことで、プログラムの保存・流通を容易に行えるようになる。
【０１０７】
また、本発明の第２ＵＳＢシステムは、ホストと、デバイスと、ホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを含むＵＳＢシステムにおいて、コントローラ間のデータ転送を光通信で行うように設定されており、さらに、この光通信のデータ転送速度が、ＵＳＢ２．０におけるハイスピードモード（ＨＳ）でのデータ転送速度（４８０Ｍｂｐｓ）より遅く（例えば１００Ｍｂｐｓ）なっていることを特徴とするシステムである。
【０１０８】
ここで、コントローラ間における光通信のデータ転送速度を、ＨＳと同様の４８０Ｍｂｐｓとする場合、例えば８Ｂ１０Ｂの変調方式を用いると、４８０×１０／８＝６００Ｍｂｐｓの帯域を持った光送信機，光受信機（光トランシーバー）が必要である。そして、このような光送信機を得るためには、ＬＤ（レーザーダイオード）を用いる必要がある。
【０１０９】
一方、コントローラ間の光通信におけるデータ転送速度を１００Ｍｂｐｓとする場合、光送信機を、ＬＥＤ（発光ダイオード）を用いて構成できる。そして、ＬＤとＬＥＤを比較すると、圧倒的にＬＥＤの方が安価である。従って、コントローラ間の光通信の速度を遅くすることで、コントローラを低コストで構成できる。また、各コントローラの必要とする帯域を、６００Ｍｂｐｓから１００Ｍｂｐｓへと著しく低くできるので、各コントローラをさらに安価に製造できる。
【０１１０】
なお、デバイスとして、データ転送速度の遅いもの（例えばフラッシュメモリ；５０Ｍｂｐｓ程度）を用いる場合、トランザクションの完了に要する時間は、デバイスの転送速度に大きく依存する。従って、コントローラ間のデータ転送速度については、デバイスの速度より速くすれば、トランザクションの完了時間に大きな影響を与えることはないといえる。このため、コントローラ間における光通信のデータ転送速度を、デバイスのデバイス転送速度よりも速くすることが好ましい。
【０１１１】
また、本発明の通信コントローラ（本通信コントローラ）は、ホストとデバイスとの間の通信を中継し、ホスト側コントローラとしての機能とデバイス側コントローラとしての機能とを備えている通信コントローラにおいて、通信コントローラがデバイス側コントローラとして機能している時、ホストとデバイスとの接続が確立された後、ＳＯＦパケットをデバイスに送信する通信制御部を備えていることを特徴とするものである。
【０１１２】
本通信コントローラは、ＵＳＢシステムに適用されるものである。ここで、ＵＳＢシステムとは、ホストコンピューター（ホスト）と、その周辺機器（デバイス；ＵＳＢファンクション）との間におけるＵＳＢ通信（ＵＳＢ規格に沿ったデータ通信）を実現するための通信システムである。
【０１１３】
そして、本通信コントローラは、ホストとデバイスとの間の通信を中継するものである。すなわち、本通信コントローラは、デバイス側コントローラとして機能しているとき、デバイスから送信されるパケットを受信してホストに送信する一方、デバイスに送信されたパケットを受信してデバイスに伝達する機能を有している。ここで、パケットとは、ＵＳＢシステムで通信されるデータの基本単位である。
【０１１４】
また、ＵＳＢシステムでは、パケットの１つであるＳＯＦパケットを、他のパケットに優先させて、ホストからデバイスに対して送信するように規定されている。そして、本通信コントローラは、このＳＯＦパケットを自ら作成し、デバイスに送信する通信制御部を備えている。
【０１１５】
これにより、本通信コントローラを用いれば、ホストと本通信コントローラとの間でＳＯＦパケットの送受信を実行する必要がない（すなわち、ホスト側からデバイスに向けてＳＯＦパケットを送信する必要がない）。このため、ホストと通信コントローラとの間の通信経路を、ＳＯＦパケット以外の、他のパケットのためだけに利用できる。従って、これら他のパケットの通信効率を向上させられる。
【０１１６】
また、本発明のＵＳＢシステム（本システム）は、ホストおよびデバイスに加えて、本通信コントローラを含んだＵＳＢシステムである。このようなシステムを構築すれば、パケットの通信効率を向上することが可能となる。
【０１１７】
また、本通信コントローラは、ホスト側コントローラとしても機能することができる。すなわち、本通信コントローラは、ホスト側コントローラとして機能しているとき、ホストから送信されるパケットを受け取ってデバイスに送信するとともに、ホストに向けて送信されたパケットを受信して、ホストに伝達する。
【０１１８】
このように、本システムに、ホスト，ホスト側コントローラとして機能する本通信コントローラ，デバイス側コントローラとして機能する本通信コントローラ，デバイスを備える場合、通信経路は、この順に沿って形成されることとなる。すなわち、ホストとデバイスとの間の通信を、２つの通信コントローラが中継するように設定される。
【０１１９】
また、特に、本通信コントローラの通信制御部は、通信コントローラがホスト側コントローラとして機能している時、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避することが好ましい。これにより、本システムでは、ホストからデバイスに向けてＳＯＦパケットを送信しても、このＳＯＦパケットを本通信コントローラで止められるため、これより先に送信されることがない。従って、通信コントローラ間の通信効率を容易に向上させられる。
【０１２０】
すなわち、本通信コントローラは、ホストとデバイスとの間の通信を中継し、ホスト側コントローラとしての機能とデバイス側コントローラとしての機能とを備えている通信コントローラにおいて、通信コントローラがホスト側コントローラとして機能している時、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避する通信制御部を備えているものであるともいえる。
【０１２１】
なお、本通信コントローラを備えた本システムは、ホストとデバイスとの間に、通信速度（データ転送速度）の遅い（ＵＳＢの規格に沿った通常の速度（通常速度；例えばＨＳでの４８０Ｍｂｐｓ）より遅い）通信経路が形成されている場合に、特に有効である。すなわち、通常、ホストは、ＳＯＦパケットを一定周期でデバイスに送信する。このため、通信速度の遅いときには、ＳＯＦパケットによって、通信経路の多くが占有されてしまい、他のパケットの通信効率を悪化させてしまう。
【０１２２】
そこで、このような場合に、ホストおよびデバイスに、通常速度で通信可能なように通信コントローラを接続すれば、コントローラ間でのＳＯＦパケットの送受信を不要とできる。従って、コントローラ間の通信速度の遅い場合でも、他のパケットに関する通信効率の悪化を抑制させられる。
【０１２３】
なお、本通信コントローラは、ホストに直接に接続されても、また、ＵＳＢハブのダウンストリーム側のポートに接続されてもよい。さらに、ホストあるいはＵＳＢハブの一部として構成されてもよい。この場合、本通信コントローラは、ホスト側コントローラとして機能できる。また、本通信コントローラは、デバイスに直接に接続されても、ＵＳＢハブのアップストリーム側のポートに接続されてもよい。さらに、デバイスあるいはＵＳＢハブの一部として構成されてもよい。この場合、本通信コントローラは、デバイス側コントローラとして機能できる。
【０１２４】
このように、本通信コントローラは、ホスト側コントローラとしての機能を有しているとともに、デバイス側コントローラとしての機能も有している。この構成により、ＵＳＢシステムにおいて、１つの通信コントローラを、ホスト側コントローラとしても、デバイス側コントローラとしても使用できる。
【０１２５】
したがって、１種類の通信コントローラを、ホストおよびデバイスにそれぞれ備えるだけで、本システムを構築できる。すなわち、２種類のコントローラを用意することなくシステムを構築できるため、システムの構築をより簡便にできる。
【０１２６】
また、本通信コントローラは、ＵＳＢシステムに接続された各種情報機器が、機器の置かれた状況に応じてホストとしてもデバイスとしても機能するシステムに用いることができる。なお、このようなＵＳＢシステムとして、例えば、近年、規格化されたＵＳＢ−ＯＴＧ（ＵＳＢ−Ｏｎ  Ｔｈｅ  Ｇｏ）がある。
【０１２７】
ＵＳＢ−ＯＴＧは、これまでＵＳＢシステムを介してホスト（パーソナルコンピュータ等）に接続されていたデバイス（周辺機器）に、ホストとしての機能を持たせることができる規格である。したがって、ＵＳＢ−ＯＴＧ規格に従ったＵＳＢシステムでは、ＵＳＢ１．ｘ規格やＵＳＢ２．０規格では不可能である、デバイス同士の接続によるデータ転送が可能となる。
【０１２８】
例えば、本通信コントローラを用いてＵＳＢシステムを組めば、デジタルカメラとプリンタとを直接に接続して、デジタルカメラをホストとして、プリンタをデバイスとして機能させることができる。これにより、ホストであるデジタルカメラから、デバイスであるプリンタにデータを転送することができる。
【０１２９】
すなわち、本通信コントローラを備えているＵＳＢシステムでは、パーソナルコンピュータをホストとして組み込まなくても、デジタルカメラの画像をプリンタによって直接的に印刷することができる。また、デジタルカメラやデジタルビデオカメラを、ハードディスク等のストレージ装置に直接的に接続し、データをこのストレージ装置に転送することによって、データを保存することが可能になる。
【０１３０】
また、本通信コントローラがデバイス側コントローラとして機能している時、通信制御部は、ＳＯＦパケットを、所定周期でデバイスに送信するように設定されていてもよい。これにより、通信コントローラは、外部から何らのきっかけ（合図）がなくとも、ＳＯＦパケットをデバイスに送信できる。
【０１３１】
また、本通信コントローラがデバイス側コントローラとして機能している時、通信制御部は、デバイスに対してＳＯＦパケット以外の他のパケットを送信する際、この送信に応じて実行されるデバイスとの通信中に、ＳＯＦパケットの送信タイミングが訪れることを回避するように、送信タイミングを調整してもよい。
【０１３２】
このような調整では、通信制御部は、他のパケットの送信に応じてなされるデバイスとの通信に、最大でどの程度の時間（通信完了時間）がかかるか、を見積もる。そして、見積もった通信完了時間の過ぎるまでに、ＳＯＦパケットの送信タイミングが訪れないときには、他のパケットをデバイスに送信する。一方、通信完了時間の過ぎるまでにＳＯＦパケットの送信タイミングが訪れてしまう場合、通信制御部は、他のパケットの送信を、ＳＯＦパケットの送信後に行うこととなる。このような調整を行うことで、他のパケットの送受信によってＳＯＦパケットの送信が妨げられてしまうことを回避できる。
【０１３３】
また、本通信コントローラがデバイス側コントローラとして機能している時、通信制御部は、ホスト側コントローラから受信したＯＵＴパケットあるいはＳＥＴＵＰパケットとＤＡＴＡパケットとをデバイスに送信する際、ＤＡＴＡパケットのサイズに基づいて、上記の送信タイミングを調整してもよい。
【０１３４】
この場合、通信制御部は、ＯＵＴトランザクション，ＳＥＴＵＰトランザクション時では、ホスト側から送信された、ＯＵＴパケットあるいはＳＥＴＵＰパケットと、ＤＡＴＡパケットとを、デバイスに送信する。そして、デバイスから、ＡＣＫパケットを受信することとなる。従って、通信制御部は、デバイスに送信するＤＡＴＡパケットのサイズ（パケット長）を、送信前に知ることが可能である。従って、このサイズに基づいて、上記の通信完了時間を見積もることで、正確な見積もりが可能となる。
【０１３５】
また、本発明のＵＳＢシステムを、ホストと、デバイスと、本通信コントローラとを備えたＵＳＢシステムとすることもできる。
【発明を実施するための最良の形態】
【０１３６】
本発明の一実施形態について説明する。本実施の形態にかかるＵＳＢシステムは、ホストコンピューター（ホスト）と、その周辺機器（デバイス）との間におけるＵＳＢ通信（ＵＳＢ２．０を用いたデータ通信）を実現するための通信システムである。
【０１３７】
図１は、本システムの構成を示すブロック図である。この図に示すように、本システムは、ホスト１０，ホスト側コントローラ１１，デバイス側コントローラ１２，デバイス１３を備えた構成である。
【０１３８】
ホスト（ＵＳＢホスト）１０は、本システムの親機となるパーソナルコンピューターであり、全てのＵＳＢ通信を制御するものである。また、デバイス（ＵＳＢファンクション，ＵＳＢデバイス）１３は、ホスト１０と通信を行う子機（ノード）であり、プリンターやＤＶＤドライバーなど、ホストの周辺機器として機能するものである。
【０１３９】
ホスト側コントローラ１１は、ＵＳＢケーブルによってホスト１０と接続されており、ホスト１０と外部（デバイス１３）との間のＵＳＢ通信を中継するものである。すなわち、ホスト側コントローラ１１は、ホスト１０から送信されるパケットを受け取って外部に送信するとともに、ホスト１０に向けて送信されたパケットを受信して、ホスト１０に伝達するものである。
【０１４０】
デバイス側コントローラ１２は、ＵＳＢケーブルによってデバイス１３と接続されており、デバイス１３とホスト１０との間のＵＳＢ通信を中継するものである。すなわち、デバイス側コントローラ１２は、デバイス１３から送信されるパケットを受け取ってホスト１０に送信するとともに、デバイス１３に向けて送信されたパケットを受信して、デバイス１３に伝達するものである。
【０１４１】
また、本システムでは、コントローラ１１・１２間を、ＵＳＢ対応の光無線通信によって接続している。すなわち、本システムでは、ホスト１０とデバイス１３との間のＵＳＢ通信を、コントローラ１１・１２による光無線通信を介して実行するようになっている。なお、コントローラ１１・１２間の光無線通信におけるデータ転送速度は、１００Ｍｂｐｓであり、ＵＳＢ２．０のハイスピードモード（ＨＳ）時におけるデータ転送速度（４８０Ｍｂｐｓ）よりも低速である。
【０１４２】
ここで、本システムの特徴的な構成である、コントローラ１１・１２の構成について説明する。図１に示すように、ホスト側コントローラ１１は、ＵＳＢ受信機２０，送信ＦＩＦＯ２１，変調回路２２，光送信機２３，光受信機２４，復調回路２５，受信ＦＩＦＯ２６，ＵＳＢ送信機２７，エラー検出回路２８，タイマー２９，スピードネゴシエーションステートマシン（ＳＮＳＭ）３０，ＳＯＦ判別回路３１およびホスト側ステートマシン（ホストＳＭ）３２を備えた構成である。
【０１４３】
一方、デバイス側コントローラ１２は、ホスト側コントローラ１１の有する上記の部材２０〜３０、および、デバイス側ステートマシン（デバイスＳＭ）４２を備えた構成である。
【０１４４】
ＵＳＢ受信機２０は、ホスト１０あるいはデバイス１３とＵＳＢケーブルで接続されており、これらから送信されるＵＳＢ信号（パケットを含む信号）を受信する（受け取る）ものである。
【０１４５】
送信ＦＩＦＯ２１は、ＵＳＢ受信機２０の受信したパケットを一時的に保存するものである。すなわち、上記したように、コントローラ１１・１２間の通信速度（１００Ｍｂｐｓ）は、ＵＳＢケーブルでの最高通信速度（ＨＳ；４８０Ｍｂｐｓ）よりも低速である。このため、送信ＦＩＦＯ２１は、パケットを光通信によって転送（リピート）する際のタイミング調整に用いられる。
【０１４６】
変調回路２２は、光通信によって外部に送信できるよう、パケットを変調（光変調）するものである。変調回路２２の変調方法としては、例えば、８Ｂ１０Ｂを利用できる。光送信機２３は、変調回路２２によって変調されたパケットを外部に送信するものであり、発光ダイオード装置やレーザー装置から構成される。
【０１４７】
光受信機２４は、外部から受信された、光変調されたパケットを受信するものであり、例えばフォトダイオードから構成される。なお、光受信機２４は、外部から何らかの光信号を受けると、シグナルディテクト信号をホストＳＭ３２（デバイスＳＭ４２）またはＳＮＳＭ３０に送信する。このシグナルディテクト信号は、受信信号の有無を判別するための信号である。復調回路２５は、光受信機２４によって受信されたパケットを、ＵＳＢケーブルで通信可能なように復調するものである。復調回路２５の復調方法としては、例えば、８Ｂ１０Ｂを利用できる。
【０１４８】
受信ＦＩＦＯ２６は、復調されたパケットを一時的に保存するものである。また、受信ＦＩＦＯ２６は、送信ＦＩＦＯ２１と同様に、ＵＳＢケーブルでのデータ送信と、光通信でのデータ受信との速度差を補償するために、パケットをＵＳＢケーブルによって転送（リピート）する際のタイミング調整に用いられる。
【０１４９】
エラー検出回路２８は、復調回路２５によって復調されたパケットにエラーがあるか否かを判別する回路である。ＵＳＢ送信機２７は、ホスト１０あるいはデバイス１３とＵＳＢケーブルで接続されており、これらに対し、受信ＦＩＦＯ２６に保存されたパケット（パケットを含むＵＳＢ信号）を送信するものである。タイマー２９は、ホストＳＭ３２あるいはデバイスＳＭ４２に使用されるタイマー（時間計測器）である。ＳＮＳＭ（速度設定部）３０は、後述するスピードネゴシエーションを行うための制御部である。
【０１５０】
ホスト側コントローラ１１のＳＯＦ判別回路（ホスト側制御部）３１は、ＵＳＢ受信機２０によって受信されたパケットが、ＳＯＦパケットであるか否かを判別する回路である。ホストＳＭ（ホスト側制御部）３２は、ホスト側コントローラ１１の全処理を制御する、コントローラ１１の中枢部である。
【０１５１】
同様に、デバイス側コントローラ１２のデバイスＳＭ（デバイス側制御部）４２は、コントローラ１２の全処理を制御する中枢部として機能する。
【０１５２】
ここで、本システムのデータ通信動作について説明する。まず、デバイス１３の接続時の動作について説明する。コントローラ１１・１２を介してデバイス１３が本システムに接続されたとき、まず、ホスト１０は、デバイス１３の電源を検出する。これは、ＵＳＢケーブルの４本の信号線（Ｄ＋，Ｄ−，電源（ＶＢＵＳ）、ＧＮＤ）を流れる信号のうちの、ＶＢＵＳ信号を確認することでなされる。
【０１５３】
次に、ホスト１０は、デバイス１３のスピード（対応しているモード）を検出する。そしてフルスピードモード（ＦＳ）、あるいは、ハイスピードモード（ＨＳ）に対応している場合、ホスト１０は、Ｄ＋の信号をプルアップする。一方、ロースピードモード（ＬＳ）のみに対応の場合は、ホスト１０は、Ｄ−の信号をプルアップする。なお、以下では、デバイス１３は、ＨＳに対応しているとする。
【０１５４】
次に、ホスト１０は、Ｄ＋信号線およびＤ−信号線を、ともに１０ｍｓ以上、ローレベル（ＳＥ０状態）とし、デバイス１３のバスをリセットする。その後、デバイス１３は、ＨＳ特有の信号（ＣＨＩＲＰと呼ばれる）を、コントローラ１１・１２を介してホスト１０に送信する。また、ホスト１０も、コントローラ１１・１２を介して、デバイス１３に対してＨＳ特有の信号送信を行う。
【０１５５】
これにより、ホストＳＭ３２およびデバイスＳＭ４２は、ホスト１０およびデバイス１３の通信モードがＨＳであることを確認する。その後、ホストＳＭ３２およびデバイスＳＭ４２は、ＳＮＳＭ３０を制御して、コントローラ１１・１２間のスピードネゴシエーション（後述）を行う。これにより、ホスト１０とデバイス１３との接続（バス）が確立される（完了する）。
【０１５６】
デバイス１３が本システムに接続された後、ホスト１０・デバイス１３間では、コントローラ１１・１２を介したデータ転送が実施される。ホスト１０からデバイス１３に向けＵＳＢ信号（パケットを含む信号）が送信されると、この信号は、ホスト側コントローラ１１のＵＳＢ受信機２０に受信される。これを受けて、ホストＳＭ３２は、ＳＯＦ判別回路３１を制御して、受信したパケットがＳＯＦパケットであるか否か、を判別させる。
【０１５７】
そして、ＳＯＦパケットではないと判別された場合、ホストＳＭ３２は、ＵＳＢ信号（パケット）を解析し、パケットを送信ＦＩＦＯ２１に保存する。その後、ホストＳＭ３２は、変調回路２２および光送信機２３を制御して、デバイス側コントローラ１２に対し、受信したパケットを含む光信号を生成・送信させる。
【０１５８】
なお、ＳＯＦパケットではないパケットは、上記したＩＮトランザクション，ＯＵＴトランザクションあるいはＳＥＴＵＰトランザクションの各トランザクションに関し、データ転送等を行うパケットである。なお、本システムでは、各トランザクションに関し、ＵＳＢ２．０において定められたルールによりパケットの生成・送受信を行うが、詳細については説明を割愛する。
【０１５９】
ホスト側コントローラ１１から送信された光信号は、デバイス側コントローラ１２の光受信機２４によって受信される。そして、デバイスＳＭ４２は、復調回路２５を制御して、光信号のパケットを復調させる。そして、デバイスＳＭ４２は、エラー検出回路２８を制御して、復調したパケットにエラーがあるか否か（ＵＳＢ規格に準拠したパケットであるか否か）を判断する。
【０１６０】
そして、デバイスＳＭ４２は、受信したパケットのうち、エラーのないパケットだけを受信ＦＩＦＯ２６に蓄積する。その後、デバイスＳＭ４２は、パケットの全体を受信・復調した後、ＵＳＢ送信機２７を制御して、このパケットを含むＵＳＢ信号を、所定のタイミングでデバイス１３に送信する。
【０１６１】
一方、ホストＳＭ３２は、ホスト側コントローラ１１から受信したパケットがＳＯＦパケットであると判断された場合、このパケットを送信ＦＩＦＯ２１に保存することなく破棄し、デバイス側コントローラ１２への転送（リピート）を取り止める。従って、本システムでは、デバイス側コントローラ１２（デバイス１３）は、ホスト側コントローラ１１（ホスト１０）からＳＯＦパケットを受信しないことなる。
【０１６２】
そして、本システムでは、デバイス側コントローラ１２のデバイスＳＭ４２が、デバイス側コントローラ１２とのネゴシエーションの完了後、タイマー２９を制御して、ＨＳにおけるＳＯＦパケットの送信周期である１２５ｕｓ（micro sec）を計測する。そして、デバイスＳＭ４２は、この周期でＳＯＦパケットを生成して、デバイス１３に対し、１２５ｕｓ周期で送信する。これにより、本システムでは、ＳＯＦパケットを周期的にデバイス１３に送信できる。従って、デバイス側コントローラ１２からＳＯＦパケットを送信しなくても、デバイス１３のバスリセットを回避でき、デバイス１３をアクティブ状態で維持することが可能となる。
【０１６３】
また、デバイス１３からホスト側コントローラ１１に向けてパケットを含むＵＳＢ信号が送信された場合、この信号は、デバイス側コントローラ１２のＵＳＢ受信機２０に受信される。
【０１６４】
そして、デバイスＳＭ４２は、受信したＵＳＢ信号（パケット）を解析し、このデータにおけるエラーの有無を判断する。なお、ここでは、デバイスＳＭ４２は、ＵＳＢ規格に準拠していないパケット、および、デバイス１３からは送信されないはずのパケット（ＳＯＦパケットなど）を、エラーのあるパケットとして認識する。
【０１６５】
そして、デバイスＳＭ４２は、エラーのないパケットだけを送信ＦＩＦＯ２１に蓄積する。その後、デバイスＳＭ４２は、変調回路２２および光送信機２３を制御して、ホスト側コントローラ１１に対し、受信したパケットを含む光信号を生成・送信させる。
【０１６６】
デバイス側コントローラ１２から送信された光信号は、ホスト側コントローラ１１の光受信機２４によって受信される。そして、ホストＳＭ３２は、復調回路２５を制御して、光信号のパケットを復調させる。そして、ホストＳＭ３２は、エラー検出回路２８を制御して、復調したパケットにエラーがあるか否か（ＵＳＢ規格に準拠したパケットであるか否か）を判断する。
【０１６７】
そして、ホストＳＭ３２は、受信したパケットのうち、エラーのないパケットだけを受信ＦＩＦＯ２６に蓄積する。その後、ホストＳＭ３２は、パケットの全体を受信・復調した後、ＵＳＢ送信機２７を制御して、このパケットを含むＵＳＢ信号を、所定のタイミングでホスト側コントローラ１１に送信する。
【０１６８】
以上のように、本システムでは、ホスト側コントローラ１１のホストＳＭ３２が、ホスト１０からデバイス１３に向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避するようになっている。そして、デバイス側コントローラ１２のデバイスＳＭ４２が、ホスト１０とデバイス１３との接続の確立後、所定周期で、ＳＯＦパケットをデバイス１３に送信するようになっている。
【０１６９】
従って、本システムでは、コントローラ１１・１２間でＳＯＦパケットを送信する必要がない。このため、通信速度の遅いコントローラ１１・１２間の通信帯域を、ＳＯＦパケット以外の、他のパケットのためだけに利用できる。従って、これら他のパケットの通信を、ＳＯＦパケットによって妨げることを防止できるので、通信効率を向上させられる。
【０１７０】
ここで、本システムにおいて、デバイス１３のバスをリセットするための処理ついて説明する。図２は、この処理に関する、ホスト側コントローラ１１におけるホストＳＭ３２の動作を示すフローチャート（状態遷移図）である。この図に示すように、ホストＳＭ３２は、ホスト１０からデバイス１３に送信されるＵＳＢ信号（パケット）を受信する度に、タイマー２９をリセットし、その時点からの経過時間を計測する（ステップ（Ｓ）１１・Ｓ１２）。
【０１７１】
そして、タイマー２９の計測時間が所定時間（例えば３ｍｓ）に達したと判断した場合（タイムアウト；Ｓ１３）、ホストＳＭ３２は、ホスト１０がデバイス１３のバスをリセットしようとしていると認識する。その後、ホストＳＭ３２は、光送信機２３を制御して、リセット通知信号をデバイス側コントローラ１２に送信する（Ｓ１４）。
【０１７２】
また、デバイス側コントローラ１２のデバイスＳＭ４２は、リセット通知信号を受けると、ホスト１０がバスをリセットしようとしている、と認識する。そして、デバイスＳＭ４２は、デバイス１３に対するＳＯＦパケットの送信を停止する。これにより、デバイス１３のバスリセットを容易に行える。
【０１７３】
次に、上記したスピードネゴシエーションについて説明する。このスピードネゴシエーションは、コントローラ１１・１２間における、光無線通信のデータ転送速度を決定するための処理である。図３は、この処理の例を示すタイミングチャートである。
【０１７４】
図４は、この処理におけるホスト側コントローラ１１のＳＮＳＭ３０の動作を示す説明図である。また、図５は、この処理におけるデバイス側コントローラ１２のＳＮＳＭ３０の動作を示す説明図である。
【０１７５】
ホスト側コントローラ１１のＳＮＳＭ３０は、Ｔ１２０１において、光送信機２３を制御して、所定の転送速度Ａで、ｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始し、タイマー２９をリスタートさせる（リセット後すぐにスタートさせる）。なお、ｋｅｅｐ＿ｓｐｅｅｄ信号は、転送速度を決めるための送信コード（リクエスト信号）の１つであり、送信先（デバイス側コントローラ１２）に、現在の転送速度を維持することを求める信号である。
【０１７６】
一方、デバイス側コントローラ１２では、このｋｅｅｐ＿ｓｐｅｅｄ信号を受信した光受信機２４が、まず、シグナルディテクト信号をＳＮＳＭ３０に伝達する。これを受けて、ＳＮＳＭ３０が、タイマー２９をリスタートさせるとともに、光送信機２３を制御して、ホスト側コントローラ１１に対するｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始する。また、ＳＮＳＭ３０は、復調回路２５，エラー検出回路２８を制御して、受信したｋｅｅｐ＿ｓｐｅｅｄ信号におけるエラーの有無を判断する。
【０１７７】
そして、図３に示すように、Ｔ１２０３においてホスト側コントローラ１１から送信されたｋｅｅｐ＿ｓｐｅｅｄ信号が、光無線通信路においてピット化けし、デバイス側コントローラが正常に受信できなかった場合、デバイス側コントローラ１２のＳＮＳＭ３０は、Ｔ１２０４において、ｋｅｅｐ＿ｓｐｅｅｄ信号に代えて、ｌｏｗｅｒ＿ｓｐｅｅｄ信号をホスト側コントローラ１１に送信する。
【０１７８】
このｌｏｗｅｒ＿ｓｐｅｅｄ信号は、転送速度を決めるためのリクエスト信号の１つであり、送信先（ホスト側コントローラ１１）に、転送速度を下げるよう求める信号である。ｌｏｗｅｒ＿ｓｐｅｅｄ信号を受信したデバイス側コントローラ１２では、ＳＮＳＭ３０が、現在の転送速度Ａではデバイス転送を正常に行えないとを認識する。そして、デバイス側コントローラ１２に対し、ｌｏｗｅｒ＿ｓｐｅｅｄ信号を送信する（送信コードをｌｏｗｅｒ＿ｓｐｅｅｄに切り替える）。
【０１７９】
デバイス側コントローラ１２のＳＮＳＭ３０は、ホスト側コントローラ１１からｌｏｗｅｒ＿ｓｐｅｅｄ信号を受信することで、自身の送信したｌｏｗｅｒ＿ｓｐｅｅｄ信号がホスト側コントローラ１１に認識されたと判断する。
【０１８０】
そして、所定時間Ｔａの経過後、コントローラ１１・１２のＳＮＳＭ３０は、その時点で送受信されている信号がｌｏｗｅｒ＿ｓｐｅｅｄ信号であるため、転送速度を、例えば半分（Ａ／２）に低下させる。すなわち、ホスト側コントローラ１１のＳＮＳＭ３０が、Ｔ１２０７において、転送速度Ａ／２で、ｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始するとともに、タイマー２９をリスタートさせる。
【０１８１】
一方、デバイス側コントローラ１２のＳＮＳＭ３０も、光受信機２４からのシグナルディテクト信号に応じて、ｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始するとともに、タイマー２９をリスタートさせる。
【０１８２】
そして、コントローラ１１・１２の双方でエラーが検出されずに所定時間Ｔａが経過すると、コントローラ１１・１２のＳＮＳＭ３０は、スピードネゴシエーションの終了信号（終了リクエスト）であるＥｎｄ＿Ｎｅｇｏ信号の送受信を開始する。そして、ＳＮＳＭ３０は、相手機器からのＥｎｄ＿Ｎｅｇｏ信号を受信したときに、スピードネゴシエーションを終了し、アクティブ状態へと遷移する。
【０１８３】
ここで、図４を用いて、ホスト側コントローラ１１におけるＳＮＳＭ３０の動作を説明する。
【０１８４】
ステートＳＴ０は、スピードネゴシエーションの開始ステートである。ここでは、ホスト側コントローラ１１のＳＮＳＭ３０は、送信コードをｋｅｅｐ＿ｓｐｅｅｄ信号とし、タイマー２９をリスタートした後、ステートＳＴ１に状態を遷移する。
【０１８５】
ステートＳＴｌは、スピードネゴシエーションを行うステートである。ホスト側コントローラ１１のＳＮＳＭ３０は、受信コードにエラーがあるか、相手機器（デバイス側コントローラ１２）からのｌｏｗｅｒ＿ｓｐｅｅｄ信号を受信した場合は、送信コードをｌｏｗｅｒ＿ｓｐｅｅｄに切り替える。
【０１８６】
また、ホスト側コントローラ１１のＳＮＳＭ３０は、所定時間Ｔａの経過した後、送信コードがｌｏｗｅｒ＿ｓｐｅｅｄ信号であった場合は、ステートＳＴ０へ、また送信コードがｋｅｅｐ＿ｓｐｅｅｄであった場合はステートＳＴ２に状態を遷移する。
【０１８７】
ここで、ステートＳＴ０に遷移する場合は、転送速度を現在の転送速度に対して、例えば半分にする（転送速度の低下の幅（度合い）は、ユーザーの所望の値に設定可能である。また、この幅は、あらかじめＳＮＳＭ３０に記憶されている）。一方、ステートＳＴ２に遷移する場合は、送信コードをＥｎｄ＿Ｎｅｇｏ信号へと切り替える。このステートＳＴ２は、スピードネゴシエーションの終了を確認するステートである。相手機器（デバイス側コントローラ１２）からＥｎｄ＿Ｎｅｇｏ信号を受信すると、スピードネゴシエーションを終了し、アクティプ状態へと遷移する。
【０１８８】
次に、図５を用いて、デバイス側コントローラ１２におけるＳＮＳＭ３０の動作について説明する。ステートＳＴ０，ＳＴ１，ＳＴ２の各ステートにおける動作は、ホスト側コントローラ１１のＳＮＳＭ３０と同一である。
【０１８９】
ステートＳＴ０の前の状態であるステートＳＴ４は、ホスト側コントローラ１１からリクエスト信号を受信したか否かを判別するステートである。光受信機２４（あるいは他の受信信号検出回路）からシグナルディテクト信号を受けた場合、ＳＮＳＭ３０は、ステートＳＴ０に状態を遷移する。
【０１９０】
なお、上記したｋｅｅｐ＿ｓｐｅｅｄ信号，ｌｏｗｅｒ＿ｓｐｅｅｄ信号，Ｅｎｄ＿Ｎｅｇｏ信号は、パケット（特定のフォーマットを持ったキャラクタ列）であっても、また、特定のキャラクタから構成されていてもよい。
【０１９１】
また、上記では、ホスト１０とデバイス１３との間における通信モード（速度）の確認後に、スピードネゴシエーションを行うとしている。しかしながら、スピードネゴシエーションについては、ホスト１０・デバイス１３間の通信開始前であれば、とのタイミングで行ってもよい。
【０１９２】
また、上記では、ホスト１０とホスト側コントローラ１１との間、および、デバイス側コントローラ１２とデバイス１３との間がＵＳＢケーブルで接続されている状態で、スピードネゴシエーションを行うとしている。しかしながら、これに限らず、スピードネゴシエーションは、コントローラ１１・１２間が通信可能な状態であれば、コントローラ１１・１２とホスト１０・デバイス１３とのＵＳＢケーブルによる接続前でも実施可能である。
【０１９３】
また、本実施の形態では、ホストＳＭ３２が、ホスト１０から受信したＳＯＦパケットをデバイス側に送信することを回避し、さらに、デバイスＳＭ４２が、自ら作成したＳＯＦパケットを所定周期でデバイス１３に送信するとしている。しかしながら、上記のスピードネゴシエーションにおいて、コントローラ１１・１２間の光無線通信の速度を、ＵＳＢケーブルと同等の速度（４８０Ｍｂｐｓ）に設定できた場合には、これに限らない。
【０１９４】
すなわち、このような場合には、ホストＳＭ３２は、ホスト１０から受信したＳＯＦパケットをそのままデバイス側に送信してもよい。そして、デバイスＳＭ４２が、デバイス側コントローラ１２から受信したＳＯＦパケットをデバイス１３に伝達するように設定されていてもよい。
【０１９５】
このような場合には、コントローラ１１・１２間でＳＯＦパケットを送受信しても、この間での通信帯域におけるＳＯＦパケットの占有率を、ＵＳＢケーブルを使用した場合と同等程度に抑えられる。このため、ＳＯＦパケットの送受信によって、他のパケットの通信効率を悪化させることはない。しかしながら、もちろん、この場合でも、コントローラ１１・１２間でＳＯＦパケットの送信を回避するように構成してもよい。
【０１９６】
また、上記のようなスピードネゴシエーション後、ホストＳＭ３２，デバイスＳＭ４２の少なくとも一方が、エラー検出回路２８を用いて、コントローラ１１・１２間でのパケット送受信におけるエラーレートを算出することが好ましい。ここで、エラーレートとは、エラーの発生回数を、送受信回数で割った値（エラー発生率）である。
【０１９７】
そして、ホストＳＭ３２，デバイスＳＭ４２は、このエラーレートが所定値以上となった場合に、ＳＮＳＭ３０を制御して、コントローラ１１・１２間の通信速度を低下させることが好ましい。これにより、通信速度の高すぎることに起因するエラーレートを低下させられる。
【０１９８】
また、一般に、ＵＳＢケーブルでの通信が半二重通信である場合、ＵＳＢのシステムでは、ホストが、他のパケットより優先的に、ＳＯＦパケットをデバイスに送信するように、データ転送を調整する（ＳＯＦパケットを優先的に送信することは、ＵＳＢの規定である）。ここで、半二重通信とは、ホストあるいはデバイスの一方が通信路を占有する通信方式である。
【０１９９】
しかしながら、本システムのように、データ転送経路に転送速度の遅い部分（コントローラ１１・１２間）のある場合、ホストがデータ転送を良好に調整できずに、他のパケットのためにＳＯＦパケットを送信できないケースもある（ＳＯＦパケットをデバイスに送信できないケースも生じる）。
【０２００】
図６は、このようなケースの例（ＩＮトランザクション）を示すタイミングチャートである。まず、Ｔ（タイミング）１５０１において、デバイス側コントローラ１２のデバイスＳＭ４２が、ＳＯＦパケットをデバイス１３に送信する。
【０２０１】
そして、Ｔ１５０２において、ホスト側コントローラ１１のホストＳＭ３２が、ＩＮパケットをデバイス側コントローラ１２に送信する。デバイス側コントローラ１２のデバイスＳＭ４２は、ＩＮパケットの受信完了後、これをデバイス１３に送信する（Ｔ１５０３）。
【０２０２】
ここで、デバイスＳＭ４２は、ＩＮパケットの受信完了を待って、これをデバイス１３にリピートするように設定されている。これは、コントローラ１１・１２間の低速通信路（光無線通信）によって受信したＩＮパケットを、デバイス側コントローラ１２・デバイス１３間の高速通信路（ＵＳＢケーブル）を用いてリピートする際、データの欠落を防ぐためである。
【０２０３】
また、図６に示すように、デバイス１３は、ＩＮパケットを受信すると、Ｔ１５０４において、ＤＡＴＡパケットをデバイス側コントローラ１２に対して送信する。
【０２０４】
一方、デバイスＳＭ４２は、Ｔ１５０５において、ＳＯＦパケットの送信周期が訪れたため、デバイス１３に向けてＳＯＦパケットを送信しようとする。ところが、このとき、デバイス１３がＤＡＴＡパケットを送信中である。このため、半二重通信用のＵＳＢケーブルでは、デバイスＳＭ４２は、デバイス１３にＳＯＦパケットを送信できない。
【０２０５】
以下に、このような、ＩＮトランザクションの実行中にＳＯＦパケットを送信できなくなることを防止する方法について説明する。すなわち、上記したように、デバイスＳＭ４２は、タイマー２９を用いて、デバイス１３に対するＳＯＦパケットの送信タイミングを計る。また、ＩＮパケットをデバイス１３に送信した場合に、デバイス１３から返ってくるＤＡＴＡパケットの最大長は、図７に示す値となる。
【０２０６】
デバイスＳＭ４２は、これらの値から、デバイス１３からＤＡＴＡパケットを受信してホスト側コントローラ１１に送信している間、および、デバイス側コントローラ１２（デバイスＳＭ４２）からデバイス１３に対してＡＣＫパケットを送信している間に、ＳＯＦパケットの送信タイミングが訪れないような、デバイス１３に対するＩＮパケットの送信タイミング（タイマー２９の値）の範囲を逆算する（この範囲を、ＩＮパケット送信可能範囲とする）。すなわち、デバイスＳＭ４２は、ＩＮパケット送信可能範囲を計算し、この範囲内でＩＮパケットをデバイス１３に送信するように設定されている。これにより、ＳＯＦパケットの送信が、デバイス１３との間における他のパケットの送受信によって妨げられることを回避できるようになっている。
【０２０７】
なお、上記のＩＮパケット送信可能範囲とは、ＩＮパケットの送信を開始する時間の範囲であり、『ＩＮパケットをデバイス１３に送信してから、最大長のＤＡＴＡパケットをデバイス１３から受信してホスト側コントローラ１１に送信し、その後、ホスト側コントローラ１１から送信されたＡＣＫパケットをデバイス１３に転送するまで』の間に、ＳＯＦパケットの送信タイミングが訪れない時間範囲である。
【０２０８】
図８は、ＩＮトランザクションにおける、デバイスＳＭ４２の動作の流れを示すフローチャートである。この図に示すように、デバイスＳＭ４２は、ホスト側コントローラ１１からＩＮパケットを受信すると（Ｓ４１）、タイマー２９の値がＩＮパケット送信可能範囲内であるか否かを判断する（Ｓ４２）。そして、ＩＮパケット送信可能範囲であると判断した場合、デバイスＳＭ４２は、デバイス１３にＩＮパケットを転送し（Ｓ４３）、処理を終了する。
【０２０９】
一方、Ｓ４２において、ＩＮパケット送信可能範囲でないと判断した場合、デバイスＳＭ４２は、ＳＯＦパケットの送信タイミングまで待機する（Ｓ４４）。そして、ＳＯＦパケットを送信し（Ｓ４５）、一定時間待機した後（Ｓ４６）、デバイスＳＭ４２は、ＩＮパケット送信可能範囲であると判断して、ＩＮパケットをデバイス１３に送信し（Ｓ４３）、処理を終了する。
【０２１０】
上記の処理により、ＩＮトランザクション中での、デバイス側コントローラ１２（デバイスＳＭ４２）からデバイス１３に対するＳＯＦパケットの送信を、他のパケットの送受信によって妨げられることなく、良好に実施できる。なお、デバイスＳＭ４２は、Ｓ４６の後、処理をＳ４２に戻し、ＩＮパケット送信可能時間であることを再確認するようにしてもよい。また、Ｓ４６の待機を実行せず、すぐにＩＮパケットを送信する（あるいはＳ４２に戻る）ようにしてもよい。
【０２１１】
なお、上記したような、ＳＯＦパケットの送信に関する問題は、ＩＮトランザクション時だけでなく、ＯＵＴトランザクション時にも生じる。図９は、ＯＵＴトランザクションにおいてＳＯＦパケットを送信できない例を示すタイミングチャートである。この図に示すように、まず、Ｔ１８０１において、デバイス側コントローラ１２のデバイスＳＭ４２が、ＳＯＦパケットをデバイス１３に送信する。
【０２１２】
そして、Ｔ１８０２・Ｔ１８０３において、ホスト側コントローラ１１のホストＳＭ３２が、ＯＵＴパケットおよびＤＡＴＡパケットを、デバイス側コントローラに送信する。デバイス側コントローラ１２のデバイスＳＭ４２は、これらのパケットの受信完了後、これらをデバイス１３に送信する（Ｔ１８０４・Ｔ１８０５）。
【０２１３】
ここで、デバイスＳＭ４２は、ＯＵＴパケットおよびＤＡＴＡパケットの受信完了を待って、これをデバイス１３にリピートするように設定されている。これは、コントローラ１１・１２間の低速通信路（光無線通信）によって受信したＯＵＴパケットおよびＤＡＴＡパケットを、デバイス側コントローラ１２・デバイス１３間の高速通信路（ＵＳＢケーブル）を用いてリピートする際、データの欠落を防ぐためである。
【０２１４】
また、Ｔ１５０６で、ＳＯＦパケットの送信周期が訪れる。しかしながら、デバイスＳＭ４２は、デバイス１３に向けてＤＡＴＡパケットを送信中であるため、ＳＯＦパケットを送信できない。
【０２１５】
以下に、このような、ＯＵＴトランザクションの実行中にＳＯＦパケットを送信できなくなることを防止する方法について説明する。すなわち、上記したように、デバイスＳＭ４２は、タイマー２９を用いて、デバイス１３に対するＳＯＦパケットの送信タイミングを計る。また、デバイス側コントローラ１２からデバイス１３に送信されるＤＡＴＡパケットの最大長は、図７に示す値となる。
【０２１６】
デバイスＳＭ４２は、これらの値から、ＯＵＴパケットおよびＤＡＴＡパケットの送信中、および、デバイス１３からのＡＣＫパケットの受信中に、ＳＯＦパケットの送信タイミングが訪れないような、デバイス１３に対するＯＵＴパケットおよびＤＡＴＡパケットの送信タイミング（タイマー２９の値）の範囲を逆算する（この範囲を、ＯＵＴパケット送信可能範囲とする）。すなわち、デバイスＳＭ４２は、ＯＵＴパケット送信可能範囲を計算し、この範囲内でＯＵＴパケットおよびＤＡＴＡパケットをデバイス１３に送信するように設定されている。これにより、ＳＯＦパケットの送信が、デバイス１３との間における他のパケットの送受信によって妨げられることを回避できるようになっている。
【０２１７】
なお、上記のＯＵＴパケット送信可能範囲とは、ＯＵＴパケットの送信を開始する時間の範囲であり、『ＯＵＴパケットをデバイス１３に送信してから、最大長のＤＡＴＡパケットをデバイス１３に送信し、ＡＣＫパケットをデバイス１３から受信するまで』の間に、ＳＯＦパケットの送信タイミングが訪れない時間範囲である。
【０２１８】
図１０は、ＯＵＴトランザクションにおける、デバイスＳＭ４２の動作の流れを示すフローチャートである。この図に示すように、デバイスＳＭ４２は、ホスト側コントローラ１１からＯＵＴパケットおよびＤＡＴＡパケットを受信すると（Ｓ５１）、タイマー２９の値がＯＵＴパケット送信可能範囲内であるか否かを判断する（Ｓ５２）。そして、ＯＵＴパケット送信可能範囲であると判断した場合、デバイスＳＭ４２は、デバイス１３にＯＵＴパケットおよびＤＡＴＡパケットを転送し（Ｓ５３）、処理を終了する。
【０２１９】
一方、Ｓ５２において、ＯＵＴパケット送信可能範囲でないと判断した場合、デバイスＳＭ４２は、ＳＯＦパケットの送信タイミングまで待機する（Ｓ５４）。そして、ＳＯＦパケットを送信し（Ｓ５５）、一定時間待機した後（Ｓ５６）、デバイスＳＭ４２は、ＯＵＴパケット送信可能範囲であると判断して、ＯＵＴパケットおよびＤＡＴＡパケットをデバイス１３に送信し（Ｓ５３）、処理を終了する。
【０２２０】
上記の処理により、ＯＵＴトランザクション中での、デバイス側コントローラ１２（デバイスＳＭ４２）からデバイス１３に対するＳＯＦパケットの送信を、他のパケットの送受信によって妨げられることなく、良好に実施できる。なお、デバイスＳＭ４２は、Ｓ５６の後、処理をＳ５２に戻し、ＯＵＴパケット送信可能時間であることを再確認するようにしてもよい。また、Ｓ５６の待機を実行せず、すぐにＯＵＴパケット・ＤＡＴＡパケットを送信する（あるいはＳ５２に戻る）ようにしてもよい。
【０２２１】
なお、デバイスＳＭ４２は、デバイス１３に送信する前に、ＤＡＴＡパケットのパケット長（サイズ）を知ることが可能である。このため、ＯＵＴパケット送信可能範囲を、ＯＵＴパケットの送信を開始する時間の範囲であり、『ＯＵＴパケットをデバイス１３に送信してから、ホスト側コントローラ１１から受信したＤＡＴＡパケットをデバイス１３に送信し、ＡＣＫパケットをデバイス１３から受信するまで』の間に、ＳＯＦパケットの送信タイミングが訪れない時間範囲、と設定してもよい。この場合、デバイスＳＭ４２は、ＯＵＴトランザクションの度に、ＯＵＴパケット送信可能範囲を計算しなおすこととなる。しかしながら、最適な時間範囲を設定可能となり、ＯＵＴパケットおよびＤＡＴＡパケットの送信を無駄に待機してしまうことを防止できるので、送信効率を向上できる。
【０２２２】
また、上記したようなＳＯＦパケットの送信に関する問題は、ＳＥＴＵＰトランザクション時にも生じる。ＳＥＴＵＰトランザクションは、ＯＵＴトランザクションにおいて、ＯＵＴパケットの代わりにＳＥＴＵＰパケットをデバイス１３に送信する処理である。従って、上記した図１０の処理によって、ＳＥＴＵＰトランザクション時でのＳＯＦパケットの送信を良好に行える。
【０２２３】
また、本実施の形態では、ホストＳＭ３２がＳＯＦパケットをデバイス側コントローラ１２にリピートせず、デバイスＳＭ４２が、所定周期（１２５μｓ）毎に、デバイス１３にＳＯＦパケットを送信するとしている。
【０２２４】
しかしながら、これに限らず、ホストＳＭ３２が、ホスト１０からＳＯＦパケットを受信したときに、ＳＯＦパケットを受信したことを示すＳＯＦ受信通知信号をデバイス側コントローラ１２に送信するようにしてもよい。そして、この信号を受けたタイミングで、デバイスＳＭ４２が、ＳＯＦパケットをデバイス１３に送信するように設定されていてもよい。ここで、ＳＯＦ受信通知信号としては、例えば、８Ｂ１０Ｂの特定のキャラクタであってもよいし、別のパケット形式のものであってもよい。
【０２２５】
この構成では、ホストＳＭ３２が、ＳＯＦパケットより転送速度の著しく早いＳＯＦ受信通知信号をデバイス側コントローラ１２に送信することで、デバイス側コントローラ１２のデバイスＳＭ４２に対し、ＳＯＦパケットの送信タイミングを伝達するようになっている。
【０２２６】
これにより、ＳＯＦパケットの送信に関するコントローラ１１・１２間の光無線通信における通信速度（通信時間）を、『ＵＳＢケーブルを用いてコントローラ１１・１２を接続し、これらの間でＳＯＦパケットを転送する程度』にまで速められる。
【０２２７】
従って、この構成でも、デバイス１３のバスをアクティブな状態で維持できるとともに、ＳＯＦパケットの転送によるホスト−デバイス間の通信効率の低下を防止できる。なお、この構成では、デバイス側コントローラ１２にタイマー２９を備える必要はなくなる。
【０２２８】
また、デバイス１３に送信するＳＯＦパケットを生成する際、デバイスＳＭ４２は、ＳＯＦパケットを、所定のルールに沿って生成することが好ましい。例えば、デバイスＳＭ４２は、図１２に示したＳＯＦパケットのフォーマットにおける、フレームナンバー（FrameNo）を正しく設定することが好ましい。このフレームナンバーは、ＨＳでは、８パケット連続で同じ値をとり、９回目に１だけ増えるものである。また、ＦＳでは、パケットごとに１づつ増えてゆく。
【０２２９】
なお、本システムでは、デバイス側コントローラ１２からデバイス１３に送信されたＳＯＦパケットのフレームナンバーが、ホスト１０から送信されるはずのＳＯＦパケットのものと同一でない可能性もある。しかしながら、デバイス１３に受信されるＳＯＦパケットについては、その受信タイミングが重要である。そして、フレームナンバーは、ＵＳＢ２.０で定められた上記のルールに従っていれば、ホスト１０から送信されたものと一致していなくても問題はない。
【０２３０】
また、本実施の形態では、ホスト１０とデバイス１３とが、ＨＳで通信を行うとしている。しかしながら、他のモード（ＬＳ，ＦＳ）で通信を行うように設定されていてもよい。この場合でも、コントローラ１１・１２に間における通信帯域をＳＯＦパケットの送信によって狭めてしまうことを回避できる。
【０２３１】
また、本実施の形態では、ホスト側コントローラ１１のホストＳＭ３２が、受信したパケットがＳＯＦパケットであると確認された場合、このパケットを送信ＦＩＦＯ２１に保存せずに破棄するとしている。しかしながら、デバイス側コントローラ１２は、受信したパケットを送信ＦＩＦＯ２１に保存し、その後に、このパケットがＳＯＦパケットであるか否かを判断するように設定されていてもよい。この場合、ホストＳＭ３２は、受信したパケットがＳＯＦパケットであると確認された場合、このパケットを送信ＦＩＦＯ２１から破棄することとなる。
【０２３２】
また、本実施の形態では、コントローラ１１・１２間の光無線通信におけるデータ転送速度を１００Ｍｂｐｓとしている。しかしながら、これに限らず、コントローラ１１・１２間の転送速度は、どのような値でもよい（ＵＳＢケーブルを用いた転送速度より遅くても、早くても、同一でもよい）。この転送速度がどのような値であっても、本システムでは、コントローラ１１・１２間でＳＯＦパケットを送受信しないため、他のパケットの通信効率を向上させられる。
【０２３３】
また、本実施の形態では、コントローラ１１・１２間を、光無線通信によって接続するとしている。しかしながら、これに限らず、コントローラ１１・１２間を、光ケーブルで通信するようにしてもよい。なお、光ケーブルを用いた場合は、パケットの長距離伝送が可能となる。また、光無線通信（空間通信）を用いる場合には、ケーブルレスのため、利便性を向上させられる。
【０２３４】
また、コントローラ１１・１２間の通信方式としては、半二重通信と全二重通信とのいずれを採用してもよい。ここで、全二重通信とは、ホストからデバイスへの送信と、デバイスからホストへの送信とを、並行して実行できる通信方式である。全二重通信を選択すると、発光ダイオードやレーザーダイオードからなる光送信機２３を常に発光させておくこととなる。このため、パケットにプリアンブルを付加する必要がなく、通信路の通信効率（使用効率）を向上させられる。
【０２３５】
ここで、全二重通信で光送信機２３を常に発光させておく理由は、ホスト１０あるいはデバイス１３からＵＳＢ受信機２０に対して受信されるパケットを、直ちにリピートするためである。
【０２３６】
また、光送信機２３を常に発光させておくことにより、コントローラ１１・１２間の接続・切断を容易に行える。すなわち、半二重通信の場合、光受信機２４が一定時間以上光を受けない場合に、コントローラ１１・１２間の接続が切断されたと判断される。一方、全二重通信では、接続状態で常に光送信機２３を発光させ、相手先コントローラの光受信機２４に常に受光状態としておく。そして、接続を切断する際には、光送信機２３の発光を停止する。これにより、光受信機２４が光を受けなくなった段階で、接続が切れたと判断することが可能となる。これにより、半二重通信に比して、切断に要する時間を短縮できる。
【０２３７】
また、コントローラ１１・１２間を、光ではなく、通常の電波による無線通信で接続するようにしてもよい。この場合、変調回路２２，復調回路２５の変調・復調方式を、適切に設定することが好ましい。また、光受信機２４は、電波を受信する受信アンテナとなる。
【０２３８】
また、上記のプリアンブルは、パケットの受信側において、クロックデータリカバリ回路（図示せず）により、クロックの同期をとるために必要な信号である。通常は、“１０１０”パターンの連続が使用される。プリアンブルの時間は、ＤＡＴＡパケットを送信できない時間である。このため、プリアンブルにより、無駄な時間が生じる。全二重通信の場合、ホストおよびデバイスが常に信号を送信しているため、パケットごとにクロック同期を取る必要がない。つまり、プリアンブルが必要ないといえる。このため、全二重通信では、転送効率を高められる。
【０２３９】
また、本システムでは、デバイス側コントローラ１２のデバイスＳＭ４２は、ホスト側コントローラ１１からリセット通知信号を受けた場合、ＳＯＦパケットの送信を停止するとしている。このとき、本システムは、デバイス１３の接続時の動作においてバスリセットされた場合と同様の状態となる。従って、デバイスＳＭ４２は、デバイス１３からホスト１０に向けて送信されるCHIRPを受けた場合、これをホスト側コントローラ１１に送信するとともに、ホスト１０（ホスト側コントローラ１１）から送信されるであろうCHIRPをデバイス１３に送信するようにしてもよい。これにより、接続時のネゴシエーションが完了するので、デバイスＳＭ４２は、ＳＯＦパケットの送信を再開することとなる。
【０２４０】
従って、本発明のデバイス側コントローラを、ＵＳＢシステムのデバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラにおいて、デバイスからホストに向けて送信されたCHIRPを受信した場合、これをホスト側に送信するとともに、ホストから送信されるはずのCHIRPをデバイスに送信するデバイス側制御部を備えている構成である、と表現することもできる。
【０２４１】
また、本実施の形態では、コントローラ１１・１２を、ホスト１０あるいはデバイス１３とＵＳＢケーブルで接続するとしている。しかしながら、これに限らず、ホスト側コントローラ１１を、ホスト１０に接続されたＵＳＢハブのダウンストリームのポートに接続するようにしてもよい。また、ホスト側コントローラ１１を、ホスト１０あるいはＵＳＢハブの一部として構成してもよい。また、デバイス側コントローラ１２を、ＵＳＢハブのアップストリームのポートとＵＳＢケーブルで接続してもよい。また、デバイスやＵＳＢハブの一部として構成してもよい。
【０２４２】
また、本システムでは、ホストＳＭ３２とデバイスＳＭ４２とは、実際には同様の部材であり、ホスト側コントローラ１１とデバイス側コントローラ１２とは、ＳＯＦ判別回路３１の違いだけで、あとは実質的に同一の構成である。従って、デバイス側コントローラ１２を、ホスト側コントローラ１１と同様の構成（ＳＯＦ判別回路３１を備えた構成）としてもよい。この場合、デバイス側コントローラ１２のＳＯＦ判別回路３１は用いられない。しかしながら、１種類のコントローラをホスト１０とデバイス１３とにそれぞれ備えるだけで、本システムを構築することが可能となる。
【０２４３】
また、本実施の形態では、コントローラ１１・１２にエラー検出回路２８を備えるとしている。しかしながら、送信されたパケットのエラーを検出しない構成では、このエラー検出回路２８を備える必要はない。また、ホストＳＭ３２・デバイスＳＭ４２によって、パケットのエラーを検出するようにしてもよい。
【０２４４】
また、本実施の形態では、ホスト側コントローラ１１にタイマー２９を備えるとしている。しかしながら、これに限らず、ホストＳＭ３２がタイマー２９を用いない場合であれば（例えば、ホスト側コントローラ１１からデバイス側コントローラ１２にリセット通知信号を通知しない構成であれば）、ホスト側コントローラ１１にタイマー２９を備える必要はない。
【０２４５】
また、本実施の形態では、ホスト１０をパーソナルコンピューターであるとしている。しかしながら、これに限らず、ホスト１０としては、デバイス１３を使用可能で、ＵＳＢの親機となれる機器であれば、どのような機器でもよい。
【０２４６】
また、本実施の形態では、コントローラ１１・１２にＳＮＳＭ３０を備えるとしている。しかしながら、これに限らず、上記したようなスピードネゴシエーションを行わず、コントローラ１１・１２間での通信速度を一定とする構成では、コントローラ１１・１２にＳＮＳＭ３０を備える必要はない。
【０２４７】
また、本実施の形態では、デバイス側コントローラ１２のデバイスＳＭ４２が、ホスト１０とデバイス１３との接続が確立された後、ＳＯＦパケットをデバイス１３に送信するとしている。また、ホスト側コントローラ１１のホストＳＭ３２が、ホスト１０からデバイス１３に向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側コントローラ１２に送信することを回避するとしている。
【０２４８】
しかしながら、これに限らず、本システムを、通常のＵＳＢシステムと同様に、ホスト１０から送信されたＳＯＦパケットを、ホスト側コントローラ１１のホストＳＭ３２がデバイス側コントローラ１２にリピートし、デバイス側コントローラ１２のデバイスＳＭ４２がホスト１０にリピートするように設定してもよい。
【０２４９】
すなわち、本システムは、ホスト１０・ホスト側コントローラ１１間、および、デバイス側コントローラ１２・デバイス１３間の通信を、ＵＳＢネイティブの最高速度であるハイスピードモード（ＨＳ；４８０Ｍｂｐｓ）で行う。そして、コントローラ１１・１２間を、これよりも遅い，１００Ｍｂｐｓの光通信（光無線，あるいは光ケーブルによる通信）によって行うように設定されている。
【０２５０】
ここで、コントローラ１１・１２間における光通信のデータ転送速度を４８０Ｍｂｐｓとする場合、例えば８Ｂ１０Ｂの変調方式を用いると、４８０×１０／８＝６００Ｍｂｐｓの帯域を持った光送信機および光受信機（光トランシーバー）が必要である。そして、このような光送信機を得るためには、ＬＤ（レーザーダイオード）を用いる必要がある。
【０２５１】
一方、コントローラ１１・１２間の光通信におけるデータ転送速度を１００Ｍｂｐｓとする場合、光送信機２３を、ＬＥＤ（発光ダイオード）を用いて構成できる。そして、ＬＤとＬＥＤを比較すると、圧倒的にＬＥＤの方が安価である。従って、コントローラ１１・１２間の光通信の速度を遅くすることで、コントローラ１１・１２（光送信機２３）を低コストで構成できる。また、光通信を用いることで、ＵＳＢケーブルを用いることによる制限（ケーブル長など）を回避できる。
【０２５２】
また、コントローラ１１・１２間でのデータ通信を行う部材を光送信機２３，光受信機２４のみとし、そのためのポート（通信端子）を、光送信機２３，光受信機２４の光ポートのみにする（メタルポートを用いない）ことが好ましい。また、コントローラ１１・１２を、ホスト１０あるいはデバイス１３と一体化することも好ましい。このように構成すれば、コントローラ１１・１２の必要とする帯域が、６００Ｍｂｐｓから１００Ｍｂｐｓへと著しく低くなる。これにより、安価な製造プロセスにより、コントローラ１１・１２を作成することが可能となる。
【０２５３】
なお、デバイス１３として、データ転送速度の遅いもの（例えばフラッシュメモリ；５０Ｍｂｐｓ程度）を用いる場合、トランザクションの完了に要する時間は、デバイス１３の転送速度に大きく依存する。従って、コントローラ１１・１２間のデータ転送速度については、デバイス１３の速度より速くすれば、トランザクションの完了時間に大きな影響を与えることはないといえる。
【０２５４】
また、コントローラ１１・１２間を、光を用いない他の通信経路（電波による無線通信など）としても、転送速度を遅くすることで、コントローラ１１・１２のコストを削減できる。従って、本発明のＵＳＢシステムを、ホストと、デバイスと、ホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを含むＵＳＢシステムにおいて、コントローラ間のデータ転送速度が、ＵＳＢ２．０におけるハイスピードモードでのデータ転送速度より遅くなっていることを特徴とするＵＳＢシステム、と表現することもできる。
【０２５５】
また、本発明のＵＳＢシステムを、ＵＳＢシステムのホストに備えられ、外部とホストとの間で送受信されるパケットを中継するホスト側コントローラと、ＵＳＢシステムのデバイスに備えられ、外部とデバイスとの間で送受信されるパケットを中継するデバイス側コントローラとを備えたＵＳＢシステムにおいて、上記のホスト側コントローラが、ホストからデバイスに向けて送信されるＳＯＦパケットを受信した場合に、このパケットをデバイス側に送信することを回避するとともに、上記デバイス側コントローラが、所定周期でＳＯＦパケットをデバイスに送信するように設定されている構成である、と表現することもできる。
【０２５６】
また、上記では、デバイス側コントローラ１２における全ての処理を、デバイスＳＭ４２の制御により行うとしている。しかしながら、これに限らず、これらの処理を行うためのプログラムを記録媒体に記録し、このプログラムを読み出すことのできる情報処理装置を、デバイスＳＭ４２に代えて用いるようにしてもよい。
【０２５７】
また、同様に、ホスト側コントローラ１１における全ての処理をホストＳＭ３２によって行うとしているが、これらの処理を行うためのプログラムを記録媒体に記録し、このプログラムを読み出すことのできる情報処理装置を、ホストＳＭ３２に代えて用いるようにしてもよい。
【０２５８】
この構成では、情報処理装置の演算装置（ＣＰＵやＭＰＵ）が、記録媒体に記録されているプログラムを読み出して処理を実行する。従って、このプログラム自体が処理を実現するといえる。
【０２５９】
ここで、上記の情報処理装置としては、一般的なコンピューター（ワークステーションやパソコン）の他に、コンピューターに装着される、機能拡張ボードや機能拡張ユニットを用いることができる。
【０２６０】
また、上記のプログラムとは、処理を実現するソフトウェアのプログラムコード（実行形式プログラム，中間コードプログラム，ソースプログラム等）のことである。このプログラムは、単体で使用されるものでも、他のプログラム（ＯＳ等）と組み合わせて用いられるものでもよい。また、このプログラムは、記録媒体から読み出された後、装置内のメモリ（ＲＡＭ等）にいったん記憶され、その後再び読み出されて実行されるようなものでもよい。
【０２６１】
また、プログラムを記録させる記録媒体は、情報処理装置と容易に分離できるものでもよいし、装置に固定（装着）されるものでもよい。さらに、外部記憶機器として装置に接続するものでもよい。
【０２６２】
このような記録媒体としては、ビデオテープやカセットテープ等の磁気テープ、フロッピー（登録商標）ディスクやハードディスク等の磁気ディスク、ＣＤ−ＲＯＭ，ＭＯ，ＭＤ，ＤＶＤ，ＣＤ−Ｒ等の光ディスク（光磁気ディスク）、ＩＣカード，光カード等のメモリカード、マスクＲＯＭ，ＥＰＲＯＭ，ＥＥＰＲＯＭ，フラッシュＲＯＭ等の半導体メモリなどを適用できる。また、ネットワーク（イントラネット・インターネット等）を介して情報処理装置と接続されている記録媒体を用いてもよい。この場合、情報処理装置は、ネットワークを介するダウンロードによりプログラムを取得する。すなわち、上記のプログラムを、ネットワーク（有線回線あるいは無線回線に接続されたもの）等の伝送媒体（流動的にプログラムを保持する媒体）を介して取得するようにしてもよい。なお、ダウンロードを行うためのプログラムは、装置内（あるいは送信側装置・受信側装置内）にあらかじめ記憶されていることが好ましい。
【０２６３】
また、本発明を、図１７に示すような、ホスト側コントローラ１１としての機能とデバイス側コントローラ１２としての機能を備えている通信コントローラ１００として実現することもできる。
【０２６４】
図１７に示すように、通信コントローラ１００は、ホスト側コントローラ１１としての機能を有しているとともに、デバイス側コントローラ１２としての機能も有している。この構成により、ＵＳＢシステムにおいて、１つの通信コントローラ１００を、ホスト側コントローラ１１としても、デバイス側コントローラ１２としても使用できる。
【０２６５】
すなわち、この通信コントローラ１００は、ホスト側コントローラ１１によって得られる作用効果を奏すると共に、デバイス側コントローラ１２によって得られる作用効果を奏するものである。
【０２６６】
したがって、１種類の通信コントローラ１００を、ホスト１０およびデバイス１３にそれぞれ備えるだけで、ホスト側コントローラ１１およびデバイス側コントローラ１２を備えたシステムと機能的に同一のシステムを構築できる。すなわち、２種類のコントローラを用意することなくシステムを構築できるため、システムの構築をより簡便にできる。
【０２６７】
また、通信コントローラ１００は、ＵＳＢシステムに接続された各種情報機器が、機器の置かれた状況に応じてホスト１０としてもデバイス１３としても機能するシステムに用いることができる。なお、このようなＵＳＢシステムとして、例えば、近年、規格化されたＵＳＢ−ＯＴＧ（ＵＳＢ−Ｏｎ  Ｔｈｅ  Ｇｏ）がある。
【０２６８】
ＵＳＢ−ＯＴＧは、これまでＵＳＢシステムを介してホスト（パーソナルコンピュータ等）に接続されていたデバイス（周辺機器）に、ホストとしての機能を持たせることができる規格である。したがって、ＵＳＢ−ＯＴＧ規格に従ったＵＳＢシステムでは、ＵＳＢ１．ｘ規格やＵＳＢ２．０規格では不可能である、デバイス同士の接続によるデータ転送が可能となる。
【０２６９】
ＵＳＢ１．ｘ規格やＵＳＢ２．０規格では、ホスト側とデバイス側との機能がそれぞれ固定されている。すなわち、これらの規格の下におけるデータのやり取りは、パーソナルコンピュータをホスト１０として、このパーソナルコンピュータにＵＳＢファンクションとなるデバイス１３（デジタルカメラやプリンタ等）が接続された状態で行われる。
【０２７０】
しかし、ＵＳＢ−ＯＴＧ規格では、従来のＵＳＢシステムで必要であったパーソナルコンピュータ（ＵＳＢホスト）が必要でなくなっている。すなわち、ＵＳＢ−ＯＴＧ規格では、パーソナルコンピュータ（ＵＳＢホスト）なしにＵＳＢ機器同士でデータの送受信が可能であるため、利便性の向上が図られている。ＵＳＢ−ＯＴＧにおいては、繋がれたケーブルのコネクタの種類により、ホストとしても、デバイスとしても動作可能となる。
【０２７１】
このＵＳＢ−ＯＴＧでは、ＵＳＢ２．０と同様に、ＬＳ（１．５Ｍｂｐｓ），ＦＳ（１２Ｍｂｐｓ），ＨＳ（４８０Ｍｂｐｓ）の転送速度をサポートしている。また、ＵＳＢ−ＯＴＧ対応機器は、ＵＳＢホストとしても、またＵＳＢファンクション（デバイス）としても動作可能である。
【０２７２】
また、ＵＳＢ−ＯＴＧ規格においては、ｍｉｎｉＡＢという新しいコネクタの種類が追加された。このｍｉｎｉＡＢは、ｍｉｎｉＡ，ｍｉｎｉＢの両方のプラグを持ったケーブルを接続することが可能である。接続されるケーブルのプラグの形状により、ｍｉｎｉＡが接続された場合は、ＵＳＢホストとして動作し、またｍｉｎｉＢが接続された場合は、ＵＳＢファンクションとして動作する。
【０２７３】
また、ＨＮＰ（Host Negotiation Protocol）という新しいプロトコルにより、ケーブルを接続した状態で、動的にホストとファンクションの機能を交代するといった機構を追加されている。つまり、ＵＳＢ−ＯＴＧでは、接続される機器がＵＳＢホストとなるかＵＳＢファンクションとなるかは、ケーブルのコネクタの種類、もしくはＵＳＢ−ＯＴＧで定められたＨＮＰ（Host Negotiation Protocol）で決定する。
【０２７４】
すなわち、ＵＳＢ−ＯＴＧでは、ＵＳＢホストおよびＵＳＢファンクション（デバイス）は、その役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることもありうる。同様に、ホスト側コントローラ１１およびデバイス側コントローラ１２も、その役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることも可能である。
【０２７５】
そのため、このＵＳＢ−ＯＴＧに対応すべく、一つの通信コントローラ１００が、ホスト側コントローラ１１とファンクション側コントローラ１２との両方の機能を持っている。
【０２７６】
例えば、通信コントローラ１００を用いてＵＳＢシステムを組めば、デジタルカメラとプリンタとを直接に接続して、デジタルカメラをホスト１０として、プリンタをデバイス１３として機能させることができる。これにより、ホスト１０であるデジタルカメラから、デバイス１２であるプリンタにデータを転送することができる。
【０２７７】
すなわち、通信コントローラ１００を備えているＵＳＢシステムでは、パーソナルコンピュータをホスト１０として組み込まなくても、デジタルカメラの画像をプリンタによって直接的に印刷することができる。また、デジタルカメラやデジタルビデオカメラを、ハードディスク等のストレージ装置に直接的に接続し、データをこのストレージ装置に転送することによって、データを保存することが可能になる。
【０２７８】
なお、本発明の通信コントローラは、ホスト側コントローラ１１およびデバイス側コントローラ１２としての機能を必ずしも両方有しているものでなくてもよい。すなわち、本発明の通信コントローラは、本発明のホスト側コントローラ１１としての機能を有していると共に、一般的な、従来のデバイス側コントローラ（例えば、ＳＯＦパケットを自ら生成することのないデバイス側コントローラ）としての機能を有しているものであってもよい。さらに、本発明の通信コントローラは、本発明のデバイス側コントローラ１２としての機能を有していると共に、一般的な、従来のホスト側コントローラ（例えば、ＳＯＦパケットのデバイス側への送信を回避しないホスト側コントローラ）としての機能を有しているものであってもよい。
【０２７９】
また、本発明は、ＵＳＢ規格におけるＵＳＢ信号の伝送方法および伝送装置に関するものであるともいえる。また、ＵＳＢでは、接続形態を維持するために、最下層のプロトコルは時分割で通信し、ホストがスケジューリングを行うといえる。また、ＵＳＢ上のデータ通信は、トランザクションと呼ばれる単位で行われる。このトランザクションは、トークンパケット、データパケット、そしてハンドシェイクパケットと呼ばれるパケットで構成されている。ホストがトランザクション開始時に発行するトークンパケットで必ず始まり、トークンパケットに含まれるアドレスおよびエンドポイントにより、対応するデバイスが応答する。
【０２８０】
エンドポイントとは、転送データを格納するためのＦＩＦＯバッファのことであり、ＵＳＢホストとＵＳＢデバイスのデータのやりとりは、かならずエンドポイントを介して実行される。ＵＳＢデバイスは、最大１６個のエンドポイントを持つことができ、複数のエンドポイントを認識するために、エンドポイントには番号がつけられる。ＵＳＢホストはデータ転送の際にＵＳＢデバイスのＵＳＢアドレスとエンドポイントによりアクセスを行う。エンドポイントの中で０番のものは、エンドポイント０と呼ばれ、ＵＳＢデバイスに必ず１つ存在しなければならない。このエンドポイント０は、コントロール転送時にＳＥＴＵＰパケットによって行われる初期化時に用いられる。また、ＵＳＢ２.０においては、ＨＳモードがアクティブの場合、ＵＳＢホストはバスリセット信号として、Ｄ＋信号線とＤ−信号線をともに１０ｍｓ以上ローレベル（ＳＥ０）とする。
【０２８１】
また、ＳＯＦパケットは、アイソクロナス転送時にＵＳＢホストとＵＳＢデバイスの同期をとるために必要であり、アイソクロナス転送を行わないアプリケーションにおいては、リセットでないことを示す以外は必要ない。また、アイソクロナス転送を行うアプリケーションにおいても、ＵＳＢデバイスから見るとＳＯＦの受信タイミングが重要であり、ＳＯＦパケットのフレームナンバーについては、あらかじめＵＳＢ２.０で定められたルールに従っていれば、ＵＳＢホストの送信したＳＯＦパケットのフレームナンバーとＵＳＢデバイスが受信したＳＯＦパケットのフレームナンバーが一致している必要はないと考えられる。
【０２８２】
また、本発明においては、ＵＳＢホスト側に接続されるホスト側コントローラとＵＳＢデバイス側に接続されるデバイス側コントローラから構成されてもよい。ホスト側コントローラは、ＵＳＢホストからの信号を受信してＵＳＢデバイスに送信し、デバイス側コントローラからの信号をＵＳＢホストに向かって送信するが、ＵＳＢホストとＵＳＢケーブルで接続する以外にＵＳＢハブのダウンストリームのポートとＵＳＢケーブルで接続されても構わない。また、ＵＳＢホストやＵＳＢハブの一部として、構成されても構わない。デバイス側コントローラは、ホスト側コントローラからの信号をＵＳＢデバイスに送信し、ＵＳＢデバイスからの信号をホスト側コントローラに向かって送信するが、ＵＳＢデバイスとＵＳＢケーブルで接続する以外にＵＳＢハブのアップストリームのポートとＵＳＢケーブルで接続されても構わない。また、ＵＳＢデバイスやＵＳＢハブの一部として構成されも構わない。
【０２８３】
また、送信ＦＩＦＯ２１は、ホスト側コントローラとデバイス側コントローラ間の通信路がＵＳＢの通信路と比べて同一もしくは低速である場合、前記同一または低速の通信路にパケットをリピートする際のタイミング調整を行ってもよい。また、本システムでは、ホストＳＭ３２は、ＩＮトランザクション、ＯＵＴトランザクション、ＳＥＴＵＰトランザクションの各トランザクションにおいて、予め定められたルールにより、ＵＳＢホストおよびデバイス側コントローラとパケットのやりとりを行う。
【０２８４】
また、ホストＳＭ３２は、ＵＳＢ受信機２０から受信したＵＳＢパケットをＳＯＦ判別回路３１により解析した後、受信パケットがＳＯＦパケットであると判別される場合、デバイス側コントローラへのＳＯＦパケットのリピートを行わない。ここで、リピートを行わない方法として、例えば送信ＦＩＦＯ２１にＳＯＦパケットのデータを書き込まないなどがあるが、その他の方法によりリピートを抑制しても構わない。
【０２８５】
また、本システムでは、ＵＳＢホストとＵＳＢデバイスの間に、ＵＳＢ規格よりも低速な通信路が存在しても、ホスト側コントローラおよびデバイス側コントローラが上記の構成を持つことで、ＵＳＢデバイスに対してＳＯＦパケットを送信することが可能となり、ＵＳＢデバイスをアクティブ状態で維持することが可能となるといえる。
【０２８６】
また、ホストＳＭ３２がＳＯＦ受信通知信号をデバイス側コントローラ１２に送信する構成では、ＵＳＢホストとＵＳＢデバイスの間に、ＵＳＢ規格よりも低速な通信路が存在しても、デバイス側コントローラ内にタイマーを持たなくても、ＵＳＢデバイスに対してＳＯＦパケットを送信することが可能となり、ＵＳＢデバイスをアクティブ状態で維持することが可能となるといえる。
【０２８７】
また、ＩＮトランザクション時、デバイスＳＭ４２は、タイマー２９を監視し、ＳＯＦパケットの送信タイミングを計る。また、ＩＮパケットをＵＳＢデバイスに送信した場合に返ってくるＤＡＴＡパケットの最大長は、図７に示す値である。これらの値から、ＳＯＦパケットの送信タイミングよりもどれだけ早いタイミングでＩＮパケットを送信したら、ＤＡＴＡパケットを受信中にＳＯＦパケットの送信タイミングが訪れないか、また、さらにデバイス側コントローラがＵＳＢデバイスに対してＡＣＫを送信する時間を加えた場合のＩＮパケットの送信を行っても良いタイマーの値を逆算することが可能となり、その計算した値に達していなければ、ＵＳＢデバイスに送信し、また、前記計算した値に達していれば、次のＳＯＦパケットの送信後に、ＩＮパケットを送信するといったＩＮパケットの送信タイミングの制御を行うことが可能となるといえる。
【０２８８】
また、Ｓ４２は、タイマー２９の値が、ＩＮパケットを送信して、最大長のＤＡＴＡパケットが返ってきた場合にＡＣＫパケットを送信するまでにＳＯＦパケットの送信タイミングが訪れない程度の値に達しているかどうかを判別するステップであるともいえる。そして、タイマー２９の値が達していれば、Ｓ４４へ、またタイマーの値が達してなく、ＩＮパケットの送信を行っても良いと判断される場合は、Ｓ４３へとそれぞれ遷移する。このような動作を行うホストＳＭ３２をデバイス側コントローラ１１内に実装することにより、ＩＮトランザクションにおいて、ＵＳＢデバイスの送信したＤＡＴＡパケットやデバイス側コントローラの送信するＩＮパケットおよびＡＣＫパケットにより、ＳＯＦパケットの送信ができなくなるといった状態を起こさないようにすることが可能となるといえる。
【０２８９】
また、ＯＵＴトランザクション時、デバイスＳＭ４２は、タイマー２９を監視し、ＳＯＦパケットの送信タイミングを計る。また、デバイス側コントローラが送信するＤＡＴＡパケットの最大長は、図７に示す値である。これらの値から、デバイスＳＭ４２は、ＳＯＦパケットの送信タイミングよりもどれだけ早いタイミングでＯＵＴパケットおよびＤＡＴＡパケットを送信したら、ＳＯＦパケットの送信タイミングが訪れないか、また、ＵＳＢデバイスが、前記ＤＡＴＡパケットに対するＡＣＫパケットを送信する時間を加えた場合のＯＵＴパケットの送信開始を行っても良いタイマーの値を逆算することが可能となり、その計算した値に達していなければ、ＵＳＢデバイスにＯＵＴパケットおよびＤＡＴＡパケットを送信開始し、また、前記計算した値に達していれば、次のＳＯＦパケットの送信後に、ＯＵＴパケットおよびＤＡＴＡパケットを送信するといったＯＵＴパケットの送信開始タイミングの制御を行うことが可能となるといえる。また、デバイス側コントローラは次に送信すべきＤＡＴＡパケットのパケット長を知ることが可能であるため、前記ＯＵＴパケット送信開始制御のためのタイマーの値を常に計算しなおして、最も良い値で制御を行うことも可能である。また、ＳＥＴＵＰパケットトランザクションにおけるＳＥＴＵＰパケットおよびＤＡＴＡパケットとＡＣＫパケットの位置関係は、ＯＵＴトランザクションにおけるＯＵＴパケットおよびＤＡＴＡパケットとＡＣＫパケットの位置関係と同じであるため、ＳＥＴＵＰトランザクションにも応用することが可能である。
【０２９０】
また、Ｓ５２は、タイマー２９の値が、ＯＵＴパケットおよびＤＡＴＡパケットを送信して、ＵＳＢデバイスがＡＣＫパケットを返すまでにＳＯＦパケットの送信タイミングが訪れない程度の値に達しているかどうかを判別するステップであるともいえる。そして、タイマー２９の値が達していれば、Ｓ５４へ、またタイマーの値が達してなく、ＯＵＴパケットの送信を開始しても良いと判断される場合は、Ｓ５３へとそれぞれ遷移する。
【０２９１】
また、本発明の課題を、以下のように表現してもよい。すなわち、ホストとデバイスの間に、ＵＳＢ２．０のネイティブ速度と比べて転送速度の低い通信路を用いた場合、ＳＯＦパケットの送信における帯域の使用により、低速通信路における他のパケット転送が行える帯域が減ってしまう。また、ＳＯＦパケットをリピートしない場合は、デバイス側コントローラで、バスリセットを認識することができなくなる。また、バスがリセットされると、一時的にでもホストとデバイスとが切断される。ホストが一度デバイスの認識に失敗すると、再起動以外にデバイスの再認識はできない（デバイスの抜き差しでも認識されない）といった症状があらわれることがあり、この意味で、バスリセットはできるだけ少ないほうが望ましいといえる。また、全二重通信において常に発光しているものは、発光ダイオードやレーザーダイオードなどの送信機である。発光により、常に発光しているのは、全二重通信を行うためであり、いつ受信するかわからないパケットをリピートするためにも、発光（通信）を続けることが好ましい。また、受信信号の有無により、接続、切断などの制御も行うことが可能となる（半二重通信の場合は、一定時間以上、無信号であった場合に切断という手順になるため、切断に要する時間も多く必要になると考えられる）。また、空間通信においては、転送速度と通信距離により、エラーレートは大きく変化する。転送速度が速い場合、正常にデータ転送ができる距離というのは、転送速度が遅いときと比べて、短くなる。つまり、ある距離において、転送速度が速いほうが信号の伝送を行えない可能性が高くなる。また、シグナルディテクト信号は、受信信号の有無のみを判別するための信号であり、転送速度に比べて、遅い信号となるともいえる。
【０２９２】
また、以上の実施の形態の例で示した方法により、ＵＳＢのネイティブの速度よりも遅い通信速度がＵＳＢホストとＵＳＢデバイスの間に存在したとしても、ＵＳＢデバイスに対して、ＵＳＢ規格で定められた周期でＳＯＦパケットを送信することが可能であるといえる。また、ＵＳＢホストが発光したバスリセット（ＳＥ０）も、問題なくＵＳＢデバイスに伝達することが可能となる。また、スピードネゴシエーション回路を設けることにより、最も適した転送速度において、データ通信が可能となる。また、全二重通信を行うことにより、通信路の使用効率を向上させることが可能となる。また、低速通信路として、光ファイバを用いることにより、同一または低速の通信路の距離を長くとることが可能となり、応用範囲が広がる。
【０２９３】
また、低速通信路として、電波を用いた無線を用いることにより、コネクタ劣化を防ぐことが可能となり、またケーブルレスとなるため、使い勝手が良くなる。また、低速通信路として、光を用いた空間伝送を用いることにより、コネクタ劣化を防ぐことが可能となり、高速な空間伝送を行うことが可能となる。また、タイマーの値を監視することにより、ＩＮトランザクション、ＯＵＴトランザクション、ＳＥＴＵＰトランザクションの各トランザクションにおいて、デバイス側コントローラの送信するＳＯＦパケットと他のパケットの衝突を回避することが可能となる。
【０２９４】
また、本発明の目的は、ＵＳＢ２.０のネイティブ速度と比べて転送速度が低い通信路（例えば１００Ｍｂｐｓの光通信路）を用いた場合において、ＳＯＦパケットの転送による通信路の転送効率の低下を抑制すること、およびＵＳＢホストが送信したリセット信号を問題なくＵＳＢデバイスに伝達することにあるともいえる。
【０２９５】
このような目的を達成するための本発明を、以下の第１〜１３送受信回路，第１送受信方法として表現することもできる。すなわち、第１送受信回路は、ＵＳＢ規格に定められた転送速度と同一もしくはそれ以下の転送速度で転送可能なインタフェースを持った送受信回路であって、ＵＳＢホストもしくはＵＳＢハブのダウンストリーム側のポートに接続されるか、ＵＳＢホストもしくはＵＳＢハブの一部として構成されるホスト側コントローラと、ＵＳＢデバイスもしくはＵＳＢハブのアップストリーム側のポートに接続されるか、ＵＳＢデバイスもしくはＵＳＢハブの一部として構成されるデバイス側コントローラであって、両コントローラは、ＦＩＦＯ、ステートマシンを有し、ホスト側コントローラにおいては、ＳＯＦ判別回路を有し、ＳＯＦパケットを前記同一もしくはそれ以下の転送速度の通信路にはリピートしないことを特徴とし、デバイス側コントローラにおいては、タイマーを有し、予め定められた一定時間ごとにＳＯＦパケットをＵＳＢデバイスに送信することを特徴とする。
【０２９６】
こうすることにより、ホスト側コントローラとデバイス側コントローラにおいて、ＳＯＦパケットの送受信を行わないことが可能となり、ＳＯＦパケットによるホスト側コントローラとデバイス側コントローラ間の通信路の転送効率の低下を抑制することが可能となる。
【０２９７】
また、第２送受信回路は、ＵＳＢ規格に定められた転送速度と同一もしくはそれ以下の転送速度で転送可能なインタフェースを持った送受信回路であって、ＦＩＦＯを有し、ホスト側コントローラにおいては、ＳＯＦ判別回路を有し、ＳＯＦパケットを受信したこと示す信号をデバイス側コントローラに送信することを特徴とし、デバイス側コントローラにおいては、前記ＳＯＦ受信通知用信号を受信したら予め定められたＳＯＦパケットをＵＳＢデバイスに送信することを特徴とする。こうすることにより、ホスト側コントローラとデバイス側コントローラの同期をとることが可能となる。
【０２９８】
本発明にかかる第３の送受信回路は、前述の第１送受信回路であって、ホスト側コントローラにおいて、タイマーを有し、予め定められた一定時間パケットを受信しなかった場合、ＳＥ０であると認識し、デバイス側コントローラに通知することを特徴とし、デバイス側コントローラにおいて、前記ＳＥ０受信通知を認識すると、ＳＯＦパケットの送信をやめることを特徴とする。こうすることにより、ＵＳＢホストの送信したバスリセット信号を問題なくＵＳＢデバイスに伝達することが可能となる。
【０２９９】
また、第４送受信回路は、前述の第１送受信回路もしくは第２送受信回路であって、複数の転送速度が可能な送受信回路およびトランシーバを有し、相手ノードとのスピードネゴシエーションを行うことを特徴とする。こうすることにより、複数の転送速度で転送が可能なホスト側コントローラとデバイス側コントローラにおいて、同一の転送速度でパケット転送が可能となる。
【０３００】
また、第５送受信回路は、前述第４の送受信回路であって、前記スピードネゴシエーションにより、予め定められた転送速度以上で通信が可能であると判断される場合は、変復調のみを行ってＳＯＦパケットのリピートを行うことを特徴とする。こうすることで、通信路の転送速度が前述の最大ターンアラウンドを満足する程、十分であると判断される場合は、ＵＳＢホストの送信したＳＯＦパケットを忠実にＵＳＢデバイスに伝送することが可能となる。
【０３０１】
また、第６送受信回路は、前述の第４送受信回路であって、前記同一または低速の通信路のエラーレートを解析し、予め定められたエラーレートよりも悪いと判断される場合、転送速度を落として通信を行うことを特徴とする。こうすることで、仮に通信路の品質が悪いと判断される場合は、転送速度を落とすことにより、品質の良い通信路において、データ転送が可能となる。
【０３０２】
また、第７送受信回路は、前述の第１送受信回路であって、デバイス側コントローラにおいて、ホスト側コントローラからＩＮパケットを受信した際に、タイマーの値が、予め定められた一定の値以上であるならば、ＵＳＢデバイスに対してＩＮパケットを送信せずに、次のＳＯＦパケットを送信後に、ＩＮパケットをＵＳＢデバイスに対して送信することを特徴とする。こうすることで、デバイス側コントローラがＵＳＢデバイスに対してＩＮパケットを送信した後に、ＵＳＢデバイスによって送信されるＤＡＴＡパケットにより、デバイス側コントローラがＳＯＦパケットを送信できなくなるといった状態を起こさなくすることが可能となる。
【０３０３】
また、第８送受信回路は、前述の第１送受信回路であって、デバイス側コントローラにおいて、ホスト側コントローラから、ＯＵＴパケットおよびＤＡＴＡパケットもしくはＳＥＴＵＰパケットおよびＤＡＴＡパケットを受信した際に、タイマーの値が、予め定められた一定の値以上であるならば、ＵＳＢデバイスに対して、前記、ＯＵＴパケットおよびＤＡＴＡパケットもしくはＳＥＴＵＰパケットおよびＤＡＴＡパケットを送信せずに、次のＳＯＦパケットを送信後に、前記ＯＵＴパケットおよびＤＡＴＡパケットもしくはＳＥＴＵＰパケットおよびＤＡＴＡパケットを送信することを特徴とする。こうすることで、デバイス側コントローラが、ＵＳＢデバイスに対してＤＡＴＡパケットを送信する際に、ＤＡＴＡパケットの送信中のために、一定の周期でＳＯＦパケットが送信できないといった状態を起こさなくすることが可能となる。
【０３０４】
また、第９送受信回路は、前述の第８送受信回路であって、前記、タイマーの値は、ホスト側コントローラから受信したＤＡＴＡパケット長によって、可変であることを特徴とする。こうすることで、可変長であるＤＡＴＡパケットに対して、最も適したタイマーの値を設定することが可能となり、デバイス側コントローラとＵＳＢデバイスの間の通信効率の低下を抑制することが可能となる。
【０３０５】
また、第１０送受信回路は、前述の第１〜９送受信回路のいずれかの送受信回路であって、全二重通信を特徴とする。こうすることで、半二重通信において必要なプリアンブルをなくすことが可能となり、通信路の使用効率を向上することが可能となる。また、第１１送受信回路は、前述の第１〜１０送受信回路のいずれかの送受信回路であって、光ファイバを用いた長距離通信であることを特徴とする。こうすることで、ＵＳＢホストとＵＳＢデバイスの距離を長くすることが可能となり、応用範囲が広がる。
【０３０６】
また、第１２送受信回路は、前述の第１〜９送受信回路のいずれかにあてはまる送受信回路であって、ホスト側コントローラとデバイス側コントローラ間が無線通信であることを特徴とする。こうすることで、ケーブルレスとなり、コネクタの劣化などが防げる。また、第１３送受信回路は、前述の第１〜１０送受信回路のいずれかにあてはまる送受信回路であって、ホスト側コントローラとデバイス側コントローラ間が光を用いた空間伝送であることを特徴とする。こうすることで、ケーブルレスとなり、コネクタの劣化などが防げるとともに、高速な空間伝送を行うことが可能となる。また、第１送受信方法は、前述の第１〜第１３送受信回路のいずれかの送受信回路を実現する送受信方法である。
【０３０７】
また、本発明を、ＵＳＢ２.０のネイティブ速度よりも遅い通信速度により通信可能であり、ＵＳＢ２.０ホストもしくはＵＳＢ２.０ハブと一体型もしくは独立したホスト側コントローラおよびＵＳＢ２.０デバイスもしくはＵＳＢ２.０ハブと一体型もしくは独立したデバイス側コントローラによって構成されたＵＳＢシステムにおいて、ＵＳＢ２.０のハイスピード転送を、前記、ＵＳＢネイティブ速度よりも遅い通信速度により通信可能な通信路を持つ上記ホスト側コントローラとデバイス側コントローラ間を介して行うことを特徴とするＵＳＢ２.０システム、と表現することもできる。
【０３０８】
上記のメカニズムにより、低速通信路においても、低速のアプリケーションの場合、全体としての転送速度が落ちない。ＵＳＢ２.０を単純に光化しようとする場合、例えば８Ｂ１０Ｂの変調方式を用いたとすると、４８０×１０／８＝６００Ｍｂｐｓの帯域を持った光トランシーバが必要である。これを満たす安価な光トランシーバはＬＤ（レーザーダイオード）ある。一方、本発明を用いて低速な通信路でＵＳＢ２.０の転送ができる場合、低速通信路が例えば１００Ｍｂｐｓの場合、これを満たす安価な光トランシーバは、ＬＥＤ（発光ダイオード）である。ＬＤとＬＥＤを比較すると、圧倒的にＬＥＤの方が安価であり、本発明の構成により、光トランシーバのコストの削減が可能となる。
【０３０９】
また、コントローラにおいても、たとえばホスト側コントローラがＵＳＢホストに一体化され、他のメタルポートをなくし、光ポートのみの構成となった場合、コントローラの必要とする帯域が、６００Ｍｂｐｓから１００Ｍｂｐｓへと著しく低くなる。これは、安価な製造プロセスにより、コントローラの作成が可能となることを意味しており、やはり本発明によりコスト削減が可能となる。以上により、低速のアプリケーションを限定した場合、本発明によりコスト削減が可能であり、低速のアプリケーションとして例えばフラッシュメモリが搭載された携帯電話、デジタルカメラなどのアプリケーションにおいては、本発明が有効であると考えられる。
【産業上の利用可能性】
【０３１０】
本発明は、ホストコンピューター（ホスト）と、その周辺機器（デバイス）との間におけるＵＳＢ通信（ＵＳＢ規格に沿ったデータ通信）を実現するための通信システムであるＵＳＢシステム、および、ＵＳＢシステムにおけるホスト，デバイスに備える通信コントローラ（ホスト側コントローラ，デバイス側コントローラ）に利用されるものである。
【図面の簡単な説明】
【０３１１】
【図１】本発明の一実施形態にかかるＵＳＢシステムの構成を示すブロック図である。
【図２】図１に示したＵＳＢシステムのデバイスのバスをリセットするための処理における、ホスト側コントローラにおけるホストＳＭの動作を示すフローチャート（状態遷移図）である。
【図３】図１に示したＵＳＢシステムにおける、スピードネゴシエーションの例を示すタイミングチャートである。
【図４】スピードネゴシエーションにおけるホスト側コントローラのＳＮＳＭの動作を示す説明図である。
【図５】スピードネゴシエーションにおけるデバイス側コントローラのＳＮＳＭの動作を示す説明図である。
【図６】ＩＮトランザクションにおいてＳＯＦパケットを送信できない例を示すタイミングチャートである。
【図７】ＤＡＴＡパケットのサイズを示す説明図である。
【図８】ＩＮトランザクションにおける、図１に示した本システムのデバイスＳＭの動作の流れを示すフローチャートである。
【図９】ＯＵＴトランザクションにおいてＳＯＦパケットを送信できない例を示すタイミングチャートである。
【図１０】ＯＵＴトランザクションにおける、図１に示した本システムのデバイスＳＭの動作の流れを示すフローチャートである。
【図１１】ＵＳＢパケットの種別を示す説明図である。
【図１２】ＵＳＢのパケットフォーマットを示す説明図である。
【図１３】ＩＮトランザクションの例を示すタイミングチャートである。
【図１４】ＯＵＴトランザクションの例を示すタイミングチャートである。
【図１５】ＳＥＴＵＰトランザクションの例を示すタイミングチャートである。
【図１６】従来のＵＳＢシステムにおける、ＳＯＦパケットの送信の様子を示すタイミングチャートである。
【図１７】本発明の一実施形態にかかる通信コントローラを用いたＵＳＢシステムの構成を示すブロック図である。
【符号の説明】
【０３１２】
１０  ホスト
１１  ホスト側コントローラ
１２  デバイス側コントローラ
１３  デバイス
２０  ＵＳＢ受信機
２１  送信ＦＩＦＯ
２２  変調回路
２３  光送信機
２４  光受信機
２５  復調回路
２６  受信ＦＩＦＯ
２７  ＵＳＢ送信機
２８  エラー検出回路
２９  タイマー
３０  スピードネゴシエーションステートマシン（ＳＮＳＭ；速度設定部）
３１  ＳＯＦ判別回路（ホスト側制御部）
３２  ホスト側ステートマシン（ホストＳＭ；ホスト側制御部）
４２  デバイス側ステートマシン（デバイスＳＭ；デバイス側制御部）Ｔａ  所定時間
１００  通信コントローラ
【図１】
2005129010.tif 000003
【図２】
2005129010.tif 000004
【図３】
2005129010.tif 000005
【図４】
2005129010.tif 000006
【図５】
2005129010.tif 000007
【図６】
2005129010.tif 000008
【図７】
2005129010.tif 000009
【図８】
2005129010.tif 000010
【図９】
2005129010.tif 000011
【図１０】
2005129010.tif 000012
【図１１】
2005129010.tif 000013
【図１２】
2005129010.tif 000014
【図１３】
2005129010.tif 000015
【図１４】
2005129010.tif 000016
【図１５】
2005129010.tif 000017
【図１６】
2005129010.tif 000018
【図１７】
2005129010.tif 000019