JP2005129008A - ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体 - Google Patents

ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体 Download PDF

Info

Publication number
JP2005129008A
JP2005129008A JP2004214715A JP2004214715A JP2005129008A JP 2005129008 A JP2005129008 A JP 2005129008A JP 2004214715 A JP2004214715 A JP 2004214715A JP 2004214715 A JP2004214715 A JP 2004214715A JP 2005129008 A JP2005129008 A JP 2005129008A
Authority
JP
Japan
Prior art keywords
host
packet
data packet
communication
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004214715A
Other languages
English (en)
Inventor
Fumihiro Fukae
文博 深江
Hitoshi Naoe
仁志 直江
Hirohito Sakai
宏仁 酒井
Shohei Osawa
昇平 大澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2004214715A priority Critical patent/JP2005129008A/ja
Priority to TW093129262A priority patent/TWI296083B/zh
Priority to CNB2004100120211A priority patent/CN100366029C/zh
Priority to US10/950,563 priority patent/US7461318B2/en
Publication of JP2005129008A publication Critical patent/JP2005129008A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 データ転送に時間のかかる通信路を用いた場合でも、SETUPトランザクションを実行可能なUSBシステムを提供する。
【解決手段】 ホスト側コントローラ11のホストSM32は、デバイス側コントローラ12からホスト10に向けて送信されるACKパケットを受信したときに、このパケットを受信FIFO26に記憶する。その後、ホストSM32は、ホスト10からSETUPパケットおよびDATAパケットが再送されたときに、記憶していたACKパケットをホスト10に送信する。従って、ホスト10−デバイス13間の通信に時間がかかり、デバイス側コントローラ12から送信されたACKパケットをホスト10に直接に受信させると最大TAタイムを過ぎてしまう場合でも、SETUPトランザクションを完了させられる。
【選択図】 図1

Description

