説明

データストリームのクロック同期化

【課題】クロックドリフトを補償するシステムを提供すること。
【解決手段】第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、該システムは、バスシステムを介してデータを送受信可能な2つ以上のデバイスを結合するデータリンクと、情報を感知し、該バスシステムを介して該情報を転送するように構成されたキャプチャデバイスと、該データリンクによって受信されたデータを一時的に格納するリングバッファと、該キャプチャデバイスによって受信されたデータの第一の長さと異なる第二の長さのデータをコピーまたは再構築する読み出しコントローラと、該リングバッファの中または外へのデータのアンダーフローまたはオーバーフローを検出し、クロックドリフトを補償するモニタとを備える、システム。

【発明の詳細な説明】
【技術分野】
【0001】
(発明の背景)
(2.技術分野)
本出願は、タイミングに関し、より具体的には、デバイス間でのデータ転送を同期化することに関する。
【背景技術】
【0002】
(3.関連技術)
デジタルシステムは、デバイス間の調整された通信に依存する。一部のシステムは、タイミング信号に依存して、情報の受信ストリームをいつ調査するかを決定する。タイミング情報を分配することは、大きな挑戦であり得る。タイミング信号は、生成され、分配され、そして、同期化され、送信デバイスと受信デバイスとの間の通信を可能にする。
【0003】
一部のシステムは、デバイス間で通信するために、別個のクロックを使用する。ドリフトが生じるとき、一つのデバイスが他のデバイスと同じ速さで情報を処理しないこともあり得るので、情報は失われ得る。一部のシステムは、クロックレートにおける何らかの望ましくないスキューを補償するために、情報の大きなブロックを故意に削除する。これらの処理は、一時的な発生(temporal occurence)を欠く。情報の大きなブロックが失われる際に、データストリームを破壊するか、あるいは不正なものとするアーチファクトが、データストリームの中に導入され得る。データが失われると、あるいは変化すると、その結果、受信された情報のみならず、また処理されるべき情報にも影響を与え得る破滅的なイベントまたは故障になり得る。それゆえ、大量の情報を削除することなく、クロックドリフトまたはスキューを補償するシステムに対するニーズが存在する。
【発明の開示】
【課題を解決するための手段】
【0004】
(概要)
システムは、第一のデバイスと第二のデバイスとの間でのデータフローを同期化する。該システムは、情報を感知して、転送するように構成されたキャプチャデバイスを含む。シンクロナイザは、該キャプチャデバイスを介して受信されたデータを格納する。読み出しコントローラは、該キャプチャデバイスによって受信されたデータの長さと等しくない長さで、データをコピーするか、あるいは読み出す。モニタは、該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、クロックドリフトを補償する。
【0005】
本発明の他のシステム、方法、特徴、および利点は、以下の図面および詳細な説明を考察すると、当業者には明らかであるか、あるいは明らかになる。このような追加のシステム、方法、特徴、および利点の全ては、本記述内に含まれ、本発明の範囲内にあり、そして、以下の請求項によって保護されることが意図される。
【0006】
本発明は、以下の図面および記載を参照して、より良好に理解され得る。図におけるコンポーネントは、必ずしも縮尺どおりではなく、その代わりに、本発明の原理を説明するために強調されている。さらに、図面において、同様の参照番号は、異なる図を通して、対応するパーツを示す。
【0007】
上記目的を達成するために、本発明は、例えば、以下の手段を提供する。
【0008】
(項目1)
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、該システムは、
バスシステムを介してデータを送受信可能な2つ以上のデバイスを結合するデータリンクと、
該データリンクと通信するキャプチャデバイスであって、情報を感知し、該バスシステムを介して該情報を転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するリングバッファであって、該データリンクによって受信されたデータを一時的に格納するリングバッファと、
該リングバッファにデータを書き込む書き込みコントローラと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信されたデータの第一の長さと異なる第二の長さのデータをコピーまたは再構築する読み出しコントローラと、
出力ポートにデータを送信するプレイバックデバイスと、
該リングバッファの中または外へのデータのアンダーフローまたはオーバーフローを検出し、キャプチャデバイスまたはプレイバックデバイスにブロッキングコールを送信することによって、クロックドリフトを補償するモニタと
を備える、システム。
【0009】
(項目2)
上記第一のデータリンクは、外部バスを備える、項目1に記載のシステム。
【0010】
(項目3)
上記データリンクと通信するデバイスドライバをさらに備える、項目1に記載のシステム。
【0011】
(項目4)
上記デバイスドライバは、2つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、項目1に記載のシステム。
【0012】
(項目5)
上記リングバッファは、先入れ先出しストレージデバイスを備える、項目1に記載のシステム。
【0013】
(項目6)
上記モニタは、上記プレイバックデバイスによって送信されるべきデータを構築または構文解析するように構成される、項目1に記載のシステム。
【0014】
(項目7)
上記キャプチャデバイスは、上記データが上記プレイバックデバイスによって送信されるレートとは異なるレートで処理されるデータを受信するように構成される、項目1に記載のシステム。
【0015】
(項目8)
上記リングバッファは、メモリの連続的なブロックを備える、項目1に記載のシステム。
【0016】
(項目9)
上記リングバッファは、メモリの不連続的なブロックを備える、項目1に記載のシステム。
【0017】
(項目10)
上記リングバッファは、アクセスポインタが所定のメモリアドレス範囲の外に動くのを防止するオーバーフローロジックを備える、項目1に記載のシステム。
【0018】
(項目11)
上記オーバーフローロジックは、ソフトウェア命令を介してディセーブルにされるように構成される、項目10に記載のシステム。
【0019】
(項目12)
上記モニタは、ウィンドウ処理機能によって、補償時間を導出するように構成される、項目1に記載のシステム。
【0020】
(項目13)
上記モニタは、同期ベースで、上記クロックドリフトを補償する、項目1に記載のシステム。
【0021】
(項目14)
上記モニタは、非同期ベースで、上記クロックドリフトを補償する、項目1に記載のシステム。
【0022】
(項目15)
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知して、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さと異なる第二の長さでデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償するモニタと
を備える、システム。
【0023】
(項目16)
上記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、2つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、項目15に記載のシステム。
【0024】
(項目17)
上記モニタは、非同期インターバルで、クロックドリフトを補償する、項目15に記載のシステム。
【0025】
(項目18)
上記シンクロナイザは、車両に結合される、項目15に記載のシステム。
【0026】
(項目19)
上記シンクロナイザは、公けにアクセス可能なネットワークに結合される、項目15に記載のシステム。
【0027】
(項目20)
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する方法であって、
第一のインターフェースでデータをキャプチャするステップと、
2つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるストレージデバイスにデータを書き込むステップと、
2つの異なるデータ長でデータを処理することによって、該ストレージデバイスの中または外へのデータのアンダーフローまたはオーバーフローを検出するステップと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償するステップと
を包含する、方法。
【0028】
(項目21)
上記出力データストリームをデバイスドライバに送信するステップをさらに包含する、項目20に記載の方法。
【0029】
(項目22)
上記クロックドリフトは、非同期インターバルで補償される、項目20に記載の方法。
【0030】
(項目23)
上記補償は、人を輸送するデバイス上で生じる、項目20に記載の方法。
【0031】
(項目24)
上記補償は、ノイズを低減するシステムで生じる、項目20に記載の方法。
【0032】
(項目25)
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する、コンピュータ読み出し可能な媒体であって、該補償することは、
第一のインターフェースでデータをキャプチャすることと、
2つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるメモリにデータを書き込むことと、
2つの異なるデータ長でデータを処理することによって、該メモリの中または外へのデータのオーバーフローまたはアンダーフローを検出することと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償することと
を包含する、コンピュータ読み出し可能な媒体。
【0033】
(項目26)
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知し、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さとは異なる第二の長さのデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出する手段であって、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償する手段と
を備える、システム。
【0034】
(項目27)
上記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、2つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する手段を備える、項目26に記載のシステム。
【0035】
(項目28)
上記アンダーフローまたはオーバーフロー状態を検出する上記手段は、非同期インターバルでクロックドリフトを補償する、項目26に記載のシステム。
【0036】
(項目29)
上記シンクロナイザは、車両に結合される、項目26に記載のシステム。
【0037】
(項目30)
上記シンクロナイザは、公けにアクセス可能なネットワークと通信する、項目26に記載のシステム。
【0038】
(摘要)
システムは、第一のデバイスと第二のデバイスとの間でのデータフローを同期化する。該システムは、バスを介してデータを送受信可能な2つ以上のデバイスを接続するデータリンクを含む。キャプチャデバイスは、情報を感知して、該バスシステムを介して該情報を転送する。リングバッファは、該バスを介して送信されたデータを一時的に格納する。読み出しコントローラは、該受信されたデータの長さと異なる長さのデータをコピーまたは再構築する。モニタは、該リングバッファの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、クロックドリフトを補償する。
【発明を実施するための最良の形態】
【0039】
(好ましい実施形態の詳細な説明)
同期化システムまたはアプリケーションは、通信媒体を介するデバイス間の情報の交換を改善する。このデバイスまたはアプリケーションは、1つ以上のデバイスにデータを提供し得、その1つ以上のデバイスからデータを受信し得るハードウェアデバイスまたはプログラムを備え得る。このシステムは、大きなブロックサイズを含む所定の長さで、データが通信されることを可能にするが、そのデータを受信または処理し得るコントローラ、プロセッサ、シンクロナイザ、またはメモリの動作に影響を及ぼさない。一部のシステムは、(単一のデジタルサンプルと同じくらい小さいこともあり得る)細かな解像度または非常に細かな解像度の補償を提供する。この補償は、一部のシステムおよびアプリケーションにおいて、ユーザによって制御され得るか、あるいは自動的に起こり得る。一部のシステムは、補償の影響を最小限にする頻繁なタイミングでの同期化を提供する。一部のシステムにおけるモニタまたは自己モニタソフトウェアまたはハードウェアは、データが受信され、処理されるレートにおける差を検出し得る。一部のモニタシステムまたはソフトウェアモジュールは、補償が生じ得る時間またはインターバルを予測し得、補償をスケジューリングし得る。計画的な同期化は、一部のシステムの性能および/または信頼性を改善し得る。
【0040】
図1は、第一のデバイスドライバ102および第二のデバイスドライバ104に結合される同期化システムまたはアプリケーション100である。図1において、デバイスドライバ102および104は、通信を容易にするハードウェアデバイスまたはソフトウェアコンポーネントを備える。これらのデバイスドライバ102および104は、アダプタに結合され得る翻訳機を含み得る。翻訳機は、言語またはデータフォーマットを1つ以上の言語またはフォーマットに翻訳し、1つ以上のデバイス間の動作互換性を確保する。デバイスドライバ102および104によって操作が実行されるシーケンスを判断するタイミングは、2つ以上のクロックを含み得る。図1において、第一のクロックC1および第二のクロックC2は、データが共有されることを可能にするタイミングパルスの定常ストリームを生成する。一部の同期化システムまたはアプリケーションにおいて、デバイスドライバ102および104は、タイミング情報を共有または交換しない。
【0041】
同期化システムまたはアプリケーション100は、2つのスレッドを介して動作する。図1において、スレッドは、2つの非同期ソフトウェアルーチンまたはハードウェアスレッドを備える。第一のスレッド106は、第一のデバイスドライバ102への読み出しコールをブロックし(待ち)、第二のスレッド108は、第二のデバイスドライバ104への書き込みコールをブロックする。これらのスレッド106および108は、一時的にデータを格納するリングバッファ110のようなバッファに、データをプッシュし、そのデータをバッファからプルする。一部のシステムにおいて、リングバッファ110は、先入れ先出しストレージデバイスを備える。このデバイスは、コール、読み出し、モニタ、または自己モニタデバイスまたはプログラムが、データを構築および/または構文解析し得るように、アクセスを提供する。リングバッファ110は、メモリの連続的なブロックを備え得るか、あるいは読み出され、書き込まれ得る異なるメモリ(例えば、非連続的な)の間に撒き散らされ(spilt)得る。一部のシステムにおいて、リングバッファ110は、直接メモリアクセスを提供し、この直接メモリアクセスは、プロセッサの関与しないメモリアクセスを備え、メモリと周辺デバイスとの間で直接データを転送し得る。一部の代替的なシステムにおいて、リングバッファ110は、読み出しコール上のブロックを起動し得るオーバーフローロジック(例えば、ハードウェアまたはソフトウェア)を含み得る。一部の同期化アプリケーションおよびシステム100において、オーバーフローロジックは、アクセスポインタがリングバッファ110によって管理された所定のアドレス範囲から外れて移動することを防止し得る。これらの同期化アプリケーションおよびシステム100において、オーバーフローロジックは、必要なら、ソフトウェア命令またはハードウェア選択を介して、ディセーブル(disable)にされ得る。
【0042】
第一のキャプチャデバイス112は、入力バスを介して第一のデバイスドライバ102と通信する。第一のキャプチャデバイス112は、情報を感知し、その情報を書き込みコントローラ114に転送する。このコントローラ114は、内部バスを介してリングバッファ110に書き込み得る。第一のクロックC1および第二のクロックC2が、同一の周波数で動作している場合、モニタまたは自己モニタソフトウェアまたはハードウェア116は、リングバッファ110内に格納される一定のデータ長を検出し得る。この2つのクロックレートが等しくないとき、あるいは異なるレートまたは周波数で動作しているとき、リングバッファ110内に格納されるデータ量は、クロックC1およびC2の速度に依存して増加または減少し得る。
【0043】
データがリングバッファ110の中に流れると、そのデータは、読み出しコントローラ118によって内部バスを介して読み出され得る。読み出しコントローラ118は、格納されたデータを再構築またはコピーするように構成され得、出力バスを介して、そのデータを第二のデバイスドライバ104に送信し得る。読み出しコントローラ118を備えるソフトウェアまたはデバイスは、そのデータを再構築または複製し得、そのデータを所定または所望の長さで、第二のデバイスドライバ104に送信する。
【0044】
一部の同期化システムまたはアプリケーション100は、実質的に等しい長さの情報を送受信し得る。これらのシステムおよびアプリケーション100において、モニタまたは自己モニタソフトウェアまたはハードウェア116は、受信または送信されるデータ長と同じくらいのサイズである解像度で、そのリングバッファ110のサイズの変化を検出または観察し得る。図2において、解像度は、「s1」で指定される。変化は、(サンプリングレートおよびビット解像度に依存して、所定の時間量に対応する)バイトのように、「s1」の長さごとに観察され得るのみなので、クロックドリフト補償は、データが送信、または処理、あるいは受信されるインターバルで、データストリームに付与され得る。図2において、インターバルは、「s1」の長さの倍数または約数であり得る。一部の同期化システムまたはアプリケーションにおいて、タイミング条件が不完全なとき、データのアンダーフローまたはオーバーフローが生じ得る。一部の状況において、データの大きなブロックまたはユニットの挿入、複製、および/または除去は、システムまたはアプリケーションを破壊し得る。
【0045】
また図1に示される代替の同期化システムまたはアプリケーション100において、システムおよびアプリケーションは、データのデータストリームまたはデータのパケットを、データの不均等なブロックサイズまたは異なるブロックサイズに解体されるように構成される。この代替において、リングバッファ110に書き込まれたデータのサイズ(例えば、この説明におけるブロックサイズ)は、リングバッファ110から再構築またはコピーされたデータのサイズと等しくないこともあり得る。システムまたはアプリケーション100において、スレッド106および108の双方は、それぞれデバイスドライバ102および104と通信する。反復ソフトウェアまたは通信ループを介して、第一のスレッド106は、第一のデバイスドライバ102と通信し、第二のスレッド108は、第二のデバイスドライバ104と通信する。第一のキャプチャデバイス112を介して、第一のスレッド106は、入力バスを介するデータのブロックをキャプチャする。内部バスを介して、書き込みコントローラ114は、この情報を、C1のインターバルで、s1のブロック長さのリングバッファ110の中に書き込む。読み出しコントローラ118は、リングバッファ110に書き込まれたデータの長さとは異なる長さのデータのチャンク(chunk)を読み出し、コピーまたは再構築しているので、モニタまたは自己モニタ(例えば、ソフトウェアコンポーネントまたはハードウェアデバイス)116は、リングバッファ110の中に流れるデータのオーバーフロー、またはリングバッファ110から外へ流れるアンダーフローを検出し得る。図3において、自己モニタ116は、タイミングよく、リングバッファ110内に格納されたデータの量の増加を検出した。リングバッファ110から読み出されたデータのブロックまたはフレームの長さs2が、リングバッファ110に書き込まれたデータのブロックまたはフレームの長さs1より大きいとき、補償ファクタs3は、一部のシステムおよびアプリケーションにおいて、式1によって計算され得る。図3において、被除数は、s1を含み、除数はs2を含み、
s3=剰余(s2/s1) (ここで、s2>s1) 式1
である。モニタまたは自己モニタ116は、時間を導出して、これらの差を補償し得る。一つのシステムまたはアプリケーションは、リングバッファ内に格納されたデータの量をトラックし、N点ウィンドウ付き平均(N−path windowed average)を計算する。ここで、Nは、式2:
N=((s2/s3)−1) 式2
で示される。
【0046】
図4に示すように、2つのクロック間のドリフトは、s3バイトの解像度で観察され得る。s3は、ユーザによって選択され得るか、あるいはシステムまたはアプリケーション設計によって決定され得る2つのブロックまたはフレームサイズs1およびs2から導出されるので、クロックドリフトの補償の任意の所望の解像度が、獲得され得る。このシステムは、(再び、一部のシステムおよびアプリケーションにおける2つのクロックの相対的速度に依存して)、リングバッファ内のデータを挿入または除去することによって、クロックドリフトを補償され得る。s3は、望まれるように小さくされ得るので、その結果生じるデータストリームへの混乱(disruption)は、最小化され得る。
【0047】
図5は、代替の同期化システムまたはアプリケーション500である。このシステムまたはアプリケーション500は、マスタ/スレーブ配置で構成される。ここで、マスタスレッド502と呼ばれる1つのスレッドは、スレーブスレッド504と呼ばれる別のスレッドを制御する。図5において、キャプチャデバイス112は、入力バスを介して、第一のデバイスドライバ102と通信する。キャプチャデバイス112は、データのブロックまたはフレームを検出し得、それを書き込みコントローラ506に送信し得る。書き込みコントローラ506は、そのデータのブロックまたはフレームをシンクロナイザ508に書き込み得る。シンクロナイザ508は、情報が2つ、3つ、4つ、またはそれ以上のデバイスで処理されるレート間の差を補償するストレージデバイスを備え得る。デバイスドライバ102および104を駆動するタイミング信号が、異なる周波数で発生するとき、モニタ512(例えば、ソフトウェアルーチンまたはハードウェアモジュール)は、シンクロナイザ508内のストレージ容量の変化を検出し得る。異なるブロックサイズが、シンクロナイザ508に書き込まれるとき、あるいはシンクロナイザ508から読み出されるとき、モニタ512は、ストレージ使用の変化を観察し得る。オーバーフローが生じている場合、あるいは代替として、オーバーフローが生じそうであるか、または生じる寸前である場合、モニタ512は、キャプチャデバイス112が、第一のデバイスドライバ102からのデータをグラブ(grab)するのを防止するブロッキングコールを送信し得る。代替として、または組み合わせて、モニタ512は、シンクロナイザ508に、格納されたデータのブロックまたはフレームに上書きするように命令し得るか、あるいは書き込みコントローラ506に、リモートであるが、シンクロナイザ508と通信中であり得る補助メモリに書き込むように指示し得る。アンダーフローが生じている場合、あるいは代替として、アンダーフローが生じそうであるか、または生じる寸前である場合、モニタ512は、第二のブロッキングコールを送信することにより、プレイバックデバイス120が、デバイスドライバ104に情報を送信するのを防止し得る。代替として、アンダーフロー状態が沈静化するか、終了するまでに、データのブロックまたはフレームを繰り返すか、あるいは複製するように、命令し得る。
【0048】
動作において、シンクロナイザ508へのデータフローは、読み出しコントローラ510によって、内部バスを介して、読み出され得る。同期化システムまたはアプリケーション500は、オーバーフローまたはアンダーフロー状態を補償しない場合、読み出しコントローラ510は、出力データをコピーまたは再構築し、そのデータを出力バスを介して、補償することなしに、1つ以上のデバイスまたはデバイスドライバに送信する。通信は、内部バス、読み出しコントローラ510、プレイバックデバイス120、および出力バスを介して生じ得る。代替として、補償および送信処理は、同時に、またはほぼ同時に、あるいは異なるときに、生じ得る。
【0049】
同期化システムおよびアプリケーション100および500は、多数のデバイス、デバイスドライバ、およびインターフェース(例えば、接続がなされるポイント)に適応可能である。一部のスピーチ同期化システムまたはアプリケーションは、人または物を輸送するデバイスまたは構造(例えば、図6に示される車両)、図7に示されるような公的または私的なアクセス可能なネットワーク、図8に示されるような陸線および無線電話ならびにオーディオシステムのように、声および他の音をリモートなロケーションに送信され、そこで再構成され得る形式に変換する機器(instrument)、図9に示されるようなビデオシステムと、図10のノイズ低減システム、ナビゲーションシステムを含むクロックドリフトに敏感であり得る他の固定または移動システムと、インターフェースするか、通信するか、あるいは結合する。同期化システムまたはアプリケーションは、(例えば、iPod(登録商標)のような)携帯型のアナログまたはデジタルのオーディオおよび/またはビデオプレイヤ、ナビゲーションシステム、あるいはスピーチ強化システムを含むか、インターフェースするか、またはスピーチ強化ロジックを保持するマルチメディアシステムとインターフェースし得る。同期化システムおよびアプリケーションは、また、上述のシステムのコンポーネントの一部または全部をインプリメントするデジタル信号処理システム内で、データ転送を同期化し得る。
【0050】
図11は、2つ以上のデバイス間のデータ転送を同期化し得る同期化処理の流れ図である。デジタル信号処理技術が使用されるとき、処理は、1つのデジタルサンプルと同じくらい小さなものを介して、クロックドリフトを補償し得て、ユーザによってプログラムされ得るか、自動的に生じ得るか、あるいは非同期な時間に生じ得る頻繁な間隔で、データストリームを同期化し得る。この方法は、データストリームまたはデータのパケットを、不均等な、または異なるデータのブロックサイズ(一部は、長さにおいて、実質的に、あるいはほぼ等しい)に解体し得る。図11に示される同期化処理において、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれたデータのサイズのそれぞれは(例えば、この説明のブロックサイズ)、リングバッファ、シンクロナイザ、またはストレージデバイスのそれぞれから再構築またはコピーされたデータのサイズと等しくない。図11において、スレッドは、インターフェースまたはデバイスドライバを含み得るデバイスと通信する。第一のスレッドは、第一のデバイスと通信し、第二のスレッドは、第二のデバイスと通信する。スレッドを介する通信は、状態が検出されるまで、繰り返し生じ得る。図11において、状態は、データフローがないこと、あるいはプログラムされ得る別の状態を備え得る。
【0051】
1102で、データがキャプチャされる。データは、1つ以上のデバイスから受信されたデータのブロックまたはフレームを備え得る。1つ以上のハードウェア経路を介して、1104で、時限インターバルに、データがブロック長さで、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれる。データは、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれたデータと異なる長さで、再構築またはコピーされるので、モニタまたは自己モニタ(例えば、ソフトウェアルーチンまたはハードウェアデバイス)は、1106で、リングバッファの中に流れるデータのオーバーフロー、またはリングバッファから外へ流れるデータのアンダーフローを検出し得る。図11で、自己モニタは、リングバッファ、シンクロナイザ、またはストレージデバイスに、タイミングよく格納されたデータの量の増加を検出し得る。リングバッファ、シンクロナイザ、またはストレージデバイスから読み出されたデータのブロックまたはデータのフレームの長さs2が、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれたデータのブロックまたはデータのフレームの長さs1より大きいとき、補償ファクタs3は、1108で導出され得る。任意のファクタが、導出され得るが、1つのファクタは、式1によって、幾つかの処理で計算され得る。式1において、被除数は、s1を含み、除数はs2を含む。
s3=剰余(s2/s1) (ここで、s2>s1) 式1
モニタまたは自己モニタは、1108で、時間を導出して、これらの差を補償し得る。1つの方法は、リングバッファ、シンクロナイザ、またはストレージデバイスのサイズをトラックし得、N点ウィンドウ付き平均を計算する。Nは、式2
N=((s2/s3)−1) 式2
として示される。
【0052】
2つのクロック間のドリフトは、s3バイトの解像度で観察され得る。s3は、(ユーザによって選択またはプログラムされ得るか、あるいはシステムまたはアプリケーションの設計によって決定され得る)2つのブロックまたはフレームのサイズs1およびs2から導出されるので、クロックドリフトにおける任意の解像度が、取得され得る。この方法は、次いで、1112で、データを挿入し(例えば、アンダーフロー状態1110に対する例示的な補償)、データを除去し、データを削除し、リングバッファ、シンクロナイザ、またはストレージデバイスから出力に読み出されたデータを構文解析する(再び、一部の方法で2つのクロックの相対的な速度に依存し得る)ことによって、クロックドリフトを補償し得る。s3は、ユーザが望むように小さくあり得るので、その結果生じるデータストリームへの混乱は、最小化され得る。
【0053】
図11の方法は、信号保持媒体、メモリのようなコンピュータ読み出し可能な媒体で、コード化され得、1つ以上の集積回路、1つ以上のプロセッサのようなデバイス(例えば、プロセッサのそれぞれまたは一部と通信するデバイスキャプチャプロセッサ、書き込みコントローラプロセッサ、モニタプロセッサ、読み出しコントローラプロセッサ、プレイバック制御プロセッサ)内にプログラムされ得、あるいはコントローラまたはコンピュータによって処理され得る。この方法が、ソフトウェアによって実行される場合、ソフトウェアは、ストレージデバイス、シンクロナイザ、通信インターフェース、あるいは送信機と通信する不揮発性または揮発性メモリに常駐またはインターフェースするメモリに、常駐し得る。回路または電子デバイスは、別のロケーションにデータを送信するように設計される。メモリは、ロジカル機能をインプリメントするための実行可能な命令の順序だったリストを含み得る。上述のロジカル機能または任意のシステムエレメントは、光学回路網、デジタル回路網を介して、ソースコードを介して、アナログ回路網を介して、アナログの電気信号、オーディオ信号、またはビデオ信号またはその組み合わせのようなアナログソースを介して、インプリメントされ得る。ソフトウェアは、任意のコンピュータ読み出し可能な媒体または信号保持媒体において、命令実行可能なシステム、装置、またはデバイスによって使用するために、あるいはこれらと接続して、具現化され得る。このようなシステムは、コンピュータベースのシステム、プロセッサを含むシステム、あるいは命令実行可能なシステム、装置、またはデバイスからの命令を選択的に取り出し(fetch)得て、自身も命令を実行し得る別のシステムを含み得る。
【0054】
「コンピュータ読み出し可能な媒体」、「マシン読み出し可能な媒体」、「伝播信号」媒体、および/または「信号保持媒体」は、命令実行可能なシステム、装置、またはデバイスによって使用するためのソフトウェア、またはこれらと接続するソフトウェアを含むか、格納するか、通信するか、伝播するか、あるいは運搬する、任意のデバイスを備え得る。マシン読み出し可能な媒体は、選択的に、電気、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、デバイス、または伝播媒体であり得るが、これらに限定されない。マシン読み出し可能な媒体の例の非網羅的なリストは、1つ以上のワイヤを有する「電子的」電気接続、携帯型の磁気または光学ディスク、ランダムアクセスメモリ「RAM」(電子)のような揮発性メモリ、読み出し専用メモリ「ROM」(電子)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)(電子)、または光ファイバ(光学)を含む。マシン読み出し可能な媒体は、有形媒体を含み得、ソフトウェアが、(例えば、光学スキャンによって)画像または他のフォーマットとして電子的に格納され得る際に、その有形媒体上に印刷され、次いで、編集および/または解釈されるか、あるいはそれら以外の処理がなされ得る。処理された媒体は、次いで、コンピュータおよび/またはマシンのメモリに格納され得る。
【0055】
上述の同期化システムまたは方法は、ユーザによって選択またはプログラムされ得るか、あるいはシステムまたはアプリケーションの設計によって決定され得る。補償の任意の所望の解像度は、非同期または同期なインターバルで、システム、アプリケーション、または方法によって取得され得る。このシステムは、主ストレージデバイスまたは補助ストレージデバイスにおいて、データを挿入、除去、削除、構文解析することによって、あるいはこれらを組み合わせることによって、クロックドリフトを補償し得る。補償の所望の解像度は、ユーザまたはプログラマが望むように、小さくされ得る。結果として生じるデータストリームへの混乱はいずれも、最小化され得る。
【0056】
このシステムまたはアプリケーションは、通信媒体を介するデバイス間の情報の交換を改善する。このシステムは、大きなブロックサイズを含む所定の長さで、データが通信されることを可能にするが、そのデータの受信または処理し得るデバイスに影響を及ぼさない。一部のシステムは、(単一のデジタルサンプルと同じくらい小さいこともあり得る)細かな解像度または非常に細かな解像度補償を提供する。この補償は、一部のシステムおよびアプリケーションにおいて、ユーザによって制御され得るか、あるいは自動的に起こり得る。一部のシステムは、補償の影響を最小限にする頻繁なタイミングでの再発生同期化を提供する。一部のシステムにおけるモニタまたは自己モニタソフトウェアまたはハードウェアは、データが受信され、処理されるレートにおける差を検出し得る。一部のモニタシステムまたはソフトウェアモジュールは、補償が生じ得る時間またはインターバルを予測し得、補償をスケジューリングし得る。
【0057】
本発明の様々な実施形態が記載されてきたが、多数のさらなる実施形態およびインプリメンテーションが、本発明の範囲内で可能であることは、当業者には明らかである。したがって、本発明は、添付される請求項およびその均等物との観点以外によって、制約されるべきではない。
【図面の簡単な説明】
【0058】
【図1】図1は、デバイスドライバに結合された同期化システムである。
【図2】図2は、等しいブロックサイズに対するリングバッファサイズ対時間を示す。
【図3】図3は、等しくないブロックサイズに対するリングバッファサイズ対時間を示す。
【図4】図4は、図3の時間にわたるウィンドウ付き平均である。
【図5】図5は、デバイスドライバに結合された代替の同期化システムである。
【図6】図6は、車両と通信する同期化システム、あるいは車両に結合された同期化システムである。
【図7】図7は、ネットワークと通信する同期化システム、あるいはネットワークに結合された同期化システムである。
【図8】図8は、電話と通信する同期化システム、あるいは電話に結合された同期化システムである。
【図9】図9は、ビデオシステムと通信する同期化システム、あるいはビデオシステムに結合された同期化システムである。
【図10】図10は、ノイズ低減システムと通信する同期化システム、あるいはノイズ低減システムに結合された同期化システムである。
【図11】図11は、同期化処理である。
【符号の説明】
【0059】
100、500 同期化システムまたはアプリケーション
102 第一のデバイスドライバ
104 第二のデバイスドライバ
106 第一のスレッド
108 第二のスレッド
110 リングバッファ
112 第一のキャプチャデバイス
114、506 書き込みコントローラ
116、512 モニタ
118、510 読み出しコントローラ
120 プレイバックデバイス
502 マスタスレッド
504 スレーブスレッド
508 シンクロナイザ
C1、C2 クロック

