(57)【要約】【課題】本発明はＵＳＢ規格に従って通信する場合にホストＰＣと周辺機器との間の遅延が大きい場合であっても正常な通信が可能なＵＳＢ通信方法を提供することを目的とする。【解決手段】ホスト側通信装置と周辺機器側通信装置とを用いてホストコントローラと周辺機器との間の通信を中継し、ホストコントローラの通信をホスト側通信装置で終端する。周辺機器からのデータパケットをホスト側通信装置上のメモリに保持しておき、ホストコントローラからの要求に対して該当するデータパケットがメモリに存在する場合には、ホスト側通信装置がメモリから読み出したデータパケットをホストコントローラに直接送信する。ホスト側通信装置及び周辺機器側通信装置はデータの伝送方向を識別して制御を行う。通常モードではホスト側通信装置はホストコントローラに対して応答を返し、周辺機器側通信装置は周辺機器に対して応答を返す。【選択図】      図１
2004246750.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置側に接続されたホストコントローラと、所定の周辺機器との間でＵＳＢの規格に従って通信するためのＵＳＢ通信方法において、前記ホストコントローラに接続されたホスト側通信装置と、前記周辺機器に接続された周辺機器側通信装置とを用いて、前記ホストコントローラとホスト側通信装置との間、前記周辺機器と周辺機器側通信装置との間、前記ホスト側通信装置と周辺機器側通信装置との間でそれぞれ通信を行うと共に、
前記ホストコントローラからのパケットをホスト側通信装置が受信した場合に、ホスト側通信装置が前記パケットから第１の伝送方向を識別する第１の手順と、
前記第１の伝送方向が前記ホストコントローラに入力される方向でない場合には、次に続くデータパケットの有無をホスト側通信装置が識別する第２の手順と、
前記第２の手順で続くデータパケットがある場合には、そのデータパケットを前記ホスト側通信装置がホストコントローラから受信する第３の手順と、
前記ホスト側通信装置が受信した前記ホストコントローラからのパケットを前記周辺機器側通信装置に転送する第４の手順と、
前記第１の伝送方向が前記ホストコントローラに入力される方向である場合には、前記ホスト側通信装置は該当するデータパケットが自身のメモリに保持されているか否かを識別し、保持されている場合には該当するデータパケットを前記ホストコントローラに転送する第５の手順と、
前記ホスト側通信装置が周辺機器側通信装置からのデータパケットを受信してメモリに保存する第６の手順と、
前記周辺機器側通信装置がホスト側通信装置からのパケットを受信した場合に、前記パケットから前記周辺機器側通信装置が第２の伝送方向を識別する第７の手順と、
前記第２の伝送方向が前記ホストコントローラに入力される方向でない場合には、次に続くデータパケットの有無を前記周辺機器側通信装置が識別する第８の手順と、
前記第８の手順で続くデータパケットがある場合には、そのデータパケットを前記周辺機器側通信装置が受信する第９の手順と、
前記第２の伝送方向が前記ホストコントローラに入力される方向でない場合に、前記周辺機器側通信装置が受信したパケットを前記周辺機器に転送する第１０の手順と、
前記第２の伝送方向が前記ホストコントローラに入力される方向である場合に、前記周辺機器側通信装置が受信したパケットを前記周辺機器に転送する第１１の手順と、
前記第２の伝送方向が前記ホストコントローラに入力される方向である場合に、前記周辺機器からのパケットを前記周辺機器側通信装置が受信する第１２の手順と、
前記第１２の手順でデータパケットを受信した場合には、前記周辺機器側通信装置が受信したデータパケットに宛先情報を付加して前記ホスト側通信装置に転送する第１３の手順と
を設けたことを特徴とするＵＳＢ通信方法。
【請求項２】
請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で無線回線を用いて通信を行うことを特徴とするＵＳＢ通信方法。
【請求項３】
請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で、少なくとも周辺機器の消費電力に関する情報を伝送することを特徴とするＵＳＢ通信方法。
【請求項４】
請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で、少なくともＵＳＢインタフェースに対する周辺機器の脱着に関する情報を伝送することを特徴とするＵＳＢ通信方法。
【請求項５】
請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で通信を行う際に、再送を含む誤り補償制御を行うことを特徴とするＵＳＢ通信方法。
【請求項６】
請求項１のＵＳＢ通信方法において、
前記第３の手順でホストコントローラからのデータパケットを受信した場合に、前記ホスト側通信装置がホストコントローラに対して受信確認の応答を返す第１４の手順と、
前記第５の手順で前記ホスト側通信装置がデータパケットを前記ホストコントローラに送信した後で、前記ホストコントローラから受信確認の応答を受け取った場合には、送信したデータパケットをメモリから削除する第１５の手順と、
前記第１の伝送方向が前記ホストコントローラに入力される方向である場合に、前記ホスト側通信装置のメモリに該当するデータパケットが存在しない場合には、前記ホスト側通信装置が前記ホストコントローラに対して存在しないことを表す応答を送信する第１６の手順と、
前記第１２の手順で周辺機器側通信装置が周辺機器からのデータパケットを受信した場合には、周辺機器側通信装置が周辺機器に対して受信確認の応答を返す第１７の手順と
を更に設けたことを特徴とするＵＳＢ通信方法。
【請求項７】
請求項６のＵＳＢ通信方法において、前記ホスト側通信装置及び周辺機器側通信装置は、通信モードがアイソクロナス転送か否かを識別し、その結果に応じて制御の内容を変更することを特徴とするＵＳＢ通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）規格に従って通信する場合に用いられるＵＳＢ通信方法に関する。
【０００２】
【従来の技術】
従来より、ＵＳＢ規格に準じた通信インタフェースは、パーソナルコンピュータ（ＰＣ）や様々な周辺機器に広く採用されている。
ＵＳＢ規格の仕様については、ＵＳＢ仕様書として公開されている。ＵＳＢ規格では、最大で１２７台の周辺機器を接続することができる。
【０００３】
また、この種の従来技術は特許文献１に開示されている。
【特許文献１】
特表２００２−５４２５２７
【０００４】
【発明が解決しようとする課題】
しかしながら、ＵＳＢ仕様書においては装置はホストＰＣから５メートル以内になければならないとされている。
【０００５】
勿論、ＵＳＢハブを用いればその距離を伸ばすことは可能であるが、その場合でも最大で３０ｍまでしか伸ばすことはできない。このため、ＵＳＢインタフェースを用いて通信する場合には、従来は周辺機器をホストＰＣから３０ｍ離れた場所では利用できなかった。
このような距離の制限はＵＳＢの動作原理にある。すなわち、ＵＳＢではバスの使用権は全てホストＰＣが持ち、ホストＰＣが各周辺機器に使用可能な帯域を割り振るように制御される。
【０００６】
また、ホストＰＣが各周辺機器に帯域を割り振ってからホストＰＣがデータを受信するまでの時間が１６ｂｉｔタイム以内と短く、更にケーブル内の遅延として７．５ｂｉｔタイムが割り当てられているので、周辺機器がバスの使用権を受け取ってから送信するまでには８．５ｂｉｔタイム（１２Ｍｂｐｓで０．７μｓ）しか許されず余裕が小さい。
【０００７】
このような仕様であるため、仕様を無視して多くの遅延が生ずるＵＳＢ機器を接続したとしても信号の衝突が生じることになり、実際には通信はできない。
本発明は、ＵＳＢ規格に従って通信する場合に、ホストＰＣと周辺機器との間の遅延が大きい場合であっても正常な通信が可能なＵＳＢ通信方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
請求項１は、ホスト装置側に接続されたホストコントローラと、所定の周辺機器との間でＵＳＢの規格に従って通信するためのＵＳＢ通信方法において、前記ホストコントローラに接続されたホスト側通信装置と、前記周辺機器に接続された周辺機器側通信装置とを用いて、前記ホストコントローラとホスト側通信装置との間、前記周辺機器と周辺機器側通信装置との間、前記ホスト側通信装置と周辺機器側通信装置との間でそれぞれ通信を行うと共に、前記ホストコントローラからのパケットをホスト側通信装置が受信した場合に、ホスト側通信装置が前記パケットから第１の伝送方向を識別する第１の手順と、前記第１の伝送方向が前記ホストコントローラに入力される方向でない場合には、次に続くデータパケットの有無をホスト側通信装置が識別する第２の手順と、前記第２の手順で続くデータパケットがある場合には、そのデータパケットを前記ホスト側通信装置がホストコントローラから受信する第３の手順と、前記ホスト側通信装置が受信した前記ホストコントローラからのパケットを前記周辺機器側通信装置に転送する第４の手順と、前記第１の伝送方向が前記ホストコントローラに入力される方向である場合には、前記ホスト側通信装置は該当するデータパケットが自身のメモリに保持されているか否かを識別し、保持されている場合には該当するデータパケットを前記ホストコントローラに転送する第５の手順と、前記ホスト側通信装置が周辺機器側通信装置からのデータパケットを受信してメモリに保存する第６の手順と、前記周辺機器側通信装置がホスト側通信装置からのパケットを受信した場合に、前記パケットから前記周辺機器側通信装置が第２の伝送方向を識別する第７の手順と、前記第２の伝送方向が前記ホストコントローラに入力される方向でない場合には、次に続くデータパケットの有無を前記周辺機器側通信装置が識別する第８の手順と、前記第８の手順で続くデータパケットがある場合には、そのデータパケットを前記周辺機器側通信装置が受信する第９の手順と、前記第２の伝送方向が前記ホストコントローラに入力される方向でない場合に、前記周辺機器側通信装置が受信したパケットを前記周辺機器に転送する第１０の手順と、前記第２の伝送方向が前記ホストコントローラに入力される方向である場合に、前記周辺機器側通信装置が受信したパケットを前記周辺機器に転送する第１１の手順と、前記第２の伝送方向が前記ホストコントローラに入力される方向である場合に、前記周辺機器からのパケットを前記周辺機器側通信装置が受信する第１２の手順と、前記第１２の手順でデータパケットを受信した場合には、前記周辺機器側通信装置が受信したデータパケットに宛先情報を付加して前記ホスト側通信装置に転送する第１３の手順とを設けたことを特徴とする。
【０００９】
請求項１においては、ホストコントローラ（ホストＰＣ）に接続されたホスト側通信装置と、周辺機器に接続された周辺機器側通信装置とを用いて、前記ホストコントローラと周辺機器との間の通信を中継する。
また、周辺機器が送出したデータをホスト側通信装置のメモリに保持しておくため、ホスト側通信装置と周辺機器側通信装置との間の遅延時間が大きい場合であっても、ホストコントローラからの要求に対して短い時間で要求されたデータを送信することが可能になる。
【００１０】
すなわち、ホスト側通信装置と周辺機器側通信装置との間の距離が大きい場合であっても、ＵＳＢ規格で規定された時間内にデータをホスト側通信装置に対して送信可能であり、正しく通信を行うことができる。
請求項２は、請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で無線回線を用いて通信を行うことを特徴とする。
【００１１】
請求項２においては、ホスト側通信装置と周辺機器側通信装置とをケーブルで接続する必要が無くなるため、ホストコントローラ（ホストＰＣ）や各周辺機器を配置する上での位置の自由度が高くなる。
請求項３は、請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で、少なくとも周辺機器の消費電力に関する情報を伝送することを特徴とする。
【００１２】
請求項３においては、周辺機器の消費電力をホストコントローラ側で監視できるので、過負荷などの警告を出力することが可能になる。
請求項４は、請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で、少なくともＵＳＢインタフェースに対する周辺機器の脱着に関する情報を伝送することを特徴とする。
【００１３】
請求項４においては、周辺機器の脱着をホストコントローラ側で監視できるので、周辺機器の脱着に関する警告を出力することが可能になる。
請求項５は、請求項１のＵＳＢ通信方法において、前記ホスト側通信装置と周辺機器側通信装置との間で通信を行う際に、再送を含む誤り補償制御を行うことを特徴とする。
【００１４】
ホストコントローラの通信をホスト側通信装置で終端し、周辺機器の通信を周辺機器側通信装置で終端する場合には、ホスト側通信装置と周辺機器側通信装置との間でデータが消失した場合に送信元と宛先との間でデータの不一致が生じる。例えば、ホストコントローラが周辺機器宛に送信したデータがホスト側通信装置と周辺機器側通信装置との間で消失すると、ホストコントローラは送信を完了したと見なすが、そのデータは周辺機器に届かない。
【００１５】
請求項５においては、ホスト側通信装置と周辺機器側通信装置との間で通信を行う際に再送を含む誤り補償制御を行うので、ホスト側通信装置と周辺機器側通信装置との間でデータが消失するのを防止することができ、送信元と宛先との間でデータの不一致の発生を防止できる。
請求項６は、請求項１のＵＳＢ通信方法において、前記第３の手順でホストコントローラからのデータパケットを受信した場合に、前記ホスト側通信装置がホストコントローラに対して受信確認の応答を返す第１４の手順と、前記第５の手順で前記ホスト側通信装置がデータパケットを前記ホストコントローラに送信した後で、前記ホストコントローラから受信確認の応答を受け取った場合には、送信したデータパケットをメモリから削除する第１５の手順と、前記第１の伝送方向が前記ホストコントローラに入力される方向である場合に、前記ホスト側通信装置のメモリに該当するデータパケットが存在しない場合には、前記ホスト側通信装置が前記ホストコントローラに対して存在しないことを表す応答を送信する第１６の手順と、前記第１２の手順で周辺機器側通信装置が周辺機器からのデータパケットを受信した場合には、周辺機器側通信装置が周辺機器に対して受信確認の応答を返す第１７の手順とを更に設けたことを特徴とする。
【００１６】
請求項６においては、ハンドシェイクパケット（ＡＣＫパケット，ＮＡＫパケット，ＳＴＡＬＬパケット）やフレームパケットについてホスト側通信装置及び周辺機器側通信装置が終端することができるので、ホストコントローラとホスト側通信装置との間、並びに周辺機器側通信装置と周辺機器との間の帯域を有効活用することが可能になる。
【００１７】
請求項７は、請求項６のＵＳＢ通信方法において、前記ホスト側通信装置及び周辺機器側通信装置は、通信モードがアイソクロナス転送か否かを識別し、その結果に応じて制御の内容を変更することを特徴とする。
ＵＳＢ通信のアイソクロナス転送においては、ＡＣＫパケットなどの応答確認を行わない。請求項７では、通信モードがアイソクロナス転送か否かを識別して制御を行うので、アイソクロナス転送にも対応できる。
【００１８】
【発明の実施の形態】
本発明のＵＳＢ通信方法の１つの実施の形態について図１〜図１０を参照して説明する。この形態は全ての請求項に対応する。
図１はホスト側通信装置の動作（１）を示すフローチャートである。図２は周辺機器側通信装置の動作（１）を示すフローチャートである。図３はホスト側通信装置の動作（２）を示すフローチャートである。図４は周辺機器側通信装置の動作（２）を示すフローチャートである。図５は通信システムの主要部の構成例を示すブロック図である。
【００１９】
図６は下り方向の通信動作を示すシーケンス図である。図７は上り方向の通信動作を示すシーケンス図である。図８は通信システムの主要部の構成例を示すブロック図である。図９はアイソクロナス転送モードの下り方向の通信動作を示すシーケンス図である。図１０はアイソクロナス転送モードの上り方向の通信動作を示すシーケンス図である。
【００２０】
この形態では、請求項１における第１の手順，第２の手順，第３の手順，第４の手順，第５の手順，第６の手順，第７の手順，第８の手順，第９の手順，第１０の手順，第１１の手順，第１２の手順及び第１３の手順は、それぞれステップＳ１１，Ｓ１２，Ｓ１３，Ｓ１５，Ｓ１７，Ｓ４２，Ｓ２２，Ｓ２３，Ｓ２４，Ｓ２５，Ｓ２７，Ｓ２８及びＳ３２に相当する。
【００２１】
また、請求項６における第１４の手順，第１５の手順，第１６の手順及び第１７の手順は、それぞれステップＳ１４，Ｓ１８，Ｓ１９及びＳ３０に相当する。この形態においては、図５又は図８に示すような通信システムに本発明を適用する場合を想定している。
図５において、例えばパーソナルコンピュータ上に配置されるホストコントローラ１０にはＵＳＢインタフェース１１が設けられ、周辺機器４０にもＵＳＢインタフェース４１が設けられている。
【００２２】
一般的な接続形態では、ホストコントローラ１０のＵＳＢインタフェース１１と周辺機器４０のＵＳＢインタフェース４１とを１つのＵＳＢケーブルで直接接続することになるが、図５の例ではホストコントローラ１０と周辺機器４０との間にホスト側通信装置２０及び周辺機器側通信装置３０を介在するように接続してある。
【００２３】
すなわち、ホストコントローラ１０のＵＳＢインタフェース１１はＵＳＢケーブル５１を介してホスト側通信装置２０と接続され、周辺機器４０のＵＳＢインタフェース４１はＵＳＢケーブル５２を介して周辺機器側通信装置３０と接続され、ホスト側通信装置２０と周辺機器側通信装置３０との間は有線の通信回線５３で接続されている。
【００２４】
ホスト側通信装置２０にはＵＳＢインタフェース２１，通信制御部２２，通信インタフェース２３，誤り補償制御部２４及び記憶部２５が設けてあり、周辺機器側通信装置３０には通信インタフェース３１，通信制御部３２，ＵＳＢインタフェース３３及び誤り補償制御部３４が設けてある。
【００２５】
ＵＳＢインタフェース１１，２１，３１及び４１は、いずれもＵＳＢ規格の仕様に従って動作する通信インタフェースである。
なお、ホスト側通信装置２０と周辺機器側通信装置３０との間の接続は有線に限らない。すなわち、図８に示すように無線通信インタフェース６１，６２を設ければホスト側通信装置２０と周辺機器側通信装置３０とを無線回線で接続することができる。
【００２６】
図５及び図８に示す通信システムにおいては、ホスト側通信装置２０及び周辺機器側通信装置３０がホストコントローラ１０と周辺機器４０との間の通信を中継することにより、本発明特有の動作が実現する。
ホスト側通信装置２０に設けられた誤り補償制御部２４及び周辺機器側通信装置３０に設けられた誤り補償制御部３４は、ホスト側通信装置２０と周辺機器側通信装置３０との間で通信する際に、再送制御を含む誤り補償制御を行う。この誤り補償制御により、ホストコントローラ１０と周辺機器４０との間でデータの不一致が生じるのを防止する。
【００２７】
また、周辺機器側通信装置３０は周辺機器４０における電力消費量の大きさや、周辺機器４０がＵＳＢインタフェース３３と実際に接続されているか否かを表す脱着情報を検出し、それらの情報をホスト側通信装置２０を介してホストコントローラ１０に送信する。
ホスト側通信装置２０の動作の主要部は図１及び図３に示されたとおりであり、周辺機器側通信装置３０の動作の主要部は図２及び図４に示されたとおりである。また、図１に示す内容はホスト側通信装置２０がホストコントローラ１０からの情報を受け取った場合の動作であり、図３に示す内容はホスト側通信装置２０が周辺機器側通信装置３０からの情報を受け取った場合の動作である。
【００２８】
また、図２に示す内容は周辺機器側通信装置３０がホスト側通信装置２０側からの情報を受け取った場合の動作であり、図４に示す内容は周辺機器側通信装置３０が定期的に行う動作である。
実際のホスト側通信装置２０及び周辺機器側通信装置３０の動作について説明する前に、一般的なＵＳＢ規格の通信動作について以下に説明する。
【００２９】
情報は基本的にトークンパケット，データパケット，ハンドシェイクパケットの順に送信される。
トークンパケットは、どのようなデータをどの方向に流すかなどを指示するためのパケットである。トークンパケット内のＰＩＤ（４ビットの識別子）により、セットアップ，ＩＮ，ＯＵＴ，ＳＯＦ，データ，ＮＡＫ，ＡＣＫ，ＳＴＡＬＬなどが区別される。
【００３０】
データパケットは伝送するデータ本体を表す。ハンドシェイクパケットは、前に送られたであろうパケットが受信されたか否かの通知に利用されるパケットであり、ＡＣＫパケット，ＮＡＫパケット及びＳＴＡＬＬパケットの３種類がある。
これらのパケットは連続的に送信される。連続するパケットは同方向でない場合が多い。また、基本的にＡＣＫは前パケットと逆方向に流れる。更に、データパケットは存在しない場合もある。
【００３１】
データの伝送方向を表す「ＩＮ」は、ホストコントローラに入力される方向を表し、「ＯＵＴ」はホストコントローラから周辺機器に向かう方向を表している。
また、ＳＯＦは１ｍｓｅｃ毎にホストコントローラから送信されるパケットである。エンドポイント（Ｅｎｄｐｏｉｎｔ）は、トークンパケット内に記載されている値であり、パケットの引き渡し先の周辺機器のアプリケーションを特定するために利用される。
【００３２】
次に、図１に示すホスト側通信装置２０の動作について説明する。
ホストコントローラ１０とホスト側通信装置２０との間で通信を開始すると、ステップＳ１０でホストコントローラ１０からのトークンパケットをホスト側通信装置２０が受信する。
【００３３】
この場合、ホスト側通信装置２０は受信したトークンパケットを調べてホストコントローラ１０がＩＮパケットの送信要求（周辺機器に対して）を行っているか否かを識別する。すなわち、ＩＮパケットフラグの有無をステップＳ１１で調べる。ＩＮパケットの場合にはステップＳ１６に進み、それ以外、すなわちセットアップパケットやＯＵＴパケットの場合にはステップＳ１２に進む。
【００３４】
ステップＳ１２では、続くデータパケットがホストコントローラ１０から到着するか否かを識別する。そして、ホストコントローラ１０からのデータパケットが到着した場合にはそれをホスト側通信装置２０が受信する。
続くステップＳ１４では、受信したパケットに対する応答としてホスト側通信装置２０はＡＣＫをホストコントローラ１０に返信する。
【００３５】
次のステップＳ１５では、ホストコントローラ１０から受信したトークンパケット及びデータパケット（もしあれば）をホスト側通信装置２０が周辺機器側通信装置３０に送信する。
受信したトークンパケットがＩＮパケットの送信要求であった場合には、ステップＳ１１からＳ１６に進む。この場合、ホスト側通信装置２０はトークンパケットに記述されているエンドポイント／ＰＩＤを参照し、該当するデータパケットが記憶部２５のメモリに保存されているか否かを調べる。
【００３６】
該当するデータパケットが記憶部２５に保存されている（前に周辺機器４０から受け取った結果）場合には、ステップＳ１６からＳ１７に進み、記憶部２５に保持されているデータ（同じ送信元（周辺機器４０）からのデータ）の中で最も古いデータパケットを取り出してホストコントローラ１０に送信する。
ここで送信したデータパケットに対する応答としてホストコントローラ１０のＡＣＫパケットをホスト側通信装置２０が受信した場合には、ホスト側通信装置２０はステップＳ１８で該当するデータパケットを記憶部２５のメモリから削除する。
【００３７】
また、ステップＳ１６で該当する要求されたデータパケットが記憶部２５のメモリに存在しない場合には、ステップＳ１９に進み、ホスト側通信装置２０はＮＡＫをホストコントローラ１０に返信する。
一方、ホスト側通信装置２０が周辺機器側通信装置３０からの情報を受け取った場合には、図３に示す動作を実行する。
【００３８】
すなわち、ステップＳ４１でホスト側通信装置２０は周辺機器側通信装置３０からのデータパケットを受信する。
ステップＳ４２では、受け取ったパケットに記載されたＰＩＤ，エンドポイントを抽出し、このデータパケットをＰＩＤ，エンドポイントに対応付けて記憶部２５のメモリに蓄積する。
【００３９】
これらの動作を繰り返し行う。
次に、図２に示す周辺機器側通信装置３０の動作について説明する。
ホストコントローラ１０から送信されホスト側通信装置２０で中継されて送出されたトークンパケットは、周辺機器側通信装置３０が図２のステップＳ２１で受信する。
【００４０】
周辺機器側通信装置３０は、このトークンパケットを受信した後、次のステップＳ２２でトークンパケットの内容を調べ、それがＩＮパケットの送信要求であるか否か、すなわちＩＮパケットフラグがあるか否かを識別する。
ＩＮパケットの送信要求でない場合には、ステップＳ２２からＳ２３に進み、続くデータパケットがホスト側通信装置２０から到着するか否かを確認する。データパケットが到着した場合には、そのデータパケットを周辺機器側通信装置３０がステップＳ２４で受信する。
【００４１】
その後、周辺機器側通信装置３０はステップＳ２１で受信したトークンパケットと受信したデータパケット（もしあれば）とをステップＳ２５で周辺機器４０に対して送信する。
また、ステップＳ２５で送信したパケットに対する周辺機器４０からの応答であるＡＣＫパケットを周辺機器側通信装置３０が受信したか否かをステップＳ２６で確認する。
【００４２】
ＡＣＫパケットが到着しない場合には、ステップＳ２６からＳ２５に戻って同じパケットを再び送信する。ＡＣＫパケットが到着するとステップＳ２１の処理に戻る。
一方、周辺機器側通信装置３０が受信したホストコントローラ１０からのトークンパケットがＩＮパケットの送信要求であった場合には、ステップＳ２２からＳ２７に進む。
【００４３】
ステップＳ２７では、周辺機器側通信装置３０はステップＳ２１で受信したトークンパケットを周辺機器４０に対して送信する。
また、ステップＳ２７で送信したパケットに対する応答として周辺機器４０から送信されるパケットを周辺機器側通信装置３０はステップＳ２８で受信する。ステップＳ２９では、ステップＳ２８で受信したパケットがデータパケットであるか否かを識別する。そして、データパケットである場合にはステップＳ３０に進む。
【００４４】
ステップＳ３０では、周辺機器４０からのデータパケットに対する応答として、周辺機器側通信装置３０はＡＣＫを周辺機器４０へ送信する。
ステップＳ３１では、周辺機器側通信装置３０はホストコントローラ１０からのトークンパケットに記載された宛先のＰＩＤ，エンドポイントをステップＳ２８で周辺機器４０から受信したデータパケットに付加する。
【００４５】
そして、このデータパケットを周辺機器側通信装置３０は次のステップＳ３２でホスト側通信装置２０に送信する。
ステップＳ２８でデータパケット以外のパケット（ＡＣＫ，ＮＡＫ，ＳＴＡＬＬ）を受信した場合には、ステップＳ２９からＳ２１に戻る。
周辺機器側通信装置３０は、これらの動作を繰り返し行う。
【００４６】
また、周辺機器側通信装置３０は図４に示す処理を周期的に実行する。
図４のステップＳ５１では、周辺機器側通信装置３０は周辺機器４０に対してＳＯＦフレームを送信すると共に、ＳＯＦフレームに入力する値（フレーム番号）を１増やす。
その後、周辺機器側通信装置３０はステップＳ５２で１ｍｓｅｃの時間待ちを行った後、再びステップＳ５１に戻る。
【００４７】
従って、周辺機器４０には周辺機器側通信装置３０から１ｍｓｅｃの間隔で周期的にＳＯＦフレームが入力される。
次に、システム全体の動作例について図６，図７を参照して説明する。ホストコントローラ１０から周辺機器４０へ向けて下り方向にデータを伝送する場合の動作が図６に示されており、周辺機器４０からホストコントローラ１０に向けて上り方向にデータを伝送する場合の動作が図７に示されている。
【００４８】
図６に示すように、ホストコントローラ１０がトークンパケットＰ１２及びデータパケットＰ１１を周辺機器４０に向けて送信すると、ホスト側通信装置２０はそれを受信してからＡＣＫパケットＰ１３をホストコントローラ１０に返す。また、ホスト側通信装置２０はホストコントローラ１０から受信した各パケットをトークンパケットＰ１５及びデータパケットＰ１４として周辺機器側通信装置３０へ送信する。
【００４９】
周辺機器側通信装置３０は、ホスト側通信装置２０から送信された各パケットを受信し、それをトークンパケットＰ１７及びデータパケットＰ１６として周辺機器４０に送信する。
【００５０】
周辺機器側通信装置３０からのパケットを周辺機器４０が受信すると周辺機器４０はＡＣＫパケットＰ１８を周辺機器側通信装置３０に返す。
ここで、ホストコントローラ１０からのパケットＰ１１，Ｐ１２の送信に対する応答が、周辺機器４０ではなくホスト側通信装置２０から直接、ＡＣＫパケットＰ１３としてホストコントローラ１０に返されるので、ホスト側通信装置２０と周辺機器側通信装置３０との間の伝送遅延時間が大きい場合であっても、短時間で応答を返すことができる。
【００５１】
従って、ホストコントローラ１０と周辺機器４０との間でＵＳＢ規格の仕様を超える長さの通信網を形成した場合であっても、正常な通信が可能である。
一方、周辺機器４０からホストコントローラ１０へデータを送る場合には、図７に示すような動作が実施される。
図７において、ホストコントローラ１０はそれが周辺機器４０宛に送信するトークンパケットＰ２１により、周辺機器４０に対してデータの送信が可能である（送信を許可した）ことを通知する。
【００５２】
ホスト側通信装置２０はトークンパケットＰ２１を受信するとそれに対して応答するが、この時点ではホスト側通信装置２０は周辺機器４０からのデータパケットをまだ受け取っておらずメモリに保持していないので、ＮＡＫパケットＰ２２をホストコントローラ１０に返す。
ホスト側通信装置２０は、ホストコントローラ１０から受信したトークンパケットＰ２１をトークンパケットＰ２３として周辺機器側通信装置３０に転送する。
【００５３】
周辺機器側通信装置３０は、ホスト側通信装置２０からのトークンパケットＰ２３を受信すると、それをトークンパケットＰ２４として周辺機器４０に転送する。
周辺機器４０は、周辺機器側通信装置３０から転送されたトークンパケットＰ２４の受信により、自分に送信権があることを知る。そして、周辺機器４０はデータパケットＰ２５を作成しそれを周辺機器側通信装置３０に送信する。
【００５４】
周辺機器側通信装置３０は、周辺機器４０からのデータパケットＰ２５を受信すると、それに対する応答としてＡＣＫパケットＰ２６を周辺機器４０に送信する。また、周辺機器側通信装置３０は周辺機器４０からのデータパケットＰ２５を送信元の情報を付加したデータパケットＰ２７としてホスト側通信装置２０に転送する。
【００５５】
なお、ＡＣＫパケットＰ２６の送信とデータパケットＰ２７の送信のタイミングについてはどちらが先でもよいし同時でもよい。
ホスト側通信装置２０は、周辺機器側通信装置３０から転送されたデータパケットＰ２７を受信すると、ステップＳ７１で、送信元の情報に対応付けてそのデータパケットをメモリに保持する。
【００５６】
その後、ホストコントローラ１０から再び周辺機器４０に対してデータを送信可能であることを表すトークンパケットＰ３０が送信される。このトークンパケットＰ３０をホスト側通信装置２０が受信すると、該当するデータパケットがホスト側通信装置２０のメモリに保持されているので、ホスト側通信装置２０はそのデータをメモリから取り出してデータパケットＰ３１としてホストコントローラ１０に送信する。
【００５７】
ホストコントローラ１０は、ホスト側通信装置２０からのデータパケットＰ３１を受信すると、それを受信したことを表す応答としてＡＣＫパケットＰ３２をホスト側通信装置２０に返す。
この場合、ホスト側通信装置２０はＡＣＫパケットＰ３２を受信すると該当するデータパケットをメモリ上から削除する。
【００５８】
また、ホスト側通信装置２０はトークンパケットＰ３０を受信すると、それをトークンパケットＰ３３として周辺機器側通信装置３０に転送する。周辺機器側通信装置３０は、トークンパケットＰ３３を受信するとそれをトークンパケットＰ３４として周辺機器４０に送信する。
【００５９】
このように、周辺機器４０が送信するデータパケットを予めホスト側通信装置２０のメモリ上に保持しておき、ホストコントローラ１０からのトークンパケットを受信した時に、ホスト側通信装置２０が直接ホストコントローラ１０に対して該当するデータパケットを送信するので、ホスト側通信装置２０と周辺機器側通信装置３０との間の伝送遅延時間が大きい場合であっても、ホストコントローラ１０が周辺機器４０に対して送信を要求してから短時間で応答することができる。このため、ホストコントローラ１０と周辺機器４０との間の距離が大きい場合であっても、ＵＳＢの規格に違反することなく情報を正常に伝送できる。
【００６０】
以上に示した動作例は、一般的な転送モードの場合を想定している。ＵＳＢ規格ではＡＣＫパケットの存在しないアイソクロナス転送モードを利用することもできる。
そこで、アイソクロナス転送モードを使う可能性がある場合には、図９，図１０に示すようにホスト側通信装置２０及び周辺機器側通信装置３０の動作を変更すればよい。
【００６１】
図９において、ホスト側通信装置２０はステップＳ８１でアイソクロナス転送モードか否かを識別し、周辺機器側通信装置３０はステップＳ８２でアイソクロナス転送モードか否かを識別する。
図９の例では、アイソクロナス転送モードの場合を想定しているので、図６に示したＡＣＫパケットＰ１３やＡＣＫパケットＰ１８の送信は省略される。
【００６２】
同様に、図１０においてホスト側通信装置２０はステップＳ８３でアイソクロナス転送モードか否かを識別し、周辺機器側通信装置３０はステップＳ８４でアイソクロナス転送モードか否かを識別する。
図１０の例では、アイソクロナス転送モードの場合を想定しているので、図７に示した各パケットＰ２２，Ｐ２６，Ｐ３２の送信は省略されている。
【００６３】
なお、ホスト側通信装置２０と周辺機器側通信装置３０との間の通信回線においてデータパケットの転送に失敗すると、ホストコントローラ１０と周辺機器４０との間で伝送したデータの不一致が生じることになる。しかし、この例では誤り補償制御部２４，３４の制御によりホスト側通信装置２０と周辺機器側通信装置３０との間でデータ伝送に誤りが発生した場合には再送などの手続きを行うので、確実にデータが伝送される。これにより、ホストコントローラ１０と周辺機器４０との間でデータの不一致が生じるのが防止される。
【００６４】
【発明の効果】
本発明によれば、ＵＳＢの通信区間を従来より大幅に延長することが可能になる。
【図面の簡単な説明】
【図１】ホスト側通信装置の動作（１）を示すフローチャートである。
【図２】周辺機器側通信装置の動作（１）を示すフローチャートである。
【図３】ホスト側通信装置の動作（２）を示すフローチャートである。
【図４】周辺機器側通信装置の動作（２）を示すフローチャートである。
【図５】通信システムの主要部の構成例を示すブロック図である。
【図６】下り方向の通信動作を示すシーケンス図である。
【図７】上り方向の通信動作を示すシーケンス図である。
【図８】通信システムの主要部の構成例を示すブロック図である。
【図９】アイソクロナス転送モードの下り方向の通信動作を示すシーケンス図である。
【図１０】アイソクロナス転送モードの上り方向の通信動作を示すシーケンス図である。
【符号の説明】
１０  ホストコントローラ
１１  ＵＳＢインタフェース
２０  ホスト側通信装置
２１  ＵＳＢインタフェース
２２  通信制御部
２３  通信インタフェース
２４  誤り補償制御部
２５  記憶部
３０  周辺機器側通信装置
３１  通信インタフェース
３２  通信制御部
３３  ＵＳＢインタフェース
３４  誤り補償制御部
４０  周辺機器
４１  ＵＳＢインタフェース
５１，５２  ＵＳＢケーブル
５３  通信回線
６１，６２  無線通信インタフェース
【図１】
2004246750.tif 000003
【図２】
2004246750.tif 000004
【図３】
2004246750.tif 000005
【図４】
2004246750.tif 000006
【図５】
2004246750.tif 000007
【図６】
2004246750.tif 000008
【図７】
2004246750.tif 000009
【図８】
2004246750.tif 000010
【図９】
2004246750.tif 000011
【図１０】
2004246750.tif 000012