(57)【特許請求の範囲】
【請求項１】
非同期ネットワークを介して、パケット化されたマルチメディアデータを受信し、パケット化されたマルチメディアデータを送信するサーバ装置であって、
信号源から、同期情報を含むパケット化されたマルチメディアデータを受信するデータ入力と、
クロックを入力するクロック入力と、
前記データ入力および前記クロック入力に結合され、前記クロックを、前記同期情報に応答して前記信号源に関連するクロックと同期させるコントローラであって、前記パケット化されたマルチメディアデータが含まれるデータフレームを生成するコントローラと、
前記非同期ネットワークに結合され、前記データフレームをクライアントデバイスに送信するデータフレーム出力と、
前記コントローラ，前記クロック入力および前記データフレーム出力に結合され、同期タイムスタンプを前記それぞれのデータフレームに置くタイムスタンプデバイスであって、前記同期タイムスタンプはそれぞれの前記データフレームが前記非同期ネットワークに置かれる時刻を示し、それによってクライアントデバイスが、前記同期タイムスタンプに応答して前記クライアントデバイスと関連するクロックを、前記サーバ装置と関連する前記クロックに同期させるタイムスタンプデバイスと
を備えることを特徴とするサーバ装置。
【請求項２】
前記コントローラは前記パケット化されたマルチメディアデータの受信に応答してデータフロータイムスタンプを生成し、それぞれのデータフロータイムスタンプは前記データ入力でそれぞれのマルチメディアデータパケットが受信された時刻を示し、前記データフレームは前記パケット化されたマルチメディアデータおよび関連データフロータイムスタンプを含み、前記クライアントデバイスは、前記データフロータイムスタンプに応答して前記データ入力で前記パケット化されたマルチメディアデータが受信されるレートに対応するように前記クライアントデバイスにおける前記データフローレートを制御することを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記データフレームは、データフレームヘッダ，同期タイムスタンプを受け付けるためタイムスタンプデータ部分、および、パケット化されたマルチメディアデータおよびその対応するデータフロータイムスタンプを受け付けるためのデータ部分を含むことを特徴とする請求項２に記載のサーバ装置。
【請求項４】
前記タイムスタンプデータ部分は、同期タイムスタンプを受け付けるための第１のタイムスタンプデータ部分と、前記クライアントデバイスによって追加された同期タイムスタンプを受け付けるための第２のタイムスタンプデータ部分を含むことを特徴とする請求項３に記載のサーバ装置。
【請求項５】
前記非同期ネットワークは無線ネットワークであることを特徴とする請求項２に記載のサーバ装置。
【請求項６】
非同期ネットワークを介して、パケット化されたマルチメディアデータを送信する方法であって、
信号源から、同期情報を含む前記パケット化されたマルチメディアデータを受信するステップと、
前記同期情報に応答してサーバクロックを、前記信号源に関連するクロックと同期させるステップと、
前記パケット化されたマルチメディアデータが含まれるデータフレームを生成するステップと、
前記データフレームを前記非同期ネットワークに置き、前記データフレームをクライアントデバイスに送信するステップとを含み、同期タイムスタンプが生成されて各データフレーム内に置かれ、それぞれの同期タイムスタンプは前記それぞれのデータフレームが前記非同期ネットワークに置かれた時刻を示し、前記クライアントデバイスは、前記同期タイムスタンプに応答して前記クライアントデバイスに関連するクロックを、前記サーバクロックと同期させることを特徴とする方法。
【請求項７】
さらに加えて、前記パケット化されたマルチメディアデータを受信するとデータフロータイムスタンプを生成し、各データフロータイムスタンプは、対応するマルチメディアデータパケットが受信された時刻を示すステップを含み、データフレームを生成する前記ステップは、前記パケット化されたマルチメディアデータを含むデータフレームおよびそこに含まれる前記データフロータイムスタンプを生成するステップを含み、前記クライアントデバイスが前記データフロータイムスタンプに応答して前記パケット化されたマルチメディアデータが受信されるレートに対応するように、前記クライアントデバイスの前記データフローレートを制御することを特徴とする請求項６に記載の方法。
【請求項８】
非同期ネットワークを介して受信したデータフレームを処理する装置であって、
前記非同期ネットワークに結合され、サーバデバイスによって送信された前記データフレームを受信するデータフレーム入力であって、前記サーバデバイスは、同期情報を含むパケット化されたマルチメディアデータを信号源から受信し、前記同期情報に応答して前記サーバデバイスと関連するクロックを前記信号源に関連するクロックと同期させ、前記マルチメディアデータが含まれるデータフレームを生成し、それぞれのデータフレームは非同期ネットワーク上にデータフレームが置かれた時刻を示す第１の同期タイムスタンプをさらに含む、入力と、
前記データフレーム入力に結合され、前記データフレーム入力で前記それぞれのデータフレームが受信された時刻を示す第２の同期タイムスタンプを生成するタイムスタンプデバイスと、
クロックを入力するクロック入力と、
前記クロック入力および前記タイムスタンプデバイスに結合され、前記第１の同期タイムスタンプおよび前記第２の同期タイムスタンプに応答して前記クロックを、前記サーバデバイスに関連するクロックと同期させるコントローラと
を備えることを特徴とする装置。
【請求項９】
前記データフレームはさらに前記パケット化されたマルチメディアデータに関連するデータフロータイムスタンプを含み、前記データフロータイムスタンプは前記サーバによって各マルチメディアデータパケットが受信された時刻を示し、
さらに加えて、前記パケット化されたマルチメディアデータを格納するバッファ、およびデコーダを備え、
前記コントローラは、前記データフロータイムスタンプに応答して前記サーバで前記パケット化されたマルチメディアデータが受信されるレートに対応するように、前記パケット化されたマルチメディアデータが前記デコーダに転送されるレートを制御することを特徴とする請求項８に記載の装置。
【請求項１０】
前記非同期ネットワークは無線ネットワークであることを特徴とする請求項８に記載の装置。
【請求項１１】
非同期ネットワークを介したデータフレームの受信に応答してクライアントデバイスを制御する方法であって、
サーバデバイスによって送信された前記データフレームをクライアントデバイスで受信するステップであって、前記サーバデバイスは、同期情報を含むパケット化されたマルチメディアデータを信号源から受信し、前記同期情報に応答して前記サーバデバイスと関連するクロックを前記信号源に関連するクロックと同期させ、前記マルチメディアデータが含まれるデータフレームを生成し、それぞれのデータフレームは非同期ネットワーク上にデータフレームが置かれた時刻を示す第１の同期タイムスタンプをさらに含む、ステップと、
前記データフレームを受信したときクライアントデバイスで第２のタイムスタンプを生成し、それぞれの第２のタイムスタンプが前記非同期ネットワークを介してデータフレームのうちのデータフレームがそれぞれ受信された時刻を示すステップと、
前記第１の同期タイムスタンプと前記第２の同期タイムスタンプに応答して前記クライアントデバイスと関連するクロックを前記サーバデバイスと関連するクロックと同期させるステップと
を含むことを特徴とする方法。
【請求項１２】
前記データフレームはパケット化されたマルチメディアデータおよびデータフロータイムスタンプを含み、それぞれのデータフロータイムスタンプは前記サーバデバイスによって対応するマルチメディアデータパケットが受信された時刻を示し、さらに、
前記データフロータイムスタンプに応答して前記サーバデバイスで前記パケット化されたマルチメディアデータが受信されたレートに対応するように、前記パケット化されたマルチメディアデータをバッファからデコーダに転送するレートを制御するステップを
含むことを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、非同期通信ネットワークに関し、より詳細には、マルチメディアデータパケットからジッタを除去するためにシステムレベルのクロッキング方式を有する非同期マルチメディアデジタルホームネットワークに関する。
【０００２】
デジタル通信技術の最近の発展により、デジタルホームネットワーク（「ＤＨＮ」）の実行可能性が高まり、家庭内のさまざまなデバイスの相互通信が可能になってきた。特に、ブロードバンドアクセスの利用が広がり、家庭内のさまざまなデバイスをブロードバンドアクセスに結合されている単一のゲートウェイデバイスに結びつけ、マルチメディア情報に集中アクセスし配布できることが望ましいものとなっている。このようなデジタルホームネットワークでは、ゲートウェイデバイスにより、マルチメディアコンテンツにアクセスしそれをバッファし、ネットワークに結合されている各種のクライアントデバイスから要求されたときネットワーク経由でコンテンツを配布する。
【０００３】
Ｅｔｈｅｒｎｅｔ（登録商標）はＬＡＮを実施するために共通のオプションである。Ｅｔｈｅｒｎｅｔ（登録商標）は非同期衝突検出ネットワーク(asynchronous collision detect network)である。ＨＰＮＡもまた、非同期衝突検出ネットワークであり、送電線を利用した一部のネットワークは多くの場合、非同期衝突検出ネットワークである。しかし、そのようなネットワークをマルチメディアコンテンツの配信に使用した場合、問題が生じることがある。
【０００４】
図１は、マルチメディアネットワークを示すシステム図である。システム１００は、複数の通信ネットワーク１０５−１０７のいずれかによりメディアサーバ１０３に結合された複数のデバイス１０８−１１３を備える。システム１００では、メディアサーバ１０３は衛星放送用パラボラアンテナ(satellite dish)１０２を介してマルチメディアコンテンツを受信し、コンテンツをバッファし、ネットワークに結合されている各種デバイスからの要求に応じてコンテンツを配信する。メディアサーバ１０３はさらに、ケーブル，ＤＳＬなど、複数の知られているデジタルメディアアクセス方法のいずれかによりマルチメディアコンテンツを受信するように結合できる。選択されたネットワークを介したデータの転送は一般に、大きなバッファを使用するか、またはクライアントデバイスでデータを絞ることができるようにすることで行うことができる。
【０００５】
この点に関して、生放送(live broadcast)および非同期デジタルホームネットワークでの配信に関連する問題が多数ある。生放送の信号(live broadcast signal)では、データはクライアントデバイスにプッシュされ、クライアントデバイス側では着信データストリーム(incoming data stream)を制御しない。ネットワークで接続されているクライアントデバイスが、正しいフレームレートで、フレームの繰り返しまたは喪失なしで配信されたオーディオデータおよびビデオデータをすべてデコードし表示できるようにするために、一般に、ネットワークで接続されたクライアントデバイスはネットワークゲートウェイデバイスとクロックで同期している必要がある。放送Ａ／Ｖネットワークでクロック同期に使用される最も広く受け入れられている方法は、放送サイト(broadcast site)で取られたカウンタサンプル(counter sample)を放送時から受信時まで一定の遅延とともに受信機に配信することに依拠している。放送サイトでのカウンタは、放送サイトの基準クロックにより増分される。これらのクロックサンプルが受信機に届いた途端、電圧制御発振器（ＶＣＸＯ）からクロック信号が供給されているカウンタのサンプリングが行われる。カウンタの値と放送サイトから受信したタイムスタンプとが比較され、ローカルカウンタのサンプルと放送サイトで取ったクロックサンプルとの差が時間とともに変化する場合に、ローカルのＶＣＸＯに印加された電圧が調整され、ローカルクロックが放送サイトの基準クロックに周波数ロックされる。
【０００６】
Ｅｔｈｅｒｎｅｔ（登録商標）ネットワークなどの非同期衝突検出ネットワークでは、パケットが構築され、送信バッファ内に置かれてからネットワーク接続デバイスに届くまでの遅延時間は必ずしも一定ではない。このようなネットワークでは、ネットワーク上で衝突する複数のデバイスにより、パケット受信時にパケットは変化する場合がありまた遅延時間も予想できない。このような環境では、遅延は一定せずまた予測できないため上述の方法を使用してネットワークで接続された受信機のクロックをネットワークで接続された送信機のクロックに周波数ロックすることはできない。このような方法を使用して受信機のクロックを送信機のクロックにロックしようとすると、受信機のクロックに著しいジッタが発生する場合がある。受信機のクロック内のジッタの大きさによっては、ビデオ表示にＮＴＳＣ準拠のカラーバーストを生成できない場合がある。さらに、このジッタがあることにより、最低でも、オーディオおよびビデオ圧縮データバッファは必要以上に大きくする必要があり、または最悪、バッファがアンダフローまたはオーバーフローを起こすことがある。副作用としては、ビデオフリージング(video freezing)，オーディオのチャープ(possible audio chirp)、およびカラーバーストの変動による表示色の動的変化が含まれる。
【０００７】
１３９４ネットワークなどの一部のネットワークでは、このような問題をなくすために等時性機能(isochronous capability)を備える。さらに、ＡＴＭネットワークに対してこれらのタイミング問題を解消するためにＳＲＴＳなどのさまざまな方法も開発されている。ＳＲＴＳ法では、送信デバイスと受信デバイスが共に同期処理用のネットワーククロックにアクセスできることを想定している。しかし、このような方法は、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワークなどの非同期衝突検出ネットワークのジッタを是正するのには完全には適していない場合がある。したがって、クロックの同期処理を行い、非同期ネットワーク、特に非同期衝突検出ネットワーク内のデータフローを制御し上述の問題を克服するシステムと方法が望まれている。
【０００８】
本発明では、上述のジッタ問題を克服し、特に非同期ネットワーク上でマルチメディアコンテンツを配信するシステムと方法を提供する。より具体的には、本発明では、タイムスタンプを使用して、非同期ホームネットワーク上のソフトウェア処理および衝突が原因で生じるジッタの効果を最小限に抑え、かつ低減する。タイムスタンプは、クライアントデバイスのクロックとサーバクロックとの同期処理を実行し、さらにクライアントデバイスのデータフローを制御するために使用される。
【０００９】
フロー制御用に、一組のタイムスタンプ(one set of time stamps)が追加される。広帯域ネットワークからパケットが到着すると、サーバ内のローカルカウンタのサンプル(a sample of a local counter)がレジスタにラッチされる。サーバは、サンプリングしたカウンタ値を、受信したトランスポートパケットに付加する。ローカルカウンタを、ヘッドエンドのシステムクロックに周波数ロックされているシステムクロックに合わせる。パケットにタイムスタンプを設定した後、サーバはパケットを送信バッファ(transmit buffer)に入れる(place)。このタイムスタンプは、広帯域接続(broadband connection)からデータが受信され、バッファに入れられたときを示し、したがって、データはバッファに入ったのとまったく同じレートでクライアントデバイスがデータを取り除くのに使用できる。
【００１０】
クライアントデバイスのクロックとヘッドエンドのクロックとの同期を取るためにもう一組のタイムスタンプを使用する。データのフレームがネットワーク上に置かれると、システムクロック上で動作するローカルカウンタがサンプリングされる。サンプリングされるクロックに基づくタイムスタンプはネットワーク物理層のデータフレーム内にリアルタイムで書き込まれ、ローカルカウンタのサンプリングからの時間は一定であり、サンプリングされたカウント値がネットワークに置かれる。衝突(collision)が発生すると、データが再送されるときタイムスタンプが更新(update)される。新しいデータフレームがクライアントデバイスの物理層に届くと、クライアントのローカルクロックで動作するローカルカウンタのサンプルがレジスタにラッチされる。この「受信時刻(receive-time)」タイムスタンプがデータの受信フレームに付加され、クライアントのネットワークプロトコルのハードウェアおよびソフトウェアの続く層(successive layer)に渡される。クライアントデータが通信プロトコルに渡された後、データはクライアントによって使用できる状態に置かれる。
【００１１】
クライアントデバイスは、クライアントのローカルシステムクロックをサーバのローカルシステムクロックにロックするためにクライアントデバイスによってデータが受信されたときに付加されているタイムスタンプとともにサーバネットワークインターフェースの物理層(the physical layer of the server's network interface)に付加された(attached)タイムスタンプを使用する。サーバのローカルシステムクロック(server's local clock)はヘッドエンド(headend)のシステムクロックに周波数ロックされている(frequency locked)ので、クライアントシステムクロックもヘッドエンドのシステムクロックに周波数ロックされる。サーバからの頻繁なクロックサンプルにより、クライアントのシステムクロックはサーバのシステムクロックに非常によく追随する。
【００１２】
次に、広帯域ネットワークからサーバにデータが到着したときにデータに付加されたタイムスタンプを使用して、クライアントのバッファから各データパケットを抽出し、クライアントのオーディオ／ビデオサブシステムに渡す正確な時期を決定することができる。このようにして、サーバへのパケット到着タイミング(packet arrival timing)がクライアントデバイスのＡ／Ｖサブシステムへの入力と正確に一致する。
【００１３】
図面を参照しながら本発明について説明する。
【００１４】
図２は、本発明によるタイムスタンプを使用するデジタルホームネットワークを示す。広帯域入力信号(broadband input signal)が、ヘッドエンド（図に示されていない）により供給され、これが広帯域受信機／マルチメディアサーバ２０２に届く。サーバ２０２は、入力Ｓｙｓ  １、Ｓｙｓ  ２、・・・Ｓｙｓ  ｎで示されるように、衛星、ケーブル、またはＤＳＬなどの複数の広帯域ソース(broadband sourrce)のいずれかから入力を受信するように構成することができる。この入力信号は、トランスポートパケットの形式であり、ローカルシステムクロックをヘッドエンドのシステムクロックに周波数ロックするために受信機２０２が使用するシステムクロック回復（ＳＣＲ : System Clock Recovery）情報を含む。このＳＣＲは、バッファレベル(buffer level)を管理し、一体型受信機デコーダ（ＩＲＤ : Integrated Receiver Decoder）でビデオタイミングおよびカラーバースト信号を得る(derive)ために使用される。システム２００が正常に動作するためには、ＳＣＲ情報およびパケットタイミング関係がネットワークに入ってから最終表現時点までシステム２００全体を通して保持されなければならない。
【００１５】
サーバ２０２が広帯域ネットワークから受信したデータはトランスポートパケット化されている。これらのトランスポートパケットのいくつかは、ヘッドエンドシステムクロックによりクロックの供給を受けるヘッドエンドのカウンタからサンプルを搬送する。サーバ２０２では、これらのカウンタサンプルとそのサンプルを運ぶトランスポートパケットの到着時刻を使用して、そのローカルシステムクロックをヘッドエンドのシステムクロックに周波数ロックすることができる。
【００１６】
本発明により、クライアントデバイスへのパケットの正確な到着時刻を再現することができるようにするため、サーバ２０２がパケットを受信したときに、広帯域ネットワークから到着するそれぞれのパケットにタイムスタンプＴ１が刻印される。タイムスタンプＴ１は、サーバ２０２のローカルシステムクロックからクロック信号を供給されるローカルカウンタのサンプルである。タイムスタンプＴ１およびパケットは、ＤＨＮを介して、まとめて放送される前にバッファ２０５にまとめて格納される。
【００１７】
後になってから、トランスポートパケットのグループをヘッダ情報とともに組み立てて、ネットワークＤＨＮ上で送信するためのデータフレームを形成する。データフレームがネットワーク上に置かれ始める瞬間、ローカルシステムクロック上で動作しているサーバ２０２のローカルカウンタのサンプリングを行い、カウンタサンプルのタイムスタンプＴ２を生成する。タイムスタンプＴ２は、発信データフレームの先頭に付加され、カウンタ値のサンプリングからカウンタ値がネットワークに入るまで時間は固定され一定である。この時間が固定され一定であることが重要であり、このような理由から、カウンタサンプリングおよびタイムスタンプの配置は、ネットワークインターフェースの物理層ハードウェアで実行される。ネットワーク上のサーバ２０２からクライアントデバイス２０４への伝播遅延は固定され一定であるため、Ｔ２のサンプリングからタイムスタンプＴ２を含むパケットがクライアントデバイス２０４に到着するまでの総伝播遅延も固定され一定である。さらに、シンボルタイム(symbol time)が変化するネットワークにおいて、本発明は伝播時間が一定である限り同期をとることができる。
【００１８】
データフレームがクライアントデバイス２０４に到着した瞬間、クライアントシステムクロックで動作しているクライアントデバイス２０４のローカルカウンタのサンプリングを行い、タイムスタンプＴ３を生成する。このカウンタ値と到着データフレーム内のタイムスタンプＴ２とを比較し、クライアントカウンタとサーバカウンタとの差に変化がないことを確認する。この差が時間の経過とともに変化する場合、クライアントデバイスはローカルのＶＣＸＯで電圧を修正し、そのローカルシステムクロックを移動して、サーバ２０２のシステムクロックで周波数ロックするようにする。そこで、タイムスタンプＴ２およびＴ３を使用して、サーバ２０２とクライアントデバイス２０４のシステムクロックをまとめて周波数ロックする。タイムスタンプＴ２およびＴ３は、同期のためクライアントデバイス２０４で使用した後破棄することができる。この時点で、トランスポートパケットとその関連するタイムスタンプＴ１をクライアントデバイス２０４内のバッファ２０３に格納することができる。
【００１９】
次のステップは、データをクライアントデバイス２０４のバッファから、サーバ２０２の入力にパケットが届いたレートと正確に一致するレートで除去(remove)することである。クライアントデバイス２０４が受信バッファ内にデータを十分に蓄積し、ネットワークのジッタを十分に吸収している場合、クライアントデバイス２０４は受信バッファからデータを抽出し始めて、クライアントデバイス２０４内のデコーダからそのデータを利用できるようにする。クライアントクロックに基づくローカルカウンタは、メモリから抽出する最初のトランスポートパケットとともに格納されているカウント値で初期化される。カウンタにクライアントのシステムクロックからのクロック信号が供給されるが、このクロックはサーバクロックにロックされており、格納されているタイムスタンプ値がカウンタ値と一致したときに後続のパケットをメモリから抽出することができる。このようにして、クライアントデバイス２０４の受信バッファからの除去レート(rate of removal)がサーバ２０２でデータを受信したレートと一致する。データパケットのフォーマットとデータフレーム内へのタイムスタンプＴ１，Ｔ２、およびＴ３の配置は図３に示されており、タイムスタンプＴ１は、パケット化されたデータが受信されたときに生成され、タイムスタンプＴ２は、フレームがネットワークＤＨＮに置かれたときにデータフレーム内に入れられ、タイムスタンプＴ３は、データフレームがネットワークＤＨＮから受信されたときに生成される。
【００２０】
データパケットのフォーマットと、Ｅｔｈｅｒｎｅｔ（登録商標）環境内でデータフレームに入れられるタイムスタンプについて、以下に詳述する。本実施形態によるＥｔｈｅｒｎｅｔ（登録商標）パケットでは、ＵＤＰ／ＩＰプロトコルを使用しているが、ＴＣＰ、または「ｒａｗ」Ｅｔｈｅｒｎｅｔ（登録商標）などの他の適当なプロトコルを使用して、本発明のタイムスタンプ生成機能(time stamping feature)を実施することもできることは理解されるであろう。本発明によれば、ＩＰヘッダはタイムスタンプを入れる必要があるデータフレームを識別するＩＰオプションを利用している。タイムスタンプは、ＵＤＰヘッダの後のデータフレーム内に配置される。出パケット(outgoing packet)および入パケット(incoming packet)のための拡張ＵＤＰヘッダ(extended UDP header)には独自の場所(unique location)がある。
【００２１】
クロック同期タイムスタンプ(clock synchronization time stamp)Ｔ２およびＴ３は、ＵＤＰヘッダの後に置かれる。タイムスタンプＴ２は、３２ビットのタイムスタンプであり、ＩＰパケットでオプション２５が設定されているときに適用される。タイムスタンプは、物理的ネットワーク層のデータフレーム内に置かれる。本実施形態ではオプション２５を使用してフレーム内にタイムスタンプが存在することを示すが、特定のＩＰアドレスおよびポート番号を指定するなどタイムスタンプを識別する他の適当な方法を利用することもできることは理解されるでろう。
【００２２】
タイムスタンプＴ３はまた３２ビットの入タイムスタンプ(32-bit incoming time stamp)であり、オプション２５を有するＩＰパケットが検出されると適用される。このタイムスタンプは、物理的ネットワーク層のデータフレーム内にも置かれる。以下の表１は、ＵＤＰデータフレーム内のタイムスタンプＴ２およびＴ３の配置を示している。
【００２３】
【表１】
0004546026.tif 000002
【００２４】
本発明では、物理層でタイムスタンプを使用し、２つの独立のノード、この場合はサーバ２０２とクライアントデバイス２０４を同期させるためのアルゴリズムを作成できる。
【００２５】
データフロー制御タイムスタンプＴ１は、広帯域ネットワークからデータを受信するときにデータストリームの中に入れられる。タイムスタンプＴ１は、サーバ２０２内のローカルカウンタを使用して生成され、ヘッドエンドのシステムクロックに周波数ロックされているクロックにより増分される。パケットがサーバ２０２に到着するのに合わせてタイムスタンプＴ１を各トランスポートパケットに入れることにより、クライアントデバイス２０４はサーバ２０２で受信したビットレートと同じビットレートを再現することができる。データフロー制御タイムスタンプＴ１をＵＤＰペイロードに入れる。表２は、本発明の実施例で使用されているデータフォーマットを示している。このデータは、表１に示されているＵＤＰデータフレームのデータ部分に置かれる。
【００２６】
【表２】
0004546026.tif 000003
【００２７】
データフレームにタイムスタンプが刻印された後、ＵＤＰチェックサム(UDP checksum)のチェックが行われる。チェックサムが０でなければ、前のチェックサムを新規生成されたチェックサムに置き換える。ＵＤＰチェックサムが解釈(resolve)された後、新しいＣＲＣを計算し、ＭＡＣ層の旧ＣＲＣを置き換える。パケットインテロゲーション(packet interrogation)の任意の時点で、そのデータフレームが有効なタイムスタンプフレームでないと判断された場合、そのフレームはデータの変更なしで受け渡される。
【００２８】
タイムスタンプ値は、外部のシステムクロックから生成される。外部クロックにより３２ビットカウンタが駆動される。データフレームがネットワーク上に置かれるとカウンタのスナップショットがとられる。入パケット(incoming packet)では、クライアントデバイス内のカウンタのスナップショットがとられる。これが有効なタイムスタンプパケット(valid time stamped packet)であれば、カウンタのスナップショットがデータフレームのペイロード部分に置かれる。３２ビットカウンタは外部システムクロックに同期する自走ロールオーバーカウンタ(free running rollover counter)である。
【００２９】
以下では、特定のデータフレームがタイムスタンプを必要とするか否か、もし必要であるならば、そのタイムスタンプデータがどこに置かれるかを判別する検索シーケンス(search sequence)について説明する。最初のテストでは、ＭＡＣフレームの妥当性(validate)確認を行う。ＭＡＣフレームの妥当性を確認するには、ＣＲＣを計算し、比較する必要がある。ＣＲＣテストが失敗した場合、フレームは修正を行うことなく通過し、有効なＣＲＣが無効なＣＲＣとともに受信されたデータフレームに追加されない。ＣＲＣテストが合格した場合、ＭＡＣフレーム内のインターネットプロトコル（ＩＰ）を見つけるための第２のテストが実施される。８０２．３仕様セクション３．２．６「Ｌｅｎｇｔｈ／Ｔｙｐｅ」からのＭＡＣフレームへの２０オクテットはＬｅｎｇｔｈ／Ｔｙｐｅフィールドである。ＩＴＥＦ  ＲＦＣ  １７００  ＥｔｈｅｒＴｙｐｅｓ表から、インターネットＩＰ（Ｉｐｖ４）は０ｘ８００（１６進数）である。値が０ｘ８００でなければ、パケットは通過する。Ｌｅｎｇｔｈ／Ｔｙｐｅが０ｘ８００の場合、ＩＰヘッダのサイズと、ＵＤＰパケットが含まれるか否かを判別するテストを別に実施する。ＭＡＣフレームの内容は、ＩＥＥＥ  ８０２．３のセクション３．１．１で規定されている。
【００３０】
ＭＡＣフレームにＩＰパケットが含まれる場合、次のテストでサイズおよびオプション設定を決定する。まず、サイズを決定するために、ヘッダ長であるＩＰパケットの第２ニブル(second nibble)を調べる。ヘッダ長は、ＩＰヘッダを構成する３２ビットワードの個数である。オプションがない場合、ＩＰヘッダは通常２０バイトであり、ヘッダ長は５である。ＩＰヘッダオプションはＩＰヘッダの先頭から２０（１０進数）オフセットを持つ。
【００３１】
次に、パケットが有効なタイムスタンプパケットか否かを判別するステップについて説明する。これらのステップが失敗した場合、変更なしでパケットが通過する。まず、ヘッダ長フィールドを調べて、５よりも大きいか否かを判別する。もし大きければ、ＩＰヘッダの先頭から２０バイトのところに置かれている第１のＩＰオプションが０ｘ９９０４００００に対してチェックされる。オプションのフォーマットを以下の表３に示す。
【００３２】
【表３】
0004546026.tif 000004
【００３３】
表４は、ＩＰオプション２５が含まれるＩＰヘッダをまとめたものである。
【００３４】
【表４】
0004546026.tif 000005
【００３５】
ＩＰオプションに上述の指定タイムスタンプを生成オプションが含まれる場合、このシステムでは、タイムスタンプをデータフレームに入れる。タイムスタンプは、ＩＰヘッダの後に来るＵＤＰペイロード部分、特にペイロード部分の先頭に入る。ＵＤＰヘッダは８バイト長である。ＵＤＰペイロードの第１の３２ビットワードはタイムスタンプＴ２、出タイムスタンプに予約されており、ＵＤＰペイロードの第２の３２ビットワードはＴ３、入タイムスタンプに予約されている。表１は、ＵＤＰでデータフレームの一般的なフォーマットを示しているが、表２は、本発明の実施例のために選択した特定のフォーマットを示している。
【００３６】
本発明の有意な態様は、タイムスタンプとＣＲＣが生成され、物理層のデータフレーム内に置かれるという点である。そのため、タイムスタンプとＣＲＣは、データフレームが実際にネットワーク上に置かれるときまたはネットワークから受信したときにデータフレーム内に入れられる。これにより、タイムスタンプはデータがネットワークに入った時間およびデータをネットワークから受信した時間を正確に反映することができる。
【００３７】
次に、上述のタイムスタンプ生成機能を実施するシステムの要素をＤＢＳ受信機に関して詳細に説明する。ただし、ＤＳＬやケーブルなどの、他の種類の広帯域ネットワークで受信したマルチメディアデータに対しても同様のタイムスタンプ生成機能を実行できることは理解されるであろう。
【００３８】
図４に示されているように、サーバ２０２は、バスで接続された３つの機能ブロックから成り立っている。ＰＣＩ  ＤＢＳチューナ４０２を通じてサーバ２０２が衛星信号を受信する。ホストコントローラ４０６は、ＰＣＩバスインターフェース４０５を介してＰＣＩ  ＤＢＳチューナ４０２からの衛星信号からトランスポートパケット読み取る。次に、ホストコントローラ４０６がデータを処理して、処理されたデータをＵＤＰなどのよく知られているプロトコルを介してタイムスタンプボード４０４へ送出する。また、ＰＣＩ  ＤＢＳチューナ４０２およびタイムスタンプボード４０４は、それらの間に共通のクロックを持つ。このクロックは、ＰＣＩ  ＤＢＳチューナ４０２で生成され、タイムスタンプボード４０４の時間基準として使用される。
【００３９】
動作時に、ホストコントローラ４０６はＰＣＩ  ＤＢＳチューナ４０２のＦＩＦＯメモリからトランスポートパケットを読み取る。その後、パケットはネットワークプロトコルソフトウェアに従って処理され、ネットワークフレームがタイムスタンプボート４０４のＥｔｈｅｎｅｔ  ＭＡＣに書き込まれる。ＭＡＣはＥｔｈｅｒｎｅｔ（登録商標）ネットワークが使用可能になるのを待ち、その後、タイムスタンプコントローラを通じてＥｔｈｅｒｎｅｔ（登録商標）  ＰＨＹにデータを送信する。ビデオネットワークパケットがタイムスタンプコントローラによって検出されると、タイムスタンプがそのパケットに追加される。タイムスタンプＴ２は、回復されたクロック発生源によりクロック信号が供給されるタイムスタンプコントローラ内のカウンタのサンプルである。サーバ２０２において、タイムスタンプコントローラのクロック発生源はＰＣＩ  ＤＢＳチューナ４０２内のＶＣＸＯである。
【００４０】
図５は、ＰＣＩ  ＤＢＳチューナ４０２のブロック図を示している。ＰＣＩ  ＤＢＳチューナ４０２は、３つの主要な機能を実行する。第１に、ＰＣＩ  ＤＢＳチューナ４０２では、正しい衛星トランスポンダの選択、同調、復調が実行される。これは、衛星チューナ５０２と復調器５０４によって実行される。これらのデバイスは、衛星信号をデジタルトランスポートストリームに変換するよく知られている機能を実行する。
【００４１】
第２に、ＰＣＩ  ＤＢＳチューナ４０２がトランスポートストリームのパケットのフィルタ処理を実行する。チューナコントローラ５０６は、ホストコントローラ４０６によって要求されたトランスポートパケットのみを除去するロジック回路を備える。その後、そのトランスポートパケットはＦＩＦＯバッファ５１２に格納される。その後、ホストコントローラ５０６は、ＰＣＩバスインターフェース４０５を介してＦＩＦＯバッファ５１２からパケットを読み出すことができる。ＰＣＩバスインターフェースを使いやすくするため、ＰＣＩブリッジチップ５０８が使用されている。
【００４２】
第３に、ＰＣＩ  ＤＢＳチューナ４０２は、クロック回復機能を実行する。チューナコントローラ５０６は、フラッシュメモリおよびＳＲＡＭ  ５１４に格納されているソフトウェア命令を実行する。ソフトウェアの制御ループが生成され、電圧制御水晶発振器（「ＶＣＸＯ」）５１０の周波数を調整する。サービスプロバイダのヘッドエンドからのタイムスタンプが含まれるパケットが届く毎にＶＣＸＯ  ５１０クロックから動作するカウンタがサンプリングされる。チューナコントローラ５０６は、ＶＣＸＯ  ５１０クロックの正規化された誤差(normalized error)とヘッドエンドのクロックとを比較する。このようにして、ローカルクロックをヘッドエンドのクロックと同じ周波数になるように調整することができる。
【００４３】
さらに、ＶＣＸＯ  ５１０から回復されたシステムクロックを使用してタイムスタンプＴ１を各トランスポートパケットに追加することができる。タイムスタンプＴ１は、パケットがチューナ４０２に届いたときのローカルカウンタのサンプルに基づく。
【００４４】
ネットワーククライアント２０４の要素が図６に示されている。データはクライアントのタイムスタンプボート６０２に届き、タイムスタンプＴ３が到着の瞬間にデータフレームに追加される。パケットは、ＰＣＩバス６０５を介してタイムスタンプボート６０２に接続されているクライアントコントローラ６０８によって処理される。トランスポートパケットは、ネットワークフレームから抽出され、トランスポートフォーマッタボード６０４に書き込まれる。トランスポートフォーマッタ６０４の出力は、デコーダ６０６によって使用されるシリアルトランスポートストリームである。デコーダ６０６の出力は、テレビまたはその他の表示デバイスに接続される。図８は、デコーダ６０６の要素を示している。
【００４５】
クライアントコントローラ６０８は、クロック回復アルゴリズム(clock recovery algorithm)を実行する役割を持つ。サーバ２０２からのデータフレームの出発時間Ｔ２とクライアント２０４への到着時間Ｔ３とを比較する。このようにして、クライアントコントローラ６０８は、デコーダＶＣＸＯ  ８１２がサーバＶＣＸＯ  ５１０よりも高速か低速かを判別することができる。クライアントコントローラ６０８は、低速なシリアル（ＲＳ−２３２）接続を通じてデコーダＶＣＸＯ  ８１２のレートを上げるか下げるかを決めるコマンドをデコーダコントロール８１０に送信する。
【００４６】
クライアントデバイスのタイムスタンプボートは、クライアントデバイス内の回復されたクロック発生源がＰＣＩ  ＤＢＳチューナ４０２のＶＣＸＯ  ５１０ではなくデコーダ６０６のクロックから導かれる点を除き、サーバデバイスのタイムスタンプボードに似ている。
【００４７】
トランスポートフォーマッタ６０４の要素が図７に示されている。トランスポートフォーマッタ６０４は、ＰＣＩバス７０２を介してクライアントコントローラ６０８に接続されている。ＰＣＩバスインターフェースが、ＰＣＩバスを、トランスポートフォーマッタコントローラ７０４に接続されている標準のローカルバスに変換する。トランスポートフォーマッタコントローラ７０４は、ＴＴＬロジックレベルでシリアルトランスポートストリームを出力する。高速シリアルコンバータ７０６回路は、これらの信号を低電圧差動信号に変換し、この信号はデコーダ６０６に渡される。
【００４８】
トランスポートフォーマッタコントローラ７０４には、２つの動作モードがある。１つは、ＰＣＩ  ＤＢＳチューナ４０２のチューナコントローラ５０６によって追加されるオプションのタイムスタンプに従ってデコーダ６０６にトランスポートパケットが転送されるフロー制御モードである。この方法では、トランスポートフォーマッタ６０４からのトランスポートパケットの相対的出発時間がチューナコントローラ５０６へのトランスポートパケットの到着時間と一致する。これにより、デコーダ６０６の入力のパケットタイミングがＰＣＩ  ＤＢＳチューナ４０２のチューナ５０２および復調器５０４に直接接続されるように見える。
【００４９】
第２の動作モードでは、データをトランスポートフォーマッタコントローラ７０４から即座にデコーダ６０６に流すことができる。このモードでは、デコーダ６０６でデータを内部的にバッファする必要がある。そのため、デコーダ６０６は第１のモードよりもメモリをより多く必要とする。
【００５０】
データが、トランスポートフォーマッタ６０４からデコーダ６０６の高速シリアルインターフェース８０２に到着する。トランスポートプロセッサ８０４は入トランスポートパケットをソートし、正しいバッファ（ビデオ、オーディオ、プログラムガイド、その他のデータなど）に入れる。ビデオおよびオーディオデータはビデオ／オーディオデコーダ８０６で復元される。その後、復元されたデジタルデータは、ＮＴＳＣエンコーダ／オーディオＤＡＣ  ８０８を介してアナログＮＴＳＣ信号に変換される。
【００５１】
次に、このタイムスタンプ生成方法を実施する際に使用するタイムスタンプ生成ボートについて詳述する。ただし、上述のように、サーバ２０２と関連するタイムスタンプ生成ボートを参照しながら説明するが、クライアント２０４と関連するタイムスタンプ生成ボートは同様のものである。タイムスタンプ生成ボート４０４は、１０Ｍｂ／ｓと１００Ｍｂ／ｓの両方のデータ転送レートをサポートできるＰＣＩ  Ｅｔｈｅｒｎｅｔ（登録商標）  ＮＩＣである。これは、ＵＤＰチェックサムをリセットし、３２ビットタイムスタンプをデータフレームに入れるだけでなく、指定されたデータフレームについてＣＲＣを再計算することができる。外部インターフェースを利用することにより、ボード４０４をＰＣ  ＰＣＩまたは組み込みＰＣＩアーキテクチャに統合することができる。タイムスタンプ値を生成するための外部クロックインターフェースが用意されている。
【００５２】
図９は、タイムスタンプ生成ボート４０４のブロック図である。タイムスタンプ生成ボードは、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワーク９０２に結合された入力ジャック９０４、たとえばＲＪ４５を備える。入力ジャック９０４は、１０／１００  Ｂａｓｅ−ＴＸ  Ｐｈｙトランス９０６に結合されている。
【００５３】
トランス９０６は物理層デバイス(physical layer device)９０８に結合されており、このデバイスは１０ＢＡＳＥ−Ｔおよび１００ＢＡＳＥ−Ｘの両方のＥｔｈｅｒｎｅｔ（登録商標）プロトコルをサポートする統合ＰＭＤ副層(integrated PMD sublayer)を備えるフル機能の物理層デバイスである。物理層デバイス９０８は、バスバッファ９１２に結合され、これにより、物理層デバイス９０８とタイムスタンプコントローラ９１６との間の電圧レベルの変換が行われる。バスバッファ９１２は、低電圧ＣＭＯＳ  ８進数バスバッファである。これは低電力かつ高速３．３Ｖアプリケーションに理想的なものであり、入力と出力の両方に関して５Ｖ信号環境とインターフェースすることができる。バスバッファ９１２は、タイムスタンプコントローラ９１６に結合されており、このコントローラがＵＤＰチェックサムのリセット、タイムスタンプの書き込み、受信方向と送信方向の両方の有効なデータフレームに対する新しいＣＲＣの再計算など、タイムスタンプ生成機能の大半を制御し実行する。
【００５４】
タイムスタンプコントローラ９１６は、タイムスタンプコントローラ９１６を操作するプログラムを格納しロードする構成デバイス９１８に結合されている。タイムスタンプコントローラ９１６はさらに、１０Ｍｂ／ｓと１００Ｍｂ／ｓの両方のデータ転送レートに対応するＬＡＮコントローラであＥｔｈｅｒｎｅｔ（登録商標）  ＭＡＣユニット９１４に結合されている。Ｅｔｈｅｒｎｅｔ（登録商標）  ＭＡＣ  ９１４は、周辺コンポーネント相互接続（ＰＣＩ）ローカルバスまたはＣａｒｄＢｕｓとの直接インターフェースを備える。
【００５５】
タイムスタンプコントローラ９１６は、ＰＨＹおよびＭＡＣとのＭＩＩインターフェースを備える。図１０に示されているように、コントローラ９１６は受信機ユニット１００２および送信機ユニット１００４から成り立っている。２つのユニットは別々に実施されるが、同じ外部システムクロックとリセット信号を共有する。
【００５６】
図１１に示されているように、受信機ユニット１００２は受信機コントローラ１１０２、タイムスタンプジェネレータ１１１４、シフトレジスタ１１１２、ＣＲＣ検証モジュール１１１０、新規ＣＲＣ計算モジュール１１０６、３：１  ＭＵＸ  １１０８、および４：１  ＭＵＸ  １１０４を備える。受信機コントローラ１１０２は、データストリームの状態を検出して、適切な出力データ（受信データ、リセットＵＤＰチェックサム、タイムスタンプ、新規ＣＲＣ）に関して３：１  ＭＵＸおよび４：１  ＭＵＸを有効にする。
【００５７】
新規ＣＲＣ計算モジュール１１０６は、修正されたデータストリーム（タイムスタンプおよびリセットＵＤＰチェックサムを持つＥｔｈｅｒｎｅｔ（登録商標）パケット）のＣＲＣチェックサムを計算し、ＭＡＣに届く前にこの新しいＣＲＣを修正されたデータストリーム内に入れる。受信機ユニット１００２と送信機ユニット１００４とで異なるのは、受信機ユニット１００２がＣＲＣ検証モジュール１１１０を備えているという点である。このデータは媒体上で破損していた可能性があるため、受信したパケットのＣＲＣを検証する必要がある。ＣＲＣが正しくない場合、これは、データが実際に破損していたことを示す。新しい正しいＣＲＣをデータに追加する代わり、不正なＣＲＣを含めてデータをＭＡＣに渡すことができる。
【００５８】
コントローラ１１０２は、すべてのモジュールおよびコンポーネントの動作を同期させ制御する。受信クロックと外部システムクロックの２種類のクロックを使用する。タイムスタンプは、外部クロックによって生成され、すべてのパケットの開始時に受信クロック領域にラッチされる。データをＰＨＹから受信し、適切なデータ（受信データ、リセットＵＤＰチェックサム、タイムスタンプ、新しいＣＲＣ）をＩＥＥＥ  ８０２．３に従ってＭＡＣに送信する。
【００５９】
データを受信すると、タイムスタンプＴ３が適切な領域に書き込まれ、新しいＣＲＣが計算され、ＭＡＣ層内の旧いＣＲＣ値が置き換えられる。また、本発明の有意な態様は、データフレームをネットワークから受信すると、タイムスタンプとＣＲＣが生成され、物理層のデータフレーム内に置かれるという点である。したがって、ネットワークからデータフレームを受信した実際の時刻を反映するタイムスタンプおよびＣＲＣが、ＭＡＣ層への移動とともに、すばやくかつ効率的に、データフレームに入れられる。パケットインテロゲーション(packet interrogation)の任意の時点で、受信中にそのデータフレームが有効なタイムスタンプフレームでないと決定された場合、あるいはエラーがあると決定された場合、そのデータフレームはデータの変更なしで受け渡される。
【００６０】
図１２に示されているように、送信機ユニット１２０２は送信機コントローラ１２０２、タイムスタンプジェネレータ１２１０、シフトレジスタ１２０８、新規ＣＲＣ計算モジュール１２０６、３：１  ＭＵＸ  １２１２および４：１  ＭＵＸ  １２０４を備える。送信機コントローラ１２０２は、適切なプロセス毎にすべてのモジュールおよびコンポーネントの動作を制御する。送信クロックと外部システムクロックの２種類のクロックを使用する。タイムスタンプは、外部クロックによって生成され、すべてのパケットの開始時に受信クロック領域にラッチされる。ここでもまた、タイムスタンプが生成され、物理層のデータフレーム内に置かれる。
【００６１】
本発明は好ましい設計があるものとして説明してきたが、本発明はこの開示の精神と範囲の中でさらに修正することができる。たとえば、タイムスタンプ生成機能は、ＨＰＮＡ、ＰＬＣ、およびある種の無線ネットワーク、たとえばＩＥＥＥ  ８０２．１  １ｂなど、他の非同期ネットワークで実施することもできる。したがって、本出願は、一般原理を使用する本発明のバリエーション、用途、または改造を包含することを意図している。さらに、本出願は、本発明が関係する技術分野の知られているあるいは慣例の方法の範囲内に入るような、または添付した特許請求の範囲に入る、本開示からの逸脱を包含することを意図する。
【図面の簡単な説明】
【図１】  複数のクライアントデバイスに結合されたメディアサーバを含む非同期マルチメディアネットワークを示す図である。
【図２】  本発明によりネットワークのさまざまな地点でデータに書き込まれるタイムスタンプを含む非同期マルチメディアネットワークの要素を示すブロック図である。
【図３】  本発明により非同期マルチメディアネットワーク内で使用されるタイムスタンプを含むデータフレームの形式を示す図である。
【図４】  衛星信号を受信するように改造された広帯域受信機の要素を示すブロック図である。
【図５】  図４に示されているＰＣＩ  ＤＢＳチューナの要素を示すブロック図である。
【図６】  図２に示されているクライアントデバイスの要素を示すブロック図である。
【図７】  図６に示されているトランスポートフォーマッタボードの要素を示すブロック図である。
【図８】  図６に示されているクライアントビデオデコーダの要素を示すブロック図である。
【図９】  本発明により非同期マルチメディアネットワーク内で使用されるタイムスタンプ生成ボードを示すブロック図である。
【図１０】  図９に示されているタイムスタンプ生成ボード内のタイムスタンプコントローラを示すブロック図である。
【図１１】  図１０に示されているタイムスタンプコントローラ内の受信機ユニットを示すブロック図である。
【図１２】  図１０に示されているタイムスタンプコントローラ内の送信ユニットを示すブロック図である。
【図１】
0004546026.tif 000006
【図２】
0004546026.tif 000007
【図３】
0004546026.tif 000008
【図４】
0004546026.tif 000009
【図５】
0004546026.tif 000010
【図６】
0004546026.tif 000011
【図７】
0004546026.tif 000012
【図８】
0004546026.tif 000013
【図９】
0004546026.tif 000014
【図１０】
0004546026.tif 000015
【図１１】
0004546026.tif 000016
【図１２】
0004546026.tif 000017