(57)【特許請求の範囲】
【請求項１】
ネットワーク上のユニバーサルシリアルバス(USB)デバイスを動作させる方法であって、
前記ネットワークを介してホストデバイスから1つまたは複数のUSBフレームを受信するステップであって、前記1つまたは複数のUSBフレームが、ネットワークに関連付けられた通信プロトコルに基づいて1つまたは複数のデータパケット内にカプセル化される、受信するステップと、
前記通信プロトコルのクロック同期機構を使用して、前記USBデバイスのローカルクロック信号を前記ホストデバイスのクロック信号と同期させるステップと、
少なくとも部分的に、前記同期させたローカルクロック信号に基づいて、前記ホストデバイスによって送信されたUSBフレームの数を決定するステップと、
少なくとも部分的に、前記ホストデバイスによって送信されたUSBフレームの数に基づいて、前記1つまたは複数のUSBフレームを処理するステップと、を含む方法。
【請求項２】
前記通信プロトコルが、IEEE802.11ワイヤレスプロトコルに対応する、請求項1に記載の方法。
【請求項３】
前記ローカルクロック信号を同期させるステップが、
前記ホストデバイスから1つまたは複数のビーコンフレームを受信するステップであって、前記ビーコンフレームのうちの少なくとも1つが、タイミング同期機能(TSF)値を含む、受信するステップと、
前記受信したTSF値に基づいて前記ローカルクロック信号を調整するステップとを含む、請求項1に記載の方法。
【請求項４】
前記1つまたは複数のUSBフレームをデータバッファに記憶するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記ホストデバイスによって送信されたUSBフレームの前記数を決定するステップが、
少なくとも部分的に、前記データバッファに記憶された前記USBフレームの数に基づいて、ローカルフレームカウンタを更新するステップと、
前記ローカルフレームカウンタに基づいて、前記ホストデバイスによって送信されたUSBフレームの前記数を決定するステップとを含む、請求項4に記載の方法。
【請求項６】
前記ホストデバイスからフレームカウント値を受信するステップであって、前記フレームカウント値が、前記ホストデバイスによって送信されたUSBフレームの前記数を示す、受信するステップと、
前記ホストデバイスから媒体時間値を受信するステップであって、前記媒体時間値が、前記フレームカウント値が記録される時間を示す、受信するステップとをさらに含む、請求項5に記載の方法。
【請求項７】
前記フレームカウント値および前記媒体時間値が、前記USBフレームのうちの少なくとも1つにおいて共に受信される、請求項6に記載の方法。
【請求項８】
前記ホストデバイスによって送信されたUSBフレームの前記数を決定するステップが、
少なくとも部分的に、前記ローカルクロック信号、前記フレームカウント値、および前記媒体時間値に基づいて、前記ローカルフレームカウンタを前記ホストデバイス内のUSBフレームカウンタと同期させるステップをさらに含む、請求項6に記載の方法。
【請求項９】
前記1つまたは複数のUSBフレームを処理するステップが、
前記ローカルフレームカウンタが第1の閾値に達したとき、前記1つまたは複数のUSBフレームを処理するステップを含む、請求項8に記載の方法。
【請求項１０】
ネットワーク上のコンピューティングデバイスを動作させる方法であって、
前記ネットワークに関連付けられた通信プロトコルに基づいて、1つまたは複数のユニバーサルシリアルバス(USB)フレームを1つまたは複数のデータパケット内にカプセル化するステップと、
前記ネットワークを介して、前記1つまたは複数のカプセル化されたUSBフレームを含む、前記1つまたは複数のデータパケットを1つまたは複数のクライアントデバイスに送信するステップと、
前記1つまたは複数のクライアントデバイスが前記1つまたは複数のUSBフレームを処理することを可能にする同期データの組を前記1つまたは複数のクライアントデバイスに送信するステップであって、前記同期データの組が、前記1つまたは複数のクライアントデバイスがそれぞれのローカルクロック信号を前記コンピューティングデバイスのクロック信号と同期させることを可能にするクロック同期データを含む、送信するステップとを含む、方法。
【請求項１１】
前記クロック同期データを送信するステップが、
1つまたは複数のビーコンフレーム内の前記クロック同期データをブロードキャストするステップであって、前記クロック同期データが、タイミング同期機能(TSF)値を含む、ブロードキャストするステップを含む、請求項10に記載の方法。
【請求項１２】
前記1つまたは複数のクライアントデバイスに送信されたUSBフレームの数に基づいてUSBフレームカウンタを更新するステップをさらに含む、請求項10に記載の方法。
【請求項１３】
ユニバーサルシリアルバス(USB)デバイス内に設けられたプロセッサによって実行されたとき、前記USBデバイスに、請求項1から12のいずれか一項に記載の方法を行わせる、コンピュータ可読記憶媒体。
【請求項１４】
ネットワークを介してホストデバイスから1つまたは複数のUSBフレームを受信するための手段であって、前記1つまたは複数のUSBフレームが、前記ネットワークに関連付けられた通信プロトコルに基づいて、1つまたは複数のデータパケット内にカプセル化される、受信するための手段と、
前記通信プロトコルのクロック同期機構を使用して、前記USBデバイスのローカルクロック信号を前記ホストデバイスのクロック信号と同期させるための手段と、
少なくとも部分的に、前記同期させたローカルクロック信号に基づいて、前記ホストデバイスによって送信されたUSBフレームの数を決定するための手段と、
少なくとも部分的に、前記ホストデバイスによって送信されたUSBフレームの前記数に基づいて、前記1つまたは複数のUSBフレームを処理するための手段とを備える、ユニバーサルシリアルバス(USB)デバイス。
【請求項１５】
コンピューティングデバイスであって、
ネットワークに関連付けられた通信プロトコルに基づいて、1つまたは複数のユニバーサルシリアルバス(USB)フレームを1つまたは複数のデータパケット内にカプセル化するための手段と、
ネットワークを介して、1つまたは複数のクライアントデバイスに、前記1つまたは複数のカプセル化されたUSBフレームを含む、前記1つまたは複数のデータパケットを送信するための手段と、
前記ワイヤレスネットワークを介して、前記1つまたは複数のクライアントデバイスに、前記1つまたは複数のクライアントデバイスが前記1つまたは複数のUSBフレームを処理することを可能にする同期データの組を送信するための手段であって、前記同期データの組が、前記1つまたは複数のクライアントデバイスがそれぞれのローカルクロック信号を前記コンピューティングデバイスのクロック信号と同期させることを可能にするクロック同期データを含む、送信するための手段とを備える、コンピューティングデバイス。
【請求項１６】
処理要求を前記1つまたは複数のクライアントデバイスに送信するステップであって、前記処理要求が、前記1つまたは複数のUSBフレームの処理を開始させる命令を含む、送信するステップをさらに含む、請求項10に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、一般に通信システムに関し、詳細には、Wi-Fiチャネルを介してユニバーサルシリアルバス(USB)プロトコルパケットを送ることに関する。
【背景技術】
【０００２】
コンピュータ、外部周辺機器、およびネットワークを接続するための様々なインターフェース規格が、単純な接続性を高速で提供するために採用されている。たとえば、ユニバーサルシリアルバス(USB)は、PCやラップトップなどのコンピュータをマウス、キーボード、プリンタ、フラッシュドライブ、スピーカなどの実に様々な周辺デバイスに接続するのに一般に使用される高速シリアルバスプロトコルである。より具体的には、USBプロトコルは、信じられないほどに多様な範囲の周辺機器をそれらのコンピュータにプラグアンドプレイ式に接続するための機能強化された、使いやすいインターフェースをユーザに提供するために開発された。
【０００３】
最近になって、PC、ラップトップ、タブレットおよびスマートフォンなどの通信デバイスが物理的配線やケーブルなしで他の通信デバイスに接続することを可能にするためにワイヤレス通信プロトコルが開発された。たとえば、IEEE802.11規格は、RF信号を使用したワイヤレス通信を可能にする様々なWi-Fiプロトコルを定義している。たとえば、Wi-Fiアクセスポイントは、移動局(STA)などの1つまたは複数のクライアントデバイスが互いに通信するおよび/またはインターネットなどの外部ワイヤードネットワークに接続することを可能にするワイヤレスローカルエリアネットワーク(WLAN)を提供することができる。
【０００４】
したがって、ホストデバイス(たとえば、コンピュータ、ラップトップ、タブレット、スマートフォン)が、関連するWLANを使用していくつかのクライアントデバイス(たとえば、マウス、キーボード、プリンタ、フラッシュドライブ、スピーカ)とUSBデータを交換して、たとえば、ホストデバイスとクライアントデバイスとの間にケーブルを敷設する必要がなくなることは、望ましいことである。Bluetooth(登録商標)技術により、ホストデバイスとクライアントデバイスとの間でワイヤレス通信が可能となり得るが、WLAN通信はBluetooth(登録商標)通信よりもずっと範囲が広い。
【発明の概要】
【課題を解決するための手段】
【０００５】
本概要は以下の発明を実施するための形態においてさらに説明する選択された概念を簡略化した形で紹介するために提供される。本概要は、特許請求される主題の主要な特徴または不可欠な特徴を識別することが意図されていないし、特許請求される主題の範囲を限定することも意図されていない。
【０００６】
ネットワークを介してユニバーサルシリアルバス(USB)フレームを送信する方法が開示される。USBデバイスは、1つまたは複数のUSBフレームをホストデバイスからネットワークを介して受信し、1つまたは複数のUSBフレームは、ネットワークに関連付けられた通信プロトコルに基づいて1つまたは複数のデータパケット内にカプセル化される。USBデバイスは、通信プロトコルのクロック同期機構を使用して、ローカルクロック信号をホストデバイスのクロック信号とさらに同期させる。たとえば、通信プロトコルは、IEEE802.11ワイヤレスプロトコルに対応することができる。したがって、USBデバイスは、ホストデバイスから受信したタイミング同期機能(TSF)に基づいて(たとえば、1つまたは複数のビーコンフレームで)、そのローカルクロック信号を調整することができる。USBデバイスは、次いで、ホストデバイスによって送信されたUSBフレームの数を決定し、少なくとも部分的に、同期させたローカルクロック信号に基づいて、1つまたは複数のUSBフレームを処理する。
【０００７】
USBデバイスは、ホストデバイスから受信した1つまたは複数のUSBフレームを一時的に記憶するデータバッファを含むことができる。USBデバイスは、部分的に、データバッファに記憶されたUSBフレームの数に基づいて、ローカルフレームカウンタをさらに更新することができる。したがって、USBデバイスは、ローカルフレームカウンタに基づいて、ホストデバイスによって送信されたUSBフレームの数を決定することができる。USBデバイスは、次いで、ローカルフレームカウンタが第1の閾値に達したとき、データバッファに記憶されたUSBフレームの処理を開始することができる。
【０００８】
いくつかの実施形態では、USBデバイスは、ホストデバイスによって送信されたUSBフレームの数を示すフレームカウント値をホストデバイスから受信することができる。USBデバイスは、フレームカウント値が記録される時間を示す、フレームカウント値に関連した媒体時間値を受信することもできる。たとえば、フレームカウント値および媒体時間値は、USBフレームのうちの少なくとも1つにおいて共に受信することができる。USBデバイスは、部分的にローカルクロック信号、フレームカウント値、および媒体時間値に基づいて、そのローカルフレームカウンタをホストデバイス内のUSBフレームカウンタとさらに同期させることができる。
【０００９】
他の実施形態では、コンピューティングデバイスは、ネットワークに関連付けられた通信プロトコルに基づいて、1つまたは複数のUSBフレームを1つまたは複数のデータパケット内にカプセル化することができる。コンピューティングデバイスは、次いで、カプセル化されたUSBフレームを含む、1つまたは複数のデータパケットを1つまたは複数のデバイスにネットワークを介して送信することができる。コンピューティングデバイスは、同期データの組を1つまたは複数のデバイスにさらに送信して、1つまたは複数のデバイスの各々が1つまたは複数のUSBフレームを処理することを可能にすることができる。
【００１０】
同期データは、1つまたは複数のデバイスの各々が、それぞれのローカルクロック信号をコンピューティングデバイスのクロック信号と同期させることを可能にするクロック同期データを含むことができる。たとえば、通信プロトコルは、802.11ワイヤレスプロトコルに対応することができる。したがって、コンピューティングデバイスは、1つまたは複数のビーコンフレームとともにクロック同期データをブロードキャストすることができ、クロック同期データはTSF値を含む。
【００１１】
同期データは、フレームカウント値と、フレームカウント値に関連付けられた媒体時間値とをさらに含むことができる。たとえば、コンピューティングデバイスは、1つまたは複数のデバイスに送信されたUSBフレームの数に基づいて、USBフレームカウンタを更新することができる。フレームカウント値は、USBフレームカウンタの現在の値を示すことができ、一方、媒体時間値は、フレームカウント値が記録される時間を示すことができる。いくつかの実施形態では、フレームカウント値および媒体時間値は、共に、1つまたは複数のUSBフレームのうちの少なくとも1つのフレーム内にカプセル化することができる。
【００１２】
いくつかの実施形態では、コンピューティングデバイスは、1つまたは複数のデバイスに処理要求をさらに送信することができる。処理要求は、1つまたは複数のUSBフレームの処理を開始させる命令を含むことができる。たとえば、処理要求は、フレームカウント閾値を含むことができる。1つまたは複数のデバイスは、コンピューティングデバイスによって送信されたUSBフレームの数がフレームカウント閾値に等しいとき、1つまたは複数のUSBフレームの処理を開始することになっている。
【００１３】
本実施形態は、例として示され、添付の図面の図によって限定されることは意図されていない。
【図面の簡単な説明】
【００１４】
【図１】いくつかの実施形態による、ネットワークデバイスのブロック図である。
【図２】いくつかの実施形態による、ワイヤレスUSB通信システムを示す図である。
【図３】USBクライアントデバイスをホストデバイスとワイヤレスで同期させることに伴う潜在的な問題を示す例示的なタイミング図である。
【図４Ａ】いくつかの実施形態による、例示的なワイヤレスUSB同期動作を示すシーケンス図である。
【図４Ｂ】いくつかの実施形態による、例示的なワイヤレスUSB同期動作を示すシーケンス図である。
【図５】いくつかの実施形態による、USBクライアントデバイスを動作させる例示的な方法を示す例示的なフローチャートである。
【図６】いくつかの実施形態による、USBホストデバイスを動作させる例示的な方法を示す例示的なフローチャートである。
【図７】いくつかの実施形態による、ワイヤレスUSB同期動作を示す例示的なフローチャートである。
【図８】いくつかの実施形態による、USB使用可能クライアントデバイスのブロック図である。
【図９】いくつかの実施形態による、USB使用可能ホストデバイスのブロック図である。
【発明を実施するための形態】
【００１５】
図面の図全体を通して同じ参照番号は対応する部分を表す。
【００１６】
本実施形態は、簡単にするだけのために、WLAN通信プロトコルを使用してUSBデータを交換する文脈で以下に説明する。本実施形態は、他の適切なワイヤレス規格にわたってUSBデータの交換に等しく適用可能であると理解されたい。本明細書では、WLANおよびWi-Fiという用語は、IEEE802.11規格、Bluetooth(登録商標)、HiperLAN(主にヨーロッパで使用されるIEEE802.11規格に匹敵するワイヤレス規格の組)および相対的に狭い無線伝搬範囲を有する他の技術によって支配される通信を含むことができる。本明細書では、「ホストデバイス」という用語は、USBデータを他のUSB使用可能デバイスに送信することができる(たとえば、ワイヤレス通信チャネルを介して)任意のUSB使用可能デバイスを表すのに本明細書では使用することができる。さらに、「クライアントデバイス」という用語は、USBデータをホストデバイスから受信することができる(たとえば、ワイヤレス通信チャネルを介して)任意のUSB使用可能デバイスを表すのに本明細書では使用することができる。いくつかの実施形態では、ホストデバイスは、クライアントデバイスとして動作可能でもあり得、逆も同様であることに留意されたい。
【００１７】
以下の説明では、本開示の完全な理解を与えるために具体的な構成要素、回路、および処理の例など、数多くの具体的な詳細が記載される。本明細書では「結合された」という用語は、1つまたは複数の介在構成要素または回路に直接接続されるか、またはそれらを介して接続されることを意味する。また、以下の説明では、説明の目的で、本実施形態の完全な理解を与えるために具体的な名称が記載される。しかし、これらの具体的な詳細が本実施形態を実施するのに必要でなくてもよいことは当業者には明らかであろう。他の場合には、本開示が不明瞭になることを回避するために、周知の回路およびデバイスをブロック図形式で示す。本明細書で説明する様々なバスを介して与えられる信号のいずれも、他の信号で時分割多重化され、1つまたは複数の共通バスを介して与えられ得る。さらに、回路要素間またはソフトウェアブロック間の相互接続は、バスとしてまたは単一信号線として示され得る。バスの各々は代替として単一信号線であってもよく、単一信号線の各々は代替としてバスであってもよく、単一信号線またはバスは構成要素間の通信のための無数の物理的または論理的機構のうちの任意の1つまたは複数を表し得る。本実施形態は、本明細書に説明する具体的な例に限定されるものと見なしてはならず、むしろ、それらの範囲内に添付の特許請求の範囲によって定義されるすべての実施形態を含むものと見なすべきである。
【００１８】
上述のように、ホストデバイス(たとえば、コンピュータ、ラップトップ、タブレット、スマートフォンなど)が、対応するWLANを介してUSBデータを1つまたは複数のクライアントデバイス(たとえば、スピーカ、プリンタ、キーボード、マウスなど)と交換することが望ましい。WLANを介してUSBデータを1つまたは複数のクライアントデバイスと交換することに伴う問題のうちの少なくとも1つは、ワイヤード接続の存在なしでクライアントデバイス内のクロックおよび/またはカウンタをホストデバイス内のクロックおよび/またはカウンタと同期させることである。たとえば、USB規格は、関連するUSBケーブルを介した通信プロトコルを定義しており、典型的には、USBケーブルを介したクロックおよびカウンタ情報の交換を利用して、クライアントデバイス内のクロックおよび/またはカウンタが、ホストデバイス内のクロックおよび/またはカウンタと同期したままであることを確実にする。したがって、WLAN通信は、ワイヤード接続(たとえば、USBケーブル)を使用しないので、USB規格によって定義されたクロック同期技法は、WLANに関連付けられたワイヤレスチャネルを介してUSBデータを送信しようとするとき、利用可能でない可能性がある。
【００１９】
本明細書における本開示では、7つの論理層を含む開放型システム間相互接続(OSI)モデルを参照することができる。すなわち、層1は物理層、層2はデータリンク層、層3はネットワーク層、層4は輸送層、層5はセッション層、層6はプレゼンテーション層、および層7はアプリケーション層である。OSI層は、階層が高ければ高いほど、エンドユーザに近く、階層が低ければ低いほど、物理チャネルに近くなる。たとえば、OSIモデル階層の最上部にアプリケーション層があり、エンドユーザのソフトウェアアプリケーションと直接相互作用する。OSIモデル階層の最下部に物理層があり、ネットワークデバイスと物理的通信媒体との関係を定義する。
【００２０】
物理層は、物理媒体の電気および物理仕様を提供し、媒体を介して送信/受信されるべきデータを変調/復調することができるトランシーバを含む。データリンク層は、デバイス間のデータ伝送のためにアドレス指定およびチャネルアクセス制御機構などの機能的および/または手続き的詳細を提供する。データリンク層は、論理リンク制御(LLC)層と、媒体アクセス制御(MAC)層との2つの副層を含む。
【００２１】
MAC層とPHY層との間にインターフェースが存在して、2つの層の間の情報の交換を容易にする。このインターフェースは、MAC層がデータ伝送に使用される物理媒体に関して不可知(および、したがって、採用された特定のPHYデバイスに関して不可知)であるので、媒体独立インターフェース(MII)と呼ばれる。このようにして、MIIにより、所与のMACデバイスは実に様々なPHYデバイスに使用することが可能である。MIIという用語は、種類全体を表すことに加えて、特有のタイプの媒体独立インターフェースを表すこともできる。本明細書では、「媒体アクセスインターフェース」および「MII」という用語は、特に他の記述がない限り、そのようなインターフェースの種類全体を表す。MIIの例には、接続機構インターフェース(AUI)、MII、低減されたMII、ギガビットMII(GMII)、低減されたGMII、シリアルGMII(SGMII)、クアッドSGMII(QSGMII)、10GMII、およびソース同期シリアルMII(S3MII)が含まれる。
【００２２】
図1は、いくつかの実施形態による、ネットワークデバイス100のブロック図である。具体的には、ネットワークデバイス100は、媒体M1(たとえば、ワイヤレスチャネル)を介して別のデバイス(簡単にするために図示せず)と通信することができ得る。ネットワークデバイス100は、プロセッサ110と、メモリ120と、PHYデバイス130と、MACデバイス140とを含む。PHYデバイス130は、ワイヤレス媒体M1に結合されたトランシーバ135を含む。トランシーバ135はPHYデバイス130に含まれるものとして図1に示すが、トランシーバ135は独立型のデバイスまたは集積回路でもよい。メモリ120は、たとえば、EEPROMまたはフラッシュメモリを含む、任意の適切なメモリ素子またはデバイスでよい。プロセッサ110は、たとえば、メモリ120に記憶された1つまたは複数のソフトウェアプログラムのスクリプトまたは命令を実行することができる任意の適切なプロセッサでよい。
【００２３】
PHYデバイス130およびMACデバイス140は各々、信号路160の組を介して、それぞれ、2つのデバイスの間で信号を送信するための媒体独立インターフェース(MII)150-1および150-2を含む。いくつかの実施形態では、MII150-1は、それぞれ、MACデバイス140との間でデータを送信および受信するための第1および第2のPHY側差動トランジスタ対(簡単にするために図示せず)を含むことができ、MII150-2は、それぞれ、PHYデバイス130との間でデータを送信および受信するための第1および第2のMAC側差動トランジスタ対(簡単にするために図示せず)を含むことができる。したがって、MII150-1は本明細書ではPHY側MIIと呼ぶことができ、MII150-2は本明細書ではMAC側MIIと呼ぶことができる。
【００２４】
MACデバイス140は、OSIMAC副層の機能を実装する任意のデバイスまたは集積回路でもよく、独立型のデバイスでもよく、またはネットワークデバイス100中に統合されてもよい。同様に、PHYデバイス130は、OSI物理層の機能を実装する任意のデバイスまたは集積回路でもよく、独立型のデバイスでもよく、またはネットワークデバイス100中に統合されてもよい。
【００２５】
データ送信動作の間、ネットワークデバイス100上のエンドユーザソフトウェアアプリケーションが媒体M1を介してデータを別のデバイスに送信するとき、プロセッサ110はOSIモデルの最上層に従ってデータを処理し、次いで、データをMACデバイス140を通じてPHYデバイス130に送信する。次いで、PHYデバイス130は、トランシーバ135を介してデータを媒体M1上に送信する。
【００２６】
図2は、いくつかの実施形態による、通信システム200を示す。システム200は、通信チャネル230を使用して互いに通信することができるホストデバイス210と3つのクライアントデバイス220(1)〜220(3)とを含むように示される。いくつかの実施形態では、通信チャネル230は、他の適切なワイヤレス通信プロトコルが使用され得るが、IEEE802.11規格により通信を容易にするワイヤレス(たとえば、WLANまたはWi-Fi)チャネルでよい。他の実施形態では、通信チャネル230は、ワイヤードリンク(たとえば、10GBASE-T Ethernet(登録商標)チャネル)でよい。さらに、簡単にするために、3つのクライアントデバイス220(1)〜220(3)が図2に示されるが、システム200は通信チャネル230を介してホストデバイス210に接続された任意の数のクライアントデバイス220を含み得る。
【００２７】
コンピュータ、ラップトップ、タブレット、スマートフォン、または他の適切なコンピューティングまたは通信デバイスであり得るホストデバイス210は、プロセッサ211と、USBコントローラ212と、プロトコル適応層(PAL)ステーション管理エンティティ(SME)213とWLANインターフェース214とを含む。プロセッサ211は、USBコントローラ212に結合され、USBコントローラ212および/またはホストデバイス210の他の構成要素の動作を制御することができる。USBコントローラ212は、プロセッサ211とPAL SME213との間のUSB通信を容易にすることができる任意の適切なUSBコントローラでよい。少なくともいくつかの実施形態では、USBコントローラ212は、USB通信の符号化機能を提供するために物理符号化副層(PCS)回路(簡単にするために図示せず)を含み得るまたはそれに関連付けられ得る。Wi-Fiギガビットアライアンス(WGA)によって定義されたプロトコルにより動作することができるPAL SME213は、ワイヤレスチャネル230を介してホストデバイス210とクライアントデバイス220(1)〜220(3)との間のUSBデータの交換を可能にすることができる。PAL SME213に結合されるWLANインターフェース214は、ワイヤレスチャネル230を介してクライアントデバイス220(1)〜220(3)との間でデータを送信および受信するためにトランシーバを含むことができる。
【００２８】
クライアントデバイス220は、任意の適切なUSB周辺デバイス(たとえば、スピーカ、プリンタ、キーボード、マウスなど)でよい。簡単にするために図2には示していないが、クライアントデバイス220(1)〜220(3)の各々は、ワイヤレスチャネル230を介してUSBデータのワイヤレス交換を容易にするために、プロセッサと、USBコントローラと、PAL SMEと、WLANインターフェースとを含むことができる。
【００２９】
ホストデバイス210がクライアントデバイス220(1)〜220(3)にアイソクロナスUSBデータを正確な時点で(たとえば、互いに同時に)提供(render)させる場合、ホストUSBコントローラ212内のUSBフレームカウンタは、クライアントデバイス220(1)〜220(3)内のUSBフレームカウンタと同期させなければならない。たとえば、USBデータがクライアントデバイス(たとえば、スピーカとして働く)によって再生されるべきオーディオ情報を含む場合、複数のデバイス220(1)〜220(3)から同時にオーディオ情報の再生を可能にすることが望ましいことであり得る。したがって、クライアントデバイス220(1)〜220(3)をホストデバイス210と、および/または互いに、同期させることは望ましいことであり得る。
【００３０】
いくつかの実施形態では、ホストデバイス210とクライアントデバイス220(1)〜220(3)との間の通信は、双方向でよい。たとえば、場合によっては、クライアントデバイス220(1)〜220(3)の各々は、ホストデバイスとして働くことができ、ホストデバイス210は、クライアントデバイスとして働くことができる。より具体的には、ホストデバイス210およびクライアントデバイス220(1)〜220(3)は、ワイヤレス通信チャネル(たとえば、ワイヤレスチャネル230)を介してUSBフレームを送信し受信することが両方できる実質的に同様のコンピューティングデバイスであり得る。
【００３１】
図3は、クライアントデバイス220(1)〜220(3)をホストデバイス210と同期させることに伴う潜在的な問題を示す例示的なタイミング図300である。図2も参照すると、USBコントローラ212がプロセッサ211からデータを受信するとき、USBコントローラ212は、タイムスタンプ(Tp)をデータに添付し、後でクライアントデバイス220(1)〜220(3)に送信するためにデータをパケット中にカプセル化することができる。しかし、ホストデバイス210のMAC層とPHY層との間(たとえば、USBコントローラ212とWLANインターフェース214との間)には伝送遅延(Td)があり得る。データパケットが異なると一定でない可能性があるこの伝送遅延により、ホストデバイス210から送信されたデータパケットを受信し、処理しおよび/または表示するクライアントデバイス220(1)〜220(3)のうちの1つまたは複数に関連付けられたタイミングエラーが起こり得る。
【００３２】
このタイミング問題の1つの解決策は、ホストデバイス210内のデータパケットを解析し、オリジナルのタイムスタンプ(Tp)を抽出し、伝送遅延(Td)を計算し、次いで、オリジナルのタイムスタンプを更新して、伝送遅延を反映することを必要とし得る。ホストデバイス210内のディープパケットインスペクション(DPI)動作が関与し得るこのプロセスは、貴重な処理資源を消費し、時間のかかるものであり得る。さらに、多くの既存のホストデバイスは、USBコントローラ212から受信したUSBデータパケット/フレーム上のDPI動作を実行することができる回路またはソフトウェアモジュールを含まない可能性がある。
【００３３】
いくつかの実施形態では、ホストデバイス210および/またはクライアントデバイス220(1)〜220(3)は、クライアントデバイス220(1)〜220(3)をホストデバイス210に同期させるためにIEEE802.11規格によって定義されたWLAN動作を利用することができる。より具体的には、ホストデバイス210は、クライアントデバイス220(1)〜220(3)のカウンタおよび/またはクロックが、確実にホストデバイス210のそれぞれのカウンタおよび/またはクロックと同期化される(および同期させたままである)ようにするために、IEEE802.11規格によって具現化される技法を採用することができる。たとえば、図4A〜図4Bは、いくつかの実施形態による、例示的なワイヤレスUSB同期動作を示すシーケンス図である。
【００３４】
たとえば、図4Aを参照すると、ホストデバイス210は、クライアントデバイス220(1)〜220(3)への(および/または、からの)データの送信(および/または受信)を計時するのに使用され得る内部クロック信号(ClkH)を生成する。同様に、クライアントデバイス220(1)〜220(3)の各々は、ホストデバイス210からの(および/または、への)データの受信(および/または送信)を計時するのに使用され得る、対応するローカルクロック信号(Clk1〜Clk3)を生成することができる。いくつかの実施形態では、ホストデバイス210は、ローカルクロック信号Clk1〜Clk3をホストクロック信号ClkHと同期させるために、クロック同期(Clk_Sync)データをクライアントデバイス220(1)〜220(3)の各々に送信することができる。クライアントデバイス220(1)〜220(3)の各々は、次いで、そのローカルクロックをホストクロックClkHに整合させるために(たとえば、それぞれのタイミングオフセットをローカルクロックClk1〜Clk3に適用することにより)、Clk_Syncデータを使用することができる。
【００３５】
いくつかの実施形態では、クロック同期動作は、通信チャネル230に関連付けられた通信プロトコルによってすでに提供されている1つまたは複数のクロック同期機構または技法を使用して実行され得る。たとえば、ホストクロック信号ClkHおよびローカルクロック信号Clk1〜Clk3は、IEEE802.11ワイヤレスプロトコルによって定義されたタイミング同期機能(TSF)に基づいて生成され得る。あるいは、および/または、さらに、ホストクロック信号ClkHは、特定の適用例に所望される精度のレベルにより、他のクロック同期技法(たとえば、802.1AS、802.11v、および/または802.11mc規格によって定義されたクロック同期技法など)を使用して、ローカルクロック信号Clk1〜Clk3と同期され得る。
【００３６】
TSFタイマは、マイクロ秒単位でインクリメントする(たとえば、「時を刻む」)係数264カウンタであり得、したがって、264=102,400マイクロ秒の最大カウント値を有する(他の適切なタイマ、クロック、および/またはカウンタを使用することができるが)。いくつかの実施形態では、ホストデバイス210は、そのTSFタイマ値を1つまたは複数のビーコンフレームにおいて、クライアントデバイス220(1)〜220(3)にブロードキャストすることができる。ビーコンフレームを受信すると、クライアントデバイス220(1)〜220(3)の各々は、それ自体のローカルTSFタイマを、受信したTSFタイマ値に設定することができる。これによって、クライアントデバイス220(1)〜220(3)のローカルTSFタイマ(たとえば、Clk1〜Clk3)が確実にホストデバイス210のTSFタイマ(たとえば、ClkH)と同期されるようになる。
【００３７】
いくつかの実施形態では、Clk_Syncデータは、ホストデバイス210とクライアントデバイス220(1)〜220(3)との間でクロック同期を維持するために周期的にブロードキャストおよび/または送信され得る。たとえば、通信チャネル230がWi-Fiチャネルである場合、802.11仕様は、ホストデバイス210が周期的にビーコンフレームをクライアントデバイス220(1)〜220(3)にブロードキャストする、クロック同期機構を定義している。したがって、クライアントデバイス220(1)〜220(3)およびホストデバイス210は、ビーコン間隔(たとえば、ビーコンフレーム内に設けられる)によって離隔される一連のターゲットビーコン送信時間(TBTT)を確立することができる。クライアントデバイス220(1)〜220(3)は、次いで、新たなビーコンフレームを受信するたびにそれらのローカルTSFタイマをホストデバイス210のTSFタイマと再同期させることができる。
【００３８】
ローカルクロック信号Clk1〜Clk3がホストクロック信号ClkHと同期すると、ホストデバイス210は、通信チャネル230を介して、カプセル化されたUSBフレームをクライアントデバイス220(1)〜220(3)に送信し始めることができる。たとえば、USBフレームは、普通ならUSBケーブルを介してクライアントデバイス220(1)〜220(2)のうちの1つまたは複数に送信されるはずのUSBデータに対応することができる。代わりに、いくつかの実施形態では、USBフレームは、ワイヤレス通信プロトコルに基づいて、通信チャネル230を介して送信されるべき1つまたは複数のデータパケット内にカプセル化され(たとえば、に書き込まれ、および/または、によって運ばれ)得る。クライアントデバイス220(1)〜220(3)は、オリジナルのUSBフレームを取り戻すために受信したデータパケットのカプセル開放を行うことができる。いくつかの実施形態では、クライアントデバイス220(1)〜220(3)の各々は、ホストデバイス210から受信したUSBフレームごとにローカルフレームカウンタ(たとえば、Cnt1〜Cnt3)を更新することができる。
【００３９】
たとえば、図4Bを参照すると、ホストデバイス210は、ホストデバイス210のフレームカウンタCntHをクライアントデバイス220(1)〜220(3)のローカルフレームカウンタCnt1〜3と同期させるために、それぞれ、カウント値に関連付けられたフレームカウント値(F_Count)および媒体時間(M_Time)を識別する情報をクライアントデバイス220(1)〜220(3)に送信することができる。フレームカウンタCntHは、ホストデバイス210によって送信されたUSBフレームの数を示すことができる。たとえば、ホストデバイス210は、クライアントデバイス220(1)〜220(3)に送信されたUSBフレームごとにフレームカウンタCntHを更新することができる。
【００４０】
F_Count値は、任意の所与の時間にホストデバイス210によって送信されたUSBフレームの総数(たとえば、ホストフレームカウンタCntHに基づく)を示すことができる。より具体的には、M_Time値は、F_Count値が決定されたおよび/または発信データパケットおよび/またはUSBフレーム内に埋め込まれた特定の時間(たとえば、ホストクロック信号ClkHに基づく)を指定することができる。いくつかの実施形態では、M_Time値は、各データパケットおよび/またはホストデバイス210によって送信されたフレーム内に埋め込まれた送信タイムスタンプ(たとえば、802.11仕様によって定義された)に対応することができる。いくつかの実施形態では、F_CountおよびM_Time値は、実質的に同じ時間で符号化することができ、したがって、互いに「対にする」ことができる。たとえば、F_CountおよびM_Time値は、1つまたは複数のUSBフレーム内にカプセル化され得、他のカプセル化されたUSBデータが提供され得る。あるいは、F_CountおよびM_Time値は、USBデータとは別個に送信され得る(たとえば、独立した管理フレームの一部として)。
【００４１】
ローカルフレームカウンタCnt1〜Cnt3の各々は、それぞれ、F_Count値、M_Time値、および対応するローカルクロック信号Clk1〜Clk3に基づいてホストフレームカウンタCntHと同期され得る。たとえば、フレームカウント同期動作は、以下の式に基づいて任意のクライアントデバイス220に対して実行され得る。
【００４２】
【数１】
0006333963.tif 000002
【００４３】
したがって、ローカルクロック信号Clk1〜Clk3の各々をホストクロック信号ClkHと同期させた後(たとえば、図4Aに関して上に説明したように)、ホストデバイス210によるF_Count値の符号化とクライアントデバイス220(1)〜220(3)のうちの1つによるその受信との間で経過した時間の量は、F_Count値が受信される時間(たとえば、ローカルクロック信号Clk1〜Clk3に基づいて)を計り、M_Time値を減算することによって決定され得る。この経過時間の間、ホストデバイス210によって送信された可能性がある追加のUSBフレームの数は、経過時間をホストデバイス210の伝送速度(たとえば、クロックサイクル別に送信され得るUSBフレームの総数)で乗算することによって決定され得る。結果は、次いで、ホストカウンタCntHの現在のカウント値を決定するためにF_Count値に追加され得る。
【００４４】
クライアントデバイス220(1)〜220(3)は、次いで、続いて受信したUSBフレームに基づいてそれらのそれぞれのローカルカウンタCnt1〜3を更新することができる。しかし、個々のクライアントデバイス220(1)〜220(3)がUSBフレームを受信する速度は異なり得ることに留意されたい。たとえば、ホストデバイス210によるデータの送信の遅延、通信チャネル230に沿った伝搬遅延、および/またはマルチパス状態により、クライアントデバイス220(1)〜220(3)の各々は、異なる時間にUSBフレームを受信することができる。したがって、任意の所与の時間において、クライアントデバイス220(1)〜220(3)のうちの1つによってバッファリングされたUSBフレームの数は、別のクライアントデバイスによってバッファリングされたUSBフレームの数とは異なり得る。たとえば、特定の時間Tにおいて、ホストカウンタCntHは、Nのカウント値を有することができ、ローカルカウンタCnt1は、Nのカウント値を記憶することができ、ローカルカウンタCnt2は、N-1のカウント値を記憶することができ、ローカルカウンタCnt3は、N-2のカウント値を記憶することができる。いくつかの実施形態では、ホストデバイス210は、ホストカウンタCntHとローカルカウンタCnt1〜Cnt3の各々との間の同期を維持するために、新たなF_CountおよびM_Time値をクライアントデバイス220(1)〜220(3)に周期的に送信することができる。これによって、ローカルフレームカウンタCnt1〜Cnt3の各々は、クライアントデバイス220(1)〜220(3)のそれぞれの1つによって受信されおよび/またはバッファリングされたUSBフレーム数だけでなく、ホストデバイス210によって送信されたフレームの総数のカウントを維持することが可能になる。
【００４５】
いくつかの実施形態では、ホストデバイス210は、特定のフレームカウントに基づいて、受信したUSBフレームを処理し、および/または提供することを開始する命令とともに、処理要求メッセージをクライアントデバイス220(1)〜220(3)のうちの1つまたは複数に送信することができる。たとえば、クライアントデバイス220(1)〜220(3)の各々は、ホストデバイス210から受信したUSBフレームをバッファリングする内部記憶素子を含むことができる。クライアントデバイス220(1)〜220(3)は、ホストデバイス210によって、バッファリングされたUSBフレームの処理または提供を開始するように命令されるまで、USBフレームをバッファリングすることを継続することができる。いくつかの実施形態では、処理要求メッセージは、ローカルフレームカウンタが特定のフレームカウント閾値に達した後、クライアントデバイス220(1)〜220(3)にUSBフレームの処理を開始するように命令することができる。しかし、上に説明したように、ローカルフレームカウンタCnt1〜Cnt3は、ホストカウンタCntHに対してドリフトすることがある。それにもかかわらず、クライアントデバイス220(1)〜220(3)の各々が実質的に同じ時間に(たとえば、クライアントデバイス220(1)〜220(3)の各々が同じオーディオ信号を再生するように構成されたスピーカである場合のように)、記憶されたUSBフレームの処理または提供を開始することは、望ましいことであり得る。したがって、ローカルフレームカウンタCnt1〜Cnt3の各々をホストカウンタCntHと同期させることによって、複数のクライアントデバイス220(1)〜220(3)が同時にUSBの処理を開始することが可能になり得る。
【００４６】
通信チャネル230用に設けられた既存のクロックプロトコルを活用することによって、システム200は、ディープパケットインスペクションを必要とせずにホストデバイス210とクライアントデバイス220(1)〜220(3)との間で同期させたUSBフレームカウントを効率的におよび正確に維持することができる。その上、本実施形態によれば、クライアントデバイス220(1)〜220(3)の各々は、クライアントデバイス220(1)〜220(3)が異なる時間においてそのような値を受信しても、F_CountおよびM_Time値を使用して、ホストデバイス210の現在のフレームカウントを決定することができる。
【００４７】
図5は、いくつかの実施形態による、USBクライアントデバイスを動作させる例示的な方法500を示す例示的なフローチャートである。たとえば、方法500は、図2および図4A〜図4Bに関して上に説明したクライアントデバイス220のうちのいずれかによって実装され得る。具体的には、クライアントデバイス220は、ネットワークを介して1つまたは複数のUSBフレームをホストデバイス210から受信することができる(501)。いくつかの実施形態では、1つまたは複数のUSBフレームは、ネットワークに関連付けられた通信プロトコルに基づいて、1つまたは複数のデータパケット内にカプセル化され得る。クライアントデバイス220は、1つまたは複数のUSBフレームを取り戻すために、受信したデータパケットのカプセル開放を行うことができる。さらに、いくつかの実施形態では、クライアントデバイス220は、受信したUSBフレームをデータバッファに記憶することができる。
【００４８】
クライアントデバイス220は、そのローカルクロック信号をホストデバイスのクロック信号とさらに同期させる(502)。具体的には、クライアントデバイス220は、通信プロトコルのクロック同期機構に基づいて、そのローカルクロック信号をホストクロック信号と同期させることができる。たとえば、ホストデバイス210は、そのローカルクロック信号を調整するためにクライアントデバイス220によって使用され得るクロック同期(Clk_Sync)データを周期的に送信またはブロードキャストすることができる。802.11ワイヤレスネットワークでは、クロック同期データは、1つまたは複数のビーコンフレームにおいて、ホストデバイス210によってブロードキャストされたTSF値に対応することができる。クライアントデバイス220は、次いで、ホストデバイス210のTSF値に一致するように(たとえば、図4Aに関して上に説明するように)それ自体のTSF値を(必要に応じ)調整することができる。
【００４９】
クライアントデバイス220は、次いで、ホストデバイス210によって送信されたUSBフレームの数を決定する(503)。具体的には、クライアントデバイス220は、同期させたローカルクロック信号に基づいて、ホストデバイス210によって送信されたUSBフレームの数を決定することができる。たとえば、クライアントデバイス220は、ホストデバイス210から受信したUSBフレームごとにローカルフレームカウンタを更新することができる。しかし、上に説明したように、クライアントデバイス220によって受信されたUSBフレームの数は、ホストデバイス210によって送信されたUSBフレームの数に必ずしも一致するとは限らない可能性がある(たとえば、ドリフトおよび/または中止したデータパケットにより)。したがって、いくつかの実施形態では、ローカルフレームカウンタは、ホストデバイス210によって送信された同期データに基づいて、ホストデバイス210内のUSBフレームカウンタを追跡することができる。同期データは、たとえば、フレームカウント(F_Count)値および媒体時間(M_Time)値を含むことができる。より具体的には、F_Count値は、M_Time値によって指定された時間にホストデバイス210によって送信されたUSBフレームの数を示すことができる。クライアントデバイス220は、次いで、M_Time値によって示された時間以来送信された追加のUSBフレームの数を決定するために、同期させたローカルクロック信号を使用することができる(たとえば、図4Bに関して上に説明したように)。いくつかの実施形態では、クライアントデバイス220は、そのローカルフレームカウンタをホストデバイス210のフレームカウンタと周期的に再同期させることができる。
【００５０】
最後に、クライアントデバイス220は、ホストデバイス210によって送信されたUSBフレームの数に基づいて、受信したUSBフレームを処理することができる(504)。たとえば、ホストデバイス210は、ローカルフレームカウンタが特定のフレームカウント閾値に達すると、クライアントデバイス220に、受信したUSBフレームの処理および/または提供を開始するように命令することができる。ローカルフレームカウンタは、ホストフレームカウンタと同期され得るので、クライアントデバイス220は、ホストデバイス210によって示されたときにいつでもUSBフレームの処理を開始することができる。これにより、複数のクライアントデバイス220が、そのときに各クライアントデバイス220によって実際に受信されたUSBフレームの数にかかわらず、実質的に同時にUSBフレームの処理を開始することが可能になり得る。
【００５１】
図6は、いくつかの実施形態による、USBホストデバイスを動作させる例示的な方法600を示す例示的なフローチャートである。たとえば、方法600は、図2および図4A〜4Bに関して上に説明したホストデバイス210によって実装され得る。具体的には、ネットワーク上のホストデバイス210は、ネットワークに関連付けられた通信プロトコルに基づいて、USBフレームをデータパケット内にカプセル化することができる(601)。上に説明したように、USBフレームは、普通であればUSBケーブルを介して1つまたは複数のクライアントデバイス220に送信されるはずのUSBデータに対応することができる。ホストデバイス210は、たとえば、対応するUSBデータを特定のタイプの通信チャネルを介して送信されるべき1つまたは複数のデータパケット内に埋め込むことによって、USBフレームをカプセル化することができる。
【００５２】
ホストデバイス210は、次いで、ネットワークを介して、カプセル化されたUSBフレームを含むデータパケットを1つまたは複数のクライアントデバイス220に送信することができる(602)。たとえば、ネットワークは、IEEE802.11規格によって定義されたWi-Fiネットワークに対応することができる。したがって、ホストデバイス210は、1つまたは複数の802.11ワイヤレスプロトコルに基づいて、データパケットを1つまたは複数のクライアントデバイス220に送信することができる。いくつかの実施形態では、ホストデバイス210は、同時に、データパケットを複数のクライアントデバイス220に送信することができる。さらに、いくつかの実施形態では、ホストデバイス210は、1つまたは複数のクライアントデバイス220に送信されたUSBフレームの数の経過を追跡するために、USBフレームカウンタを含むことができる。たとえば、ホストデバイス210は、送信されたUSBフレームごとに、そのUSBフレームカウンタを更新することができる。
【００５３】
ホストデバイス210は、各クライアントデバイス220がUSBフレームを処理することを可能にするために、同期データの組を1つまたは複数のクライアントデバイス220にさらに送信することができる(603)。同期データは、たとえば、クロック同期(Clk_Sync)データ、フレームカウント(F_Count)値、および/または媒体時間(M_Time)値を含むことができる。より具体的には、Clk_Syncデータは、ホストデバイス210のクロック信号を1つまたは複数のクライアントデバイス220のローカルクロック信号と同期させるのに使用され得る(たとえば、図4Aに関して上に説明したように)。いくつかの実施形態では、Clk_Syncデータは、ワイヤレス通信プロトコルに関連付けられたクロック同期機構によって提供され得る。F_CountおよびM_Time値は、ホストデバイス210のUSBフレームカウンタを1つまたは複数のクライアントデバイス220のローカルフレームカウンタと同期させるのに使用され得る(たとえば、図4Bに関して上に説明したように)。上に説明したように、F_Count値は、M_Time値によって指定された時間にホストデバイス210によって送信されたUSBフレームの数を示すことができる。いくつかの実施形態では、ホストデバイス210は、1つまたは複数のクライアントデバイス220の各々との同期を維持するために、更新された同期データを周期的に送信することができる。
【００５４】
図7は、いくつかの実施形態による、ワイヤレスUSB同期動作700を示す例示的なフローチャートである。たとえば、図4A〜図4Bを参照すると、ホストデバイス210は、まず、ワイヤレス通信チャネル230を介して、クロック同期データをクライアントデバイスに送信する(たとえば、クライアントデバイス220(1))(701)。いくつかの実施形態では、クロック同期データは、ビーコンフレーム内に設けられたTSFタイマ値に対応することができる。クライアントデバイス220(1)は、ワイヤレス通信チャネル230を介してクロック同期データを受信し(702)、通信チャネル230に関連付けられたクロック同期機構を使用して、そのローカルクロック信号Clk1をホストクロック信号ClkHと同期させる(704)。たとえば、クライアントデバイス220(1)は、ホストデバイスのTSFタイマ値を使用して、そのローカルクロック信号Clk1と同期させることができる(たとえば、図4Aに関して上に説明したように)。
【００５５】
ホストデバイス210は、ワイヤレス通信チャネル230を介して送信するためにUSBフレームをカプセル化する(703)。たとえば、図2を参照すると、PAL SME213は、Wi-Fiプロトコルにより、Wi-Fiチャネルを介して送信されるべきUSBフレーム(たとえば、USBコントローラ212を介して受信した)をカプセル化することができる。いくつかの実施形態では、カプセル化は、WGAプロトコルにより実行され得る。ホストデバイス210は、現在のフレームカウントおよび媒体時間値をカプセル化されたUSBフレーム内に埋め込む(705)。たとえば、F_Count値は、ホストフレームカウンタCntHから記録され得、対応するM_Time値は、ホストクロック信号ClkHから記録され得る。いくつかの実施形態では、F_CountおよびM_Time値は、互いに対にされ、実質的に同時に記録される。最後に、ホストデバイス210は、ワイヤレス通信チャネル230を介して、カプセル化されたUSBフレームをクライアントデバイス220(1)に送信する(707)。
【００５６】
クライアントデバイス220(1)は、ワイヤレス通信チャネルを介して、カプセル化されたUSBフレームを受信し(706)、それとともに提供されたF_CountおよびM_Time値を解析する(708)。いくつかの実施形態では、クライアントデバイス220(1)は、USBデータのカプセル開放を行うことなく、受信したデータパケットからF_CountおよびM_Time値を解析することができる。クライアントデバイス220(1)は、次いで、受信したF_CountおよびM_Time値ならびに同期させたローカルクロック信号Clk1に基づいて、そのローカルフレームカウンタCnt1をホストフレームカウンタCntHと同期させる(710)。たとえば、クライアントデバイス220(1)は、式1に基づいて、そのローカルフレームカウンタCnt1を更新することができる(たとえば、図4Bに関して上に説明したように)。
【００５７】
いくつかの実施形態では、ホストデバイス210は、続いて特定のフレームカウントから始まるUSBフレームを処理させおよび/または提供させる命令を発することができる(709)。たとえば、ホストデバイス210によって指定されたフレームカウントは、ホストフレームカウンタCntHのカウント値に対応することができる。そのような命令を受信すると、クライアントデバイス220(1)は、次に、そのローカルフレームカウンタCnt1に基づいて、バッファリングされたUSBフレームを処理しおよび/または提供する(712)。具体的には、ローカルフレームカウンタCnt1がホストフレームカウンタCntHと同期しているので、クライアントデバイス220(1)は、クライアントデバイス220(1)によって実際に受信したおよび/またはバッファリングされたUSBフレームの数にかかわらず、所望の時間にそのバッファリングされたUSBデータの処理を開始することができる。
【００５８】
簡単にするためだけに、前述の同期動作700が、クライアントデバイス220(1)に関して説明されている。しかし、動作700は、ホストデバイス210とクライアントデバイス220(1)〜220(3)のうちのいずれかとの間で実質的に同様のやり方で実行され得る。さらに、同期動作700により、ワイヤレスチャネル230を介して複数のクライアントデバイス220(1)〜220(3)に送信されたUSBデータパケットは、正確な時間に(たとえば、同期して)再生されおよび/または提供される(たとえば、クライアントデバイス220(1)〜220(3)に関連付けられたスピーカから出力される)ことが確実になり得る。
【００５９】
図8は、いくつかの実施形態による、USB使用可能クライアントデバイス800のブロック図である。クライアントデバイス800は、ワイヤレスインターフェース810と、USBインターフェース820と、プロセッサ830と、メモリ840とを含む。ワイヤレスインターフェース810は、プロセッサ830に結合され、ワイヤレス通信チャネルを介して、データ信号を受信および/または送信するのに使用され得る。たとえば、ワイヤレス通信チャネルは、IEEE802.11ワイヤレスチャネルに対応することができる。USBインターフェース820は、プロセッサ830にも結合され、クライアントデバイス800へのおよび/またはからUSBデータを通信するのに使用され得る(たとえば、USBケーブルを介して)。いくつかの実施形態では、ワイヤレスインターフェース810は、データパケット内にカプセル化された、普通であればUSBインターフェース820を介して受信されるはずのUSBフレームを受信することができる。
【００６０】
メモリ840は、デバイス800によって処理および/または再生されるべきUSBフレームをバッファリングするのに使用され得るデータストア842を含むことができる。たとえば、ワイヤレスインターフェース810を介して受信したUSBフレームは、データストア842に記憶され得る。さらに、メモリ840は、以下のソフトウェアモジュールを記憶することができる、非一時的コンピュータ可読記憶媒体(たとえば、EPROM、EEPROM、フラッシュメモリ、ハードドライブなどの1つまたは複数の不揮発性メモリ素子)も含むことができる。
ローカルクロック信号をホストデバイスのクロック信号と同期させるためのクロック同期モジュール844、
ローカルフレームカウンタをホストデバイスのUSBフレームカウンタと同期させるためのフレーム同期モジュール846、および
ローカルフレームカウンタのフレームカウント値に基づいて、受信したUSBフレームを処理するためのUSB処理モジュール848。
各ソフトウェアモジュールは、プロセッサ830によって実行されたとき、デバイス800に、対応する機能を実行させることができる命令を含むことができる。したがって、メモリ840の非一時的コンピュータ可読記憶媒体は、図5および図7に関して説明した動作の全部または一部を実行するための命令を含むことができる。
【００６１】
メモリ840に結合されたプロセッサ830は、クライアントデバイス800に(たとえば、メモリ840内)に記憶された1つまたは複数のソフトウェアプログラムの命令のスクリプトを実行することができる任意の適切なプロセッサでよい。たとえば、プロセッサ830は、クロック同期モジュール844、フレーム同期モジュール846、および/またはUSB処理モジュール848を実行することができる。
【００６２】
クロック同期モジュール844は、ローカルクロック信号をホストデバイスのクロック信号と同期させるためにプロセッサ830によって実行され得る。たとえば、クライアントデバイス800は、ワイヤレスインターフェース810を介してホストデバイスからクロック同期(Clk_Sync)データを受信することができる。いくつかの実施形態では、Clk_Syncデータは、ホストデバイスによって周期的にブロードキャストされる(たとえば、ビーコンフレームにおいて)TSF値に対応することができる。クロック同期モジュール844は、プロセッサ830によって実行されたとき、それ自体のローカルTSFタイマを、受信したTSF値に設定することによって、そのローカルクロック信号をホストクロック信号と同期させることができる(たとえば、図4Aに関して上に説明したように)。
【００６３】
フレーム同期モジュール846は、ローカルフレームカウンタをホストデバイスのUSBフレームカウンタと同期させるためにプロセッサ830によって実行され得る。たとえば、クライアントデバイス800は、フレームカウント(F_Count)値および媒体時間(M_Time)値をホストデバイスからワイヤレスインターフェース810を介してさらに受信することができる。上に説明したように、F_Count値は、M_Time値によって示された特定の時間においてホストデバイスによって送信されたUSBフレームの数を示すことができる。フレーム同期モジュール846は、プロセッサ830によって実行されたとき、F_CountおよびM_Time値、ローカルクロック信号ならびにホストデバイスの伝送速度に基づいて、そのローカルフレームカウンタをホストフレームカウンタと同期させることができる(たとえば、図4Bに関して上に説明したように)。いくつかの実施形態では、プロセッサ830は、フレーム同期モジュール846を実行する際に、ホストデバイスから受信したUSBフレームごとに、ローカルフレームカウンタを連続して更新する(たとえば、インクリメントする)ことができる。
【００６４】
USB処理モジュール848は、ローカルフレームカウンタのフレームカウント値に基づいて、受信したUSBフレームを処理するために、プロセッサ830によって実行され得る。たとえば、USB処理モジュール848は、プロセッサ830によって実行されたとき、ローカルフレームカウンタが特定のフレームカウント閾値に達すると、データストア842に記憶されたUSBフレームの処理を開始することができる。いくつかの実施形態では、フレームカウント閾値は、ホストデバイスによって指定され得る(たとえば、クライアントデバイス800に処理要求メッセージを送信することによって)。ローカルフレームカウンタがホストフレームカウンタと同期され得るので、プロセッサ830は、USB処理モジュール848を実行する際に、ホストデバイスによって示されるときはいつでもUSBフレームの処理を開始することができる。
【００６５】
図9はいくつかの実施形態による、USB使用可能ホストデバイス900のブロック図である。ホストデバイス900は、ワイヤレスインターフェース910と、プロセッサ920と、メモリ930とを含む。ワイヤレスインターフェース910は、プロセッサ920に結合され、ワイヤレス通信チャネルを介して、データ信号を送信および/または受信するのに使用され得る。たとえば、ワイヤレス通信チャネルは、IEEE802.11ワイヤレスチャネルに対応することができる。いくつかの実施形態では、ワイヤレスインターフェース910は、データパケット内にカプセル化されたUSBフレームをワイヤレスで送信することができる。
【００６６】
メモリ930は、カプセル化されるべき、および1つまたは複数のクライアントデバイスに送信されるべきUSBフレームをバッファリングするのに使用され得るデータストア932を含むことができる。さらに、メモリ930は、以下のソフトウェアモジュールを記憶することができる非一時的コンピュータ可読記憶媒体(たとえば、EPROM、EEPROM、フラッシュメモリ、ハードドライブなどの1つまたは複数の不揮発性メモリ素子)も含むことができる。
ホストクロック信号をクライアントデバイスのローカルクロック信号と同期させるためのクロック同期モジュール934、
ホストフレームカウンタをクライアントデバイスのローカルフレームカウンタと同期させるためのフレーム同期モジュール936、および
ワイヤレスインターフェース910を介して送信するためにUSBフレームをデータパケット中に符号化するためのUSBカプセル化モジュール938。
各ソフトウェアモジュールは、プロセッサ920によって実行されたとき、デバイス900に、対応する機能を実行させることができる命令を含むことができる。したがって、メモリ930の非一時的コンピュータ可読記憶媒体は、図6および図7に関して説明した動作の全部または一部を実行するための命令を含むことができる。
【００６７】
メモリ930に結合されたプロセッサ920は、ホストデバイス900(たとえば、メモリ930内)に記憶された1つまたは複数のソフトウェアプログラムの命令のスクリプトを実行することができる任意の適切なプロセッサでよい。たとえば、プロセッサ920は、クロック同期モジュール934、フレーム同期モジュール936、および/またはUSB処理モジュール938を実行することができる。
【００６８】
クロック同期モジュール934は、ホストクロック信号をクライアントデバイスのローカルクロック信号と同期させるために、プロセッサ920によって実行され得る。たとえば、クロック同期モジュール934は、プロセッサ920によって実行されたとき、ワイヤレスインターフェース910を介して、1つまたは複数のクライアントデバイスに送信されるべきクロック同期(Clk_Sync)データを生成することができる。いくつかの実施形態では、Clk_Syncデータは、ホストデバイス900のTSFタイマ(たとえば、IEEE802.11仕様によって定義された)に基づいてTSF値に対応することができる。1つまたは複数のクライアントデバイスの各々は、次いで、Clk_Syncデータを使用して、そのローカルクロック信号をホストクロック信号と同期させることができる(たとえば、図4Aに関して上に説明したように)。いくつかの実施形態では、プロセッサ920は、クロック同期モジュール934を実行する際に、クロック_Syncデータを周期的に(たとえば、ビーコンフレーム内で)複数のクライアントデバイスに同時にブロードキャストすることができる。
【００６９】
フレーム同期モジュール936は、ホストフレームカウンタをクライアントデバイスのローカルフレームカウンタと同期させるためにプロセッサ920によって実行され得る。たとえば、フレーム同期モジュール936は、プロセッサ920によって実行されたとき、ワイヤレスインターフェース910を介して1つまたは複数のクライアントデバイスに送信されるべきフレームカウント(F_Count)値および媒体時間(M_Time)値を生成することができる。いくつかの実施形態では、F_Count値は、M_Time値によって示される特定の時間におけるホストフレームカウンタのカウント値に対応することができる。1つまたは複数のクライアントデバイスの各々は、次いで、F_CountおよびM_Time値、ローカルクロック信号、ならびにホストデバイスの伝送速度に基づいて、そのローカルフレームカウンタをホストフレームカウンタと同期させることができる(たとえば、図4Bに関して上に説明したように)。いくつかの実施形態では、プロセッサ920は、フレーム同期モジュール936を実行する際に、1つまたは複数のクライアントデバイスに送信されたUSBフレームごとに、ホストフレームカウンタを連続的に更新する(たとえば、インクリメントする)ことができる。
【００７０】
USB処理モジュール938は、ワイヤレスインターフェース910を介して送信するためのUSBフレームをデータパケット中に符号化するためにプロセッサ920によって実行され得る。たとえば、USB処理モジュール938は、プロセッサ920によって実行されたとき、対応するUSBデータをワイヤレスで送信されるべき1つまたは複数のデータパケットに書き込むことによってUSBフレームをカプセル化することができる。いくつかの実施形態では、カプセル化は、WGAプロトコルにより実行され得る。さらに、いくつかの実施形態では、プロセッサ920は、USB処理モジュール938を実行する際に、USBフレームとともに1つまたは複数のクライアントデバイスに送信されるべき処理要求メッセージを生成することができる。上に説明したように、処理要求メッセージは、対応するUSBフレームを処理するための命令を含むことができる(たとえば、特定のUSBフレームカウントに基づいて)。
【００７１】
いくつかの実施形態では、クライアントデバイス800は、ホストデバイス900の1つまたは複数の機能を実行することができ、逆も同様であることに留意されたい。たとえば、クライアントデバイス800は、ホストデバイス900の1つまたは複数のソフトウェアモジュール(たとえば、934〜938)を含むことができる。同様に、ホストデバイス900は、クライアントデバイス800のうちの1つまたは複数のソフトウェアモジュール(たとえば、844〜848)を含むことができる。
【００７２】
上記の明細書において、本実施形態について、その特定の例示的な実施形態を参照しながら説明してきた。しかし、添付の特許請求の範囲に記載された本開示のより広い範囲から逸脱することなく、様々な修正および変更をそれに加えることができることは明らかであろう。したがって、本明細書および図面は、限定的ではなく例示的であると見なされるべきである。たとえば、図5〜図7のフローチャートに示す方法ステップは他の適切な順序で実行することができ、複数のステップは組み合わせて単一のステップにすることができ、および/またはいくつかのステップは省略することができる。
【符号の説明】
【００７３】
100  ネットワークデバイス
110  プロセッサ
120  メモリ
130  PHYデバイス
135  トランシーバ
140  MACデバイス
150-1  媒体独立インターフェース(MII)
150-2  媒体独立インターフェース(MII)
160  信号路
200  通信システム
210  ホストデバイス
211  プロセッサ
212  USBコントローラ
213  プロトコル適応層(PAL)ステーション管理エンティティ
214  WLANインターフェース
220(1)  クライアントデバイス
220(2)  クライアントデバイス
220(3)  クライアントデバイス
230  通信チャネル
300  タイミング図
500  例示的な方法
600  例示的な方法
700  ワイヤレス同期動作
800  USB使用可能クライアントデバイス
810  ワイヤレスインターフェース
820  USBインターフェース
830  プロセッサ
840  メモリ
842  データストア
844  クロック同期モジュール
846  フレーム同期モジュール
848  USB処理モジュール
900  USB使用可能ホストデバイス
910  ワイヤレスインターフェース
920  プロセッサ
930  メモリ
932  データストア
934  クロック同期モジュール
936  フレーム同期モジュール
938  USBカプセル化モジュール
M1  ワイヤレス媒体
【図１】
0006333963.tif 000003
【図２】
0006333963.tif 000004
【図３】
0006333963.tif 000005
【図４Ａ】
0006333963.tif 000006
【図４Ｂ】
0006333963.tif 000007
【図５】
0006333963.tif 000008
【図６】
0006333963.tif 000009
【図７】
0006333963.tif 000010
【図８】
0006333963.tif 000011
【図９】
0006333963.tif 000012