(57)【要約】【課題】  ホスト−ファンクション間でＵＳＢ２．０のネイティブ速度と比べて転送速度が低い通信路を用いた場合でも、ＵＳＢ２．０のＩＮトランザクションによるデータ転送を問題なく行える送受信システムを実現する。【解決手段】  ホスト側コントローラ１００においてＵＳＢホストからのＩＮパケットの受信を確認すると、該ＩＮパケットをファンクション側コントローラ１１０に転送し、ファンクション側からＤＡＴＡパケットを受信する。受信したＤＡＴＡパケットはＦＩＦＯ１０８にて一旦格納し、ＵＳＢホストから再度ＩＮパケットを受信した時点で、ＦＩＦＯ１０８に格納されているＤＡＴＡパケットをＵＳＢホストへ送信する。【選択図】  図１
2005107677.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）で決定する。
【０２０９】
すなわち、本発明をこのＵＳＢ−ＯＴＧに応用する場合、ＵＳＢホストおよびＵＳＢファンクションはその役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることもありうる。同様に、ホスト側コントローラおよびファンクション側コントローラもその役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることも可能であるため、一つの通信コントローラがホスト側コントローラとファンクション側コントローラとの両方の機能を持っていることが好ましい。このためには、各コントローラのステートマシンにおいて、ホスト側コントローラおよびファンクション側コントローラの両方の機能として動作可能なプログラムが組み込まれていれば良い。
【０２１０】
また、上記実施の形態１ないし９の説明において、ホスト側コントローラおよびファンクション側コントローラ間の通信は全二重通信である。こうすることで、ホスト−ファンクション間の通信において、半二重通信の際に必要なプリアンブルをなくすことが可能となり、通信路の使用効率を向上することができる。もちろん、半二重通信でシステムを構築しても問題はない。
【０２１１】
本発明に係る送受信システムでは、以上の実施の形態にて説明したように、ＵＳＢネイティブの速度よりも遅い速度（例えば１００Ｍｂｐｓ）でＵＳＢホスト−ホスト側コントローラ−ファンクション側コントローラ−ＵＳＢファンクション間のデータ転送を行う場合であっても、ＵＳＢネイティブの速度（４８０Ｍｂｐｓ）でＵＳＢホストとＵＳＢファンクション間のデータ転送を行う場合に比べて、全体としてほぼ同じ転送速度が得られる場合もある。
【０２１２】
例えば、フラッシュメモリなどの低速データ転送（５０Ｍｂｐｓ）のアプリケーション用いるような場合に、上記ＩＮトランザクションを連続して実施すると、ＨＤＤなどの高速データ転送（２００Ｍｂｐｓ程度）が必要なアプリケーションを用いる場合に比べてＩＮトランザクション間の時間を長く取る必要がある。つまり、高速データ転送のアプリケーション使用時には、トランザクション間の時間が短く、低速データ転送のアプリケーション使用時には、トランザクション間の時間が長くなる。
【０２１３】
このため、本発明に係る方法でＩＮトランザクションを行った場合、１回のＩＮトランザクションに係る時間は、ＵＳＢネイティブの転送速度でホスト−ファンクション間のデータ転送を行う場合に比べて長くなるものの、トランザクション間において要する時間内に終了すれば、次のＩＮトランザクション開始時間は、ＵＳＢのネイティブ速度の場合のＩＮトランザクション開始時間と比べて遅くならない。つまり、ホスト−ファンクション間に低速通信路を用いた場合とＵＳＢネイティブの速度で通信を行う場合とを比較すると、全体としては転送速度が変わらない結果となる。
【０２１４】
また、ＵＳＢ２．０を単純に光化しようとする場合、例えば８Ｂ１０Ｂの変調方式を用いたとすると、４８０×１０／８＝６００Ｍｂｐｓの帯域を持った光トランシーバが必要である。これを満たす光トランシーバはＬＤ（レーザーダイオード）ある。一方、本発明を用いて低速な通信路でＵＳＢ２．０の転送ができる場合、低速通信路が例えば１００Ｍｂｐｓの場合、これを満たす光トランシーバは、ＬＥＤ（発光ダイオード）である。ＬＤとＬＥＤを比較すると、圧倒的にＬＥＤの方が安価であり、本発明の構成により、光トランシーバのコストの削減が可能となる。
【０２１５】
さらに、コントローラにおいても、たとえばホスト側コントローラがＵＳＢホストに一体化され、他のメタルポートをなくし、光ポートのみの構成となった場合、コントローラの必要とする帯域が、６００Ｍｂｐｓから１００Ｍｂｐｓへと大きく低くなる。これは、安価な製造プロセスにより、コントローラの作成が可能となることを意味しており、やはり本発明によりコスト削減が可能となる。
【０２１６】
以上により、低速のアプリケーションを使用する場合、本発明によりコスト削減が可能であり、低速のアプリケーションとして例えばフラッシュメモリが搭載された携帯電話、デジタルカメラなどの機器においては、本発明が有効であると考えられる。
【産業上の利用可能性】
【０２１７】
ホスト−ファンクション間の転送速度を低速としても、ターンアラウンドタイムを意識することなくＩＮトランザクションを正常に行える送受信システムによって、ＵＳＢにてデータ通信を行う種々の通信機器に適用できる。
【図面の簡単な説明】
【０２１８】
【図１】本発明の一実施形態を示すものであり、実施の形態１における送受信システムの要部構成を示すブロック図である。
【図２】実施の形態１における送受信システムのホスト側コントローラのステートマシンの動作を示すフローチャートである。
【図３】実施の形態１における送受信システムのファンクション側コントローラのステートマシンの動作を示すフローチャートである。
【図４】実施の形態２における送受信システムのホスト側コントローラのステートマシンの動作を示すフローチャートである。
【図５】実施の形態２における送受信システムのファンクション側コントローラのステートマシンの動作を示すフローチャートである。
【図６】実施の形態２における送受信システムでのＩＮトランザクションを示すタイミングチャートである。
【図７】ＵＳＢ２．０において各転送モードにおけるＤＡＴＡパケット最大長を示す図である。
【図８】実施の形態３における送受信システムの要部構成を示すブロック図である。
【図９】実施の形態４における送受信システムの要部構成を示すブロック図である。
【図１０】実施の形態５における送受信システムの要部構成を示すブロック図である。
【図１１】実施の形態６における送受信システムの要部構成を示すブロック図である。
【図１２】実施の形態６における送受信システムのホスト側コントローラのステートマシンの動作を示すフローチャートである。
【図１３】実施の形態７における送受信システムの要部構成を示すブロック図である。
【図１４】実施の形態７における送受信システムのホスト側コントローラのステートマシンの動作を示すフローチャートである。
【図１５】実施の形態７における送受信システムのファンクション側コントローラのステートマシンの動作を示すフローチャートである。
【図１６】実施の形態８におけるＵＳＢパケットおよび低速通信路におけるパケットフォーマットを示す図である。
【図１７】実施の形態９における送受信システムの要部構成を示すブロック図である。
【図１８】実施の形態９におけるスピードネゴシエーション処理を示すタイミングチャートである。
【図１９】実施の形態９における送受信システムのホスト側コントローラのスピードネゴシエーションステートマシンの動作を示すタイミングチャートである。
【図２０】実施の形態９における送受信システムのファンクション側コントローラのスピードネゴシエーションステートマシンの動作を示すタイミングチャートである。
【図２１】ＵＳＢ２．０におけるパケットの種類を示す図である。
【図２２】ＵＳＢ２．０における代表的なパケットのパケットフォーマットを示す図である。
【図２３】ＵＳＢ２．０におけるＩＮトランザクションを示すタイミングチャートである。
【図２４】ＵＳＢ２．０におけるＩＮトランザクションを低速通信路で行う場合のパケット転送の様子を示すタイミングチャートである。
【符号の説明】
【０２１９】
１００，１２０，１３０，１５０，１７０
ホスト側コントローラ
１０１            ホスト側ステートマシン
（受信確認手段，データ格納確認手段，送信制御手段，再送要求手段）
１０８，１５１    ＦＩＦＯ（格納手段）
１１０，１４０，１６０，１８０
ファンクション側コントローラ
１１１            ファンクション側ステートマシン
１２１            カウンタ（データ量確認手段）
１３１，１４１    ＣＲＣチェック回路（誤り解析手段）
【図１】
2005107677.tif 000003
【図２】
2005107677.tif 000004
【図３】
2005107677.tif 000005
【図４】
2005107677.tif 000006
【図５】
2005107677.tif 000007
【図６】
2005107677.tif 000008
【図７】
2005107677.tif 000009
【図８】
2005107677.tif 000010
【図９】
2005107677.tif 000011
【図１０】
2005107677.tif 000012
【図１１】
2005107677.tif 000013
【図１２】
2005107677.tif 000014
【図１３】
2005107677.tif 000015
【図１４】
2005107677.tif 000016
【図１５】
2005107677.tif 000017
【図１６】
2005107677.tif 000018
【図１７】
2005107677.tif 000019
【図１８】
2005107677.tif 000020
【図１９】
2005107677.tif 000021
【図２０】
2005107677.tif 000022
【図２１】
2005107677.tif 000023
【図２２】
2005107677.tif 000024
【図２３】
2005107677.tif 000025
【図２４】
2005107677.tif 000026