(57)【要約】受信装置が非同期装置から受信したデータパケットのストリームを処理する速度は、非同期装置がデータパケットを送信する速度に対して同期がとられる。装置は、受信したデータパケットをバッファメモリに格納し、サンプリングレートコントローラによって決定されたサンプリングレートでバッファメモリからのデータを処理する。サンプリングレートは、データが処理される速度とデータを非同期装置から受信する速度との同期をとるためにメモリ充填レベルポインタのしきい値比較に基づいて調整される。速度の同期をとることによって、バッファのアンダーフロー又はオーバーフロー状態を回避することができる。
2009503986.tif 000002
【特許請求の範囲】
【請求項１】
第１装置が非同期装置から受信したデータパケットを処理する第１速度と非同期装置がデータパケットを送信する第２速度との同期をとるシステムであって、前記非同期装置から受信したデータパケットを格納するとともにそれ自体のレベルを示すポインタを有するバッファメモリと、前記バッファメモリ内のしきい値位置に対する前記ポインタの位置に基づいて前記第１速度を調整するサンプリングレートコントローラとを具え、前記データパケットが前記バッファメモリから処理される第１速度と、前記非同期装置が前記データパケットを送信する第２速度との同期が、長時間に亘ってとられるシステム。
【請求項２】
請求項１記載のシステムにおいて、前記サンプリングレートコントローラが、前記ポインタが前記しきい値位置より上である場合に前記第１速度を増大することを特徴とするシステム。
【請求項３】
請求項１記載のシステムにおいて、前記サンプリングレートコントローラが、前記ポインタが前記しきい値位置より下である場合に前記第１速度を減少することを特徴とするシステム。
【請求項４】
請求項１記載のシステムにおいて、前記しきい値位置を、前記バッファメモリの中間にしたことを特徴とするシステム。
【請求項５】
請求項１記載のシステムにおいて、前記しきい値位置をユーザによって規定することを特徴とするシステム。
【請求項６】
請求項１記載のシステムにおいて、前記バッファメモリを、先入先出（ＦＩＦＯ）メモリ装置としたことを特徴とするシステム。
【請求項７】
バッファメモリがアンダーフロー又はオーバーフロー状態になるのを防止するよう第１装置の複数のデータパケットを処理するためにサンプリングレートを調整する方法であって、データパケットのストリームを第２装置から受信し、受信したデータパケットの各々を前記バッファメモリに格納し、前記バッファメモリからのデータパケットを、前記サンプリングレートによって決定した速度で処理し、前記バッファメモリのレベルをモニタし、前記バッファメモリ内のしきい値位置に対する前記バッファメモリのレベルに基づいて前記サンプリングレートを調整し、前記サンプリングレートが、前記第２装置が前記データパケットを前記第１装置に流す速度に対して長時間に亘り同期をとる方法。
【請求項８】
請求項７記載の方法において、前記バッファのレベルが、バッファの使用量についての表示を提供することを特徴とする方法。
【請求項９】
請求項７記載の方法において、前記バッファメモリのレベルが前記しきい値位置より上である場合に前記サンプリングレートを減少することを特徴とする方法。
【請求項１０】
請求項７記載の方法において、前記バッファメモリのレベルが前記しきい値位置より下である場合に前記サンプリングレートを増大することを特徴とする方法。
【請求項１１】
請求項７記載の方法において、前記しきい値位置が前記バッファの中間であることを特徴とする方法。
【請求項１２】
取得装置のバッファメモリにデータを格納するためにサンプリングレートを調整する方法であって、第２装置から入力トークンを受信し、前記取得装置によって取得したデータをバッファメモリに格納し、前記データが、前記サンプリングレートによって決定されたレートで格納され、前記バッファメモリのレベルをモニタし、前記バッファメモリ内のしきい値位置に対する前記バッファメモリのレベルに基づいて前記サンプリングレートを調整し、前記サンプリングレートが、前記第２装置が前記入力トークンを送信する速度に対して長時間に亘り同期をとる方法。
【請求項１３】
請求項１２記載の方法において、前記バッファのレベルが、バッファの使用量についての表示を提供することを特徴とする方法。
【請求項１４】
請求項１２記載の方法において、前記バッファメモリのレベルが前記しきい値位置より上である場合に前記サンプリングレートを減少することを特徴とする方法。
【請求項１５】
請求項１２記載の方法において、前記バッファメモリのレベルが前記しきい値位置より下である場合に前記サンプリングレートを増大することを特徴とする方法。
【請求項１６】
請求項１２記載の方法において、前記しきい値位置が前記バッファの中間であることを特徴とする方法。
【請求項１７】
データパケットのストリームを格納するためにバッファメモリのレベルに基づいてサンプリングクロックを調整するサンプリングレートコントローラであって、入力クロックを受信するとともに前記入力クロックを乗算して前記サンプリングクロックを生成する分割数カウンタと、前記バッファメモリ内のしきい値位置の対する前記バッファメモリのレベルに基づいて前記分割数カウンタの値を調整する補正機能モジュールとを具えるサンプリングレートコントローラ。
【請求項１８】
請求項１７記載のサンプリングレートコントローラにおいて、前記バッファメモリのレベルが前記しきい値位置より上である場合に前記分割数カウンタを増大することを特徴とするサンプリングレートコントローラ。
【請求項１９】
請求項１７記載のサンプリングレートコントローラにおいて、前記バッファメモリのレベルが前記しきい値位置より下である場合に前記分割数カウンタを減少することを特徴とするサンプリングレートコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に信号処理技術に関し、更に詳しくは非同期環境におけるデータパケットストリームの同期に関する。
【背景技術】
【０００２】
ビデオ信号やオーディオ信号のようなアイソクロナスデータは、ビデオ又はオーディオを最良品質でユーザに提供することを保証するために安定した速度で流される。アイソクロナスデータの処理又は配信における著しい遅延の結果、途切れたビデオ又はオーディオが提供される。これによって、ユーザに提供されるビデオ又はオーディオの品質が低下し、多数のアプリケーションに対して受け入れられないものになる。
【０００３】
アイソクロナスデータの処理は、リアルタイム非同期システムにおいて更に困難になってきている。非同期システムにおいて、データを、第１装置から第２装置にパケットで流すことができる。図１は、オーディオデータやビデオデータのようなデータストリームをパーソナルコンピュータ（ＰＣ）のような演算装置１０１からユニバーサル・シリアル・バス（ＵＳＢ）接続１１５を通じて出力装置１２０に出力する従来のシステム１００を示す。図示したように、演算装置１０１は、ＵＳＢ接続１１５を通じてＵＳＢ装置１２０に接続したホストコントローラ１１０を有する。
【０００４】
典型的な従来のシステムにおいて、出力装置１２０のＵＳＢ装置コントローラは、ホストコントローラ１１０によりＵＳＢ接続１１５を通じて送信されたデータパケットのストリームを受信する。装置コントローラ１２５は、出力装置がデータパケットをサンプリングし又は処理することができるようになるまでデータパケットをバッファメモリ１３０に格納する。サンプリングインタフェースは、出力装置クロックに基づくサンプリングレートでバッファメモリ１３０からのデータにアクセスし、データをデジタル−アナログ（Ｄ／Ａ）コンバータ１６０に転送する。Ｄ／Ａコンバータは、デジタルデータを、データをユーザに出力するために出力装置によって用いられるアナログ形態に変換する。
【０００５】
ホストコントローラ１１０がデータパケットを出力装置１２０に流す速度は、演算装置１０１のクロック信号ＣＬＫ１によって決定される。既に説明したように、サンプリングレート、すなわち、出力装置１２０がホストコントローラ１１０から受信したデータを処理する速度は、出力装置クロックＣＬＫ２によって決定される。システムの非同期の性質により、演算装置１１０がデータパケットを出力装置１２０に送信する速度は、出力装置１２０がデータパケットを処理する速度と異なることがある。
【０００６】
ホストコントローラ１１０が、出力装置１２０がパケットを処理する速度より速い速度でデータパケットを送信する場合、バッファメモリは充満される。この状態は、バッファのオーバーフロー状態と称される。バッファメモリが充満している間に到達するあらゆるデータパケットは欠落される。バッファのオーバーフローは、オーディオやビデオのようなアイソクロナスデータを処理するときに受け入れられない。その理由は、ユーザに出力されないデータの損失となるからである。この状態の結果、途切れたすなわち不完全なオーディオ又はビデオが提供される。
【０００７】
出力装置１２０が、ホストコントローラ１１０がデータパケットを送信する速度より速い速度でデータパケットを処理する場合、バッファメモリは、長時間に亘って完全に空になる。出力装置は、ユーザに対する再生のために次のデータパケットの到達を待機する。これは、バッファのアンダーフロー状態と称される。バッファのアンダーフローも、オーディオやビデオのようなアイソクロナスデータを流すときに受け入れることができない。その理由は、出力装置が次のデータパケットを待機する間にオーディオ又はビデオに休止を導入するからである。
【０００８】
同じことが逆の状況においても当てはまる。オーディオデータ又はビデオデータが入力装置によって取得され、パーソナルコンピュータのような演算装置に送信されるとき、同じ問題が生じうる。装置が、演算装置がデータパケットを処理する速度より速い速度でデータを取得するとともにデータを演算装置に送信する場合、取得装置のバッファは、オーバーフロー状態となり、データの損失が生じる。同様に、装置が、演算装置がデータパケットを処理する速度より遅い速度でデータを取得するとともにデータを演算装置に送信する場合、アンダーフロー状態が生じる。
【発明の開示】
【０００９】
本発明は、受信装置が非同期装置から受信したデータパケットのストリームを処理する速度と、非同期装置がデータパケットを送信する速度との同期をとる。一実施の形態において、装置は、受信したデータパケットをバッファメモリに格納し、バッファメモリからのデータを、サンプリングレートコントローラによって決定されたサンプリングレートで処理する。サンプリングレートは、データが処理される速度とデータを非同期装置から受信する速度との同期をとるよう調整される。速度の同期をとることによって、バッファのアンダーフロー状態及びオーバーフロー状態を回避することができる。
【００１０】
一実施の形態において、バッファメモリのレベルを、サンプリングレートの調整方法を決定するためにモニタすることができる。一実施の形態において、バッファメモリは、バッファメモリのレベルを示すポインタを具える。バッファメモリのこのレベルは、どのようにしてサンプリングレートを調整できるかを決定するためにバッファメモリのしきい値位置と比較される。一実施の形態において、バッファメモリのレベルがしきい値より下である場合、サンプリングレートが減少され、装置がデータパケットを処理する速度とデータパケットが送信される速度との同期がとられるようになる。バッファメモリのレベルがしきい値位置より上である場合、サンプリング速度を増大することができる。長時間に亘り、サンプリングレートは、非同期装置がデータパケットを送信する速度に対して同期がとられる。
【００１１】
本発明の実施の形態を、添付図面を参照しながら説明する。これらの図面は説明のためのものであり、限定のためのものではない。本発明を一般的にこれらの実施の形態に関連して説明するが、本発明の範囲をこれら特定の実施の形態に限定することを意図するものではない。
【発明を実施するための最良の形態】
【００１２】
データパケットのストリームが処理され及び二つの非同期装置間で送信される速度の同期をとるシステム、装置及び方法を記載する。以下の記載において、説明のために、本発明を理解するよう特定の詳細を説明する。しかしながら、本発明をこれらの詳細の範囲外で実施できることは、当業者に明らかである。さらに、当業者は、後に説明する本発明の実施の形態をソフトウェア、ハードウェア、ファームウェア又はその組合せを含む種々の媒体で実施できることを理解する。したがって、後に説明するフローチャートは、本発明の特定の実施の形態を説明するためのものであり、本発明を曖昧にするのを回避しようとするものである。
【００１３】
明細書における「一実施の形態」、「好適な実施の形態」又は「実施の形態」の言及は、実施の形態に関連して説明した特別な形態、構造、特性又は機能が本発明の少なくとも一つの実施の形態に含まれることを意味する。明細書の種々の位置での言い回し「一実施の形態において」の出現は、必ずしも同一の実施の形態を言及するものではない。
【００１４】
図２は、本発明の一実施の形態によるデータストリーム同期システム２００のブロック図である。システム２００は、ＵＳＢ接続１１５上で出力装置２２０に結合したＵＳＢホストコントローラ１１０を有する。出力装置２２０は、装置コントローラ１２５と、バッファメモリ２３０と、バッファラッチ２３５と、サンプリングレートコントローラ２４０と、サンプリングインタフェース１５０と、デジタル−アナログ（Ｄ／Ａ）コンバータ１６０とを有する。ホストコントローラ１１０、装置コントローラ１２５、サンプリングインタフェース１５０及びＤ／Ａコンバータ１６０は、周知の装置である。バッファメモリ２３０を、固体状態記憶装置を含む周知の記憶装置を用いて実現することができる。同様に、バッファラッチ２３５を、Ｄラッチ、ＳＦフリップフロップ及びＪＫフリップフロップを含む周知のラッチを用いて実現することができるが、これらに限定されるものではない。
【００１５】
図示したように、ホストコントローラ１１０をＰＣ又は他の演算装置１１０に配置して、演算装置１０１と出力装置２２０との間でデータパケットを流すことができる。図３は、データパケット３００のストリームの一例を示す。ストリーム３００は、図３においてＴを付した規則的な間隔で送信される複数のデータパケット３１０Ａ−Ｎを具える。各データパケット３１０は、ヘッダフィールド３２０の一つと、データ３３０と、データパケットの終了を知らせるパケット終了（ＥＯＰ）識別子３２５５とを有する。
【００１６】
出力装置２２０は、ＵＳＢ接続１１５からのデータパケットを受信するローレベルハードウェアを有する装置コントローラでデータパケットのストリームを順次受信する。装置コントローラ１２５が各データパケットを受信するので、装置コントローラ１２５は、データパケットをバッファメモリ２３０に格納する。装置コントローラ１２５は、各データパケットに対するＥＯＰ識別子３２５も検出し、ＥＯＰ識別子が検出されるとＥＯＰ信号をバッファラッチ３３５に出力する。サンプリングインタフェース１５０は、バッファメモリ２３０からのデータにアクセスし、データをＤ／Ａコンバータ１６０に提供する。サンプリングインタフェースがバッファメモリ２３０からのパケットにアクセスする速度は、サンプリングレートと称される。一実施の形態において、サンプリングレートは、ここで詳しく説明した出力装置クロック（ＣＬＫ２）及びバッファオフセット値を用いてサンプリングレートコントローラ２４０によって決定される。Ｄ／Ａコンバータ１６０は、出力装置２２０による再生のために、バッファメモリ２３０から検索したデジタルデータをアナログ形態に変換する。
【００１７】
ホストコントローラ１１０は、演算装置のシステムクロックＣＬＫ１によって制御され、それに対して、出力装置２２０は、装置クロックＣＬＫ２によって制御される。システムの非同期の性質は、ホストコントローラ１１０がデータパケットを出力装置２２０に送信する速度が出力装置２２０のデータパケットの処理速度と異なることを意味する。ホストコントローラがデータパケットを流す速度が、出力装置２２０がパケットを処理する速度より速い場合、過度のオーバーフロー状態が生じることがある。ホストコントローラが、出力装置２２０がデータを処理する速度より遅い速度でデータパケットを送信する場合、過度のアンダーフロー状態が生じることがある。図３に示すように、ホストコントローラ１１０は、規則的な間隔でデータパケットを装置コントローラ１２５に送信し、すなわち、ダウンロードする。一実施の形態において、各パケットに対するＥＯＰ識別子を、ホストコントローラがデータパケットを出力装置２２０に送信する速度を表すのに用いることができる。
【００１８】
図４は、本発明の一実施の形態によるバッファメモリ２３０の実現例を示す。本例において、バッファメモリ２３０を、３データパケットのサイズに等しいバッファサイズを有する先入先出メモリとする。本例のために、図３に示すように各データパケットがサイズＱを有すると仮定する。したがって、バッファメモリ２３０のサイズＰは、Ｐ＝３Ｑで表される。一実施の形態において、バッファメモリ２３０は、バッファメモリ２３０のレベルを示すバッファレベルポインタ４４０を有する。ここで詳しく説明するように、バッファレベルポインタ４４０を、出力装置２２０がデータを処理する速度とホストコントローラ１１９がデータを送信する速度と同期をとるようサンプリングレートを調整するために用いられる帰還信号として用いることができる。
【００１９】
一実施の形態において、ターゲットポインタ４５０を、バッファメモリ２３０内のしきい値基準位置として用いることができる。ターゲットポインタ４５０を、バッファの使用を最適化するシステム要求に基づいてユーザにより規定することができる。一実施の形態において、ターゲットポインタは、バッファメモリ２３０のしきい値位置を識別する。このしきい値位置を、各ＥＯＰ識別子を受信したときにオーバーフロー又はアンダーフローが生じるのを最もよく防止するバッファメモリ２３０の最適レベルとすることができる。
【００２０】
図５は、データパケットのストリームと、ＥＯＰ識別子と、出力装置がパケットを処理する速度及びホストコントローラがデータパケットを出力装置に流す速度の同期が取られたシステムのバッファレベルとの間の関係を示す。図５に示すように、バッファレベルは、先ず、バッファがレベルＱに充填されるまで増大し、レベルＱは、データパケットのサイズを表す。このポイントにおいて、第１データパケットが受信される。本例において、出力装置は、第１データパケットが到達した後の持続時間Ｔ／２（すなわち、第１ＥＯＰが到達した後の持続時間Ｔ／２）の間データの再生を開始する。ストリームの次のデータパケットが到達し始めるので、バッファメモリは、約Ｘ２＝Ｑ／２バイトのデータを格納し、少なくとも２Ｑバイトの空領域がバッファメモリ２３０に存在する。データパケットを出力装置によって受信し及び使い切るので、バッファメモリ２３０は、図５に示すように充填及び排出を続ける。
【００２１】
図５の同期をとられたシステムにおいて、バッファメモリ２３０は、中間地点まで充填され、ｘ２のレベルに到達するまで充填量を減少し、次のパケットを受信するとバッファの中間地点まで再び充填される。バッファが半分充填されるポイントは、ＥＯＰ識別子が発生する度に生じる。一実施の形態において、これは、バッファメモリ２３０のしきい値位置となる。その結果、図４の例において、ターゲットポインタ４５０は、バッファメモリ２３０の中心の基準を提供する。図４に示すバッファメモリ２３０の実施の形態において、バッファメモリ２３０は、先入先出方式で右から左に充填を行う。バッファレベルポインタ４４０がターゲットポインタ４５０の右側にある場合、バッファの充填量は半分未満であり、バッファレベルポインタ４４０がターゲットポインタ４５０の左側にある場合、バッファの充填量は半分を超える。バッファレベルポインタのレベルが、ターゲットポインタ４５０によって表されるしきい値位置より下又は上であるときは常に、ホストコントローラがパケットを出力装置に流す速度と同期がとられる速度に近いサンプリングレートとなるようにサンプリングレートを調整することができる。
【００２２】
図２に示す実施の形態において、装置コントローラがＥＯＰ識別子２２５を識別する度に、バッファレベルポインタ４４０及びターゲットポインタ４５０をバッファラッチ２３５にラッチすることができる。バッファレベルポインタ４４０を、ターゲットポインタ４５０と比較することができ、ターゲットポインタ４５０に対するバッファレベルポインタ４４０の位置を表すバッファオフセット値ｘ１を、サンプリングコントローラ２４０に出力することができる。サンプリングレートコントローラ２４０は、パケットがサンプリングインタフェース１５０によって処理されるサンプリングレートを調整するためにバッファオフセット値ｘ１を用いることができる。
【００２３】
サンプリングレートが調整されるので、バッファメモリ２３０のレベルは、それに応じて増減する。その結果、バッファレベルポインタ４５０のレベルは、次のＥＯＰ識別子を受信したときにターゲットポインタ４５０のしきい値に更に近づくように移動する。サンプリングレートは、バッファレベルポインタ４４０が各ＥＯＰ識別子でターゲットポインタ４５０の上に存在するまで各ＥＯＰ識別子を受信する際に連続的に調整される。このポイントにおいて、出力装置がホストコントローラから受信したデータを処理する速度は、ホストコントローラがデータを流す速度に対して同期がとられる。
【００２４】
図６は、本発明によるサンプリングレートコントローラ２４０の一実施の形態を示す。本実施の形態において、サンプリングレートコントローラは、補正機能モジュール６２０に結合された分割数カウンタ６１０を有する。分割数カウンタは、当業者に周知である。補正機能モジュール６２０を、ハードウェア、ソフトウェア、ファームウェア又はその組合せを用いて実現することができる。
【００２５】
一実施の形態において、サンプリングレートコントローラは、バッファラッチ２３５からのバッファオフセット値ｘ１と、入力としての出力装置２２０の装置クロック（ＣＬＫ２）とを受信する。装置クロック（ＣＬＫ２）は、装置クロックを整数Ｎによって除算する分割数カウンタ６１０に入力され、装置クロック（ＣＬＫ２）の周波数をＮによって減少する。出力クロックは、サンプリングインタフェース１５０のサンプリング周波数を決定するサンプリングクロックとなる。所望のサンプリングレートを含むアプリケーションに関連した複数の要因に基づいてＮの値を決定できることは、当業者によって理解される。
【００２６】
本発明の一実施の形態において、補正機能モジュール６２０は、入力としてバッファオフセット値ｘ１を受信する。バッファオフセット値ｘ１は、ターゲットポインタ４５０（しきい値位置）とバッファレベルポインタ４４０との間の差となる。バッファレベルポインタ４４０がターゲットポインタ４５０より小さい場合、ｘ１の値は正の値となる。それに対して、バッファレベルポインタ４４０がターゲットポインタ４５０より大きい場合、ｘ１の値は負の値となる。
【００２７】
一実施の形態において、Ｎの値を、式Ｎ（ｘ１）に従って調整することができ、この場合、Ｎ（ｘ１）を、ｘ１の値に基づく関数とする。サンプリング周波数の所望の増減を得るためにバッファオフセット値ｘ１に基づいてＮの値を調整するのに用いることができる複数の関数が存在することは、当業者によって認識される。一実施の形態において、ｘ１の値が負である場合にＮ（ｘ１）＝Ｎ−１とするとともに、ｘ１の値が正である場合にＮ（ｘ１）＝Ｎ＋１とする。これらの関数は、ｘ１の値に応じてＮの値を１だけ増減する。ｘ１＝０の場合、Ｎの値は同一のままである。
【００２８】
ｘ１の値が正である場合、バッファメモリ２３０のバッファレベルはしきい値ポインタ未満となる。これは、データパケットが出力装置２２０に流される速度より速い速度で出力装置２２０がホストコントローラ１１０から受信したデータを処理することを表す。データが処理される速度が調整されない場合、出力装置２２０は、ユーザに対する再生のために次のデータパケットを待機する段階に到達する。出力装置２２０がオーディオ又はビデオを出力する場合、これによって、ユーザに対する途切れとして観察されうる遅延がデータの再生中に生じる。本発明は、サンプリングレートの周波数を減少するこの状況においてＮの値を増大する。これによって、データパケットが出力装置２２０によって処理される速度を減少する。ＥＯＰが装置コントローラ１２５によって受信される度にＮの値を調整することができる。長時間に亘り、データパケットが処理される速度は、データパケットがホストコントローラ１１０から流れる速度に対して同期をとることができる。
【００２９】
同様に、ｘ１が負である場合、バッファメモリ２３０のバッファレベルはしきい値ポインタを超える。Ｎの値を減少することによって、サンプリングレートの周波数が増大し、したがって、データが出力装置２２０によって処理される速度を増大する。Ｎの値が長時間に亘って調整されるので、データパケットが出力装置２２０によって処理される速度は、ホストコントローラ１１０がデータパケットを流す速度に対して同期がとられる。
【００３０】
図７は、本発明によるサンプリングレートの調整の他の実施の形態を示す。図７は、装置クロック（ＣＬＫ２）を発生する位相同期ループ（ＰＬＬ）７１０と、ＰＬＬ７１０に結合され、ホストコントローラ１１９がデータパケットを流す速度に対して装置クロック（ＣＬＫ２）が同期をとるよう装置クロックを調整する補正機能モジュール７２０とを示す。ＰＬＬ７１０は、二つの分割数カウンタ７３０及び７４０と、位相検出器７５０と、デジタル制御発振器（ＤＣＯ）７６０とを有する。他の実施の形態において、電圧制御発振器（ＶＣＯ）を、ＤＣＯ７６０の位置で用いることができる。分割数カウンタ７３０及び７４０と、位相検出器７５０と、デジタル制御発振器７６０とは、周知の装置である。
【００３１】
一実施の形態において、ＰＬＬ７１０は、入力クロックと、調整されたＮ及びＭの値とを入力として受信する。入力クロックfinは、分割数カウンタ７３０に入力される。一実施の形態において、入力クロックfinを、出力装置２２０のソースクロックとする。分割数カウンタ７３０は、入力クロックの周波数を入力値Ｎによって除算し、入力クロックの周波数をＮによって減少する。減少した周波数クロックは、位相検出器７５０に出力される。位相検出器７５０は、減少した周波数クロックを、ＤＣＯ７６０によって発生した帰還クロック信号に合わせる。本実施の形態において、分割数カウンタ７４０を、帰還ループのＤＣＯ７６０と位相検出器７５０との間に挿入して、位相検出器７５０からのクロック出力の周波数を増大する。本実施の形態において、ＤＣＯ７６０からのクロック出力は、分割数カウンタ７３０からのクロック出力の周波数のＭ倍に等しい周波数を有する。
【００３２】
図７の実施の形態の結果、ＰＬＬ７１０からの装置クロック（ＣＬＫ２）の出力は、ＣＬＫ２＝（fin）＊（Ｍ／Ｎ）となる。図７に示すように、装置クロック（ＣＬＫ２）を分割数カウンタ７８０に出力して、装置のサンプリングレートを決定するサンプリングクロックを形成することができる。サンプリングクロックの周波数は、ｆ１＝ＣＬＫ２／Ｌとなり、これを、ｆ１＝（fin＊（Ｍ／Ｎ））／Ｌと書き直すことができる。サンプリングクロックをサンプリングインタフェース１５０に出力して、サンプリングレート、したがって、データパケットを出力装置２２０によって処理する速度を制御することができる。
【００３３】
Ｍ，Ｎ及びＬの値を、所望のサンプリング周波数を提供するためにアプリケーションの必要に基づいてユーザ又は設計者によって設定することができる。例えば、入力クロックの周波数fin＝４８ＭＨｚとし、ユーザが、周波数ｆ１＝１２．２８８ＭＨｚの初期サンプリングクロックを所望すると仮定すると、初期値を、Ｍ＝６１４４，Ｎ＝６０００及びＬ＝４に設定することができる。これによって、１２．２８８ＭＨｚの所望の周波数を有するサンプリングクロックを生成する。
【００３４】
Ｍ及び／又はＮの値を、ＰＬＬ７１０からの装置クロック（ＣＬＫ２）出力の周波数に変わるよう調整することができる。本発明の一実施の形態において、補正機能モジュール７２０は、入力バッファオフセット値ｘ１に基づいてＭ及び／又はＮの値を調整する。一実施の形態において、ｘ１を、ターゲットポインタ４５０（しきい値位置）とバッファレベルポインタ４４０との間の差とする。バッファレベルポインタ４４０がターゲットポインタ４５０未満である場合、ｘ１の値は正の値となる。それに対して、バッファレベルポインタ４４０がターゲットポインタ４５０を超える場合、ｘ１の値は負の値となる。
【００３５】
一実施の形態において、Ｍ及び／又はＮの値を、関数Ｍ（ｘ１）及び／又はＮ（ｘ１）に従って調整することができる。一実施の形態において、ｘ１が正であるとき、Ｎ及びＭを関数Ｍ（ｘ１）＝Ｍ−１及びＮ（ｘ１）＝Ｎ−１に従って調整して、既に説明したように装置クロック（ＣＬＫ２）及びサンプリングクロックの周波数を減少することができる。ｘ１が負であるとき、Ｎ及びＭを関数Ｍ（ｘ１）＝Ｍ＋１及びＮ（ｘ１）＝Ｎ＋１に従って調整して、装置クロック（ＣＬＫ２）及びサンプリングクロックの周波数を増大することができる。入力ｘ１に基づいてＭ及びＮの値を調整するのに用いることができる複数の関数Ｍ（ｘ１）及びＮ（ｘ１）が存在することは、当業者によって認識することができる。Ｍ及びＮを互いに独立して調整することができる。例えば、一実施の形態において、Ｍの値を、所定のバッファオフセット値ｘ１に対して増大することができ、それに対して、Ｎの値を、所定のバッファオフセット値ｘ１に対して減少することができ、逆も可能である。そのような調整は、装置クロック（ＣＬＫ２）及びサンプリングクロックの周波数に正又は負の影響を及ぼす。
【００３６】
上記実施例に戻ると、１２．２８８ＭＨｘの初期サンプリング周波数を取得するためにＭ，Ｎ及びＬを設定すると仮定する。バッファオフセット値ｘ１が負である場合、Ｍ及びＮの値を１増加して、ＰＬＬ７１０からの装置クロック（ＣＬＫ２）出力、したがって、サンプリングクロックの周波数を調整することができる。上記Ｍ（ｘ１）及びＮ（ｘ１）の関数を用いると、新たな装置クロック周波数は、ＣＬＫ２＝（４８ＭＨｚ）＊（６１４５／６００１）＝４９．１５１８０８０ＭＨｚとなる。装置クロックをＬで除算することによって、サンプリングクロックは、ｆ１＝（４９．１５１８０８０ＭＨｚ）／４＝１２．２８７９５２ＭＨｚとなる。サンプリングクロック周波数に対するこの小さな変化によって、出力装置のサンプリングレートを減少する。この小さな減少の結果、バッファメモリ２３０のレベルが小さく増加し、次のＥＯＰ識別子が到達するときにバッファレベルポインタ４４０がターゲットポインタ４５０に近づく。
【００３７】
図６及び７に示す実施の形態は、バッファメモリ２３０のレベルに基づいてサンプリングレートを増加し又は減少する方法の二つにしかすぎない。当業者は、他の実現が可能であるとともに本発明の範囲内で考察されることを認識する。
【００３８】
図８は、データパケット、パケット信号の終了、バッファメモリレベル、しきい値に対してラッチされたレベル及びサンプリング補正の間の関係を示すグラフである。図示したように、データパケットは間隔Ｔごとに到達する。間隔Ｔは、ホストコントローラ１１０がデータパケットのストリームを出力装置２２０に送信する速度を表す。パケット（ＥＯＰ）識別子の終了にそれぞれ出くわすとき、図８においてｘ３で表されるバッファレベルポインタ４４０は、バッファラッチ２３５にラッチされる。破線８１０は、しきい値すなわちターゲットポインタ４５０を表す。
【００３９】
バッファオフセット値ｘ１は、ｘ３のラッチされた値としきい値位置との間の差を表す。ｘ１がしきい値位置より上であるとき、サンプリングレートは、グラフのサンプリングレート部分の補正において負（−）の符号によって表されるように減少する。サンプリングレートが減少するので、バッファレベルポインタｘ３は、しきい値より下に交差するまで減少する。これが一度起こると、サンプリングレートは、サンプリング補正レートグラフにおいて正（＋）の符号によって表されるように増加する。サンプリングレートは、システムが安定状態に到達するまで調整され続け、安定状態は、バッファレベルポインタが各ＥＯＰ識別子でしきい値位置の上にあるときに生じる。
【００４０】
図８において、安定状態は、１７番目のデータパケットで生じる。このポイントから、サンプリングレートは、ホストコントローラがデータパケットを出力装置に送信すなわちダウンロードする速度に整合される。この状態において、システムは、バッファメモリ２３０に対してアンダーフロー又はオーバーフロー状態になりそうにない。グラフのサンプリングレート部分の補正は、１７番目より先のデータパケットで全てゼロを有する。これは、サンプリングレートが安定状態に到達するとともに更に調整を必要としないことを示す。ホストコントローラが、データパケットを送信する速度を変更する場合、システムは、ホストコントローラのデータパケットレートに整合する新たなサンプリングレートが決定されるまでサンプリングレートの調整を再開する。
【００４１】
上記実施の形態は、出力装置２２０からの出力に対してデータフローがホストコントローラ１１０から出力装置２２０であるときにサンプリングレートがホストコントローラ１１０のデータレートに対して同期をとる方法を説明する。図９は、データフローが取得装置９２０からホストコントローラ１１０であるときにサンプリングレートがホストコントローラのデータレートに対して同期をとる本発明の一実施の形態を示す。これは、ビデオ又はオーディオレコーダのような取得装置９２０がデータを取得するときに起こる。
【００４２】
オーディオ又はビデオ取得装置からのデータをアップロードする際に、ホストコントローラ１１０は、取得装置９２０で取得プロセスを開始する「ストリーム開始」コマンドを始動する。アナログオーディオ又はビデオデータは、取得装置９２０によって取得され、アナログ−デジタル（Ａ／Ｄ）コンバータ９６０に入力され、Ａ／Ｄコンバータ９６０は、アナログオーディオ又はビデオ信号を、対応するデジタル表示に変換する。サンプリングインタフェース１５０は、Ａ／Ｄコンバータ９６０からのデータを連続的にサンプルし、データをバッファメモリ２３０に格納する。サンプリングインタフェース１５０がデータをサンプルする速度は、サンプリングレートコントローラ２４０によって決定される。
【００４３】
バッファメモリ２３０は、装置コントローラ１２５がホストコントローラ１１０からの入力トークンを受信するまでデータを充填し続ける。装置コントローラ１２５が入力トークンを受信する度に、装置コントローラ１２５は、データパケットをバッファメモリ２３０からホストコントローラ１１０に送信する。装置コントローラ１２５は、入力トークン受信信号をバッファラッチ２３５に出力する。入力トークンを、ホストコントローラ１１０がデータパケットを取得装置９２０から要求する速度の表示として用いることができる。したがって、入力トークン受信信号は、図２の実施の形態で説明したＥＯＰ識別子と同一の機能を実行する。
【００４４】
入力装置のサンプリングレートが、ホストコントローラが入力トークンを送信する速度より大きい場合、バッファオーバーフロー状態が生じ、データが消失することがある。どうように、入力装置のサンプリングレートが、ホストコントローラが入力トークンを送信する速度より小さい場合、バッファアンダーフロー状態が生じる。これが生じる場合、次の入力トークンを受信したときにデータパケットを送出するのに十分なデータがバッファに存在しないことがある。
【００４５】
本発明を、入力トークンがホストコントローラ１１０から受信される速度が取得装置９２０によって処理されるデータの速度に対して同期をとることによってオーバーフロー又はアンダーフロー状態が生じるのを防止するのに用いることができる。一実施の形態において、バッファレベルポインタ４４０は、図９に示すように入力トークン受信信号がバッファラッチ２３５に出力される度にバッファラッチ２３５にラッチされる。入力トークンによって決定された間隔で場ふぁレベルをモニタするとともに上記のようにサンプリングレートを調整することによって、サンプリングレートは、ホストコントローラ１１０がデータパケットを要求する速度に対して同期をとることができる。
【００４６】
図１０は、本発明によるサンプリングレートを調整する方法のフローチャート１０００を示す。ステップ１０１０において、データパケットのストリームを受信する。ステップ１０２０において、ストリーム内のデータパケットの各々を、受信の際にバッファメモリに格納する。既に説明したように、データパケットは、システムがデータパケットを処理する準備ができるまで先入先出（ＦＩＦＯ）メモリに順次に格納される。既に説明したように、パケットは、サンプリングレートに従ってシステムにより処理される。
【００４７】
ステップ１０３０において、所定の時間にデータパケットのストリームからのデータパケットがバッファメモリにどれだけ充填されたかを決定するために、バッファメモリのレベルがモニタされる。一実施の形態において、バッファメモリのレベルは、ＥＯＰ識別子を受信したときにモニタされる。ステップ１０４０において、サンプリングレートが、バッファメモリのしきい値位置に対するバッファメモリのレベルに応答して調整される。一実施の形態において、しきい値位置をメモリバッファの中間とすることができる。本実施の形態において、サンプリングレートを、バッファメモリがバッファメモリの中間に対してどれだけ充填されたかに応じて調整することができる。他の実施の形態において、しきい値をユーザによって決定することができる。
【００４８】
一実施の形態において、バッファメモリのレベルを、しきい値位置に対するバッファレベルの関係を決定するためにしきい値位置と比較することができる。バッファレベルがしきい値より下である場合、バッファの充填量を更に多くできるようにするためにサンプリングレートを減少することができる。サンプリングレートを減少することによって、サンプリングレートは、データパケットが受信装置によって送信すなわち要求される速度に対して更に同期を取りやすくなる。バッファレベルがしきい値より上である場合、到来するストリームのデータパケットによって充填されるバッファ量を減少するためにサンプリングレートを増大することができる。この場合も、サンプリングレートを減少することによって、サンプリングレートは、データパケットが受信装置によって送信すなわち要求される速度に対して更に同期を取りやすくなる。
【００４９】
本発明を、所定の実施の形態を参照して説明したが、種々の変形が可能であることは当業者によって認識される。例えば、本発明を、ＵＳＢ接続上で接続した装置に関連して説明したが、当業者が認識するように、本発明はＵＳＢ装置に限定されるものではなく、データストリームが同期を要求し又は同期の利益を得ることができる非同期環境で用いることができる。本発明の利益を得ることができる他のデータストリーム技術の例は、ＰＣＩ、ファイヤーワイヤー（ＩＥＥＥ１３９４）及びボイスオーバーＩＰ（ＶｏＩＰ）のデータストリームを含むが、それに限定されない。上記実施の形態の変更及び変形は、特許請求の範囲に用よってのみ制限された本発明によって提供される。
【図面の簡単な説明】
【００５０】
【図１】図１は、非同期環境においてデータストリームを処理する従来のシステムのブロック図である。
【図２】図２は、データストリームの同期をとる本発明の一実施の形態によるシステムのブロック図である。
【図３】図３は、複数のデータパケット３１０を具えるデータストリーム３００を示す。
【図４】図４は、本発明の一実施の形態によるバッファメモリ２３０の実現を示す。
【図５】図５は、データパケットのストリームと、パケットの終了（ＥＯＰ）の識別子と、ホストコントローラがデータパケットを出力装置に流す速度と同一の速度で出力装置がデータパケットのストリームを処理するシステムのバッファレベルとの間の関係を示すグラフである。
【図６】図６は、本発明の一実施の形態によるサンプリングレートコントローラ２４０のブロック図である。
【図７】図７は、本発明の一実施の形態によるサンプリングレートを調整するブロック図を示す。
【図８】図８は、データパケットと、パケットの終了（ＥＯＰ）識別子と、しきい値に対するラッチされたれ得ると、サンプリング補正との間の関係を示すグラフである。
【図９】図９は、取得装置９２０から演算装置に流れたデータの同期をとる本発明の一実施の形態によるシステムのブロック図である。
【図１０】データパケットのストリームの同期をとる本発明の一実施の形態によるフローチャート１０００である。
【図１】
2009503986.tif 000003
【図２】
2009503986.tif 000004
【図３】
2009503986.tif 000005
【図４】
2009503986.tif 000006
【図５】
2009503986.tif 000007
【図６】
2009503986.tif 000008
【図７】
2009503986.tif 000009
【図８】
2009503986.tif 000010
【図９】
2009503986.tif 000011
【図１０】
2009503986.tif 000012
【国際調査報告】
2009503986.tif 000013
2009503986.tif 000014
2009503986.tif 000015
2009503986.tif 000016