本発明は、ホストコンピューター(ホスト)と、その周辺機器(デバイス)との間におけるUSB通信(USB規格に沿ったデータ通信)を実現するための通信システムである、USBシステムに関するものである。
ユニバーサルシリアルバス(Universal Serial Bus:以下USB)は、パーソナルコンピューター等のホストに接続して用いる周辺装置(デバイス)に関する、拡張性の自由度を高めるために開発されたインタフェース仕様である。そして、このUSBは、ホストと様々なUSB対応デバイスとの通信を、共通のバスラインを用いて実施できるシリアルインタフェース規格である。
USBでは、原理上、1つのシステムの中で、1台のホスト(USBホスト)と、最大127台までのデバイスとを、同一バス上に接続できる。これらの接続は、物理的には、ツリー型のネットワーク構造をとっている。また、論理的には、ホスト(クライアントソフトウェア)とデバイス(USBファンクション)とが、1対1で通信する接続形態であるといえる。
このような接続形態を維持するために、各デバイスは、時分割で(タイムシェアをして)、ホストと通信を行う。また、ホストは、時分割のスケジューリングを行う。
USB1.xでは、データ転送速度の異なる2つのモード、すなわち、1.5Mbpsのロースピードモード(LS)、および、12Mbpsのフルスピードモード(FS)が規定されている。
しかし、近年、ハードディスク,DVD(Digital Versatile Disc)などの高速データ転送の必要なデバイス(アプリケーション)にも、USBを適用するようになってきている。このため、前記のような転送速度では不十分であった。
そこで、USB2.0という新しい規格が策定されている。このUSB2.0では、480Mbpsの速度でデータ転送を行うハイスピードモード(HS)が追加されている。
ここで、USBでのデータ通信(データ転送)の構造について簡単に説明する。USBでのデータ転送は、ホストおよびデバイスにそれぞれ備えられているバッファ間で行われる。
デバイス側のバッファは、エンドポイントと呼ばれるFIFO(First In First Out)バッファである。各デバイスは、最大で16個のエンドポイントを持つことが可能である。また、各エンドポイントには、識別のための番号が付けられている。
そして、ホストは、データ転送の際に、デバイスのアドレスとエンドポイント番号とを用いて、所望のエンドポイントにアクセスするようになっている。
なお、エンドポイント0(番号が0のエンドポイント)は、デバイスをUSBに接続した直後の状態(コンフィギュレーション前の状態)から設定され、ホストとの間のコントロール転送の通信(初期化のための通信など)のために使用される。
また、ホスト−デバイス間のデータ通信は、フレームと呼ばれる通信枠を用いて行われる。このフレームは、所定周期で、ホスト−デバイス間で繰り返し転送されている(LS,FSモードでは1ms周期、またHSモードでは125us周期)。そして、全てのデータが、このフレームの中でやり取りされている。
また、このフレームは、複数のトランザクションから成り立っており、トランザクションは、複数のパケットから構成されている。
パケットは、トランザクションを構成する最小の通信単位であり、実際に通信されるデータの基本単位である。また、パケットには、内容に応じて、トークンパケット、データパケット、ハンドシェイクパケットなど、いくつかの種類がある。そして、このパケットを複数含み、意味のあるデータ転送の単位となったものをトランザクションと呼ぶ。
すなわち、USBでのデータ通信は、フレームの中でトランザクションごとに行われる。そして、1つのトランザクションでは、ホスト−デバイス間で複数のパケットが転送されるようになっている。
また、上記のトークンパケットには、各デバイスのアドレスおよびエンドポイント番号が含まれており、これによって、ホストが、データ通信の相手先を指定できるようになっている。
図10は、USBパケットの種別を示す説明図である。この図に示すように、パケットには、トークンパケット、データパケット(DATAパケット)、ハンドシェイクパケット、および特殊パケットがある。
また、トークンパケットには、INパケット、OUTパケット、SETUPパケット、SOFパケットがある。それぞれのパケットは、図10に示す目的で用いられる。データパケットには、DATA0パケット、DATA1パケットなどがある。ハンドシェイクパケットには、ACKパケット、NAKパケット、STALLパケット、NYETパケットがある。また、特殊パケットとして、PINGパケットなどがある。
また、図11は、USBのパケットフォーマットを示す説明図である。この図に示すPIDは、パケットの識別子であり、8ビットで構成される。また、トークンパケットには、CRC5、データパケットにはCRC16がそれぞれ付加されている。これらのCRCは、受信パケットにおける誤りの有無を判別するために用いられるものである。
また、トークンパケットの1つであるSOF(Start of Frame)パケットは、ホストの発行するフレームの始まりを示すパケットである。
ここで、USB通信におけるSETUPトランザクションについて説明する。
SETUPトランザクションは、USB2.0規格において、ホストにデバイスを接続した際に、ホスト−デバイス間でのシステム的な接続確立する(コンフィギュレーションを完成させる)ために行われるものである。
なお、このトランザクションは、ホストが、デバイスのエンドポイント0に対してデータ転送を行うことで実行される。以下に、図12を用いて、SETUPトランザクションについて説明する。
SETUPトランザクションでは、まず、T301において、ホストがデバイスにSETUPパケットを送信し、SETUPトランザクションの開始を通知する。その後、ホストは、T302において、DATAパケットを送信する。デバイスは、受信したSETUPパケットおよびDATAパケットのCRCをチェックする。
そして、受信パケットに誤りがないと判別された場合、デバイスは、T303において、ACKパケットをホストに送信する。一方、デバイスは、受信したSETUPパケットおよびDATAパケットに誤りがあると判断された場合には、ホストに何も返さない。
ホストは、ACKパケットを受信することで、デバイスにSETUPパケットおよびDATAパケットを正しく転送できたことを認識し、SETUPトランザクションを終了する。
なお、DATAパケットの送信から所定時間(最大ターンアラウンドタイム)以内にACKパケットを受信できない場合、ホストは、デバイスにSETUPパケットもしくはDATAパケットを正常に転送できなかったこと、すなわち、SETUPトランザクションが失敗に終わったことを認識する。
そして、SETUPパケットおよびDATAパケットをデバイスに向けて再送する。
このような方法により、ホスト・デバイス間でのSETUPトランザクションを行うことが可能となる。
なお、上記の最大ターンアラウンドタイム(最大TAタイム)は、USB2.0規格における、データ信号の伝播時間に関する制約である。
すなわち、ターンアラウンドタイム(TAタイム)は、ホストあるいはデバイスの一方が、他方に対してパケットを送信してから、返信パケットを受けるまで、の時間である。
そして、最大TAタイムは、TAタイムの上限であり、返信パケットを最大TAタイム内に受信しない場合、ホストは、デバイスに対するパケット送信に失敗したと判断し、パケットを再送する。
なお、最大TAタイムは、LSおよびFSモードでは、16ビットタイム(1333ns)となっている。また、HSモードでは、721ビットタイム(1502ns)である。
例えば、SETUPトランザクションでは、ホストは、DATAパケットの送信後、1333ns(LS,FS)あるいは1502ns(HS)経過してもデバイスからACKパケットを受信できない場合、SETUPパケットおよびDATAパケットをデバイスに再送することとなる。
ところで、近年、デジタルカメラ、PDA(personal digital assistant)などのモバイル機器にも、USB端子が搭載され、USBに対応可能になってきている。
これらのモバイル機器とホストとの接続には、クレイドル(cradle;ゆりかご)方式が多く用いられている。すなわち、ホストに接続されたクレイドルのUSBコネクタと、モバイル機器のUSBコネクタとを接続することで、USB伝送を可能としている。
これらのUSBコネクタは、物理的な接点を持つ。このため、コネクタの抜き差しにより、コネクタの劣化が進み、品質の高いデータ転送を行えなくなる可能性がある。
上記のような物理的な接点をなくす方法として、ホストとモバイル機器との間で、光を用いた空間伝送を行う技術がある。このような技術は、例えば、特許文献1に記載されている。
特開2000−284872号公報(公開日;2000年10月13日)
しかしながら、USB2.0のハイスピードモードに完全に対応するためには、480Mbpsの転送速度を保ちながらデータを空間伝送する必要がある。従って、ホストおよびデバイスに備える光通信部(光学系および送受信部)として、高いCDR(Clock Data Recovery)性能をもつものが必要となるため、コスト増を招来する。
そこで、このようなコスト増を抑えるために、光通信の転送速度を低くしてUSB2.0のデータ転送を行うことが考えられる。
図13は、ホストからホストの光通信部(ホスト光通信部)までの通信を480Mbpsで、ホスト光通信部からデバイスの光通信部(デバイス光通信部)までの通信を100Mbpsで、さらに、デバイス光通信部からデバイスまでの通信を480Mbpsで行う場合における、SETUPトランザクションの様子を示すTチャートである。
図13に示すように、T401,T402において、ホストから送信されたSETUPパケットおよびDATAパケットは、ホスト光通信部により光信号に変換され、デバイス光通信部に対し、100Mbpsで送信される。
デバイス光通信部は、受信した光信号からSETUPパケットおよびDATAパケットを抽出し、480Mbpsでデバイスに送信する(T403)。なお、デバイス光通信部は、通信速度の差を考慮して、SETUPパケットおよびDATAパケットを完全に受信してから、これらをデバイスに送信するようになっている。
その後、デバイスは、SETUPパケットおよびDATAパケットを誤り無く受信し、かつ処理できた場合、T404において、ホストに向けてACKパケットを送信する。そして、このACKパケットは、デバイス光通信部を介して、100Mbpsでホスト光通信部に送信される。
ホスト光通信部は、受信した光信号からACKパケットを抽出し、480Mbpsでホストに送信する(T405)。その後、ホストは、T406において、デバイスからのACKパケットを受信する。
しかしながら、このような構成では、光通信部間の転送速度が遅いため、T401からT406までの時間(TAタイム)が長くなる。特に、ホストから送信されるDATAパケットのサイズ(パケット長)が大きいときには、TAタイムが規定値(最大TAタイム)を超えてしまう可能性もある。従って、このような場合には、ホストは、デバイスに正常に受信されているSETUPパケットおよびDATAパケットを、デバイスに向けて再送し続けることになり、SETUPトランザクションを完了できないこととなる。
本発明は、上記のような従来の問題点に鑑みてなされたものである。そして、その目的は、データ転送に時間のかかる通信路を用いた場合でも、SETUPトランザクションを実行可能なUSBシステムを提供することにある。
本発明のホスト側コントローラ(本ホスト側コントローラ)は、USBシステムのホストに備えられ、ホストとデバイスとの間の通信を中継する本ホスト側コントローラにおいて、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する一方、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを記憶するとともに、ホストからデバイスに向けて再送信されるSETUPパケットおよびDATAパケットを受信したときに、上記のACKパケットをホストに送信するホスト側制御部を備えていることを特徴としている。
また、ホスト側制御部は、デバイス側から受信したACKパケットを記憶した後、SETUPパケットおよびDATAパケットの再送を待たずに、ACKパケットをホストに転送してもよい。また、ホスト側制御部は、デバイス側から受信したACKパケットを記憶した後、ホストに対するACKパケットの送信を回避するように設定されていてもよい。
また、本ホスト側コントローラのホスト側制御部は、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する際、DATAパケットにおけるエラーの有無を判断することが好ましい。さらに、この場合、ホスト側制御部は、DATAパケットにエラーのある場合には、そのパケットの送信を回避するように設定されていることが好ましい。
また、本発明のUSBシステム(本システム)は、ホストと、デバイスと、本ホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを備えたシステムである。
また、本システムでは、デバイス側コントローラが、デバイス側制御部を備えていることが好ましい。このデバイス側制御部は、SETUPトランザクション時、本ホスト側コントローラから送信されたSETUPパケットおよびDATAパケットをデバイスに送信する一方、デバイスから送信されるACKパケットを本ホスト側コントローラに送信するものである。
また、このデバイス側制御部は、本ホスト側コントローラからDATAパケットを受信してデバイスに転送する際、DATAパケットを完全に受信してから、転送を開始するように設定されていてもよい。
また、デバイス側制御部は、DATAパケットの受信量が安定受信量を超えたときに、デバイスに対するDATAパケットの転送を開始するように設定されていてもよい。
また、本システムでは、デバイス側制御部は、本ホスト側コントローラから受信したDATAパケットにエラーのある場合には、そのDATAパケットをデバイスに転送することを回避することが好ましい。また、この構成では、デバイス側制御部は、受信したパケットにエラーのある場合、そのパケットを破棄することが好ましい。
また、デバイス側制御部は、デバイスに対してSETUPパケットおよびDATAパケットを送信した後、所定時間以内にACKパケットを受信できなかったときには、デバイスに対してSETUPパケットおよびDATAパケットを再送するように設定されていることが好ましい。
また、この場合、デバイス側制御部は、デバイスに対してSETUPパケットおよびDATAパケットを再送する前に、DATAパケットにおけるエラーの有無を判断することが好ましい。そして、DATAパケットにエラーのある場合には、DATAパケットの再送を回避するように設定されていることが好ましい。
また、デバイス側制御部は、本ホスト側コントローラから受信したDATAパケットにエラーがあると判断した場合、本ホスト側コントローラに対してDATAパケットの再送を要求するように設定されていることが好ましい。この場合、さらに、本ホスト側コントローラのホスト側制御部が、デバイス側制御部から受けた再送の要求に応じて、DATAパケットを再送するように設定されていることが好ましい。
また、この場合、ホスト側制御部は、エラーのないDATAパケットを有している場合に限り、このDATAパケットを再送するように設定されていることが好ましい。
また、このホスト側制御部は、ホストからDATAパケットを受信してデバイス側コントローラに転送する際、DATAパケットを完全に受信してから、転送を開始するように設定されていてもよい。
また、ホスト側制御部は、DATAパケットの受信量が安定受信量を超えたときに、受信した部分から順に、デバイス側コントローラに対するDATAパケットの転送を開始するように設定されていてもよい。
また、このような場合、ホスト側制御部は、DATAパケットを完全に受信し終えたときには、DATAパケットの一部を既に転送した状態にある。このとき、ホスト側制御部は、このパケットにおけるエラーの有無を検出し、検出結果を示すフラグをDATAパケットの末尾に添付してデバイス側コントローラに送信することが好ましい。
また、この構成では、デバイス側制御部は、本ホスト側コントローラから受信したDATAパケットにエラーがあると判断した場合であって、DATAパケットにノンエラーフラグが添付されている場合に、本ホスト側コントローラに対してDATAパケットの再送を要求することが好ましい。そして、ホスト側制御部が、デバイス側制御部から受けた再送の要求に応じて、DATAパケットを再送するように設定されていることが好ましい。
また、本システムでは、ホスト側コントローラおよびデバイス側コントローラが、両コントローラ間の通信速度を設定する速度設定部を備えていることが好ましい。
また、この構成では、速度設定部により、コントローラ間の通信速度が所定値以上に設定された場合、ホスト側制御部は、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットをホスト側に転送することが好ましい。
また、本システムでは、速度設定部による通信速度の設定後、ホスト側制御部およびデバイス側制御部の少なくとも一方(あるいは速度設定部)が、コントローラでのパケット送受信におけるエラーレートを算出することが好ましい。また、この場合、速度設定部は、エラーレートが所定値以上となった場合に、コントローラ間の通信速度を低下させることが好ましい。
また、本システムでは、両コントローラ間の通信経路における通信方式が、全二重通信であることが好ましい。また、本システムでは、両コントローラ間の通信経路を、光ケーブル(光ファイバー)によって形成してもよい。また、両コントローラ間の通信を、光無線通信、あるいは、電波を用いた無線通信によって行ってもよい。
本発明の通信コントローラは、上記の課題を解決するため、ホストとデバイスとの間の通信を中継するとともに、ホスト側のコントローラとしての機能とデバイス側のコントローラとしての機能とを備える通信コントローラであって、ホスト側のコントローラとして機能する場合であって、かつ、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する一方、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを記憶するとともに、ホストからデバイスに向けて再送信されるSETUPパケットおよびDATAパケットを受信したときに、上記のACKパケットをホストに送信する制御部を備えていることを特徴としている。
また、本発明の通信コントローラは、上記の通信コントローラにおいて、上記制御部は、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する際、DATAパケットにおけるエラーの有無を判断し、エラーのある場合には、そのDATAパケットの送信を回避するように設定されていることが好ましい。
また、本発明に係る通信コンローラは、上記の通信コントローラにおいて、上記制御部は、ホストから送信されるDATAパケットを、受信した部分から順にデバイス側へ送信するとともに、DATAパケットを完全に受信したときに、このパケットにおけるエラーの有無を検出し、検出結果を示すフラグをDATAパケットの末尾に添付してデバイス側へ送信することが好ましい。
また、本発明の通信コントローラは、上記の通信コントローラにおいて、デバイス側のコントローラとして機能する場合であって、かつ、SETUPトランザクション時、上記制御部は、ホスト側から送信されたSETUPパケットおよびDATAパケットをデバイスに送信する一方、デバイスから送信されるACKパケットをホスト側に送信することが好ましい。
また、本発明の通信コントローラは、上記の通信コントローラにおいて、上記制御部は、ホスト側からDATAパケットを受信してデバイスに転送する際、DATAパケットの受信量が安定受信量を超えたときに、デバイスに対するDATAパケットの転送を開始するように設定されていることが好ましい。
また、本発明の通信コントローラは、上記の通信コントローラにおいて、上記制御部は、ホスト側から受信したDATAパケットにエラーのある場合には、そのDATAパケットをデバイスに転送することを回避するように設定されていることが好ましい。
また、本発明に係る通信コントローラは、上記の通信コントローラにおいて、上記制御部は、デバイスに対してSETUPパケットおよびDATAパケットを送信した後、所定時間以内にACKパケットを受信できなかったときには、デバイスに対してSETUPパケットおよびDATAパケットを再送するように設定されていることが好ましい。
また、本発明に係る通信コントローラは、上記の通信コントローラにおいて、上記制御部は、デバイスに対してSETUPパケットおよびDATAパケットを再送する前に、DATAパケットにおけるエラーの有無を判断し、エラーのある場合には、上記の再送を回避するように設定されていることが好ましい。
また、本発明のパケット通信方法(本通信方法)は、USBシステムにおけるホストとデバイスとの間でパケットを通信するパケット通信方法において、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信するパケット送信工程と、デバイス側からホストに向けて送信されるACKパケットをホスト側に転送することを回避する返信回避工程と、ホストからデバイスに向けてSETUPパケットおよびDATAパケットが再送されたときに、上記のACKパケットをホストに送信する返信工程とを含んでいることを特徴とする方法である。
また、本発明のパケット通信プログラムは、USBシステムのホストに備えられたコンピューターに、本通信方法におけるパケット送信工程,返信回避工程,返信工程を実行させるためのパケット通信プログラムである。また、本発明の記録媒体は、上記のプログラムを記録した記録媒体である。
本発明のホスト側コントローラ(本ホスト側コントローラ)は、USBシステムのホストに備えられ、ホストとデバイスとの間の通信を中継する本ホスト側コントローラにおいて、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する一方、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを記憶するとともに、ホストからデバイスに向けて再送信されるSETUPパケットおよびDATAパケットを受信したときに、上記のACKパケットをホストに送信するホスト側制御部を備えていることを特徴としている。
本ホスト側コントローラは、USBシステムに適用されるものである。
ここで、USBシステムとは、ホストコンピューター(ホスト)と、その周辺機器(デバイス;USBファンクション)との間におけるUSB通信(USB規格に沿ったデータ通信)を実現するための通信システムである。
そして、本ホスト側コントローラは、USBシステムのホストに備えられ、ホストとデバイスとの間の通信を中継するものである。すなわち、本ホスト側コントローラは、ホストから送信されるパケットを受け取ってデバイスに送信するとともに、ホストに向けて送信されたパケットを受信して、ホストに伝達するものである。ここで、パケットとは、USBシステムで通信されるデータの基本単位である。
上記のように、本ホスト側コントローラは、ホスト側制御部を備えており、このホスト側制御部が、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットを、デバイス側に送信するようになっている。また、これらのパケットを正常に(適切に)受信したデバイスは、ホストに向けて、ACKパケットを送信する。
なお、このACKパケットは、SETUPおよびDATAパケットを正常に受信できたことを示す、デバイスからの返信パケットである。このACKパケットを最大TAタイム内に受信できなかった場合に、ホストは、SETUPトランザクションを正常に遂行できなかった(失敗した)と判断する。そして、SETUPおよびDATAパケットをデバイスに向けて再送する。
そして、特に、本ホスト側コントローラのホスト側制御部は、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを、自身の制御する記憶部に記憶する。その後、ホスト側制御部は、ホストからSETUPパケットおよびDATAパケットが再送されたときに、記憶していたACKパケットを、ホストに送信するように設定されている。
このように、本ホスト側コントローラを用いたUSBシステムでは、ホストがSETUPパケットおよびDATAパケットを再送した直後に、ACKパケットをホストに受信させられる。従って、ホスト−デバイス間の通信に時間がかかり、デバイス側から送信されたACKパケットをホストに直接に受信させるまでに最大TAタイムを過ぎてしまうような場合でも、SETUPトランザクションを完了させることが可能となる。
なお、上記のような、ホスト−デバイス間の通信(データ転送)に時間のかかる場合とは、この間の通信速度の遅い場合や、この間の通信経路の長い場合などである。従って、本ホスト側コントローラを用いれば、ホスト−デバイス間の通信経路の自由度を、著しく増大させられる。
また、ホスト側制御部は、デバイス側から受信したACKパケットを記憶した後、SETUPパケットおよびDATAパケットの再送を待たずに、ACKパケットをホストに転送してもよい。この場合、最大TAタイム内にACKパケットをホストに受信させられた場合には、その時点で、SETUPトランザクションが終了する。一方、ホストによるACKパケットの受信時が、最大TAタイムを超えていた場合、ホストからSETUPパケット・ACKパケットが再送され、ホスト側制御部によって、ACKパケットがホストに送信される。
また、ホスト側制御部は、デバイス側から受信したACKパケットを記憶した後、ホストに対するACKパケットの送信を回避するように設定されていてもよい。この場合、ホスト側制御部は、ホストからのパケット再送を待って、ホストにACKパケットを送信する。
また、本ホスト側コントローラのホスト側制御部は、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する際、DATAパケットにおけるエラーの有無を判断することが好ましい。さらに、この場合、ホスト側制御部は、DATAパケットにエラーのある場合には、そのパケットの送信を回避するように設定されていることが好ましい。
これにより、デバイス側に対してエラーのあるパケットを送信してしまうことを回避できるため、無駄なパケット送信を防止できる。なお、上記のようなパケットのエラーは、例えば、パケットに添付されている誤り検出符号(CRC)を解析することによって行える。
また、本発明のUSBシステム(本システム)は、ホストと、デバイスと、本ホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを備えたシステムである。
また、本システムでは、デバイス側コントローラが、デバイス側制御部を備えていることが好ましい。このデバイス側制御部は、SETUPトランザクション時、本ホスト側コントローラから送信されたSETUPパケットおよびDATAパケットをデバイスに送信する一方、デバイスから送信されるACKパケットを本ホスト側コントローラに送信するものである。
また、このデバイス側制御部は、本ホスト側コントローラからDATAパケットを受信してデバイスに転送する際、DATAパケットを完全に受信してから、転送を開始するように設定されていてもよい。これは、コントローラ間の通信速度が、デバイス側コントローラとデバイスとの間の通信速度より遅い場合に、デバイスに対する送信に抜けが生じることを防止するためである。
また、デバイス側制御部は、DATAパケットの受信量が安定受信量を超えたときに、デバイスに対するDATAパケットの転送を開始するように設定されていてもよい。ここで、安定受信量とは、デバイスに対してDATAパケットの転送を開始しても、送信に抜けの生じることのないだけの受信量のことである。この構成でも、上記のような送信の抜けを防止できる。
また、本システムでは、デバイス側制御部は、本ホスト側コントローラから受信したDATAパケットにエラーのある場合には、そのDATAパケットをデバイスに転送することを回避することが好ましい。これにより、デバイスに対してエラーのあるパケットを送信してしまうことを回避できるため、無駄なパケット送信を防止できる。なお、上記したように、パケットのエラーは、パケットに添付されている誤り検出符号(CRC)を解析することなどで行える。
また、この構成では、デバイス側制御部は、受信したパケットにエラーのある場合、そのパケットを破棄することが好ましい。デバイス側制御部は、受信したパケットを、デバイス側コントローラ内のメモリーに保存することとなるが、上記のようにエラーのあるパケットを破棄することで、メモリーの記憶領域を無駄に使用することを避けられる。
また、SETUPトランザクションでは、SETUPおよびDATAパケットの受信を、デバイスが失敗することもある。これは、パケットのエラーや、送受信に関する不具合(トラブル)などに起因する。このような場合、デバイスは、パケットを正常に受信できたことを示すACKパケットを返信することはない。
このため、デバイス側制御部は、デバイスに対してSETUPパケットおよびDATAパケットを送信した後、所定時間以内にACKパケットを受信できなかったときには、デバイスに対してSETUPパケットおよびDATAパケットを再送するように設定されていることが好ましい。
これにより、ホストや本ホスト側コントローラによるパケットの再送を実行することなく、デバイス側コントローラだけの動作により、デバイスにパケットを再送できる。
また、この場合、デバイス側制御部は、デバイスに対してSETUPパケットおよびDATAパケットを再送する前に、DATAパケットにおけるエラーの有無を判断することが好ましい。そして、DATAパケットにエラーのある場合には、DATAパケットの再送を回避するように設定されていることが好ましい。これにより、無駄なパケット再送信を防止できる。
また、デバイス側制御部は、本ホスト側コントローラから受信したDATAパケットにエラーがあると判断した場合、本ホスト側コントローラに対し、DATAパケットの再送を要求するように設定されていることが好ましい。この場合、さらに、本ホスト側コントローラのホスト側制御部が、デバイス側制御部から受けた再送の要求に応じて、DATAパケットを再送するように設定されていることが好ましい。これにより、ホストからの再送を待つことなく、エラーのない適切なDATAパケットを取得できる。
また、この場合、ホスト側制御部は、エラーのないDATAパケットを有している場合に限り、このDATAパケットを再送するように設定されていることが好ましい。これにより、無駄なパケット再送を防止できる。
また、このホスト側制御部は、ホストからDATAパケットを受信してデバイス側コントローラに転送する際、DATAパケットを完全に受信してから、転送を開始するように設定されていてもよい。これは、コントローラ間の通信速度が、ホストと本ホスト側コントローラとの間の通信速度より遅い場合に、デバイス側コントローラに対する送信に抜けが生じることを防止するためである。
また、ホスト側制御部は、DATAパケットの受信量が安定受信量を超えたときに、受信した部分から順に、デバイス側コントローラに対するDATAパケットの転送を開始するように設定されていてもよい。ここで、安定受信量とは、デバイス側コントローラに対してDATAパケットの転送を開始しても、送信に抜けの生じることのないだけの受信量のことである。この構成でも、上記のような送信の抜けを防止できる。
また、このような場合、ホスト側制御部は、DATAパケットを完全に受信し終えたときには、DATAパケットの一部を既に転送した状態にある。このとき、ホスト側制御部は、このパケットにおけるエラーの有無を検出し、検出結果を示すフラグをDATAパケットの末尾に添付してデバイス側コントローラに送信することが好ましい。
この場合、デバイス側制御部は、エラーのあることを示すフラグ(エラーフラグ)の立っているパケットに関しては、ホストから本ホスト側コントローラに送信された段階で既にエラーが生じている、と判断できる。従って、デバイス側制御部は、このようなパケットに関してはデバイスに転送せず、エラーのないことを示すフラグ(ノンエラーフラグ)の立っているパケットだけをデバイスに転送することが好ましい。これにより、無駄なパケット送信を回避できる。
また、この構成では、デバイス側制御部は、本ホスト側コントローラから受信したDATAパケットにエラーがあると判断した場合であって、DATAパケットにノンエラーフラグが添付されている場合に、本ホスト側コントローラに対してDATAパケットの再送を要求することが好ましい。そして、ホスト側制御部が、デバイス側制御部から受けた再送の要求に応じて、DATAパケットを再送するように設定されていることが好ましい。
すなわち、ノンエラーフラグの立っているDATAパケットにエラーがある場合、デバイス側制御部は、このパケットに関しては、ホストから本ホスト側コントローラに送信された段階ではエラーは生じていない、と判断できる。従って、本ホスト側コントローラにDATAパケットを再送させることで、ホストからの再送を待つことなく、エラーのない適切なDATAパケットを取得できる。
また、本システムでは、ホスト側コントローラおよびデバイス側コントローラが、両コントローラ間の通信速度を設定する速度設定部を備えていることが好ましい。
また、この構成では、速度設定部により、コントローラ間の通信速度が所定値以上に設定された場合、ホスト側制御部は、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットをホスト側に転送することが好ましい。
ここで、上記の所定値とは、例えば、通常速度(USBの規格に沿った通常の速度;例えばHFでの480Mbps)程度の、デバイスからのACKパケットを最大TAタイム内でホストに直接転送(リピート)可能な速度に応じた値である。
すなわち、このような場合には、ホストによる再送を経なくても、最大TAタイム内で、デバイス側コントローラから送信されたACKパケットをホストに直接転送できる可能性が高い。従って、ホスト側制御部は、デバイス側コントローラから受信したACKパケットをそのままホストに転送(リピート)しても、SETUPトランザクションを完了させられる。
また、本システムでは、速度設定部による通信速度の設定後、ホスト側制御部およびデバイス側制御部の少なくとも一方(あるいは速度設定部)が、コントローラでのパケット送受信におけるエラーレートを算出することが好ましい。ここで、エラーレートとは、エラーの発生回数を、送受信回数で割った値(エラー発生率)である。また、この場合、速度設定部は、エラーレートが所定値以上となった場合に、コントローラ間の通信速度を低下させることが好ましい。これにより、通信速度の高すぎることに起因するエラーレートを低下させられる。
また、本システムでは、両コントローラ間の通信経路における通信方式が、全二重通信であることが好ましい。これにより、半二重通信において必要なプリアンブルをなくすことが可能となるため、コントローラ間の通信効率を向上させられる。
また、本システムでは、両コントローラ間の通信経路を、光ケーブル(光ファイバー)によって形成してもよい。これにより、パケットの長距離伝送が可能となる。
また、両コントローラ間の通信を、光無線通信、あるいは、電波を用いた無線通信によって行ってもよい。また、無線通信(空間通信)を用いる場合には、ケーブルレスのため、利便性(コントローラの配置自由度など)を向上させられる。
本発明の通信コントローラは、ホストとデバイスとの間の通信を中継するとともに、ホスト側のコントローラとしての機能とデバイス側のコントローラとしての機能とを備える通信コントローラであって、ホスト側のコントローラとして機能する場合であって、かつ、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する一方、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを記憶するとともに、ホストからデバイスに向けて再送信されるSETUPパケットおよびDATAパケットを受信したときに、上記のACKパケットをホストに送信する制御部を備えていることを特徴としている。
本通信コントローラは、ホストとデバイスとの間の通信を中継するものである。また、本通信コントローラは、ホスト側のコントローラとしての機能とデバイス側のコントローラとしての機能とを備えている。つまり、ホスト側のコントローラおよびデバイス側のコントローラの何れか一方のコントローラとして機能させることができる。
さらに、本通信コントローラがホスト側のコントローラとして機能する場合には、本通信コントローラの制御部が、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットを、デバイス側に送信するようになっている。また、これらのパケットを正常に(適切に)受信したデバイスは、ホストに向けて、ACKパケットを送信する。
なお、このACKパケットは、SETUPおよびDATAパケットを正常に受信できたことを示す、デバイスからの返信パケットである。このACKパケットを最大TAタイム内に受信できなかった場合に、ホストは、SETUPトランザクションを正常に遂行できなかった(失敗した)と判断する。そして、SETUPおよびDATAパケットをデバイスに向けて再送する。
そして、特に、本通信コントローラの制御部は、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを、自身の制御する記憶部に記憶する。その後、制御部は、ホストからSETUPパケットおよびDATAパケットが再送されたときに、記憶していたACKパケットを、ホストに送信するように設定されている。
このように、本通信コントローラを用いると、ホストがSETUPパケットおよびDATAパケットを再送した直後に、ACKパケットをホストに受信させられる。従って、ホスト−デバイス間の通信に時間がかかり、デバイス側から送信されたACKパケットをホストに直接に受信させるまでに最大TAタイムを過ぎてしまうような場合でも、SETUPトランザクションを完了させることが可能となる。
なお、上記のような、ホスト−デバイス間の通信(データ転送)に時間のかかる場合とは、この間の通信速度の遅い場合や、この間の通信経路の長い場合などである。従って、本通信コントローラを用いれば、ホスト−デバイス間の通信経路の自由度を、著しく増大させられる。
また、制御部は、デバイス側から受信したACKパケットを記憶した後、SETUPパケットおよびDATAパケットの再送を待たずに、ACKパケットをホストに転送してもよい。この場合、最大TAタイム内にACKパケットをホストに受信させられた場合には、その時点で、SETUPトランザクションが終了する。一方、ホストによるACKパケットの受信時が、最大TAタイムを超えていた場合、ホストからSETUPパケット・ACKパケットが再送され、制御部によって、ACKパケットがホストに送信される。
また、制御部は、デバイス側から受信したACKパケットを記憶した後、ホストに対するACKパケットの送信を回避するように設定されていてもよい。この場合、制御部は、ホストからのパケット再送を待って、ホストにACKパケットを送信する。
また、通信コントローラが、ホスト側のコントローラの機能と、デバイス側のコントローラの機能とを備えることにより、通信コントローラを、ホスト側のコントローラとしても、デバイス側のコントローラとしても使用可能となる。したがって、ホストを必要とせず、デバイス同士で通信を可能とするUBS−OTG(USB On−The−Go)の規格下で、本通信コントローラを用いることが可能となる。
また、本通信コントローラの制御部は、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する際、DATAパケットにおけるエラーの有無を判断することが好ましい。さらに、この場合、制御部は、DATAパケットにエラーのある場合には、そのパケットの送信を回避するように設定されていることが好ましい。
これにより、デバイス側に対してエラーのあるパケットを送信してしまうことを回避できるため、無駄なパケット送信を防止できる。なお、上記のようなパケットのエラーは、例えば、パケットに添付されている誤り検出符号(CRC)を解析することによって行える。
また、この制御部は、ホストからDATAパケットを受信してデバイス側に転送する際、DATAパケットを完全に受信してから、転送を開始するように設定されていてもよい。これは、コントローラ間の通信速度が、ホストと本通信コントローラとの間の通信速度より遅い場合に、デバイス側に対する送信に抜けが生じることを防止するためである。
また、制御部は、DATAパケットの受信量が安定受信量を超えたときに、受信した部分から順に、デバイス側に対するDATAパケットの転送を開始するように設定されていてもよい。ここで、安定受信量とは、デバイス側に対してDATAパケットの転送を開始しても、送信に抜けの生じることのないだけの受信量のことである。この構成でも、上記のような送信の抜けを防止できる。
また、このような場合、制御部は、DATAパケットを完全に受信し終えたときには、DATAパケットの一部を既に転送した状態にある。このとき、制御部は、このパケットにおけるエラーの有無を検出し、検出結果を示すフラグをDATAパケットの末尾に添付してデバイス側に送信することが好ましい。
この場合、デバイス側は、エラーのあることを示すフラグ(エラーフラグ)の立っているパケットに関しては、ホストから本通信コントローラに送信された段階で既にエラーが生じている、と判断できる。従って、デバイス側は、このようなパケットに関してはデバイスに転送せず、エラーのないことを示すフラグ(ノンエラーフラグ)の立っているパケットだけをデバイスに転送することが好ましい。これにより、無駄なパケット送信を回避できる。
また、制御部は、本通信コントローラがデバイス側のコントローラとして機能する場合であって、SETUPトランザクション時、ホスト側から送信されたSETUPパケットおよびDATAパケットをデバイスに送信する一方、デバイスから送信されるACKパケットをホスト側に送信するものである。
また、この制御部は、ホスト側からDATAパケットを受信してデバイスに転送する際、DATAパケットを完全に受信してから、転送を開始するように設定されていてもよい。これは、本通信コントローラとホスト側コントローラとの間の通信速度が、本通信コントローラとデバイスとの間の通信速度より遅い場合に、デバイスに対する送信に抜けが生じることを防止するためである。
また、制御部は、本通信コントローラがデバイス側のコントローラとして機能する場合であって、DATAパケットの受信量が安定受信量を超えたときに、デバイスに対するDATAパケットの転送を開始するように設定されていてもよい。ここで、安定受信量とは、デバイスに対してDATAパケットの転送を開始しても、送信に抜けの生じることのないだけの受信量のことである。この構成でも、上記のような送信の抜けを防止できる。
また、制御部は、本通信コントローラがデバイス側のコントローラとして機能する場合であって、ホスト側から受信したDATAパケットにエラーのある場合には、そのDATAパケットをデバイスに転送することを回避することが好ましい。これにより、デバイスに対してエラーのあるパケットを送信してしまうことを回避できるため、無駄なパケット送信を防止できる。なお、上記したように、パケットのエラーは、パケットに添付されている誤り検出符号(CRC)を解析することなどで行える。
また、この構成では、制御部は、受信したパケットにエラーのある場合、そのパケットを破棄することが好ましい。制御部は、受信したパケットを、本通信コントローラ内のメモリーに保存することとなるが、上記のようにエラーのあるパケットを破棄することで、メモリーの記憶領域を無駄に使用することを避けられる。
また、本通信コントローラがデバイス側のコントローラとして機能する場合、SETUPトランザクションでは、SETUPおよびDATAパケットの受信を、デバイスが失敗することもある。これは、パケットのエラーや、送受信に関する不具合(トラブル)などに起因する。このような場合、デバイスは、パケットを正常に受信できたことを示すACKパケットを返信することはない。
このため、制御部は、デバイスに対してSETUPパケットおよびDATAパケットを送信した後、所定時間以内にACKパケットを受信できなかったときには、デバイスに対してSETUPパケットおよびDATAパケットを再送するように設定されていることが好ましい。
これにより、ホストやホスト側コントローラによるパケットの再送を実行することなく、本通信コントローラだけの動作により、デバイスにパケットを再送できる。
また、この場合、制御部は、デバイスに対してSETUPパケットおよびDATAパケットを再送する前に、DATAパケットにおけるエラーの有無を判断することが好ましい。そして、DATAパケットにエラーのある場合には、DATAパケットの再送を回避するように設定されていることが好ましい。これにより、無駄なパケット再送信を防止できる。
また、本発明のパケット通信方法(本通信方法)は、USBシステムにおけるホストとデバイスとの間でパケットを通信するパケット通信方法において、SETUPトランザクション時、ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信するパケット送信工程と、デバイス側からホストに向けて送信されるACKパケットをホスト側に転送することを回避する返信回避工程と、ホストからデバイスに向けてSETUPパケットおよびDATAパケットが再送されたときに、上記のACKパケットをホストに送信する返信工程とを含んでいることを特徴とする方法である。
本通信方法は、上記した本ホスト側コントローラによって実現されている通信方法である。従って、本通信方法を用いれば、ホスト−デバイス間の通信に時間がかかり、デバイス側から送信されたACKパケットをホストに直接に受信させるまでに最大TAタイムを過ぎてしまうような場合でも、SETUPトランザクションを完了させることが可能となる。さらに、ホスト−デバイス間の通信経路の自由度を、著しく増大させられる。
また、本発明のパケット通信プログラムは、USBシステムのホストに備えられたコンピューターに、本通信方法におけるパケット送信工程,返信回避工程,返信工程を実行させるためのパケット通信プログラムである。
上記のようなコンピューターにこのプログラムを読み込ませることで、本通信方法の各工程を、そのコンピューターによって実現することが可能となる。
また、このプログラムをコンピューターによって読取可能な記録媒体に記録させておくことで、プログラムの保存・流通を容易に行えるようになる。
本発明の一実施形態について説明する。本実施の形態にかかるUSBシステムは、ホストコンピューター(ホスト)と、その周辺機器(デバイス)との間におけるUSB通信(USB2.0を用いたデータ通信)を実現するための通信システムである。
図1は、本システムの構成を示すブロック図である。この図に示すように、本システムは、ホスト10,ホスト側コントローラ11,デバイス側コントローラ12,デバイス13を備えた構成である。
ホスト(USBホスト)10は、本システムの親機となるパーソナルコンピューターであり、全てのUSB通信を制御するものである。
また、デバイス(USBファンクション,USBデバイス)13は、ホスト10と通信を行う子機(ノード)であり、プリンターやDVDドライバーなど、ホストの周辺機器として機能するものである。
ホスト側コントローラ11は、USBケーブルによってホスト10と接続されており、ホスト10と外部(デバイス13)との間のUSB通信を中継するものである。すなわち、ホスト側コントローラ11は、ホスト10から送信されるパケットを受け取って外部に送信するとともに、ホスト10に向けて送信されたパケットを受信して、ホスト10に伝達するものである。
デバイス側コントローラ12は、USBケーブルによってデバイス13と接続されており、デバイス13とホスト10との間のUSB通信を中継するものである。すなわち、デバイス側コントローラ12は、デバイス13から送信されるパケットを受け取ってホスト10に送信するとともに、デバイス13に向けて送信されたパケットを受信して、デバイス13に伝達するものである。
また、本システムでは、コントローラ11・12間を、USB対応の光無線通信によって接続している。すなわち、本システムでは、ホスト10とデバイス13との間のUSB通信を、コントローラ11・12による光無線通信を介して実行するようになっている。
なお、コントローラ11・12間の光無線通信におけるデータ転送速度は、100Mbpsであり、USB2.0のハイスピードモード(HS)時におけるデータ転送速度(480Mbps)よりも低速である。
ここで、本システムの特徴的な構成である、コントローラ11・12の構成について説明する。図1に示すように、ホスト側コントローラ11は、USB受信機20,送信FIFO21,変調回路22,光送信機23,光受信機24,復調回路25,受信FIFO26,USB送信機27,エラー検出回路28,タイマー29,スピードネゴシエーションステートマシン(SNSM)30,CRCチェック回路33およびホスト側ステートマシン(ホストSM)32を備えた構成である。
一方、デバイス側コントローラ12は、ホスト側コントローラ11の構成において、ホストSM32に代えて、デバイス側ステートマシン(デバイスSM)42を備えた構成である。
USB受信機20は、ホスト10あるいはデバイス13とUSBケーブルで接続されており、これらから送信されるUSB信号(パケットを含む信号)を受信する(受け取る)ものである。
送信FIFO21は、USB受信機20の受信したパケットを一時的に保存するものである。すなわち、上記したように、コントローラ11・12間の通信速度(100Mbps)は、USBケーブルでの最高通信速度(HS;480Mbps)よりも低速である。このため、送信FIFO21は、パケットを光通信によって転送(リピート)する際のタイミング調整に用いられる。
変調回路22は、光通信によって外部に送信できるよう、パケットを変調(光変調)するものである。変調回路22の変調方法としては、例えば、8B10Bを利用できる。
光送信機23は、変調回路22によって変調されたパケットを外部に送信するものであり、発光ダイオード装置やレーザー装置から構成される。
光受信機24は、外部から受信された、光変調されたパケットを受信するものであり、例えばフォトダイオードから構成される。なお、光受信機24は、外部から何らかの光信号を受けると、シグナルディテクト信号をホストSM32(デバイスSM42)またはSNSM30に送信する。このシグナルディテクト信号は、受信信号の有無を判別するための信号である。復調回路25は、光受信機24によって受信されたパケットを、USBケーブルで通信可能なように復調するものである。復調回路25の復調方法としては、例えば、8B10Bを利用できる。
受信FIFO(記憶部)26は、復調されたパケットを一時的に保存するものである。
また、受信FIFO26は、送信FIFO21と同様に、USBケーブルでのデータ送信と、光通信でのデータ受信との速度差を補償するために、パケットをUSBケーブルによって転送(リピート)する際のタイミング調整に用いられる。
エラー検出回路28は、復調回路25によって復調されたパケット(あるいは他の信号)に、光変調あるいは復調によって生じたエラー(光エラー)があるか否かを判別する回路である。
CRCチェック回路33は、パケットにおける誤り検出符号(CRC5あるいはCRC16)を解析することにより、復調回路25によって復調されたパケット(特にDATAパケット)に、パケットエラー(USBの規格に応じていない不適切な部分)があるか否かを調べるものである。
USB送信機27は、ホスト10あるいはデバイス13とUSBケーブルで接続されており、これらに対し、受信FIFO26に保存されたパケット(パケットを含むUSB信号)を送信するものである。タイマー29は、ホストSM32あるいはデバイスSM42に使用されるタイマー(時間計測器)である。SNSM(速度設定部)30は、後述するスピードネゴシエーションを行うための制御部である。
ホストSM(ホスト側制御部)32は、ホスト側コントローラ11の全処理を制御する、コントローラ11の中枢部である。同様に、デバイス側コントローラ12のデバイスSM(デバイス側制御部)42は、コントローラ12の全処理を制御する中枢部として機能する。
ここで、本システムのデータ通信動作について説明する。まず、デバイス13の接続時の動作について説明する。コントローラ11・12を介してデバイス13が本システムに接続されたとき、まず、ホスト10は、デバイス13の電源を検出する。これは、USBケーブルの4本の信号線(D+,D−,電源(VBUS)、GND)を流れる信号のうちの、VBUS信号を確認することでなされる。
次に、ホスト10は、デバイス13のスピード(対応しているモード)を検出する。そしてフルスピードモード(FS)、あるいは、ハイスピードモード(HS)に対応している場合、ホスト10は、D+の信号をプルアップする。一方、ロースピードモード(LS)のみに対応の場合は、ホスト10は、D−の信号をプルアップする。なお、以下では、デバイス13は、HSに対応しているとする。
次に、ホスト10は、D+信号線およびD−信号線を、ともに10ms以上、ローレベル(SE0状態)とし、デバイス13のバスをリセットする。その後、デバイス13は、HS特有の信号(CHIRPと呼ばれる)を、コントローラ11・12を介してホスト10に送信する。また、ホスト10も、コントローラ11・12を介して、デバイス13に対してHS特有の信号送信を行う。
これにより、ホストSM32およびデバイスSM42は、ホスト10およびデバイス13の通信モードがHSであることを確認する。その後、ホストSM32およびデバイスSM42は、SNSM30を制御して、コントローラ11・12間のスピードネゴシエーション(後述)を行う。これにより、ホスト10とデバイス13との接続(バス)が確立される(完了する)。
デバイス13が本システムに接続された後、ホスト10・デバイス13間では、コントローラ11・12を介したデータ転送が実施される。以下に、本システムでの特徴的な動作である、SETUPトランザクションについて説明する。
このトランザクションでは、ホスト10は、ホスト側コントローラ11に対し、SETUPパケットおよびDATAパケットを含むUSB信号を送信する。ホスト側コントローラ11では、この信号を、ホスト側コントローラ11のUSB受信機20によって受信する。
これを受けて、ホストSM32が、CRCチェック回路33を制御して、受信したUSB信号に含まれるSETUPパケットおよびDATAパケットにパケットエラーがないか否かを判別させる。そして、パケットエラーがあると判断した場合、ホストSM32は、受信したパケットを破棄する。一方、パケットエラーのない場合、ホストSM32は、受信したSETUPパケットおよびDATAパケットを、送信FIFO21に保存する。
その後、ホストSM32は、変調回路22を制御して、送信FIFO21に保存しているSETUPパケットおよびDATAパケットを含む、光信号を生成させる(光変調させる)。そして、ホストSM32は、光送信機23を制御して、生成させた光信号をデバイス側コントローラ12に対して送信させる。
ホスト側コントローラ11から送信された光信号は、デバイス側コントローラ12の光受信機24によって受信される。これを受けてデバイスSM42は、復調回路25を制御して、光信号内のSETUPパケットおよびDATAを復調させて、受信FIFO26に蓄積する。
そして、受信したパケットの全体を復調して受信FIFO26に蓄積した後、デバイスSM42は、エラー検出回路28を制御して、SETUPパケットおよびDATAパケットに光エラーがあるか否かを判断させる。なお、デバイスSM42は、受信したパケットに光エラーがあると判断した場合、そのパケットを受信FIFO26から削除(破棄)する。また、デバイスSM42は、CRCチェック回路33を制御して、受信FIFO26に蓄積したSETUPパケットおよびDATAパケットにおけるパケットエラーの有無を判断する。そして、パケットエラーのない場合には、USB送信機27を制御して、これらのパケットを含むUSB信号を、所定のタイミングでデバイス13に送信する。
SETUPパケットおよびDATAパケットを受信したデバイス13は、DATAパケットにおけるパケットエラーの有無を判断する。そして、誤りがないと判断した場合、デバイス13は、デバイス側コントローラ12にACKパケット(このパケットを含むUSB信号)を送信する。一方、誤りのある場合には、デバイス13は何も送信しない。
デバイス側コントローラ12に送信されたACKパケットは、USB受信機20によって受信される。これを受けて、デバイスSM42は、受信したパケットの内容(ACKパケットであること)を把握し、このパケットを送信FIFO21に蓄積する。
その後、デバイスSM42は、変調回路22を制御して、送信FIFO21に保存しているACKパケットを含む、光信号を生成させる(光変調させる)。
そして、デバイスSM42は、光送信機23を制御して、生成させた光信号をホスト側コントローラ11に対して送信させる。
デバイス側コントローラ12から送信された光信号は、ホスト側コントローラ11の光受信機24によって受信される。これを受けてホストSM32は、復調回路25を制御して、光信号のパケットを復調させ、受信FIFO26に蓄積させる。
そして、受信したパケットの全体を復調した後、ホストSM32は、エラー検出回路28を制御して、復調して得られたパケットに光エラーがあるか否かを判断させ、光エラーのあるパケットを受信FIFO26から破棄する。
その後、ホストSM32は、受信FIFO26に保存したパケットがACKパケットであることを認識した場合、このパケットをホスト10に送信することを回避する。
また、ホスト10では、デバイス13に向けてSETUPパケット・DATAパケットを送信したものの、最大TAタイムを過ぎても、ACKパケットを受信できない。従って、SETUPトランザクションが失敗であったと判断し、SETUPパケットおよびDATAパケットを再送する。
ホスト側コントローラ11のホストSM32は、再送にかかるSETUPパケットおよびDATAパケットをホスト10から受信した場合、これらのパケットを送信FIFO21に保存せずに破棄する。そして、受信FIFO26に蓄積されていたACKパケットを、ホスト10に向けて送信する。
また、図2は、SETUPトランザクションにおけるホストSM32の動作を示すフローチャートである。この図に示すように、ホストSM32は、ホスト10からSETUPパケットを受信した場合(S11)、そのパケットをデバイス側コントローラ12に送信する(S12)。なお、ホストSM32は、他のパケットを受信した場合には、SETUPトランザクションではないため、USBのルールに応じた別の処理を行う。
その後、ホストSM32は、SETUPパケットに続けて、ホスト10からDATAパケットを受信したか否かを判断する(S13)。そして、他のパケットを受信した場合には、ホストSM32は、SETUPトランザクションに誤りがあると判断し、処理をS11に戻す。一方、S13においてDATAパケットを受信した場合、ホストSM32は、このパケットをデバイス側コントローラ12に送信する(S14)。
その後、ホストSM32は、デバイス側コントローラ12からのACKパケットの送信を待機する(S15)。そして、待機時間が所定時間を超えた場合(タイマー29を用いて判断する)、ホストSM32は、デバイス13に対してSETUPパケット・DATAパケットを適切に送信できなかったと判断し、処理をS11に戻す。
一方、所定時間内にACKパケットを受信した場合、ホストSM32は、ホスト10から、SETUPパケットおよびDATAパケットの再送を待機する(S16)。そして、待機時間が所定時間を超えた場合(タイマー29を用いて判断する)、ホストSM32は、SETUPトランザクションに誤り(トラブル)が発生したと判断し、処理をS11に戻す。
また、ホストSM32は、所定時間内にSETUPパケットおよびDATAパケットをホスト10から受信した場合、受信FIFO26に保存していたACKパケットをホスト10に送信し(S17)、処理を終了する。
また、図3は、SETUPトランザクションにおけるデバイスSM42の動作を示すフローチャートである。この図に示すように、デバイスSM42は、ホスト側コントローラ11からSETUPパケットおよびDATAパケットを受信した場合(S12)、これらのパケットをデバイス13に送信する(S22)。なお、デバイスSM42は、他のパケットを受信した場合には、SETUPトランザクションではないため、USBのルールに応じた別の処理を行う。
その後、デバイスSM42は、タイマー29をスタートさせるとともに、デバイス13からのACKパケットの送信を待機する(S23)。そして、待機時間が所定時間を超えた場合(タイマー29を用いて判断する)、デバイスSM42は、デバイス13に対してSETUPパケット・DATAパケットを適切に送信できなかった(デバイス側コントローラ12・デバイス13間での通信に不備があった)と判断し、処理をS21に戻す(タイムアウト)。
一方、所定時間内にACKパケットを受信できた場合、デバイスSM42は、このACKパケットをホスト側コントローラ11に送信し(S24)、処理を終了する。
以上のように、ホスト側コントローラ11のホストSM32は、デバイス側コントローラ12からホスト10に向けて送信されるACKパケットを受信したときに、このパケットを、自身の制御する受信FIFO26に記憶する。その後、ホストSM32は、ホスト10からSETUPパケットおよびDATAパケットが再送されたときに、記憶していたACKパケットを、ホスト10に送信するように設定されている。
このように、ホスト側コントローラ11を用いたUSBシステムでは、ホスト10がSETUPパケットおよびDATAパケットを再送した直後に、ACKパケットをホスト10に受信させられる。従って、ホスト10−デバイス13間の通信に時間がかかり、デバイス側コントローラ12から送信されたACKパケットをホスト10に直接に受信させると最大TAタイムを過ぎてしまうような場合でも、SETUPトランザクションを完了させることが可能となる。
なお、上記のような、ホスト10−デバイス13間の通信に時間のかかる場合とは、コントローラ11・12間の通信速度の遅い場合や、この間の通信経路の長い場合などである。従って、ホスト側コントローラ11を用いれば、ホスト10−デバイス13間の通信経路の自由度を、著しく増大させられる。
また、ホスト側コントローラ11のホストSM32は、ホスト10から送信されたSETUPパケットおよびDATAパケットをデバイス側コントローラ12に送信する際、DATAパケットにおけるエラーの有無を判断するように設定されている。そして、ホストSM32は、DATAパケットにエラーのある場合には、そのパケットの送信を回避している。
これにより、デバイス側コントローラ12に対してエラー(光エラー,パケットエラー)のあるパケットを送信してしまうことを回避できるため、無駄なパケット送信を防止できる。
また、本システムでは、デバイスSM42は、ホスト側コントローラ11から受信したDATAパケットにエラー(光エラー,パケットエラー)のある場合には、そのDATAパケットをデバイス13に転送することを回避するようになっている。
これにより、デバイス13に対してエラーのあるパケットを送信してしまうことを回避できるため、無駄なパケット送信を防止できる。
上記のように、ホストSM32,デバイスSM42は、エラーのあるパケットをデバイス側に送信しないようになっている。従って、送信コスト(電力など)を抑えられるとともに、エラーのあるパケットをデバイス13に送信することで生じる、デバイス13の予期できない異常動作の発生を防止することが可能となる。
また、ホストSM32,デバイスSM42は、受信したパケットにエラーのある場合、そのパケットを破棄するようになっている。
すなわち、ホストSM32,デバイスSM42は、受信したパケットを受信FIFO26に保存するが、上記のようにエラーのあるパケットを破棄することで、受信FIFO26の記憶領域を無駄に使用することを避けられる。
次に、上記したスピードネゴシエーションについて説明する。このスピードネゴシエーションは、コントローラ11・12間における、光無線通信のデータ転送速度を決定するための処理である。図4は、この処理の例を示すタイミングチャートである。
図5は、この処理におけるホスト側コントローラ11のSNSM30の動作を示す説明図である。また、図6は、この処理におけるデバイス側コントローラ12のSNSM30の動作を示す説明図である。
ホスト側コントローラ11のSNSM30は、T1201において、光送信機23を制御して、所定の転送速度Aで、keep_speed信号の送信を開始し、タイマー29をリスタートさせる(リセット後すぐにスタートさせる)。
なお、keep_speed信号は、転送速度を決めるための送信コード(リクエスト信号)の1つであり、送信先(デバイス側コントローラ12)に、現在の転送速度を維持することを求める信号である。
一方、デバイス側コントローラ12では、このkeep_speed信号を受信した光受信機24が、まず、シグナルディテクト信号をSNSM30に伝達する。これを受けて、SNSM30が、タイマー29をリスタートさせるとともに、光送信機23を制御して、ホスト側コントローラ11に対するkeep_speed信号の送信を開始する。
また、SNSM30は、復調回路25,エラー検出回路28を制御して、受信したkeep_speed信号におけるエラーの有無を判断する。
そして、図4に示すように、T1203においてホスト側コントローラ11から送信されたkeep_speed信号が、光無線通信路においてピット化けし、デバイス側コントローラが正常に受信できなかった場合、デバイス側コントローラ12のSNSM30は、T1204において、keep_speed信号に代えて、lower_speed信号をホスト側コントローラ11に送信する。
このlower_speed信号は、転送速度を決めるためのリクエスト信号の1つであり、送信先(ホスト側コントローラ11)に、転送速度を下げるよう求める信号である。lower_speed信号を受信したデバイス側コントローラ12では、SNSM30が、現在の転送速度Aではデバイス転送を正常に行えないとを認識する。そして、デバイス側コントローラ12に対し、lower_speed信号を送信する(送信コードをlower_speedに切り替える)。
デバイス側コントローラ12のSNSM30は、ホスト側コントローラ11からlower_speed信号を受信することで、自身の送信したlower_speed信号がホスト側コントローラ11に認識されたと判断する。
そして、所定時間Taの経過後、コントローラ11・12のSNSM30は、その時点で送受信されている信号がlower_speed信号であるため、転送速度を、例えば半分(A/2)に低下させる。すなわち、ホスト側コントローラ11のSNSM30が、T1207において、転送速度A/2で、keep_speed信号の送信を開始するとともに、タイマー29をリスタートさせる。
一方、デバイス側コントローラ12のSNSM30も、光受信機24からのシグナルディテクト信号に応じて、keep_speed信号の送信を開始するとともに、タイマー29をリスタートさせる。
そして、コントローラ11・12の双方でエラーが検出されずに所定時間Taが経過すると、コントローラ11・12のSNSM30は、スピードネゴシエーションの終了信号(終了リクエスト)であるEnd_Nego信号の送受信を開始する。そして、SNSM30は、相手機器からのEnd_Nego信号を受信したときに、スピードネゴシエーションを終了し、アクティブ状態へと遷移する。
ここで、図5を用いて、ホスト側コントローラ11におけるSNSM30の動作を説明する。
ステートST0は、スピードネゴシエーションの開始ステートである。ここでは、ホスト側コントローラ11のSNSM30は、送信コードをkeep_speed信号とし、タイマー29をリスタートした後、ステートST1に状態を遷移する。
ステートSTlは、スピードネゴシエーションを行うステートである。ホスト側コントローラ11のSNSM30は、受信コードにエラーがあるか、相手機器(デバイス側コントローラ12)からのlower_speed信号を受信した場合は、送信コードをlower_speedに切り替える。
また、ホスト側コントローラ11のSNSM30は、所定時間Taの経過した後、送信コードがlower_speed信号であった場合は、ステートST0へ、また送信コードがkeep_speedであった場合はステートST2に状態を遷移する。
ここで、ステートST0に遷移する場合は、転送速度を現在の転送速度に対して、例えば半分にする(転送速度の低下の幅(度合い)は、ユーザーの所望の値に設定可能である。また、この幅は、あらかじめSNSM30に記憶されている)。一方、ステートST2に遷移する場合は、送信コードをEnd_Nego信号へと切り替える。このステートST2は、スピードネゴシエーションの終了を確認するステートである。相手機器(デバイス側コントローラ12)からEnd_Nego信号を受信すると、スピードネゴシエーションを終了し、アクティブ状態へと遷移する。
次に、図6を用いて、デバイス側コントローラ12におけるSNSM30の動作について説明する。ステートST0,ST1,ST2の各ステートにおける動作は、ホスト側コントローラ11のSNSM30と同一である。
ステートST0の前の状態であるステートST4は、ホスト側コントローラ11からリクエスト信号を受信したか否かを判別するステートである。
光受信機24(あるいは他の受信信号検出回路)からシグナルディテクト信号を受けた場合、SNSM30は、ステートST0に状態を遷移する。
なお、上記したkeep_speed信号,lower_speed信号,End_Nego信号は、パケット(特定のフォーマットを持ったキャラクタ列)であっても、また、特定のキャラクタから構成されていてもよい。
また、上記では、ホスト10とデバイス13との間における通信モード(速度)の確認後に、スピードネゴシエーションを行うとしている。しかしながら、スピードネゴシエーションについては、ホスト10・デバイス13間の通信開始前であれば、とのタイミングで行ってもよい。
また、上記では、ホスト10とホスト側コントローラ11との間、および、デバイス側コントローラ12とデバイス13との間がUSBケーブルで接続されている状態で、スピードネゴシエーションを行うとしている。しかしながら、これに限らず、スピードネゴシエーションは、コントローラ11・12間が通信可能な状態であれば、コントローラ11・12とホスト10・デバイス13とのUSBケーブルによる接続前でも実施可能である。
なお、本実施の形態では、ホストSM32が、デバイス側コントローラ12から受信したACKパケットをホスト10に送信することを回避し、さらに、ホスト10からSETUPパケットおよびDATAパケットの再送を受けたときに、ACKパケットをホスト10に送信するとしている。
しかしながら、ホストSM32は、デバイス側コントローラ12からACKパケットを受信したときに、このACKパケットを最大TAタイム内にホスト10に転送可能か否かを判断するように設定されていてもよい。
この場合、ホストSM32は、最大TAタイム内にACKパケットを転送できないと判断した場合には、上記のように、ホスト10に対するACKパケットの転送を回避してSETUPパケット・DATAパケットの再送を待つ。一方、最大TAタイム内にACKパケットを転送できると判断した場合には、ホスト10からのSETUPパケット・DATAパケットの再送を待たずに、ACKパケットをホスト10に転送することとなる。
また、ホストSM32は、デバイス側コントローラ12からACKパケットを受信したときに、このACKパケットを、そのままホスト10に転送するように設定されていてもよい。この場合、ACKパケットがホスト10に受信されたとき、最大TAタイムの経過前であれば、SETUPトランザクションはそのまま終了する。一方、最大TAタイムの経過後であれば、ホスト10は、SETUPパケット・DATAパケットを再送する。そして、ホストSM32が、この再送に応じて、受信FIFO26に保持しているACKパケットをホスト10に送信することとなる。
また、ホストSM32は、上記のスピードネゴシエーションにおいて、コントローラ11・12間の光無線通信の速度を、USBケーブルと同等の速度(480Mbps)に設定できた場合、上記のようなACKパケットの転送回避を行わなくともよい。
すなわち、このような場合には、最大TAタイム内でACKパケットをホスト10に転送できる可能性が高い。従って、ホストSM32は、デバイス側コントローラ12から受信したACKパケットをそのままホスト10に転送(リピート)しても、SETUPトランザクションを完了させられる。しかしながら、もちろん、この場合でも、ホストSM32は、デバイス側コントローラ12から受信したACKパケットをホスト10に送信することを回避し、さらに、ホスト10からSETUPパケットおよびDATAパケットの再送を受けたときに、ACKパケットをホスト10に送信してもよい。
また、上記のようなスピードネゴシエーション後、ホストSM32,デバイスSM42の少なくとも一方が、エラー検出回路28(あるいはCRCチェック回路33)を用いて、コントローラ11・12間でのパケット送受信におけるエラーレートを算出することが好ましい。ここで、エラーレートとは、エラーの発生回数を、送受信回数で割った値(エラー発生率)である。
そして、ホストSM32,デバイスSM42は、このエラーレートが所定値以上となった場合に、SNSM30を制御して、コントローラ11・12間の通信速度を低下させることが好ましい。これにより、通信速度の高すぎることに起因するエラーレートを低下させられる。
なお、本実施の形態では、ホストSM32が、CRCチェック回路33を制御して、USB信号に含まれるSETUPパケットおよびDATAパケットに誤りがないか否かを判別させるとしている。
しかしながら、これに限らず、ホストSM32は、CRCチェック回路33に、DATAパケットの誤りだけを判別させるようにしてもよい。この場合、DATAパケットにパケットエラーのある場合に限り、SETUPパケットおよびDATAパケットを破棄することとなる。SETUPパケットは、DATAパケットに比べて短いものであり、パケットエラーの生じる確率は非常に低い。従って、DATAパケットのパケットエラーを調べるだけでも、適切な通信を行える。
また、本実施の形態では、デバイスSM42が、ホスト側コントローラ11からSETUPパケットおよびDATAパケットを受信したときに、エラー検出回路28を制御して光エラーの有無を判断した後、CRCチェック回路33を制御して、パケットエラーの有無を判断するとしている。
しかしながら、このときに、エラー検出回路28による光エラーのチェックを省略してもよい。すなわち、通常、パケットを光変調する際にエラーの発生した場合、パケットは、USBの規定に沿わないものとなる。従って、このようなエラーも、CRCチェック回路33によって、パケットエラーとして捉えることが可能である。
また、デバイスSM42は、上記したホストSM32の場合と同様に、CRCチェック回路33によるパケットエラーのチェックを、DATAパケットのみに行うようにしてもよい。
また、本実施の形態では、ホスト側コントローラ11のホストSM32が、CRCチェック回路33を制御して、ホスト10から送信されたUSB信号に含まれるSETUPパケットおよびDATAパケットに誤りがないか否かを判別させた後、パケットをデバイス側コントローラ12に送信するとしている。
しかしながら、これに限らず、ホストSM32は、ホスト10から送信されたSETUPパケットおよびDATAパケットを、パケットエラーのチェックの前に、受信された部分から順次的に、デバイス側コントローラ12に送信するように設定されていてもよい。
また、この場合、ホストSM32は、エラー検出回路28・CRCチェック回路33を制御して、デバイス側コントローラ12に対するパケットの送信中にパケットのエラー有無を判別させてもよい。そして、ホストSM32は、エラーを発見した場合、直ちに送信を中断することが好ましい。これにより、コントローラ11・12間での無駄なパケット転送を抑えられるので、低速通信路であるコントローラ11・12間の転送効率の悪化を抑制できる。
また、ホスト10から受信中のパケットを順次的にデバイス側コントローラ12に送信する場合、ホストSM32は、パケットを完全に受信し終えたときに(既に一部を送信してしまっているときに)、CRCチェック回路33を制御して、パケットエラーの有無を判断し、判断結果を、送信するパケットの末尾に添付するように設定されていてもよい。
図7(a)は、通常のDATAパケットを示す説明図であり、図7(b)は、上記のような場合に、デバイス側コントローラ12に対して送信されるDATAパケット(低速用パケット)を示す説明図である。この図に示すように、この構成では、ホストSM32が、パケットエラーの有無に関する情報を、パケットの末尾(CRC16の後のフィールド)に添付するようになっている。すなわち、パケットエラーのない場合、ホストSM32は、図7(b)に示すように、『CRC_OK』というフラグ(ノンエラーフラグ)を立てる(添付する)。一方、パケットエラーのある場合、ホストSM32は、DATAパケットの末尾に、『CRC_NG』というフラグ(エラーフラグ)を立てる。
これにより、デバイス側コントローラ12のデバイスSM42は、受信したパケットには、パケットエラーのあることを認識できる。さらに、デバイスSM42は、そのパケットエラーが、ホスト側コントローラ11にパケットのある段階で既に生じていることも把握できる。
また、本システムでは、デバイス側コントローラ12のデバイスSM42が、ホスト側コントローラ11から送信されたパケットにパケットエラーがあると判断した場合、ホスト側コントローラ11に対して、パケットを再送するよう要求できるように設定されていることが好ましい。
この構成では、このような再送要求を受けたホスト側コントローラ11のホストSM32は、送信FIFO21に保存しているパケットを、デバイス側コントローラ12に再送することとなる。これにより、ホスト10の再送を待つことなく、DATAパケットをデバイス側に送信できる。
なお、この構成では、ホストSM32は、ホスト側コントローラ11に送信するパケットに、図7(b)を用いて説明したフラグ(ノンエラーフラグ,エラーフラグ)を立てることが好ましい。すなわち、この場合、デバイスSM42は、エラーフラグの立っているパケットに関しては、ホスト10からホスト側コントローラ11に送信された段階で既にパケットエラーが生じている、と判断できる。従って、デバイスSM42は、このようなパケットに関しては再送要求を行わず、ノンエラーフラグの立っているパケットだけに関し、再送要求を行うことが好ましい。これにより、無駄なパケット送信を抑制できる。
また、図3に示した処理では、デバイスSM42は、所定時間内にデバイス13からACKパケットを受信できなかった場合(S23)、デバイス13に対してSETUPパケット・DATAパケットを適切に送信できなかった(デバイス側コントローラ12・デバイス13間での通信に不備があった)と判断し、タイムアウトとして処理をS21に戻すとしている。しかしながら、これに限らず、この場合、デバイスSM42は、デバイス13にSETUPパケットおよびDATAパケットを再送するようにしてもよい。
この構成では、デバイスSM42は、ホスト側コントローラ11からSETUPパケットおよびDATAパケットを受信して受信FIFO26に蓄積したときに、これらのパケットの受信FIFO26での位置(リードポインタ値)を記憶しておく(記憶する部位は、受信FIFO26でも、図示しない他のメモリーでもよい)。
そして、デバイスSM42は、SETUPパケットおよびDATAパケットをデバイス13に送信した後、所定時間内にデバイス13からACKパケットを受信できなかった場合には、これらのパケットにおける受信FIFO26での保存位置(リードポインタ値)に、受信FIFO26のリードポインタ(図示せず)を合わせる。そして、デバイスSM42は、この位置からSETUPパケットおよびDATAパケットを読み出して、デバイス13に再送する。
これにより、デバイス側コントローラ12・デバイス13間での通信に不備があった場合でも、ホスト10,ホスト側コントローラ11を動作させることなく、SETUPパケットおよびDATAパケットをデバイス13に再送することが可能となる。
なお、上記では、受信FIFO26のリードポインタを制御することにより、再送を実現している。しかしながら、これに限らず、デバイスSM42は、受信FIFO26でのパケットの保存位置(開始アドレス)を、デバイス側コントローラ12に備えられている他の記憶装置(RAMなど)に保持し、これを用いてパケットを読み出し、再送を実行してもよい。
また、本実施の形態では、デバイスSM42は、CRCチェック回路33によって、ホスト側コントローラ11から受信したパケットにおけるパケットエラーの有無を判断し、エラーのないパケットのみをデバイス13に送信するとしている。しかしながら、これに限らず、デバイスSM42は、このようなパケットエラーのチェックを行わずに、受信FIFO26に保存した全てのパケットをデバイス13に送信してもよい。この場合でも、エラーのあるパケットを受信したデバイス13は、ACKパケットをデバイス側コントローラ12に返信しないことになる。
また、この構成において、上記したデバイス側コントローラ12・デバイス13間におけるパケットの再送を行ってもよい。この場合、デバイスSM42は、CRCチェック回路33を用いて、受信FIFO26から読み出したパケットに関し、再送前に、パケットエラーの有無を調べさせることが好ましい。そして、デバイスSM42は、パケットエラーのある場合には、パケットの再送を回避することが好ましい。
また、本実施の形態では、デバイス側コントローラ12のデバイスSM42が、ホスト側コントローラ11から受信したパケットの全体を復調した後、デバイス13に送信するとしている。これは、低速通信路(コントローラ11・12間;100Mbps)を送信されてくるパケットを、受信した部分からデバイス13に高速(480Mbps)で転送してしまうと、受信速度よりも送信速度が速いため、送信に抜けが生じてしまう(受信FIFO26が空(empty)になってしまう)可能性のあることが一因である。
そこで、デバイスSM42が、受信されるパケットのサイズに基づいて、『デバイス13に対してパケット転送を高速で開始しても、送信に抜けの生じることのないだけの受信量;安定受信量』を算出することが好ましい。そして、受信パケットの受信量が安定受信量に達したときに、デバイス13への転送を開始することが好ましい。
なお、USB2.0においては、図8に示すように、各種の転送モード,転送スピードに関し、パケットの最大長が定められている。しかしながら、SETUPトランザクションでデバイス側コントローラ12に受信されるSETUPパケットについては、サイズがあらかじめ決められている。また、SETUPパケットに続いて受信されるDATAパケットについても、そのサイズは8バイトに決められている。従って、デバイスSM42は、SETUPトランザクションについては、上記のような安定受信量を算出することが可能である。
図9は、このような安定受信量を用いてデバイス13にパケットを送信可能なデバイス側コントローラ12の構成を示す説明図である。この図に示すように、このデバイス側コントローラ12は、図1に示したデバイス側コントローラ12の構成において、カウンター34を備えた構成である。
この構成では、デバイスSM42は、まず、SETUPトランザクションに関する安定受信量を算出する。その後、ホスト側コントローラ11から受信したパケット(特にDATAパケット)を受信FIFO26に蓄積する(書き込む)際に、蓄積したデータ量に応じてカウンター34の値を増やす。そして、デバイスSM42は、カウンター34が、上記の安定受信量に応じた値となった場合に、デバイス13に対し、パケットの送信を開始する。
従って、この構成では、SETUPトランザクションにおいて、デバイスSM42は、ホスト側コントローラ11からパケットの全体を受信するまで待機することなく、デバイス13へのパケット転送を開始できる。これにより、SETUPトランザクション全体の処理速度を速められる。
また、上記したように、SETUPトランザクションでは、DATAパケットのサイズは8バイトである。従って、安定受信量を低く設定できるので、他のトランザクションに比して、転送速度を速められる。なお、この場合、デバイスSM42は、DATAパケットをデバイス13に送信している途中で、DATAパケットのエラーを発見した場合、DATAパケットの転送を中止することが好ましい。これにより、無駄なパケット送信を省ける。
また、本実施の形態では、コントローラ11・12間の光無線通信におけるデータ転送速度を100Mbpsとしている。しかしながら、これに限らず、コントローラ11・12間の転送速度は、どのような値でもよい(USBケーブルを用いた転送速度と同一でも、あるいはより速くてもよい)。
コントローラ11・12間の転送速度が、ホスト10・ホスト側コントローラ11間およびデバイス側コントローラ12・デバイス13間の転送速度(USBケーブルでの転送速度)以上の場合でも、ホスト10からデバイス13までの通信経路の長い場合(例えば、コントローラ11・12間の通信経路として、数百mの光ケーブルを用いるなど)には、最大TAタイム内にACKパケットをホスト10に転送できないこともある。
この場合も、本システムのように、ホスト10からのSETUPパケット・DATAパケットの再送に応じて、ホストSM32がACKパケットをホスト10に転送することで、SETUPトランザクションを正常に完了させられる。なお、USB規格では、USBハブの段数(最大6段)のリピート時間とUSBのケーブル長(最大5m)によって、最大TAタイムが定められている。
また、コントローラ11・12間の転送速度が、ホスト10・ホスト側コントローラ11間の転送速度以上の場合には、ホストSM32は、ホスト10から受信したパケット(特にDATAパケット)を完全に受信した後、デバイス側コントローラ12に対する転送を開始することが好ましい。これにより、デバイス側コントローラ12へのパケットの送信中に、送信すべきデータが途切れる(送信に抜けが生じる)ことを防止できる。
また、この場合、ホストSM32は、ホスト10から受信されるDATAパケットのサイズに基づいて、『ホスト側コントローラ11に対してパケット転送を高速で開始しても、送信に抜けの生じることのないだけの受信量;安定受信量』を算出してもよい。
そして、受信パケットの受信量が安定受信量に達したときに、ホスト側コントローラ11への転送を開始するように設定されていてもよい。
また、本実施の形態では、コントローラ11・12間を、光無線通信によって接続するとしている。しかしながら、これに限らず、コントローラ11・12間を、光ケーブルで通信するようにしてもよい。なお、光ケーブルを用いた場合は、パケットの長距離伝送が可能となる。また、光無線通信(空間通信)を用いる場合には、ケーブルレスのため、利便性を向上させられる。
また、コントローラ11・12間の通信方式としては、半二重通信と全二重通信とのいずれを採用してもよい。ここで、全二重通信とは、ホストからデバイスへの送信と、デバイスからホストへの送信とを、並行して実行できる通信方式である。全二重通信を選択すると、発光ダイオードやレーザーダイオードからなる光送信機23を常に発光させておくこととなる。このため、パケットにプリアンブルを付加する必要がなく、通信路の通信効率(使用効率)を向上させられる。
ここで、全二重通信で光送信機23を常に発光させておく理由は、ホスト10あるいはデバイス13からUSB受信機20に対して受信されるパケットを、直ちにリピートするためである。
また、光送信機23を常に発光させておくことにより、コントローラ11・12間の接続・切断を容易に行える。すなわち、半二重通信の場合、光受信機24が一定時間以上光を受けない場合に、コントローラ11・12間の接続が切断されたと判断される。一方、全二重通信では、接続状態で常に光送信機23を発光させ、相手先コントローラの光受信機24に常に受光状態としておく。そして、接続を切断する際には、光送信機23の発光を停止する。これにより、光受信機24が光を受けなくなった段階で、接続が切れたと判断することが可能となる。これにより、半二重通信に比して、切断に要する時間を短縮できる。
また、コントローラ11・12間を、光ではなく、通常の電波による無線通信で接続するようにしてもよい。この場合、変調回路22,復調回路25の変調・復調方式を、適切に設定することが好ましい。また、光受信機24は、電波を受信する受信アンテナとなる。
また、上記のプリアンブルは、パケットの受信側において、クロックデータリカバリ回路(図示せず)により、クロックの同期をとるために必要な信号である。通常は、“1010”パターンの連続が使用される。プリアンブルの時間は、DATAパケットを送信できない時間である。このため、プリアンブルにより、無駄な時間が生じる。全二重通信の場合、ホスト側コントローラおよびデバイス側コントローラが常に信号を送信しているため、パケットごとにクロック同期を取る必要がない。つまり、プリアンブルが必要ないといえる。このため、全二重通信では、転送効率を高められる。
また、本実施の形態では、コントローラ11・12を、ホスト10あるいはデバイス13とUSBケーブルで接続するとしている。しかしながら、これに限らず、ホスト側コントローラ11を、ホスト10に接続されたUSBハブのダウンストリームのポートに接続するようにしてもよい。また、ホスト側コントローラ11を、ホスト10あるいはUSBハブの一部として構成してもよい。また、デバイス側コントローラ12を、USBハブのアップストリームのポートとUSBケーブルで接続してもよい。また、デバイスやUSBハブの一部として構成してもよい。
また、本システムでは、ホストSM32とデバイスSM42とは、実際には同様の部材であり、ホスト側コントローラ11とデバイス側コントローラ12とは、実質的に同一の構成である。従って、本システムは、1種類のコントローラをホスト10とデバイス13とにそれぞれ備えるだけで構築可能なシステムである。
また、本実施の形態では、コントローラ11・12に、エラー検出回路28,CRCチェック回路33を備えるとしている。しかしながら、送信されたパケットのエラーを検出しない構成では、エラー検出回路28・CRCチェック回路33を備える必要はない。また、ホストSM32・デバイスSM42によって、エラーを検出するようにしてもよい。
また、本実施の形態では、コントローラ11・12にタイマー29を備えるとしている。しかしながら、これに限らず、ホストSM32・デバイスSM42がタイマー29を用いない場合であれば、コントローラ11・12にタイマー29を備える必要はない。
このような場合とは、例えば、図2に示したS15,S16において、パケットの受信に関するホストSM32の待機時間の上限を設定しない場合、また、図3に示したS23において、ACKパケットの受信に関するデバイスSM42の待機時間の上限を設定しない場合(タイムアウトのない場合)、などである。
また、本実施の形態では、コントローラ11・12にSNSM30を備えるとしている。しかしながら、これに限らず、上記したようなスピードネゴシエーションを行わず、コントローラ11・12間での通信速度を一定とする構成では、コントローラ11・12にSNSM30を備える必要はない。
また、本実施の形態では、ホスト10をパーソナルコンピューターであるとしている。しかしながら、これに限らず、ホスト10としては、デバイス13を使用可能で、USBの親機となれる機器であれば、どのような機器でもよい。
また、本実施の形態では、コントローラ11・12にSNSM30を備えるとしている。しかしながら、これに限らず、上記したようなスピードネゴシエーションを行わず、コントローラ11・12間での通信速度を一定とする構成では、コントローラ11・12にSNSM30を備える必要はない。
また、本実施の形態では、デバイス側コントローラ12のデバイスSM42が、ホスト10とデバイス13との接続が確立された後、SOFパケットをデバイス13に送信するとしている。また、ホスト側コントローラ11のホストSM32が、ホスト10からデバイス13に向けて送信されるSOFパケットを受信した場合に、このパケットをデバイス側コントローラ12に送信することを回避するとしている。
しかしながら、これに限らず、本システムを、通常のUSBシステムと同様に、ホスト10から送信されたSOFパケットを、ホスト側コントローラ11のホストSM32がデバイス側コントローラ12にリピートし、デバイス側コントローラ12のデバイスSM42がホスト10にリピートするように設定してもよい。
すなわち、本システムは、ホスト10・ホスト側コントローラ11間、および、デバイス側コントローラ12・デバイス13間の通信を、USBネイティブの最高速度であるハイスピードモード(HS;480Mbps)で行う。そして、コントローラ11・12間を、これよりも遅い,100Mbpsの光通信(光無線,あるいは光ケーブルによる通信)によって行うように設定されている。
ここで、コントローラ11・12間における光通信のデータ転送速度を480Mbpsとする場合、例えば8B10Bの変調方式を用いると、
480×10/8=600Mbps
の帯域を持った光送信機および光受信機(光トランシーバー)が必要である。そして、このような光送信機を得るためには、LD(レーザーダイオード)を用いる必要がある。
一方、コントローラ11・12間の光通信におけるデータ転送速度を100Mbpsとする場合、光送信機23を、LED(発光ダイオード)を用いて構成できる。そして、LDとLEDを比較すると、圧倒的にLEDの方が安価である。従って、コントローラ11・12間の光通信の速度を遅くすることで、コントローラ11・12(光送信機23)を低コストで構成できる。また、光通信を用いることで、USBケーブルを用いることによる制限(ケーブル長など)を回避できる。
また、コントローラ11・12間でのデータ通信を行う部材を光送信機23,光受信機24のみとし、そのためのポート(通信端子)を、光送信機23,光受信機24の光ポートのみにする(メタルポートを用いない)ことが好ましい。また、コントローラ11・12を、ホスト10あるいはデバイス13と一体化することも好ましい。
このように構成すれば、コントローラ11・12の必要とする帯域が、600Mbpsから100Mbpsへと著しく低くなる。これにより、安価な製造プロセスにより、コントローラ11・12を作成することが可能となる。
なお、デバイス13として、データ転送速度の遅いもの(例えばフラッシュメモリ;50Mbps程度)を用いる場合、トランザクションの完了に要する時間は、デバイス13の転送速度に大きく依存する。従って、コントローラ11・12間のデータ転送速度については、デバイス13の速度より速くすれば、トランザクションの完了時間に大きな影響を与えることはないといえる。
従って、本発明のUSBシステムを、ホストと、デバイスと、ホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを含むUSBシステムにおいて、コントローラ間のデータ転送を光通信で行うように設定されており、さらに、この光通信のデータ転送速度が、USB2.0におけるハイスピードモードでのデータ転送速度より遅くなっていることを特徴とするUSBシステム、と表現することもできる。
また、コントローラ11・12間を、光を用いない他の通信経路(電波による無線通信など)としても、転送速度を遅くすることで、コントローラ11・12のコストを削減できる。従って、本発明のUSBシステムを、ホストと、デバイスと、ホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラと、デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを含むUSBシステムにおいて、コントローラ間のデータ転送速度が、USB2.0におけるハイスピードモードでのデータ転送速度より遅くなっていることを特徴とするUSBシステム、と表現することもできる。
また、上記実施の形態の説明においては、USB2.0規格を想定しているが、USB2.0規格ではホスト側とデバイス側との機能がそれぞれ固定している。すなわち、USB2.0規格の下でのデータのやり取りは、PCをUSBホストとして、該PCにUSBデバイスとなるデバイス(デジタルカメラやプリンタ等)を接続して行っていた。
しかしながら、近年、USB−OTG(USB−On−The−Go)という規格が制定され、通常USBシステムで必要であったPC(USBホスト)が必要でなくなっている。すなわち、USB−OTG規格では、PC(USBホスト)なしにUSB機器同士でデータの送受信が可能であるため、利便性の向上が図られている。USB−OTGにおいては、繋がれたケーブルのコネクタの種類により、USBホストとしても、USBデバイスとしても動作可能となる。
USB−OTGでは、USB2.0と同様に、LS(1.5Mbps),FS(12Mbps),HS(480Mbps)の転送速度をサポートしている。また、USB−OTG対応機器は、USBホストとしても、またUSBデバイスとしても動作可能である。また、USB−OTG規格においては、miniABという新しいコネクタの種類が追加された。このminiABは、miniA,miniBの両方のプラグを持ったケーブルを接続することが可能であり、接続されるケーブルのプラグの形状により、miniAが接続された場合は、USBホストとして動作し、またminiBが接続された場合は、USBデバイスとして動作する。また、HNP(Host Negotiation Protocol)という新しいプロトコルにより、ケーブルを接続した状態で、動的にホストとデバイスの機能を交代するといった機構を追加されている。つまり、USB−OTGでは、接続される機器がUSBホストとなるかUSBデバイスとなるかは、ケーブルのコネクタの種類、もしくはUSB−OTGで定められたHNP(Host Negotiation Protocol)で決定する。
すなわち、本発明をこのUSB−OTGに応用する場合、USBホストおよびUSBデバイスはその役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることもありうる。同様に、ホスト側コントローラおよびデバイス側コントローラもその役割が固定されているものではなく、伝送されるデータの方向によってその役割が入れ替わることも可能であるため、例えば図14に示すとおり、一つの通信コントローラ14がホスト側コントローラ11とファンクション側コントローラ12との両方の機能を持っていることが好ましい。このためには、各コントローラのステートマシンにおいて、ホスト側コントローラおよびデバイス側コントローラの両方の機能として動作可能なプログラムが組み込まれていれば良い。
また、本実施の形態では、デバイス側コントローラ12における全ての処理を、デバイスSM42の制御により行うとしている。しかしながら、これに限らず、これらの処理を行うためのプログラムを記録媒体に記録し、このプログラムを読み出すことのできる情報処理装置(デバイス13の一部でもよい)を、デバイスSM42に代えて用いるようにしてもよい。
また、同様に、ホスト側コントローラ11における全ての処理をホストSM32によって行うとしているが、これらの処理を行うためのプログラムを記録媒体に記録し、このプログラムを読み出すことのできる情報処理装置(ホスト10の一部でもよい)を、ホストSM32に代えて用いるようにしてもよい。
この構成では、情報処理装置の演算装置(CPUやMPU)が、記録媒体に記録されているプログラムを読み出して処理を実行する。従って、このプログラム自体が処理を実現するといえる。
ここで、上記の情報処理装置としては、一般的なコンピューター(ワークステーションやパソコン)の他に、コンピューターに装着される、機能拡張ボードや機能拡張ユニットを用いることができる。
また、上記のプログラムとは、処理を実現するソフトウェアのプログラムコード(実行形式プログラム,中間コードプログラム,ソースプログラム等)のことである。このプログラムは、単体で使用されるものでも、他のプログラム(OS等)と組み合わせて用いられるものでもよい。また、このプログラムは、記録媒体から読み出された後、装置内のメモリー(RAM等)にいったん記憶され、その後再び読み出されて実行されるようなものでもよい。
また、プログラムを記録させる記録媒体は、情報処理装置と容易に分離できるものでもよいし、装置に固定(装着)されるものでもよい。さらに、外部記憶機器として装置に接続するものでもよい。
このような記録媒体としては、ビデオテープやカセットテープ等の磁気テープ、フロッピー(登録商標)ディスクやハードディスク等の磁気ディスク、CD−ROM,MO,MD,DVD,CD−R等の光ディスク(光磁気ディスク)、ICカード,光カード等のメモリカード、マスクROM,EPROM,EEPROM,フラッシュROM等の半導体メモリーなどを適用できる。また、ネットワーク(イントラネット・インターネット等)を介して情報処理装置と接続されている記録媒体を用いてもよい。この場合、情報処理装置は、ネットワークを介するダウンロードによりプログラムを取得する。すなわち、上記のプログラムを、ネットワーク(有線回線あるいは無線回線に接続されたもの)等の伝送媒体(流動的にプログラムを保持する媒体)を介して取得するようにしてもよい。なお、ダウンロードを行うためのプログラムは、装置内(あるいは送信側装置・受信側装置内)にあらかじめ記憶されていることが好ましい。
また、本発明は、USB伝送におけるSETUPトランザクションにおいて、USB2.0のネイティブ速度と比べて転送速度が低い通信路を用いた場合(従来の方法では、USBの時間的制約により正常に終了できないような場合)に、USB2.0のSETUPトランザクションによるデータ転送を問題なく行う技術であるといえる。従って、本発明の技術を、ホスト側コントローラがUSBホストからSETUPパケットおよびDATAパケットを受信した時点でデバイス側コントローラからACKパケットを受信していなければ、その後でデバイス側コントローラから送信されてくるACKパケットを記憶手段(FIFO)に格納して、ACKパケットを受信した後、再度USBホストからSETUPパケットおよびDATAパケットを受信すると、記憶手段に格納しているACKパケットをUSBホストに送信するものである、と表現することもできる。
従来のUSB伝送におけるSETUPトランザクションでは、USBホストからのSETUPパケットおよびDATAパケットの送信後、所定の制約時間(最大TAタイム)以内にUSBデバイスからの返答パケット(ACKパケット)をUSBホストにて受信する必要があり、ホスト−デバイス間の通信路における通信速度がUSBのネイティブ速度と比べて低い場合、上記制約時間以内に返答パケットを受け取れず、SETUPトランザクションが正常に終了しないという問題があった。
また、従来では、ホスト側コントローラは、SETUPパケットを受信するたびに、USBデバイスにこれを転送し返答パケットの受信を待って処理を行っているため、ホスト−デバイス間の通信速度の問題によって上記制約時間以内に処理が終了できない場合は、USBホストがSETUPパケットの送信を繰り返し行っても、SETUPトランザクションを正常に終了できなかった。
これに対し、上記の構成では、ホスト側コントローラは、最初に送信したSETUPパケットに対する返答としてのACKパケットを記憶手段にて格納し、USBホストからSETUPパケットが再送されてきた時に、記憶手段にて格納されているACKパケットをUSBホストに送信することで、TAタイム(ターンアラウンドタイム)を意識することなく、SETUPトランザクションを正常に行うことが可能となる。
また、本発明は、USB規格におけるUSB信号の伝送方法および伝送装置に関するものであるともいえる。また、USBでは、接続形態を維持するために、最下層のプロトコルは時分割で通信し、ホストがスケジューリングを行うといえる。また、USB上のデータ通信は、トランザクションと呼ばれる単位で行われる。このトランザクションは、トークンパケット、データパケット、そしてハンドシェイクパケットと呼ばれるパケットで構成されている。ホストがトランザクション開始時に発行するトークンパケットで必ず始まり、トークンパケットに含まれるアドレスおよびエンドポイントにより、対応するデバイスが応答する。
エンドポイントとは、転送データを格納するためのFIFOバッファのことであり、USBホストとUSBデバイスのデータのやりとりは、かならずエンドポイントを介して実行される。USBデバイスは、最大16個のエンドポイントを持つことができ、複数のエンドポイントを認識するために、エンドポイントには番号がつけられる。USBホストはデータ転送の際にUSBデバイスのUSBアドレスとエンドポイントによりアクセスを行う。エンドポイントの中で0番のものは、エンドポイント0と呼ばれ、USBデバイスに必ず1つ存在しなければならない。このエンドポイント0は、コントロール転送時にSETUPパケットによって行われる初期化時に用いられる。また、図5において、デバイスの送信開始がT403であるのは、デバイスに対しては、USBネイティブの480Mbpsで送信する必要があるためであるといえる。
また、本発明においては、USBホスト側に接続されるホスト側コントローラとUSBデバイス側に接続されるデバイス側コントローラから構成されてもよい。ホスト側コントローラは、USBホストからの信号を受信してUSBデバイスに送信し、デバイス側コントローラからの信号をUSBホストに向かって送信するが、USBホストとUSBケーブルで接続する以外にUSBハブのダウンストリームのポートとUSBケーブルで接続されても構わない。また、USBホストやUSBハブの一部として、構成されても構わない。デバイス側コントローラは、ホスト側コントローラからの信号をUSBデバイスに送信し、USBデバイスからの信号をホスト側コントローラに向かって送信するが、USBデバイスとUSBケーブルで接続する以外にUSBハブのアップストリームのポートとUSBケーブルで接続されても構わない。また、USBデバイスやUSBハブの一部として構成されも構わない。
また、送信FIFO21は、ホスト側コントローラとデバイス側コントローラ間の通信路がUSBの通信路と比べて同一もしくは低速である場合、前記同一または低速の通信路にパケットをリピートする際のタイミング調整を行ってもよい。また、本システムでは、ホストSM32は、INトランザクション、OUTトランザクション、SETUPトランザクションの各トランザクションにおいて、予め定められたルールにより、USBホストおよびデバイス側コントローラとパケットのやりとりを行う。
また、本システムでは、ホストSM32は、ホスト10から受信したSETUPパケットおよびDATAパケットをデバイス側コントローラ12に送信したときには、デバイス側コントローラ12から、ACKパケットを受信していない。このため、ホスト10に何も返さない。こうすることで、ホスト10に対しては、デバイス13がSETUPパケットおよびDATAパケットを正常に受信することができなかったと認識させることが可能となり、SETUPトランザクションの終了を行わせないことができるといえる。
また、デバイス側コントローラ12においては、OUTパケットおよびDATAパケットを受信した際に、ホスト側コントローラからDATAパケットを完全に受信していた場合のみ、USBデバイスに対してDATAパケットを送信する。これは、DATAパケットのパケットフォーマット中にパケットの長さを意味するフィールドが存在しないことが原因であり、低速通信路からの受信データをUSBの高速通信路にリピートする際にDATAの抜けなくリピートを確実に行うためである。USB2.0においては、図8に示すように各転送モードにおいて、パケットの最大長が定められている。しかし、SETUPトランザクションにおけるSETUPパケットの直後のDATAパケットの長さが8バイトと定められており、パケットの解析により、SETUPパケットの直後のDATAパケットに関しては、DATAパケットの受信終了を待たずして、USBデバイスへとDATAパケットの送信開始を行うことが可能であると考えられる。
また、図9に示したカウンター34は、ホスト側コントローラ11から受信したDATAパケットがデバイス側コントローラ12の受信FIFO26に書き込まれる際に、書き込まれたDATAの分だけ値が増えていくカウンターであるといえる。カウンター34の値が、図8中で示されているアイソクロナス転送時の最大パケット長の3072バイトに相当する値まで達していなくても、USB2.0の通信路に送信開始したとしても、受信FIFO26がEMPTYになることのない値以上であるならば、DATAパケットの受信終了を待たずにUSB通信路に対して送信しても構わない。上記のようなカウンター34の値を計算し、カウンター34の値がその値以上であるならば、DATAパケットの受信終了を待たずに送信開始することで、DATAパケットの送信タイミングを早くすることが可能となり、全体としての転送速度の向上を図ることが可能となる。また、前述のとおり、SETUPパケットの直後のDATAパケットは8バイトと固定であるため、SETUPパケット直後のDATAパケットに関しては、上記カウンター34の設定値を低くすることが可能となり、より全体としての転送速度の向上を図ることが可能となるといえる。
また、図7(a)は、USBデータパケットのパケットフォーマットであり、図7(b)は、低速通信路用に変換されたパケットフォーマットであり、ホスト側コントローラがDATAパケットを受信した際に、デバイス側コントローラに向けて送信するパケットフォーマットであるといえる。また、本システムでは、図7(b)に示すように、USBパケットのCRC16の後に、CRC_OKというフィールドが設けてある。デバイス側コントローラが保有しているDATAパケットに誤りがない場合は、上記CRC_OKのフィールドにその旨を示す値を入れ、また保有しているDATAパケットに誤りがある場合は、その旨を同じく入れることで、ホスト側コントローラの保有しているDATAパケットが再送できるパケットかどうかという情報をデバイス側コントローラに通知することが可能となり、デバイス側コントローラにおいては、上記CRC_OKフィールドを監視することにより、仮に受信DATAパケットに誤りがあると判断された場合に、ホスト側コントローラに対して、再送要求を行うかどうかの制御を行うことが可能となるといえる。
また、デバイス側コントローラ12のCRCチェック回路33は、ホスト側コントローラ11から受信したDATAパケット中のCRC16を計算し、受信DATAパケットに誤りがあるかどうかを判別することが可能である。CRCチェック回路33により、誤りがあると判断されたDATAパケットは破棄し、USBパケットとして、送信しないことで、送信にかかる電力を低減するとともに、USBデバイスが前記誤りのあるパケットを受信することで生じる予期せぬ異常動作の抑制を行うことが可能となる。また、ホスト側コントローラ11のCRCチェック回路33は、ホスト10から受信したDATAパケット中のCRC16を計算し、受信DATAパケットに誤りがないかどうかを判別することが可能である。誤りがあると判断された場合の低速通信路へのDATAパケットのリピートは、無駄なものである。よって、誤りがあると判断された場合は、リピートの途中でもパケットの送信をやめることで、低速通信路の転送効率の悪化を抑制することが可能となる。
また、デバイス側コントローラ12を、以下のように設定してもよい。すなわち、デバイスSM42は、ホスト側コントローラ11からSETUPパケットおよびDATAパケットを受信すると、SETUPパケットおよびDATAパケットを受信FIFO26に書き込む。この受信FIFO26は、SETUPパケットおよびDATAパケット送信時に、あらかじめリードポインタの値を保持しておく。デバイスSM42は、SETUPパケットおよびDATAパケットをUSBデバイスに送信後、あらかじめ定められた一定時間の間にACKパケットを受信しない場合は、デバイス13とデバイス側コントローラ12との間の通信路において、データ誤りが発生したものと判断し、前述のリードポインタの値にリードポインタを設定し、予め定められた一定時間経過後、再び同じSETUPパケットおよびDATAパケットを送信する。この場合、受信FIFO26のリードポインタの制御により、再送を実現しているが、RAMなどで開始アドレスを保持することにより、再送を実現しても問題ない。また、CRCチェック回路33により、受信DATAパケットが正しいかどうかを判別することが可能であるため、受信DATAパケットが正しいと判別される場合のみ、上記再送処理を行うといった制御を行うことが可能となる。
また、本実施形態に示した方法により、USBのネイティブの速度よりも遅い通信速度がUSBホストとUSBデバイスの間に存在したとしても、正常にSETUPトランザクションを行うことが可能となるといえる。また、FIFO内のデータ量の監視により、適切なDATAパケットの送信タイミングを制御することが可能となり、同一速度または低速の通信路の使用効率を向上させることが可能となる。また、ホスト側コントローラ、デバイス側コントローラ内にCRCチェック回路を設けることにより、エラー検出が可能となり、再送処理などにより、より安定度の高いデータ通信を行うことが可能となる。
また、スピードネゴシエーション回路を設けることにより、最も適した転送速度において、データ通信が可能となる。また、全二重通信を行うことにより、通信路の使用効率を向上させることが可能となる。また、低速通信路として、光ファイバーを用いることにより、同一または低速の通信路の距離を長くとることが可能となり、応用範囲が広がる。また、低速通信路として、電波を用いた無線を用いることにより、コネクタ劣化を防ぐことが可能となり、またケーブルレスとなるため、使い勝手が良くなる。また、低速通信路として、光を用いた空間伝送を用いることにより、コネクタ劣化を防ぐことが可能となり、高速な空間伝送を行うことが可能となる。
また、本発明の目的を、USB2.0のネイティブ速度と比べて転送速度が低い通信路(例えば100Mbpsの光通信路)を用いた場合でも、問題なくUSB2.0のSETUPトランザクションによるデータ転送を行うことにあるともいえる。このような目的を達成するための本発明の構成を、以下の第1〜18送受信回路および第1送受信方法として表現することもできる。
すなわち、第1送受信回路は、USB規格に定められた転送速度と同一もしくはそれ以下の転送速度で転送可能なインタフェースを持った送受信回路であって、USBホストもしくはUSBハブのダウンストリーム側のポートに接続されるか、USBホストもしくはUSBハブの一部として構成されるホスト側コントローラと、USBデバイスもしくはUSBハブのアップストリーム側のポートに接続されるか、USBデバイスもしくはUSBハブの一部として構成されるデバイス側コントローラによって構成され、両コントローラは、FIFO、ステートマシンを有し、ホスト側コントローラにおいては、SETUPパケットを受信したら直ちにデバイス側コントローラにSETUPパケットをリピートし、DATAパケットを受信したら直ちにデバイス側コントローラにDATAパケットをリピートし、デバイス側コントローラから、ACKパケットを受信していたら、USBホストにACKパケットを送信することを特徴とし、デバイス側コントローラにおいては、ホスト側コントローラから送られてきたSETUPパケットおよびDATAパケットをUSBデバイスにリピートし、USBデバイスから受信したパケットは、ホスト側コントローラにリピートすることを特徴とする。こうすることで、USBホストとUSBデバイスの間にUSB2.0規格よりも遅い転送速度の通信路を挟んだとしても、ターンアラウンドタイムを意識することなく、SETUPトランザクションを正常に行うことが可能となる。
また、第2送受信回路は、前述の第1送受信回路であって、デバイス側コントローラにおいて、ホスト側コントローラからの受信FIFOの受信データ量が予め定められた値よりも多ければ、データ受信完了を待たずにUSBデバイスにDATAパケットを送信し始めることを特徴とする。こうすることで、DATAパケットの受信完了までの待ち時間を減らすことが可能となり、バスの転送効率を上げることが可能となる。また、第3送受信回路は、前述の第1送受信回路であって、デバイス側コントローラにおいて、ホスト側コントローラから受信したパケットが誤り検出符号の解析により、誤っていると判断される場合、パケットを破棄することを特徴とする。こうすることで、デバイス側コントローラは、USBデバイスに対して、誤ったパケットの送信を抑制することが可能となり、低消費電力につながるとともに、予期せぬUSBデバイスの異常動作を低減することが可能となる。
また、第4送受信回路は、前述の第1送受信回路であって、ホスト側コントローラにおいて、USBホストから受信したパケットが誤り検出符号の解析により、誤っていると判断される場合、直ちにデバイス側コントローラへのパケットの送信をやめることを特徴とする。こうすることで、誤ったパケットの送受信によるバスの低効率化を抑制することが可能となる。また、第5送受信回路は、前述の第1送受信回路であって、デバイス側コントローラにおいて、USBデバイスに送信したDATAパケットに対してACKパケットが返ってこなかった場合、予め定められた一定時間経過後、再びSETUPパケットおよびDATAパケットをUSBデバイスに再送することを特徴とする。こうすることで、USBデバイスとデバイス側コントローラ間の通信路におけるパケットエラーに対する処理時間の短縮が可能となる。
また、第6送受信回路は、前述の第5送受信回路であって、特に前記DATAパケットに誤りがない場合のみ、SETUPパケットおよびDATAパケットの再送を行うことを特徴とする。こうすることで、誤ったパケットをUSBホストに対して再送してしまうことによるバスの使用効率の低下を抑制することが可能となる。また、第7送受信回路は、前述の第1送受信回路であって、デバイス側コントローラにおいて、ホスト側コントローラから受信したDATAパケットが誤っていると判断される場合、ホスト側コントローラに再送要求をすることを特徴とする。こうすることで、ホスト側コントローラとデバイス側コントローラ間の通信路において、パケットにエラーが発生した場合に、ホスト側コントローラに対して、その旨を通知することが可能となる。
また、第8送受信回路は、前述の第7送受信回路であって、ホスト側コントローラにおいて、前記再送要求を受信した場合、DATAパケットを再送することを特徴とする。こうすることで、ホスト側コントローラとデバイス側コントローラ間の通信路において発生したパケットエラーに対する再送処理を行うことが可能となる。また、第9送受信回路は、前述の第7送受信回路であって、前記再送処理は、誤りのないDATAパケットを保有している場合のみであることを特徴とする。
こうすることで、USBホストとホスト側コントローラ間で発生したエラーパケットについては、再送処理を行わないことになり、通信路の使用効率の低下を軽減することが可能となる。また、第10送受信回路は、前述の第7送受信回路であって、前記同一または低速通信路のパケットフォーマット中にデバイス側コントローラが保有しているパケットは誤りがないことを示すフラグを設けることを特徴とする。こうすることで、デバイス側コントローラはホスト側コントローラに対して、誤りのないデータを保有していることを通知することが可能となる。
また、第11送受信回路は、前述の第10送受信回路であって、デバイス側コントローラがホスト側コントローラから受信したパケットが誤っていると判断される場合、前記フラグにより、ホスト側コントローラが誤りのないDATAパケットを保有していることが確認された場合のみ再送要求をすることを特徴とする。こうすることで、誤りのあるパケットの転送による通信路の使用効率の低下を抑制することが可能となる。
また、第12送受信回路は、前述の第1送受信回路であって、複数の転送速度が可能な送受信回路およびトランシーバを有し、相手ノードとのスピードネゴシエーションを行うことを特徴とする。こうすることで、複数の転送速度で転送が可能なホスト側コントローラとデバイス側コントローラにおいて、同一の転送速度でパケット転送が可能となる。また、第13送受信回路は、前述の第12送受信回路であって、前記スピードネゴシエーションにより、予め定められた転送速度以上で通信が可能であると判断される場合は、前記ステートマシンによるパケットの制御およびUSBホストおよびデバイスへのパケット送信タイミングを行わずに、変復調のみを行ってパケットのリピートを行うことを特徴とする。こうすることで、通信路の転送速度が前述の最大ターンアラウンドを満足する程、十分であると判断される場合は、データ転送速度の低下をおこすことなく、USB2.0のデータ転送を行うことが可能となる。
また、第14送受信回路は、前述の第12送受信回路であって、前記同一または低速の通信路のエラーレートを解析し、予め定められたエラーレートよりも悪いと判断される場合、転送速度を落として通信を行うことを特徴とする。こうすることで、仮に通信路の品質が悪いと判断される場合は、転送速度を落とすことにより、品質の良い通信路において、データ転送が可能となる。また、第15送受信回路は、前述の第1送受信回路から第14送受信回路のいずれかに当てはまる送受信回路であって、全二重通信であることを特徴とする。こうすることで、半二重通信において必要なプリアンブルをなくすことが可能となり、通信路の使用効率を向上することが可能となる。
また、第16送受信回路は、前述の第1送受信回路から第15送受信回路のいずれかに当てはまる送受信回路であって、光ファイバを用いた長距離通信であることを特徴とする。こうすることで、USBホストとUSBデバイスの距離を長くすることが可能となり、応用範囲が広がる。また、第17送受信回路は、前述の第1送受信回路から第14送受信回路のいずれかにあてはまる送受信回路であって、ホスト側コントローラとデバイス側コントローラ間が電波を用いた無線通信であることを特徴とする。こうすることで、ケーブルレスとなり、コネクタの劣化などが防げる。
また、第18送受信回路は、前述の第1送受信回路から第15送受信回路のいずれかにあてはまる送受信回路であって、ホスト側コントローラとデバイス側コントローラ間が光を用いた空間伝送であることを特徴とする。こうすることで、ケーブルレスとなり、コネクタの劣化などが防げるとともに、高速な空間伝送を行うことが可能となる。また、第1送受信方法は、前述の第1送受信回路から第18送受信回路を実現するための送受信方法であることを特徴とする。
本発明は、ホストコンピューター(ホスト)と、その周辺機器(デバイス)との間におけるUSB通信(USB規格に沿ったデータ通信)を実現するための通信システムであるUSBシステム、および、USBシステムにおけるホスト,デバイスに備える通信コントローラ(ホスト側コントローラ,デバイス側コントローラ)に利用されるものである。
本発明の一実施形態にかかるUSBシステムの構成を示すブロック図である。 図1に示したUSBシステムのホスト側コントローラにおけるホストSMの、SETUPトランザクションにおける動作の流れを示すフローチャートである。 図1に示したUSBシステムのデバイス側コントローラにおけるデータSMの、SETUPトランザクションにおける動作の流れを示すフローチャートである。 図1に示したUSBシステムにおける、スピードネゴシエーションの例を示すタイミングチャートである。 スピードネゴシエーションにおけるホスト側コントローラのSNSMの動作を示す説明図である。 スピードネゴシエーションにおけるデバイス側コントローラのSNSMの動作を示す説明図である。 図7は、図1に示したUSBシステムにおいて転送されるDATAパケットの構成を示す説明図である。 DATAパケットのサイズを示す説明図である。 図1に示したUSBシステムのデバイス側コントローラにおける、他の構成を示すブロック図である。 USBパケットの種別を示す説明図である。 USBのパケットフォーマットを示す説明図である。 SETUPトランザクションの例を示すタイミングチャートである。 従来のUSBシステムにおける、SETUPトランザクションを示すタイミングチャートである。 ホスト側コントローラの機能とデバイス側コントローラの機能とを備える通信コントローラを示した図である。
符号の説明
10 ホスト
11 ホスト側コントローラ
12 デバイス側コントローラ
13 デバイス
14 通信コントローラ
20 USB受信機
21 送信FIFO
22 変調回路
23 光送信機
24 光受信機
25 復調回路
26 受信FIFO
27 USB送信機
28 エラー検出回路
29 タイマー
30 スピードネゴシエーションステートマシン(SNSM;速度設定部)
32 ホスト側ステートマシン(ホストSM;ホスト側制御部)
33 CRCチェック回路
34 カウンター
42 デバイス側ステートマシン(ホストSM;デバイス側制御部)
Ta 所定時間