【特許請求の範囲】
【請求項1】
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、該システムは、
バスシステムを介してデータを送受信可能な2つ以上のデバイスを結合するデータリンクと、
該データリンクと通信するキャプチャデバイスであって、情報を感知し、該バスシステムを介して該情報を転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するリングバッファであって、該データリンクによって受信されたデータを一時的に格納するリングバッファと、
該リングバッファにデータを書き込む書き込みコントローラと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信されたデータの第一の長さと異なる第二の長さのデータをコピーまたは再構築する読み出しコントローラと、
出力ポートにデータを送信するプレイバックデバイスと、
該リングバッファの中または外へのデータのアンダーフローまたはオーバーフローを検出し、キャプチャデバイスまたはプレイバックデバイスにブロッキングコールを送信することによって、クロックドリフトを補償するモニタと
を備える、システム。
【請求項2】
前記第一のデータリンクは、外部バスを備える、請求項1に記載のシステム。
【請求項3】
前記データリンクと通信するデバイスドライバをさらに備える、請求項1に記載のシステム。
【請求項4】
前記デバイスドライバは、2つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、請求項1に記載のシステム。
【請求項5】
前記リングバッファは、先入れ先出しストレージデバイスを備える、請求項1に記載のシステム。
【請求項6】
前記モニタは、前記プレイバックデバイスによって送信されるべきデータを構築または構文解析するように構成される、請求項1に記載のシステム。
【請求項7】
前記キャプチャデバイスは、前記データが前記プレイバックデバイスによって送信されるレートとは異なるレートで処理されるデータを受信するように構成される、請求項1に記載のシステム。
【請求項8】
前記リングバッファは、メモリの連続的なブロックを備える、請求項1に記載のシステム。
【請求項9】
前記リングバッファは、メモリの不連続的なブロックを備える、請求項1に記載のシステム。
【請求項10】
前記リングバッファは、アクセスポインタが所定のメモリアドレス範囲の外に動くのを防止するオーバーフローロジックを備える、請求項1に記載のシステム。
【請求項11】
前記オーバーフローロジックは、ソフトウェア命令を介してディセーブルにされるように構成される、請求項10に記載のシステム。
【請求項12】
前記モニタは、ウィンドウ処理機能によって、補償時間を導出するように構成される、請求項1に記載のシステム。
【請求項13】
前記モニタは、同期ベースで、前記クロックドリフトを補償する、請求項1に記載のシステム。
【請求項14】
前記モニタは、非同期ベースで、前記クロックドリフトを補償する、請求項1に記載のシステム。
【請求項15】
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知して、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さと異なる第二の長さでデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償するモニタと
を備える、システム。
【請求項16】
前記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、2つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、請求項15に記載のシステム。
【請求項17】
前記モニタは、非同期インターバルで、クロックドリフトを補償する、請求項15に記載のシステム。
【請求項18】
前記シンクロナイザは、車両に結合される、請求項15に記載のシステム。
【請求項19】
前記シンクロナイザは、公けにアクセス可能なネットワークに結合される、請求項15に記載のシステム。
【請求項20】
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する方法であって、
第一のインターフェースでデータをキャプチャするステップと、
2つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるストレージデバイスにデータを書き込むステップと、
2つの異なるデータ長でデータを処理することによって、該ストレージデバイスの中または外へのデータのアンダーフローまたはオーバーフローを検出するステップと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償するステップと
を包含する、方法。
【請求項21】
前記出力データストリームをデバイスドライバに送信するステップをさらに包含する、請求項20に記載の方法。
【請求項22】
前記クロックドリフトは、非同期インターバルで補償される、請求項20に記載の方法。
【請求項23】
前記補償は、人を輸送するデバイス上で生じる、請求項20に記載の方法。
【請求項24】
前記補償は、ノイズを低減するシステムで生じる、請求項20に記載の方法。
【請求項25】
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する、コンピュータ読み出し可能な媒体であって、該補償することは、
第一のインターフェースでデータをキャプチャすることと、
2つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるメモリにデータを書き込むことと、
2つの異なるデータ長でデータを処理することによって、該メモリの中または外へのデータのオーバーフローまたはアンダーフローを検出することと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償することと
を包含する、コンピュータ読み出し可能な媒体。
【請求項26】
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知し、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さとは異なる第二の長さのデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出する手段であって、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償する手段と
を備える、システム。
【請求項27】
前記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、2つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する手段を備える、請求項26に記載のシステム。
【請求項28】
前記アンダーフローまたはオーバーフロー状態を検出する前記手段は、非同期インターバルでクロックドリフトを補償する、請求項26に記載のシステム。
【請求項29】
前記シンクロナイザは、車両に結合される、請求項26に記載のシステム。
【請求項30】
前記シンクロナイザは、公けにアクセス可能なネットワークと通信する、請求項26に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2008−48392(P2008−48392A)
【公開日】平成20年2月28日(2008.2.28)
【国際特許分類】
【出願番号】特願2007−186333(P2007−186333)
【出願日】平成19年7月17日(2007.7.17)
【出願人】(504280403)キューエヌエックス ソフトウェア システムズ (ウェイブメイカーズ), インコーポレイテッド (13)
【Fターム(参考)】