(57)【要約】【課題】  ホスト−ファンクション間でＵＳＢ２．０のネイティブ速度と比べて転送速度が低い通信路を用いた場合でも、ＵＳＢ２．０のＯＵＴトランザクションによるデータ転送を問題なく行える送受信システムを実現する。【解決手段】  ホスト側コントローラ１００においてＵＳＢホストからのＯＵＴパケットおよびＤＡＴＡパケットの受信を確認すると、これらのパケットをファンクション側コントローラ１１０に転送し、ファンクション側からＡＣＫパケットを受信する。受信したＡＣＫパケットはＦＩＦＯ１０８にて一旦格納し、ＵＳＢホストから再度ＯＵＴパケットおよびＤＡＴＡパケットを受信した時点で、ＦＩＦＯ１０８に格納されているＤＡＴＡパケットをＵＳＢホストへ送信する。【選択図】  図１
2005107683.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ上のデータ通信としてＯＵＴトランザクションを行う際に、ホスト装置から送信されるＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置側に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置に転送するホスト側コントローラとして機能する通信コントローラであって、
ホスト装置からのＯＵＴパケットおよびＤＡＴＡパケットの受信を確認する受信確認手段と、
ファンクション装置側から送信されてくるハンドシェイクパケットを格納する格納手段と、
上記受信認識手段によりホスト装置からのＯＵＴパケットおよびＤＡＴＡパケット受信が確認された時点で、上記格納手段にハンドシェイクパケットが格納されているか否かを確認する格納確認手段と、
上記格納確認手段により上記ハンドシェイクパケットが格納されていないことが確認された時には、ホスト装置にＮＡＫパケットを送信し、上記格納確認手段によりハンドシェイクパケットが格納されていることが確認された時には、ホスト装置に該ハンドシェイクパケットを送信する送信制御手段とを備えていることを特徴とする通信コントローラ。
【請求項２】
上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、
ホスト側コントローラからのＯＵＴパケットおよびＤＡＴＡパケットの受信およびホスト側コントローラへのハンドシェイクパケットの送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ＯＵＴパケットおよびＤＡＴＡパケットのファンクション装置への送信およびファンクション装置からのハンドシェイクパケットの受信に係る転送速度がＵＳＢ規格に定められた転送速度であり、
さらに、ホスト側コントローラから受信したＯＵＴパケットおよびＤＡＴＡパケットを上記格納手段に格納する際の格納データ量を確認するデータ量確認手段を有し、
上記送信制御手段は、上記データ量確認手段によって確認された受信データ量が予め定められた値よりも多くなった時点で、ファンクション装置へのＯＵＴパケットおよびＤＡＴＡパケットの送信を開始することを特徴とする請求項１に記載の通信コントローラ。
【請求項３】
上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、
ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、
上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断される場合、該ＤＡＴＡパケットを破棄し、ファンクション装置に転送しないことを特徴とする請求項１に記載の通信コントローラ。
【請求項４】
ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、
上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、ファンクション側コントローラへのＤＡＴＡパケットの送信をその時点で中止することを特徴とする請求項１に記載の通信コントローラ。
【請求項５】
上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、
上記受信確認手段は、ファンクション装置にＤＡＴＡパケットを送信した後、該ＤＡＴＡパケットに対するＡＣＫパケットがファンクション装置から返ってきたか否かを確認し、
上記送信制御手段は、ファンクション装置にＤＡＴＡパケットを送信した後、所定時間内に上記受信確認手段によるＡＣＫパケットの受信が確認されなかった場合には、前回ファンクション装置に送信したものと同じＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に送信する再送処理を行うことを特徴とする請求項１に記載の通信コントローラ。
【請求項６】
ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、
上記送信制御手段は、上記再送処理を、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行うことを特徴とする請求項５に記載の通信コントローラ。
【請求項７】
ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、ホスト装置に対してＡＣＫパケットを送信することを特徴とする請求項１に記載の通信コントローラ。
【請求項８】
ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、
ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、
上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、または、ファンクション側コントローラからそれ以前に送信したＤＡＴＡパケットに対するＡＣＫパケットを受信していた場合は、ホスト装置に対してＡＣＫパケットを送信し、
それ以外の場合は、ホスト装置に対してＮＡＫパケットを送信することを特徴とする請求項１に記載の通信コントローラ。
【請求項９】
上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、
ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段と、
上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、ホスト側コントローラにＤＡＴＡパケットの再送要求を行う再送要求手段とを有していることを特徴とする請求項１に記載の通信コントローラ。
【請求項１０】
ファンクション側コントローラから再送要求を受信した場合には、前回ファンクション側コントローラに送信したＤＡＴＡパケットと同じＤＡＴＡパケットをホスト側コントローラに送信する再送処理を行うことを特徴とする請求項１に記載の通信コントローラ。
【請求項１１】
ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、
上記送信制御手段は、上記再送処理を、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行うことを特徴とする請求項１０に記載の通信コントローラ。
【請求項１２】
上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合、ファンクション側コントローラへ送信するＤＡＴＡパケットのパケットフォーマット中に、該ＤＡＴＡパケットには誤りが無いことを示すフラグを立てることを特徴とする請求項１１に記載の通信コントローラ。
【請求項１３】
ホスト側コントローラからＤＡＴＡパケットを受信し、該ＤＡＴＡパケットにおいて誤りのあることが上記誤り解析手段により検出された場合、
上記ホスト側コントローラで保有されているＤＡＴＡパケットにおける誤りの有無を示すフラグが受信したＤＡＴＡパケットに立てられており、該フラグによりホスト側コントローラ側で誤りの無いＤＡＴＡパケットが保有されていることが確認された場合のみ上記再送要求を行うことを特徴とする請求項９に記載の通信コントローラ。
【請求項１４】
ファンクション側コントローラから再送要求を受信し、その後、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、ホスト装置に対してＡＣＫパケットを送信することを特徴とする請求項１に記載の通信コントローラ。
【請求項１５】
上記ＯＵＴトランザクションの実行前に、通信相手側の通信コントローラと転送速度調整を行うことを特徴とする請求項１に記載の通信コントローラ。
【請求項１６】
上記転送速度調整において、ＵＳＢ規格に定められた転送速度で通信が可能であると判断される場合は、
通信相手側の通信コントローラに送信される各パケットは、パケットの送信タイミング制御を行わずに、変復調のみを行って相手側の通信コントローラへの転送を行うことを特徴とする請求項１５記載の通信コントローラ。
【請求項１７】
通信相手側の通信コントローラとの間での通信路におけるエラーレートを解析し、該エラーレートが予め定められたエラーレートよりも悪いと判断される場合、上記転送速度調整を行って転送速度を下げることを特徴とする請求項１５記載の通信コントローラ。
【請求項１８】
通信相手側の通信コントローラとの間で、全二重通信を行うことを特徴とする請求項１ないし１７の何れかに記載の通信コントローラ。
【請求項１９】
通信相手側の通信コントローラとの間の通信が、光ファイバを用いた通信路によって行われるものであることを特徴とする請求項１ないし１８の何れかに記載の通信コントローラ。
【請求項２０】
通信相手側の通信コントローラとの間の通信が、電波を用いた無線によって行われるものであることを特徴とする請求項１ないし１７の何れかに記載の通信コントローラ。
【請求項２１】
通信相手側の通信コントローラとの間の通信が、光を用いた空間伝送によって行われるものであることを特徴とする請求項１ないし１８の何れかに記載の通信コントローラ。
【請求項２２】
ＵＳＢ上のデータ通信としてＯＵＴトランザクションを行う際に、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとして通信コントローラであって、
ホスト装置側との送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ファンクション装置への送信に係る転送速度がＵＳＢ規格に定められた転送速度であり、
ホスト装置側から送信されるＯＵＴパケットおよびＤＡＴＡパケットの受信が完了した時点で、該ＯＵＴパケットおよびＤＡＴＡパケットのファンクション装置への転送を開始することを特徴とする通信コントローラ。
【請求項２３】
ＵＳＢ上のデータ通信としてＯＵＴトランザクションを行う際に、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとして通信コントローラであって、
ホスト装置側との送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ファンクション装置への送信に係る転送速度がＵＳＢ規格に定められた転送速度であり、
ホスト側コントローラから受信したＯＵＴパケットおよびＤＡＴＡパケットを上記格納手段に格納する際の格納データ量を確認するデータ量確認手段を有し、
上記送信制御手段は、上記データ量確認手段によって確認された受信データ量が予め定められた値よりも多くなった時点で、ファンクション装置へのＯＵＴパケットおよびＤＡＴＡパケットの送信を開始することを特徴とする通信コントローラ。
【請求項２４】
ファンクション装置にＤＡＴＡパケットを送信した後、該ＤＡＴＡパケットに対するＡＣＫパケットがファンクション装置から返ってきたか否かを確認し、ＤＡＴＡパケットの送信から所定時間内に上記受信確認手段によるＡＣＫパケットの受信が確認されなかった場合には、前回ファンクション装置に送信したものと同じＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に送信する再送処理を行うことを特徴とする請求項２２または２３に記載の通信コントローラ。
【請求項２５】
ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析し、
上記再送処理を、上記解析により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行うことを特徴とする請求項２４に記載の通信コントローラ。
【請求項２６】
ホスト装置側から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析し、上記解析により、受信したＤＡＴＡパケットが誤っていると判断された場合、ホスト側コントローラにＤＡＴＡパケットの再送要求を行うことを特徴とする請求項２２または２３に記載の通信コントローラ。
【請求項２７】
ホスト装置側からＤＡＴＡパケットを受信し、該ＤＡＴＡパケットにおいて誤りのあることが検出された場合、
上記ホスト側コントローラで保有されているＤＡＴＡパケットにおける誤りの有無を示すフラグが受信したＤＡＴＡパケットに立てられており、該フラグによりホスト側コントローラ側で誤りの無いＤＡＴＡパケットが保有されていることが確認された場合のみ上記再送要求を行うことを特徴とする請求項２６に記載の通信コントローラ。
【請求項２８】
上記請求項１，４，７，８，１０，１１，１２，１４の何れかに記載のホスト側コントローラとして機能する通信コントローラと、
ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとして機能する通信コントローラとを備えたことを特徴とする通信システム。
【請求項２９】
請求項１ないし２７の何れかに記載の通信コントローラを備えた通信機器。
【請求項３０】
ホスト装置からのＯＵＴパケットおよびＤＡＴＡパケットの受信を確認すると、その時点で該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットを受信しているか否かを確認し、
上記ハンドシェイクパケットを受信している場合には、受信した上記ＯＵＴパケットおよびＤＡＴＡパケットに対して該ハンドシェイクパケットをホスト装置に送信し、
上記ハンドシェイクパケットを受信していない場合には、ホスト装置にＮＡＫパケットを送信することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ規格におけるＵＳＢ信号の伝送を行う通信コントローラに関するものである。
【背景技術】
【０００２】
ユニバーサルシリアルバス（Universal Serial Bus：以下ＵＳＢ）は、パーソナルコンピュータ等において、周辺装置の拡張性の自由度を高めるために開発されたインタフェース仕様であり、様々なＵＳＢ対応デバイスとの通信に共通に使用できるシリアルインタフェース規格である。
【０００３】
このＵＳＢは、原理上、１つのシステムの中で、１台のホストと最大１２７台までのデバイスを同一バス上に接続できる。これらの接続は、物理的にはツリー型のネットワーク構造のバスであり、論理的にはＵＳＢホストのクライアントソフトウェアとＵＳＢファンクションのクライアントソフトウェアとが１対１で通信する。このような接続形態を維持するために、最下層のプロトコルは時分割で通信し、ホストがスケジューリングを行う。ＵＳＢ１.ｘでは、ロースピードモード（以下ＬＳ）において１.５Ｍｂｐｓ、また、フルスピードモード（以下ＦＳ）において１２Ｍｂｐｓと２つのデータ転送速度が規定されている。
【０００４】
近年、ハードディスク、ＤＶＤなどの高速データ転送が必要なアプリケーションにＵＳＢが採用されるようになり、前記転送速度では不十分となってきていた。そこで、ＵＳＢ２．０という新しい規格が策定され、ＵＳＢ２．０規格では、ハイスピードモード（以下ＨＳ）において、４８０Ｍｂｐｓと非常に高速なデータ転送速度が追加された。
【０００５】
ＵＳＢ上のデータ通信は、トランザクションと呼ばれる単位で行われる。このトランザクションは、トークンパケット、データパケット、そしてハンドシェイクパケットと呼ばれるパケットで構成されている。ホストがトランザクション開始時に発行するトークンパケットで必ず始まり、トークンパケットに含まれるアドレス及びエンドポイントにより、対応するファンクションが応答する。
【０００６】
エンドポイントとは、転送データを格納するためのＦＩＦＯバッファのことであり、ＵＳＢホストとＵＳＢファンクションとのデータのやりとりは、かならずエンドポイントを介して実行される。ＵＳＢファンクションは、最大１６個のエンドポイントを持つことができ、複数のエンドポイントを認識するために、エンドポイントには番号がつけられる。ＵＳＢホストはデータ転送の際にＵＳＢファンクションのＵＳＢアドレスとエンドポイントとによりアクセスを行う。エンドポイントの中で０番のものは、エンドポイント０と呼ばれ、ＵＳＢファンクションに必ず１つ存在しなければならない。このエンドポイント０は、コントロール転送時にＳＥＴＵＰパケットによって行われる初期化時に用いられる。
【０００７】
ＵＳＢパケットの種別としては、図１７に示すように、トークンパケット、データパケット、ハンドシェイクパケット、及び特殊（スペシャル）パケットがある。トークンパケットには、ＩＮパケット、ＯＵＴパケット、ＳＥＴＵＰパケット、ＳＯＦパケットがある。それぞれのパケットは、図１７に示す目的で用いられる。データパケットには、ＤＡＴＡ０パケット、ＤＡＴＡ１パケットなどがある。ハンドシェイクパケットには、ＡＣＫパケット、ＮＡＫパケット、ＳＴＡＬＬパケット、ＮＹＥＴパケットがある。また、特殊パケットとして、ＰＩＮＧパケットなどがある。
【０００８】
ＵＳＢのパケットフォーマットを図１８に示す。ＰＩＤはパケットの識別子であり８ビットで構成される。また、トークンパケットにはＣＲＣ５、データパケットにはＣＲＣ１６がそれぞれ付加されており、パケットを受信した際に前記ＣＲＣをチェックすることで、パケットの中身が正しいかどうかを判別することが可能となる。
【０００９】
ＳＯＦパケットは、ホストが発行するフレームの始まりを示すパケットである。ＳＯＦパケットは、ＬＳ、ＦＳモードでは１ｍｓ周期で、またＨＳモードでは、１２５ｕｓ周期でホストから発行される。
【００１０】
〔ＯＵＴトランザクション〕
ＵＳＢ２．０規格におけるＵＳＢホストがＵＳＢファンクションにデータを書き込む方法として、ＯＵＴトランザクションがある。以下に図１９を用いて、ＯＵＴトランザクションを説明する。
【００１１】
まず、タイミングｔ１９０１において、ＵＳＢホストはＵＳＢファンクションにＯＵＴパケットを送信し、ＯＵＴトランザクションの開始を通知した後、ｔ１９０２において、ＤＡＴＡパケットを送信する。ＵＳＢファンクションは、ＵＳＢホストから受信したＯＵＴパケット及びＤＡＴＡパケットのＣＲＣチェックを行い、受信パケットに誤りがないかどうかを判別する。上記受信パケットに誤りが無い場合、ＵＳＢファンクションは、受信ＤＡＴＡのパケットを処理できる状態であればＡＣＫパケットを、受信ＤＡＴＡのパケットを処理できる状態でなければＮＡＫパケットをＵＳＢホストに返す。また、受信パケットに誤りがある場合は、何も返さない。図１９においては、受信パケットに誤りは無いが、ＵＳＢファンクションが受信ＤＡＴＡのパケットを処理できない状態であるとして、ｔ１９０３においてＮＡＫパケットを返している。
【００１２】
このＮＡＫパケットを受信したＵＳＢホストは、ＵＳＢファンクションが受信パケットを処理できる状態でないことを認識し、ＵＳＢファンクションの状態を把握するために、ｔ１９０４においてＰＩＮＧパケットを送信する。前記ＰＩＮＧパケットを受信したＵＳＢファンクションは、データを処理できる状態であるならばＡＣＫパケットを、またデータを処理できる状態でなければＮＡＫパケットをＵＳＢホストに送信する。図１９においては、タイミングｔ１９０５においてデータの処理ができる状態であるとし、ＡＣＫパケットを送信している。
【００１３】
ＵＳＢホストは、前記ＰＩＮＧパケットに対してＡＣＫパケットが返ってきたことから、ＵＳＢファンクションがデータを処理できる状態であることを認識する。ＵＳＢホストが、仮にＮＡＫパケットを受信した場合は、ＵＳＢファンクションがデータを処理できない状態であると認識し、再びＰＩＮＧパケットを送信してＵＳＢファンクションがデータを処理できる状態になるまで繰り返す。図１９においては、ＰＩＮＧパケットに対してＡＣＫパケットを受信し、ＵＳＢファンクションがデータを処理できる状態であると認識できたため、ＵＳＢホストは、ｔ１９０６において再びＯＵＴパケットを、またｔ１９０７において再びＤＡＴＡパケットを送信する。これを受信したＵＳＢファンクションは、今度はデータを処理できる状態であるため、受信パケットのＣＲＣチェック後、誤りがなければＡＣＫパケットを送信する。ＵＳＢホストは前記ＡＣＫパケットを受信することで、ＯＵＴパケット及びＤＡＴＡパケットがＵＳＢファンクションに誤り無く転送され、また処理されたことを認識し、ＯＵＴトランザクションを終了する。
【００１４】
前期の方法によりＯＵＴトランザクションが行われ、ＵＳＢホストはＵＳＢファンクションにデータを書き込むことが可能となる。
【００１５】
〔ＵＳＢの時間的制約〕
ＵＳＢ２．０規格では、データ信号の伝播時間に制約が存在する。
【００１６】
ＬＳ及びＦＳモードでは、ＵＳＢホストからＵＳＢファンクションまでのターンアラウンドタイムは１６ビットタイム（１３３３ｎｓ）以下でなければならない。つまり、ＵＳＢホストがＵＳＢファンクションに向けて送信したパケットに対するＵＳＢファンクションからの返答パケットが、前記１３３３ｎｓ以内にＵＳＢホストに届かない場合、ＵＳＢホストはＵＳＢファンクションに送信したパケットは正常にＵＳＢファンクションに届かなかったとみなし、前記パケットを再送する。
【００１７】
また、ＨＳモードでは、ＵＳＢホストからＵＳＢファンクションまでのターンアラウンドタイムは７２１ビットタイム（１５０２ｎｓ）以下でなければならない。ＵＳＢホストがＵＳＢファンクションに向けて送信したパケットに対するＵＳＢファンクションからの返答パケットが、前記１５０２ｎｓ以内にＵＳＢホストに届かない場合、ＵＳＢホストはＵＳＢファンクションに送信したパケットは正常にＵＳＢファンクションに届かなかったとみなし、前記パケットを再送する。
【００１８】
前記ＯＵＴトランザクションにおいて、ＵＳＢホストがＤＡＴＡパケット送信後に待つ予め定められた時間は、ＵＳＢの時間制約として定められているＬＳ、ＦＳモードにおける１３３３ｎｓおよびＨＳモードにおける１５０２ｎｓである。各転送モードにおいて、前記の制約時間以内に前記ＡＣＫパケット（もしくは他のハンドシェイクパケット）を受信できなければ、ＯＵＴトランザクションは正常に終了しない。
【特許文献１】特開２０００−２８４８７２号公報（公開日平成１２年１０月１３日）
【発明の開示】
【発明が解決しようとする課題】
【００１９】
近年、デジタルカメラ、ＰＤＡ（Personal Digital Assistants）などにＵＳＢが搭載されるようになってきている。これらのモバイル機器におけるデータ伝送手段では、クレイドル方式が多く用いられており、クレイドルについたＵＳＢコネクタと前記モバイル機器のＵＳＢコネクタとを接続することでＵＳＢ伝送を可能としている。これらのコネクタは物理的な接点を持つため、コネクタの抜き差しによりコネクタの劣化が進み、品質の高いデータ転送が困難になる可能性がある。
【００２０】
前記の物理的な接点をなくす方法として、光を用いた空間伝送を行う方法があるが、ＵＳＢ２．０の４８０Ｍｂｐｓをそのまま空間伝送するためには、光学系及び受信部でのＣＤＲ（Clock Data Recovery）などに高い性能が必要となり、コスト増へとつながる。前記光学系及び受信部でのＣＤＲのコストを抑えるためには、より低速な転送速度でＵＳＢ２．０のデータ転送を行うことが考えられるが、その場合は以下のような問題がある。
【００２１】
図２０に光通信路の転送速度をたとえば１００Ｍｂｐｓと、ＵＳＢ２．０のネイティブ速度４８０Ｍｂｐｓよりも遅い転送速度にした場合のＯＵＴトランザクションの様子を示す。
【００２２】
ＵＳＢホストにより、タイミングｔ２００１に送信されたＯＵＴパケット及びタイミングｔ２００２に送信されたＤＡＴＡパケットは、ホスト側コントローラにより光信号に変換され、ファンクション側コントローラに送信される。ファンクション側コントローラは受信した光信号から、ＵＳＢパケットを抽出し、ＵＳＢファンクションに送信する。ここで、ファンクション側コントローラがＵＳＢファンクションに送信を開始するタイミングがｔ２００３であるのは、ＵＳＢファンクションに対する送信ではＵＳＢネイティブの４８０Ｍｂｐｓでの転送が行われるためである。
【００２３】
ＵＳＢファンクションが前記ＯＵＴパケット及びＤＡＴＡパケットを誤り無く受信し、かつ処理できた場合、タイミングｔ２００４において、ＵＳＢホストに向けてＡＣＫパケットを送信する。ファンクション側コントローラは、ＵＳＢファンクションからのＡＣＫパケットを光信号に変換し、ホスト側コントローラに送信する。ホスト側コントローラは、ファンクション側コントローラと同様にＡＣＫパケットの受信完了を待ってから、ｔ２００５にＵＳＢホストに向かってＡＣＫパケットを送信する。ＵＳＢホストは、ｔ２００６に初めてＵＳＢファンクションからのＡＣＫパケットを受信することが可能となる。
【００２４】
ここで、ホスト−ファンクション間でのデータ転送速度がＵＳＢ２．０のネイティブ速度と比べて遅い場合（特に、ＤＡＴＡパケット長が長い場合）、ｔ２００１からｔ２００６までの時間（ターンアラウンドタイム）が長くなるため、最大ターンアラウンドタイム（ＨＳモードにおける１５０２ｎｓ）を超えてしまうこととなり、ＯＵＴトランザクションが正常に終了しないこととなる。
【００２５】
また、上記図２０では、ＵＳＢホストから送信されるＯＵＴパケット及びＤＡＴＡパケットに対して、ＵＳＢファンクションからＡＣＫパケットが返信される場合を示している。しかしながら、ＯＵＴトランザクションでは、ＯＵＴパケット及びＤＡＴＡパケットを受信した時点でのＵＳＢファンクションの状態により、ＡＣＫパケット以外のハンドシェイクパケット（ＮＡＫパケット等）が返信されてくる場合もある。このように、ＵＳＢファンクションがＡＣＫパケット以外のハンドシェイクパケットを返してくる場合においても、このハンドシェイクパケットのＵＳＢホストでの受信が最大ターンアラウンドタイムを超えてしまう場合には、ＯＵＴトランザクションが正常に行えず、同様の問題が生じる。
【００２６】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、ホスト−ファンクション間でＵＳＢ２．０のネイティブ速度と比べて転送速度が低い通信路（例えば１００Ｍｂｐｓの光通信路）を用いた場合でも、ＵＳＢ２．０のＯＵＴトランザクションによるデータ転送を問題なく行える送受信回路を実現することにある。
【課題を解決するための手段】
【００２７】
本発明に係る通信コントローラは、上記課題を解決するために、ＵＳＢ上のデータ通信としてＯＵＴトランザクションを行う際に、ホスト装置から送信されるＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置側に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置に転送するホスト側コントローラとして機能する通信コントローラであって、ホスト装置からのＯＵＴパケットおよびＤＡＴＡパケットの受信を確認する受信確認手段と、ファンクション装置側から送信されてくるハンドシェイクパケットを格納する格納手段と、上記受信認識手段によりホスト装置からのＯＵＴパケットおよびＤＡＴＡパケット受信が確認された時点で、上記格納手段にハンドシェイクパケットが格納されているか否かを確認する格納確認手段と、上記格納確認手段により上記ハンドシェイクパケットが格納されていないことが確認された時には、ホスト装置にＮＡＫパケットを送信し、上記格納確認手段によりハンドシェイクパケットが格納されていることが確認された時には、ホスト装置に該ハンドシェイクパケットを送信する送信制御手段とを備えていることを特徴としている。
【００２８】
また、上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、ホスト側コントローラからのＯＵＴパケットおよびＤＡＴＡパケットの受信およびホスト側コントローラへのハンドシェイクパケットの送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ＯＵＴパケットおよびＤＡＴＡパケットのファンクション装置への送信およびファンクション装置からのハンドシェイクパケットの受信に係る転送速度がＵＳＢ規格に定められた転送速度であり、さらに、ホスト側コントローラから受信したＯＵＴパケットおよびＤＡＴＡパケットを上記格納手段に格納する際の格納データ量を確認するデータ量確認手段を有し、上記送信制御手段は、上記データ量確認手段によって確認された受信データ量が予め定められた値よりも多くなった時点で、ファンクション装置へのＯＵＴパケットおよびＤＡＴＡパケットの送信を開始することを特徴としている。
【００２９】
また、上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断される場合、該ＤＡＴＡパケットを破棄し、ファンクション装置に転送しないことを特徴としている。
【００３０】
また、上記通信コントローラは、ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、ファンクション側コントローラへのＤＡＴＡパケットの送信をその時点で中止することを特徴としている。
【００３１】
また、上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、上記受信確認手段は、ファンクション装置にＤＡＴＡパケットを送信した後、該ＤＡＴＡパケットに対するＡＣＫパケットがファンクション装置から返ってきたか否かを確認し、上記送信制御手段は、ファンクション装置にＤＡＴＡパケットを送信した後、所定時間内に上記受信確認手段によるＡＣＫパケットの受信が確認されなかった場合には、前回ファンクション装置に送信したものと同じＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に送信する再送処理を行うことを特徴としている。
【００３２】
また、上記通信コントローラは、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記再送処理を、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行うことを特徴としている。
【００３３】
また、上記通信コントローラは、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、ホスト装置に対してＡＣＫパケットを送信することを特徴としている。
【００３４】
また、上記通信コントローラは、ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、または、ファンクション側コントローラからそれ以前に送信したＤＡＴＡパケットに対するＡＣＫパケットを受信していた場合は、ホスト装置に対してＡＣＫパケットを送信し、それ以外の場合は、ホスト装置に対してＮＡＫパケットを送信することを特徴としている。
【００３５】
また、上記通信コントローラは、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとしても機能するものであり、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段と、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、ホスト側コントローラにＤＡＴＡパケットの再送要求を行う再送要求手段とを有していることを特徴としている。
【００３６】
また、上記通信コントローラは、ファンクション側コントローラから再送要求を受信した場合には、前回ファンクション側コントローラに送信したＤＡＴＡパケットと同じＤＡＴＡパケットをホスト側コントローラに送信する再送処理を行うことを特徴としている。
【００３７】
また、上記通信コントローラは、ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記再送処理を、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行うことを特徴としている。
【００３８】
また、上記通信コントローラは、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合、ファンクション側コントローラへ送信するＤＡＴＡパケットのパケットフォーマット中に、該ＤＡＴＡパケットには誤りが無いことを示すフラグを立てることを特徴としている。
【００３９】
また、上記通信コントローラは、ホスト側コントローラからＤＡＴＡパケットを受信し、該ＤＡＴＡパケットにおいて誤りのあることが上記誤り解析手段により検出された場合、上記ホスト側コントローラで保有されているＤＡＴＡパケットにおける誤りの有無を示すフラグが受信したＤＡＴＡパケットに立てられており、該フラグによりホスト側コントローラ側で誤りの無いＤＡＴＡパケットが保有されていることが確認された場合のみ上記再送要求を行うことを特徴としている。
【００４０】
また、上記通信コントローラは、ファンクション側コントローラから再送要求を受信し、その後、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、ホスト装置に対してＡＣＫパケットを送信することを特徴としている。
【００４１】
また、上記通信コントローラは、上記ＯＵＴトランザクションの実行前に、通信相手側の通信コントローラと転送速度調整を行うことを特徴としている。
【００４２】
また、上記通信コントローラは、上記転送速度調整において、ＵＳＢ規格に定められた転送速度で通信が可能であると判断される場合は、通信相手側の通信コントローラに送信される各パケットは、パケットの送信タイミング制御を行わずに、変復調のみを行って相手側の通信コントローラへの転送を行うことを特徴としている。
【００４３】
また、上記通信コントローラは、通信相手側の通信コントローラとの間での通信路におけるエラーレートを解析し、該エラーレートが予め定められたエラーレートよりも悪いと判断される場合、上記転送速度調整を行って転送速度を下げることを特徴としている。
【００４４】
また、上記通信コントローラは、通信相手側の通信コントローラとの間で、全二重通信を行うことを特徴としている。
【００４５】
また、上記通信コントローラは、通信相手側の通信コントローラとの間の通信が、光ファイバを用いた通信路によって行われるものであることを特徴としている。
【００４６】
また、上記通信コントローラは、通信相手側の通信コントローラとの間の通信が、電波を用いた無線によって行われるものであることを特徴としている。
【００４７】
また、上記通信コントローラは、通信相手側の通信コントローラとの間の通信が、光を用いた空間伝送によって行われるものであることを特徴としている。
【００４８】
また、本発明に係る他の通信コントローラは、上記課題を解決するために、ＵＳＢ上のデータ通信としてＯＵＴトランザクションを行う際に、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとして通信コントローラであって、ホスト装置側との送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ファンクション装置への送信に係る転送速度がＵＳＢ規格に定められた転送速度であり、ホスト装置側から送信されるＯＵＴパケットおよびＤＡＴＡパケットの受信が完了した時点で、該ＯＵＴパケットおよびＤＡＴＡパケットのファンクション装置への転送を開始することを特徴としている。
【００４９】
また、本発明に係るさらに他の通信コントローラは、上記課題を解決するために、ＵＳＢ上のデータ通信としてＯＵＴトランザクションを行う際に、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとして通信コントローラであって、ホスト装置側との送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ファンクション装置への送信に係る転送速度がＵＳＢ規格に定められた転送速度であり、ホスト側コントローラから受信したＯＵＴパケットおよびＤＡＴＡパケットを上記格納手段に格納する際の格納データ量を確認するデータ量確認手段を有し、上記送信制御手段は、上記データ量確認手段によって確認された受信データ量が予め定められた値よりも多くなった時点で、ファンクション装置へのＯＵＴパケットおよびＤＡＴＡパケットの送信を開始することを特徴としている。
【００５０】
また、上記通信コントローラは、ファンクション装置にＤＡＴＡパケットを送信した後、該ＤＡＴＡパケットに対するＡＣＫパケットがファンクション装置から返ってきたか否かを確認し、ＤＡＴＡパケットの送信から所定時間内に上記受信確認手段によるＡＣＫパケットの受信が確認されなかった場合には、前回ファンクション装置に送信したものと同じＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に送信する再送処理を行うことを特徴としている。
【００５１】
また、上記通信コントローラは、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析し、上記再送処理を、上記解析により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行うことを特徴としている。
【００５２】
また、上記通信コントローラは、ホスト装置側から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析し、上記解析により、受信したＤＡＴＡパケットが誤っていると判断された場合、ホスト側コントローラにＤＡＴＡパケットの再送要求を行うことを特徴としている。
【００５３】
また、上記通信コントローラは、ホスト装置側からＤＡＴＡパケットを受信し、該ＤＡＴＡパケットにおいて誤りのあることが検出された場合、上記ホスト側コントローラで保有されているＤＡＴＡパケットにおける誤りの有無を示すフラグが受信したＤＡＴＡパケットに立てられており、該フラグによりホスト側コントローラ側で誤りの無いＤＡＴＡパケットが保有されていることが確認された場合のみ上記再送要求を行うことを特徴としている。
【００５４】
また、本発明に係る通信システムは、上記課題を解決するために、上記記載のホスト側コントローラとして機能する通信コントローラと、ホスト装置側から送信されるＵＳＢ規格のＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に転送し、該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットをホスト装置側に転送するファンクション側コントローラとして機能する通信コントローラとを備えたことを特徴としている。
【００５５】
また、本発明に係る通信機器は、上記課題を解決するために、上記記載の通信コントローラを備えたことを特徴としている。
【００５６】
また、本発明に係る通信方法は、上記課題を解決するために、ホスト装置からのＯＵＴパケットおよびＤＡＴＡパケットの受信を確認すると、その時点で該ＯＵＴパケットおよびＤＡＴＡパケットに対する返答となるハンドシェイクパケットを受信しているか否かを確認し、上記ハンドシェイクパケットを受信している場合には、受信した上記ＯＵＴパケットおよびＤＡＴＡパケットに対して該ハンドシェイクパケットをホスト装置に送信し、上記ハンドシェイクパケットを受信していない場合には、ホスト装置にＮＡＫパケットを送信することを特徴としている。
【発明の効果】
【００５７】
本発明に係る通信コントローラは、以上のように、ホスト装置からのＯＵＴパケットおよびＤＡＴＡパケットの受信を確認する受信確認手段と、ファンクション装置側から送信されてくるハンドシェイクパケットを格納する格納手段と、上記受信認識手段によりホスト装置からのＯＵＴパケットおよびＤＡＴＡパケット受信が確認された時点で、上記格納手段にハンドシェイクパケットが格納されているか否かを確認する格納確認手段と、上記格納確認手段により上記ハンドシェイクパケットが格納されていないことが確認された時には、ホスト装置にＮＡＫパケットを送信し、上記格納確認手段によりハンドシェイクパケットが格納されていることが確認された時には、ホスト装置に該ハンドシェイクパケットを送信する送信制御手段とを備えている。
【００５８】
上記の構成によれば、最初にホスト装置から受信したＯＵＴパケットおよびＤＡＴＡパケットの応答としてファンクション装置側から送信されてくるハンドシェイクパケットを格納手段に格納しておき、ホスト装置からＯＵＴパケットおよびＤＡＴＡパケットが再送されてきた時に、格納手段にて格納されているハンドシェイクパケットをホスト装置に送信する。それゆえ、ホスト装置から再送されてきたＯＵＴパケットおよびＤＡＴＡパケットに対して、ハンドシェイクパケットをファンクション装置側から再度送信してもらう必要が無く、ホスト−ファンクション間の転送速度が低速であったり、ホスト−ファンクション間の転送経路が長い場合であっても、ＵＳＢ伝送で規定される制約時間内でＯＵＴトランザクションの処理を正常に行えるという効果を奏する。
【００５９】
また、ファンクション側コントローラとしても機能する上記通信コントローラは、ホスト側コントローラからのＯＵＴパケットおよびＤＡＴＡパケットの受信およびホスト側コントローラへのハンドシェイクパケットの送信に係る転送速度がＵＳＢ規格に定められた転送速度よりも低く、ＯＵＴパケットおよびＤＡＴＡパケットのファンクション装置への送信およびファンクション装置からのハンドシェイクパケットの受信に係る転送速度がＵＳＢ規格に定められた転送速度であり、さらに、ホスト側コントローラから受信したＯＵＴパケットおよびＤＡＴＡパケットを上記格納手段に格納する際の格納データ量を確認するデータ量確認手段を有し、上記送信制御手段は、上記データ量確認手段によって確認された受信データ量が予め定められた値よりも多くなった時点で、ファンクション装置へのＯＵＴパケットおよびＤＡＴＡパケットの送信を開始する。
【００６０】
上記の構成によれば、ホスト−ファンクション間の通信路における転送速度が、ファンクション側コントローラとファンクション装置との間での転送速度（ＵＳＢ規格に定められた転送速度）よりも低い場合であっても、上記の予め定められた値が、その時点でＯＵＴパケットおよびＤＡＴＡパケットのホスト装置への転送を開始しても格納手段がＥＭＰＴＹになることがないような値以上であるならば、ホスト装置側からのＯＵＴパケットおよびＤＡＴＡパケットの受信終了を待たずにパケットの送信を開始することができる。それゆえ、ＯＵＴパケットおよびＤＡＴＡパケットの送信タイミングを早くすることが可能となり、全体としての転送速度の向上を図ることができるという効果を奏する。
【００６１】
また、ファンクション側コントローラとしても機能する上記通信コントローラは、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断される場合、該ＤＡＴＡパケットを破棄し、ファンクション装置に転送しない。
【００６２】
それゆえ、送信にかかる電力を低減するとともに、ファンクション装置が誤りのあるパケットを受信することで生じる予期せぬ異常動作の抑制を行うことが可能となるという効果を奏する。
【００６３】
また、上記通信コントローラは、ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、ファンクション側コントローラへのＤＡＴＡパケットの送信をその時点で中止する。
【００６４】
それゆえ、転送の途中でも上記ＤＡＴＡパケットの送信をやめることで、低速通信路の転送効率の悪化を抑制することができるという効果を奏する。
【００６５】
また、ファンクション側コントローラとしても機能する上記通信コントローラでは、上記受信確認手段は、ファンクション装置にＤＡＴＡパケットを送信した後、該ＤＡＴＡパケットに対するＡＣＫパケットがファンクション装置から返ってきたか否かを確認し、上記送信制御手段は、ファンクション装置にＤＡＴＡパケットを送信した後、所定時間内に上記受信確認手段によるＡＣＫパケットの受信が確認されなかった場合には、前回ファンクション装置に送信したものと同じＯＵＴパケットおよびＤＡＴＡパケットをファンクション装置に送信する再送処理を行う。
【００６６】
それゆえ、ファンクション側コントローラがＤＡＴＡパケットをファンクション装置に対して送信する際に、ファンクション装置とファンクション側コントローラとの間でデータ誤りが発生した場合、ホスト装置側に再度ＤＡＴＡパケットの送信を要求することなく、ＤＡＴＡパケットの再送処理を行うことができるという効果を奏する。
【００６７】
また、上記通信コントローラは、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記再送処理を、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行う。
【００６８】
それゆえ、上記通信コントローラがファンクション側コントローラとして機能する場合、受信ＤＡＴＡパケットが正しいと判別される場合のみ、ファンクション装置への再送処理を行うことができるという効果を奏する。
【００６９】
また、上記通信コントローラは、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、ホスト装置に対してＡＣＫパケットを送信する。
【００７０】
それゆえ、ホスト装置に対してＯＵＴパケットおよびＤＡＴＡパケットを再度送信させることができるという効果を奏する。
【００７１】
また、上記通信コントローラは、ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、または、ファンクション側コントローラからそれ以前に送信したＤＡＴＡパケットに対するＡＣＫパケットを受信していた場合は、ホスト装置に対してＡＣＫパケットを送信し、それ以外の場合は、ホスト装置に対してＮＡＫパケットを送信する。
【００７２】
それゆえ、ホスト側コントローラが必要とする場合のみ、ホスト装置に対してＯＵＴパケットおよびＤＡＴＡパケットを再度送信させることができ、ＤＡＴＡパケットによるホスト装置とホスト側コントローラ間の通信路の使用効率の低下を抑制できるという効果を奏する。
【００７３】
また、ファンクション側コントローラとしても機能する上記通信コントローラは、ホスト側コントローラから受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段と、上記誤り解析手段により、受信したＤＡＴＡパケットが誤っていると判断された場合、ホスト側コントローラにＤＡＴＡパケットの再送要求を行う再送要求手段とを有している。
【００７４】
それゆえ、ホスト−ファンクション間の通信路において、ＤＡＴＡパケットに誤りが発生した場合は、ファンクション側コントローラは、ホスト装置側に対して、その旨を通知することができるという効果を奏する。
【００７５】
また、上記通信コントローラは、ファンクション側コントローラから再送要求を受信した場合には、前回ファンクション側コントローラに送信したＤＡＴＡパケットと同じＤＡＴＡパケットをホスト側コントローラに送信する再送処理を行う。
【００７６】
それゆえ、ファンクション側コントローラからの再送要求を元にホスト側コントローラからの再送処理が可能となるという効果を奏する。
【００７７】
また、上記通信コントローラは、ホスト装置から受信したＤＡＴＡパケットが誤りを含むものであるか否かを解析する誤り解析手段を有し、上記送信制御手段は、上記再送処理を、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合のみ行う。
【００７８】
それゆえ、受信ＤＡＴＡパケットが正しいと判別される場合のみ、ファンクション側コントローラへの再送処理を行うことができるという効果を奏する。
【００７９】
また、上記通信コントローラは、上記誤り解析手段により自機器が保有しているＤＡＴＡパケットに誤りがないと確認された場合、ファンクション側コントローラへ送信するＤＡＴＡパケットのパケットフォーマット中に、該ＤＡＴＡパケットには誤りが無いことを示すフラグを立てる。
【００８０】
それゆえ、ホスト側コントローラの保有しているＤＡＴＡパケットが再送できるパケットかどうかという情報をファンクション装置側に通知することが可能となるという効果を奏する。
【００８１】
また、上記通信コントローラは、ホスト側コントローラからＤＡＴＡパケットを受信し、該ＤＡＴＡパケットにおいて誤りのあることが上記誤り解析手段により検出された場合、上記ホスト側コントローラで保有されているＤＡＴＡパケットにおける誤りの有無を示すフラグが受信したＤＡＴＡパケットに立てられており、該フラグによりホスト側コントローラ側で誤りの無いＤＡＴＡパケットが保有されていることが確認された場合のみ上記再送要求を行う。
【００８２】
それゆえ、受信ＤＡＴＡパケットに誤りがあると判断された場合に、ホスト側コントローラに対して再送要求を行うことができるという効果を奏する。
【００８３】
また、上記通信コントローラは、ファンクション側コントローラから再送要求を受信し、その後、ホスト装置からＰＩＮＧパケットを受信した場合、上記送信制御手段は、ホスト装置に対してＡＣＫパケットを送信する。
【００８４】
それゆえ、ホスト側コントローラが誤りのないＤＡＴＡパケットを保有していない場合に、ホスト装置に再びＤＡＴＡパケットを出させることが可能となるという効果を奏する。
【００８５】
また、上記通信コントローラは、上記ＯＵＴトランザクションの実行前に、通信相手側の通信コントローラと転送速度調整を行う。
【００８６】
それゆえ、ホスト−ファンクション間の通信路において、実際の通信が可能な転送速度で、かつ、必要以上に転送速度を低下させない転送速度が設定可能となるという効果を奏する。
【００８７】
また、上記通信コントローラは、上記転送速度調整において、ＵＳＢ規格に定められた転送速度で通信が可能であると判断される場合は、通信相手側の通信コントローラに送信される各パケットは、パケットの送信タイミング制御を行わずに、変復調のみを行って相手側の通信コントローラへの転送を行う。
【００８８】
それゆえ、ホスト−ファンクション間の通信路における転送速度が前述の最大ターンアラウンドを満足する程、十分であると判断される場合は、データ転送速度の低下をおこすことなく、ＵＳＢ２．０のデータ転送を行うことができるという効果を奏する。
【００８９】
また、上記通信コントローラは、通信相手側の通信コントローラとの間での通信路におけるエラーレートを解析し、該エラーレートが予め定められたエラーレートよりも悪いと判断される場合、上記転送速度調整を行って転送速度を下げる。
【００９０】
それゆえ、仮にホスト−ファンクション間の通信路における品質が悪いと判断された場合は、転送速度を落とすことにより、品質の良い通信路においてデータ転送が可能となるという効果を奏する。
【００９１】
また、上記通信コントローラは、通信相手側の通信コントローラとの間で、全二重通信を行うことで、ホスト−ファンクション間の通信において、半二重通信の際に必要なプリアンブルをなくすことが可能となり、通信路の使用効率を向上することができるという効果を奏する。
【００９２】
また、上記通信コントローラは、通信相手側の通信コントローラとの間の通信を、光ファイバを用いた通信路によって行うことで、ホスト−ファンクション間の通信において長距離伝送が可能となるという効果を奏する。
【００９３】
また、上記通信コントローラは、通信相手側の通信コントローラとの間の通信を、電波を用いた無線によって行うことで、あるいは、光を用いた空間伝送によって行うことで、ホスト−ファンクション間の通信において、ケーブルレスのため利便性が向上するという効果を奏する。
【発明を実施するための最良の形態】
【００９４】
〔実施の形態１〕
本発明の一実施形態について図１ないし図５に基づいて説明すると以下の通りである。
【００９５】
先ず、実施の形態１に係る送受信システム（通信システム）の概略構成を図１に示す。図１に示す送受信システムは、ホスト側コントローラ１００とファンクション側コントローラ１１０とから構成される。また、ＵＳＢホスト（ホスト装置）となる機器とＵＳＢファンクション（ファンクション装置）となる機器との間での通信は、ＵＳＢホスト側に接続されるホスト側コントローラ１００と、ＵＳＢファンクション側に接続されるファンクション側コントローラ１１０との間で行われる。
【００９６】
また、図１におけるホスト側コントローラ１００とファンクション側コントローラ１１０との間の通信は光通信手段によって行われ、該光通信手段はＵＳＢ規格に定められた転送速度と同一もしくはそれ以下の転送速度を有しているものとする。
【００９７】
ホスト側コントローラ１００は、ＵＳＢホストからの信号を受信するとこれをファンクション側コントローラ１１０に送信し、ファンクション側コントローラ１１０からの信号を受信するとこれをＵＳＢホストに向かって送信する。ホスト側コントローラ１００は、ＵＳＢホストとＵＳＢケーブルで接続する以外にＵＳＢハブのダウンストリームのポートとＵＳＢケーブルで接続されていても構わない。また、ＵＳＢホストやＵＳＢハブの一部として、構成されていても構わない。
【００９８】
ファンクション側コントローラ１１０は、ホスト側コントローラ１００からの信号を受信するとこれをＵＳＢファンクションに送信し、ＵＳＢファンクションからの信号を受信するとこれをホスト側コントローラ１００に向かって送信する。ファンクション側コントローラ１１０は、ＵＳＢファンクションとＵＳＢケーブルで接続する以外にＵＳＢハブのアップストリームのポートとＵＳＢケーブルで接続されても構わない。また、ＵＳＢファンクションやＵＳＢハブの一部として構成されていても構わない。
【００９９】
以下にホスト側コントローラ１００およびファンクション側コントローラ１１０の各構成要素の説明を行う。
【０１００】
ホスト側コントローラ１００は、ホスト側ステートマシン１０１、ＵＳＢ受信機１０２、ＦＩＦＯ１０３、変調回路１０４、光送信機１０５、光受信機１０６、復調回路１０７、ＦＩＦＯ１０８、ＵＳＢ送信機１０９を備えている。また、ファンクション側コントローラ１１０は、ファンクション側ステートマシン１１１、光受信機１１２、復調回路１１３、ＦＩＦＯ１１４、ＵＳＢ送信機１１５、ＵＳＢ受信機１１６、ＦＩＦＯ１１７、変調回路１１８、光送信機１１９を備えている。
【０１０１】
ホスト側コントローラ１００において、ＵＳＢホストから送信されてＵＳＢ受信機１０２にて受信されたＵＳＢ信号は、ホスト側ステートマシン１０１によって、信号及びパケット解析が行われるとともに、ＦＩＦＯ１０３によってパケットが蓄えられる。このＦＩＦＯ１０３は、ホスト側コントローラ１００とファンクション側コントローラ１１０間の通信路がＵＳＢの通信路と比べて同一もしくは低速であるため、前記通信路にパケットを転送する際のタイミング調整を行う。
【０１０２】
ホスト側ステートマシン１０１は、ＵＳＢホストからの受信パケットがＯＵＴパケットもしくはＤＡＴＡパケットである場合は、ファンクション側コントローラ１１０へのパケット転送を行う。すなわち、ホスト側コントローラ１００では、転送しても良いと判断されるパケットをＵＳＢホストから受信すると、ホスト側ステートマシン１０１は、変調回路１０４に該パケットの送信及び変調の開始を通知する。これにより、ＦＩＦＯ１０３に蓄えられたパケットは、変調回路１０４にて変調され、光送信機１０５によってファンクション側コントローラ１１０に向けて送信される。
【０１０３】
本実施の形態に係る説明では、ホスト側コントローラ１００とファンクション側コントローラ１１０との間（以下、ホスト−ファンクション間）の通信路を光通信路としているため、光送信機１０５は、例えば発光ダイオードやレーザーとなるが、光通信路は、光ファイバを用いた有線の通信路であっても、空間通信であっても問題ない。光ファイバを用いた場合は、長距離伝送が可能となり、空間通信の場合は、ケーブルレスのため利便性が向上することとなる。
【０１０４】
また、変調回路１０４では、ホスト−ファンクション間の通信路を光通信とする場合、例えば８Ｂ１０Ｂなどの変調方法が選択されるが、上記通信路は光に限定する必要は無く、例えば無線でも構わない。その場合は、変調回路１０４において別の変調方式を用いても構わない。また、ホスト−ファンクション間の通信方式は、半二重通信と全二重通信のどちらを選択してもよいが、全二重通信を選択すると、光送信機１０５が常に発光しているため、パケットにプリアンブルを付加する必要がなく、通信路の使用効率の向上へとつながる。
【０１０５】
また、ホスト側コントローラ１００がＵＳＢホストから最初にＯＵＴパケットおよびＤＡＴＡパケットの受信パケットを受けた場合、ホスト側コントローラ１００はこの時点でファンクション側コントローラ１１０からＡＣＫパケットを受信していない。このため、ホスト側ステートマシン１０１は、ＦＩＦＯ１０８およびＵＳＢ送信機１０９を介してＮＡＫパケットをＵＳＢホストに送信する。こうすることで、ホスト側コントローラ１００は、ＵＳＢホストに対して、ＵＳＢファンクションがＤＡＴＡパケットを処理することができなかったことを通知することができ、ＯＵＴトランザクションの終了を行わせないようにすることができる。
【０１０６】
一方、ホスト側コントローラ１００からファンクション側コントローラ１１０に向けて送信された光信号は、ファンクション側コントローラ１１０の光受信機１１２によって受信されると、復調回路１１３により例えば８Ｂ１０Ｂ復調された後、ファンクション側ステートマシン１１１によってそのパケットの中身が解釈される。ここで光受信機１１２は例えばフォトダイオードであるが、前述のとおり、ホスト−ファンクション間の通信路の種類により異なり、無線である場合は受信アンテナとなる。上記パケットが、ホスト側コントローラ１００からのＯＵＴパケットもしくはＤＡＴＡパケットであると判断された場合は、該パケットはＦＩＦＯ１１４に蓄えられる。また、ファンクション側ステートマシン１１１は、ホスト側コントローラ１００からのパケットの受信が完了するのを待って、該パケットを、ＵＳＢ送信機１１５を通してＵＳＢファンクションにＵＳＢ信号として送信する。
【０１０７】
こうして、ファンクション側コントローラ１１０のＵＳＢ送信機１１５から送信されたＯＵＴパケットおよびＤＡＴＡパケットをＵＳＢファンクションが受信すると、ＵＳＢファンクションは、その時の状態によって以下の何れかの動作を行う。
【０１０８】
ＤＡＴＡパケットが正常に受信され、受信したＤＡＴＡパケットに誤りが無く、ＤＡＴＡパケットの処理を終了して、かつ、エンドポイントにまだ余裕がある場合は、ＵＳＢファンクションはＡＣＫパケットをファンクション側コントローラ１１０に送信する。ＤＡＴＡパケットが正常に受信され、受信したＤＡＴＡパケットに誤りが無く、ＤＡＴＡパケットの処理を終了して、かつ、エンドポイントに余裕が無い場合は、ＵＳＢファンクションはＮＹＥＴパケットをファンクション側コントローラ１１０に送信する。ＤＡＴＡパケットが正常に受信され、受信したＤＡＴＡパケットに誤りが無いが、ＵＳＢファンクションのエンドポイントに空きが無くＤＡＴＡパケットの処理ができなかった場合は、ＵＳＢファンクションはＮＡＫパケットをファンクション側コントローラ１１０に送信する。ＵＳＢファンクションが受信パケットを処理できない状態（ＵＳＢファンクションが異常状態になり、それ以降のＩＮトランザクション、ＯＵＴトランザクションなどのデータ転送ができなくなった状態）の場合は、ＵＳＢファンクションはＳＴＡＬＬパケットをファンクション側コントローラ１１０に送信する。また、受信したＤＡＴＡパケットに誤りがあった場合は、ＵＳＢファンクションはファンクション側コントローラ１１０に対して何も返さない。
【０１０９】
ファンクション側コントローラ１１０のＵＳＢ受信機１１６にて受信されたＡＣＫパケット、ＮＹＥＴパケット、ＮＡＫパケット、もしくはＳＴＡＬＬパケットは、ファンクション側ステートマシン１１１により、そのパケットの中身を解釈されると共に、ＦＩＦＯ１１７に蓄えられる。そして、変調回路１１８により例えば８Ｂ１０Ｂ変調され、光送信機１１９を介して光信号としてホスト側コントローラ１００に向けて送信される。
【０１１０】
ホスト側コントローラ１００の光受信機１０６によって受信された信号は、復調回路１０７によって例えば８Ｂ１０Ｂ復調され、ホスト側ステートマシン１０１によって該受信信号がＡＣＫパケット、ＮＹＥＴパケット、ＮＡＫパケット、ＳＴＡＬＬパケットの各ハンドシェイクパケットであることが認識されると、ＦＩＦＯ１０８によってそのパケットが蓄えられる。
【０１１１】
また、ＵＳＢホストは、上述したように、最初のＯＵＴパケットおよびＤＡＴＡパケットの送信に対してホスト側コントローラ１００からＮＡＫパケットを返されるため、ホスト側コントローラ１００に対して再度ＯＵＴパケットおよびＤＡＴＡパケットを送信することが必要となる。ホスト側コントローラ１００は、ＵＳＢ受信機１０２によりＯＵＴパケットおよびＤＡＴＡパケットを再度受信した時点で、ＦＩＦＯ１０８に格納されているハンドシェイクパケットがあれば、このハンドシェイクパケットをＵＳＢホストに送信する。
【０１１２】
また、ＮＡＫパケットに関しては、ホスト側コントローラ１００がＵＳＢホストからＯＵＴパケットおよびＤＡＴＡパケットを受信した時点で、ファンクション側コントローラ１１０から何れのハンドシェイクパケットを受信していない場合においても、ファンクション側コントローラ１１０からのＮＡＫパケットの受信に関係なく、ＵＳＢホストに対してホスト側コントローラ１００から送信される。
【０１１３】
ここで、ＵＳＢホストが、最初のＯＵＴパケットおよびＤＡＴＡパケットの送信後、ホスト側コントローラ１００に対してＯＵＴパケットおよびＤＡＴＡパケットを再送するためには、例えば、以下のような動作が考えられる。
【０１１４】
すなわち、ＵＳＢホストは、最初のＯＵＴパケットおよびＤＡＴＡパケットの送信に対してホスト側コントローラ１００からＮＡＫパケットを返されるため、このＮＡＫパケットに対して、ＰＩＮＧパケットをホスト側コントローラ１００に送信する。そして、ホスト側コントローラ１００は、このＰＩＮＧパケットに対してＡＣＫパケットをＵＳＢホストへ返信すればよい。ＵＳＢホストは、このＡＣＫパケットの受信により、ＯＵＴパケットおよびＤＡＴＡパケットをホスト側コントローラ１００に再送することとなる。
【０１１５】
尚、再送されてきたＯＵＴパケットおよびＤＡＴＡパケットを受信したホスト側コントローラ１００では、その時点でファンクション側コントローラ１１０からハンドシェイクパケットを受け取っていれば、これをＵＳＢホストへ送信すればよい。一方、ハンドシェイクパケットを受け取っていなければ、再度ＮＡＫパケットをＵＳＢホストへ送信すれば、ホスト側コントローラ１００がファンクション側コントローラ１１０よりハンドシェイクパケットを受信するまで上記処理が繰り返される。
【０１１６】
以上のように、ホスト側コントローラ１００では、ＵＳＢホストから最初に受信したＯＵＴパケットおよびＤＡＴＡパケットに対する返答としてのハンドシェイクパケット（ＡＣＫパケット、ＮＹＥＴパケット、ＮＡＫパケット、またはＳＴＡＬＬパケット）をＦＩＦＯ１０８にて格納し、ＵＳＢホストからＯＵＴパケットおよびＤＡＴＡパケットが再度送信されてきた時に、ＦＩＦＯ１０８にて格納されているハンドシェイクパケットをＵＳＢホストに送信する。これにより、ＵＳＢホストとＵＳＢファンクションとの間にＵＳＢ規格よりも低速な通信路が存在していても、ＯＵＴパケットおよびＤＡＴＡパケットに対して、ホスト−ファンクション間での通信を再度行うことなくハンドシェイクパケットを制約時間内にＵＳＢホストに確実に送信することができるので、問題なくＯＵＴトランザクションを行うことができる。
【０１１７】
ここで、図２を用いて、本発明の実施の形態１におけるホスト側コントローラ１００のホスト側ステートマシン１０１の動作説明を行う。
【０１１８】
Ｓ２０１は、ＵＳＢホストからＯＵＴパケットを受信したかどうかを判別するステップである。ＯＵＴパケットを受信した場合はＳ２０２へ、またＯＵＴパケット以外のパケットを受信した場合は再びＳ２０１へとそれぞれ遷移する。
【０１１９】
Ｓ２０２は、ファンクション側コントローラ１１０にＯＵＴパケットを送信するステップである。ＯＵＴパケットの送信終了後、Ｓ２０３へと遷移する。
【０１２０】
Ｓ２０３は、ＤＡＴＡパケットを受信したかどうかを判別するステップである。ＤＡＴＡパケットを受信した場合はＳ２０４へ、またそれ以外のパケットを受信した場合はＳ２０１へとそれぞれ遷移する。ここで、ＤＡＴＡパケット以外のパケットを受信した場合にＳ２０１へ遷移するのは、正常な動作においては、Ｓ２０１でＯＵＴパケットを受信した後には、続けてＤＡＴＡパケットを受信しなければならず、それ以外のパケットを受信した場合には異常動作であると判断されるためである。
【０１２１】
Ｓ２０４は、ＤＡＴＡパケットをファンクション側コントローラ１１０に送信するステップである。ＤＡＴＡパケットを送信開始後、Ｓ２０５へと遷移する。
【０１２２】
Ｓ２０５は、ＵＳＢホストからのＯＵＴパケット及びＤＡＴＡパケットの受信があった時点で、ファンクション側コントローラ１１０から受信しているハンドシェイクパケットがあるか否かを判別するステップである。ＡＣＫ、ＮＹＥＴ、ＳＴＡＬＬパケットの何れかを受信していた場合はＳ２０７へ、またＮＡＫパケットを受信していたか、もしくは何も受信していない場合はＳ２０６へとそれぞれ遷移する。
【０１２３】
Ｓ２０６は、ＵＳＢホストにＮＡＫパケットを送信するステップである。ＮＡＫパケット送信終了後Ｓ２０１へと遷移する。
【０１２４】
Ｓ２０７は、受信していたハンドシェイクパケット（ＡＣＫ、ＮＹＥＴ、ＳＴＡＬＬパケットの何れか）をＵＳＢホストに送信するステップである。送信終了後、ＯＵＴトランザクションを終了する。
【０１２５】
尚、上記Ｓ２０７において送信されたハンドシェイクパケットがＮＹＥＴパケットである場合、ＵＳＢファンクションは、今回のＯＵＴトランザクションによるＤＡＴＡパケットは正常に終了できたが、エンドポイントに空きがなくなり、次にＯＵＴトランザクションを行うと、タイミングによってはＤＡＴＡパケットを処理できない可能性がある状態となっている。このため、ＮＹＥＴパケットをＵＳＢホストが受信した場合は、次のＯＵＴトランザクションにおいて、ＰＩＮＧパケットを最初に送信して、ＵＳＢファンクションのエンドポイントに空きがあるかを確認してから、ＯＵＴパケット及びＤＡＴＡパケットを送信するといったフロー制御を行うことが可能となる。上記により、ＮＹＥＴパケットでもＯＵＴトランザクションは正常に終了する。
【０１２６】
また、上記Ｓ２０７において送信されたハンドシェイクパケットがＳＴＡＬＬパケットである場合、ＵＳＢファンクションは、何らかの原因により、異常状態となってしまっている状態である。このため、ＳＴＡＬＬパケットをＵＳＢホストが受信した場合は、ＵＳＢホストはＵＳＢファンクションが異常状態であることを認識し、ＯＵＴトランザクションを異常終了する。その後、ＵＳＢホストから、前記異常状態の解除パケットがＵＳＢファンクションあてに送信された後、パケット転送可能状態となる。つまり、ＳＴＡＬＬパケットによっては、ＯＵＴトランザクションは強制終了される。
【０１２７】
上記図２のＳ２０６の処理において、ホスト側コントローラ１００がＵＳＢホストにＮＡＫパケットを送信すると、ＵＳＢホストはホスト側コントローラ１００にＰＩＮＧパケットを送信するか、もしくは、再びＯＵＴパケット及びＤＡＴＡパケットを送信する。ＰＩＮＧパケットを送信した場合は、ホスト側コントローラ１００において、ＰＩＮＧパケットを受信した場合のホスト側ステートマシン１０１の動作は図３に示すものとなる。尚、この動作を行うステートマシンは、ＰＩＮＧパケットに関する状態遷移のみを記述しており、図２に示したＯＵＴトランザクションのステートマシン内に構成されていても、また、独立に存在していても構わない。
【０１２８】
Ｓ３０１は、ＵＳＢホストから受信したパケットがＰＩＮＧパケットかどうかを判別するステップである。ＰＩＮＧパケットである場合はＳ３０２へ、またそれ以外のパケットである場合は再びＳ３０１へとそれぞれ遷移する。
【０１２９】
Ｓ３０２は、ＵＳＢホストに対してＡＣＫパケットを送信するステップである。ＡＣＫパケットを送信終了した後、ＰＩＮＧパケットに関する処理を終了する。また、受信したＰＩＮＧパケットは、ファンクション側コントローラに対して送信しても送信しなくても構わない。
【０１３０】
上記のようなステートマシンをホスト側コントローラ１００内に持つことにより、ＯＵＴトランザクション中にＰＩＮＧパケットをホスト側コントローラ１００が受信したとしても、常にＡＣＫパケットを返すことにより、ＵＳＢホストに再びＯＵＴパケット及びＤＡＴＡパケットを出させることが可能となる。
【０１３１】
次に、図４を用いて、本発明の実施の形態１におけるファンクション側コントローラ１１０のファンクション側ステートマシン１１１の動作説明を行う。
【０１３２】
Ｓ４０１は、ホスト側コントローラ１００から受信したパケットがＯＵＴパケット及びＤＡＴＡパケットであるかどうかを判別するステップである。ＯＵＴパケット及びＤＡＴＡパケットである場合はＳ４０２へ、またそれ以外のパケットであった場合は再びＳ４０１へとそれぞれ遷移する。
【０１３３】
Ｓ４０２は、ＵＳＢファンクションにＯＵＴパケット及びＤＡＴＡパケットを送信するステップである。ＯＵＴパケット及びＤＡＴＡパケット送信終了後、タイマをスタートし、Ｓ４０３へと遷移する。
【０１３４】
Ｓ４０３は、ＵＳＢファンクションから、ハンドシェイクパケット（ＡＣＫ、ＮＹＥＴ、ＳＴＡＬＬ、ＮＡＫパケットの何れか）を受信したかどうかを判別するステップである。ハンドシェイクパケットを受信した場合はＳ４０４へ、またハンドシェイクパケットを受信せずに予め定められた時間が経過し、タイムアウトした場合はＳ４０１へとそれぞれ遷移する。
【０１３５】
Ｓ４０４は、ホスト側コントローラにハンドシェイクパケットを送信するステップである。ハンドシェイクパケットを送信終了後、ＯＵＴトランザクションを終了する。
【０１３６】
上記のようにホスト側コントローラ１００においては、図２および図３に示すような動作を行うステートマシンを、またファンクション側コントローラ１１０においては、図４に示すような動作を行うステートマシンをそれぞれ実装することで、ホスト側コントローラ１００とファンクション側コントローラ１１０との通信路がＵＳＢと同一もしくは低速であっても、問題なくＯＵＴトランザクションを行うことが可能となる。
【０１３７】
尚、上記図２の処理では、ホスト側コントローラ１００は、ＵＳＢホストから受信したＯＵＴパケットおよびＤＡＴＡパケットをＳ２０２、Ｓ２０４においてファンクション側コントローラ１１０に転送している。しかしながら、ホスト側コントローラ１００がＵＳＢホストに対してＡＣＫパケットを送信できる状態である場合には、上記ＯＵＴパケットおよびＤＡＴＡパケットをファンクション側コントローラ１１０に送信する必要は無い。厳密には、ＵＳＢファンクションは、ＯＵＴパケットおよびＤＡＴＡパケットに対してＡＣＫパケットを送信した時点でＯＵＴトランザクションが終了したと見なしているため、このような場合は、ＯＵＴパケットおよびＤＡＴＡパケットをＵＳＢファンクションに転送しないほうがいいと考えられる。
【０１３８】
このため、ホスト側コントローラ１００がＵＳＢホストからＯＵＴパケットおよびＤＡＴＡパケットを受信した時点でファンクション側コントローラ１１０からＡＣＫパケットを受信していた場合には、上記ＯＵＴパケットおよびＤＡＴＡパケットをファンクション側コントローラ１１０に送信しないという制御を行うことが考えられる。
【０１３９】
実施の形態１において、ファンクション側コントローラ１１０では、ＵＳＢホストからＯＵＴパケットおよびＤＡＴＡパケットを受信した際に、これらのパケットを完全に受信してからのみ、ＵＳＢファンクションに対してＯＵＴパケットおよびＤＡＴＡパケットを送信することが可能であった。これは、ＤＡＴＡパケットのパケットフォーマット中にパケットの長さを意味するフィールドが存在しないことが原因であり、低速通信路からの受信データをＵＳＢの高速通信路に転送する際にＤＡＴＡの抜けなく転送を確実に行うためである。但し、ＤＡＴＡパケットのパケット長の上限は、ＵＳＢ２.０においては、図５に示すように各転送モードにおいて、パケットの最大長が定められている。
【０１４０】
〔実施の形態２〕
本発明の他の実施形態について図６に基づいて説明すると以下の通りである。
【０１４１】
先ず、実施の形態２に係る送受信システムの概略構成を図６に示す。図６に示す送受信システムは、ホスト側コントローラ１００とファンクション側コントローラ１２０とから構成される。ファンクション側コントローラ１２０は、ファンクション側ステートマシン１１１、光受信機１１２、復調回路１１３、ＦＩＦＯ１１４、ＵＳＢ送信機１１５、ＵＳＢ受信機１１６、ＦＩＦＯ１１７、変調回路１１８、光送信機１１９、カウンタ１２１を備えている。ファンクション側コントローラ１２０において、カウンタ１２１以外の構成要素はすべて、図１に示したファンクション側コントローラ１１０と同一の構成および機能をもつため、詳細な説明は省略する。また、図６におけるホスト側コントローラ１００は、図１に示したホスト側コントローラ１００と同一のものであるため、これについても詳細な説明は省略する。
【０１４２】
カウンタ１２１は、ホスト側コントローラ１００から受信したＤＡＴＡパケットがＦＩＦＯ１１４に書き込まれる際に、書き込まれたＤＡＴＡの分だけその値が増えていくカウンタである。
【０１４３】
ここで、上記実施の形態１では、ファンクション側コントローラ１１０からＵＳＢファンクションへのＤＡＴＡパケットの送信は、ファンクション側コントローラ１１０においてＤＡＴＡパケットの受信が完全に終了した後で開始されていた。これは、ホスト−ファンクション間の通信路における転送速度が、ファンクション側コントローラ１１０とＵＳＢファンクションとの間での転送速度（ＵＳＢ規格に定められた転送速度）よりも低い場合、ホスト側コントローラ１００からのＤＡＴＡパケットの受信が終了する前にＵＳＢファンクションへのＤＡＴＡパケットの転送を開始すると、正常な転送処理が行えなくなる可能性があるためである。すなわち、上述の場合では、ホスト側コントローラ１００からのＤＡＴＡパケットの受信終了前に、ファンクション側コントローラ１１０においてＤＡＴＡパケットを格納するＦＩＦＯ１１４がＥＭＰＴＹになり、ＵＳＢファンクションに対してＤＡＴＡパケットを連続して転送できないといった不具合が生じる可能性がある。
【０１４４】
しかしながら、例えば、ファンクション側コントローラ１１０とＵＳＢファンクションとの間での転送がアイソクロナス転送である場合、ＦＩＦＯ１１４に格納されているＤＡＴＡパケットのデータ量が、図５中で示されているアイソクロナス転送時の最大パケット長の３０７２バイトに相当する値まで達していない状態でＵＳＢ２.０の通信路にＤＡＴＡパケットの送信を開始したとしても、その後の送信においてＦＩＦＯ１１４がＥＭＰＴＹになることがなければ、ホスト側コントローラ１００からのＤＡＴＡパケットの受信終了を待たずにＵＳＢ通信路に対してＤＡＴＡパケットを送信しても上記不具合は生じない。
【０１４５】
このため、本実施の形態２に係るファンクション側コントローラ１２０では、ホスト側コントローラ１００からＤＡＴＡパケットを受信し、該ＤＡＴＡパケットをＦＩＦＯ１１４に格納する際、格納されたＤＡＴＡパケットのデータ量の値をカウンタ１２１で管理する。そして、カウンタ１２１で管理される値が、その時点でＤＡＴＡパケットのＵＳＢファンクションへの転送を開始してもＦＩＦＯ１１４がＥＭＰＴＹになることがないような値以上であるならば、ホスト側コントローラ１００からのＤＡＴＡパケットの受信終了を待たずにＵＳＢファンクションへＤＡＴＡパケットの送信を開始することで、ＤＡＴＡパケットの送信タイミングを早くすることが可能となり、全体としての転送速度の向上を図ることが可能となる。
【０１４６】
また、ファンクション側コントローラ１２０とＵＳＢファンクションとの間での転送方式がアイソクロナス転送でなく、最大データ長がアイソクロナス転送よりも小さいバルク転送を行うようなアプリケーションの場合は、上記カウンタの設定値を低くすることが可能となり、より全体としての転送速度の向上を図ることが可能となる。
【０１４７】
〔実施の形態３〕
本発明のさらに他の実施形態について図７に基づいて説明すると以下の通りである。
【０１４８】
先ず、実施の形態３に係る送受信システムの概略構成を図７に示す。図７に示す送受信システムは、ホスト側コントローラ１００とファンクション側コントローラ１３０とから構成される。ファンクション側コントローラ１３０は、ファンクション側ステートマシン１１１、光受信機１１２、復調回路１１３、ＦＩＦＯ１１４、ＵＳＢ送信機１１５、ＵＳＢ受信機１１６、ＦＩＦＯ１１７、変調回路１１８、光送信機１１９、ＣＲＣチェック回路１３１を備えている。ファンクション側コントローラ１３０において、ＣＲＣチェック回路１３１以外の構成要素はすべて、図１に示したファンクション側コントローラ１１０と同一の構成および機能をもつため、詳細な説明は省略する。また、図７におけるホスト側コントローラ１００は、図１に示したホスト側コントローラ１００と同一のものであるため、これについても詳細な説明は省略する。
【０１４９】
ＣＲＣチェック回路１３１は、ホスト側コントローラ１００から受信したＤＡＴＡパケット中のＣＲＣ（Cyclic Redundancy Check）１６を計算し、受信したＤＡＴＡパケットに誤りがあるかどうかを判別することが可能である。ＣＲＣチェック回路１３１によって誤りがあると判断されたＤＡＴＡパケットはファンクション側ステートマシン１１１によって破棄され、ＵＳＢパケットとして送信しないことで、送信にかかる電力を低減するとともに、ＵＳＢファンクションが誤りのあるパケットを受信することで生じる予期せぬ異常動作の抑制を行うことが可能となる。
【０１５０】
〔実施の形態４〕
本発明のさらに他の実施形態について図８に基づいて説明すると以下の通りである。
【０１５１】
先ず、実施の形態４に係る送受信システムの概略構成を図８に示す。図８に示す送受信システムは、ホスト側コントローラ１４０とファンクション側コントローラ１１０とから構成される。ホスト側コントローラ１４０は、ホスト側ステートマシン１０１、ＵＳＢ受信機１０２、ＦＩＦＯ１０３、変調回路１０４、光送信機１０５、光受信機１０６、復調回路１０７、ＦＩＦＯ１０８、ＵＳＢ送信機１０９、ＣＲＣチェック回路１４１を備えている。ホスト側コントローラ１４０において、ＣＲＣチェック回路１４１以外の構成要素はすべて、図１に示したホスト側コントローラ１００と同一の構成および機能をもつため、詳細な説明は省略する。また、図８におけるファンクション側コントローラ１１０は、図１に示したファンクション側コントローラ１１０と同一のものであるため、これについても詳細な説明は省略する。
【０１５２】
ＣＲＣチェック回路１４１は、ＵＳＢホストから受信したＤＡＴＡパケット中のＣＲＣ１６を計算し、受信したＤＡＴＡパケットに誤りがないかどうかを判別することが可能である。ここで、ＵＳＢホストから受信したＤＡＴＡパケットに誤りがある場合、これをファンクション側コントローラ１１０に転送しても意味がなく、この場合のホスト−ファンクション間の低速通信路へのＤＡＴＡパケットの転送は、無駄なものとなる。このため、ＣＲＣチェック回路１４１によって誤りがあると判断されたＤＡＴＡパケットは、転送の途中でも該パケットの送信をやめることで、低速通信路の転送効率の悪化を抑制することが可能となる。
【０１５３】
〔実施の形態５〕
本発明のさらに他の実施形態について図９に基づいて説明すると以下の通りである。
【０１５４】
先ず、実施の形態５に係る送受信システムの概略構成を図９に示す。図９に示す送受信システムは、ホスト側コントローラ１００とファンクション側コントローラ１５０とから構成される。ファンクション側コントローラ１５０は、ファンクション側ステートマシン１１１、光受信機１１２、復調回路１１３、ＦＩＦＯ１５１、ＵＳＢ送信機１１５、ＵＳＢ受信機１１６、ＦＩＦＯ１１７、変調回路１１８、光送信機１１９を備えている。ファンクション側コントローラ１５０において、ＦＩＦＯ１５１以外の構成要素はすべて、図１に示したファンクション側コントローラ１１０と同一の構成および機能をもつため、詳細な説明は省略する。また、図９におけるホスト側コントローラ１００は、図１に示したホスト側コントローラ１００と同一のものであるため、これについても詳細な説明は省略する。
【０１５５】
ファンクション側コントローラ１５０は、ホスト側コントローラ１００からのＤＡＴＡパケットを受信すると、ファンクション側ステートマシン１１１が受信したＤＡＴＡパケットをＦＩＦＯ１５１に書き込むよう制御する。
【０１５６】
このＦＩＦＯ１５１は、ＯＵＴパケットおよびＤＡＴＡパケット送信時に、あらかじめリードポインタの値を保持しておく。ファンクション側ステートマシン１１１は、ＯＵＴパケットおよびＤＡＴＡパケットをＵＳＢファンクションに送信後、あらかじめ定められた一定時間の間にＵＳＢファンクションからＡＣＫパケットを受信しない場合は、ＵＳＢファンクションとファンクション側コントローラ１５０との間の通信路において、データ誤りが発生したものと判断する。そして、ファンクション側ステートマシン１１１は、前述のリードポインタの値にリードポインタを設定し、予め定められた一定時間経過後、再び同じＯＵＴパケットおよびＤＡＴＡパケットを送信する。
【０１５７】
この場合、ＦＩＦＯ１５１でのリードポインタの制御により、ＤＡＴＡパケットの再送を実現しているが、この再送処理は、ＲＡＭなどで開始アドレスを保持することにより実現しても問題ない。また、ファンクション側コントローラにおいて、図７に示すようなＣＲＣチェック回路１３１を備え、ＣＲＣチェック回路１３１によってファンクション側コントローラ１１０からの受信ＤＡＴＡパケットが正しいかどうかを判別することも可能であり、受信ＤＡＴＡパケットが正しいと判別される場合のみ、上記再送処理を行うといった制御を行うことも可能である。
【０１５８】
〔実施の形態６〕
本発明のさらに他の実施形態について図１０に基づいて説明すると以下の通りである。
【０１５９】
上述の実施の形態１における図３の処理では、ホスト側コントローラ１００は、ＵＳＢホストからＯＵＴパケットおよびＤＡＴＡパケットを再度送信させるために、ＵＳＢホストからＰＩＮＧパケットを受信した場合には、これに対してＡＣＫパケットを送信する処理を行っている。しかしながら、この処理では、上記ＡＣＫパケットに対してＵＳＢホストが再送してきたＯＵＴパケット及びＤＡＴＡパケットをホスト側コントローラ１００が受信しても、その時点でファンクション側からＡＣＫパケットを受信していなければ、ホスト側コントローラ１００はＵＳＢホストにＡＣＫパケットを返送することができない。このため、ＤＡＴＡパケットのパケット長が長いときなどは、ＵＳＢホストとホスト側コントローラ１００間におけるＵＳＢ通信路の使用効率に無駄が生じることとなる。
【０１６０】
また、ホスト側コントローラ１００がＰＩＮＧパケットを受信する前に受信したＤＡＴＡパケットが誤っていた場合、この誤ったＤＡＴＡパケットに対して、ファンクション側コントローラ１１０からホスト側コントローラ１００がＡＣＫパケットを受信することはありえない。この場合、ホスト側コントローラ１００は、ＵＳＢホストに対して再びＯＵＴパケット及びＤＡＴＡパケットを出させなければならないが、このような場合の処理は実施の形態１では考慮されていない。
【０１６１】
本実施の形態６では、上記ＵＳＢ通信路の使用効率の無駄を低減させ、また、ホスト側コントローラ１００にて受信したＤＡＴＡパケットに誤りがある場合に、ＵＳＢホストにＯＵＴパケット及びＤＡＴＡパケットを再度送信させるための方法を示す。
【０１６２】
本実施の形態６に係る送受信システムの概略構成は実施の形態４における図８に示した構成と同様であり、各構成要素は、実施の形態４に係る送受信システムと同じ機能をもつため、詳細な説明は省略する。
【０１６３】
先ず、図１０を用いて、実施の形態６に係るホスト側コントローラ１４０のホスト側ステートマシン１０１の動作を説明する。尚、この状態遷移を行うステートマシンは、ＰＩＮＧパケットに関する状態遷移のみを記述しており、前述のＯＵＴトランザクションのステートマシン内に構成されたとしても、また、独立に存在したとしても構わない。
【０１６４】
Ｓ１００１は、ＵＳＢホストから受信したパケットがＰＩＮＧパケットであるかどうかを判別するステップである。ＰＩＮＧパケットであった場合はＳ１００２へ、それ以外のパケットであった場合は再びＳ１００１へとそれぞれ遷移する。
【０１６５】
Ｓ１００２は、前回受信したＤＡＴＡパケットに誤りがあったかどうかをＣＲＣチェック回路１４１により判別するステップである。誤りが無く正しいＤＡＴＡパケットを受信していた場合はＳ１００３へ、また、受信ＤＡＴＡパケットに誤りがある場合はＳ１００５へとそれぞれ遷移する。
【０１６６】
Ｓ１００３は、上記ＰＩＮＧパケットの受信時点において、ファンクション側コントローラ１１０からＡＣＫパケットを受信しているかどうかを判別するステップである。ＡＣＫパケットを受信していた場合はＳ１００５へ、またＡＣＫパケットを受信していない場合はＳ１００４へとそれぞれ遷移する。
【０１６７】
Ｓ１００４は、ＵＳＢホストに対して、ＮＡＫパケットを送信するステップである。ＮＡＫパケットを送信終了後、Ｓ１００１へと遷移する。
【０１６８】
Ｓ１００５は、ＵＳＢホストに対して、ＡＣＫパケットを送信するステップである。ＡＣＫパケットを送信終了後、ＰＩＮＧパケットに関する処理を終了する。また、受信したＰＩＮＧパケットは、ファンクション側コントローラに対して、送信しても送信しなくても構わない。
【０１６９】
上記のようにホスト側コントローラ１４０において、図１０に示すような動作を行うステートマシンを実装することにより、ホスト側コントローラ１４０は、必要な時のみ、ＵＳＢホストに対してＯＵＴパケット及びＤＡＴＡパケットを出させることが可能となる。すなわち、ホスト側コントローラ１４０において、ファンクション側コントローラ１１０からＡＣＫパケットを受信している状態や前回の受信ＤＡＴＡパケットに誤りがあった状態でＵＳＢホストからＰＩＮＧパケットを受信した際には、ＵＳＢホストにＡＣＫパケットを返してＯＵＴパケット及びＤＡＴＡパケットを出させ、それ以外の状態ではＰＩＮＧパケットに対しＮＡＫパケットを返すことで不要なＯＵＴパケット及びＤＡＴＡパケットの送信を回避できる。
【０１７０】
〔実施の形態７〕
本発明のさらに他の実施形態について図１１に基づいて説明すると以下の通りである。
【０１７１】
図１１に、本実施の形態７に係るパケットフォーマットを示す。図１１において、ＵＳＢパケットとは、ＵＳＢで規定された転送速度で通信されるデータパケットのパケットフォーマットであり、また、低速用パケットとは、低速通信路用に変換されたパケットフォーマットである。つまり、低速用パケットは、ホスト側コントローラがファンクション側コントローラに向けてＤＡＴＡパケットを送信する際のパケットフォーマットである。
【０１７２】
図１１に示すように、低速用パケットでは、ＵＳＢパケットのＣＲＣ１６の後に、ＣＲＣ＿ＯＫというフィールドが設けてある。ホスト側コントローラが保有しているＤＡＴＡパケットに誤りが無い場合は、上記ＣＲＣ＿ＯＫのフィールドにその旨を示す値を入れ（その旨を示すフラグを立て）、また保有しているＤＡＴＡパケットに誤りがある場合は、同じくその旨を入れてファンクション側コントローラに該ＤＡＴＡパケットを送信する。そうすることで、ホスト側コントローラの保有しているＤＡＴＡパケットが再送できるパケットかどうかという情報をファンクション側コントローラに通知することが可能となる。ファンクション側コントローラにおいては、上記ＣＲＣ＿ＯＫフィールドを監視することにより、仮に受信ＤＡＴＡパケットに誤りがあると判断された場合に、ホスト側コントローラに対して、再送要求を行うかどうかの制御を行うことが可能となる。
【０１７３】
〔実施の形態８〕
本発明のさらに他の実施形態について図１２に基づいて説明すると以下の通りである。
【０１７４】
本実施の形態８では、ホスト側コントローラとファンクション側コントローラ間でデータ誤りが発生し、ホスト側コントローラがファンクション側コントローラから再送要求を受信した場合に、ホスト側コントローラが正しいＤＡＴＡパケットを準備するための方法を示す。
【０１７５】
本実施の形態８に係る送受信システムの概略構成は実施の形態３における図７に示した構成と同様であり、各構成要素は、実施の形態３に係る送受信システムと同じ機能をもつため、詳細な説明は省略する。
【０１７６】
先ず、図１２を用いて、実施の形態８に係るホスト側コントローラ１００のホスト側ステートマシン１０１の動作を説明する。尚、この状態遷移を行うステートマシンは、ＰＩＮＧパケットに関する状態遷移のみを記述しており、前述のＯＵＴトランザクションのステートマシン内に構成されたとしても、また、独立に存在したとしても構わない。
【０１７７】
Ｓ１２０１は、ＵＳＢホストから受信したパケットがＰＩＮＧパケットがどうかを判別するステップである。ＰＩＮＧパケットであった場合はＳ１２０２へ、またそれ以外のパケットであった場合は再びＳ１２０１へとそれぞれ遷移する。
【０１７８】
Ｓ１２０２は、ファンクション側コントローラからＤＡＴＡパケットの再送要求を受信しているかどうかを判別するステップである。再送要求を受信していた場合はＳ１２０４へ、また、再送要求を受信していない場合はＳ１２０３へとそれぞれ遷移する。
【０１７９】
Ｓ１２０３は、ＵＳＢホストに対してＮＡＫパケットを送信するステップである。ＮＡＫパケットを送信終了後Ｓ１２０１へと遷移する。
【０１８０】
Ｓ１２０４は、ＵＳＢホストに対してＡＣＫパケットを送信するステップである。ＡＣＫパケットを送信終了後ＰＩＮＧパケットに関する処理を終了する。
【０１８１】
上記のようにホスト側コントローラ１００において、図１２に示すような動作を行うステートマシンを実装することにより、ホスト側コントローラ１００は、ホスト側コントローラとファンクション側コントローラ間でデータ誤りが発生した場合に、ＵＳＢホストが送信したＰＩＮＧパケットに対してＡＣＫパケットを返すことで、ＵＳＢホストにＯＵＴパケット及びＤＡＴＡパケットを出させることが可能となり、ファンクション側コントローラに対して再びＯＵＴパケット及びＤＡＴＡパケットを送信することが可能となる。
【０１８２】
〔実施の形態９〕
本発明のさらに他の実施形態について図１３ないし図１６に基づいて説明すると以下の通りである。
【０１８３】
先ず、実施の形態９に係る送受信システムの概略構成を図１３に示す。図１３に示す送受信システムは、ホスト側コントローラ１６０とファンクション側コントローラ１７０とから構成される。ホスト側コントローラ１６０は、ホスト側ステートマシン１０１、ＵＳＢ受信機１０２、ＦＩＦＯ１０３、変調回路１０４、光送信機１０５、光受信機１０６、復調回路１０７、ＦＩＦＯ１０８、ＵＳＢ送信機１０９、スピードネゴシエーションステートマシン１６１、エラー検出回路１６２を備えている。ホスト側コントローラ１６０において、スピードネゴシエーションステートマシン１６１、エラー検出回路１６２以外の構成要素はすべて、図１に示したホスト側コントローラ１００と同一の構成および機能をもつため、詳細な説明は省略する。また、ファンクション側コントローラ１７０は、ファンクション側ステートマシン１１１、光受信機１１２、復調回路１１３、ＦＩＦＯ１１４、ＵＳＢ送信機１１５、ＵＳＢ受信機１１６、ＦＩＦＯ１１７、変調回路１１８、光送信機１１９、スピードネゴシエーションステートマシン１７１、エラー検出回路１７２を備えている。ファンクション側コントローラ１７０において、スピードネゴシエーションステートマシン１７１、エラー検出回路１７２以外の構成要素はすべて、図１に示したファンクション側コントローラ１１０と同一の構成および機能をもつため、詳細な説明は省略する。
【０１８４】
スピードネゴシエーションステートマシン１６１および１７１は、ホスト側コントローラ１６０とファンクション側コントローラ１７０との間において、スピードネゴシエーション（転送速度調整）を行って、複数の転送速度から一つの転送速度を選択するためのステートマシンである。エラー検出回路１６２、１７２は、低速通信路（図１３においては、ホスト−ファンクション間の光通信路）のエラー検出を行う回路である。尚、このスピードネゴシエーションは、ＯＵＴトランザクションの実行前に行われる。
【０１８５】
図１４を用いて、スピードネゴシエーションの動作を説明する。尚、図１４におけるスピードネゴシエーションのプロトコルは一例であり、本発明はこのプロトコルに限定されるものではない。
【０１８６】
ホスト側コントローラ１６０のスピードネゴシエーションステートマシン１６１は、ｔ１４０１において、所定の転送速度Ａで、ｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始し、また、ｋｅｅｐ＿ｓｐｅｅｄ信号の送信と同時にタイマをスタートさせる。なお、ｋｅｅｐ＿ｓｐｅｅｄ信号は、転送速度を決めるための送信コード（リクエスト信号）の１つであり、ファンクション側コントローラ１７０に、現在の転送速度を維持することを求める信号である。
【０１８７】
一方、ファンクション側コントローラ１７０では、このｋｅｅｐ＿ｓｐｅｅｄ信号の受信をシグナルディテクト信号によって確認すると、ｔ１４０２において、タイマをスタートさせると共に、ホスト側コントローラ１６０に対するｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始する。
【０１８８】
ホスト側コントローラ１６０およびファンクション側コントローラ１７０のそれぞれは、予め定められた時間Ｔの期間は、特定の送信コードを送信しつづける。
【０１８９】
ｔ１４０３においてホスト側コントローラ１６０から送信されたｋｅｅｐ＿ｓｐｅｅｄ信号が、光通信路においてピット化けし、ファンクション側コントローラ１７０が正常に受信できなかった場合、ファンクション側コントローラ１７０は、ｔ１４０４において、ｋｅｅｐ＿ｓｐｅｅｄ信号に代えて、ｌｏｗｅｒ＿ｓｐｅｅｄ信号をホスト側コントローラ１６０に送信する。このｌｏｗｅｒ＿ｓｐｅｅｄ信号は、転送速度を決めるためのリクエスト信号の１つであり、送信先（ホスト側コントローラ１６０）に、転送速度を下げるよう求める信号である。
【０１９０】
ファンクション側コントローラ１７０からのｌｏｗｅｒ＿ｓｐｅｅｄ信号を受信したホスト側コントローラ１６０では、現在の転送速度Ａでは、ファンクション側コントローラ１７０が受信を正常に行えないと認識する。そして、ファンクション側コントローラ１７０に対し、ｌｏｗｅｒ＿ｓｐｅｅｄ信号を送信する（ｔ１４０５において、送信コードをｌｏｗｅｒ＿ｓｐｅｅｄに切り替える）。
【０１９１】
ファンクション側コントローラ１７０は、ｔ１４０６において、ホスト側コントローラ１６０からｌｏｗｅｒ＿ｓｐｅｅｄ信号を受信することで、自身の送信したｌｏｗｅｒ＿ｓｐｅｅｄ信号がホスト側コントローラ１６０に認識されたと判断する。
【０１９２】
そして、ホスト側コントローラ１６０およびファンクション側コントローラ１７０のそれぞれにおいて所定時間Ｔの経過後、ホスト側コントローラ１６０およびファンクション側コントローラ１７０は、その時点で送受信されている信号がｌｏｗｅｒ＿ｓｐｅｅｄ信号であるため、転送速度を、例えば半分（Ａ／２）に低下させる。
【０１９３】
すなわち、ホスト側コントローラ１６０が、ｔ１４０７において、転送速度Ａ／２でｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始するとともに、タイマをリスタートさせる。一方、ファンクション側コントローラ１７０も、ｔ１４０８において、転送速度Ａ／２でｋｅｅｐ＿ｓｐｅｅｄ信号の送信を開始するとともに、タイマをリスタートさせる。
【０１９４】
そして、ホスト側コントローラ１６０およびファンクション側コントローラ１７０の双方でエラーが検出されずに所定時間Ｔが経過すると、ホスト側コントローラ１６０およびファンクション側コントローラ１７０は、ｔ１４０９、ｔ１４１０において、スピードネゴシエーションの終了信号（終了リクエスト）であるＥｎｄ＿Ｎｅｇｏ信号の送信を開始する。そして、ホスト側コントローラ１６０およびファンクション側コントローラ１７０のそれぞれは、相手機器からのＥｎｄ＿Ｎｅｇｏ信号を受信したときに、スピードネゴシエーションを終了し、アクティブ状態へと遷移する。
【０１９５】
ここで、図１５を用いて、ホスト側コントローラ１６０におけるスピードネゴシエーションステートマシン１６１の動作を説明する。
【０１９６】
ステートＳＴ０は、スピードネゴシエーションの開始ステートである。ここでは、スピードネゴシエーションステートマシン１６１は、送信コードをｋｅｅｐ＿ｓｐｅｅｄ信号とし、タイマをリスタートした後、ステートＳＴ１に状態を遷移する。
【０１９７】
ステートＳＴ１は、スピードネゴシエーションを行うステートである。ここでは、スピードネゴシエーションステートマシン１６１は、受信コードにエラーがあるか、相手機器（ファンクション側コントローラ１７０）からのｌｏｗｅｒ＿ｓｐｅｅｄ信号を受信した場合は、送信コードをｌｏｗｅｒ＿ｓｐｅｅｄに切り替える。
【０１９８】
また、スピードネゴシエーションステートマシン１６１は、所定時間Ｔの経過した後、送信コードがｌｏｗｅｒ＿ｓｐｅｅｄ信号であった場合はステートＳＴ０へ、また送信コードがｋｅｅｐ＿ｓｐｅｅｄであった場合はステートＳＴ２に状態を遷移する。
【０１９９】
ここで、ステートＳＴ０に遷移する場合は、転送速度を現在の転送速度に対して、例えば半分にする（転送速度の低下の幅（度合い）は、ユーザーの所望の値に設定可能である。また、この幅は、あらかじめスピードネゴシエーションステートマシン１６１に記憶されている）。
【０２００】
一方、ステートＳＴ２に遷移する場合は、送信コードをＥｎｄ＿Ｎｅｇｏ信号へと切り替える。このステートＳＴ２は、スピードネゴシエーションの終了を確認するステートである。相手機器（ファンクション側コントローラ１７０）からＥｎｄ＿Ｎｅｇｏ信号を受信すると、スピードネゴシエーションを終了し、アクティプ状態へと遷移する。
【０２０１】
次に、図１６を用いて、ファンクション側コントローラ１７０におけるスピードネゴシエーションステートマシン１７１の動作について説明する。
【０２０２】
ステートＳＴ０，ＳＴ１，ＳＴ２の各ステートにおける動作は、スピードネゴシエーションステートマシン１６１の動作と同一である。
【０２０３】
ステートＳＴ０の前の状態であるステートＳＴ４は、ホスト側コントローラ１６０からリクエスト信号を受信したか否かを判別するステートである。光受信機１１２（あるいは他の受信信号検出回路）からシグナルディテクト信号を受けた場合、スピードネゴシエーションステートマシン１７１は、ステートＳＴ０に状態を遷移する。
【０２０４】
上記のステートマシンをホスト側コントローラ１６０とファンクション側コントローラ１７０とがそれぞれ構成することで、複数の転送速度から一つの転送速度を決定することが可能となる。
【０２０５】
エラー検出回路１６２および１７２は、ホスト−ファンクション間の光通信路におけるビットエラーの検出を行う。具体的には、例えば８Ｂ１０Ｂ復調時にテーブル引きを行い、テーブルにないキャラクタを受信した場合はエラーとする。このエラーの定義については、言及しない。
【０２０６】
スピードネゴシエーション終了後、アクティブ状態になると、エラー検出回路１６２および１７２により得られたエラー数とタイマ１６３および１７３の計測値により、一定時間におけるエラー数（エラーレート）を測定することが可能となる。前記エラーレートが予め定められた値よりも大きい場合は、通信路の品質が悪くなっている（例えばモバイル機器とＰＣ（Personal Computer）間の通信におけるモバイル機器とＰＣとの通信距離の変化など）と判断されるため、現時点での転送速度での通信をあきらめ、再度スピードネゴシエーションを行い、正常な通信が可能な転送速度を再決定した後、ＯＵＴトランザクションを行うことで正常にデータ転送を行うことが可能となる。
【０２０７】
また、本実施の形態に係る説明では、ホスト−ファンクション間の光通信路はＵＳＢのネイティブ速度よりも低い転送速度であることを想定しているが、将来的に安価でより高速な光トランシーバが製造可能となれば、ホスト−ファンクション間における光通信路でＵＳＢのネイティブ速度でのデータ転送が可能な通信手段を用いることも考えられる。このような場合、はじめはＵＳＢのネイティブ速度に相当する速度（８Ｂ１０Ｂ変調の場合、６００Ｍｂｐｓ）でスピードネゴシエーションを行い、仮にエラーレートが悪くなかった場合は、本発明のステートマシンによるパケット制御を行わずに、純粋なリピートを行うことでＵＳＢ２．０の純粋な光化を行うことが可能となり、データ転送速度の低下を防ぐことができる。
【０２０８】
そして、６００Ｍｂｐｓで正常に通信ができなければ、転送速度を落とした上で本発明のステートマシンによりパケットを制御し、ＯＵＴトランザクションを行うことが可能となる。つまり、ステートマシンによるパケットの制御のＯＮ、ＯＦＦをスピードネゴシエーションの結果で判断することにより、最も高効率な方法でパケット転送を行うことが可能となる。
【０２０９】
尚、上記実施の形態１ないし９の説明は、ホスト−ファンクション間の通信速度がＵＳＢのネイティブ速度に比べて低速であり、従来の伝送方式ではＵＳＢで規定されている制約時間内での通信が完了しないといった課題を解決するものとして記載されている。しかしながら、ホスト−ファンクション間の通信速度がＵＳＢのネイティブ速度と等しい場合であっても、ホスト−ファンクション間の通信経路が非常に長くなる場合（例えば数１００ｍの光ファイバ）には、ターンアラウンドタイムが長くなり、制約時間内にＯＵＴトランザクションを終了できなくなる可能性がある。これは、ＵＳＢの規格では、ＵＳＢハブの段数（最大６段）のリピート時間とＵＳＢのケーブル長（最大５ｍ）によって、最大ターンアラウンドタイムが定められているためである。本発明の伝送方法は、このようにホスト−ファンクション間の通信経路が非常に長くなり、従来の伝送方式ではＵＳＢで規定されている制約時間内での通信が完了しないといった場合においても適用可能である。
【０２１０】
また、上記実施の形態１ないし９の説明においては、ＵＳＢ２．０規格を想定しているが、ＵＳＢ２．０規格ではホスト側とファンクション側との機能がそれぞれ固定している。すなわち、ＵＳＢ２．０規格の下でのデータのやり取りは、ＰＣをＵＳＢホストとして、該ＰＣにＵＳＢファンクションとなるデバイス（デジタルカメラやプリンタ等）を接続して行っていた。
【０２１１】
しかしながら、近年、ＵＳＢ−ＯＴＧ（USB-On-The-Go）という規格が制定され、通常ＵＳＢシステムで必要であったＰＣ（ＵＳＢホスト）が必要でなくなっている。すなわち、ＵＳＢ−ＯＴＧ規格では、ＰＣ（ＵＳＢホスト）なしにＵＳＢ機器同士でデータの送受信が可能であるため、利便性の向上が図られている。ＵＳＢ−ＯＴＧにおいては、繋がれたケーブルのコネクタの種類により、ＵＳＢホストとしても、ＵＳＢファンクションとしても動作可能となる。
【０２１２】
ＵＳＢ−ＯＴＧでは、ＵＳＢ２．０と同様に、ＬＳ（１．５Ｍｂｐｓ），ＦＳ（１２Ｍｂｐｓ），ＨＳ（４８０Ｍｂｐｓ）の転送速度をサポートしている。また、ＵＳＢ−ＯＴＧ対応機器は、ＵＳＢホストとしても、またＵＳＢファンクションとしても動作可能である。また、ＵＳＢ−ＯＴＧ規格においては、ｍｉｎｉＡＢという新しいコネクタの種類が追加された。このｍｉｎｉＡＢは、ｍｉｎｉＡ，ｍｉｎｉＢの両方のプラグを持ったケーブルを接続することが可能であり、接続されるケーブルのプラグの形状により、ｍｉｎｉＡが接続された場合は、ＵＳＢホストとして動作し、またｍｉｎｉＢが接続された場合は、ＵＳＢファンクションとして動作する。また、ＨＮＰ（Host Negotiation Protocol）という新しいプロトコルにより、ケーブルを接続した状態で、動的にホストとファンクションの機能を交代するといった機構を追加されている。つまり、ＵＳＢ−ＯＴＧでは、接続される機器がＵＳＢホストとなるかＵＳＢファンクションとなるかは、ケーブルのコネクタの種類、もしくはＵＳＢ−ＯＴＧで定められたＨＮＰ（Host Negotiation Protocol）で決定する。
【０２１３】
すなわち、本発明をこのＵＳＢ−ＯＴＧに応用する場合、ＵＳＢホストおよびＵＳＢファンクションはその役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることもありうる。同様に、ホスト側コントローラおよびファンクション側コントローラもその役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることも可能であるため、一つの通信コントローラがホスト側コントローラとファンクション側コントローラとの両方の機能を持っていることが好ましい。このためには、各コントローラのステートマシンにおいて、ホスト側コントローラおよびファンクション側コントローラの両方の機能として動作可能なプログラムが組み込まれていれば良い。
【０２１４】
また、上記実施の形態１ないし９の説明において、ホスト側コントローラおよびファンクション側コントローラ間の通信は全二重通信である。こうすることで、ホスト−ファンクション間の通信において、半二重通信の際に必要なプリアンブルをなくすことが可能となり、通信路の使用効率を向上することができる。もちろん、半二重通信でシステムを構築しても問題はない。
【０２１５】
本発明に係る送受信システムでは、以上の実施の形態にて説明したように、ＵＳＢネイティブの速度よりも遅い速度（例えば１００Ｍｂｐｓ）でＵＳＢホスト−ホスト側コントローラ−ファンクション側コントローラ−ＵＳＢファンクション間のデータ転送を行う場合であっても、ＵＳＢネイティブの速度（４８０Ｍｂｐｓ）でＵＳＢホストとＵＳＢファンクション間のデータ転送を行う場合に比べて、全体としてほぼ同じ転送速度が得られる場合もある。
【０２１６】
例えば、フラッシュメモリなどの低速データ転送（５０Ｍｂｐｓ）のアプリケーション用いるような場合に、上記ＯＵＴトランザクションを連続して実施すると、ＨＤＤなどの高速データ転送（２００Ｍｂｐｓ程度）が必要なアプリケーションを用いる場合に比べてＯＵＴトランザクション間の時間を長く取る必要がある。つまり、高速データ転送のアプリケーション使用時には、トランザクション間の時間が短く、低速データ転送のアプリケーション使用時には、トランザクション間の時間が長くなる。
【０２１７】
このため、本発明に係る方法でＯＵＴトランザクションを行った場合、１回のＯＵＴトランザクションに係る時間は、ＵＳＢネイティブの転送速度でホスト−ファンクション間のデータ転送を行う場合に比べて長くなるものの、トランザクション間において要する時間内に終了すれば、次のＯＵＴトランザクション開始時間は、ＵＳＢのネイティブ速度の場合のＯＵＴトランザクション開始時間と比べて遅くならない。つまり、ホスト−ファンクション間に低速通信路を用いた場合とＵＳＢネイティブの速度で通信を行う場合とを比較すると、全体としては転送速度が変わらない結果となる。
【０２１８】
また、ＵＳＢ２．０を単純に光化しようとする場合、例えば８Ｂ１０Ｂの変調方式を用いたとすると、４８０×１０／８＝６００Ｍｂｐｓの帯域を持った光トランシーバが必要である。これを満たす光トランシーバはＬＤ（レーザーダイオード）ある。一方、本発明を用いて低速な通信路でＵＳＢ２．０の転送ができる場合、低速通信路が例えば１００Ｍｂｐｓの場合、これを満たす光トランシーバは、ＬＥＤ（発光ダイオード）である。ＬＤとＬＥＤを比較すると、圧倒的にＬＥＤの方が安価であり、本発明の構成により、光トランシーバのコストの削減が可能となる。
【０２１９】
さらに、コントローラにおいても、たとえばホスト側コントローラがＵＳＢホストに一体化され、他のメタルポートをなくし、光ポートのみの構成となった場合、コントローラの必要とする帯域が、６００Ｍｂｐｓから１００Ｍｂｐｓへと大きく低くなる。これは、安価な製造プロセスにより、コントローラの作成が可能となることを意味しており、やはり本発明によりコスト削減が可能となる。
【０２２０】
以上により、低速のアプリケーションを使用する場合、本発明によりコスト削減が可能であり、低速のアプリケーションとして例えばフラッシュメモリが搭載された携帯電話、デジタルカメラなどの機器においては、本発明が有効であると考えられる。
【産業上の利用可能性】
【０２２１】
ホスト−ファンクション間の転送速度を低速としても、ターンアラウンドタイムを意識することなくＯＵＴトランザクションを正常に行える送受信システムによって、ＵＳＢにてデータ通信を行う種々の通信機器に適用できる。
【図面の簡単な説明】
【０２２２】
【図１】本発明の一実施形態を示すものであり、実施の形態１における送受信システムの要部構成を示すブロック図である。
【図２】実施の形態１における送受信システムのホスト側コントローラのステートマシンの動作を示すフローチャートである。
【図３】実施の形態１における送受信システムのホスト側コントローラのステートマシンにおけるＰＩＮＧパケットの受信に係る動作を示すフローチャートである。
【図４】実施の形態１における送受信システムのファンクション側コントローラのステートマシンの動作を示すフローチャートである。
【図５】ＵＳＢ２．０において各転送モードにおけるＤＡＴＡパケット最大長を示す図である。
【図６】実施の形態２における送受信システムの要部構成を示すブロック図である。
【図７】実施の形態３における送受信システムの要部構成を示すブロック図である。
【図８】実施の形態４における送受信システムの要部構成を示すブロック図である。
【図９】実施の形態５における送受信システムの要部構成を示すブロック図である。
【図１０】実施の形態６における送受信システムのホスト側コントローラのステートマシンにおけるＰＩＮＧパケットの受信に係る動作を示すフローチャートである。
【図１１】実施の形態７におけるＵＳＢパケットおよび低速通信路におけるパケットフォーマットを示す図である。
【図１２】実施の形態８における送受信システムのホスト側コントローラのステートマシンにおけるＰＩＮＧパケットの受信に係る動作を示すフローチャートである。
【図１３】実施の形態９における送受信システムの要部構成を示すブロック図である。
【図１４】実施の形態９におけるスピードネゴシエーション処理を示すタイミングチャートである。
【図１５】実施の形態９における送受信システムのホスト側コントローラのスピードネゴシエーションステートマシンの動作を示すタイミングチャートである。
【図１６】実施の形態９における送受信システムのファンクション側コントローラのスピードネゴシエーションステートマシンの動作を示すタイミングチャートである。
【図１７】ＵＳＢ２．０におけるパケットの種類を示す図である。
【図１８】ＵＳＢ２．０における代表的なパケットのパケットフォーマットを示す図である。
【図１９】ＵＳＢ２．０におけるＯＵＴトランザクションを示すタイミングチャートである。
【図２０】ＵＳＢ２．０におけるＯＵＴトランザクションを低速通信路で行う場合のパケット転送の様子を示すタイミングチャートである。
【符号の説明】
【０２２３】
１００，１４０，１６０
ホスト側コントローラ
１０１            ホスト側ステートマシン
（受信確認手段，格納確認手段，送信制御手段）
１０８            ＦＩＦＯ（格納手段）
１１０，１２０，１３０，１５０，１７０
ファンクション側コントローラ
１１１            ファンクション側ステートマシン（再送要求手段）
１２１            カウンタ（データ量確認手段）
１３１，１４１    ＣＲＣチェック回路（誤り解析手段）
【図１】
2005107683.tif 000003
【図２】
2005107683.tif 000004
【図３】
2005107683.tif 000005
【図４】
2005107683.tif 000006
【図５】
2005107683.tif 000007
【図６】
2005107683.tif 000008
【図７】
2005107683.tif 000009
【図８】
2005107683.tif 000010
【図９】
2005107683.tif 000011
【図１０】
2005107683.tif 000012
【図１１】
2005107683.tif 000013
【図１２】
2005107683.tif 000014
【図１３】
2005107683.tif 000015
【図１４】
2005107683.tif 000016
【図１５】
2005107683.tif 000017
【図１６】
2005107683.tif 000018
【図１７】
2005107683.tif 000019
【図１８】
2005107683.tif 000020
【図１９】
2005107683.tif 000021
【図２０】
2005107683.tif 000022