Claims (30)

  1. USBシステムのホストに備えられ、ホストとデバイスとの間の通信を中継するホスト側コントローラにおいて、
    SETUPトランザクション時、
    ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する一方、
    デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを記憶するとともに、
    ホストからデバイスに向けて再送信されるSETUPパケットおよびDATAパケットを受信したときに、上記のACKパケットをホストに送信するホスト側制御部を備えていることを特徴とするホスト側コントローラ。
  2. 上記ホスト側制御部は、
    ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する際、
    DATAパケットにおけるエラーの有無を判断し、エラーのある場合には、そのDATAパケットの送信を回避するように設定されていることを特徴とする請求項1に記載のホスト側コントローラ。
  3. ホストと、
    デバイスと、
    請求項1に記載のホスト側コントローラと、
    デバイスに備えられ、ホストとデバイスとの間の通信を中継するデバイス側コントローラとを備えたUSBシステム。
  4. 上記デバイス側コントローラが、
    ホスト側コントローラから送信されたSETUPパケットおよびDATAパケットをデバイスに送信する一方、
    デバイスから送信されるACKパケットをホスト側コントローラに送信するデバイス側制御部を備えていることを特徴とする請求項3に記載のUSBシステム。
  5. 上記デバイス側制御部は、
    ホスト側コントローラからDATAパケットを受信してデバイスに転送する際、DATAパケットの受信量が安定受信量を超えたときに、デバイスに対するDATAパケットの転送を開始するように設定されていることを特徴とする請求項4に記載のUSBシステム。
  6. 上記デバイス側制御部は、
    ホスト側コントローラから受信したDATAパケットにエラーのある場合には、そのDATAパケットをデバイスに転送することを回避するように設定されていることを特徴とする請求項4に記載のUSBシステム。
  7. 上記デバイス側制御部は、
    デバイスに対してSETUPパケットおよびDATAパケットを送信した後、所定時間以内にACKパケットを受信できなかったときには、
    デバイスに対してSETUPパケットおよびDATAパケットを再送するように設定されていることを特徴とする請求項4に記載のUSBシステム。
  8. 上記デバイス側制御部は、
    デバイスに対してSETUPパケットおよびDATAパケットを再送する前に、
    DATAパケットにおけるエラーの有無を判断し、エラーのある場合には、上記の再送を回避するように設定されていることを特徴とする請求項7に記載のUSBシステム。
  9. 上記デバイス側制御部は、
    ホスト側コントローラから受信したDATAパケットにエラーがあると判断した場合、ホスト側コントローラに対してDATAパケットの再送を要求し、
    上記ホスト側制御部は、デバイス側制御部から受けた再送の要求に応じて、DATAパケットを再送するように設定されていることを特徴とする請求項4に記載のUSBシステム。
  10. 上記ホスト側制御部は、エラーのないDATAパケットを有している場合に限り、このDATAパケットを再送することを特徴とする請求項9に記載のUSBシステム。
  11. 上記ホスト側制御部は、
    ホストから送信されるDATAパケットを、受信した部分から順にデバイス側コントローラに送信するとともに、
    DATAパケットを完全に受信したときに、このパケットにおけるエラーの有無を検出し、検出結果を示すフラグをDATAパケットの末尾に添付してデバイス側コントローラに送信することを特徴とする請求項4に記載のUSBシステム。
  12. 上記デバイス側制御部は、
    ホスト側コントローラから受信したDATAパケットにエラーがあると判断した場合であって、DATAパケットにエラーのないことを示すフラグが添付されている場合に、ホスト側コントローラに対してDATAパケットの再送を要求し、
    上記ホスト側制御部は、デバイス側制御部から受けた再送の要求に応じて、DATAパケットを再送するように設定されていることを特徴とする請求項10に記載のUSBシステム。
  13. 上記ホスト側コントローラおよびデバイス側コントローラは、
    両コントローラ間の通信速度を設定する速度設定部を備えていることを特徴とする請求項4に記載のUSBシステム。
  14. 上記の速度設定部により、コントローラ間の通信速度が所定値以上に設定された場合、
    ホスト側制御部は、デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットをホスト側に転送することを特徴とする請求項13に記載のUSBシステム。
  15. 上記ホスト側制御部およびデバイス側制御部の少なくとも一方が、
    両コントローラ間でのパケットの送受信におけるエラーレートを算出し、
    このエラーレートが所定値以上となった場合に、上記速度設定部が、コントローラ間の通信速度を低下させることを特徴とする請求項13に記載のUSBシステム。
  16. 上記両コントローラ間の通信経路における通信方式が、全二重通信であることを特徴とする請求項4に記載のUSBシステム。
  17. 上記両コントローラ間の通信経路が、光ケーブルによって形成されていることを特徴とする請求項4に記載のUSBシステム。
  18. 上記両コントローラ間の通信が、光無線通信によってなされることを特徴とする請求項4に記載のUSBシステム。
  19. 上記両コントローラ間の通信が、電波を用いた無線通信によってなされることを特徴とする請求項4に記載のUSBシステム。
  20. ホストとデバイスとの間の通信を中継するとともに、ホスト側のコントローラとしての機能とデバイス側のコントローラとしての機能とを備える通信コントローラであって、
    ホスト側のコントローラとして機能する場合であって、かつ、SETUPトランザクション時、
    ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する一方、
    デバイス側からホストに向けて送信されるACKパケットを受信したときに、このパケットを記憶するとともに、
    ホストからデバイスに向けて再送信されるSETUPパケットおよびDATAパケットを受信したときに、上記のACKパケットをホストに送信する制御部を備えていることを特徴とする通信コントローラ。
  21. 上記制御部は、
    ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信する際、
    DATAパケットにおけるエラーの有無を判断し、エラーのある場合には、そのDATAパケットの送信を回避するように設定されていることを特徴とする請求項20記載の通信コントローラ。
  22. 上記制御部は、
    ホストから送信されるDATAパケットを、受信した部分から順にデバイス側へ送信するとともに、
    DATAパケットを完全に受信したときに、このパケットにおけるエラーの有無を検出し、検出結果を示すフラグをDATAパケットの末尾に添付してデバイス側へ送信することを特徴とする請求項20記載の通信コントローラ。
  23. デバイス側のコントローラとして機能する場合であって、かつ、SETUPトランザクション時、
    上記制御部は、
    ホスト側から送信されたSETUPパケットおよびDATAパケットをデバイスに送信する一方、
    デバイスから送信されるACKパケットをホスト側に送信することを特徴とする請求項20記載の通信コントローラ。
  24. 上記制御部は、
    ホスト側からDATAパケットを受信してデバイスに転送する際、DATAパケットの受信量が安定受信量を超えたときに、デバイスに対するDATAパケットの転送を開始するように設定されていることを特徴とする請求項23記載の通信コントローラ。
  25. 上記制御部は、
    ホスト側から受信したDATAパケットにエラーのある場合には、そのDATAパケットをデバイスに転送することを回避するように設定されていることを特徴とする請求項23記載の通信コントローラ。
  26. 上記制御部は、
    デバイスに対してSETUPパケットおよびDATAパケットを送信した後、所定時間以内にACKパケットを受信できなかったときには、
    デバイスに対してSETUPパケットおよびDATAパケットを再送するように設定されていることを特徴とする請求項23記載の通信コントローラ。
  27. 上記制御部は、
    デバイスに対してSETUPパケットおよびDATAパケットを再送する前に、
    DATAパケットにおけるエラーの有無を判断し、エラーのある場合には、上記の再送を回避するように設定されていることを特徴とする請求項26記載の通信コントローラ。
  28. USBシステムにおけるホストとデバイスとの間でパケットを通信するパケット通信方法において、
    SETUPトランザクション時、
    ホストから送信されたSETUPパケットおよびDATAパケットをデバイス側に送信するパケット送信工程と、
    デバイス側からホストに向けて送信されるACKパケットをホスト側に転送することを回避する返信回避工程と、
    ホストからデバイスに向けてSETUPパケットおよびDATAパケットが再送されたときに、上記のACKパケットをホストに送信する返信工程とを含んでいることを特徴とするパケット通信方法。
  29. USBシステムのホストに備えられたコンピューターに、請求項28に記載のパケット通信方法におけるパケット送信工程,返信回避工程,返信工程を実行させるためのパケット通信プログラム。
  30. 請求項29に記載のパケット通信プログラムを記録した記録媒体。
