JP2023004094A - 通信装置 - Google Patents
通信装置 Download PDFInfo
- Publication number
- JP2023004094A JP2023004094A JP2021105593A JP2021105593A JP2023004094A JP 2023004094 A JP2023004094 A JP 2023004094A JP 2021105593 A JP2021105593 A JP 2021105593A JP 2021105593 A JP2021105593 A JP 2021105593A JP 2023004094 A JP2023004094 A JP 2023004094A
- Authority
- JP
- Japan
- Prior art keywords
- time
- unit
- phc
- counter
- communication device
- 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.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 129
- 230000001360 synchronised effect Effects 0.000 claims abstract description 78
- 238000004364 calculation method Methods 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 36
- 230000005540 biological transmission Effects 0.000 description 75
- 238000012545 processing Methods 0.000 description 55
- 230000006870 function Effects 0.000 description 30
- 238000005259 measurement Methods 0.000 description 26
- 238000012937 correction Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 21
- 230000014759 maintenance of location Effects 0.000 description 13
- 101001071145 Homo sapiens Polyhomeotic-like protein 1 Proteins 0.000 description 7
- 102100033222 Polyhomeotic-like protein 1 Human genes 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000015654 memory Effects 0.000 description 7
- 101000583616 Homo sapiens Polyhomeotic-like protein 2 Proteins 0.000 description 6
- 102100030903 Polyhomeotic-like protein 2 Human genes 0.000 description 6
- 230000000630 rising effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101000796673 Homo sapiens Transformation/transcription domain-associated protein Proteins 0.000 description 2
- 102100032762 Transformation/transcription domain-associated protein Human genes 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0685—Clock or time synchronisation in a node; Intranode synchronisation
- H04J3/0697—Synchronisation in a packet node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0673—Clock or time synchronisation among packet nodes using intermediate nodes, e.g. modification of a received timestamp before further transmission to the next packet node, e.g. including internal delay time or residence time into the packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0008—Synchronisation information channels, e.g. clock distribution lines
- H04L7/0012—Synchronisation information channels, e.g. clock distribution lines by comparing receiver clock with transmitter clock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
- H04L7/0033—Correction by delay
- H04L7/0037—Delay of clock signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
【課題】複数のクロックの時刻差を正確に得ることができる通信装置を提供すること。【解決手段】通信装置は、現在時刻を示す信号を出力する複数のクロックと、前記複数のクロックから出力される現在時刻を示す信号を用いて、前記複数のクロックとそれぞれ同期する複数のカウンタ手段と、前記複数のカウンタ手段のカウント値の取得を指示する指示手段と、前記指示手段の指示に応じて、前記複数のカウンタ手段のカウント値を取得する取得手段と、前記取得したカウント値の差分を計算する計算手段と、を有する。【選択図】図5
Description
本発明は通信装置に関する。
ネットワークを用いた時刻同期の方法の一つに、IEEE1588規格であるPTP(Precision Time Protocol)がある。PTPを使用する場合、正確な時刻を持つPTPマスタ装置が時刻同期マスタとして機能し、PTPパケットにその時刻を載せて送信し、PTPスレーブ装置が時刻同期装置(スレーブ)としてPTPパケットを受信することで時刻同期を行う。PTPマスタ/スレーブ装置やPTPパケットを中継する装置は正確な時刻をPTPパケットに書き込むため、もしくは得るため、通信インタフェースに時刻を計数するためのPTP Hardware Clock(以下、「PHC」と称する)を持つ。一般的に、PHCは、通信インタフェースの各通信ポートに独立して実装されており、PHCを時刻同期マスタの時刻と同期させる。このような時刻同期を行うシステムとして、特許文献1に開示されたシステムがある。また、PTPパケットを中継する装置として、Transparent Clock(以下、「TC」と称する)やBoundary Clock(以下、「BC」と称する)が規格で定義されている。
TCは、PTPパケットを他端末へ中継するとき、機器内でPTPパケットが滞留する時間を計算する必要がある。PHCをもつ通信インタフェースはパケットを送受信した時刻をソフトウェアに通知する機構を持ち、ソフトウェアは、例えば、PHCから得た送信時刻と受信時刻から滞留時間を計算する。正確な滞留時間を求めるためには、送信に使用した通信ポートのPHCと受信に使用した通信ポートのPHCが時刻同期している必要がある。機器内にあるPHCとシステムクロックの時刻同期に、オープンソースが広く使用されている。
ソフトウェアが端末内にある2つのPHC(PHC1とPHC2とする)を時刻同期させる場合、2つのPHCの時刻を取得して時刻差を計算する必要がある。最初にPHC1の時刻(t1)を取得し、次にPHC2の時刻(t2)を取得し、最後にもう一度PHC1の時刻(t3)を取得する。それぞれのPHCから時刻を取得するのに所要する処理時間が同じ且つPHC1とPHC2が時刻同期している場合、t1+((t3-t1)/2)が示す時刻とt2が示す時刻は同一になるはずである。したがって、t1+((t3-t1)/2)とt2の差分はPHC1とPHC2の時刻が一致するための時刻差を示し、この時刻差を補正することで2つのPHCを時刻同期することが可能となる。この方法はオープンソースが採用している時刻同期方法の原理でもある。
しかし、システムバスで発生するアービトレーションやアクセス競合により、ソフトウェアからPHCを持つ通信インタフェースへのアクセス時間が一定になるとは限らない。さらに、PHC1とPHC2の時刻を合計3回取得する間に割り込み処理が発生する可能性があるため、取得できるt1/t2/t3の時刻は揺らぎを持つ時刻となる。t1/t2/t3を取得する行為を複数回実行し、その中で最も良い値を採用することでt1/t2/t3に含まれる揺らぎを少なくすることはできるが、揺らぎを取り除くことができるとは限らない。すなわち、PHC1とPHC2の時刻差は、上記した手法では正確に計算することはできない場合が有る。
本発明の目的は、複数のクロックの時刻差を正確に得ることができる通信装置を提供することである。
本発明の目的は、複数のクロックの時刻差を正確に得ることができる通信装置を提供することである。
上記目的を達成するために、本発明の1つの態様による通信装置は、現在時刻を示す信号を出力する複数のクロックと、前記複数のクロックから出力される現在時刻を示す信号を用いて、前記複数のクロックとそれぞれ同期する複数のカウンタ手段と、前記複数のカウンタ手段のカウント値の取得を指示する指示手段と、前記指示手段の指示に応じて、前記複数のカウンタ手段のカウント値を取得する取得手段と、前記取得したカウント値の差分を計算する計算手段と、を有する。
本発明によれば、複数のクロックの時刻差(カウント値の差分)を正確に得ることができる。
以下、添付図面を参照して本発明の実施形態を詳細に説明する。なお、以下の実施形態は本発明を限定するものではなく、また、実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。実施形態の構成は、本発明が適用されるシステムおよび装置の仕様および各種条件(使用条件、使用環境等)によって適宜修正又は変更され得る。本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって確定されない。
実施形態1
図1は本発明を適用できる同期システム100の概略図である。同期システム100は、タイムサーバ101と、PTPハブ102と、26個の同期通信装置103a~同期通信装置103zとを有する。なお、以下の記載において、同期通信装置103a~同期通信装置103zは、特別な説明がない場合、同期通信装置103aから同期通信装置103zまでの26個を区別せず同期通信装置103と称する。同期通信装置103は、例えば、通信機能を有する撮像装置である。
タイムサーバ101は各同期通信装置103へ時刻を配信する機能を有する。つまり、タイムサーバ101は時刻同期マスタとして動作する。本実施形態では時刻の配信はPTPパケットを使用するが、他の時刻同期プロトコルの信号を使用してもよい。タイムサーバ101は伝送路110を介してPTPハブ102に接続されている。
図1は本発明を適用できる同期システム100の概略図である。同期システム100は、タイムサーバ101と、PTPハブ102と、26個の同期通信装置103a~同期通信装置103zとを有する。なお、以下の記載において、同期通信装置103a~同期通信装置103zは、特別な説明がない場合、同期通信装置103aから同期通信装置103zまでの26個を区別せず同期通信装置103と称する。同期通信装置103は、例えば、通信機能を有する撮像装置である。
タイムサーバ101は各同期通信装置103へ時刻を配信する機能を有する。つまり、タイムサーバ101は時刻同期マスタとして動作する。本実施形態では時刻の配信はPTPパケットを使用するが、他の時刻同期プロトコルの信号を使用してもよい。タイムサーバ101は伝送路110を介してPTPハブ102に接続されている。
PTPハブ102は、TC機能を有したスイッチングハブである。なお、PTPハブ102は、PTPにおけるBCであってもよい。また、PTPハブ102は、TCP/IPパケットやその他の種類のパケットの中継も可能であるとする。PTPハブ102は、伝送路111aを介して同期通信装置103aに接続されている。
同期通信装置103は少なくともTC機能を有する。なお、同期通信装置103は、PTPにおけるOrdinary Clock(以下、「OC」と称する)になる機能を具備していてもよい。同期通信装置103a~103zは伝送路111b~伝送路111zによりデイジーチェーン接続されている。より具体的には、同期通信装置103aと同期通信装置103bは伝送路111bによりデイジーチェーン接続されている。同期通信装置103bとその次の同期通信装置(図示せず)は伝送路111cによりデイジーチェーン接続されている。同期通信装置103zとその前の同期通信装置(図示せず)は伝送路111zによりデイジーチェーン接続されている。
同期通信装置103は少なくともTC機能を有する。なお、同期通信装置103は、PTPにおけるOrdinary Clock(以下、「OC」と称する)になる機能を具備していてもよい。同期通信装置103a~103zは伝送路111b~伝送路111zによりデイジーチェーン接続されている。より具体的には、同期通信装置103aと同期通信装置103bは伝送路111bによりデイジーチェーン接続されている。同期通信装置103bとその次の同期通信装置(図示せず)は伝送路111cによりデイジーチェーン接続されている。同期通信装置103zとその前の同期通信装置(図示せず)は伝送路111zによりデイジーチェーン接続されている。
伝送路110や伝送路111a~伝送路111zは、Ethernet(登録商標、以下省略)に準拠した伝送路である。具体的には、伝送路110や伝送路111a~伝送路111zは、IEEE標準に準拠したGbE(ギガビットイーサネット)や10GbEや100GbEである。また、伝送路110や伝送路111a~伝送路111zは、インターコネクトInfiniband、産業用イーサネット等を組み合わせた伝送路であってもよい。なお、伝送路110や伝送路111a~伝送路111zは、上記した伝送路に限定されず他の種類の伝送路でもよい。以下の記載において、特別な説明がない場合、26個の伝送路111a~伝送路111zを区別せず伝送路111と称する。
図2は同期通信装置103bのハードウェア構成を示す。なお、本明細書では同期通信装置103bを説明するが、他の同期通信装置103も同期通信装置103bと同一構成を有する。
同期通信装置103bは、CPU201、記憶部202、通信I/F部203、PHC保持部204、通信I/F部205およびシステムバス210を有する。
通信I/F部203は、PHC部220、パケット受信部221およびパケット送信部222を有する。
通信I/F部205は、PHC部230、パケット受信部231およびパケット送信部232を有する。なお、通信I/F部203と通信I/F部205は同一ハードウェアであってもよいし、別の種類のハードウェアであってもよいし、1つのハードウェアの中にそれぞれ2つのPHC部、パケット受信部、パケット送信部をもつ構成でもよい。CPUはCentral Processing Unitの略である。I/Fはインタフェースの略である。
同期通信装置103bは、CPU201、記憶部202、通信I/F部203、PHC保持部204、通信I/F部205およびシステムバス210を有する。
通信I/F部203は、PHC部220、パケット受信部221およびパケット送信部222を有する。
通信I/F部205は、PHC部230、パケット受信部231およびパケット送信部232を有する。なお、通信I/F部203と通信I/F部205は同一ハードウェアであってもよいし、別の種類のハードウェアであってもよいし、1つのハードウェアの中にそれぞれ2つのPHC部、パケット受信部、パケット送信部をもつ構成でもよい。CPUはCentral Processing Unitの略である。I/Fはインタフェースの略である。
CPU201は、1つ以上のCPUやMPU等のプロセッサにより構成され、記憶部202に記憶されたコンピュータプログラムを実行することにより同期通信装置103b全体を制御する。MPUはMicro Processing Unitの略である。また、CPU201内ではOS(Operating System)が動作し、OS上のプロセスとしてPTPの制御やPHCの同期制御が行われる。PHCの同期制御等の詳細は後述する。
記憶部202は、ROM(Read Only Memory)やRAM(Random Access Memory)等の1つ以上のメモリにより構成され、OSなどのシステムプログラム、アプリケーションプログラム、通信パラメータ等の各種情報を記憶する。また、記憶部202は、OSなどのシステムプログラムをブートするためのプログラムを記憶する。ROM、RAM等のメモリの他に、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、不揮発性のメモリカード、DVDなどの記憶媒体を記憶部202の一部(または全部)として用いてもよい。また、記憶部202は、複数のメモリ等を備えていてもよい。記憶部202は、OS上のプロセスやOSに実装されるドライバが利用するワーキングメモリとしても動作する。記憶部202が複数のメモリで構成される場合、記憶部202とシステムバス210との接続はメモリごとに独立してもよい。
通信I/F部203は伝送路111bを介して同期通信装置103aと接続しており、パケット受信部221とパケット送信部222を使用してPTPパケットおよびその他のパケットの送受信を行う。パケットの送受信はCPU201の指示により実施される。
PHC部220は入力されるクロック信号およびCPU201の指示により時刻を更新する機能と時刻を定期的にPHC保持部204へ通知する機能をもつ。PHC部220は、通常はPHC部220に入力されるクロック信号の立ち上がりタイミングで時刻を更新する。PHC部220は、CPU201の指示により時刻を所定の値に変更する(位相補正)ことや、クロック信号の立ち上がりタイミング時に自身の時刻へ加算する値を変更(周波数補正)することができる。
PHC部220は入力されるクロック信号およびCPU201の指示により時刻を更新する機能と時刻を定期的にPHC保持部204へ通知する機能をもつ。PHC部220は、通常はPHC部220に入力されるクロック信号の立ち上がりタイミングで時刻を更新する。PHC部220は、CPU201の指示により時刻を所定の値に変更する(位相補正)ことや、クロック信号の立ち上がりタイミング時に自身の時刻へ加算する値を変更(周波数補正)することができる。
パケット受信部221は、伝送路111bからパケットを受信すると、CPU201が指示するアドレスへ受信パケットを転送し、転送が完了するとCPU201へ転送完了の通知をする機能を有する。また、パケット受信部221は、伝送路111bからパケットを受信したタイミングでPHC部220の時刻を取得し、CPU201に通知する機能を有する。また、パケット受信部221は受信時刻を取得する・しないの制御もできる。
パケット送信部222は、CPU201の指示により指定されたアドレスから送信パケットを読み取り、伝送路111bへ送信する機能をもつ。パケット送信部222は、伝送路111bへパケットを送信する際、PHC部220の時刻を取得して、当該パケットの送信が完了した後にCPU201に時刻を通知する機能も有する。取得するPHC部220の時刻がパケット送信完了前に確定している場合は、パケット送信部222は、パケット送信完了を待たずに時刻を通知してもよい。また、パケット送信部222は、パケット受信部221と同様に送信時刻を取得する・しないの制御ができる。
パケット送信部222は、CPU201の指示により指定されたアドレスから送信パケットを読み取り、伝送路111bへ送信する機能をもつ。パケット送信部222は、伝送路111bへパケットを送信する際、PHC部220の時刻を取得して、当該パケットの送信が完了した後にCPU201に時刻を通知する機能も有する。取得するPHC部220の時刻がパケット送信完了前に確定している場合は、パケット送信部222は、パケット送信完了を待たずに時刻を通知してもよい。また、パケット送信部222は、パケット受信部221と同様に送信時刻を取得する・しないの制御ができる。
通信I/F部205は通信I/F部203と同等の機能を持つ。つまり、PHC部230、パケット受信部231およびパケット送信部232は、PHC部220、パケット受信部221およびパケット送信部222と同等の機能を有する。
PHC保持部204は、PHC部220から通知される(入力される)時刻250と、PHC部230から通知される時刻251を保持する機能を有する。時刻250および251の保持についての詳細は後述する。PHC保持部204の時刻保持機能により、PHC部220とPHC部230の時刻差を正確に算出することが可能となる。また、PHC保持部204は内部の機能により所定の間隔でPHC部220およびPHC部230の時刻を取得し、CPU201に通知する機能も有する。時刻通知機能についての詳細は後述する。
PHC保持部204は、PHC部220から通知される(入力される)時刻250と、PHC部230から通知される時刻251を保持する機能を有する。時刻250および251の保持についての詳細は後述する。PHC保持部204の時刻保持機能により、PHC部220とPHC部230の時刻差を正確に算出することが可能となる。また、PHC保持部204は内部の機能により所定の間隔でPHC部220およびPHC部230の時刻を取得し、CPU201に通知する機能も有する。時刻通知機能についての詳細は後述する。
図3は同期通信装置103のソフトウェア構成を示す。同期通信装置103は、ソフトウェアとして、通信I/F制御部301と、PHC保持制御部302と、PHC時刻制御部303と、PTP処理部304と、PHC同期処理部305とを有する。これらソフトウェア(301~305)はCPU201にて実行される。
通信I/F制御部301は、上位アプリケーション(例えば、PTP処理部304)の指示により、通信I/F部203および通信I/F部205を制御してパケットの送信処理および受信処理を行う。なお、パケットの送信処理および受信処理では、PHC部220やPHC部230から受け取るパケット受信時刻およびパケット送信時刻も上位アプリケーションに通知する。時刻の通知はパケット送受信の完了と同時に行ってもよいし、パケット送受信の完了の通知とは別に行ってもよい。また、受信処理完了と受信時刻を同時に通知するが、送信処理完了と送信時刻は別々に通知を行うような構成でもよい。逆に、送信処理完了と送信時刻を同時に通知するが、受信処理完了と受信時刻は別々に通知を行うような構成でもよい。また、通信I/F制御部301は、上位アプリケーションの指示やユーザからの指示に従って、送信時刻や受信時刻の通知をしない(送信時刻や受信時刻の取得もしない)ように通信I/F部203や通信I/F部205を制御する機能を有する。なお、送信時刻や受信時刻の通知の有無はパケットの種別ごとに指示できることが望ましい。
PHC保持制御部302はPHC同期処理部305の指示により、PHC保持部204の処理開始・停止などの制御を行う。PHC保持制御部302はPHC同期処理部305から処理開始の指示を受けると、PHC保持部204へ処理開始を指示すると共にPHC保持部204の監視を開始し、PHC保持部204が保持する時刻を読み取り、当該時刻をPHC同期処理部305に通知する。
PHC時刻制御部303はPTP処理部304やPHC同期処理部305からの指示により、PHC部220やPHC部230の時刻補正を行う。時刻補正として、PHC時刻制御部303は、現在時刻に対して補正量が大きい場合は位相補正を選択し、現在時刻に対して補正量が小さい場合は周波数補正を選択してもよい。また、PHC時刻制御部303は、常にどちらか(位相補正または周波数補正)を採用してもよいし、PTP処理部304やPHC同期処理部305から指示された補正方法により時刻補正を行ってもよい。なお、時刻補正は、位相補正や周波数補正以外の補正方法で行ってもよい。
PTP処理部304はPTPパケットのプロトコル処理を行う処理部であり、少なくともTC機能を担う。PTP処理部304は、ユーザの指示や上位アプリケーションの指示によってプロトコル処理を開始する。
TC機能を実行する場合、PTP処理部304は、通信I/F部203から受信したPTPパケットを通信I/F部205へ送信し、通信I/F部205から受信したPTPパケットを通信I/F部203へ送信する(以下、「フォワード処理」と称する)。TC機能は端末(同期通信装置103)内部でPTPパケットが滞留する時間(以下、「滞留時間」と称する)を計算する必要があり、フォワード処理のときに滞留時間の算出を行う。滞留時間は少なくともPTPで定義されるSyncパケットおよびDelayRequestパケットで算出する。滞留時間を正確に計算するためには、PHC部220とPHC部230は時刻同期している必要がある。
TC機能を実行する場合、PTP処理部304は、通信I/F部203から受信したPTPパケットを通信I/F部205へ送信し、通信I/F部205から受信したPTPパケットを通信I/F部203へ送信する(以下、「フォワード処理」と称する)。TC機能は端末(同期通信装置103)内部でPTPパケットが滞留する時間(以下、「滞留時間」と称する)を計算する必要があり、フォワード処理のときに滞留時間の算出を行う。滞留時間は少なくともPTPで定義されるSyncパケットおよびDelayRequestパケットで算出する。滞留時間を正確に計算するためには、PHC部220とPHC部230は時刻同期している必要がある。
PTP処理部304がOC機能を有する場合、PTP処理部304は、プロトコル処理で算出したタイムサーバ101との時刻差から補正量を算出し、PHC時刻制御部303を介してPHC部220とPHC部230に適用する。ここで、時刻差の算出および滞留時間の計算について図4を用いて説明する。
図4はタイムサーバ101と同期通信装置103の時刻同期シーケンスである。図1に記載しているPTPハブ102は省略している。
S401では、タイムサーバ101はPTPで定義されるSyncパケットを同期通信装置103aに送信する。そしてタイムサーバ101はSyncパケットの送信時刻T1を保持しておく。Syncパケットを受信した同期通信装置103aは受信時刻T2aを保持する。
S401では、タイムサーバ101はPTPで定義されるSyncパケットを同期通信装置103aに送信する。そしてタイムサーバ101はSyncパケットの送信時刻T1を保持しておく。Syncパケットを受信した同期通信装置103aは受信時刻T2aを保持する。
S402では、同期通信装置103aはS401で受信したSyncパケットのフォワード処理を行う。つまり、同期通信装置103aは、受信したSyncパケットを同期通信装置103bに送信する。なお、同期通信装置103aは、フォワード処理を実施したならば送信時刻T2a′も保持する。同様に、フォワードされたSyncパケットを受信した同期通信装置103bは、受信時刻T2bを取得し、フォワード処理を行う。つまり、同期通信装置103bは、受信したSyncパケットを同期通信装置103cに送信する。そして、同期通信装置103bは、送信時刻T2b´を保持する。
S403では、タイムサーバ101はS401で保持していた送信時刻T1の情報を含むFollowUpパケットを同期通信装置103aに送信する。
S404では、FollowUpパケットを受信した同期通信装置103aは、FollowUpパケットに含まれる送信時刻T1を取得する。また、同期通信装置103aは、保持していたT2aとT2a′からSyncパケットの滞留時間(Tra1)を計算する。
滞留時間(Sync) = T2a′-T2a = Tra1
S404では、FollowUpパケットを受信した同期通信装置103aは、FollowUpパケットに含まれる送信時刻T1を取得する。また、同期通信装置103aは、保持していたT2aとT2a′からSyncパケットの滞留時間(Tra1)を計算する。
滞留時間(Sync) = T2a′-T2a = Tra1
同期通信装置103aは、算出したTr1aを所定領域に加算してフォワード処理を行った後に時刻同期の計算を行うが、S404の時点では時刻同期の計算を行うのに必要な情報が不足しているため、同期の処理をスキップする。往路の遅延時間であるTr1aは計算できているが、復路の遅延時間がまだ計算できていないためである。フォワードされたFollowUpパケットを受信する同期通信装置103bも同様の処理を行う。なお、同期通信装置103bが計算した滞留時間をTr1bとすると、同期通信装置103bが送出するFollowUpパケットの所定領域にはTr1a+Tr1bが加算されることになる。Syncパケットの滞留時間の計算はS402で実施していてもよい。
S405では、同期通信装置103aがDelayRequestパケットをタイムサーバ101へ送信し、その送信時刻T3aを保持する。DelayRequestパケットを受信したタイムサーバ101はその受信時刻であるT4aを保持する。
S406では、タイムサーバ101は、S405で受信したDelayRequestパケットの送信者である同期通信装置103aへDelayResponseパケットを送信する。なお、DelayResponseパケットにはS405で保持したDelayRequestパケットの受信時刻T4aの情報が含まれている。DelayResponseパケットを受信した同期通信装置103aは、DelayResponseに含まれるT4aの情報を取得し、さらにDelayRequestパケットの滞留時間の総和も取得する。なお、図5ではPTPハブ102を省略しているため、DelayRequestパケットの滞留時間の総和は0となる。
S406では、タイムサーバ101は、S405で受信したDelayRequestパケットの送信者である同期通信装置103aへDelayResponseパケットを送信する。なお、DelayResponseパケットにはS405で保持したDelayRequestパケットの受信時刻T4aの情報が含まれている。DelayResponseパケットを受信した同期通信装置103aは、DelayResponseに含まれるT4aの情報を取得し、さらにDelayRequestパケットの滞留時間の総和も取得する。なお、図5ではPTPハブ102を省略しているため、DelayRequestパケットの滞留時間の総和は0となる。
S407では、S405と同様に同期通信装置103bはDelayRequestパケットを同期通信装置103aへ送信し、その送信時刻T3bを取得(保持)する。
S408では、DelayRequestパケットを受信した同期通信装置103aは、タイムサーバ101へDelayRequestパケットをフォワードする。Syncパケットの時と同様に、フォワード処理時に同期通信装置103aは、DelayRequestパケットを受信した時刻(T3b1)と送信した時刻(T3b2)を保持する。DelayRequestパケットを受信したタイムサーバ101はその受信時刻であるT4bを保持する。
S408では、DelayRequestパケットを受信した同期通信装置103aは、タイムサーバ101へDelayRequestパケットをフォワードする。Syncパケットの時と同様に、フォワード処理時に同期通信装置103aは、DelayRequestパケットを受信した時刻(T3b1)と送信した時刻(T3b2)を保持する。DelayRequestパケットを受信したタイムサーバ101はその受信時刻であるT4bを保持する。
S409では、S406と同様にS408で受信したDelayRequestパケットの送信者である同期通信装置103aにDelayResponseパケットを送信する。なお、DelayResponseパケットにはS408で保持したDelayRequestパケットの受信時刻T4bの情報が含まれている。自分宛ではないDelayResponseパケットを受信した同期通信装置103aは、DelayResponseパケットの送信先を確認する。そして、同期通信装置103aは、確認した送信先と対応するDelayRequestパケットの滞留時間Tr2を計算し、DelayResponseパケットの所定領域にTr2を加算して同期通信装置103bに転送する。
滞留時間(DelayRequest) = T3b2-T3b1 = Tr2
滞留時間(DelayRequest) = T3b2-T3b1 = Tr2
S410では、同期通信装置103bは自分宛のDelayResponseパケットを受信し、DelayResponseパケットに含まれるT4bの情報とDelayRequestパケットの滞留時間(Tr2)を取得する。図4では説明の都合上Sync~DelayResponseまでの一巡しか記載していないが、本シーケンスが繰り返されることにより送受信時刻(T1~T4b)、滞留時間(Tr1a~Tr2)を繰り返し取得することで時刻同期を行うことが可能となる。なお、タイムサーバ101は一定間隔でSyncパケットの送信を行い、Syncパケットを送信した直後に、FollowUpパケットを送信する。
時刻同期の計算方法について、同期通信装置103bを例に説明する。
タイムサーバ101と同期通信装置103bとの間の平均伝送路遅延は以下のように求められる。
平均伝送路遅延=(((T4b-T1)-(T3b-T2b))-(Tr1a+Tr2))/2
タイムサーバ101と同期通信装置103bとの間の平均伝送路遅延は以下のように求められる。
平均伝送路遅延=(((T4b-T1)-(T3b-T2b))-(Tr1a+Tr2))/2
PTPシーケンスの二巡目のSyncパケットの送信時間をT5、同期通信装置103bでそのSYNCパケットを受信した時刻をT6b(同期通信装置103aではT6a)としたとき、タイムサーバ101と同期通信装置103bの時刻差は以下のように求められる。
時刻差 = T6b-T5-平均伝送路遅延-Tr1a
時刻差 = T6b-T5-平均伝送路遅延-Tr1a
なお、平均伝送路遅延と時刻差を一般式に変換すると、以下となる。
平均伝送路遅延 = (((DelayRequest受信時刻-Sync送信時刻)-(DelayRequest送信時刻-Sync受信時刻))-(Sync滞留時間の総和+DelayRequest滞留時間の総和))/2
時刻差 = Sync受信時刻 - Sync送信時刻 - 平均伝送路遅延 - Sync滞留時間の総和もしくはDelayRequest滞留時間の総和
平均伝送路遅延 = (((DelayRequest受信時刻-Sync送信時刻)-(DelayRequest送信時刻-Sync受信時刻))-(Sync滞留時間の総和+DelayRequest滞留時間の総和))/2
時刻差 = Sync受信時刻 - Sync送信時刻 - 平均伝送路遅延 - Sync滞留時間の総和もしくはDelayRequest滞留時間の総和
さらにタイムサーバ101と同期通信装置103bとの間の周波数比は以下で求められる。Frはタイムサーバ101の周波数であり、Foは同期通信装置103bの周波数である。
周波数比 = (Fo-Fr)/Fr
Fr=1/(T5-T1)、Fo=1/(T6b-T2b)
周波数比 = (Fo-Fr)/Fr
Fr=1/(T5-T1)、Fo=1/(T6b-T2b)
これらの情報をもとにPTP処理部304はPHC時刻制御部303を介してPHC部220の補正を行う。なお、T2a/T2b、T3a/T3b、T6a/T6bの時刻はタイムサーバ101側にある通信I/F部203のPHC部220から得られる時刻である。PHC部230の時刻もタイムサーバ101側と同期させるには、PTPでの時刻補正を行う前に、PHC部230の時刻をPHC部220に合わせておき、PHC部220に適用する時刻の補正をPHC部230にも適用すればよい。
図4で示したシーケンスはPTPの2-step方式であり、1-step方式でも時刻同期を行うことは可能である。1-step方式の場合、FollowUpパケットは使用されず、T1、Tr1aおよびTr1bはそのSyncパケットの中に情報を載せるように内部で制御を行い、Tr2はDelayRequestパケットの中に情報を載せるように内部で制御を行う。そのためには通信I/F部203のパケット送信部222と通信I/F部205のパケット送信部232は、PTPパケットの書き換え機能を有する必要がある。SyncパケットやDelayRequestパケットの送信時刻は使用する通信I/F部にあるPHC部から取得できる一方で、受信時刻はCPU201から通知される必要がある。1-step方式に対応する場合、PTP処理部304はPTPパケットのフォワード処理において、そのパケットの受信時刻を送信指示に付与する機能を有する。パケット送信部222やパケット送信部232は自身のPHC部220やPHC部230から送信時刻を取得し、CPU201から受け取る受信時刻から滞留時間を計算して、PTPパケットの所定領域に加算してから送信する。なお、他の方法により滞留時間を計算して1-step方式を実現してもよい。
PHC同期処理部305は、PHC保持制御部302を介してPHC部220とPHC部230の時刻同期を行う。PHC同期処理部305は、ユーザの指示や上位アプリケーションの指示により起動する。前述したように、PHC同期処理部305はPTP処理部304が起動する前に起動して、PHC部220とPHC部230を時刻同期しておく必要がある。
図5は、図2に示したPHC保持部204の詳細なハードウェア構成図である。PHC保持部204は、設定部501と、カウンタ部502aと、カウンタ部502bと、カウンタ取得部503と、測定部504とを有する。設定部501は内部にレジスタ(例えば、ステータスレジスタ)を有する。
CPU201はシステムバス210を介して設定部501にアクセスしてPHC保持部204全体の制御を行う。なお、以下の説明において、カウンタ部502aとカウンタ部502bは特別な説明がない場合、2つを区別せずカウンタ部502と称する。
PHC保持部204内は共通のクロック信号を使用して同期動作している。PHC部220やPHC部230がPHC保持部204と異なるクロック信号を使用している場合、PHC部220やPHC部230とカウンタ部502の間に同期化回路を配置する。同期化回路はPHC保持部204内に配置してもよいし、独立したハードウェアとしてPHC保持部204の外に配置してもよい。各カウンタ部502はカウンタを有する。以下の記載において、カウンタの値は、カウント値と称する場合がある。測定部504はタイマーを有する。
CPU201はシステムバス210を介して設定部501にアクセスしてPHC保持部204全体の制御を行う。なお、以下の説明において、カウンタ部502aとカウンタ部502bは特別な説明がない場合、2つを区別せずカウンタ部502と称する。
PHC保持部204内は共通のクロック信号を使用して同期動作している。PHC部220やPHC部230がPHC保持部204と異なるクロック信号を使用している場合、PHC部220やPHC部230とカウンタ部502の間に同期化回路を配置する。同期化回路はPHC保持部204内に配置してもよいし、独立したハードウェアとしてPHC保持部204の外に配置してもよい。各カウンタ部502はカウンタを有する。以下の記載において、カウンタの値は、カウント値と称する場合がある。測定部504はタイマーを有する。
設定部501はPHC保持部204全体の設定を保持する。設定部501は、PHC保持部204の開始・停止情報、カウンタ部502のPHC部220およびPHC部230への同期開始・同期停止情報、測定部504の測定開始・測定停止情報を持つ。また、設定部501は、測定部504のタイマーの時間を指定できる。さらに、設定部501は、カウンタ取得部503から通知される時刻(カウント値)およびシーケンス番号を受け取って(図5の矢印550)内部のレジスタに保持し、CPU201に通知する機能を有する。つまり、設定部501は、カウンタ取得部503からカウント値を受け取り、当該受け取りをCPU201に通知する。設定部501はカウント値を受け取る受取部と称することもできる。なお、設定部501は、レジスタで保持する時刻及びシーケンス番号を更新したときに割り込み信号をCPU201へ出力してもよい。つまり、設定部501は、割り込み信号を使用して、カウント値の受け取りをCPU201に通知してもよい。また、設定部501は、ステータス情報をレジスタに表示して、CPU201がそのレジスタをポーリングすることにより、カウント値の受け取りを検知してもよい。あるいは、設定部501は、シーケンス番号をレジスタに表示して、CPU201が当該シーケンス番号をポーリングすることにより、カウント値が更新されたことを検知し、新しい時刻を取得する契機としてもよい。つまり、設定部501は、シーケンス番号を使用して、カウント値の受け取りをCPU201に通知してもよい。
カウンタ部502は、入力されるクロック信号の立ち上がりでカウンタの値を更新する機能を持ち、PHC部220もしくはPHC部230から時刻を受け取っていれば自身のカウンタ値との差分(時刻差)を計算し、差分をカウンタ値へ加算(もしくは減算)する。PHC部220もしくはPHC部230よりもカウンタ値が遅れていれば加算し、進んでいれば減算する。なお、PHC部(220、230)との差分の絶対値が大きいときは、差分をそのまま加算(減算)せずに、一定量の変化にとどめるようにカウンタ値を更新してもよい。つまり、差分が100あったとしても、カウンタは64しか加算(もしくは減算)しないなどである。差分をそのままカウンタ値へ反映させないことにより、緩やかにカウンタ部と同期することが可能となる。カウンタ部502は、PHC部220もしくはPHC部230から時刻を受け取っていない場合、カウンタの値を一定値で加算する。加算する値(一定値)はPHC保持部204に入力されるクロック信号の周波数に基づく。なお、PHC部(220、230)との時刻差が大きい時は加算する値をクロック信号の周波数に基づく値よりも大きな値にしてもよい(あるいは、小さい値にしてもよい)。クロックの立ち上がりのタイミングで加算する値は、毎回異なっていてもよい。加算する値は、PHC部220もしくはPHC部230から時刻を受け取った時刻と自身(カウンタ部502)の時刻との差分を利用し、PI制御(Proportional-Integral Control)のような自動制御により算出してもよい。以上の動作により、カウンタ部502のカウント値は接続するPHC部220または230と同期した時刻になる。なお、PHC部220やPHC部230から通知される周期によらず、設定部501で設定される周期(クロック信号の立ち上がり16回に対して1回や、PHC部220やPHC230からの通知信号の16回に1回など)で差分を計算してもよい。また、これらの計算を複数サイクルに分離してもよい。
また、カウンタ部502は自身のカウンタの値を常にカウンタ取得部503に出力している(551aおよび551b)。カウンタ部502のカウンタのビット数はPHC部220やPHC部230のビット数と同等かそれ以上が望ましい。カウンタ部502のカウンタのビット数がPHC部220やPHC部230のビット数よりも少ない場合、正確な時刻差を求めることはできない。カウンタ部502のカウンタのビット数がPHC部220やPHC部230のビット数よりも少ない場合、次のような制御を行う。すなわち、PHC保持部204による時刻同期を開始する前にCPU201によってPHC部220とPHC部230の時刻差がカウンタ部502にあるカウンタのビット数で表せる値よりも小さくなるようにPHC部220やPHC部230を制御する。
カウンタ取得部503は、測定部504からカウンタ取得通知552を受けると、クロック信号の立ち上がりのタイミングでカウンタ部502aとカウンタ部502bから同時にカウント値を取得する。PHC保持部204内は共通のクロック信号を使用し、且つ、クロック信号の同一立ち上がりタイミングでカウント値を取得するため、文字通りカウンタ部502aおよびカウンタ部502bのカウント値を同時に取得することができる。そして、カウンタ取得部503は、シーケンス番号と一緒に設定部501へカウント値を通知する(550)。つまり、カウンタ取得部503は、カウント値を、当該カウント値に付随するシーケンス番号と一緒に設定部501へ通知する(550)。
なお、取得するカウント値はカウンタ取得通知552を受け取るたびに切り替えてもよい。つまり、カウンタ取得部503は、N回目のカウンタ取得通知552があった時はカウンタ部502aのカウント値を取得してシーケンス番号とともに当該カウント値を設定部501に通知するようにしてもよい。そして、カウンタ取得部503は、N+1回目のカウンタ取得通知552があった時はカウンタ部502bのカウント値を取得してシーケンス番号とともに当該カウント値を設定部501に通知するようにしてもよい。N回目の通知により取得したカウンタ部502aのカウント値をtxとし、通知が発生する間隔をtyとし、N+1回目の通知により取得したカウンタ部502bのカウント値をtzとすると、以下の式を満たしたときPHC部220とPHC部230の時刻が一致しているとみなすことができる。
tx+ty=tz
tx+ty=tz
上記の式に従って、PHC部220とPHC部230の時刻差を算出して時刻補正を行うことが可能である。カウント値はカウンタ取得通知552のたびに両方のカウンタ部502(502a、502b)から取得しなくても、PHC部220とPHC部230の時刻差は算出することは可能である。カウンタ取得通知552を受け取りカウンタ部502aのカウント値とカウンタ部502bのカウント値を同時に取得していれば、当該2つのカウント値の差分がすなわちPHC部220とPHC部230の時刻差を示すことになる。2つのカウント値の差分はCPU201が計算する。それぞれのカウンタ部502a、502bからカウント値を取得する際に発生する遅延時間は、PHC保持部204内で共通のクロック信号の同一立ち上がりタイミングでカウント値を取得するので1サイクルとなる。つまり、本実施形態によれば、ソフトウェアで直接PHCから時刻を取得していた時に発生していた揺らぎがなくなる。
測定部504はCPU201により測定開始の指示があると、タイマーを起動する。測定部504は、タイマーが所定の値(タイマー時間)に到達したらカウンタ取得部503へカウンタ取得通知552を発行(送信)する。カウンタ取得通知552を発行後、測定部504は、測定停止の指示やPHC保持部204の停止指示がない限りタイマー動作を再開する。タイマーによる時間計測(タイマー動作)は、測定部504に入力されるクロック信号を用いて行ってもよいし、PHC部220やPHC部230の時刻を用いて行ってもよい。後者の場合、PHC部220もしくはPHC部230からの時刻は測定部504にも入力されるように実装する。また、タイマー動作はカウンタ部502の値から時間を計測してもよい。その場合は、カウンタ部502の値が測定部504にも入力されるように実装する。計測する時間(タイマー時間)はCPU201によって設定部501にて指定される。指定する時間はCPU201が2つのカウンタの値(およびシーケンス番号)をすべて取り終えるよりも十分に長い時間とする(例えば1秒)。タイマー時間が短い場合、カウンタの値を取り終える前に次のカウンタの値に更新される可能性があるからである。つまり、タイマー時間(所定の時間間隔)は、カウンタ取得部503がカウント値をすべて取得するのに十分長い時間に設定される。
一般的に、PTPで同期する時刻はUNIX(登録商標)時間と同じエポックを用いる。PHCが出力する時刻(250や251)がソフトウェアで管理しているUNIX時間と同一のビットフィールド長を持つとは限らない。PHCが出力する時刻は、秒を表すフィールドとナノ秒を表すフィールドを持ち、場合によりサブナノ秒を表すフィールドを持ち、各フィールドのビット長は各ハードウェアの実装によって異なる。CPU201が64ビット構成であっても、カウンタ部502aの値とカウンタ部502bの値を一度のアクセスで同時に取得できる(64ビットに収まる)とは限らない。したがって、測定部504で実施するタイマー時間は十分に長い必要がある。
次に、図6を参照して、カウンタ部502の動作フローを説明する。図6の動作フローは同期通信装置103の電源が投入された後に同期通信装置103のリセットが解除されている状態で、入力されているクロック信号の立ち上がりエッジが発生するたびに開始する(S600)。つまり、図6の動作フローの開始(S600)から終了(S606)までの処理は、入力されるクロック信号の1サイクルの期間で完了する。
S601では、カウンタ部502は、PHC保持部204の停止指示を受けているかどうかを判定する。停止指示を受けている場合、カウンタ部502は、何もせずにS606に進み本フローを終了する。停止指示を受けていない(つまり、開始指示を受けている)場合、S602に進む。開始/停止指示はPHC同期処理部305に指示されたPHC保持制御部302が設定部501を介して行う。
S602では、カウンタ部502は、同期開始の指示を受けているかどうかを判定する。指示を受けている場合S603に進み、そうでない場合はS606に進み本フローは終了する。同期開始の指示はPHC同期処理部305に指示されたPHC保持制御部302が設定部501を介して行う。
S602では、カウンタ部502は、同期開始の指示を受けているかどうかを判定する。指示を受けている場合S603に進み、そうでない場合はS606に進み本フローは終了する。同期開始の指示はPHC同期処理部305に指示されたPHC保持制御部302が設定部501を介して行う。
S603では、カウンタ部502は、PHC部220もしくはPHC部230から時刻の通知を受け取った(入力があった)かどうかを判定する。受け取った場合S604に進み、受け取っていない場合はS605へ進む。
S604では、PHC部220もしくはPHC部230から受け取った時刻と現在のカウント値の差分を計算し、差分をカウント値に反映(加算もしくは減算)して、S606に進み本フローを終了する。
S605では、自身(カウンタ部502)に入力されているクロック信号を使用してカウント値を更新し、S606に進み本フローを終了する。
S604では、PHC部220もしくはPHC部230から受け取った時刻と現在のカウント値の差分を計算し、差分をカウント値に反映(加算もしくは減算)して、S606に進み本フローを終了する。
S605では、自身(カウンタ部502)に入力されているクロック信号を使用してカウント値を更新し、S606に進み本フローを終了する。
次に、図7を参照して、カウンタ取得部503の動作フローをする。図7の動作フローはPHC保持部204の開始指示を受けた時に開始する(S700)。
S701では、カウンタ取得部503で持つシーケンス番号を初期値に設定し、S702に進む。
S702では、カウンタ取得部503は、PHC保持部204の停止指示を受けているかどうかを判定する。停止の指示を受けている場合、S709に進み本フローを終了する。指示を受けていない場合、S703に進む。
S701では、カウンタ取得部503で持つシーケンス番号を初期値に設定し、S702に進む。
S702では、カウンタ取得部503は、PHC保持部204の停止指示を受けているかどうかを判定する。停止の指示を受けている場合、S709に進み本フローを終了する。指示を受けていない場合、S703に進む。
S703では、カウンタ取得部503は、測定開始の指示を受けているかどうかを判定する。指示を受けている場合はS705へ進み、指示を受けていない場合はS704へ進む。
S704では、S701と同様にカウンタ取得部503で持つシーケンス番号を初期値に設定し、S702に戻る。
S705では、カウンタ取得部503は、カウンタ取得通知552を測定部504から受信したかどうかを判定する。通知を受信した場合はS706へ進み、そうでない場合はS702に戻る。
S704では、S701と同様にカウンタ取得部503で持つシーケンス番号を初期値に設定し、S702に戻る。
S705では、カウンタ取得部503は、カウンタ取得通知552を測定部504から受信したかどうかを判定する。通知を受信した場合はS706へ進み、そうでない場合はS702に戻る。
S706では、カウンタ取得部503は、カウンタ部502aおよびカウンタ部502bの両方からカウント値を同時に取得する。カウント値の取得後、S707に進む。
S707では、カウンタ取得部503は、シーケンス番号を1加算してS708に進む。
S708では、カウンタ取得部503は、S706で取得した2つのカウント値およびシーケンス番号を設定部501に通知(550)し、S702へ進む。
S707では、カウンタ取得部503は、シーケンス番号を1加算してS708に進む。
S708では、カウンタ取得部503は、S706で取得した2つのカウント値およびシーケンス番号を設定部501に通知(550)し、S702へ進む。
次に、図8を参照して、測定部504の動作フローを説明する。図8の動作フローはPHC保持部204の開始指示を受けた時に開始する(S800)。
S801では、測定部504は、PHC保持部204の停止指示を受けているかどうかを判定する。停止の指示を受けている場合、S806に進み本フローを終了する。指示を受けていない場合、S802に進む。
S801では、測定部504は、PHC保持部204の停止指示を受けているかどうかを判定する。停止の指示を受けている場合、S806に進み本フローを終了する。指示を受けていない場合、S802に進む。
S802では、測定部504は、測定開始の指示を受けているかどうかを判定する。指示を受けている場合はS803へ進み、指示を受けていない場合はS801へ戻る。
S803では、測定部504は、タイマーによる時間計測を初期値から開始し、S804に進む。タイマーはデクリメントでもよいしインクリメントでもよい。
S803では、測定部504は、タイマーによる時間計測を初期値から開始し、S804に進む。タイマーはデクリメントでもよいしインクリメントでもよい。
S804では、測定部504は、タイマーが所定の時間(タイマー時間)に到達したかどうかを判定する。到達した場合はS805へ進み、到達していない場合はS804に戻る。測定するタイマー時間はPHC同期処理部305に指示されたPHC保持制御部302により設定部501に指定される。
S805では、測定部504は、カウンタ取得部503にカウンタ取得通知552を発行してS801へ戻る。
S805では、測定部504は、カウンタ取得部503にカウンタ取得通知552を発行してS801へ戻る。
以上の処理により、PHC保持部204のカウンタ部502はPHC部220やPHC部230と同期する。所定の時間間隔でカウンタ部502の値は設定部501を介して、最終的にCPU201で動作するPHC同期処理部305に通知される。通知を受けたPHC同期処理部305は通知される2つのカウンタ値から、PHC部220とPHC部230の時刻差を正確に計算することが可能となる。
なお、上記した実施形態では、PHC部が2つの場合を説明したが、PHC部が3つ以上でも、上記した実施形態を適用することができる。
また、図3に示した通信I/F制御部301、PHC保持制御部302、PHC時刻制御部303、PTP処理部304およびPHC同期処理部305の一部または全部は、ASICやプログラマブルロジックアレイ(PLA)等の専用のハードウェアとして同期通信装置103に実装されてもよい。ハードウェアとして実装される場合は、各部それぞれ又はいくつかをまとめた専用のハードウェアモジュールとして実装してもよい。ASICは、Application Specific Integrated Circuit(特定用途向け集積回路)の略である。
なお、上記した実施形態では、PHC部が2つの場合を説明したが、PHC部が3つ以上でも、上記した実施形態を適用することができる。
また、図3に示した通信I/F制御部301、PHC保持制御部302、PHC時刻制御部303、PTP処理部304およびPHC同期処理部305の一部または全部は、ASICやプログラマブルロジックアレイ(PLA)等の専用のハードウェアとして同期通信装置103に実装されてもよい。ハードウェアとして実装される場合は、各部それぞれ又はいくつかをまとめた専用のハードウェアモジュールとして実装してもよい。ASICは、Application Specific Integrated Circuit(特定用途向け集積回路)の略である。
実施形態2
実施形態2では、PHC同期処理部305は算出するPHC部220とPHC部230の時刻差が閾値以下(例えば、ゼロ)であることを所定の回数確認した場合に、PHC同期処理部305はPHC保持部204の設定部501を介してタイマー時間を長くする。時間間隔を増やすこと(タイマー時間を長くすること)で、元々設定されていた時間間隔では現れなかったPHC部220とPHC部230のずれが時刻差として現れるようになり、より高精度に時刻同期を実現することが可能となる。なぜなら、時間間隔をTx、時刻ずれをΔとしたとき、時刻同期が安定してくると、Δ=0となる期間が続き次に時刻差を算出したときにΔ=1といった事象が発生する。ΔはあくまでもTxの期間を評価したときの時刻差なので、時刻同期の補正量はTxの値を加味して算出する。周波数補正を使用する場合、Txが大きいほど補正量として周波数を調整する値が小さく、より細かい調整ができるようになるので高精度に時刻同期ができるようになる。タイマー時間を長くするタイミングは、時刻差が閾値以下であることが所定の回数続いた後でもよいし、その他のタイミングでもよい。
実施形態2では、PHC同期処理部305は算出するPHC部220とPHC部230の時刻差が閾値以下(例えば、ゼロ)であることを所定の回数確認した場合に、PHC同期処理部305はPHC保持部204の設定部501を介してタイマー時間を長くする。時間間隔を増やすこと(タイマー時間を長くすること)で、元々設定されていた時間間隔では現れなかったPHC部220とPHC部230のずれが時刻差として現れるようになり、より高精度に時刻同期を実現することが可能となる。なぜなら、時間間隔をTx、時刻ずれをΔとしたとき、時刻同期が安定してくると、Δ=0となる期間が続き次に時刻差を算出したときにΔ=1といった事象が発生する。ΔはあくまでもTxの期間を評価したときの時刻差なので、時刻同期の補正量はTxの値を加味して算出する。周波数補正を使用する場合、Txが大きいほど補正量として周波数を調整する値が小さく、より細かい調整ができるようになるので高精度に時刻同期ができるようになる。タイマー時間を長くするタイミングは、時刻差が閾値以下であることが所定の回数続いた後でもよいし、その他のタイミングでもよい。
その他の実施形態
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100…同期システム、103a~103z…同期通信装置、203…通信I/F部、204…PHC保持部、205…通信I/F部、220…PHC部、230…PHC部、302…PHC保持制御部、303…PHC時刻制御部、304…PTP処理部、305…PHC同期処理部、501…設定部、502a…カウンタ部、502b…カウンタ部、503…カウンタ取得部、504…測定部
Claims (13)
- 現在時刻を示す信号を出力する複数のクロックと、
前記複数のクロックから出力される現在時刻を示す信号を用いて、前記複数のクロックとそれぞれ同期する複数のカウンタ手段と、
前記複数のカウンタ手段のカウント値の取得を指示する指示手段と、
前記指示手段の指示に応じて、前記複数のカウンタ手段のカウント値を取得する取得手段と、
前記取得したカウント値の差分を計算する計算手段と、
を有することを特徴とする通信装置。 - 前記取得手段は、所定の時間間隔で前記複数のカウンタ手段のカウント値を取得することを特徴とする請求項1に記載の通信装置。
- 前記所定の時間間隔は、前記取得手段が前記カウント値をすべて取得するのに十分長い時間であることを特徴とする請求項2に記載の通信装置。
- 前記複数のカウンタ手段は、前記クロックから出力される現在時刻を示す信号の入力がない場合、自身に入力されるクロック信号を用いてカウント値を更新することを特徴とする請求項1~3のいずれか1項に記載の通信装置。
- 前記複数のカウンタ手段は、前記クロックから出力される現在時刻を示す信号の入力がある場合、前記クロックから出力される現在時刻を示す信号を受信したときの現在時刻と、自身の時刻との差分に基づいてカウント値を更新することを特徴とする請求項1~3のいずれか1項に記載の通信装置。
- 前記取得手段は、前記指示手段からの指示により前記複数のカウンタ手段のカウント値を同時に取得することを特徴とする請求項1~5のいずれか1項に記載の通信装置。
- 前記通信装置は、前記取得手段から前記カウント値を受け取る受取手段をさらに有し、
前記受取手段は、前記計算手段に、受け取ったカウント値があることを通知することを特徴とする請求項1~6のいずれか1項に記載の通信装置。 - 前記受取手段は、割り込み信号を使用して、前記計算手段に、受け取ったカウント値があることを通知することを特徴とする請求項6に記載の通信装置。
- 前記受取手段は、前記カウント値に付随するシーケンス番号を使用して、前記計算手段に、受け取ったカウント値があることを通知することを特徴とする請求項6に記載の通信装置。
- 前記通信装置は、前記所定の時間間隔を設定する設定手段をさらに有し、
前記計算されたカウント値の差分が閾値以下であることが所定の回数確認された場合、前記設定手段は、前記所定の時間間隔を長くすることを特徴とする請求項2または3に記載の通信装置。 - 前記計算されたカウント値の差分に基づいて、前記複数のクロックの同期を制御する制御手段をさらに有することを特徴とする請求項1~10のいずれか1項に記載の通信装置。
- 通信装置に設けられた複数のクロックの時刻差を算出する方法であって、前記通信装置には、前記複数のクロックに対応する複数のカウンタ部が設けられており、
前記方法は、
前記複数のクロックから出力される現在時刻を示す信号を用いて、前記複数のカウンタ部を、前記複数のクロックとそれぞれ同期させるステップと、
前記複数のカウンタ部のカウント値の取得を指示するステップと、
前記取得の指示に応じて、前記複数のカウンタ部のカウント値を取得するステップと、
前記取得したカウント値の差分を計算するステップと、
を有することを特徴とする方法。 - コンピュータを、請求項1から11のいずれか1項に記載の通信装置の各手段として機能させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021105593A JP2023004094A (ja) | 2021-06-25 | 2021-06-25 | 通信装置 |
US17/849,071 US11838108B2 (en) | 2021-06-25 | 2022-06-24 | Communication apparatus, method, and storage medium including an electronic viewfinder and a line of sight input function that prevents a decrease in operability of the imaging apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021105593A JP2023004094A (ja) | 2021-06-25 | 2021-06-25 | 通信装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023004094A true JP2023004094A (ja) | 2023-01-17 |
Family
ID=84541690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021105593A Pending JP2023004094A (ja) | 2021-06-25 | 2021-06-25 | 通信装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11838108B2 (ja) |
JP (1) | JP2023004094A (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017050730A (ja) | 2015-09-02 | 2017-03-09 | 富士通株式会社 | 無線装置および基地局システム |
JP6641965B2 (ja) * | 2015-12-14 | 2020-02-05 | カシオ計算機株式会社 | 音響処理装置、音響処理方法、プログラム、及び電子楽器 |
JP6753262B2 (ja) * | 2016-10-14 | 2020-09-09 | オムロン株式会社 | 制御装置および通信装置 |
US11588609B2 (en) * | 2021-01-14 | 2023-02-21 | Mellanox Technologies, Ltd. | Hardware clock with built-in accuracy check |
-
2021
- 2021-06-25 JP JP2021105593A patent/JP2023004094A/ja active Pending
-
2022
- 2022-06-24 US US17/849,071 patent/US11838108B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220416927A1 (en) | 2022-12-29 |
US11838108B2 (en) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8913514B2 (en) | Communication control unit and communication control system | |
JP2529682B2 (ja) | クロックを同期する方法及び装置 | |
US8687481B2 (en) | Communication system, management apparatus, communication apparatus and computer program | |
EP2139152B1 (en) | Communication device, synchronized communication system, and synchronized communication method | |
US11316605B2 (en) | Method, device, and computer program for improving synchronization of clocks in devices linked according to a daisy-chain topology | |
US7343437B2 (en) | Synchronization method and control system for the time synchronization of slave units and a synchronizable slave unit | |
JP2006101539A (ja) | ネットワーク転送装置 | |
JP6351889B1 (ja) | 通信システム及びスレーブ装置 | |
US11095382B2 (en) | Communication system, communication device and communication method | |
US11456849B2 (en) | Method and apparatus for synchronizing different communication ports | |
WO2001095562A2 (en) | Method for ensuring access to a transmission medium | |
US11424902B2 (en) | System and method for synchronizing nodes in a network device | |
US8649303B2 (en) | Method and device for synchronizing and time-stamping for equipment items of a communication network of AFDX type | |
WO2021077289A1 (zh) | 一种同步方法及设备 | |
US10853288B2 (en) | Bus system | |
CN112448874B (zh) | 车载通信装置及其时间同步方法 | |
JP2014146877A (ja) | 通信システム、及び時刻同期方法 | |
KR20170135384A (ko) | 이더캣 기반의 분산 시계 동기화를 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체 | |
JP2023004094A (ja) | 通信装置 | |
JP2002014185A (ja) | 時刻同期化方式 | |
US20230163871A1 (en) | Network interface card structure and clock synchronization method to precisely acquire heterogeneous ptp synchronization information for ptp synchronization network extension | |
KR102241999B1 (ko) | 차량용 이더넷 적용을 위한 게이트웨이와 이를 이용한 센서 및 노드의 동기화를 위한 장치 및 방법 | |
CN111638749A (zh) | 一种仿真系统同步方法、仿真设备及系统 | |
US20230421282A1 (en) | Communication apparatus, control method for communication apparatus, and storage medium | |
JP6627958B1 (ja) | 通信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240515 |