(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-25
(45)【発行日】2023-02-02
(54)【発明の名称】情報処理装置、時刻同期方法、及び時刻同期プログラム
(51)【国際特許分類】
G04G 5/00 20130101AFI20230126BHJP
H04Q 9/00 20060101ALI20230126BHJP
H04M 11/00 20060101ALI20230126BHJP
【FI】
G04G5/00 J
H04Q9/00 311H
H04M11/00 301
(21)【出願番号】P 2019002774
(22)【出願日】2019-01-10
【審査請求日】2021-10-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100133570
【氏名又は名称】▲徳▼永 民雄
(72)【発明者】
【氏名】清水 貴志
(72)【発明者】
【氏名】横山 乾
(72)【発明者】
【氏名】村川 博
【審査官】榮永 雅夫
(56)【参考文献】
【文献】特開2008-209995(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G04G 5/00
G04G 7/00
H04Q 9/00 - 9/16
H04M 11/00 - 11/10
(57)【特許請求の範囲】
【請求項1】
第1システム時刻を記憶する記憶部と、
前記記憶部に前記第1システム時刻が書き込まれた後に、情報取得装置から、前記情報取得装置が取得した第1情報と、前記第1情報の取得時刻を示す第1時刻情報とを受信し、前記第1情報と前記第1時刻情報とを受信した後に、前記情報取得装置から、第2情報と前記第2情報の取得時刻を示す第2時刻情報とを受信する受信部と、
前記第2時刻情報と前記第1時刻情報との差分と、クロック信号と、前記クロック信号の周波数とを用いて、前記情報取得装置において取得時刻を生成するタイミング信号の周波数を計算する第1周波数計算部と、
前記受信部が前記第1情報と前記第1時刻情報とを受信したときに、前記クロック信号に基づいて特定された時刻を、前記受信部が前記第1情報と前記第1時刻情報とを受信した受信時刻として用い、前記第1システム時刻に基づいて、
前記受信時刻を第2システム時刻に変換する受信時刻変換部と、
前記第2システム時刻と前記第1時刻情報とに基づいて、前記第2時刻情報を第3システム時刻に変換する時刻情報変換部と、
前記第2システム時刻を前記第1情報に付加し、前記第3システム時刻を前記第2情報に付加する付加部と、
を備え
、
前記時刻情報変換部は、
前記第2時刻情報と前記第1時刻情報との差分を生成する減算部と、
前記第2時刻情報と前記第1時刻情報との差分と、前記タイミング信号の周波数とを用いて、前記第3システム時刻と前記第2システム時刻との差分を計算する第1差分計算部と、
前記第3システム時刻と前記第2システム時刻との差分を前記第2システム時刻に加算することで、前記第3システム時刻を求める第1加算部と、
を含むことを特徴とする情報処理装置。
【請求項2】
前記受信時刻変換部は、
前記受信時刻と前記クロック信号の周波数とを用いて、前記第2システム時刻と前記第1システム時刻との差分を計算する第2差分計算部と、
前記第2システム時刻と前記第1システム時刻との差分を前記第1システム時刻に加算することで、前記第2システム時刻を求める第2加算部と、
を含むことを特徴とする請求項
1記載の情報処理装置。
【請求項3】
前記第1システム時刻と前記クロック信号とを用いて、前記クロック信号の周波数を計算する第2周波数計算部をさらに備えることを特徴とする請求項
2記載の情報処理装置。
【請求項4】
前記受信部は、前記記憶部に前記第1システム時刻が書き込まれた後に、複数の情報取得装置のうちいずれかの情報取得装置から、前記いずれかの情報取得装置が取得した第1情報と第1時刻情報とを受信し、前記第1情報と前記第1時刻情報とを受信した後に、前記いずれかの情報取得装置から、第2情報と第2時刻情報とを受信し、
前記付加部は、前記第2システム時刻を前記いずれかの情報取得装置から受信した第1情報に付加し、前記第3システム時刻を前記いずれかの情報取得装置から受信した第2情報に付加することを特徴とする請求項1乃至
3のいずれか1項に記載の情報処理装置。
【請求項5】
情報処理装置によって実行される時刻同期方法であって、
前記情報処理装置が、
第1システム時刻が記憶部に書き込まれた後に、情報取得装置から、前記情報取得装置が取得した第1情報と、前記第1情報の取得時刻を示す第1時刻情報とを受信し、
前記第1情報と前記第1時刻情報とを受信した後に、前記情報取得装置から、第2情報と前記第2情報の取得時刻を示す第2時刻情報とを受信し、
前記第2時刻情報と前記第1時刻情報との差分と、クロック信号と、前記クロック信号の周波数とを用いて、前記情報取得装置において取得時刻を生成するタイミング信号の周波数を計算し、
前記第1情報と前記第1時刻情報とを受信したときに、前記クロック信号に基づいて特定された時刻を、前記第1情報と前記第1時刻情報とを受信した受信時刻として用い、前記第1システム時刻に基づいて、
前記受信時刻を第2システム時刻に変換し、
前記第2時刻情報と前記第1時刻情報との差分と、前記タイミング信号の周波数とを用いて、前記第3システム時刻と前記第2システム時刻との差分を計算し、
前記第3システム時刻と前記第2システム時刻との差分を前記第2システム時刻に加算することで、第3システム時刻
を求め、
前記第2システム時刻を前記第1情報に付加し、
前記第3システム時刻を前記第2情報に付加する、
ことを特徴とする時刻同期方法。
【請求項6】
第1システム時刻が記憶部に書き込まれた後に、情報取得装置から、前記情報取得装置が取得した第1情報と、前記第1情報の取得時刻を示す第1時刻情報とを受信し、
前記第1情報と前記第1時刻情報とを受信した後に、前記情報取得装置から、第2情報と前記第2情報の取得時刻を示す第2時刻情報とを受信し、
前記第2時刻情報と前記第1時刻情報との差分と、クロック信号と、前記クロック信号の周波数とを用いて、前記情報取得装置において取得時刻を生成するタイミング信号の周波数を計算し、
前記第1情報と前記第1時刻情報とを受信したときに、前記クロック信号に基づいて特定された時刻を、前記第1情報と前記第1時刻情報とを受信した受信時刻として用い、前記第1システム時刻に基づいて、
前記受信時刻を第2システム時刻に変換し、
前記第2時刻情報と前記第1時刻情報との差分と、前記タイミング信号の周波数とを用いて、前記第3システム時刻と前記第2システム時刻との差分を計算し、
前記第3システム時刻と前記第2システム時刻との差分を前記第2システム時刻に加算することで、第3システム時刻
を求め、
前記第2システム時刻を前記第1情報に付加し、
前記第3システム時刻を前記第2情報に付加する、
処理をコンピュータに実行させるための時刻同期プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、時刻同期方法、及び時刻同期プログラムに関する。
【背景技術】
【0002】
図1は、複数のセンサから情報を収集する、従来の情報処理システムの構成例を示している。
図1の情報処理システムは、情報処理装置101、センサ102-1、及びセンサ102-2を含む。情報処理装置101は、FPGA(Field-Programmable Gate Array)111を含む。
【0003】
センサ102-1及びセンサ102-2は、個別のタイミング信号に同期して動作する。センサ102-1は、データ121-1~データ121-4を取得し、取得したデータをバッファリングしながら情報処理装置101へ送信する。同様に、センサ102-2は、データ122-1~データ122-4を取得し、取得したデータをバッファリングしながら情報処理装置101へ送信する。
【0004】
FPGA111は、センサ102-1からデータ121-1~データ121-4を受信し、センサ102-2からデータ122-1~データ122-4を受信する。そして、FPGA111は、受信したデータに対する情報処理を行う。
【0005】
センサに関連して、複数のセンサによる計測結果同士を時間的に対応付けるセンサ情報処理装置、及びセンサデータに関する誤差の少ないタイムスタンプが得られるセンシングシステムが知られている(例えば、特許文献1及び特許文献2を参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2015-19223号公報
【文献】国際公開第2018/151202号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0007】
情報処理装置において複数のセンサから収集した情報を処理する際に、各情報に時刻を示すタイムスタンプを付加する場合がある。しかし、各センサが個別のタイミング信号に同期して動作している場合、複数のセンサのタイミング信号に基づく時刻は互いに同期しておらず、情報処理装置のシステム時刻とも同期していない。
【0008】
なお、時刻同期の問題は、複数のセンサから情報を収集する場合に限らず、単一のセンサから情報を収集する場合においても生ずるものである。
【0009】
1つの側面において、本発明は、情報取得装置が情報を取得した時刻を、取得された情報を処理する情報処理装置のシステム時刻と同期させることを目的とする。
【課題を解決するための手段】
【0010】
1つの案では、情報処理装置は、記憶部、受信部、受信時刻変換部、時刻情報変換部、及び付加部を含む。
【0011】
記憶部は、第1システム時刻を記憶する。受信部は、記憶部に第1システム時刻が書き込まれた後に、情報取得装置から、情報取得装置が取得した第1情報と、第1情報の取得時刻を示す第1時刻情報とを受信する。そして、受信部は、第1情報と第1時刻情報とを受信した後に、情報取得装置から、第2情報と第2情報の取得時刻を示す第2時刻情報とを受信する。
【0012】
受信時刻変換部は、第1システム時刻に基づいて、受信部が第1情報と第1時刻情報とを受信した受信時刻を、第2システム時刻に変換し、時刻情報変換部は、第2システム時刻と第1時刻情報とに基づいて、第2時刻情報を第3システム時刻に変換する。付加部は、第2システム時刻を第1情報に付加し、第3システム時刻を第2情報に付加する。
【発明の効果】
【0013】
実施形態によれば、情報取得装置が情報を取得した時刻を、取得された情報を処理する情報処理装置のシステム時刻と同期させることができる。
【図面の簡単な説明】
【0014】
【
図6】実施形態の情報処理システムの構成図である。
【
図10A】時刻同期処理の具体例を示すフローチャート(その1)である。
【
図10B】時刻同期処理の具体例を示すフローチャート(その2)である。
【
図17】パケット消失時の時刻同期処理を示す図である。
【
図18】ソフトウェア制御による時刻同期部の構成図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら、実施形態を詳細に説明する。
図2は、データにタイムスタンプを付加するFPGAの第1の比較例を示している。
図2のFPGA201は、割り込みコントローラ211、MMIO(Memory-mapped Input Output)レジスタ212、及び検出部213を含む。
【0016】
検出部213は、センサから入力データを受信すると、割り込みコントローラ211へ検出信号を出力する。割り込みコントローラ211は、検出信号を受信すると、オペレーティングシステム(Operating System,OS)202に対して、割り込み又はポーリングにより時刻同期を要求する。OS202は、割り込みコントローラ211からの要求に基づいてOS時刻221を取得し、FPGA201のMMIOレジスタ212に書き込む。OS時刻221は、システム時刻の一例である。
【0017】
FPGA201は、MMIOレジスタ212に書き込まれたOS時刻221を、タイムスタンプとして、検出部213から出力される入力データに付加し、タイムスタンプが付加された出力データを出力する。
【0018】
しかしながら、
図2の構成では、出力データのタイムスタンプは、FPGA201が入力データを受信したときのOS時刻を示しており、センサが入力データを取得したときのOS時刻を示していない。
【0019】
図3は、データにタイムスタンプを付加するFPGAの第2の比較例を示している。
図3のFPGA301は、MMIOレジスタ311及び加算部312を含む。
【0020】
センサは、タイミング信号に同期してカウント値をインクリメントするカウンタを含み、入力データを取得したときのカウント値をその入力データに付加して、FPGA301へ送信する。
【0021】
OS202は、定期的にOS時刻221を取得し、FPGA301のMMIOレジスタ311に書き込む。FPGA301は、MMIOレジスタ311にOS時刻221が書き込まれると、リセット信号をセンサへ送信し、センサは、リセット信号を受信すると、カウンタをリセットする。
【0022】
FPGA301は、センサから入力データを受信すると、入力データからカウント値を取得する。加算部312は、MMIOレジスタ311に書き込まれたOS時刻221に、カウント値が示す時間を加算することで、タイムスタンプを生成する。そして、FPGA301は、生成されたタイムスタンプを入力データに付加し、タイムスタンプが付加された出力データを出力する。
【0023】
しかしながら、
図3の構成では、入力データに付加されたカウント値に、FPGA301からセンサへリセット信号を送信する通信のオーバヘッドが含まれている。このため、そのカウント値から生成されるタイムスタンプは、必ずしも、センサが入力データを取得したときのOS時刻を示していない。
【0024】
図4は、実施形態の情報処理装置の機能的構成例を示している。
図4の情報処理装置401は、記憶部411、受信部412、受信時刻変換部413、時刻情報変換部414、及び付加部415を含む。記憶部411は、第1システム時刻を記憶する。
【0025】
図5は、
図4の情報処理装置401が行う時刻同期処理の例を示すフローチャートである。まず、受信部412は、記憶部411に第1システム時刻が書き込まれた後に、情報取得装置402から、情報取得装置402が取得した第1情報と、第1情報の取得時刻を示す第1時刻情報とを受信する(ステップ501)。そして、受信部412は、第1情報と第1時刻情報とを受信した後に、情報取得装置402から、第2情報と第2情報の取得時刻を示す第2時刻情報とを受信する(ステップ502)。
【0026】
受信時刻変換部413は、第1システム時刻に基づいて、受信部412が第1情報と第1時刻情報とを受信した受信時刻を、第2システム時刻に変換する(ステップ503)。時刻情報変換部414は、第2システム時刻と第1時刻情報とに基づいて、第2時刻情報を第3システム時刻に変換する(ステップ504)。そして、付加部415は、第2システム時刻を第1情報に付加し(ステップ505)、第3システム時刻を第2情報に付加する(ステップ506)。
【0027】
図4の情報処理装置401によれば、情報取得装置が情報を取得した時刻を、取得された情報を処理する情報処理装置のシステム時刻と同期させることができる。
【0028】
図6は、実施形態の情報処理システムの構成例を示している。
図6の情報処理システムは、情報処理装置601と情報取得装置602-1~情報取得装置602-N(Nは1以上の整数)を含む。情報処理装置601及び各情報取得装置602-i(i=1~N)は、
図4の情報処理装置401及び情報取得装置402にそれぞれ対応する。情報処理装置601と各情報取得装置602-iは、通信ネットワーク603を介して通信することができる。
【0029】
情報取得装置602-iは、各種センサ、撮像装置、マイクロフォン等を含み、所定の情報を取得する。例えば、情報取得装置602-iが圧力センサを含む場合、気圧、水圧等を示す情報が取得され、情報取得装置602-iが温度センサを含む場合、温度を示す情報が取得される。情報取得装置602-iが撮像装置を含む場合、画像情報が取得され、情報取得装置602-iがマイクロフォンを含む場合、音声情報が取得される。情報取得装置602-iに含まれるセンサは、湿度センサ、風力センサ等であってもよい。
【0030】
情報取得装置602-iは、取得した情報に、その情報の取得時刻を示す時刻情報を付加することで、センサデータのパケットを生成し、生成したパケットを情報処理装置601へ送信する。情報取得装置602-iは、タイミング信号を用いて時刻情報を生成する。
【0031】
情報処理装置601は、CPU(Central Processing Unit)611、メモリ612、及び時刻同期部613を含む。CPU611(プロセッサ)は、NTP(Network Time Protocol)によって定期的に更新されるOS時刻を、時刻同期部613へ出力する。
【0032】
時刻同期部613は、CPU611が出力するOS時刻に基づいて、情報取得装置602-iから受信したパケットに含まれる所定の情報に、その情報の取得時刻を示すOS時刻を付加することで、転送データを生成する。そして、時刻同期部613は、生成した転送データをメモリ612へ転送し、メモリ612は、転送された転送データを記憶する。CPU611は、メモリ612が記憶している転送データに対する情報処理を行う。
【0033】
時刻同期部613は、受信部621、第1周波数計算部622-1~第1周波数計算部622-N、第1周波数計算部623、変換部624-1~変換部624-N、及び付加部625を含む。受信部621及び付加部625は、
図4の受信部412及び付加部415にそれぞれ対応する。
【0034】
受信部621は、情報取得装置602-iからパケットを受信し、パケットに含まれる所定の情報を付加部625へ出力し、パケットに含まれる時刻情報を、第1周波数計算部622-i及び変換部624-iへ出力する。
【0035】
第2周波数計算部623は、CPU611が出力するOS時刻と、時刻同期部613内のクロック信号とを用いて、そのクロック信号の周波数を計算する。そして、第2周波数計算部623は、計算したクロック信号の周波数を、第1周波数計算部622-1~第1周波数計算部622-N及び変換部624-1~変換部624-Nへ出力する。
【0036】
第1周波数計算部622-iは、2つのパケットに含まれる時刻情報の差分と、時刻同期部613内のクロック信号と、第2周波数計算部623が出力する、クロック信号の周波数とを用いて、情報取得装置602-i内のタイミング信号の周波数を計算する。そして、第1周波数計算部622-iは、計算したタイミング信号の周波数を変換部624-iへ出力する。
【0037】
変換部624-iは、CPU611が出力するOS時刻に基づいて、受信部412が出力する時刻情報をOS時刻に変換し、そのOS時刻を付加部625へ出力する。付加部625は、変換部624-iが出力するOS時刻を、受信部412が出力する所定の情報にタイムスタンプとして付加することで、転送データを生成し、メモリ612へ転送する。
【0038】
図7は、情報取得装置602-iの一例であるセンサモジュールの構成例を示している。
図7のセンサモジュール701は、圧力センサ711、水晶振動子712、AD(Analog-to-Digital)コンバータ713、カウンタ714、書き込み回路715、データバッファ716、及びI2C(Inter-Integrated Circuit)バスマスタ717を含む。この場合、
図6の通信ネットワーク603としてI2Cバスが用いられる。
【0039】
圧力センサ711は、圧力を示すアナログ信号をADコンバータ713へ出力し、水晶振動子712は、正弦波のタイミング信号をADコンバータ713、カウンタ714、及びI2Cバスマスタ717へ出力する。
【0040】
カウンタ714は、水晶振動子712が出力するタイミング信号に同期してカウント動作を行い、カウント値を書き込み回路715へ出力する。カウント値は、情報の取得時刻を示す時刻情報の一例である。ADコンバータ713は、水晶振動子712が出力するタイミング信号に同期して、圧力センサ711が出力するアナログ信号をデジタル信号の情報721に変換し、書き込み回路715へ出力する。
【0041】
書き込み回路715は、ADコンバータ713が出力する情報721に、カウンタ714が出力するカウント値を付加することで、センサデータのパケットを生成して、データバッファ716へ出力する。データバッファ716は、複数のパケットをバッファリングして、I2Cバスマスタ717へ出力する。
【0042】
I2Cバスマスタ717は、水晶振動子712が出力するタイミング信号に同期して動作し、データバッファ716が出力するパケットを、シリアルデータSDAとして情報処理装置601へ送信する。I2Cバスマスタ717は、シリアルデータSDAとともに、シリアルクロックSCLを情報処理装置601へ送信する。
【0043】
図8は、情報取得装置602-iの一例であるビデオモジュールの構成例を示している。
図8のビデオモジュール801は、撮像装置811、水晶振動子812、ADコンバータ813、カウンタ814、書き込み回路815、及びデータバッファ816を含む。
【0044】
撮像装置811は、画像センサを含み、デジタル映像を撮影して、VGA(Video Graphics Array)信号をADコンバータ813へ出力する。VGA信号は、Hsync(Horizontal synchronizing signal)、Vsync(Vertical synchronizing signal)、blueビデオ信号、greenビデオ信号、及びredビデオ信号を含む。Hsyncは、書き込み回路815にも出力される。水晶振動子812は、正弦波のタイミング信号をカウンタ814へ出力する。
【0045】
カウンタ814は、水晶振動子812が出力するタイミング信号に同期してカウント動作を行い、カウント値を書き込み回路815へ出力する。ADコンバータ813は、撮像装置811が出力するVGA信号をデジタル信号の画像情報821に変換し、書き込み回路815へ出力する。ADコンバータ813の代わりに、デジタルエンコーダを用いてもよい。
【0046】
書き込み回路815は、Hsyncに同期して動作し、ADコンバータ813が出力する画像情報821に、カウンタ814が出力するカウント値を付加することで、センサデータのパケットを生成して、データバッファ816へ出力する。データバッファ816は、複数のパケットをバッファリングして、情報処理装置601へ送信する。
【0047】
図6の時刻同期部613は、ハードウェア制御又はソフトウェア制御によって実現される。ハードウェア制御による時刻同期部613としては、FPGAのようなハードウェア論理回路が用いられ、ソフトウェア制御による時刻同期部613としては、コンピュータが用いられる。
【0048】
以下では、
図9~
図17を参照しながら、時刻同期部613としてFPGAを用いた場合の構成及び動作を説明する。
【0049】
図9は、
図6の変換部624-iの構成例を示している。
図9の変換部624-iは、書き込み回路901、判定回路902、セレクタ903、カウンタ904、レジスタ905~レジスタ911、及び減算器(sub)912を含む。変換部624-iは、さらに、DSP(Digital Signal Processor)913、DSP914、加算器(add)915、及び加算器916を含む。
【0050】
レジスタ905は、
図4の記憶部411に対応し、DSP913及び加算器915は、受信時刻変換部413に対応し、減算器912、DSP914、及び加算器916は、時刻情報変換部414に対応する。減算器912は減算部の一例であり、DSP914は第1差分計算部の一例であり、加算器916は第1加算部の一例である。DSP913は第2差分計算部の一例であり、加算器915は第2加算部の一例である。
【0051】
書き込み回路901は、CPU611が出力するOS時刻であるOS_system_timeを受信すると、OS_system_timeをOS_timeとしてレジスタ905に書き込む。レジスタ905は、OS_timeを加算器915へ出力する。
【0052】
そして、書き込み回路901は、カウンタ904をクリアして、カウント値FPGA_cntに0を設定し、レジスタ909が記憶するフラグfirst_pktflagをクリアして、first_pktflagに論理“0”を設定する。その後、カウンタ904は、時刻同期部613内のクロック信号FPGA_clkに同期してカウント動作を行い、カウント値FPGA_cntをレジスタ906へ出力する。
【0053】
受信部621は、情報取得装置602-iからパケットを受信したとき、パケットの受信を示す信号sensor_validと、パケットに含まれるカウント値sensor_cntとを、第1周波数計算部622-i及び変換部624-iへ出力する。sensor_valid及びsensor_cntは、判定回路902及びセレクタ903にそれぞれ入力される。
【0054】
判定回路902は、sensor_validを受信した場合、レジスタ909のfirst_pktflagをチェックする。first_pktflagが論理“0”である場合、判定回路902は、first_pktflagに論理“1”を設定し、カウンタ904が出力するFPGA_cntを、1st_pkt_clkとしてレジスタ906に書き込む。
【0055】
したがって、OS_system_timeがレジスタ905に書き込まれた後、受信部621が最初のパケットを受信したときに、first_pktflagに論理“1”が設定され、そのときのFPGA_cntが1st_pkt_clkに設定される。1st_pkt_clkは、最初のパケットを受信した受信時刻を示している。レジスタ906は、1st_pkt_clkをDSP913へ出力する。
【0056】
次に、判定回路902は、セレクタ903にレジスタ907を選択させ、セレクタ903は、sensor_cntをレジスタ907へ出力し、レジスタ907は、sensor_cntを1st_pkt_cntとして記憶する。そして、判定回路902は、セレクタ903にレジスタ908を選択させ、セレクタ903は、sensor_cntをレジスタ908へ出力し、レジスタ908は、sensor_cntをcur_pkt_cntとして記憶する。
【0057】
したがって、受信部621が最初のパケットを受信したとき、そのパケットのsensor_cntが、1st_pkt_cnt及びcur_pkt_cntに設定される。
【0058】
一方、first_pktflagが論理“1”である場合、判定回路902は、セレクタ903にレジスタ908を選択させ、レジスタ908は、sensor_cntをcur_pkt_cntとして記憶する。この場合、first_pktflag、1st_pkt_clk、及び1st_pkt_cntは更新されない。
【0059】
したがって、OS_system_timeがレジスタ905に書き込まれた後、受信部621が2番目以降のパケットを受信したとき、そのパケットのsensor_cntがcur_pkt_cntに設定され、1st_pkt_clk及び1st_pkt_cntは変化しない。
【0060】
このように、1st_pkt_cntは、最初のパケットのsensor_cntを表し、cur_pkt_cntは、最初のパケット又は2番目以降のパケットのsensor_cntを表す。レジスタ907及びレジスタ908は、1st_pkt_cnt及びcur_pkt_cntをそれぞれ減算器912へ出力する。減算器912は、cur_pkt_cntから1st_pkt_cntを減算することで、カウント値の差分を求め、DSP914へ出力する。
【0061】
したがって、受信部621が最初のパケットを受信したとき、減算器912は、カウント値の差分として0を出力する。一方、受信部621が2番目以降のパケットを受信したとき、減算器912は、受信したパケットのsensor_cntと最初のパケットのsensor_cntとの差分を出力する。
【0062】
第2周波数計算部623は、クロック信号FPGA_clkの周波数FPGA_freqを、第1周波数計算部622-1~第1周波数計算部622-N及び変換部624-1~変換部624-Nへ出力する。レジスタ910は、FPGA_freqを記憶し、DSP913へ出力する。
【0063】
第1周波数計算部622-iは、情報取得装置602-i内のタイミング信号の周波数sensor_freqを変換部624-iへ出力する。レジスタ911は、sensor_freqを記憶し、DSP914へ出力する。
【0064】
DSP913は、レジスタ906が出力する1st_pkt_clkと、レジスタ910が出力するFPGA_freqとを用いて、受信部621が最初のパケットを受信したときのOS時刻と、レジスタ905が記憶するOS_timeとの差分を計算する。DSP913は、1st_pkt_clkをFPGA_freqで除算することで、差分を求めることができる。そして、DSP913は、計算した差分を加算器915へ出力する。
【0065】
加算器915は、DSP913が出力する差分を、レジスタ905が出力するOS_timeに加算することで、受信部621が最初のパケットを受信したときのOS時刻を求め、加算器916へ出力する。このように、DSP913及び加算器915によって、1st_pkt_clkを、最初のパケットの受信時刻を示すOS時刻に変換することができる。
【0066】
DSP914は、レジスタ911が出力するsensor_freqを用いて、減算器912が出力するカウント値の差分から、受信したパケットのsensor_cntと最初のパケットのsensor_cntとの差分に対応する、OS時刻の差分を計算する。DSP914は、カウント値の差分をsensor_freqで除算することで、OS時刻の差分を求めることができる。そして、DSP914は、計算した差分を加算器916へ出力する。
【0067】
DSP914が出力するOS時刻の差分は、sensor_cntの差分をsensor_freqに基づいて変換した値であるため、情報取得装置602-iと時刻同期部613との間におけるパケットの転送時間を含んでいない。したがって、通信ネットワーク603の転送遅延とは無関係である。
【0068】
加算器916は、DSP914が出力する差分を、加算器915が出力するOS時刻に加算することで、最初のパケットの受信時刻を示すOS時刻から、sensor_cntの差分に対応する相対時間が経過した後のOS時刻を求める。そして、加算器916は、求めたOS時刻をReal_timeとして付加部625へ出力する。
【0069】
このように、減算器912、DSP914、及び加算器916によって、受信したパケットのsensor_cntを、そのパケットに含まれる情報の取得時刻を示すOS時刻に変換することができる。加算器916が出力するReal_timeは、受信したパケットに含まれる情報にタイムスタンプとして付加される。
【0070】
図10A及び
図10Bは、
図9の変換部624-iが行う時刻同期処理の具体例を示すフローチャートである。まず、書き込み回路901は、CPU611からOS_system_timeを受信したか否かをチェックする(ステップ1001)。
【0071】
OS_system_timeを受信した場合(ステップ1001,YES)、書き込み回路901は、OS_system_timeをOS_timeとしてレジスタ905に書き込む(ステップ1003)。そして、書き込み回路901は、カウンタ904のFPGA_cntをクリアし(ステップ1004)、レジスタ909のfirst_pktflagをクリアする(ステップ1005)。
【0072】
次に、判定回路902は、受信部621からsensor_validを受信したか否かをチェックする(ステップ1002)。sensor_validを受信した場合(ステップ1002,YES)、判定回路902は、レジスタ909のfirst_pktflagをチェックする(ステップ1006)。
【0073】
first_pktflagが論理“0”である場合(ステップ1006,YES)、判定回路902は、first_pktflagに論理“1”を設定する(ステップ1009)。そして、判定回路902は、カウンタ904が出力するFPGA_cntを、1st_pkt_clkとしてレジスタ906に書き込む(ステップ1010)。
【0074】
次に、セレクタ903は、sensor_cntをレジスタ907へ出力し、レジスタ907は、sensor_cntを1st_pkt_cntとして記憶する(ステップ1011)。そして、セレクタ903は、sensor_cntをレジスタ908へ出力し、レジスタ908は、sensor_cntをcur_pkt_cntとして記憶する(ステップ1007)。
【0075】
次に、減算器912は、cur_pkt_cntから1st_pkt_cntを減算することで、カウント値の差分を求める(ステップ1008)。そして、DSP914は、レジスタ911のsensor_freqを用いて、減算器912が出力するカウント値の差分をOS時刻の差分に変換する(ステップ1012)。
【0076】
次に、DSP913は、レジスタ910のFPGA_freqを用いて、レジスタ906の1st_pkt_clkを、受信部621が最初のパケットを受信したときのOS時刻と、レジスタ905のOS_timeとの差分に変換する(ステップ1013)。
【0077】
次に、加算器915は、DSP913が出力する差分を、レジスタ905のOS_timeに加算し、加算器916は、DSP914が出力する差分を、加算器915が出力する加算結果に加算する(ステップ1014)。これにより、Real_timeが求められる。
【0078】
次に、カウンタ904は、FPGA_cntをカウントアップする(ステップ1015)。そして、変換部624-iは、レジスタ911のsensor_freqを更新し(ステップ1016)、レジスタ910のFPGA_freqを更新して(ステップ1017)、ステップ1001以降の処理を繰り返す。
【0079】
OS_system_timeを受信していない場合(ステップ1001,NO)、変換部624-iは、ステップ1002以降の処理を行う。first_pktflagが論理“1”である場合(ステップ1006,NO)、変換部624-iは、ステップ1007以降の処理を行う。sensor_validを受信していない場合(ステップ1002,NO)、変換部624-iは、ステップ1015以降の処理を行う。
【0080】
図11は、
図9の変換部624-iが行う時刻同期処理の例を示している。CPU611は、所定のタイミングでOS_system_timeを出力し、レジスタ905のOS_timeを更新する。
【0081】
図11の例では、15:00:05、15:00:10、及び15:00:16が順番にOS_timeに設定されている。タイムフレーム1101は、15:00:05から15:00:10までの区間を表し、タイムフレーム1102は、15:00:10から15:00:16までの区間を表す。
【0082】
タイムフレーム1101において、受信部621は、FPGA_cnt=50のときに最初のパケットを受信し、FPGA_cnt=71のときに2番目のパケットを受信し、FPGA_cnt=125のときに3番目のパケットを受信する。最初のパケットのsensor_cntは1010であり、2番目のパケットのsensor_cntは1050であり、3番目のパケットのsensor_cntは1150である。
【0083】
この場合、2番目のパケットのsensor_cntと最初のパケットのsensor_cntとの差分“40”が、OS時刻の差分1111に変換される。そして、FPGA_cnt=50に対応するOS時刻に差分1111が加算されて、sensor_cnt=1050に対応するReal_timeが求められる。
【0084】
また、3番目のパケットのsensor_cntと最初のパケットのsensor_cntとの差分“140”が、OS時刻の差分1112に変換される。そして、FPGA_cnt=50に対応するOS時刻に差分1112が加算されて、sensor_cnt=1150に対応するReal_timeが求められる。
【0085】
タイムフレーム1102において、受信部621は、FPGA_cnt=36のときに最初のパケットを受信し、FPGA_cnt=73のときに2番目のパケットを受信し、FPGA_cnt=114のときに3番目のパケットを受信する。最初のパケットのsensor_cntは1213であり、2番目のパケットのsensor_cntは1255であり、3番目のパケットのsensor_cntは1291である。
【0086】
タイムフレーム1102においても、タイムフレーム1101の場合と同様にして、各sensor_cntに対応するReal_timeが求められる。
【0087】
図6の情報処理システムによれば、各タイムフレーム内において受信した複数のパケットに含まれる情報に、情報取得装置602-iが情報を取得したときのOS時刻を示すタイムスタンプが付加される。複数の情報それぞれに付加されたタイムスタンプの差分は正確な相対時間を表しているため、それらの情報の取得時刻を情報処理装置601のOS時刻と同期させることができる。この場合、
図3の構成のように、情報処理装置601から情報取得装置602-iへリセット信号を送信する必要はない。
【0088】
また、各情報取得装置602-iが個別のタイミング信号に同期して動作している場合であっても、情報取得装置602-1~情報取得装置602-Nの間で、情報の取得時刻を同期させることが可能になる。
【0089】
図12は、
図6の第2周波数計算部623の構成例を示している。
図12の第2周波数計算部623は、書き込み回路1201、ロード回路(τ)1202、カウンタ1203、レジスタ1204~レジスタ1206、減算器1207、減算器1208、DSP1209、及び統計値計算回路1210を含む。
【0090】
書き込み回路1201は、CPU611からOS_system_timeを受信すると、ロード指示をロード回路1202へ出力し、OS_system_timeをcurrent_timeとしてレジスタ1205に書き込む。レジスタ1205は、current_timeを減算器1208へ出力する。
【0091】
そして、書き込み回路1201は、カウンタ1203をクリアして、カウント値に0を設定する。その後、カウンタ1203は、FPGA_clkに同期してカウント動作を行い、カウント値をレジスタ1204及び減算器1207へ出力する。
【0092】
ロード回路1202は、書き込み回路1201が出力するロード指示に従って、OS_system_timeが書き込まれる直前のcurrent_timeを、last_timeとしてレジスタ1206に書き込む。レジスタ1206は、last_timeを減算器1208へ出力する。
【0093】
また、ロード回路1202は、書き込み回路1201が出力するロード指示に従って、カウンタ1203がクリアされる直前のカウント値を、レジスタ1204に書き込む。レジスタ1204は、カウント値を減算器1207へ出力する。
【0094】
減算器1207は、レジスタ1204が出力するカウント値から、カウンタ1203が出力するカウント値を減算することで、カウント値の差分を求め、DSP1209へ出力する。減算器1208は、レジスタ1205が出力するcurrent_timeから、レジスタ1206が出力するlast_timeを減算することで、OS時刻の差分を求め、DSP1209へ出力する。
【0095】
DSP1209は、減算器1207が出力する差分を、減算器1208が出力する差分で除算することで、FPGA_clkの周波数を求め、統計値計算回路1210へ出力する。統計値計算回路1210は、DSP1209が出力する複数の周波数の統計値を求め、求めた統計値をFPGA_freqとして出力する。統計値としては、平均値、中央値、最頻値等を用いることができる。統計値を求める必要がない場合は、統計値計算回路1210を省略してもよい。
【0096】
図12の第2周波数計算部623によれば、環境の変化によって、時刻同期部613内のクロック信号FPGA_clkの周波数が変動する場合であっても、正確な周波数を求めることができる。そして、求められた周波数を用いることで、
図9のReal_timeを補正することが可能になる。
【0097】
図13は、
図6の第1周波数計算部622-iの構成例を示している。
図13の第1周波数計算部622-iは、カウンタ1301、レジスタ1302~レジスタ1304、減算器1305、減算器1306、DSP1307、DSP1308、及び統計値計算回路1309を含む。
【0098】
カウンタ1301は、FPGA_clkに同期してカウント動作を行い、カウント値FPGA_cur_clkをレジスタ1302及び減算器1305へ出力する。第1周波数計算部622-iは、受信部621からsensor_validを受信したとき、カウンタ1301が出力するFPGA_cur_clkを、FPGA_last_clkとしてレジスタ1302に書き込む。レジスタ1302は、FPGA_last_clkを減算器1305へ出力する。
【0099】
レジスタ1303は、受信部621が出力するsensor_cntを、sensor_cur_clkとして記憶し、sensor_cur_clkを減算器1306へ出力する。第1周波数計算部622-iは、受信部621からsensor_validを受信したとき、レジスタ1303のsensor_cur_clkを、sensor_last_clkとしてレジスタ1304に書き込む。レジスタ1304は、sensor_last_clkを減算器1306へ出力する。
【0100】
減算器1305は、カウンタ1301が出力するFPGA_cur_clkから、レジスタ1302が出力するFPGA_last_clkを減算することで、カウント値の差分を求め、DSP1307へ出力する。減算器1306は、レジスタ1303が出力するsensor_cur_clkから、レジスタ1304が出力するsensor_last_clkを減算することで、sensor_cntの差分を求め、DSP1307へ出力する。
【0101】
DSP1307は、減算器1306が出力する差分を、減算器1305が出力する差分で除算し、除算結果をDSP1308へ出力する。DSP1308は、DSP1307が出力する除算結果に、第2周波数計算部623が出力するFPGA_freqを乗算することで、情報取得装置602-i内のタイミング信号の周波数を求め、統計値計算回路1309へ出力する。統計値計算回路1309は、DSP1308が出力する複数の周波数の統計値を求め、求めた統計値をsensor_freqとして出力する。統計値としては、平均値、中央値、最頻値等を用いることができる。統計値を求める必要がない場合は、統計値計算回路1309を省略してもよい。
【0102】
図13の第1周波数計算部622-iによれば、環境の変化によって、情報取得装置602-i内のタイミング信号の周波数が変動する場合であっても、正確な周波数を求めることができる。そして、求められた周波数を用いることで、
図9のReal_timeを補正することが可能になる。
【0103】
図14は、
図12の第2周波数計算部623によって計算される、クロック信号FPGA_clkの周波数FPGA_freqの例を示している。この例では、統計値計算回路1210による統計値計算は省略されている。
図14のSub出力は、減算器1207が出力するカウント値の差分を表す。FPGA_freqは、次式により計算される。
FPGA_freq
=Sub出力/(current_time-last_time) (1)
【0104】
図11の時刻同期処理において、OS_time=15:00:05のとき、Sub出力=11000である。次に、OS_time=15:00:10のとき、カウンタ1203、レジスタ1204、current_time、及びlast_timeの値は、以下のようになる。
カウンタ1203 00000
レジスタ1204 10000
current_time 15:00:10
last_time 15:00:05
【0105】
この場合、Sub出力=10000となり、FPGA_freqは、次式により計算される。
FPGA_freq=10000/(10-5)=2000[Hz] (2)
【0106】
次に、OS_time=15:00:16のとき、カウンタ1203、レジスタ1204、current_time、及びlast_timeの値は、以下のようになる。
カウンタ1203 00000
レジスタ1204 11000
current_time 15:00:16
last_time 15:00:10
【0107】
この場合、Sub出力=11000となり、FPGA_freqは、次式により計算される。
FPGA_freq=11000/(16-10)=1833[Hz] (3)
【0108】
図15は、
図13の第1周波数計算部622-iによって計算される、タイミング信号の周波数sensor_freqの例を示している。この例では、統計値計算回路1309による統計値計算は省略されている。sensor_freqは、次式により計算される。
sensor_freq
={(sensor_cur_clk-sensor_last_clk)
/(FPGA_cur_clk-FPGA_last_clk)}
*FPGA_freq (4)
【0109】
図11のタイムフレーム1101において、最初のパケットを受信したとき、sensor_cnt、FPGA_cur_clk、及びFPGA_freqの値は、以下のようになる。
sensor_cnt=1010
FPGA_cur_clk=2050
FPGA_freq=2000
【0110】
次に、2番目のパケットを受信したとき、sensor_cnt、FPGA_cur_clk、FPGA_last_clk、sensor_cur_clk、sensor_last_clk、及びFPGA_freqの値は、以下のようになる。
sensor_cnt=1050
FPGA_cur_clk=2071
FPGA_last_clk=2050
sensor_cur_clk=1050
sensor_last_clk=1010
FPGA_freq=2000
【0111】
この場合、sensor_freqは、次式により計算される。
sensor_freq
={(1050-1010)/(2071-2050)}*2000
=3810[Hz] (5)
【0112】
次に、3番目のパケットを受信したとき、sensor_cnt、FPGA_cur_clk、FPGA_last_clk、sensor_cur_clk、sensor_last_clk、及びFPGA_freqの値は、以下のようになる。
sensor_cnt=1150
FPGA_cur_clk=2125
FPGA_last_clk=2071
sensor_cur_clk=1150
sensor_last_clk=1050
FPGA_freq=2000
【0113】
この場合、sensor_freqは、次式により計算される。
sensor_freq
={(1150-1050)/(2125-2071)}*2000
=3704[Hz] (6)
【0114】
図16は、
図9の変換部624-iによって計算されるOS時刻Real_timeの例を示している。Real_timeは、次式により計算される。
Real_time
=(cur_pkt_cnt-1st_pkt_cnt)/sensor_freq
+1st_pkt_clk/FPGA_freq+OS_time
(7)
【0115】
図11の時刻同期処理において、OS_time=15:00:05のとき、1st_pkt_clk、first_pktflag、FPGA_freq、及びsensor_freqの値は、以下のようになる。
1st_pkt_clk=0
first_pktflag=0
FPGA_freq=2000
sensor_freq=4000
【0116】
次に、最初のパケットを受信したとき、sensor_cnt、1st_pkt_clk、first_pktflag、1st_pkt_cnt、cur_pkt_cnt、FPGA_freq、及びsensor_freqの値は、以下のようになる。
sensor_cnt=1010
1st_pkt_clk=50
first_pktflag=1
1st_pkt_cnt=1010
cur_pkt_cnt=1010
FPGA_freq=2000
sensor_freq=4000
【0117】
この場合、Real_timeは、次式により計算される。
Real_time
=(1010-1010)/4000+50/2000+15:00:05
=15:00:05:025 (8)
【0118】
次に、2番目のパケットを受信したとき、sensor_cnt、1st_pkt_clk、first_pktflag、1st_pkt_cnt、cur_pkt_cnt、FPGA_freq、及びsensor_freqの値は、以下のようになる。
sensor_cnt=1050
1st_pkt_clk=50
first_pktflag=1
1st_pkt_cnt=1010
cur_pkt_cnt=1050
FPGA_freq=2000
sensor_freq=3810
【0119】
この場合、Real_timeは、次式により計算される。
Real_time
=(1050-1010)/3810+50/2000+15:00:05
=15:00:05:035 (9)
【0120】
次に、3番目のパケットを受信したとき、sensor_cnt、1st_pkt_clk、first_pktflag、1st_pkt_cnt、cur_pkt_cnt、FPGA_freq、及びsensor_freqの値は、以下のようになる。
sensor_cnt=1150
1st_pkt_clk=50
first_pktflag=1
1st_pkt_cnt=1010
cur_pkt_cnt=1150
FPGA_freq=2000
sensor_freq=3704
【0121】
この場合、Real_timeは、次式により計算される。
Real_time
=(1150-1010)/3704+50/2000+15:00:05
=15:00:05:063 (10)
【0122】
ところで、通信ネットワーク603において障害等が発生した場合、情報取得装置602-iから送信されたセンサデータのパケットが消失して、情報処理装置601に到達しないことがある。このような場合であっても、時刻同期部613は、情報処理装置601に到達したパケットに含まれる情報に対して、タイムスタンプを付加することが可能である。
【0123】
図17は、通信ネットワーク603におけるパケット消失時の時刻同期処理の例を示している。
図17(a)は、
図11のタイムフレーム1101において、最初のパケットが消失した場合の時刻同期処理の例を示している。
【0124】
図17(a)のタイムフレーム1101において、最初のパケットが消失した場合、受信部621は、FPGA_cnt=71のときに2番目のパケットを受信し、FPGA_cnt=125のときに3番目のパケットを受信する。
【0125】
この場合、3番目のパケットのsensor_cntと2番目のパケットのsensor_cntとの差分“100”が、OS時刻の差分1701に変換される。そして、FPGA_cnt=71に対応するOS時刻に差分1701が加算されて、sensor_cnt=1150に対応するReal_timeが求められる。
【0126】
図17(b)は、
図11のタイムフレーム1101において、2番目のパケットが消失した場合の時刻同期処理の例を示している。
【0127】
図17(b)のタイムフレーム1101において、2番目のパケットが消失した場合、受信部621は、FPGA_cnt=50のときに最初のパケットを受信し、FPGA_cnt=125のときに3番目のパケットを受信する。
【0128】
この場合、3番目のパケットのsensor_cntと最初のパケットのsensor_cntとの差分“140”が、OS時刻の差分1112に変換される。そして、FPGA_cnt=50に対応するOS時刻に差分1112が加算されて、sensor_cnt=1150に対応するReal_timeが求められる。
【0129】
このように、
図6の情報処理システムによれば、タイムフレーム内のいずれのパケットが消失した場合であっても、いずれかのパケットを受信したOS時刻を基準として、後続するパケットに含まれる情報にタイムスタンプを付加することができる。
【0130】
図18は、ソフトウェア制御による時刻同期部613の構成例を示している。
図18の時刻同期部613は、CPU1801、メモリ1802、及びインタフェース1803を含むコンピュータである。
【0131】
メモリ1802は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ1802は、
図4の記憶部411として用いることができる。
【0132】
CPU1801(プロセッサ)は、例えば、メモリ1802を利用してプログラムを実行することにより、
図4の受信時刻変換部413、時刻情報変換部414、及び付加部415として動作する。CPU1801は、メモリ1802を利用してプログラムを実行することにより、第1周波数計算部、第2周波数計算部、減算部、第1差分計算部、第1加算部、第2差分計算部、及び第2加算部としても動作する。
【0133】
インタフェース1803は、通信ネットワーク603に接続され、通信に伴うデータ変換を行う通信インタフェース回路である。時刻同期部613は、プログラム及びデータを外部の装置からインタフェース1803を介して受信し、それらをメモリ1802にロードして使用することができる。インタフェース1803は、
図4の受信部412又は
図6の受信部621として用いることができる。
【0134】
図18の時刻同期部613は、さらに、可搬型記録媒体を駆動する媒体駆動装置を含んでいてもよい。可搬型記録媒体は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体にプログラム及びデータを格納しておき、それらをメモリ1802にロードして使用することができる。
【0135】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1802又は可搬型記録媒体のような、物理的な(非一時的な)記録媒体である。
【0136】
図4の情報処理装置401の構成は一例に過ぎず、情報処理装置401の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0137】
図6の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、時刻同期部613内のクロック信号の周波数があまり変動せず、第1周波数計算部622-i及び変換部624-iがその周波数を示す固定値を保持している場合は、第2周波数計算部623を省略することができる。情報取得装置602-i内のタイミング信号の周波数があまり変動せず、変換部624-iがその周波数を示す固定値を保持している場合は、第1周波数計算部622-iを省略することができる。
【0138】
情報取得装置602-1~情報取得装置602-Nは、情報処理装置601内に設けられていてもよい。
【0139】
図7のセンサモジュール701及び
図8のビデオモジュール801の構成は一例に過ぎず、情報処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図7の圧力センサ711の代わりに、温度センサ、湿度センサ、風力センサ等を用いることもできる。
【0140】
図9の変換部624-i、
図12の第2周波数計算部623、
図13の第1周波数計算部622-i、及び
図18の時刻同期部613の構成は一例に過ぎず、情報処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0141】
図5、
図10A、及び
図10Bのフローチャートは一例に過ぎず、変換部624-iの構成又は条件に応じて一部の処理を省略又は変更してもよい。
【0142】
図11及び
図17に示した時刻同期処理は一例に過ぎず、sensor_cnt、FPGA_cnt、及びOS_timeは、情報取得装置602-iが取得する情報に応じて変化する。
図14~
図16に示した計算結果は一例に過ぎず、計算結果は、情報取得装置602-iが取得する情報に応じて変化する。
【0143】
式(1)~式(10)の計算式は一例に過ぎず、情報処理装置601の構成又は条件に応じて別の計算式を用いてもよい。
【0144】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0145】
図2乃至
図18を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1システム時刻を記憶する記憶部と、
前記記憶部に前記第1システム時刻が書き込まれた後に、情報取得装置から、前記情報取得装置が取得した第1情報と、前記第1情報の取得時刻を示す第1時刻情報とを受信し、前記第1情報と前記第1時刻情報とを受信した後に、前記情報取得装置から、第2情報と前記第2情報の取得時刻を示す第2時刻情報とを受信する受信部と、
前記第1システム時刻に基づいて、前記受信部が前記第1情報と前記第1時刻情報とを受信した受信時刻を、第2システム時刻に変換する受信時刻変換部と、
前記第2システム時刻と前記第1時刻情報とに基づいて、前記第2時刻情報を第3システム時刻に変換する時刻情報変換部と、
前記第2システム時刻を前記第1情報に付加し、前記第3システム時刻を前記第2情報に付加する付加部と、
を備えることを特徴とする情報処理装置。
(付記2)
前記時刻情報変換部は、
前記第2時刻情報と前記第1時刻情報との差分を生成する減算部と、
前記第2時刻情報と前記第1時刻情報との差分から、前記第3システム時刻と前記第2システム時刻との差分を計算する第1差分計算部と、
前記第3システム時刻と前記第2システム時刻との差分を前記第2システム時刻に加算することで、前記第3システム時刻を求める第1加算部と、
を含むことを特徴とする付記1記載の情報処理装置。
(付記3)
前記第2時刻情報と前記第1時刻情報との差分と、クロック信号と、前記クロック信号の周波数とを用いて、前記情報取得装置において取得時刻を生成するタイミング信号の周波数を計算する第1周波数計算部をさらに備え、
前記受信時刻変換部は、前記受信部が前記第1情報と前記第1時刻情報とを受信したときに、前記クロック信号に基づいて特定された時刻を、前記受信時刻として用い、
前記第1差分計算部は、前記第2時刻情報と前記第1時刻情報との差分と、前記タイミング信号の周波数とを用いて、前記第3システム時刻と前記第2システム時刻との差分を計算することを特徴とする付記2記載の情報処理装置。
(付記4)
前記受信時刻変換部は、
前記受信時刻と前記クロック信号の周波数とを用いて、前記第2システム時刻と前記第1システム時刻との差分を計算する第2差分計算部と、
前記第2システム時刻と前記第1システム時刻との差分を前記第1システム時刻に加算することで、前記第2システム時刻を求める第2加算部と、
を含むことを特徴とする付記3記載の情報処理装置。
(付記5)
前記第1システム時刻と前記クロック信号とを用いて、前記クロック信号の周波数を計算する第2周波数計算部をさらに備えることを特徴とする付記4記載の情報処理装置。
(付記6)
前記受信部は、前記記憶部に前記第1システム時刻が書き込まれた後に、複数の情報取得装置のうちいずれかの情報取得装置から、前記いずれかの情報取得装置が取得した第1情報と第1時刻情報とを受信し、前記第1情報と前記第1時刻情報とを受信した後に、前記いずれかの情報取得装置から、第2情報と第2時刻情報とを受信し、
前記付加部は、前記第2システム時刻を前記いずれかの情報取得装置から受信した第1情報に付加し、前記第3システム時刻を前記いずれかの情報取得装置から受信した第2情報に付加することを特徴とする付記1乃至5のいずれか1項に記載の情報処理装置。
(付記7)
情報処理装置によって実行される時刻同期方法であって、
前記情報処理装置が、
第1システム時刻が記憶部に書き込まれた後に、情報取得装置から、前記情報取得装置が取得した第1情報と、前記第1情報の取得時刻を示す第1時刻情報とを受信し、
前記第1情報と前記第1時刻情報とを受信した後に、前記情報取得装置から、第2情報と前記第2情報の取得時刻を示す第2時刻情報とを受信し、
前記第1システム時刻に基づいて、前記第1情報と前記第1時刻情報とを受信した受信時刻を、第2システム時刻に変換し、
前記第2システム時刻と前記第1時刻情報とに基づいて、前記第2時刻情報を第3システム時刻に変換し、
前記第2システム時刻を前記第1情報に付加し、
前記第3システム時刻を前記第2情報に付加する、
ことを特徴とする時刻同期方法。
(付記8)
前記情報処理装置は、
前記第2時刻情報と前記第1時刻情報との差分を生成し、
前記第2時刻情報と前記第1時刻情報との差分から、前記第3システム時刻と前記第2システム時刻との差分を計算し、
前記第3システム時刻と前記第2システム時刻との差分を前記第2システム時刻に加算することで、前記第3システム時刻を求めることを特徴とする付記7記載の時刻同期方法。
(付記9)
前記情報処理装置は、
前記第2時刻情報と前記第1時刻情報との差分と、クロック信号と、前記クロック信号の周波数とを用いて、前記情報取得装置において取得時刻を生成するタイミング信号の周波数を計算し、
前記第1情報と前記第1時刻情報とを受信したときに、前記クロック信号に基づいて特定された時刻を、前記受信時刻として用い、
前記第2時刻情報と前記第1時刻情報との差分と、前記タイミング信号の周波数とを用いて、前記第3システム時刻と前記第2システム時刻との差分を計算することを特徴とする付記8記載の時刻同期方法。
(付記10)
前記情報処理装置は、
前記受信時刻と前記クロック信号の周波数とを用いて、前記第2システム時刻と前記第1システム時刻との差分を計算し、
前記第2システム時刻と前記第1システム時刻との差分を前記第1システム時刻に加算することで、前記第2システム時刻を求めることを特徴とする付記9記載の時刻同期方法。
(付記11)
第1システム時刻が記憶部に書き込まれた後に、情報取得装置から、前記情報取得装置が取得した第1情報と、前記第1情報の取得時刻を示す第1時刻情報とを受信し、
前記第1情報と前記第1時刻情報とを受信した後に、前記情報取得装置から、第2情報と前記第2情報の取得時刻を示す第2時刻情報とを受信し、
前記第1システム時刻に基づいて、前記第1情報と前記第1時刻情報とを受信した受信時刻を、第2システム時刻に変換し、
前記第2システム時刻と前記第1時刻情報とに基づいて、前記第2時刻情報を第3システム時刻に変換し、
前記第2システム時刻を前記第1情報に付加し、
前記第3システム時刻を前記第2情報に付加する、
処理をコンピュータに実行させるための時刻同期プログラム。
(付記12)
前記コンピュータは、
前記第2時刻情報と前記第1時刻情報との差分を生成し、
前記第2時刻情報と前記第1時刻情報との差分から、前記第3システム時刻と前記第2システム時刻との差分を計算し、
前記第3システム時刻と前記第2システム時刻との差分を前記第2システム時刻に加算することで、前記第3システム時刻を求めることを特徴とする付記11記載の時刻同期プログラム。
(付記13)
前記コンピュータは、
前記第2時刻情報と前記第1時刻情報との差分と、クロック信号と、前記クロック信号の周波数とを用いて、前記情報取得装置において取得時刻を生成するタイミング信号の周波数を計算し、
前記第1情報と前記第1時刻情報とを受信したときに、前記クロック信号に基づいて特定された時刻を、前記受信時刻として用い、
前記第2時刻情報と前記第1時刻情報との差分と、前記タイミング信号の周波数とを用いて、前記第3システム時刻と前記第2システム時刻との差分を計算することを特徴とする付記12記載の時刻同期プログラム。
(付記14)
前記コンピュータは、
前記受信時刻と前記クロック信号の周波数とを用いて、前記第2システム時刻と前記第1システム時刻との差分を計算し、
前記第2システム時刻と前記第1システム時刻との差分を前記第1システム時刻に加算することで、前記第2システム時刻を求めることを特徴とする付記13記載の時刻同期プログラム。
【符号の説明】
【0146】
101、401、601 情報処理装置
102-1、102-2 センサ
121-1~121-4、122-1~122-4 データ
111、201、301 FPGA
202 OS
211 割り込みコントローラ
212、311 MMIOレジスタ
213 検出部
221 OS時刻
312 加算部
402、602-1~602-N 情報取得装置
411 記憶部
412、621 受信部
413 受信時刻変換部
414 時刻情報変換部
415、625 付加部
603 通信ネットワーク
611 CPU
612 メモリ
613 時刻同期部
622-1~622-N 第1周波数計算部
623 第2周波数計算部
624-1~624-N 変換部
701 センサモジュール
711 圧力センサ
712、812 水晶振動子
713、813 ADコンバータ
714、814、904、1203、1301 カウンタ
715、815、901、1201 書き込み回路
716、816 データバッファ
717 I2Cバスマスタ
721 情報
801 ビデオモジュール
811 撮像装置
821 画像情報
902 判定回路
903 セレクタ
905~911、1204~1206、1302~1304 レジスタ
912、1207、1208、1305、1306 減算器
913、914、1209、1307、1308 DSP
915、916 加算器
1101、1102 タイムフレーム
1111、1112、1701 OS時刻の差分
1202 ロード回路
1210、1309 統計値計算回路
1801 CPU
1802 メモリ
1803 インタフェース