JP2004214715A 2003-09-29 2004-07-22 ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体 Pending JP2005129008A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004214715A JP2005129008A (ja) 2003-09-29 2004-07-22 ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体
TW093129262A TWI296083B (en) 2003-09-29 2004-09-27 Communication controller, host-side controller, communication system, usb system, communication equipment, communication method, packet-based communication method, packet-based communication program, and storage medium
CNB2004100120211A CN100366029C (zh) 2003-09-29 2004-09-28 通信控制器、主机端控制器、通信设备、通信系统和方法
US10/950,563 US7461318B2 (en) 2003-09-29 2004-09-28 Communication system realizing USB communications between a host computer and its peripheral device and a communication controller transmitting a USB signal under the USB standard

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003337913 2003-09-29
JP2004214715A JP2005129008A (ja) 2003-09-29 2004-07-22 ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体

Publications (1)

Publication Number Publication Date
JP2005129008A true JP2005129008A (ja) 2005-05-19

Family

ID=34655507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004214715A Pending JP2005129008A (ja) 2003-09-29 2004-07-22 ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP2005129008A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007088775A (ja) * 2005-09-21 2007-04-05 Oki Electric Ind Co Ltd 無線通信システム、無線通信装置及び方法
JP2015037281A (ja) * 2013-08-15 2015-02-23 富士ゼロックス株式会社 通信装置、制御装置、及び通信処理プログラム
KR20150036369A (ko) * 2012-07-05 2015-04-07 오므론 매니지먼트 센터 오브 아메리카, 인코포레이티드 중계 전송을 통한 usb 시그널링 방법 및 장치
JP2015080091A (ja) * 2013-10-17 2015-04-23 富士ゼロックス株式会社 通信装置、制御装置、および画像形成装置
KR20150068701A (ko) * 2013-12-12 2015-06-22 한국전자통신연구원 호스트로부터 유에스비 장치의 전원을 온 또는 오프시키기 위한 전원 제어 장치 및 이의 작동 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007088775A (ja) * 2005-09-21 2007-04-05 Oki Electric Ind Co Ltd 無線通信システム、無線通信装置及び方法
KR20150036369A (ko) * 2012-07-05 2015-04-07 오므론 매니지먼트 센터 오브 아메리카, 인코포레이티드 중계 전송을 통한 usb 시그널링 방법 및 장치
KR102073236B1 (ko) 2012-07-05 2020-03-02 오므론 매니지먼트 센터 오브 아메리카, 인코포레이티드 중계 전송을 통한 usb 시그널링 방법 및 장치
JP2015037281A (ja) * 2013-08-15 2015-02-23 富士ゼロックス株式会社 通信装置、制御装置、及び通信処理プログラム
JP2015080091A (ja) * 2013-10-17 2015-04-23 富士ゼロックス株式会社 通信装置、制御装置、および画像形成装置
KR20150068701A (ko) * 2013-12-12 2015-06-22 한국전자통신연구원 호스트로부터 유에스비 장치의 전원을 온 또는 오프시키기 위한 전원 제어 장치 및 이의 작동 방법
KR102153384B1 (ko) * 2013-12-12 2020-09-08 한국전자통신연구원 호스트로부터 유에스비 장치의 전원을 온 또는 오프시키기 위한 전원 제어 장치 및 이의 작동 방법

