JP2006197399A - タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体 - Google Patents

タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体 Download PDF

Info

Publication number
JP2006197399A
JP2006197399A JP2005008242A JP2005008242A JP2006197399A JP 2006197399 A JP2006197399 A JP 2006197399A JP 2005008242 A JP2005008242 A JP 2005008242A JP 2005008242 A JP2005008242 A JP 2005008242A JP 2006197399 A JP2006197399 A JP 2006197399A
Authority
JP
Japan
Prior art keywords
timing
packet
value
time
frequency ratio
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005008242A
Other languages
English (en)
Other versions
JP4346557B2 (ja
Inventor
Yusuke Yamada
雄介 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2005008242A priority Critical patent/JP4346557B2/ja
Publication of JP2006197399A publication Critical patent/JP2006197399A/ja
Application granted granted Critical
Publication of JP4346557B2 publication Critical patent/JP4346557B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

【課題】 伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない。
【解決手段】 クライアント100は、測定パケットをサーバー130へ送信し、測定パケットに対応する返信パケットを受信する通信I/F103と、サーバー130に測定パケットを送信したタイミング、返信パケットを通信I/F103が受信したタイミング、およびサーバー130における測定パケットの受信タイミングに基いて、自装置のクロックパルスおよびサーバー130のクロックパルスの周波数比を算出するCPU101と、CPU101が算出した周波数比に基づいて、発振器105およびタイミングカウンタ部106が検出したタイミングを補正する時刻補正部107とを含む。
【選択図】 図1

Description

本発明は、タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体に関し、特にデータ通信装置において端末と端末との間でクロック同期を実現できるタイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体に関する。
近年、ビデオやオーディオといったストリーミングデータをネットワーク経由で再配信する技術がさかんに開発されている。
たとえば、2004年5月には、ハイビジョン映像の無線伝送を実現する5GHz帯無線画像伝送用チップセットが発表されている。無線コントローラ部は無線LAN標準規格IEEE802.11e(ドラフト)に準拠し、インタフェースにMPEG2(Motion Picture Experts Group2)−TS(MPEGトランスポートストリーム)を採用している。
MPEG2−TSパケットを伝送するには、受信側で送信側のクロックと同期をとらなければならないことが知られている。
MPEG2−TSによる映像伝送は、1)送信局が自局の持つ時計のペースで映像を送りつける、2)受信局側からのフィードバックなし、3)送信側は今撮ったばかりの映像を伝送可能、4)送信局が複数の受信局宛てに送信可能、といった性質を持つ。
このため、伝送制御の手法として、1)送信局側はクロックの情報を送信、2)受信局側はPLLを組み送信局側と同期したクロックを再生する、ことが必要である。
受信局は送信局からの映像データを一時的に内部バッファに蓄えて再生する。そのため、受信局は送信局と同じ速度で処理しないと、内部バッファのオーバーランやアンダーランを引き起こす。
MPEG2システムを採用するシステムは、基準となる時刻情報PCR(Program Clock Reference)を多重ストリーム中に符号化することにより、デコーダ側で高精度な同期再生を行えるようにしている。
送信局から、時刻情報(PCR)が少なくとも100msに1回の割合でMPEG2−TSパケットの中に埋め込まれる。
MPEG2デコーダは、PCRを含むMPEG2−TSパケットが到来した時刻とPCR値とを比較し、その後内部PLLを制御することで、デコーダの時刻をエンコーダに合わせる。
MPEG2デコーダの内部PLLの動作を安定させるために、各MPEG2−TSパケットは、揺らぎ(ジッタ)が極力出ないように(エンコーダから出力されたときの相互間隔が保たれるように)MPEG2デコーダまで配送されなければならない。
PLLの目的は、送信局の時計を作り出している発振周波数の正確な値を推定することにより、同一の発振周波数を再現することである。
ジッタが少ない時刻情報を元に送信局の時計の発振周波数を推定することは比較的容易であるが、ジッタが大きい時刻情報を元に送信局の時計の発振周波数を推定することは非常に困難である。
PLLを正しく機能させるためには、PCRを含むMPEG2−TSパケットの到着間隔のジッタが少ないことが肝要である。
MPEG2−TSパケットをネットワーク経由で再配信するときにはネットワークジッタの影響が問題となる。
許容されるPCRジッタの量はデコーダシステムに依存すると考えられる。
たとえば、あるデコーダシステムにおいて実験すると、±数10us程度のPCRジッタを与えると映像に乱れが生じた。他のデコーダシステムにおいて実験すると、±1msのPCRジッタでも映像に乱れは生じなかった。このように、デコーダシステムによって許容されるPCRジッタの量は異なると考えられる。
一方、ネットワークジッタは数100usから数100msの単位で発生し得る。
これだけのネットワークジッタが発生する状況では、デコーダシステムのPLLを正しく機能させることはできない。
一般的に、数msを超えるような伝送遅延では、PLLは利用できない、と言われている。
そこで、ジッタを吸収するための仕組みが必要であるが、その方法として、大別してバッファ方式とタイムスタンプ方式の2つの方法がある。
バッファ方式の場合、受信局がバッファにたまるデータを監視する。バッファの中のある位置以上にデータが溜った場合には、受信局の読みだしクロックのスピードを上げる。逆にバッファの中のある位置以下にデータが減った場合には、受信局の読みだしクロックのスピードを下げる。受信局は、このように常にデータ量を制御することによって、クロックの同期をとる。
タイムスタンプ方式の場合、送信局がパケットごとに送信局の時刻情報に基づくタイムスタンプを付与する。受信局はパケットに付与されたタイムスタンプと受信局の時刻情報に基づく時刻とを比較して、送信局の間におけるパケット間の到着間隔を再現する。
タイムスタンプ方式の場合、送受信局において共通の時計を利用できなければならない。または、少なくとも時計の進み方が一致していなければならない。(受信局が再生のタイミングを決定する仕様であれば、必ずしも共通の時計を利用できなくともよい。この場合、時計の進み方が一致していればよい。)
それを実現する方法として、(1)NTP(Network Time Protocol)、(2)共通イベント観測方式、(3)送受信局のクロック周波数のズレを調整、の3つの方法が考えられる。
NTPは、IPネットワーク上で時刻を合わせるための一般的なプロトコルである。NTPは、RFC(Request For Comment)−1305、あるいは、その簡易版のSNTP(Simple NTP)RFC−2030のことを指す。
NTPはインターネット上で時計を合わせるために一般的に使用されている。
NTPによる時刻合わせの手法は次の通り。
(1)ホストはピアにパケットを送信する。(T)
(2)ピアはパケットを受信し(T)、送信元アドレスをあて先にして送り返す(T)。
(3)ホストはピアからパケットを受信する。(T
,Tはホスト側のタイムスタンプを、T,Tはピア側のタイムスタンプを示す。各パケットにはT,T,Tのタイムスタンプが含まれる。
ラウンドトリップ時間δは以下のように求められる。
δ=(T−T)−(T−T
ホストとピアのクロックオフセットθは以下のように求める。
θ=((T−T)+(T−T))/2
また、真のクロックオフセットをθとすると、θ
θ−δ/2≦θ≦θ+δ/2
で評価されるため、ラウンドトリップ時間が少ない方がクロックオフセットθの誤差が少なくなくなる傾向がある。
NTPでは、数回パケットを送受信して、ラウンドトリップ時間が最小のものについてクロックオフセットを採用することが行われる。
共通イベント観測方式は、すでに多数提案されており、時刻情報のジッタレス中継、電波時計の利用、GPSの利用、ISDN回線を用いた共通クロックの供給、商用電源による同期、などがある。
前述した5GHz帯無線画像伝送用チップセットは、時刻情報のジッタレス中継を利用している。
IEEE802.11規格無線LANには、TSF(Timing Synchronization Function)という時刻同期を取るための機能がある。
AP(アクセスポイント)がタイミング・マスタとなり、周期的に送信するビーコン信号(制御信号)の中で、タイマの値をブロードキャスト送信する。STA(端末)は、APからビーコン信号を受信し、その中に設定されているTSFタイマの値に自局のタイマを合わせる。(以上、非特許文献1参照)
IEEE802.11規格無線LANのTSFは、送受信間の共通の時計になりうるので、前述した5GHz帯無線画像伝送用チップセットは、このTSFを利用してジッタレス伝送を実現している。
また、送受信局のクロック周波数のズレを調整する方式もすでに提案されている。
たとえば、特許文献1には、伝送遅延ゆらぎが発生するネットワーク環境において、相対的ゆらぎ時間を平滑化し、時間経過に対する単調増加あるいは単調減少の様子を監視することにより、送受信間のクロックのずれを解消する方向に制御する手法が提案されている。
また、特許文献2では、通信開始後に最初に受信された同期タイミングパケットの受信時におけるクロックの値とその後に受信された同期タイミングパケットの受信時におけるクロックの値との差分を基に送信側のクロックとクロック生成手段の発生しているクロックの周波数差を推定する手法が提案されている。
特開2003―258894号公報 特開2001―186180号公報 「802.11高速無線LAN教科書」、IDGジャパン出版、2003年3月29日、P.66−122、松江英明、守倉正博 監修、初版
本発明が解決しようとする課題は以下のようなものである。
まず、ジッタを吸収するためのバッファ方式であるが、この方式は基本的に固定ビットレートしか適用できない、という問題がある。実際には、映像データには可変ビットレートもありうるので汎用性に欠ける。また、バッファ方式ではバッファの残量に基づいてクロック速度を調整するため、タイムスタンプ方式と比べると、高精度にジッタ吸収することはできない。汎用性や高精度を考えると、バッファ方式よりもタイムスタンプ方式が望ましい。
次に、IEEE802.11規格無線LANのTSFを利用して送受信間の共通の時計を得る方法であるが、TSFはIEEE802.11規格無線LANの中だけでしか利用できない、という問題がある。他の媒体、たとえば有線LANのイーサーネット(登録商標)などをまたがった場合には利用できない。特定の系に依存しない、より汎用的な解決方法が望ましい。
また、NTPによる時刻合わせでは、「伝搬時間が行きと帰りで同じ」という暗黙的な前提がある。実際には、行きと帰りでネットワークの経路が異なる、また、伝送速度が異なる、などの理由により、行きと帰りの伝播時間が同じであることはほとんどない。また、プロトコルのやりとりは通常1回しか行われず、NTPを実行した時点でのネットワーク状況によって、伝播時間が大きく影響される。このため、高精度に時刻合わせができないという問題がある。一般的に、NTPの仕組みでは数msの誤差が発生してしまうようである。
また、共通イベント観測方式である、電波時計の利用、GPSの利用、ISDN回線を用いた共通クロックの供給、商用電源による同期、などについては、IPネットワークの通信装置以外に他のシステム(たとえば、電波を受信するためのアンテナ、同期検波回路など)が必要となり、余計なコストがつく、という問題がある。その上、電波の受信状況によっては必ずしも利用可能であるとは言えない。IPネットワークの通信装置だけで解決できるならば、その方が望ましいと考える。
ところで、MPEG伝送システムを考えると、必ずしも共通の時計は必要ではなく、時計の進み方が一致していればよい。送信側では各パケットに送信側の時刻情報に基づくタイムスタンプを付与し、受信側ではパケットに付与されたタイムスタンプと受信側の時刻情報に基づくタイムスタンプとを比較し再生タイミングを決定する。このとき、1パケット目を再生するタイミングさえ決まれば、2パケット目以降の再生タイミングは、パケットに付与されたタイムスタンプの間隔を見て決定することができる。送信側は受信側の再生タイミングに関与せず、もっぱら受信側のみの判断で再生タイミングが決定される。このような仕組みであれば、必ずしも共通の時計は必要ではなく、時計の進み方が一致していればよい。
そこで、送受信局のクロック周波数のズレを調整する方法であるが、特許文献1に開示された発明の場合、送受信するすべてのパケットを遅延ゆらぎの平滑化の対象としているため、あるパケットが極端に大きな伝送遅延時間を持つと、送受信局のクロック周波数の比が高精度に求められない、または、誤った値に収束するという問題がある。すなわち、極端に大きな伝送遅延時間を持つパケットが発生した直後に、クロック周波数比の値が大きく変化してしまい、その後長い時間にわたって影響が出る。
パケットの遅延ゆらぎが、平均遅延時間を中心にして正規分布のような形をしていれば、特許文献1に開示されている平滑化はうまく機能すると考えられる。しかし、待ち行列の理論から明らかなように、伝送遅延時間のばらつきは、無限大の方向に長く伸びる。つまり、極端に大きな伝送遅延時間を持つパケットは発生し得る、ということである。このようなパケットも含めて平滑化すると、誤差が大きくなり、正しい値に収束しなくなる。
また、パケット伝送時間の上限と下限の評価がなされていないため、クロック周波数比がどれくらいの精度の誤差をもっているか判断がつかない、という問題がある。誤差の推定ができないと、どれだけの精度を守ってジッタを吸収しているか、ということが言えない。
次に、特許文献2に開示された発明の場合、クロック周波数比の上限と下限の評価がなされており、誤差の推定が可能である。また、目標誤差に到達するまでの収束時間を推定する手法も紹介されている。
しかし、実施例において、IPネットワーク上におけるゆらぎの上限値を設けている。先ほど述べたように、伝送遅延時間に有意な上限を持たせることは危険である。ネットワークの状況においては、極端に大きな伝送遅延時間を持つパケットが発生しうる。
ゆらぎの上限値を設定して、仮にそれ以上の伝送遅延を持つパケットが発生した場合、特許文献2に開示された実施例では成り立たない。特許文献2の図7において、線分LFの傾きKが線分LBの傾きより大きくなる、または、線分LGの傾きKが線分LCの傾きより小さくなる、ということが起こりえる。すると、その後の展開でK<Kとなり(すなわち、特許文献2の図7において、線分LFの傾きKが線分LGの傾きKより大きくなり)、妥当と考えられる推定値が存在しないことになる。
ゆらぎの上限値を極端に大きな値にすれば、この実施例でも可能であるかもしれないが、おそらく現実的な解決方法にはなり得ない。現実的な時間内に収束しないためである。たとえば、ゆらぎの上限をY=100ms、クロックの周波数差の目標誤差をW=10−6(1ppm)とするとき、収束に必要な所要時間は2Y/W=55時間以上となる。
そもそも伝送遅延ゆらぎに上限を設ける、という仮定に問題があると考えられる。
本発明はこのような問題に着目してなされたものであり、その目的は、伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体を提供することである。
上記目的を達成するために、本発明のある局面にしたがうと、タイミングの検出装置は、タイミングを検出するための検出手段と、第1のパケットを、他の装置へ送信するための送信手段と、他の装置が返信しかつ第1のパケットに対応する第2のパケットを受信するための受信手段と、他の装置に第1のパケットを送信したタイミング、第1のパケットに対応しかつ他の装置における第1のパケットの受信タイミングを表わす第2のパケットを受信手段が受信したタイミング、および他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび他の装置のクロックパルスの周波数比を算出する算出手段と、算出手段が算出した周波数比に基づいて、検出手段が検出したタイミングを補正するための補正手段とを含む。
すなわち、算出手段は、他の装置に第1のパケットを送信したタイミング、第1のパケットに対応しかつ他の装置における第1のパケットの受信タイミングを表わす第2のパケットを受信手段が受信したタイミング、および他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび他の装置のクロックパルスの周波数比を算出する。補正手段は、算出手段が算出した周波数比に基づいて、検出手段が検出したタイミングを補正する。これにより、クロックパルスの周波数比は、他の装置に第1のパケットを送信したタイミング、第1のパケットに対応しかつ他の装置における第1のパケットの受信タイミングを表わす第2のパケットを受信手段が受信したタイミング、および他の装置における第1のパケットの受信タイミングの影響を受けることとなる。クロックパルスの周波数比がこれらの値の影響を受けると、クロックパルスの周波数比が、伝送遅延ゆらぎおよびパケットの伝送遅延時間の影響を受けることは少なくなる。その結果、伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、タイミングの検出装置を提供することができる。
また、上述の算出手段は、少なくとも第1のパケットの他の装置における受信タイミング、および送信手段が第1のパケットを送信したタイミングに基いて第1の値を算出するための手段と、少なくとも第2のパケットが表わす受信タイミング、および自装置における第2のパケットの受信タイミングに基いて第2の値を算出するための手段と、第1の値および第2の値から、クロックパルスの周波数比を算出するための手段とを含むことが望ましい。
すなわち、算出手段は、第1の値および第2の値から、クロックパルスの周波数比を算出する。これにより、クロックパルスの周波数比が、伝送遅延ゆらぎおよびパケットの伝送遅延時間の影響を受けることはより少なくなる。その結果、より伝送遅延ゆらぎに上限を仮定する必要がなく、より極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、タイミングの検出装置を提供することができる。
また、上述の第1の値を算出するための手段は、複数の第1のパケットそれぞれの受信タイミングおよび複数の第1のパケットを送信したそれぞれのタイミングに基づいて複数の第1の値を算出するための手段を含むことが望ましい。第2の値を算出するための手段は、複数の第2のパケットそれぞれが表わす受信タイミング、および複数の第2のパケットそれぞれの受信タイミングに基いて複数の第2の値を算出するための手段を含むことが望ましい。クロックパルスの周波数比を算出するための手段は、複数の第1の値の内の最小値と、複数の第2の値の内の最大値との間の値であるクロックパルスの周波数比を算出するための手段を含むことが望ましい。
すなわち、算出手段は、複数の第1の値の内の最小値と、複数の第2の値の内の最大値との間の値であるクロックパルスの周波数比を算出する。これにより、クロックパルスの周波数比が、伝送遅延ゆらぎおよびパケットの伝送遅延時間の影響を受けることはさらに少なくなる。その結果、さらに伝送遅延ゆらぎに上限を仮定する必要がなく、さらに極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、タイミングの検出装置を提供することができる。
また、上述の複数の第1の値の内の最小値と、複数の第2の値の内の最大値との間の値は、第1の値の内の最小値および第2の値の内の最大値の加重平均の値であることが望ましい。
また、上述の第1の値は、基準となるタイミングに他の装置が検出したタイミングの推定値から第2のパケットが表わす受信タイミングまでの時間を、基準となるタイミングから送信手段が第1のパケットを送信したタイミングまでの時間で除算した値であることが望ましい。第2の値は、基準となるタイミングに他の装置が検出したタイミングの推定値から第1のパケットの他の装置における受信タイミングまでの時間を、基準となるタイミングから第2のパケットの受信タイミングまでの時間で除算した値であることが望ましい。
すなわち、算出手段は、第1の値および第2の値から、クロックパルスの周波数比を算出する。第1の値は、基準となるタイミングに他の装置が検出したタイミングの推定値から第2のパケットが表わす受信タイミングまでの時間を、基準となるタイミングから送信手段が第1のパケットを送信したタイミングまでの時間で除算した値である。第2の値は、基準となるタイミングに他の装置が検出したタイミングの推定値から第1のパケットの他の装置における受信タイミングまでの時間を、基準となるタイミングから自装置における第2のパケットの受信タイミングまでの時間で除算した値である。これにより、クロックパルスの周波数比が、伝送遅延ゆらぎおよびパケットの伝送遅延時間の影響を受けることは極めて少なくなる。その結果、伝送遅延ゆらぎに上限を仮定する必要がなく、より極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットにほとんど影響されない、タイミングの検出装置を提供することができる。
また、上述のタイミングの検出装置は、算出手段が算出したクロックパルスの周波数比を有理化するための有理化手段をさらに含むことが望ましい。補正手段は、有理化手段が有理化したクロックパルスの周波数比の分母および分子に一意に対応するタイミングに、タイミングを補正するための手段を含むことが望ましい。
また、上述の検出手段は、クロックパルスを発生する発振器と、発振器が発生するクロックパルスをカウントすることにより、タイミングを生成するための生成手段とを含むことが望ましい。補正手段は、算出手段が算出したクロックパルスの周波数比に基づいて、生成手段がカウントしたクロックパルスの数を変えることにより、タイミングを補正するための手段を含むことが望ましい。
また、上述のタイミングを補正するための手段は、クロックパルスの周波数比が1より大きいか否かを判断するための判断手段と、クロックパルスの周波数比が1より大きければ、生成手段がカウントしたクロックパルスの数を減らすことにより、タイミングを補正するための手段と、クロックパルスの周波数比が1より小さければ、生成手段がカウントしたクロックパルスの数を増やすことにより、タイミングを補正するための手段を含むことが望ましい。
また、上述のタイミングの検出装置は、クロックパルスの周波数比を記憶する不揮発性メモリをさらに含むことが望ましい。補正手段は、不揮発性メモリが記憶したクロック周波数比に基づいて、検出手段が検出したタイミングを補正するための手段を含むことが望ましい。
本発明の他の局面にしたがうと、表示装置は、上述のタイミングの検出装置を含むことが望ましい。
すなわち、伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、表示装置を提供することができる。
本発明の他の局面にしたがうと、タイミングの検出プログラムは、タイミングを検出する検出ステップと、第1のパケットを、他の装置へ送信する送信ステップと、他の装置が返信しかつ第1のパケットに対応する第2のパケットを受信する受信ステップと、他の装置に第1のパケットを送信したタイミング、第1のパケットに対応しかつ他の装置における第1のパケットの受信タイミングを表わす第2のパケットを受信ステップにおいて受信したタイミング、および他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび他の装置のクロックパルスの周波数比を算出する算出ステップと、算出ステップにおいて算出した周波数比に基づいて、検出ステップにおいて検出したタイミングを補正する補正ステップとを含む各ステップをコンピュータに実行させる。
すなわち、伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、タイミングの検出プログラムを提供することができる。
本発明の他の局面にしたがうと、記録媒体は、タイミングの検出プログラムを記録した、コンピュータ読取り可能な記録媒体である。記録媒体は、タイミングを検出する検出ステップと、第1のパケットを、他の装置へ送信する送信ステップと、他の装置が返信しかつ第1のパケットに対応する第2のパケットを受信する受信ステップと、他の装置に第1のパケットを送信したタイミング、第1のパケットに対応しかつ他の装置における第1のパケットの受信タイミングを表わす第2のパケットを受信ステップにおいて受信したタイミング、および他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび他の装置のクロックパルスの周波数比を算出する算出ステップと、算出ステップにおいて算出した周波数比に基づいて、検出ステップにおいて検出したタイミングを補正する補正ステップとを含む各ステップをコンピュータに実行させるためのタイミングの検出プログラムを記録した、コンピュータ読取り可能な記録媒体である。
すなわち、伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生するようなネットワーク環境においてもそのパケットに影響されない、タイミングの検出プログラムを記録したコンピュータ読取り可能な記録媒体を提供することができる。
本発明に係るタイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体は、伝送遅延ゆらぎに上限を仮定する必要がなく、極端に大きな伝送遅延時間を持つパケットが発生しても、そのパケットに影響されない。
クロックの周波数比を短時間に高精度で収束させることができる。
クロックの周波数比の上限と下限が評価できるので、誤差を推定できる。
許容するジッタの量が与えられた時に、それを満足した伝送が可能であるどうかを表示装置等において明示することができる。
本発明における最良の形態を図に従って説明する。
図1は、本発明を組み込んだ映像伝送システムの一例である。
この例では、映像の送信側をサーバー、受信側をクライアントとして、サーバーからクライアントに映像データを伝送する場合を想定しているので、図1の例においてはサーバーに映像データが入力され、クライアントで映像データが出力されるという構成になっている。しかし伝送するデータは映像に限らず、いかなるデータを伝送するシステムであっても本発明を適用できることは言うまでもない。本発明の核心は実際に映像データ伝送をする前に、クライアントがサーバーの時刻の進み方に合わせるための技術を提供するものである。
図1において、サーバー130とクライアント100が、ネットワーク120を介して接続されている。
サーバー130やクライアント100は、特定目的に特化した組み込み機器でもよいし、汎用的なPC(Personal Computer)であってもよい。
ネットワーク120は、単一の特定の媒体に限るということはなく、任意の媒体で、複数の媒体をまたがってもよい。途中にブリッジやルータ、スイッチングハブなどの中継器があってもよい。
サーバー130は、CPU(Central Processing Unit)131、メモリ132、通信I/F(interface)133、時刻制御部134を少なくとも備える。CPU131は、ソフトウェアを実行することにより、サーバー130がクライアント100と通信する装置として動作するように、サーバー130の各部を制御する。メモリ132は、CPU131がプログラムを実行する際に必要な値などを記憶する。通信I/F133は、パケットを、クライアント100へ送信する送信部と、クライアント100からパケットを受信するための受信部とを含む。
同様に、クライアント100は、CPU101、メモリ102、通信I/F103、時刻制御部104を少なくとも備える。CPU101は、ソフトウェアを実行することにより、クライアント100が時刻の検出装置を含む伝送装置として動作するように、クライアント100の各部を制御する。メモリ102は、CPU101がプログラムを実行する際に必要な値などを記憶する。通信I/F103は、パケットを、他の装置(本実施の形態の場合サーバー130)へ送信する送信部と、サーバー130からパケットを受信するための受信部とを含む。送信部が送信するパケットには、第1のパケット(本実施の形態においては、後述する測定パケットがこれにあたる)が含まれる。受信部が受信するパケットには、サーバー130が返信しかつ測定パケットに対応する第2のパケット(本実施の形態においては、後述する返信パケットがこれにあたる)が含まれる。時刻制御部104は、タイミングを検出する。
これらは、本発明の説明に必要な最小限の構成であって、他に必要と思われるコンポーネントは省略されている。たとえば、プログラムを格納する不揮発性メモリや、メモリ−メモリ間を高速に転送するDMA(Direct Memory Access)などがあってもよい。
サーバー130やクライアント100がPCの場合は、時刻制御部134や時刻制御部104はPCI(Peripheral Component Interconnect)バスなどで接続された外部のボードであってもよい。
時刻制御部134は、発振器135、時刻カウンタ部136、バッファ137、映像入力I/F138を少なくとも備える。発振器135は、クロックパルスを発生する。時刻カウンタ部136は、発振器135が発生するクロックパルスをカウントすることにより、タイミングを表わす値を生成する。これにより、時刻制御部134によって(より厳密に言うと発振器135および時刻カウンタ部136によって)タイミングが検出されることとなる。バッファ137は、情報を一時的に記憶する。映像入力I/F138は、映像のデータを受付ける。
同様に、時刻制御部104は、発振器105、時刻カウンタ部106、時刻補正部107、出力タイミング決定部108、バッファ109、映像出力I/F110を少なくとも備える。発振器105は、クロックパルスを発生する。時刻カウンタ部106は、発振器105が発生するクロックパルスをカウントすることにより、タイミングを表わす値を生成する。これにより、時刻制御部104によって(より厳密に言うと発振器105および時刻カウンタ部106によって)タイミングが検出されることとなる。時刻補正部107は、CPU101が算出したクロックパルスの周波数比に基づいて、時刻カウンタ部106がカウントしたクロックパルスの数を変えることにより、タイミングを補正する。
これらは、本発明の説明に必要な最小限の構成であって、他に必要と思われるコンポーネントは省略されている。たとえば、ホストCPUとのインタフェース部や映像データを暗号化する回路などがあってもよい。
発振器105や発振器135は、周波数偏差が±30PPM程度の安価なものでよい。ただし、周波数の不安定さ(すなわち、出力される波形の周波数のバラツキ)は少ない方が望ましい。
時刻制御部134は発振器135を基に時刻カウンタ部136にてタイミングを表わす値であるタイミングカウンタを生成する。これにより、発振器135および時刻カウンタ部136は、タイミングを検出する。
同様に、時刻制御部104は発振器105を基に時刻カウンタ部106にてタイミングカウンタを生成する。これにより、発振器105および時刻カウンタ部106は、タイミングを検出することとなる。時刻制御部134と時刻制御部104で、それぞれ独立してタイミングカウンタを生成する。
また時刻制御部104は、時刻カウンタ部106、時刻補正部107を制御してタイミングの検出と補正をするための各種の関連情報の制御、たとえば、時刻カウンタ部106におけるクロックパルスのカウント数を変える、レジスタ群111へ情報をセットするまたそこから情報を読み出して時刻補正部107へ転送する、自らが生成したタイミングカウンタを他の装置へ送信する、また他の装置のタイミングカウンタを取得する、あるいは、それら情報を基に各種必要な演算をするといったような制御を、CPU101の管理の下で、あるいは時刻制御部104独自で行なう。
上記の時刻制御部は、時刻制御部134と時刻制御部104で公称値が同じクロック周波数でカウントアップするものとする。
もし公称のクロック周波数が異なっている場合は、同一のクロック周波数に合わせるためにクライアント100側の周波数を公称値に合わせる調整をしておくものとする(具体的な調整の例を後述する)。
時刻カウンタ部は精度とビット長を注意して設計する必要がある。
本発明では、クロック周波数が27MHzの発振器を用いて、3クロックサイクルごと(111.111ns)に1カウントアップするものとする。
またタイミングカウンタは40ビットの数値の列により表わされることとする。しかしこれらの値は一例でありこれらに限るものでないことは言うまでも無い。
クロック進み合わせプロトコルでやり取りされるタイミングカウンタは、時刻カウンタ部136、時刻カウンタ部106で生成されるタイミングカウンタを用いる。
時刻制御部134には、デジタル放送受信機などから映像入力I/F138を介して映像データのパケットが入力され、時刻制御部134は1つ1つのパケットに入力された時点のタイミングカウンタを付与し、バッファ137に一時保存する。
サーバー130のCPU131は、バッファ137から適当なタイミングでパケットを取り出し、メモリ132へ格納する。メモリ132に格納されたパケットは通信I/F133によってネットワーク120へ送出される。
クライアント100のCPU101は、通信I/F103によって受信されたパケットをメモリ102へ格納する。メモリ102に格納されたパケットは、適当なタイミングで時刻制御部104に送られる。
時刻制御部104は、CPU101から受け取ったパケットをバッファ109に一時保存する。出力タイミング決定部108にて、補正後のタイミングカウンタとパケットに含まれるタイミングカウンタとを比較して、出力タイミングを決定する。パケットは、タイミングカウンタが除かれて、映像出力I/F110を介して、デコーダ装置などへ出力される。
図2に、ジッタを説明した図を示す。
理想的な伝送(すなわち一定量の遅延時間を伴う伝送)と、実際の伝送との間には、パケットの出力タイミングにおいて伝送ゆらぎが生じる。この伝送ゆらぎのことをジッタと呼んでいる。
図3に、ジッタを吸収する方法を説明した一般的な説明図を示す。
送信機はパケットが入力されると1パケットずつそのパケットが入力された時点の送信機側のタイミングを付与する。送信機は数パケットをまとめてひとつのペイロードデータとし、受信機へ送信する。
受信機はペイロードデータを受信すると、パケット単位に分解する。一律に固定された遅延時間をDとすると、受信機側のタイミングが、パケットに付与されているタイミング+Dと等しくなる時点でそのパケットを出力する。受信機からパケットが出力される時間の間隔は、送信機から送信された時間の間隔を再現したものとなる。
ところでこの方法が有効であるには、送信機と受信機の時間の進み方が一致している必要がある。
実際には、送信機と受信機との間のクロック周波数には少しではあってもズレがあり、この周波数のズレに起因するタイミングのズレがある。そのため映像データを送受信する前に、受信機側のクロックの進みを送信機側に合わせておかないと上で述べたジッタを吸収する方法は有効に働かない。
図4は、上記の問題を解決する本発明におけるクロック進み合わせプロトコルの概念を示したものである。
クライアント100はサーバー130に対してクロック進み合わせのための測定パケットを送信する。この測定パケットには、クライアント100が送信した時点のクライアント100側のタイミング(C)が付加されている。
サーバー130は、当該測定パケットを受信すると、受信した時点のサーバー130側のタイミング(S)をさらに付加して、当該測定パケットの送信元アドレスをあて先アドレスとした返信パケットとして送り返す。
クライアント100は、サーバー130から上記の返信パケットを受信する。
上記のクロック進み合わせプロトコルを、適当な時間間隔で繰り返す。
本発明の実施例では、100msの時間間隔で繰り返す。
図5は、クライアント100側のタイミングとサーバー130側のタイミングの関係を示したものである。
クライアント100からクロック進み合わせのための測定パケットを送信した時点でのクライアント100側のタイミングをC、サーバー130がその測定パケットを受信した時点でのサーバー130側のタイミングをS、クライアント100がサーバー130から返信された返信パケットを受信した時点でのクライアント100側のタイミングをCとする。
図4で示した上記記号を基に、以下で本発明のクロック進み合わせの方法を詳細に説明する。
クライアント100は、クロック進み合わせのための測定パケットを繰り返し送信して(C,S,C)のデータを測定する。
クライアント100とサーバー130の間でクロック周波数比は本来異なるものであるため、{C,C}とSをそのままで比較することに意味をなさない。
クライアント100のタイミングを式(1)に基づき補正することを考える。
F(C)=α×(C−C)+β ・・・(1)
ここで、F(C)は補正されたクライアント100側のタイミング、Cは補正する前のクライアント100側のタイミング、αはサーバー130とクライアント100のクロック周波数比、βはC=Cにおけるサーバー130側のタイミング、Cはクライアント100側の任意の基準となるタイミングをそれぞれ表している。
補正されたクライアント100側のタイミングが、サーバー130側のタイミングと常に同じ時刻計時を実現していれば(つまり、任意のどの時点においてもクライアント100において検出されるタイミングとサーバー130において検出されるタイミングとが同じであれば)、式(2)が成り立つはずである。
F(C)<S<F(C)・・・(2)
式(1)は、サーバー130とクライアント100のクロック周波数比が十分安定していることが前提となるが、急激な温度変化などがない限り、式(1)の補正式でクライアント100のタイミングを補正することができる、と考えてよい。
式(2)を少し変形すると式(3)または式(4)が得られる。
0<S−F(C)<F(C)−F(C)・・・(3)
0<F(C)−S1<F(C)−F(C)・・・(4)
F(C)−F(C)は往復にかかった伝送時間(ラウンドトリップ時間)に相当する。
−F(C)は行きの伝送時間、F(C)−Sは帰りの伝送時間に相当する。
式(3)または式(4)は、片方向の伝送時間は、「0」より大きく、ラウンドトリップ時間より小さいことを意味している。
式(3)を展開すると、式(5)が得られる。
0<S−(α×NC+β)<α×(NC−NC)・・・(5)
ただし、NC=C−C、NC=C−Cとする。
式(5)をαについて解くと、式(6)が得られる。
(S−β)/NC<α<(S−β)/NC・・・(6)
クライアント100は、クロック進み合わせのための測定パケットを繰り返し送受信して、{C,S,C}のデータを測定する。
クライアント100は、測定された結果から式(6)を満足するようなα、β、Cが存在するかどうか調べる。
まず、Cとβをどのように設定するかが問題となる。Cとβは唯一に決まるものではなく、妥当な数値に設定すればよい。
は、クライアント100側の任意の基準であるため、どこに設定してもかまわない。
クロック進み合わせプロトコルを走らせて、はじめの100個程度のデータから、ラウンドトリップ時間(C−C)が最小となるデータを取り出す。このデータを{C1k、S1k、C2k}とする。
は式(7)のように設定する。
=C1k・・・(7)
βは、クライアント100のタイミングCがCの時のサーバー130のタイミングであり、片方向の伝送時間がわからない限り、クライアント100が正確に求めることはできない。そのため、誤差がなるべく小さくなるように推定することになるが、誤差を極力小さくするためには、ラウンドトリップ時間がなるべく小さいものを選んだ方がよい。ラウンドトリップ時間が大きいと、βの推定誤差が大きくなるので、ラウンドトリップ時間が局所的に最小のものを選ぶようにする。
ここでは、βを式(8)のように設定する。
β=S1k−(C2k−C1k)/2・・・(8)
可能性を言えば、β=S1k−(C2k−C1k)からβ=S1kまでの範囲で、誤差は存在しうる。行きと帰りの伝送時間の合計がC2k−C1kであるため、行きと帰りとの伝送時間をどのように分配するかによってβの値が変わる。
式(8)は、行きと帰りの伝送時間が同じである、かつ、サーバー130とクライアント100の公称クロック周波数が同じであると仮定して、C=Cにおけるサーバー130側のタイミングを推定したものである。
ここで、式(8)で設定したβの値は一例であって、確定されるべきではない。αの上限と下限の範囲を計算するために仮に決定したものである。
上記のデータ{C1k、S1k、C2k}より以前のデータは無視して、その次以降のデータについて、式(6)を適用する。
式(8)によって設定されたβを使って、式(6)よりαの上限と下限を評価する。
図6に、ある有線LAN上で2台のPC間で測定したデータ(C、S、C)の例を示す。これらのデータは、100msに1回パケットを送信するという条件にしたがって測定されたデータである。図6のC、S、およびCの値は、タイミングカウンタである。これらは1タイミングカウンタあたり279.365nsに相当する。測定時間は、約20分間である。なお、図6における「時刻」および「ミリ秒」は、経過した時間の目安を表わすものである。
αの下限をαmin、αの上限をαmaxとすると、αmin、αmaxは式(6)より式(9)のようになる。αminは式(6)の左辺、αmaxは式(6)の右辺である。
αmin=(S−β)/NC、αmax=(S−β)/NC・・・(9)
これにより、CPU101は、クロックパルスの周波数比αの下限値を算出することとなる。式(9)から、本実施例におけるクロックパルスの周波数比αの下限値αminは、基準となるタイミングCにサーバー130が検出したタイミングの推定値βから測定パケットのサーバー130における受信タイミングまでの時間を、基準となるタイミングCからクライアント100における返信パケットの受信タイミング(通信I/F103の受信部が返信パケットを受信した時点で発振器105および時刻カウンタ部106が検出したタイミング)までの時間で除算した値となる。
また、CPU101は、クロックパルスの周波数比αの上限値を算出することとなる。式(9)から、本実施例におけるクロックパルスの周波数比αの上限値αmaxは、基準となるタイミングCにサーバー130が検出したタイミングの推定値βから返信パケットが表わす受信タイミングまでの時間を、基準となるタイミングから通信I/F103の送信部が測定パケットを送信したタイミングまでの時間で除算した値となる。
本実施例の場合、上述した基準となるタイミングCにサーバー130が検出したタイミングの推定値βは、式(8)に示す通り、測定パケットのサーバー130における受信タイミング(すなわち返信パケットが表わす受信タイミング)と、通信I/F103の送信部が測定パケットを送信した時点で発振器105および時刻カウンタ部106が検出したタイミングから通信I/F103の受信部が返信パケットを受信した時点で発振器105および時刻カウンタ部106が検出したタイミングまでの時間の半分との、差である。
式(6)は、ある特定のデータ{C,S,C}における、αの満たすべき値を示しているが、すべてのデータにおいてαmin<α<αmaxとなるはずである。
図7に、図6で得られたデータからαmin、αmaxを計算した例を示す。
図8に、αminとαmaxをプロットした図を示す。
図8を見ると、αの上限と下限の範囲が狭まっていく様子がわかる。
図8のプロットでは、αmin<αmaxとなっている。これにより、式(6)の不等式が成り立つことがわかる。
しかし、測定環境によってはαmin<αmaxとならないことがある。
そのような場合は、βの設定(あるいはデータ{C1k,S1k,C2k}の選択)に問題があるか、そもそもクライアント100側のタイミングが式(1)によって補正できない可能性が考えられる。
βの設定に問題があるとすれば、その問題は式(8)によって行きと帰りの伝送時間が同じであると仮定している点にあると考えられる。その場合は、行きと帰りの伝送時間の分配を変えて計算すると良い。たとえば、式(8)を式(8’)のようにして、βを複数個設定して計算していくと良い。Nはラウンドトリップ時間に比例して決定すると良い。
βi=S1k−(C2k−C1k)×i/N,i=0〜N・・・(8’)
式(8’)において、すべてのβiにおいてαmin>αmaxとなってしまった場合、最初のいくつかのデータを捨てて、再度Cとβを設定し直すと良い。特に、最初に見つけたデータのラウンドトリップ時間が十分に最小になっていなければ、このような事態が発生しうる。後続のデータの中から、ラウンドトリップ時間がより最小となるデータを見つけて、再度Cとβを設定し直す。
クライアント100側のタイミングが式(1)によって補正できない可能性はある。温度変化、湿度変化、気圧変化、磁場変化、供給電圧の変化、その他の影響により、また発振器自体の性能などの理由により、発振周波数が計測中に変化することがありうるためである。発振周波数の変動が大きい場合には、発振周波数が十分に安定するまで待たなければならない。実際には、常にクロック進み合わせプロトコルをやり取りして、αmin>αmaxとなる間先に受信したデータから順にいくつかのデータを捨てて、再度Cとβを設定し直すと良い。
ところで、図8をもう少し詳しく見てみると、αmaxが前後の点と比べて上方向に大きくぶれてプロットされた点と、αminが前後の点と比べて下方向に大きくぶれてプロットされた点があることがわかる。
このαmaxが上方向にぶれてプロットされた点は、行きの伝送時間が前後の点と比べて異常に大きいことによるものである。
また、αminが下方向にぶれてプロットされた点は、帰りの伝送時間が前後の点と比べて異常に大きいことによるものである。
一般的に、ネットワーク120の伝送時間はある範囲内に収まると考えがちであるが、待ち行列の理論によると、伝送時間の上限について仮定を設けることは現実的ではない。つまり、異常に大きな伝送時間を持つパケットは存在する、ということである。
この点が、従来技術では考慮されていなかったが、本発明では、何かの事情で異常に大きな伝送時間を持つパケットが存在しても、αminとαmaxの範囲が狭まらないだけで、αの推定には影響されないようになっている。
さて、図8のように、αmin<αmaxを保ちながらαminとαmaxが推移したならば、式(10)のようにαを推定すると良い。
αest=(MAX_αmin+MIN_αmax)/2・・・(10)
ここで、αestは推定したクロック周波数比、MIN_αmaxはαmaxの現在までの最小値、MAX_αminはαminの現在までの最大値とする。
本実施例では、αestをMIN_αmaxとMAX_αminの算術平均で求めているが、これに限らず、たとえば式(10’)のような加重平均のようなものであってもよい。
αest=MAX_αmin×ω+MIN_αmax×(1−ω),0<ω<1・・・(10’)
特に、行きの伝送時間が帰りの伝送時間と比べて大きくなる傾向がある場合、ωを0.5より大きくすると良い。
αestは、MAX_αmin<α<MIN_αmaxの範囲に存在する値であればよい。
正確に言えば、式(8’)におけるβiによってMAX_αminとMIN_αmaxの値は異なる。先に述べたようにβは正確に求められないため、すべてのβiについてMAX_αminとMIN_αmaxを計算し、その全体の中からαの上限と下限を推定すべきである。ただし、本実施の形態の場合、すべてのβiについてのMAX_αminとMIN_αmaxとの計算は、実施しない。αの推定値の精度を高くすることよりも、計算に費やす時間を短縮することの方が重要であるためである。
図9に、これらの点をプロットした様子を示す。下から順にMAX_αmin、αest、MIN_αmaxである。αestが急速に収束していることがわかる。
αestの誤差は、式(11)で見積もることができる。
|αest−α|<(MIN_αmax−MAX_αmin)/2・・・(11)
さて、式(11)の右辺がどのように減少していくか解析を試みる。
αmaxの最小値が更新されるのは、行きの伝送時間が前後のデータと比較して相対的に小さい時であり、αminの最大値が更新されるのは、帰りの伝送時間が前後のデータと比較して相対的に大きい時である。
ここで、行きの伝送時間も帰りの伝送時間も常に一定であると仮定する。この時、式(11)の右辺はもっとも早いペースで減少していくであろう。
この時の式(11)の右辺は、式(6)より、式(12)のように見積もれる。
RTTmin/NC/2・・・(12)
ここで、ラウンドトリップ時間(C−C)の現在までの最小をRTTminとする。RTTminは固定値とする。
なお、式(12)は、下記の過程を経て導かれる。
αmin=(S−β)/(C−C
αmax=(S−β)/(C−C
αmax−αmin=(S−β)×(C−C)/(C−C)/(C−C
すなわち、αmaxは、少なくとも測定パケットのサーバー130における受信タイミング、および通信I/F103の送信部が測定パケットを送信したタイミングに基いて、CPU101により算出される値である。αminは、少なくとも返信パケットが表わす受信タイミング、およびクライアント100における返信パケットの受信タイミングに基いて、CPU101により算出される値である。
ここで、(S−β)〜(C−C)(「〜」は、だいたい同じ値であることを表わす)として、(αmax−αmin)〜(C−C)/(C−C)としている。(正確ではないが、見積もりとして使える。)
式(12)から、ネットワーク120の最小ラウンドトリップ時間が2倍になれば、αestの誤差は2倍になる、と言える。(RTTminに比例するため)
また、αestの誤差を10進で1桁精度を上げるためには、10倍の測定時間が必要である、と言える。(NCに反比例するため)
なお、10進で1桁精度を上げるためには、αestを1/10にしなければならない。ラウンドトリップ時間(C−C)が十分安定であると仮定すれば、αestはC−Cに反比例する。よって、測定時間(C−C)が10倍にならなければならない。
図10に、理想的なネットワーク環境(行きの伝送時間と、帰りの伝送時間が常に一定)におけるシミュレーションを実施した結果を示す。
ネットワーク120の最小ラウンドトリップ時間が222μ秒の時、αestの誤差が10−6未満(1秒間に1μsのずれ)となるまで、1.8分かかることがわかる。
実際には、伝送時間にはばらつきがあるので、このようなシミュレーション通りにはならないかもしれない。
しかし、最小ラウンドトリップ時間に十分近いラウンドトリップ時間を持つパケットが、ある程度の頻度で発生すれば、αestの誤差は上記のシミュレーションの結果と同様のペースで減少していくはずである。
実際のネットワーク環境では、最小に十分近いラウンドトリップ時間を持つパケットが、ある程度の頻度で発生するので、αestの誤差はほぼ上記のペースで減少していくと考えてよい。
αestの目標誤差をW、最小ラウンドトリップ時間をRTTminとすると、目標誤差に到達するまでの所要時間Tは式(13)で見積もることができる。
T=RTTmin/(2×W)・・・(13)
ただし、
Wは、αestの目標誤差、すなわち、W=|αest−α|である。
この式は、次の過程を経て導かれる。
すなわち、式(11)と式(12)より、
W<RTTmin/(C−C)/2
−Cは、測定時間(T)であるので、式(13)のように見積もることができる。
次に、与えられた許容ジッタ量を満足して伝送するためには、どのようにクライアント100側のタイミングを補正していけばよいかを述べる。
たとえば、与えられた許容ジッタ量を30μsとすると、αestの誤差が10−6未満となるまで待ち、30秒未満に1回の割合でタイミングの補正値を更新する、というようにすればよい。
αestの誤差を10−6とすると、タイミングの補正値は1秒間に1μsの割合でずれが生じる可能性がある。従って、次の30秒後までには補正値を更新しなければならない。
αestの誤差が10−7未満となるまで待てば、次の300秒後までに補正値を更新すれば良い。
つまり、1)αestの目標誤差をどこに設定するか、2)その後どれだけの間隔でタイミングの補正値を更新し続ける必要があるか、の2点を考える必要がある。
本発明の実施例では、補正する間隔が平均して10秒程度になるようにαestの目標誤差を調整する。
たとえば、与えられた許容ジッタ量を30μsとすると、(1秒間に3μsのずれが発生する)3×10−6未満となるようにαestの目標誤差を設定する。
図11にタイミングの補正方法の概念図を示す。図11において、一点鎖線はサーバー130側のタイミングを表わす。粗い破線は、クライアント100側のタイミングを表わす。細かい破線は、クライアント100側の補正前のタイミングを表わす。
まず、クロック進み合わせプロトコルにしたがい通信した後、サーバー130側とクライアント100側とのクロック周波数比αが目標とする誤差以下になるまでの、初期の待ち時間が必要である。
この初期の待ち時間は、式(13)で示したように、最小ラウンドトリップ時間と、αestの目標誤差とによって変化する。
時刻カウンタ部106および時刻補正部107は、初期の待ち時間が経過して、クロック周波数比が目標とする誤差以下になった時の、クライアント100側のタイミング候補を基点とし、クロック周波数比の推定値αestに基づいた調整をして、自律的にタイミングを刻む。
図11の黒丸印で示した点が、クライアント100側のタイミング候補である。
タイミング候補とは、ある時点におけるサーバー130側のタイミングの推定値である。クライアント100は、黒丸印で示した点において、クライアント100側のタイミングをサーバー130側のタイミングの推定値に合わせる。
タイミング候補をどのように推定するかは難しい問題となる。片方向の伝送時間がわからない限り、βを正確に求めることはできない。しかし、アプリケーションによってはβを正確に求める必要もないことに注意されたい。
本発明の目的はクロックの進み方を合わせることであって、2点間でタイミングを正確に一致させることではない。ネットワークの行きと帰りで異なる伝送時間を持つ場合においては、βは正しい値ではない可能性があるが、本発明の目的のためには、それでもかまわない。
αestとβ、Cが求まれば、式(1)において、任意の時点でのクライアント100側のタイミング候補が得られる。
現在のタイミングより少しだけ未来のタイミングをC=Cmとすると、
F(Cm)=αest×(Cm−C)+β ・・・(17)
式(17)のF(Cm)がC=Cm時点でのクライアント100側のタイミング候補である。
クライアント100側のタイミングがCmとなった時点で、F(Cm)に補正し、その後はクライアント100側のタイミングの進み方をサーバー130とクライアント100のクロック周波数比αestによって補正しながらクライアント100側のタイミングを生成する。
クロック進み合わせプロトコルの結果を基にβ、C、αestを求めて補正回路に書き込みする一連の処理を、必要な時間間隔で繰り返す。
図12にタイミングの補正回路を説明したブロック図を示す。
これは、図1の時刻カウンタ部106と時刻補正部107と出力タイミング決定部108と、レジスタ群111とで構成される。
また、図13に補正回路のレジスタ群111を示す。図13において、「TC」は補正前のタイミングカウンタ(ビット数は40ビットとする)を表わす。「GOAL_TC」は目標とするタイミングのカウンタ(ビット数は40ビットとする)を表わす。「CANDIDATE_TC」は、タイミングカウンタ候補(ビット数は40ビットとする)を表わす。なお、本実施例の場合、補正前のタイミングカウンタ「TC」の値が「GOAL_TC」の値に等しくなった時、「CANDIDATE_TC」と後述する{P,NUM,DEN}をロードする。「P」は「PACE」の略である。「P」はカウンタの補正ペースを表わす。本実施例において、「P」の値が「0」の場合、カウンタは早くカウントするように補正される。「P」の値が「1」の場合、カウンタは遅くカウントするように補正される。「NUM」は「NUMERATOR」の略である。「NUM」は、クロック周波数比から「1」を減算した値をさらに有理化した値の、分子を表わす。「DEN」は「DENOMINATOR」の略である。「DEN」は、クロック周波数比から「1」を減算した値をさらに有理化した値の、分母を表わす。「ADJUSTED_TC」は補正後のタイミングカウンタ(ビット数は40ビットとする)を表わす。「E」は「ENABLE」の略である。「E」は補正回路を有効にするか否かのフラグの値を表わす。本実施例において、「E」の値が「0」の場合、補正回路は無効とされる。「E」の値が「1」の場合、補正回路は有効とされる。「L」は「LOAD REQUEST」の略である。「L」はソフトウェアの処理の一部として、「P」、「NUM」、および「DEN」、または「CANDIDATE_TC」をロードすることを表わす。
CPU101は、レジスタ群111からレジスタの値をリードまたはライトできる。補正前のタイミング(TC)と補正後のタイミング (ADJUSTED_TC)は、リードだけ可能である。
補正回路が有効であるか無効であるかを決定するビット(ENABLE)がある。ENABLE=1の時の補正回路が有効となる。補正回路が無効となっている間は、補正後のタイミング(ADJUSTED_TC)は常に補正前のタイミング(TC)と同じ値になるものとする。
タイミングの検出とその補正はハードウェアで行い、補正回路の制御(レジスタに設定)はクライアント100のCPU101がソフトウェアを実行することにより行なう。
図12において、時刻カウンタ部106は、27MHzクロックを基に、3クロックサイクルごとに1カウントアップして、補正前のタイミング(TC)を生成する。
時刻補正部107は、補正前のタイミング(TC)とレジスタ群111に設定されている種々の値とを基に、補正後のタイミング(ADJUSTED_TC)を検出する。
ソフトウェアは、補正前のタイミング(TC)をレジスタ群111からリードして、その補正前のタイミング(TC)から少しだけ未来のタイミングを目標タイミング(GOAL_TC)として設定する。少しだけ未来のタイミングというのは、ソフトウェアによる計算とレジスタに書き込むまでの時間を考慮して決める。例としては、目標タイミング(GOAL_TC)は補正前のタイミング(TC)から1秒程度後のタイミングでよい。
ソフトウェアを実行するCPU101は、補正前のタイミング(TC)が進んでいって、先に設定された目標タイミング(GOAL_TC)と等しくなった時の、タイミング候補(CANDIDATE_TC)を式(17)から計算する。
また、ソフトウェアを実行するCPU101は、クロック周波数比の推定値αestより、ペース(PACE)と、クロックパルスの周波数比αestから1を引いた値を有理数化したときの分子(NUMERATOR)と分母(DENOMINATOR)を計算する。ペース(PACE)は、クライアント100のクロックの進み方を早くするか、遅くするかを決定する1ビットのレジスタである。このために、まずCPU101は、クロックパルスの周波数比が1より大きいか否かを判断する。
本実施例の場合、αest>1ならばPACE=0とする。αest<1ならばPACE=1とする。
αestが1を超えれば、クライアント100側のタイミングの進みがサーバー130側のタイミングの進みと比べて遅い、ということである。従って、クライアント100側のタイミングのペースを早める必要がある。クロックの進み方を早くする場合、PACE=0とする。
αestが1未満ならば、クライアント100側のタイミングの進みがサーバー130側のタイミングの進みと比べて早い、ということである。従って、クライアント100側のタイミングのペースを遅くする必要がある。クロックの進み方を遅くする場合、PACE=1とする。
補正のタイミングは、以下の方法でクロック周波数比αから算出される有理数(NUMERATOR / DENOMINATOR)によって決定される。
この有理数は、クロック周波数比から1を引いて有理化した値である。CPU101は、ソフトウェアの制御により、クロック周波数比を浮動小数点で求めているが、CPU101は、これをハードウェアで処理しやすいように有理化する。
たとえば、α=1.00000749255とすると、式(18)のようにする。
RATIO=α-1=0.00000749255=718/95828523・・・(18)
すなわち、
α-1=0.00000749255を連分数展開すると、{133465, 1, 10, 21, 1, 2, ...}となる。
連分数展開を有理数に変換して、1/(133465+1/(1+1/(10+1/(21+1/(1+1/2)))))=718/95828523を得る。
本実施例では、後述するハードウェアの仕様により、
PACE=0
NUMERATOR=718
DENOMINATOR=(95828523+718)/3=31943080
と設定する。
また、α=0.9999528011とすると、式(19)のようにする。
RATIO=α-1=-0.0000471989=-8725/184856003・・・(19)
すなわち、
α=0.9999528011を連分数展開すると、{21186, 1, 14, 3, 1, 17, 8,...}となる。
連分数展開を有理数に変換して、1/(21186+1/(1+1/(14+1/(3+1/(1+1/(17+1/8))))))=8725/184856003を得る。
本実施例では、後述するハードウェアの仕様により、
PACE=1
NUMERATOR=8725
DENOMINATOR=(184856003-8725)/3=61615759
と設定する。
浮動小数点を有理数に変換する方法は、3.14=314/100のように分母を10のべき乗にして単純に処理しても良いが、より精度良く行なうために連分数展開を使うのが良い。
連分数展開した最初の数項を取り出して有理数に変換する。所望の精度以下となるまで、かつ、ハードウェアのビット数を超えないように、最初の数項を取り出して有理数に変換する。
たとえば、円周率は{3, 7, 15, 1, 292, 1,...}のように連分数展開されるので、最初の数項を取り出して有理数にすると式(20)のようになる。
3+1/7=22/7
3+1/(7+1/15)=333/106
3+1/(7+1/(15+1/1))=355/113
3+1/(7+1/(15+1/(1+1/292)))=103993/33102
・・・式(20)
ハードウェアに設定する分母と分子は、その設計によってあらかじめ上限が決まっている。本実施例では、分母を32ビット、分子を31ビットとしている。つまり、分母の上限は232−1、分子の上限は231−1となる。ハードウェアのビット数を超えない範囲で、かつ、元の浮動小数点に最も近い有理数とするために、連分数展開を用いるのが良い。
時刻補正部107は、PWM(Pulse Width Modulation)の考え方を使う。
補正回路にPWM_COUNTという内部カウンタを用意し、リセットしようとするときは、この内部カウンタの値が「0」にクリアされる。その上で、3クロックサイクル(このサイクルは、発振器105で刻まれるクロックにより表わされるサイクルである)ごとにNUMERATORの値が加算され、PWM_COUNTの値がDENOMINATORの値を超えれば、PWM_COUNTの値からDENOMINATORの値が引かれる、という処理が行われる。これにより、時刻補正部107は、CPU101が有理化したクロックパルスの周波数比の分母および分子に一意に対応するタイミングに、タイミングを補正することとなる。
PWM_COUNTの値 がDENOMINATORの値を超えたタイミングで、補正後のタイミング(ADJUSTED_TC)のカウントアップ期間を調整する。
図14に、タイミングを早める場合の補正回路の動作を示す。この図では、図を説明しやすくするために簡単化してNUMERATOR=2、DENOMINATOR=9としているが実際のシステムではこの値になるとは限らない。補正前のタイミング(TC)がGOAL_TCに等しくなった時、補正後のタイミング(ADJUSTED_TC)にタイミング候補(CANDIDATE_TC)がロードされる。PACE=0, NUMERATOR=2, DENOMINATOR=9の場合、3クロックサイクルごとにPWM_COUNTの値にNUMERATORの値が加算されていく。これにより、PWM_COUNTの値は、「0」、「2」、「4」、「6」、「8」... と変化する。PWM_COUNTの値がDENOMINATORの値を超えれば、タイミングのカウンタアップ期間を補正する。PACE=0の場合は、2クロックサイクルごとにPWM_COUNTの値にNUMERATORの値が加算されていくようにする。
図15に、タイミングを遅くする場合の補正回路の動作を示す。PACE=1の場合は、4クロックサイクルごとにPWM_COUNTの値にNUMERATORの値が加算されていくようにする。
すなわち、
図14と図15との違いは、CNTの値が0と1との間で変化する(PACE=0の場合)か、CNTの値が「0」、「1」、「2」、「3」の順に変化する(PACE=1の場合)か、の違いである。
図14から、27クロックサイクルの間に補正前のタイミング(TC)が9だけ増加しているのに対し、25クロックサイクルの間に補正後のタイミング(ADJUSTED_TC)が9だけ増加している、ことがわかる。同じ期間で見ると、補正前のタイミング(TC)の値が「25」増加する間に、補正後のタイミング(ADJUSTED_TC)の値は「27」増加する。つまり、α=27/25=1.08で補正されていることになる。
αが1以上で、α−1を有理数化した値がN/Dとするとき、NUMERATOR=N, DENOMINATOR=(D+N)/3 と設定することとする。
図15から、27クロックサイクルでの間に補正前のタイミング(TC)が9だけ増加しているのに対し、29クロックサイクルの間に補正後のタイミング(ADJUSTED_TC)が9だけ増加している、ことがわかる。同じ期間で見ると、補正前のタイミング(TC)の値が「29」増加する間に、補正後のタイミング(ADJUSTED_TC)の値は「27」増加する。つまり、α=27/29=0.931・・・で補正されていることになる。
αが1未満で、α−1の絶対値を有理数化した値がN/Dとするとき、NUMERATOR=N, DENOMINATOR=(D-N)/3と設定することとする。
ソフトウェアを実行するCPU101は、目標タイミング(GOAL_TC)、タイミング候補(CANDIDATE_TC)、クロック周波数比を有理数化した値(PACE, NUMERATOR, DENOMINATOR)をセットする。
ソフトウェアを実行するCPU101は、これらの値をセットすると、LOAD REQUESTビットを1にセットする。
ハードウェアは、LOAD REQUESTビットが「1」にセットされていれば、レジスタに有効なデータがあることがわかる。ハードウェアは、TC=GOAL_TCとなった時に、レジスタからデータを取り込み、LOAD REQUESTビットをクリアする(LOAD REQUESTビットの値を「0」にする)。
以上の動作により、クライアント100側のタイミングをサーバー130側のタイミングに合わせることができる。
ソフトウェアを実行するCPU101は、クロック進み合わせプロトコルを通信させて、補正回路のレジスタ群111に適切な値を書き込む必要がある。さらに、必要な間隔でこれらを更新し続けなければならない。
以下、ソフトウェアを実行するCPU101の動作について、詳しく説明する。
図16に、サーバー130側のプログラムの手順を示す。
S101にてネットワーク120を初期化する。すなわち、クロック進み合わせプロトコルで用いるポートを送受信可能な状態にする。S102にてパケット受信待ちをする。クロック進み合わせのための測定パケットを受信するとS103にて、そのときのサーバー130側のタイミングSを取得する。S104にて、Sをペイロードに付与して、クロック進み合わせのための測定パケットの送信元アドレスをあて先にして送り返す。S102に戻り、上記の手順を繰り返す。
図17に、クライアント100側のプログラムのリレー概念図を示す。クライアント100側は{αest、β、C}を繰り返し計算するために、図17で示したように時間差のリレー方式で計算する。クライアント100側のプログラムを実行するCPU101は、一定時間ごとにリレー構造体を生成する。すなわち、CPU101は、リレー構造体を記憶するために、メモリ102の任意の領域を割当てる。CPU101は、リレー構造体ごとに、それぞれ独立して{αest、β、C}を計算する。先頭のリレー構造体が算出した誤差が目標誤差に到達すれば、その結果を用いて補正回路のレジスタ群111に書き込む。
各リレー構造体は矛盾が生じる(式(8)におけるすべてのβiについてMAX_αmin > MIN_αmax となる)か、または、生存時間をあらかじめ設けておきその生存時間が経過するまで(ここでは1時間とする)存続し続ける。リレー構造体が消滅すれば、次のリレー構造体の結果を用いて補正する。
リレー構造体を設けている理由は、サーバー130とクライアント100のクロック周波数比が徐々に変化していき、式(1)で補正できなくなる可能性があるためである。正確には、いったん決定した{β,C}をいつまでも使い続けることはできないということである。{β,C}を適切な時間間隔で更新すると式(1)で補正し続けることができる。本発明では、一定時間ごとにリレー構造体を生成して、それぞれのリレー構造体で{β,C}を計算する。{β,C}を更新するタイミングは、以前の{β,C}ではαが存在しなくなった時点(すべてのβiについてMAX_αmin > MIN_αmaxとなる)か、または、生存時間を経過した時点である。
本実施例における、クライアント100側のプログラムのリレー構造体は、Cと、βの初期値と、現在までのαminの最大値と、現在までのαmaxの最小値と、ラウンドトリップ時間が最小となるデータの値と、次のリレー構造体のアドレスとを含む。
βの初期値は、ラウンドトリップ時間がなるべく最小となるデータ{C1k,S1k,C2k}を用いて、式(8)または式(8’)で計算する。βを1つだけ持たせる時は式(8)を、βを複数個持たせる時は式(8’)で計算する。
図18に、クライアント100側のプログラムのリレー構造体のリンクリストの概念を示す。本実施例において、リンクリストは、リレー構造体が記憶されたアドレスを列記したデータである。リンクリストの末尾には「NULL」を表わすデータが含まれる。リレー構造体は、同時に複数存在し、また、個数も可変であるため、リンクリストで管理するとよい。
図19に、CPU101が実行する、クライアント100側のプログラムの手順(1)を示す。
S201にてネットワーク120を初期化する。すなわち、クロック進み合わせプロトコルで用いるポートを送受信可能な状態にする。S202にてスレッドを生成する。スレッドでは、クロック進み合わせプロトコルの送信だけを担当する。
S203にて、クライアント100側のタイミングCを取得する。S204にて、Cをペイロードに付与して、サーバー130に対してクロック進み合わせのための測定パケットを送信する。これにより、タイミングCは、サーバー130に測定パケットを送信したタイミングとなる。
S205にて、100ms待って、S203に戻る。ここでは、100msの間隔で送信を繰り返しているが、時間間隔を短くしてもαestの収束が早くなるわけではない。送信をスレッドにしているのは、送信した後、必ずしも受信するとは限らないからである。ネットワーク120の状況によっては、パケットロストが発生することはありうる。送信した後、受信待ちで止まるような作り方では、パケットロストが発生した時にいつまでも受信せずに止まってしまう。
S206にてクロック進み合わせのための返信パケットの受信待ちをする。この返信パケットは、S204にて送信した送信パケットに対する返信として送信されたパケットである。この返信パケットは、サーバー130における測定パケットの受信タイミングを表わす。通信I/F103の受信部が当該測定パケットを受信するとS207にて、そのときのクライアント100側のタイミングCを取得する。これにより、タイミングCは、返信パケットを通信I/F103の受信部が受信したタイミングとなる。
もし、サーバー130側とクライアント100側の公称の基準クロック周波数が異なっていれば、S208にて、タイミングの基準クロック周波数を合わせる。たとえば、サーバー130側の基準クロック周波数が80MHz、クライアント100側の基準クロック周波数が20MHzとすると、サーバー130側のタイミングの進み方はクライアント100側と比べて4倍早い、ということになる。従って、サーバー130側のタイミングの値を1/4倍にする、という処理を行なう。公称の基準クロック周波数が同じであれば、S208は省略可能である。
S209にて、処理(1)を行なう。処理(1)では、クロック進み合わせプロトコルで得られたデータ{C、S、C}から、{α、β、C}を計算して、結果をレジスタ群111に書き込みする。
図20、図21、および図22に、CPU101が実行する、クライアント100側のプログラムの手順(2)、手順(3)を示す。プログラムの手順(2)、手順(3)は、プログラムの手順(1)における処理(1)の詳細である。
S301にて、リレー構造体を定期的に生成して(メモリ102の中にリレー構造体を記憶する領域を確保して)、そのアドレスをリンクリストの最後尾に追加する。生成したリンク構造体を構成する値を定義する方法は、S302、S303、S304にて詳しく説明する。
最初の10秒間は、最初の10秒間の中でラウンドトリップ時間が最小となるデータを選び、そのデータを基に式(7)、式(8)によってリレー構造体を生成して初期化する。(S302)
それ以降は、30秒経過するごとに、その間の中でラウンドトリップ時間が最小となるデータを選び、そのデータを基に式(7)、式(8)によってリレー構造体を生成して初期化する。(S303)
リンクリストに含まれるリレー構造体の個数が、ある数以上となれば、先頭のリレー構造体を削除する。ここでは、約1時間でリレー構造体が削除されるよう120個とする。(S304)
S305にて、リンクリストに連鎖されている(リンクリストにアドレス(リレー構造体が記憶されたアドレスのこと)の値が含まれている)各リレー構造体について計算を行なう。
S401にて、αmin、αmax、MAX_αmin、MIN_αmaxを計算する。計算は式(9)の通りである。リレー構造体がβを複数個持っていれば、各βについて計算する。これにより、CPU101は、複数の測定パケットそれぞれの受信タイミングおよび複数の測定パケットを送信したそれぞれのタイミングに基づいて複数のαminを算出することとなる。CPU101は、複数の返信パケットそれぞれが表わす受信タイミング、および複数の返信パケットそれぞれの受信タイミングに基いて複数のαmaxを算出することとなる。
S402にて、現在のβの設定で矛盾(MAX_αmin > MIN_αmax)が生じているかどうかを調べる。矛盾が生じていれば、矛盾が生じていないβを探して、もしあればβをその値に変更する。
S306にて、リンクリストの先頭のリレー構造体について矛盾が生じているかどうか調べる。(すべてのβにおいてMAX_αmin > MIN_αmaxとなった?)矛盾が生じていれば、S307にて先頭のリレー構造体を削除する。
S308にて、条件が合致していればS309にて処理(2)を実行する。条件とは、リンクリストの先頭のリレー構造体が目標誤差に到達した事、かつ、ハードウェアによって前回の補正式がロードされた事、である。誤差は、式(11)で求める。ここでは目標誤差を1.0×10−5とする。
目標誤差に到達していれば、S309にて、αestの計算と、αを有理数化した結果を補正回路のレジスタ群111に書き込む。
S411にて、リンクリストの先頭のリレー構造体についてαestを計算する。すなわち、CPU101は、αminおよびαmaxから、クロックパルスの周波数比(本実施例の場合、厳密には周波数比の推定値)を算出する。αestの計算は式(10)または式(10’)で行なう。これにより、CPU101は、複数のαminの内の最大値であるMAX_αminと、複数のαmaxの内の最小値であるMIN_αmaxとの間の値であるクロックパルスの周波数比を算出することとなる。すなわち、CPU101は、サーバー130に測定パケットを送信したタイミング、測定パケットに対応しかつサーバー130における測定パケットの受信タイミングを表わす返信パケットを通信I/F103の受信部が受信したタイミング、およびサーバー130における測定パケットの受信タイミングに基いて、自装置のクロックパルスおよびサーバー130のクロックパルスの周波数比を算出することとなる。さらにCPU101は、αestの有理数化も行なう。
S412にて、現在のタイミングより少しだけの未来(ここでは1秒とする)におけるタイミングカウンタ候補を計算する。この計算は式(17)で行なう。
S413にて、以上の結果を補正回路のレジスタ群111に書き込む。レジスタ群111に書き込む値の計算は先に図14および図15を参照して述べた通りである。時刻補正部107は、レジスタ群111の値を読込み、時刻カウンタ部106が検出したタイミングを補正する。これにより、時刻補正部107は、CPU101が算出した周波数比に基づいて、発振器105および時刻カウンタ部106が検出したタイミングを補正することとなる。このとき、時刻補正部107は、クロックパルスの周波数比が1より大きければ、時刻カウンタ部106がカウントしたクロックパルスの数を減らすことにより、タイミングを補正する。時刻補正部107は、クロックパルスの周波数比が1より小さければ、時刻カウンタ部106がカウントしたクロックパルスの数を増やすことにより、タイミングを補正する。
ここでは、現在のクライアント100にて検出されるタイミングより1秒後のタイミングを目標タイミングカウンタ(GOAL_TC)とする。
ところで、タイミングカウンタ候補(CANDIDATE_TC)は、TC=GOAL_TCとなる時のサーバー130のタイミングを表している。補正回路は、TC=GOAL_TCとなった時に、タイミングカウンタ候補(CANDIDATE_TC)をロードするが、このとき補正後のタイミングカウンタは飛びが発生する可能性がある。タイミングカウンタの飛びが、ある程度の範囲におさまらないと、映像乱れなどの問題を引き起こす可能性がある。
そこで、タイミングカウンタの飛びを少なくするためには次のようにすると良い。
補正する時にCANDIDATE_TCをロードする時と、しない時に制御を分ける。そのため、LOAD REQUEST ビットを2ビットに設定する。
1回目の補正の時は、クライアント100にて検出されるタイミングとサーバー130にて検出されるタイミングに関連はないので、補正後のタイミングカウンタに飛びが生じるのはやむをえない。CANDIDATE_TCをロードする。
2回目以降の補正の時は、現在までの補正が妥当であればCANDIDATE_TCをロードしない、妥当でなければロードする、というように処理を分ける。
現在までの補正が妥当であるかどうかを式(21)によって判断する。
直近の補正前のタイミングをC、Cに対応した補正後のタイミングをACとすると、
p=(AC−NCmin)/(NCmax−NCmin)・・・(21)
ここで、NCmin=MAX_αmin×(C−C)+β、NCmax=MIN_αmax×(C−C)+βとする。
C=Cにおける補正後のタイミングについて、考えられる最小の点をNCminとし、最大の点をNCmaxとしている。
式(21)によるとpの値は、補正後のタイミングACが最小の点に近ければ「0」付近になり、最大の点に近ければ「1」付近になる。
p=0.5付近になっていれば、現在までの補正は妥当であると言える。
0.25<=p<=0.75の時は、現在までの補正が妥当であると判断し、CANDIDATE_TCをロードしない。(PACE, NUMERATOR, DENOMINATOR はロードする。)
p<0.25の時は、現在までの補正が妥当でないと判断し、CANDIDATE_TCをロードする。ただし、タイミングカウンタの飛びは最大10までに抑えると仮定し、CANDIDATE_TCをF’(Cm)+10に設定する。F’(Cm)は前回の補正式に基づくC=Cmの時のタイミングカウンタ候補である。
p>0.75の時は、現在までの補正が妥当でないと判断し、CANDIDATE_TCをロードする。ただし、タイミングカウンタの飛びは最大10までに抑えると仮定し、CANDIDATE_TCをF’(Cm)−10に設定する。F’(Cm)は前回の補正式に基づくC=Cmの時のタイミングカウンタ候補である。
以上のようにすると、補正後のタイミングカウンタの飛びをある程度の範囲に抑えることができる。タイミングカウンタの飛びをどこまで許すかについては、別途ソフトウェアで設定できるようにパラメータ化しておくと良い。
以上で、ハードウェアとソフトウェアの動作を詳しく説明し、本発明における基本的動作を説明した。すなわち、クライアント100がサーバー130のタイミングの進み方に合わせるようなプロトコル(通信規約)を採用する。クライアント100は適当な時間間隔をおいて繰り返しサーバー130に対してクロック進み合わせのためのパケットを送信し、サーバー130側のタイミングとクライアント100側のタイミングの情報を集める。クライアント100のタイミングをある補正式に従って補正できると仮定し、クロック進み合わせプロトコルで得られた結果を、満たすべき不等式に代入して下限の最大と上限の最小を計算すると、クロックの周波数比の上限と下限が得られる。クライアント100は、上限と下限の中間値をクロックの周波数比として、その時の上限と下限の差を推定誤差とする。クライアント100はクライアント100側のタイミングの値を補正する回路(ハードウェア)を備える。この補正回路は、クライアント100のソフトウェアによって制御される。クライアント100のソフトウェアは、許容するジッタの量が与えられるので、ジッタ量を設定すると、クロック周波数比の誤差がどれだけの範囲に収まっていなければならないか、また、補正回路の制御をどれだけの頻度で更新しなければならないかの間隔を決定できる。それらを表示装置などに表示させることもできる。クライアント100のソフトウェアは、クロックの周波数比の誤差が目標とする誤差に到達すれば、補正回路に対してレジスタにリード、ライトすることで制御を行なう。更新しなければならない間隔より短い間隔で繰り返し補正を行なう。クライアント100の補正回路(ハード)は、レジスタにセットされた値を基にタイミングの進み方を早くまたは遅くすることで、クライアント100のタイミングの進み方をサーバー130に合わせる。これにより、クライアント100側のタイミングをサーバー130側のタイミングに合わせることができる。また、クライアント100とサーバー130との間でクロック進み合わせプロトコルを走らせ、その結果を基にクライアント100の補正回路に制御を行なうことを、繰り返し実行することにより、許容するジッタの量を満足した伝送が可能となり、また、任意の時点で許容するジッタの量を満足した伝送が可能となっているかどうかを表示装置等において明示することが可能となる。
また、ソフトウェアは図11における初期の待ち時間を認識できるので、初期の待ち時間が過ぎたときに、他のアプリケーション(たとえば映像伝送アプリケーション)に通知する手段を備えていてもよい。これにより、映像伝送アプリケーションは、初期の待ち時間中には、映像伝送を開始しないような制御をすることができる。
また、初期の待ち時間が過ぎたかどうかを、LED(Light Emitting Diode)等において表示してもよい。これにより、ジッタの許容量を満足した伝送が可能である状態かどうかを外部で判別することができる。
図11における初期の待ち時間の間は、タイミングの補正を行なうことはできない。従って、初期の待ち時間の間に、映像伝送しなければならない時には、補正前のタイミングを出力タイミングの決定に使わざるをえない。
しかし、前回の結果をフラッシュメモリ等の不揮発性メモリに記憶しておけば(クライアント100がクロックパルスの周波数比を記憶する不揮発性メモリをさらに含んでいれば)、時刻補正部107は、前回の結果を使って(不揮発性メモリが記憶したクロック周波数比に基づいて)、発振器105および時刻カウンタ部106が検出したタイミングを補正することもできる。同じ相手と伝送するのであれば、前回の結果はそれなりに信用できるものである。前回の結果を不揮発メモリに記憶することで、次に起動した時の初期の待ち時間にも、タイミングを補正することができる。
また、先頭のリレー構造体については、クロック周波数比が目標となる精度に達していない時点でも、αestを計算してレジスタ群111に書き込みしてもよい。これにより、初期の待ち時間を長く待つことなく、サーバーとクライアント100間のタイミングを一時的に合わせることができる。
また、測定パケットが送信する情報の内容は特に限定されない。特にクロック進み合わせのためだけにパケットを送信する必要はない。任意の目的で通信するパケットを、上述した測定パケットとして送信してもよい。同様に、返信パケットは、サーバー130における測定パケットの受信タイミングを表わすパケットであれば(すなわち、パケットが表わす情報にサーバー130における測定パケットの受信タイミングの情報が含まれていれば)、いかなる情報を通信するためのパケットであってもよい。測定パケットおよび返信パケットが任意の目的で通信されるパケットであることにより、測定のための余計なパケットが発生せず、ネットワークの負荷を抑えることができる。
また、本発明ではサーバー130が測定パケットを受信するとすぐに返信パケットを送信するようにしているが、サーバー130が返信パケットを送信するまでに若干の遅延があっても差し支えない。この場合は、サーバー130が測定パケットを受信した時点でのサーバー130側のタイミングをS、サーバー130が返信パケットを送信した時点でのサーバー130側のタイミングをSとして、S,Sを返信パケットの中に含めるようにすると良い。クライアント100は、サーバー130で遅延した時間(S−S)を、上記記載のクライアント100がサーバー130から返信された返信パケットを受信した時点でのクライアント100側のタイミングCから予め差引く。
本発明の具体的な装置としては、送受信機が表示装置に含まれたものがある。表示装置の例として、テレビ、ホームシアター、HDDレコーダ/デジタルチューナ/AVサーバとテレビとの組み合わせ、ホームシアターと無線スピーカとの組み合わせ、あるいは、ネットワーク映像伝送送受信ユニットなどの例が考えられる。
なお、上記実施形態の各処理ステップは、CPUなどの演算手段が、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶手段に記憶されたプログラムを実行し、キーボードなどの入力手段、ディスプレイなどの出力手段、あるいは、インタフェース回路などの通信手段を制御することにより実現することができる。したがって、これらの手段を有するコンピュータが、上記プログラムを記録した記録媒体を読み取り、当該プログラムを実行するだけで、本実施形態のクライアント100の各種機能および各種処理を実現することができる。また、上記プログラムをリムーバブルな記録媒体に記録することにより、任意のコンピュータ上で上記の各種機能および各種処理を実現することができる。
この記録媒体としては、マイクロコンピュータで処理を行なうために図示しないメモリ、たとえばROMのようなものがプログラムメディアであっても良いし、また、図示していないが外部記憶装置としてプログラム読取り装置が設けられ、そこに記録媒体を挿入することにより読取り可能なプログラムメディアであっても良い。
また、何れの場合でも、格納されているプログラムは、マイクロプロセッサがアクセスして実行される構成であることが好ましい。さらに、プログラムを読み出し、読み出されたプログラムは、マイクロコンピュータのプログラム記憶エリアにダウンロードされて、そのプログラムが実行される方式であることが好ましい。なお、このダウンロード用のプログラムは予め本体装置に格納されているものとする。
また、上記プログラムメディアとしては、本体と分離可能に構成される記録媒体であり、磁気テープやカセットテープ等のテープ系、フレキシブルディスクやハードディスク等の磁気ディスクやCD/MO/MD/DVD等のディスクのディスク系、ICカード(メモリカードを含む)等のカード系、あるいはマスクROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)、フラッシュROM等による半導体メモリを含めた固定的にプログラムを担持する記録媒体等がある。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明におけるタイミング同期システム ジッタの説明 ジッタの吸収方法 本発明におけるクロック進み合わせプロトコルを示した図 クライアント側のタイミングとサーバー側のタイミングの関係を示した図 本発明におけるクロック進み合わせプロトコルの測定データ例 本発明におけるクロック進み合わせプロトコルの計算例 本発明におけるクロック進み合わせプロトコルのαminとαmaxをプロットした図 本発明におけるクロック進み合わせプロトコルのMAX_αminとMIN_αmaxとαestをプロットした図 理想的なネットワーク環境におけるシミュレーション結果を示した図 本発明におけるタイミングの補正方法を説明した概念図 本発明における時刻補正回路を示した図 本発明における時刻補正回路のレジスタ群を示した図 本発明における時刻補正回路の動作を示した図(を早める場合) 本発明における時刻補正回路の動作を示した図(を遅くする場合) 本発明におけるサーバー側のプログラム 本発明におけるクライアント側のプログラム(リレー概念図) 本発明におけるクライアント側のプログラム(リレー構造体のリンクリスト) 本発明におけるクライアント側のプログラム(1) 本発明におけるクライアント側のプログラム(2) 本発明におけるクライアント側のプログラム(3) 本発明におけるクライアント側のプログラム(4)
符号の説明
100 クライアント、101,131 CPU、102,132 メモリ、103,133 通信I/F、104,134 時刻制御部、105,135 発振器、106,136 時刻カウンタ部、107 時刻補正部、108 出力タイミング決定部、109,137 バッファ、110,138 映像出力I/F、111 レジスタ群、120 ネットワーク、130 サーバー。

Claims (12)

  1. タイミングを検出するための検出手段と、
    第1のパケットを、他の装置へ送信するための送信手段と、
    前記他の装置が返信しかつ前記第1のパケットに対応する第2のパケットを受信するための受信手段と、
    前記他の装置に第1のパケットを送信したタイミング、該第1のパケットに対応しかつ前記他の装置における前記第1のパケットの受信タイミングを表わす第2のパケットを前記受信手段が受信したタイミング、および前記他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび前記他の装置のクロックパルスの周波数比を算出する算出手段と、
    前記算出手段が算出した周波数比に基づいて、前記検出手段が検出したタイミングを補正するための補正手段とを含むタイミングの検出装置。
  2. 前記算出手段は、
    少なくとも前記第1のパケットの他の装置における受信タイミング、および前記送信手段が該第1のパケットを送信したタイミングに基いて第1の値を算出するための手段と、
    少なくとも前記第2のパケットが表わす受信タイミング、および自装置における前記第2のパケットの受信タイミングに基いて第2の値を算出するための手段と、
    前記第1の値および第2の値から、前記クロックパルスの周波数比を算出するための手段とを含む、請求項1に記載のタイミングの検出装置。
  3. 前記第1の値を算出するための手段は、複数の前記第1のパケットそれぞれの受信タイミングおよび前記複数の第1のパケットを送信したそれぞれのタイミングに基づいて複数の第1の値を算出するための手段を含み、
    前記第2の値を算出するための手段は、複数の前記第2のパケットそれぞれが表わす受信タイミング、および前記複数の第2のパケットそれぞれの受信タイミングに基いて複数の第2の値を算出するための手段を含み、
    前記クロックパルスの周波数比を算出するための手段は、前記複数の第1の値の内の最小値と、前記複数の第2の値の内の最大値との間の値であるクロックパルスの周波数比を算出するための手段を含む、請求項2に記載のタイミングの検出装置。
  4. 前記複数の第1の値の内の最小値と、前記複数の第2の値の内の最大値との間の値は、前記第1の値の内の最小値および前記第2の値の内の最大値の加重平均の値である、請求項3に記載のタイミングの検出装置。
  5. 前記第1の値は、基準となるタイミングに前記他の装置が検出したタイミングの推定値から前記第2のパケットが表わす受信タイミングまでの時間を、前記基準となるタイミングから前記送信手段が該第1のパケットを送信したタイミングまでの時間で除算した値であり、
    前記第2の値は、前記基準となるタイミングに前記他の装置が検出したタイミングの推定値から前記第1のパケットの他の装置における受信タイミングまでの時間を、前記基準となるタイミングから前記第2のパケットの受信タイミングまでの時間で除算した値である、請求項2に記載のタイミングの検出装置。
  6. 前記タイミングの検出装置は、前記算出手段が算出したクロックパルスの周波数比を有理化するための有理化手段をさらに含み、
    前記補正手段は、前記有理化手段が有理化したクロックパルスの周波数比の分母および分子に一意に対応するタイミングに、前記タイミングを補正するための手段を含む、請求項1に記載のタイミングの検出装置。
  7. 前記検出手段は、
    クロックパルスを発生する発振器と、
    前記発振器が発生するクロックパルスをカウントすることにより、タイミングを生成するための生成手段とを含み、
    前記補正手段は、前記算出手段が算出したクロックパルスの周波数比に基づいて、前記生成手段がカウントしたクロックパルスの数を変えることにより、前記タイミングを補正するための手段を含む、請求項1に記載のタイミングの検出装置。
  8. 前記タイミングを補正するための手段は、
    前記クロックパルスの周波数比が1より大きいか否かを判断するための判断手段と、
    前記クロックパルスの周波数比が1より大きければ、前記生成手段がカウントしたクロックパルスの数を減らすことにより、前記タイミングを補正するための手段と、
    前記クロックパルスの周波数比が1より小さければ、前記生成手段がカウントしたクロックパルスの数を増やすことにより、前記タイミングを補正するための手段とを含む、請求項7に記載のタイミングの検出装置。
  9. 前記タイミングの検出装置は、前記クロックパルスの周波数比を記憶する不揮発性メモリをさらに含み、
    前記補正手段は、前記不揮発性メモリが記憶したクロック周波数比に基づいて、前記検出手段が検出したタイミングを補正するための手段を含む、請求項1から請求項8のいずれかに記載のタイミングの検出装置。
  10. 請求項1に記載のタイミングの検出装置を含む表示装置。
  11. タイミングを検出する検出ステップと、
    第1のパケットを、他の装置へ送信する送信ステップと、
    前記他の装置が返信しかつ前記第1のパケットに対応する第2のパケットを受信する受信ステップと、
    前記他の装置に第1のパケットを送信したタイミング、該第1のパケットに対応しかつ前記他の装置における前記第1のパケットの受信タイミングを表わす第2のパケットを前記受信ステップにおいて受信したタイミング、および前記他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび前記他の装置のクロックパルスの周波数比を算出する算出ステップと、
    前記算出ステップにおいて算出した周波数比に基づいて、前記検出ステップにおいて検出したタイミングを補正する補正ステップとを含む各ステップを、コンピュータに実行させるためのタイミングの検出プログラム。
  12. タイミングを検出する検出ステップと、
    第1のパケットを、他の装置へ送信する送信ステップと、
    前記他の装置が返信しかつ前記第1のパケットに対応する第2のパケットを受信する受信ステップと、
    前記他の装置に第1のパケットを送信したタイミング、該第1のパケットに対応しかつ前記他の装置における前記第1のパケットの受信タイミングを表わす第2のパケットを前記受信ステップにおいて受信したタイミング、および前記他の装置における第1のパケットの受信タイミングに基いて、自装置のクロックパルスおよび前記他の装置のクロックパルスの周波数比を算出する算出ステップと、
    前記算出ステップにおいて算出した周波数比に基づいて、前記検出ステップにおいて検出したタイミングを補正する補正ステップとを含む各ステップを、コンピュータに実行させるためのタイミングの検出プログラムを記録した、コンピュータ読取可能な記録媒体。
JP2005008242A 2005-01-14 2005-01-14 タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体 Expired - Fee Related JP4346557B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005008242A JP4346557B2 (ja) 2005-01-14 2005-01-14 タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005008242A JP4346557B2 (ja) 2005-01-14 2005-01-14 タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2006197399A true JP2006197399A (ja) 2006-07-27
JP4346557B2 JP4346557B2 (ja) 2009-10-21

Family

ID=36803090

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005008242A Expired - Fee Related JP4346557B2 (ja) 2005-01-14 2005-01-14 タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体

Country Status (1)

Country Link
JP (1) JP4346557B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008244704A (ja) * 2007-03-27 2008-10-09 Hirotekku Kk デジタル放送信号再送信装置
JP2010103845A (ja) * 2008-10-24 2010-05-06 Nec Corp Ts信号遅延検出調整方法及び装置
JP2010538539A (ja) * 2007-08-30 2010-12-09 シリコン イメージ,インコーポレイテッド 相互接続ネットワークにおける関連データストリームの同期
US8203958B2 (en) 2008-02-01 2012-06-19 Fujitsu Limited Frame counter correction apparatus, opposing apparatus, and frame counter correction method
WO2014155617A1 (ja) * 2013-03-28 2014-10-02 株式会社東芝 通信装置、通信方法、及び通信プログラム
JP2016021683A (ja) * 2014-07-15 2016-02-04 大井電気株式会社 光通信システムに用いられる分散測定装置、クロック補正装置、および送信装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62272182A (ja) * 1986-05-20 1987-11-26 Mitsubishi Electric Corp 時刻同期方法
JPH10145345A (ja) * 1996-11-14 1998-05-29 Nippon Telegr & Teleph Corp <Ntt> 従属同期方法及びそのシステム
JP2000332802A (ja) * 1999-05-24 2000-11-30 Sony Corp 通信方法、通信システム、通信端末および中継装置
WO2003086003A1 (fr) * 2002-04-04 2003-10-16 Fujitsu Limited Organe de commande de synchronisation et procede de commande dans un reseau radio

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62272182A (ja) * 1986-05-20 1987-11-26 Mitsubishi Electric Corp 時刻同期方法
JPH10145345A (ja) * 1996-11-14 1998-05-29 Nippon Telegr & Teleph Corp <Ntt> 従属同期方法及びそのシステム
JP2000332802A (ja) * 1999-05-24 2000-11-30 Sony Corp 通信方法、通信システム、通信端末および中継装置
WO2003086003A1 (fr) * 2002-04-04 2003-10-16 Fujitsu Limited Organe de commande de synchronisation et procede de commande dans un reseau radio

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008244704A (ja) * 2007-03-27 2008-10-09 Hirotekku Kk デジタル放送信号再送信装置
JP2010538539A (ja) * 2007-08-30 2010-12-09 シリコン イメージ,インコーポレイテッド 相互接続ネットワークにおける関連データストリームの同期
US8203958B2 (en) 2008-02-01 2012-06-19 Fujitsu Limited Frame counter correction apparatus, opposing apparatus, and frame counter correction method
JP2010103845A (ja) * 2008-10-24 2010-05-06 Nec Corp Ts信号遅延検出調整方法及び装置
WO2014155617A1 (ja) * 2013-03-28 2014-10-02 株式会社東芝 通信装置、通信方法、及び通信プログラム
JP2016021683A (ja) * 2014-07-15 2016-02-04 大井電気株式会社 光通信システムに用いられる分散測定装置、クロック補正装置、および送信装置

Also Published As

Publication number Publication date
JP4346557B2 (ja) 2009-10-21

Similar Documents

Publication Publication Date Title
US11863656B2 (en) Method and apparatus for time synchronisation in wireless networks
US10862601B1 (en) Bridges including physical layer devices for indicating transmission times of synchronization frames by modifying previously generated corresponding follow up frames
JP4694969B2 (ja) データ受信装置
US7876791B2 (en) Synchronizing apparatus and method in packet network
JP4346557B2 (ja) タイミングの検出装置、表示装置、タイミングの検出プログラム、タイミングの検出プログラムを記録したコンピュータ読取可能な記録媒体
KR20090032306A (ko) 네트워크상의 타임 동기화 시스템 및 방법
JP2009182659A (ja) タイミング同期方法、同期装置、同期システム及び同期プログラム
JP4467478B2 (ja) 伝送装置および時刻同期方法
US10541769B2 (en) Maintaining synchronization in wireless networks
JP2018155679A (ja) 時刻補正方法
JP4105192B2 (ja) 通信装置、通信方法、プログラム、および、プログラムを記録したコンピュータ読み取り可能な記録媒体
US11737041B2 (en) Multimodal inroute timing synchronization system
US11490347B2 (en) Multimodal inroute timing synchronization system
JP5958008B2 (ja) ストリーム処理装置、ストリーム処理方法およびストリーム処理プログラム
JP6085864B2 (ja) 時刻同期システム、時刻同期方法、スレーブノード及びコンピュータプログラム
KR20170058629A (ko) 디바이스 간의 시각 동기 정밀도를 향상시키는 방법, 장치, 시스템 및 컴퓨터 프로그램
JP2024053608A (ja) 時刻同期装置、時刻同期方法および時刻同期プログラム
JP2021064899A (ja) 受信装置、受信方法および受信用プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090707

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090714

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130724

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees