説明

ワイヤレスUSBホスト装置

【課題】データ伝送効率を向上させたワイヤレスUSBホスト装置を提供する。
【解決手段】ワイヤレスUSBデバイスとの間において、ワイヤレスUSBによる伝送データの通信を行なうためのワイヤレスUSBホスト装置において、伝送データの通信を行なう際の単位時間当たりの伝送データ量を算出し、伝送データ量に基づいて伝送データの通信を行なう際のデータレートを動的に調整し、伝送データの通信を行なうことを特徴とするワイヤレスUSBホスト装置を提供することにより上記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ワイヤレスUSBホスト装置に関する。
【背景技術】
【0002】
ワイヤレスUSBは、短距離間の有線通信規格として広く普及しているUSB(Universal Serial Bus)を拡張して、有線通信の安全性と速度を確保しながら、無線通信の使いやすさを実現させた技術規格である。
【0003】
ワイヤレスUSBにおいては、無線技術としてUWB(Ultra Wide Band)技術が採用されている。UWBは、3.1GHzから10.6GHzまでの7.5GHzの周波数帯域を使用する無線方式である。このワイヤレスUSBは、無線LANと比較して、高速、かつ、安全であるという特徴を有しており、次世代の無線技術として注目されているものであり、プリンタやスキャナ等やビデオ、オーディオ等の情報の通信に用いることができる。
【0004】
ワイヤレスUSBは中心となるワイヤレスUSBホストと、このワイヤレスUSBにより制御される複数のワイヤレスUSBデバイスによって構成されている。
【0005】
例えば、ワイヤレスUSBホストからワイヤレスUSBデバイスへのデータ伝送においては、ワイヤレスUSBホストが、事前に、どのワイヤレスUSBデバイスあてに、いつデータを送るかを通知する。それに対して、ワイヤレスUSBデバイスは、その通知された時間に送信されるデータを受信する。
【0006】
一方、ワイヤレスUSBデバイスからワイヤレスUSBホストへのデータ伝送においては、ワイヤレスUSBホストが、事前に、どのワイヤレスUSBデバイスがいつデータを送るべきかを通知する。それに対し、ワイヤレスUSBデバイスは、その通知された時間にデータを転送する。
【0007】
このように、ワイヤレスUSBホストとワイヤレスUSBデバイスの間における通信は、ワイヤレスUSBホストがワイヤレスUSBデバイスを制御する方式で行なわれる。
【0008】
また、ワイヤレスUSBホストとワイヤレスUSBデバイスとの間におけるデータ転送効率、即ち、単位時間当たりの通信データ量となるスループット値を高めるためには、基本的には、ワイヤレスUSBデバイスがサポートするデータレートの中で、最も高いレートであることが望ましい。
【0009】
しかしながら、ワイヤレスUSBホストとワイヤレスUSBデバイス間の距離や、周囲の電波状況等により、ワイヤレスUSBデバイスがサポートするデータレートの中で最も高いデータレートにおける伝送が、必ずしも、最もスループットを高くするものとならない場合がある。よってスループットを高めるため、データレートを動的に変更する方法が考えられている。例えば、無線LANにおける技術の中には、データレートと必要最小受信レベルしきい値の対応が規定されており、あるデータレートにおける情報の伝送中における受信レベルが、そのレートに対する最小受信レベルしきい値を下回った場合、自動的にレートを下げるという方法が用いられている。
【0010】
また、特許文献1では、無線LANにおいて、データ受信側の機器から送信側の機器に対して、正しくデータを受信したことを通知するためのACKパケットが送られない場合には、データ送信側が、送信データレートを下げる方法が記載されている。
【0011】
また、特許文献2では、受信データの誤りの有無を調べることにより、伝送失敗率を求め、得られた失敗率に基づき伝送レートを変化させる方法が記載されている。
【特許文献1】特開2005−102228号公報
【特許文献2】特開2003−51781号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
ところで、ワイヤレスUSBは、3.1GHzから10.6GHzまでの広い周波数帯域をベースとしており、無線LANにおける技術のような、データレートと必要最小受信レベルしきい値の対応関係は、周波数帯によって変化するため、一様にはならないという問題点を有している。
【0013】
また、特許文献1に記載されている方法では、データ受信側の機器から送信側の機器に対して、正しくデータを受信したことを通知するためのACKパケットを利用している。このような方法をワイヤレスUSBに適用すると、ワイヤレスUSBホスト機器をデータ送信側として用いた場合には、このような方法を用いてデータレートの調整を行なうことが可能であるが、データ受信側として用いた場合には、データレートの調整を行なうことができないといった問題点を有していた。
【0014】
また、特許文献2に記載されている方法では、受信データの誤りの有無を調べることにより、伝送失敗率を求める。よって、ワイヤレスUSBホスト機器をデータ送信側として用いる場合には、データレートの調整を行なうことができない。さらに、受信データの誤りの有無を調べるため、処理が重くなる傾向にある。
【0015】
本発明は、このような問題に対しなされたものであり、ワイヤレスUSBにおけるデータ通信において、データ伝送効率を向上させたワイヤレスUSBホスト装置を提供することができる。また、ワイヤレスUSBホストからワイヤレスUSBデバイスへ、また、ワイヤレスUSBデバイスからワイヤレスUSBホストへの双方におけるデータ伝送において、データ伝送効率を向上させたワイヤレスUSBホスト装置を提供するものである。
【課題を解決するための手段】
【0016】
本発明は、ワイヤレスUSBデバイスとの間において、ワイヤレスUSBによる伝送データの通信を行なうためのワイヤレスUSBホスト装置において、前記伝送データの通信を行なう際の単位時間当たりの伝送データ量を算出し、前記伝送データ量に基づいて前記伝送データの通信を行なう際のデータレートを動的に調整し、前記データレートに基づき前記伝送データの通信を行なうことを特徴とする。
【0017】
また、本発明は、前記データレートの動的な調整は、前記ワイヤレスUSBホスト装置における送信と受信の双方向について行なわれるものであることを特徴とする。
【0018】
また、本発明は、前記伝送データ量は、DMA転送のために設定されたデータサイズの値に基づき算出するものであることを特徴とする。
【0019】
また、本発明は、前記データサイズの値は対応させたテーブルの配列として記憶されているものであって、前記テーブルはチェーンとして用いられるものであることを特徴とする。
【0020】
また、本発明は、前記データレートの調整は、前記単位時間当たりの伝送データ量を所定の基準値と比較し、前記比較の結果に基づき前記データレートを変更し調整するものであることを特徴とする。
【0021】
また、本発明は、前記基準値との比較は、現在のレートよりも下げるか否かを判断するものであることを特徴とする。
【0022】
また、本発明は、前記基準値との比較は、現在のレートよりも上げるか否かを判断するものであることを特徴とする。
【0023】
また、本発明は、前記データレートの調整は、所定の時間ごとに定期的に行なわれるものであることを特徴とする。
【0024】
また、本発明は、前記データレートは、ベンダーの独自の設定を格納するレジスタ群の領域内において設定されるものであることを特徴とする。
【0025】
また、本発明は、前記伝送データのファイルの最後となる伝送データには、前記ファイルの最後の伝送データである旨を示すデータパターンが含まれており、前記データパターンを検出した場合には、前記データレートの調整を行なわないことを特徴とする。
【0026】
また、本発明は、前記データレートの動的な調整は、アイソクロナス転送モードにおいて行なうことを特徴とする。
【発明の効果】
【0027】
本発明によれば、ワイヤレスUSBにおけるデータ通信において、データ伝送効率を向上させたワイヤレスUSBホスト装置を提供することができる。また、ワイヤレスUSBホストからワイヤレスUSBデバイスへ、また、ワイヤレスUSBデバイスからワイヤレスUSBホストへの双方におけるデータ伝送において、データ伝送効率を向上させたワイヤレスUSBホスト装置を提供することができる。
【発明を実施するための最良の形態】
【0028】
次に、本発明を実施するための最良の形態について、以下に説明する。
【0029】
〔第1の実施の形態〕
第1の実施の形態について説明する。本実施の形態は、ワイヤレスUSBホストからワイヤレスUSBデバイス(不図示)へのデータ伝送、即ち、ワイヤレスUSBホストにおける送信方向においてデータレートを変更することが可能なワイヤレスUSBホスト装置である。
【0030】
図1に、本実施の形態におけるワイヤレスUSBホスト装置の構成図を示す。本実施の形態におけるワイヤレスUSBホスト装置は、ホストコントローラ1とターゲットデバイス2により構成されており、このホストコントローラ1とターゲットデバイス2は、PCI−Expressバス3を介して接続されている。
【0031】
ホストコントローラ1は、メインCPU(Central Processing Unit)10とメモリ11を有しており、さらに、メモリ11は、オペレーティングシステム12及びデバイスドライバ13を有している。
【0032】
メインCPU10は、メモリ11内におけるオペレーティングシステム12を実行させ、オペレーティングシステム12上においてデバイスドライバ13を実行させる。
【0033】
デバイスドライバ13は、PCI−Expressバス3を介してターゲットデバイス2とのデータの送受信を行なうとともに、後述するMAC部22のレジスタに対して値の読み書きを行なうことによりターゲットデバイス2を制御する。
【0034】
また、ターゲットデバイス2は、サブCPU20と、メモリ21と、MAC部22と、PHY(Physical Layer)部23と、アンテナ24とを備えている。
【0035】
サブCPU20は、サブCPU内DMAC30を有している。
【0036】
メモリ21は、リアルタイムオペレーティングシステム25と、ファームウェア26とを有している。
【0037】
MAC部22は、DMAC(Direct Memory Access Controller)27、送信FIFO(First In First Out)28、受信FIFO29を有しており、データフレームの生成やデータフレームのファイリング等の処理を行なう。
【0038】
PHY部23は、RF部40、PHY/RFレジスタ41、ベースバンド部42を有しており、周波数変換等の信号処理を行なう。RF部40はアンテナ24と接続されており、ベースバンド部42は、送信部50と受信部51とを有している。
【0039】
サブCPU20は、メモリ21を用いて、リアルタイムオペレーティングシステム25を実行し、リアルタイムオペレーティングシステム25上で、MAC部22の各部を制御するためのファームウェア26を実行させる。
【0040】
ホストコントローラ1におけるメモリ11と、ターゲットデバイス2におけるメモリ21との間のデータ転送は、DMAC27によるDMA(Direct Memory Access)転送によって行なわれる。また、メモリ21とMAC部22内の送信FIFO28と受信FIFO29との間においてもデータ転送が行なわれる。このデータ転送はサブCPU内DMAC30によるDMA転送によって行なわれる。
【0041】
データを送信する場合には、メモリ11からメモリ21にデータがDMA転送され、その後、メモリ21からMAC部22内の送信FIFO28にDMA転送される。一方、データを受信する場合には、MAC部22内の受信FIFO29からメモリ21にデータがDMA転送され、その後、メモリ21からメモリ11にDMA転送される。
【0042】
ファームウェア26を実行するサブCPU20は、MAC部22における各種レジスタの設定や、ホストコントローラ1との間のデータの受送信等を行なう。また、ファームウェア26を実行するサブCPU20は、PHY部23におけるPHY/RFレジスタ41の値の読み書きをMAC−PHY(WiMedia MAC−PHY)バス31を介して行なう。
【0043】
MAC部22及びPHY部23は、それぞれWiMedia MAC及びWiMedia PHYの各仕様に基づいた処理を実行する。また、MAC部22及びPHY部23との間の通信は、WiMedia MAC−PHYインターフェースの仕様により規定されており、異なるベンダーのMAC部22とPHY部23とを接続して使用することも可能である。
【0044】
次に、図2に基づきWiMedia MAC−PHYインターフェースの仕様について説明する。図に示すように、PHY/RFレジスタ41に対して、ベースアドレス(基準アドレス)に対するオフセットが、0x00番地から0x1F番地までの範囲は、送受信するチャネルなどの動的なパラメータ設定を格納するための領域(ダイナミックレジスタ群)として規定されている。また、ベースアドレスに対するオフセットが0x20番地から0x7F番地までの範囲は、ターゲットデバイス2がサポートする通信速度及び信号送出レベルの設定値の値等の静的な設定を格納するための領域(スタティックレジスタ群)として規定されている。また、ベースアドレスに対するオフセットが0x80番地から0xFF番地までの範囲は、ベンダーによる独自の設定を格納するための領域(ベンダー領域)として規定されている。
【0045】
図3に示すように、本実施の形態では、このベンダー領域内のレジスタ群の一つとして、例えば、オフセット0xA0番地に送信データレート設定レジスタを割り当て、0xA1番地に受信データレート設定レジスタを割り当てる。ワイヤレスUSBが取り得るデータレートは、53.3、80、106.7、160、200、320、400、480Mbpsの8通りであるため、各レジスタの下位3ビットを用いて、53.3Mbpsに0と、80Mbpsに1と、106.7Mbpsに2と、160Mbpsに3と、200Mbpsに4と、320Mbpsに5と、400Mbpsに6と、480Mbpsに7と割り当てる。よって、送信データレート設定レジスタにおいては、TX_RATEが、受信データレート設定レジスタにおいては、RX_RATEが、各々設けられている。尚、図3においては、割り当てられる数字は2進法で記載されている。
【0046】
ワイヤレスUSBホストとワイヤレスUSBデバイスがデータ通信できるようにするためには、ワイヤレスUSBデバイスが、ワイヤレスUSBホストの指示に基づいて、コンフィギュレーションされることが前提となる。尚、ここで、コンフィギュレーションとは、ワイヤレスUSBホストとワイヤレスUSBデバイスとの間での通信が可能となるように、パケットサイズ、エンドポイント、インターフェース数、最大消費電力等のワイヤレスUSBデバイスの特性を表すパラメータを設定して、ワイヤレスUSBデバイスを構成することを意味するものである。
【0047】
図4に基づき、ワイヤレスUSBデバイスがコンフィギュレーションされるまでのワイヤレスUSBホストとワイヤレスUSBデバイスにおける情報の受け渡し、及び、ワイヤレスUSBデバイスの状態遷移について説明する。
【0048】
まず、非接続状態にあるワイヤレスUSBデバイスは、ワイヤレスUSBホストが送出するMMCパケットをモニタし、その中のCHID(Connection Host Identifier)を調べ、自らが接続可能なワイヤレスUSBホストであるか否かを調べる。接続可能なワイヤレスUSBホストである場合には、MMCパケット中に含まれるワイヤレスUSBデバイスからワイヤレスUSBホストに通知メッセージを送るための時間について記述したWDNSCTA_IEを検出した後、その時間に、接続要求を表すDN_CONNECTメッセージをワイヤレスUSBホストあてに送出する。DN_CONNECTメッセージを受け取ったワイヤレスUSBホストは、接続許可を表すWCONNECTACK_IEをMMCパケットに含めて、ワイヤレスUSBデバイスあてに送出する。これにより、ワイヤレスUSBホストとワイヤレスUSBデバイスは、接続状態における非認証状態に遷移する。
【0049】
次に、4ウェイハンドシェークという手順により、ワイヤレスUSBホストとワイヤレスUSBデバイスの間で、暗号鍵を作成するための情報の受け渡しを行ない接続状態における認証状態に遷移する。
【0050】
次に、ワイヤレスUSBデバイスは、ワイヤレスUSBホストから送出されるワイヤレスUSBデバイスを識別するためのDevice Addressが0(ゼロ)に設定されたSET_ADDRESSデバイスリクエストを受け取ることにより、デフォルト状態に遷移する。
【0051】
その後、ワイヤレスUSBデバイスは、ワイヤレスUSBホストから送出される、Device Addressが0(ゼロ)以外の値に設定されたSET_ADDRESSデバイスリクエストを受け取ることにより、アドレス割り当て状態に遷移する。
【0052】
次に、ワイヤレスUSBホストは、ワイヤレスUSBデバイスが所有するコンフィギュレーションディスクリプタを調べるために、どのディスクリプタが欲しいかを示すパラメータに、コンフィギュレーションディスクリプタであることを示す値を設定して、GET_DESCRIPTORデバイスリクエストを発行する。これに対して、ワイヤレスUSBデバイスは、自らが所有するコンフィギュレーションディスクリプタ全てをワイヤレスUSBホストに通知する。
【0053】
尚、各コンフィギュレーションディスクリプタテーブルには、それぞれを識別するための値であるbConfiguration Valueが含まれている。ワイヤレスUSBホストは、受け取ったコンフィギュレーションディスクリプタの内容をもとに、ワイヤレスUSBデバイスをどのようにコンフィギュレーションしたいかを決定して、そのコンフィギュレーションディスクリプタに対応するbConfiguration Valueをパラメータとして、SET_CONFIGURATIONデバイスリクエストを発行する。ワイヤレスUSBデバイスは、その内容に応じて、自らをコンフィギュレーションする。これにより、コンフィギュレーション状態に遷移する。
【0054】
以上が、ワイヤレスUSBにおける非接続状態からコンフィギュレーション状態に遷移するまでの流れの概要である。
【0055】
コンフィギュレーション状態に遷移した後、ワイヤレスUSBホストからワイヤレスUSBデバイスへとデータを転送する場合には、ワイヤレスUSBホストが送信するデータフレームのPHYヘッダ中のData rateフィールドに、送信データレートを設定する。本実施の形態では、DMA転送によって行なわれる単位時間当たりのデータ送信量、即ち、送信スループット値を定期的に計算し、計算された送信スループット値をもとに必要に応じて、Data rateフィールドに設定する送信データレートを更新するという手法を用いる。
【0056】
次に、図5に基づき本実施の形態におけるワイヤレスUSBホスト装置の送信データレートの調整方法について説明する。
【0057】
本実施の形態におけるワイヤレスUSBホスト装置のDMA転送は、1つのパケットごとに、DMA転送用バッファ及びDMAディスクリプタテーブルを割り当てる。DMAディスクリプタテーブルには、DMA転送用バッファの起点となるアドレス(以下「START_ADD」と記す)、データサイズ(以下「SIZE」と記す)、次のDMAデータスクリプタテーブルのアドレス(以下「NEXT_ADD」と記す)、データ送信後のステータス(以下「STATUS」と記す)などの情報を記憶させる。
【0058】
そして、1からn番目まで(nは2以上の整数)のDMAディスクリプタテーブルのチェーンを形成する。即ち、x番目(1≦x<n)のDMAディスクリプタテーブルのNEXT_ADDには、x+1番目のDMAディスクリプタテーブルの先頭アドレスを設定する。そして、n番目のDMAディスクリプタテーブルのNEXT_ADDには、1番目のDMAディスクリプタテーブルの先頭アドレスを設定する。x番目のDMAディスクリプタテーブルにおけるSTART_ADDとNEXT_ADDの値は、一度、値を設定すれば、その後、データ転送中に書き換える必要はなく不変となるものである。
【0059】
DMAディスクリプタテーブルは、DMA送信用とDMA受信用とで、それぞれ別個なものを用いる。
【0060】
DMA送信用ディスクリプタテーブルにおけるSTART_ADD、SIZE、NEXT_ADD等の値の設定は、デバイスドライバ13が行なう。デバイスドライバ13は、オペレーティングシステム12から渡されるデータフレームを、START_ADDに設定されるDMA転送用バッファに書き込む。そして、そのフレームサイズをSIZEに設定する。
【0061】
本実施の形態では、このSIZEへの設定を行なう際に、x番目のDMA送信用ディスクリプタテーブルに、SIZEとしてどの値を書き込んだか、という情報を対応づけて配列の形式で記憶させておく。
【0062】
前述のDMA送信用ディスクリプタテーブルのSTATUSは、2つのフラグ情報から構成される。1つは、デバイスドライバ13が、そのDMA送信用ディスクリプタテーブルに、次のデータを設定することが可能な状態にあるか否か、即ち、デバイスドライバ13が設定したデータについてDMA送信済みか否かを示すAVAILABLEフラッグである。デバイスドライバ13がデータフレームのSIZEを設定した際に、このAVAILABLEフラグをOFFに設定する。そして、データをDMA転送すると、DMAC27がAVAILABLEフラグをONに設定する。
【0063】
もう一つは、DMA転送が正しくなされたか否かを示すCORRECTフラグである。DMA転送を行なった後、DMA転送が正しくなされていれば、DMAC27がCORRECTフラグをONにする。一方、DMA転送において何からのエラーが発生した場合には、DMAC27がCORRECTフラグをOFFにする。DMAC27は、送信データのDMA転送を終了すると、DMA送信完了割り込みを発生させる。デバイスドライバ13は、このDMA送信完了割り込みが発生するごとに、CORRECTフラグの値がONであるかOFFであるかを調べ、ONであれば、そのときのDMA送信用ディスクリプタテーブルx番目に対するSIZEの値を配列から読み込んでデータサイズ累積カウンタに足し合わせた後、どのDMA送信用ディスクリプタテーブルであるかを示すカウンタを1つインクリメントする。CORRECTフラグの値がOFFにするである場合には、データサイズ累積カウンタへの足し合わせは行なわずに、どのDMA送信用ディスクリプタテーブルであるかを示すカウンタを1つインクリメントする。
【0064】
1番目のデータフレーム送信開始後に、ある所定の時間ごとにタイマー割り込みを発生させるタイマーを起動する。タイマー割り込みが発生すると、デバイスドライバ13中のデータレート調整処理関数がコールされる。
【0065】
次に、図6に基づき送信時におけるデータレート調整処理関数の流れを説明する。
【0066】
最初に、ステップ2(S2)において、送信したファイルにファイル末尾であることを示すEOF(End of Flag)が含まれているか否かのチェックを行なう。EOFが含まれている場合には、その後の受信データレートの調整を必要としないため、そこでデータの受信が終了する。よって、EOFが含まれていると判断された場合には終了し、EOFが含まれていないと判断された場合には、ステップ4に移行する。
【0067】
次に、ステップ4(S4)では、送信スループット値の計算を行なう。具体的には、データサイズ累積カウンタの値をタイマー間隔で割ることにより、送信スループット値を求める。
【0068】
次に、ステップ6(S6)では、データサイズ累積カウンタをクリアにする。これは、次の送信スループット値を計算するために行なわれるものである。
【0069】
次に、求めた送信スループット値をもとに、送信データレートの調整が必要であるか否かが判断される。
【0070】
この判断を行なうために、図7に示すようなデータレートごとに、UPしきい値とDOWNしきい値とを定めたテーブルを事前に作成しておく。UPしきい値は、そのデータレートで十分に高い送信スループットが得られているため、その一つ上のデータレートに上げることが可能であることを示すしきい値である。一方、DOWNしきい値は、その送信データレートでは十分な送信スループットが得られていないため、その一つ下の送信データレートに下げるべきであることを示すしきい値である。DOWNしきい値を下回る場合の具体的な過程としては、例えば、送信側にあたるワイヤレスUSBホストと受信側に当たるワイヤレスUSBデバイスの間における電波状況がよくないと、ワイヤレスUSBデバイスからの送信される正しくデータを受信したことを通知するためのACKパケットが届かない場合があり、このような場合には、再送が必要となるため送信FIFO28が空かなくなる。この状態が続くとDMA転送が滞り、送信スループット値が低くなり、DOWNしきい値を下回ることになる。
【0071】
よって、ステップ8(S8)では、現在の送信データレートは、取り得る値における最低値であるか否かが判断される。現在の送信データレートが取り得る値における最低値であると判断された場合には終了し、現在の送信データレートが取り得る値における最低値でないと判断された場合には、ステップ10に移行する。
【0072】
次に、ステップ10(S10)では、送信スループット値が、現在の送信データレートにおけるDOWNしきい値を下回っているか否かが判断される。送信スループット値が現在の送信データレートにおけるDOWNしきい値を下回っていると判断された場合にはステップ12に移行し、送信スループット値が現在の送信データレートにおけるDOWNしきい値を下回っていないと判断された場合にはステップ16に移行する。
【0073】
次に、ステップ12(S12)では、現在の送信データレートよりも1つ低いデータレートを送信データレート設定レジスタに設定する。
【0074】
次に、ステップ14(S14)では、PHY部23において新たに設定された送信データレートを送信フレームのPHYヘッダ内のData rateフィールドに設定し終了する。
【0075】
一方、ステップ16(S16)では、現在の送信データレートは、取り得る値における最高値であるか否かが判断される。現在の送信データレートが取り得る値における最高値であると判断された場合には終了し、現在の送信データレートが取り得る値における最高値でないと判断された場合には、ステップ18に移行する。
【0076】
次に、ステップ18(S18)では、送信スループット値が、現在の送信データレートにおけるUPしきい値を上回っているか否かが判断される。送信スループット値が現在の送信データレートにおけるUPしきい値を上回っていると判断された場合にはステップ20に移行し、送信スループット値が現在の送信データレートにおけるUPしきい値を上回っていないと判断された場合には終了する。
【0077】
次に、ステップ20(S20)では、現在の送信データレートよりも1つ高いデータレートを送信データレート設定レジスタに設定する。
【0078】
次に、ステップ22(S22)では、PHY部23において新たに設定された送信データレートを送信フレームのPHYヘッダ内のData rateフィールドに設定し終了する。
【0079】
このようにして、本実施の形態におけるワイヤレスUSBホスト装置は、DMA送信する際に用いるDMA送信用ディスクリプタテーブルと送信データのサイズとを対応づけて保存しておき、DMA送信完了割り込みが発生する度に、送信データのサイズを蓄積し、タイマー割り込み発生ごとに送信スループットを計算し、その値が、その送信データレートにおけるDOWNしきい値を下回っているか否か、また、UPしきい値を上回っているか否かを調べ、その結果に基づき送信データレートを上げ下げして調節するため、効率的なデータ送信が可能となる。
【0080】
なお、以上のデータレートを動的に調整するための処理では、送信スループット値に基づき送信データレートの変更の必要性の有無を判断している。そのため、データが連続的に送信されることが前提となる。そこで、これらの調整はワイヤレスUSBの仕様に定められた連続的で一定の転送速度が要求される用途で用いられるアイソクロナス転送モードの際にのみ行なわれる。
【0081】
〔第2の実施の形態〕
第2の実施の形態は、ワイヤレスUSBデバイスからワイヤレスホストへのデータ伝送、即ち、ワイヤレスUSBホストにおける送信方向においてデータレートを変更することが可能なワイヤレスUSBホスト装置である。
【0082】
本実施の形態におけるワイヤレスUSBホスト装置の構成及び、非接続状態からコンフィギュレーション状態に遷移するまでの流れは、第1の実施の形態と同様である。
【0083】
コンフィギュレーション状態に遷移した後、ワイヤレスUSBデバイスからワイヤレスUSBホストへとデータを送信する場合には、ワイヤレスUSBホストが制御パケットとなるMMCパケット中の情報要素WDTCTA_IE中のbmTXAttributesフィールドに、データレートを設定する。
【0084】
本実施の形態では、DMA転送によって行なわれる単位時間当たりのデータ受信量、即ち、受信スループット値を定期的に計算し、計算された受信スループット値に基づき、必要に応じてbmTXAttributesに設定するデータレートを更新するものである。
【0085】
次に、本実施の形態における受信データレートの調整方法について説明する。
【0086】
本実施の形態におけるワイヤレスUSBホスト装置のデータ受信時においては、DMA転送において、1つのパケットごとにDMA転送用バッファ及びDMA受信用ディスクリプタテーブルを割り当てる。
【0087】
DMA受信用ディスクリプタテーブルのSTATUSは、AVAILABLEフラグ及びCORRECTフラグの2つのフラグ情報により構成される。受信時においては、AVAILABLEフラグは、そのディスクリプタテーブルを次のDMA受信に使用することが可能な状態であるか否か、即ち、DMA受信したデータをデバイスドライバ13が読取り済みか否かを示すものである。CORRECTフラグは、その受信データのDMA転送が正しくなされたか否かを示す。DMAC27は、受信データのDMA転送を終了すると、AVAILABLEフラグをOFFに設定し、DMA受信完了割り込みを発生させる。DMA受信完了割り込みが発生すると、デバイスドライバ13は、CORRECTフラグの値がONであるかOFFであるかを調べ、ONであれば、AVAILABLEフラグをONに設定した後、その時の受信用ディスクリプタテーブルx番目のSIZEに設定された分だけ、DMA転送用バッファからデータを読み取り、オペレーティングシステム12に転送する。そして、SIZEの値をデータサイズ累積カウンタに足し合わせた後、どのディスクリプタテーブルであるかのカウンタを1つインクリメントする。CORRECTフラグの値がOFFである場合には、データサイズ累積カウンタへの足し合わせは行わずに、どのDMA受信用ディスクリプタテーブルであるかを示すカウンタを1つインクリメントする。
【0088】
1番目のデータフレーム受信開始後に、ある所定の時間ごとにタイマー割り込みを発生させるタイマーを起動する。タイマー割り込みが発生すると、デバイスドライバ13中のデータレート調整処理関数がコールされる。
【0089】
次に、図8に基づき受信時におけるデータレート調整処理関数の流れを説明する。
【0090】
最初に、ステップ102(S102)において、受信したファイルにファイル末尾であることを示すEOF(End of Flag)が含まれているか否かのチェックを行なう。EOFが含まれている場合には、その後の受信データレートの調整を必要としないため、そこでデータの受信が終了する。よって、EOFが含まれていると判断された場合には終了し、EOFが含まれていないと判断された場合には、ステップ104に移行する。
【0091】
次に、ステップ104(S104)では、受信スループット値の計算を行なう。具体的には、データサイズ累積カウンタの値をタイマー間隔で割ることにより、受信スループット値を求める。
【0092】
次に、ステップ106(S106)では、データサイズ累積カウンタをクリアにする。これは、次の受信スループット値を計算するために行なわれるものである。
【0093】
次に、求めた受信スループット値をもとに、受信データレートの調整が必要であるか否かが判断される。
【0094】
次に、ステップ108(S108)では、現在の受信データレートは、取り得る値における最低値であるか否かが判断される。現在の受信データレートが取り得る値における最低値であると判断された場合には終了し、現在の受信データレートが取り得る値における最低値でないと判断された場合には、ステップ110に移行する。
【0095】
次に、ステップ110(S110)では、受信スループット値が、現在の受信データレートにおけるDOWNしきい値を下回っているか否かが判断される。受信スループット値が現在の受信データレートにおけるDOWNしきい値を下回っていると判断された場合にはステップ112に移行し、受信スループット値が現在のデータレートにおけるDOWNしきい値を下回っていないと判断された場合にはステップ116に移行する。
【0096】
次に、ステップ112(S112)では、現在の受信データレートよりも1つ低いデータレートを受信データレート設定レジスタに設定する。
【0097】
次に、ステップ114(S114)では、PHY部23において新たに設定された受信データレートをMMCパケット中の情報要素WDTCTA_IE中のbmTXAttributesフィールドに設定し終了する。
【0098】
一方、ステップ116(S116)では、現在の受信データレートは、取り得る値における最高値であるか否かが判断される。現在の受信データレートが取り得る値における最高値であると判断された場合には終了し、現在の受信データレートが取り得る値における最高値でないと判断された場合には、ステップ118に移行する。
【0099】
次に、ステップ118(S118)では、受信スループット値が、現在の受信データレートにおけるUPしきい値を上回っているか否かが判断される。受信スループット値が現在の受信データレートにおけるUPしきい値を上回っていると判断された場合にはステップ120に移行し、受信スループット値が現在の受信データレートにおけるUPしきい値を上回っていないと判断された場合には終了する。
【0100】
次に、ステップ120(S120)では、現在の受信データレートよりも1つ高いデータレートを受信データレート設定レジスタに設定する。
【0101】
次に、ステップ122(S122)では、PHY部23において新たに設定された受信データレートをMMCパケット中の情報要素WDTCTA_IE中のbmTXAttributesフィールドに設定し終了する。
【0102】
このようにして、本実施の形態におけるワイヤレスUSBホスト装置は、DMA受信する際に、DMA受信完了割り込みが発生する度に、受信データのサイズを蓄積し、タイマー割り込み発生ごとに受信スループットを計算し、その値が、その受信データレートにおけるDOWNしきい値を下回っているか否か、また、UPしきい値を上回っているか否かを調べ、その結果に基づき受信データレートを上げ下げして調節するため、効率的なデータ受信が可能となる。
【0103】
なお、以上のデータレートを動的に調整するための処理では、受信スループット値に基づき受信データレートの変更の必要性の有無を判断している。そのため、データが連続的に受信されることが前提となる。そこで、これらの調整はワイヤレスUSBの仕様に定められた連続的で一定の転送速度が要求される用途で用いられるアイソクロナス転送モードの際にのみ行なわれる。
【0104】
以上、本発明の実施に係る形態について説明したが、上記内容は、発明の内容を限定するものではない。
【図面の簡単な説明】
【0105】
【図1】本発明におけるワイヤレスUSBホスト装置の構成図
【図2】MAC−PHYレジスタの説明図
【図3】データレート設定レジスタの説明図
【図4】ワイヤレスUSBホストにおける状態遷移の概略説明図
【図5】DMA転送用ディスクリプタテーブルの説明図
【図6】第1の実施の形態におけるデータレート調整のフローチャート
【図7】データレートごとのしきい値に関する説明図
【図8】第2の実施の形態におけるデータレート調整のフローチャート
【符号の説明】
【0106】
1 ホストコントローラ
2 ターゲットデバイス
3 PCI−EXPRESSバス
10 メインCPU
11 メモリ
12 オペレーティングシステム
13 デバイスドライバ
20 サブCPU
21 メモリ
22 MAC部
23 PHY部
24 アンテナ
25 リアルタイムオペレーティングシステム
26 ファームウェア
27 DMAC
28 送信FIFO
29 受信FIFO
30 サブCPU内DMAC
31 MAC−PHYバス
40 RF部
41 PHY/RFレジスタ
42 ベースバンド部
50 送信部
51 受信部