Similar Documents

Publication Publication Date Title
US7461318B2 (en) Communication system realizing USB communications between a host computer and its peripheral device and a communication controller transmitting a USB signal under the USB standard
TWI294083B (en) Device-side controller, host-side controller, communication controller, usb system, and packet communications method
JP2005107683A (ja) 通信コントローラ、通信システム、通信機器、および通信方法
US10180927B2 (en) Device, system and method for communication with heterogeneous physical layers
JP4768017B2 (ja) ポイントツーポイント・リンクのネゴシエーション方法および装置
US9830292B2 (en) Architected protocol for changing link operating mode
US9390046B2 (en) Controlling a physical link of a first protocol using an extended capability structure of a second protocol
JP2011501483A (ja) 周辺機器のためのミリ波通信
US9081905B2 (en) Low latency interconnect bus protocol
US7577748B2 (en) Information device and controlling method of the same
JP2009527934A (ja) 媒体ビジー信号を他の装置に発信する方法および装置
JP2005129008A (ja) ホスト側コントローラ,usbシステム,通信コントローラ,パケット通信方法,パケット通信プログラムおよび記録媒体
EP0886410A2 (en) Data communication method, data communication apparatus, and data communication program recording medium
JP2005107677A (ja) 通信コントローラ、通信システム、通信機器、および通信方法
US8000278B2 (en) De-activation, at least in part, of receiver, in response, at least in part, to determination that an idle condition exists
US9477615B1 (en) Bi-directional low latency bus mode
JP2014222466A (ja) 情報処理装置、情報処理システムおよび情報処理システムの通信方法
US20110141898A1 (en) Communication system, communication device, integrated circuit, and communication method
JP5691600B2 (ja) 通信回路装置及び電子機器
US20240143434A1 (en) Flow control between peripheral component interconnect express devices
CN111917531A (zh) 一种单线双向通信系统及其通信方法
US20040228341A1 (en) De-activation, at least in part, of receiver, in response, at least in part, to determination that an idle condition exists
JP2006109312A (ja) 通信制御装置及び通信制御方法
JP2003037596A (ja) 通信装置及び通信方法
JP2001175433A (ja) 無線アダプタ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090707