【特許請求の範囲】
【請求項1】
ワイヤレスUSBデバイスとの間において、ワイヤレスUSBによる伝送データの通信を行なうためのワイヤレスUSBホスト装置において、
前記伝送データの通信を行なう際の単位時間当たりの伝送データ量を算出し、
前記伝送データ量に基づいて前記伝送データの通信を行なう際のデータレートを動的に調整し、
前記データレートに基づき前記伝送データの通信を行なうことを特徴とするワイヤレスUSBホスト装置。
【請求項2】
前記データレートの動的な調整は、前記ワイヤレスUSBホスト装置における送信と受信の双方向について行なわれるものであることを特徴とする請求項1に記載のワイヤレスUSBホスト装置。
【請求項3】
前記伝送データ量は、DMA転送のために設定されたデータサイズの値に基づき算出するものであることを特徴とする請求項1または2に記載のワイヤレスUSBホスト装置。
【請求項4】
前記データサイズの値は対応させたテーブルの配列として記憶されているものであって、
前記テーブルはチェーンとして用いられるものであることを特徴とする請求項3に記載のワイヤレスUSBホスト装置。
【請求項5】
前記データレートの調整は、前記単位時間当たりの伝送データ量を所定の基準値と比較し、
前記比較の結果に基づき前記データレートを変更し調整するものであることを特徴とする請求項1から4のいずれかに記載のワイヤレスUSBホスト装置。
【請求項6】
前記基準値との比較は、現在のレートよりも下げるか否かを判断するものであることを特徴とする請求項5に記載のワイヤレスUSBホスト装置。
【請求項7】
前記基準値との比較は、現在のレートよりも上げるか否かを判断するものであることを特徴とする請求項5または6に記載のワイヤレスUSBホスト装置。
【請求項8】
前記データレートの調整は、所定の時間ごとに定期的に行なわれるものであることを特徴とする請求項1から7のいずれかに記載のワイヤレスUSBホスト装置。
【請求項9】
前記データレートは、ベンダーの独自の設定を格納するレジスタ群の領域内において設定されるものであることを特徴とする請求項1から8に記載のいずれかに記載のワイヤレスUSBホスト装置。
【請求項10】
前記伝送データのファイルの最後となる伝送データには、前記ファイルの最後の伝送データである旨を示すデータパターンが含まれており、
前記データパターンを検出した場合には、前記データレートの調整を行なわないことを特徴とする請求項1から9のいずれかに記載のワイヤレスUSBホスト装置。
【請求項11】
前記データレートの動的な調整は、アイソクロナス転送モードにおいて行なうことを特徴とする請求項1から10のいずれかに記載のワイヤレスUSBホスト装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−88000(P2010−88000A)
【公開日】平成22年4月15日(2010.4.15)
【国際特許分類】
【出願番号】特願2008−256854(P2008−256854)
【出願日】平成20年10月1日(2008.10.1)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】