以下、実施形態に係る情報通信システム及び情報通信装置について、図面を参照して説明する。
[構成]
図1は、実施形態に係る情報通信システム100の模式図である。図2は、実施形態に係る情報通信システム100を構成する情報通信装置1の機能ブロック図である。図3は、図2の制御部70の機能ブロック図である。
本実施形態に係る情報通信システム100は、複数の情報通信装置1からなり、各情報通信装置1が情報通信により同期を図る。マスター装置となる情報通信装置1に対し、スレーブ装置となる情報通信装置1が同期する。マスター装置とは、情報通信システム100において他の情報通信装置1と同期される対象となる情報通信装置1である。スレーブ装置とは、情報通信システム100においてマスター装置である他の情報通信装置1に対して同期する情報通信装置1である。マスター装置からスレーブ装置への時刻同期を図るための情報である同期情報の送受信を介してスレーブ装置がマスター装置に同期する。
以下では、マスター装置となる情報通信装置1をマスター装置1aとし、スレーブ装置となる情報通信装置1をスレーブ装置1bとする。マスター装置1aに対するスレーブ装置1bは少なくとも1台であればよいが、図1に示すように、複数台のスレーブ装置1bを備えるシステムでもよい。
マスター装置1aとスレーブ装置1bは、有線又は無線で情報を通信する。無線の通信としては、無線LAN、Bluetooth(登録商標)などの近距離無線通信を用いることができる。ここでは、情報通信装置1は、有線で情報を送信及び受信することで同期を図る例を説明する。
(情報通信装置)
情報通信装置1は、コンピュータを含み構成されており、あらかじめHDDやSSD等の記憶部に記憶されたプログラムを、CPUが実行することにより、後述する制御部において必要な演算を行う。
具体的には、図2に示すように、情報通信装置1は、通信部10、クロック20、時計30、カウンタ40、記憶部50、外部インターフェイス60、制御部70を有する。例えば、各部10〜70は、ハードウェアとして構成される。制御部70はプログラム及びデータを含むソフトウェアにより構成しても良い。制御部70のどの部分をソフトウェアとして構成するかは適宜設計変更可能である。
通信部10は、他の情報通信装置1との間で情報を送受信する。通信部10は、送信器11、受信器12、送信タイミング検出部13、受信タイミング検出部14を有する。
送信器11は、入力された情報を送信する機器である。具体的には、送信器11は、情報を最小構成要素に時系列に分解の上、当該情報を外部へ送信する。情報のパケット長(通信情報量)は任意であり、通信毎に異なっていても良い。情報は、例えば、マイクから入力された音声信号を音声データに変換する入力部から入力される。なお、パケットは、後述するフレームとは異なるレイヤーでのデータ単位であり、1つ以上のパケットの集合が1フレームという関係にある。
受信器12は、外部から情報を受信する機器である。具体的には、受信器12は、情報通信装置1外部から受信した、最小構成要素に時系列に分解された情報を再構成し、情報通信装置1内の他の構成部へ出力する。例えば、音声データを音声信号に変換して、イヤーレシーバやスピーカに出力する再生部に出力する。ここで、情報通信装置1が通信する情報、つまり、送信器11により送信される情報、受信器12により受信される情報には、後述する同期情報、タイミング情報、フレーム情報が含まれる。
情報通信装置1は、送信器11および受信器12の双方を有している。なお、無線による通信を行う場合には、送信器11及び受信器12にそれぞれアンテナを設けても良いし、切り替えスイッチを設けて1本のアンテナを共有しても良い。
送信タイミング検出部13は、送信器11により送信される情報の所定の情報要素位置が、本情報通信装置1の外部へ送信されるタイミングである送信タイミングを検出する。情報要素位置は、時系列に分解された最小構成要素の時系列上の位置である。この送信タイミングは、後述のクロック20のクロック周期(換言すれば、クロック20の発振するパルスの周期)をベースとして検出される。つまり、送信タイミングは、クロック周期の整数倍に基づいて表現される。
また、送信タイミング検出部13は、その検出結果を情報通信装置1内の他の構成へ出力する。ここにいう情報とは、例えばパケットであり、この場合、所定の情報要素位置(以下、所定情報要素位置とする)とは、ビット位置である。例えば、送信タイミング検出部13は、情報が8個の最小構成要素に時系列に分解される場合、3番目の情報要素位置(ビット位置)が送信されるタイミングを検出し、3番目の情報要素位置(ビット位置)が送信されたタイミングを外部へ出力する。
受信タイミング検出部14は、受信器12により受信される情報の所定情報要素位置が、情報通信装置1の外部から受信されるタイミングである受信タイミングを検出する。この受信タイミングは、後述のクロック20のクロック周期(換言すれば、クロック20の発振するパルスの周期)をベースとして検出される。つまり、受信タイミングは、クロック周期の整数倍として表現される。
また、受信タイミング検出部14は、その検出結果を情報通信装置1内の他の構成へ出力する。例えば、受信タイミング検出部14は、情報が8個の最小構成要素に時系列に分解される場合、3番目の情報要素位置(ビット位置)が受信されるタイミングを検出し、3番目の情報要素位置(ビット位置)が受信されたタイミングを外部へ出力する。
なお、上記の送信タイミング及び受信タイミングの例では、何れも同じ最小構成要素の位置を検出することとしたが、例えば、送信機となる情報通信装置1の送信タイミング検出部13は5番目の要素を検出し、受信機となる情報通信装置1の受信タイミング検出部14は8番目の要素を検出するなど、送受信する情報通信装置1間において各タイミング検出で所定関係(例えば間隔(ここでは3つ))を保つのであれば、必ずしも同じ位置を検出しなくても良い。
また、送信タイミングは実際に送信されるタイミングから規定時間前後して検出されても良い。受信タイミングは実際に受信されるタイミングから規定時間前後して検出されても良い。 これらの既定値は通信部内にて固定的でも、外部から静的または動的に設定されても良い。
クロック20は、所定の周波数を発振し、情報通信装置1各部の動作タイミングを与えるための信号を出力する。これにより、情報通信装置1内の各部は、クロック20に同期して動作する。情報通信装置1の全体が単一のクロック20に一斉に同期しても良いし、複数のクロック20にて複数の機能部毎に独立して同期しても良い。このクロック20は、固有の有限な発振周波数許容偏差を有する。つまり、クロック20は、所定の発振周波数(例えば10MHz)に対する誤差(例えば20ppm)を有する。クロック20としては、例えば、水晶振動子などの周波数固定の発振器を用いることができる。
クロック20は、マスター装置1aとスレーブ装置1bとで公称周波数が同じでも、実際には個体差が存在する。すなわち、マスター装置1aとスレーブ装置1bのクロック20の周波数間には周波数偏差が存在する。クロック20は外部より周波数制御信号を入力し、同信号に対応して発振周波数を可変制御しても良い。
時計30は、クロック20の出力信号を源振として刻時し、情報通信装置1の起動からの相対的な時刻を出力する。刻時は入力されたクロック信号の分周波に同期しても良い。時刻は規定の単位にて参照されるが、この規定値は時計内にて固定的でも、外部から静的または動的に設定されても良い。時計30の相対的な時刻の出力は、例えば外部からの参照要求に応じて行う。なお、時計30は、後述する任意のエポックの時刻を出力することができる。カウンタ40は、クロック20が発振するパルスの数(以下、パルス数という。)をカウントする。
記憶部50は、HDD、SSD、メモリ、レジスタなどの記録媒体である。記憶部50は、制御部70で演算を行うのに必要な情報を記憶する。後述の送信タイミング又は受信タイミングに対応する時計30の時刻は、CPU又はソフトウェアを介さず、ハードウェアのみのアクセスで保持できる記録媒体に保持すると良い。ソフトウェアに起因するジッターを排除できるからである。なお、送受信タイミングと時刻との対応付けにおいてソフトウェアのジッターを受けないことが重要であり、送受信タイミングと時刻とが対応付けられた後は、低速なアクセス領域に記憶されても良い。
記憶部50としてのメモリは、任意の情報を入出力し、当該情報を指定された記憶領域へ記憶する。情報の記憶は、外部からの記憶要求により行われるが、その際に記憶する情報と記憶領域が入力される。情報の参照は、外部からの参照要求により行われるが、その際に参照情報の記憶領域が入力され、その入力により指定された記憶領域の情報を出力する。情報の記憶の保持は、本装置の動作中のみであっても、動作停止時も含めて永続的であっても良い。
外部インターフェイス60(以下、外部I/F60ともいう。)は、本情報通信装置1内部と外部を接続し、任意の情報を入出力する。情報としては、例えば、送受信データや時計30の時刻である。外部I/F60は、例えば、記憶部50に記憶させる情報を外部から取得する。また、外部I/F60は、受信タイミング検出部14により検出した受信タイミングから送信タイミング検出部13が検出する送信タイミングまでの時間を外部から取得し、当該時間を後述するスケジューラ75で用いても良い。
なお、マスター装置1aは、少なくとも同期情報を送信する外部I/F60を有する。スレーブ装置1bは、少なくとも同期情報を受信する外部I/F60を有する。但し、マスター装置1aは、同期情報を受信する外部I/F60を有してもよく、スレーブ装置1bは、同期情報を送信する外部I/F60を有しても良い。さらに、情報通信装置1は、内部状態を制御および表示可能な表示装置等のユーザーインターフェイスを有しても良い。
制御部70は、本情報通信装置1各部の動作全般を制御する。制御部70は、マスター装置1aとスレーブ装置1bとで共通する構成と異なる構成がある。マスター装置1aにはスレーブ装置1b特有の構成は不要であり、また、スレーブ装置1bには、マスター装置1a特有の構成は不要である。但し、1つの情報通信装置1でマスター装置1aとしての機能とスレーブ装置1bとしての機能の両方を有していても良い。例えば、2つの情報通信装置1間でマスター装置1aとしての立場、スレーブ装置1bとしての立場が逆転しても良い。また、1つの情報通信装置1が他の情報通信装置1との関係ではマスター装置1aとして機能し、別の情報通信装置1(マスター装置1a)との関係ではスレーブ装置1bとして機能しても良い。このため、図3の制御部70は、マスター装置1aとしての機能と、スレーブ装置1bとしての機能の双方を有する情報通信装置1として示す。
(マスター装置の制御部)
マスター装置1aの制御部70は、主制御部71、送受信データI/F72、通信制御部73、時刻記録部74、スケジューラ75、カウンタ制御部76、カウント数送信制御部77を有する。
主制御部71は、制御部70内の各部と連携されており、制御部70内の各部の動作を統制する。送受信データI/F72は、記憶部50や外部I/F60の情報を情報通信装置1外部へ送受信可能な形式にする。また、送受信データI/F72は、情報通信装置1外部から受信した情報を制御部70及び記憶部50に適した形式にする。
通信制御部73は、通信部10の動作を統制する。通信制御部73は、通信部10と制御部70との間で送受信情報の入出力をする。
時刻記録部74は、送信タイミング検出部13により送信された情報の所定情報要素位置の送信タイミングと、当該送信タイミングにおける時計30の時刻とを対応付けて、記憶部50のメモリに記憶させる。この対応付けは、例えば、時刻記録部74が、送信タイミング検出部13から、送信された情報の所定情報要素位置の送信タイミングが検出された旨の信号を受けて、時計30の時刻を参照し、当該時刻と送信タイミングとを対応付ける。
また、時刻記録部74は、送信タイミングに対応する時刻を、当該送信する情報に載せる時刻付加部でもある。時刻記録部74は、送信と同様に、受信タイミング検出部14により受信された情報の所定要素位置の受信タイミングと、当該受信タイミングにおける時計30の時刻とを対応付けて、メモリに記憶させる。また、時刻記録部74は、受信タイミングに対応する時刻を、情報に載せて送信器11に送信させる。
このように、本実施形態において、「時刻」は、情報の所定情報要素位置の検出された送信タイミング又は受信タイミングに対応する時計30の時刻をいい、「時間」は、当該時刻の差分をいう。
スケジューラ75は、予め設定されたスケジュールで送信器11に情報を送信させる。例えば、スケジューラ75は、一定間隔で同期情報を送信器11に送信させる。当該一定間隔は、例えば、1秒である。スケジューラ75は、情報を受信してから送信するまでのスケジュールを管理する。すなわち、スケジューラ75は、予め設定された受送信間隔で情報を送信する。スケジューラ75は、外部I/F60を介して、情報を送信してから次に送信するまでの間隔である送信間隔、又は情報を受信してから送信するまでの間隔である受送信間隔を変更しても良い。
カウンタ制御部76は、カウンタ40にクロック20のパルス数をカウントさせる。具体的には、図4に示すように、マスター装置1aは、送信間隔ΔTmで同期情報をスレーブ装置1bに少なくとも2回送信する。その際、カウンタ40は、カウンタ制御部76により制御されて、マスター装置1aからスレーブ装置1bへの同期情報の送信間隔ΔTmにおけるクロック20のパルス数をカウントする。この送信間隔ΔTmは、例えば、1秒である。
カウント数送信制御部77は、カウンタ40及びカウンタ制御部76によりカウントされたパルス数を送信器11にスレーブ装置1bへ送信させる。カウント数送信制御部77は、例えば、情報にパルス数を載せて送信器11に送信させる。
(スレーブ装置の制御部)
スレーブ装置1bの制御部70は、主制御部71、送受信データI/F72、通信制御部73、時刻記録部74、スケジューラ75、時刻同期部800を有する。時刻同期部800は、マスター装置1aとスレーブ装置1bとの時刻同期を行う。時刻同期部800は、同期要求部80、周波数取得部82、送受信間隔演算部83、受送信間隔演算部84、伝搬時間算出部85、時差算出部86、同期制御部87、タイミング情報出力部88を有する。各部71〜75については、マスター装置1aの各部71〜75と同じであるので、説明は省略する。
同期要求部80は、マスター装置1aに同期するための情報を要求する信号を、送信器11に送信させる。マスター装置1aに同期するための情報とは、送信間隔ΔTmにおけるパルス数、送信間隔ΔTmを演算するためのマスター装置1aの同期情報の送信時刻、受送信間隔Δtsを演算するためのマスター装置1aの別の同期情報の受信時刻である。
なお、スレーブ装置1bは、マスター装置1aと同様に、カウンタ制御部76を有する。カウンタ40は、カウンタ制御部76により制御されて、マスター装置1aからスレーブ装置1bに送信された同期情報の受信間隔ΔTsにおけるクロック20のパルス数をカウントする。この受信間隔ΔTsは、送信間隔ΔTmに対応する時間間隔である。
周波数取得部82は、送信間隔ΔTmにおけるクロック20のパルス数と、受信間隔ΔTsにおけるクロック20のパルス数とから、周波数fm、fsを取得する。送信間隔ΔTmでのクロック20のパルス数は、マスター装置1aでの1秒におけるマスター装置1aのクロック20のパルス数とすると、当該パルス数はマスター装置1aのクロック20のクロック周波数fmそのものである。また、受信間隔ΔTsは、送信間隔ΔTmに対応する時間間隔であるので、受信間隔ΔTsでのクロック20のパルス数は、スレーブ装置1bのクロック20のクロック周波数fsそのものである。
周波数取得部82は、送信間隔ΔTmが1秒以外であっても、1秒当たりのパルス数に換算しても良い。例えば、送信間隔ΔTmが10m秒である場合、マスター装置1aのクロック20のパルス数を100倍したものが周波数fmであり、スレーブ装置1bのクロック20のパルス数を100倍したものが周波数fsである。
図5は、実施形態に係る情報通信システムにおいて時刻同期するための通信の態様を示す図である。送受信間隔演算部83は、マスター装置1aが同期情報をスレーブ装置1bに送信してから、スレーブ装置1bから送信された同期情報を受信するまでの送受信間隔Δtmを演算する。具体的には、送受信間隔演算部83は、スレーブ装置1bから受信した同期情報の受信時刻と、マスター装置1aがスレーブ装置1bに送信した同期情報の送信時刻との差分を演算する。当該送信時刻及び当該受信時刻は、マスター装置1aから送信された情報に載せられている時刻である。なお、この送信時刻は、マスター装置1aの時刻付加部として機能する時刻記録部74が情報に付加したものである。
図5に示すように、受送信間隔演算部84は、マスター装置1aから同期情報を受信して、マスター装置1aに同期情報を送信するまでの受送信間隔Δtsを演算する。具体的には、受送信間隔演算部84は、マスター装置1aへの同期情報の送信時刻と、マスター装置1aからの同期情報の受信時刻との差分により受送信間隔Δtsを求める。受送信間隔演算部84は、当該送信時刻及び当該受信時刻を、記憶部50又は時刻記録部74から取得する。
伝搬時間算出部85は、マスター装置1aとスレーブ装置1bとの間で伝送する情報の伝搬時間tdを算出する。時差算出部86は、伝搬時間算出部85により求めた伝搬時間tdに基づいて、マスター装置1aとスレーブ装置1bとの間の時差を算出する。具体的には、時差算出部86は、伝搬時間と受送信間隔Δtsとを加算することで時差を算出する。ここでの時差は、図5に示すように、マスター装置1aの送信タイミングからスレーブ装置1bの送信タイミングまでの間隔t0である。
同期制御部87は、時差算出部86により求めた時差に基づいて、時刻を同期させる。具体的には、同期制御部87は、当該時差に基づいて、スレーブ装置1bの時計30の刻時する値を補正する。例えば、同期制御部87は、時計30自体を制御して刻時を補正しても良い。或いは、同期制御部87は、時計30が時刻を出力する際に時差分を補正した時刻を出力するように時計30を制御しても良い。このように同期制御部87は、時差に基づいて時計30の刻時、又は時計30が出力する時刻を補正し、時差がマスター装置1aとスレーブ装置1bの送信タイミングのズレで定義しているので、時差の制御は、送信タイミングの制御と同義である。
タイミング情報出力部88は、タイミング情報を出力する。タイミング情報は、同期制御部87によって同期された同期時刻に基づいて、周期的に発生するタイミング信号である周期タイミングを含む。周期タイミングの周期は、あらかじめ一定の値に設定されている。また、タイミング情報は、各周期タイミングに一意に対応する時刻情報を含む。時刻情報は、同期時刻に相当する。
(フレーム同期部)
さらに、情報通信装置1の制御部70は、マスター装置1a及びスレーブ装置1bに共通の構成として、フレーム同期部900を有する。フレーム同期部900は、フレーム情報のフレームの処理タイミングの同期を行う。
フレーム情報は、図6に示すように、一定長の複数のフレームが時系列で並び、各フレームに並び順を識別するインデックスが付与された情報である。情報通信装置1は、フレーム情報をフレーム単位に分割して処理する。例えば、先頭のインデックスを示す1が付与されたフレームを、フレーム1と称する。フレーム1に続いて、フレーム2、フレーム3、…、が隙間なく又は固定的な空隙を挟んで、時間的に連続するように並ぶ。空隙の一例としては、イーサネット(登録商標)の伝送路の未使用状態を表示、検出することなどに用いられるフレーム間隔(interframe gap)がある。また、チャネル切替の期間として用いられるBLEのInter Frame Spacingなども、空隙の一例である。
フレーム情報としては、例えば、音声データ、映像データとすることができる。各フレームは、一定長、つまり一定数のビットが並んだビット列である。このため、各フレームの処理時間は、装置の処理速度に依存する。但し、本実施形態では、フレーム長に対応するフレームの処理時間を一定のものとして、時間をフレーム長で除算することにより、フレーム同期のための各種演算を行う。つまり、以下の説明では、フレーム長とフレームの時間長とは、同義である。また、一連のフレームの時系列集合をストリームと称し、各情報通信装置1は、一つ以上のストリームを処理する。情報通信装置1内のストリームは、例えば、音声ストリーム、映像ストリームといったように、各々独立した情報が並んでいるものである。
フレーム情報は、フレームの集合の繰り返し構造であっても良い。フレームの集合の繰り返し構造とは、共通のインデックスが繰り返される構造である。例えば、繰り返し構造におけるフレームの数がNならば、フレーム1、2、…Nの後に、フレーム1、2、…Nが連続する。
フレーム同期においては、フレーム情報におけるいずれかのフレームの先頭の時刻、つまりフレーム先頭時刻を、後述するタイミング情報に同期させる。フレームの先頭時刻は、フレームの処理の開始時刻である。フレーム先頭時刻をタイミング情報に同期させることにより、複数の情報通信装置1の間でフレーム先頭時刻を合わせるフレーム同期を実現できる。なお、以下の説明では、フレーム先頭時刻をフレームタイミングと称する場合がある。周期タイミングの間隔で、各フレームが順次処理されても良い。
フレーム同期部900は、タイミング情報とフレーム情報に基づいて、情報通信装置1、つまりマスター装置1a及びスレーブ装置1bが、送受信、入出力等の処理を行うフレームの処理タイミングの同期を行う。
複数の装置において所望の処理がフレーム単位で処理される場合、当該フレームが装置間で同期していることが望ましい。フレームが同期しているとは、異なる情報通信装置1間で処理するフレーム情報において、任意の同一のタイミングを含むフレームの先頭時刻同士の差が、一定の範囲に収まる状態を言う。このような状態を確保することを、フレーム同期と称する。なお、フレームの先頭時刻同士の差をフレーム位相差と称する。図7では、最終的に、全スレーブ装置1bのフレームの先頭時刻が一致しているが、この状態はフレーム位相差0でフレーム同期している、と言える。但し、位相差は必ずしも0である必要はなく、一定の範囲に収まっていれば、僅かなズレは許容される。
フレーム同期部900は、タイミング情報参照部90、フレームタイミング算出部91、インデックス算出部92を有する。タイミング情報参照部90は、時刻同期部800のタイミング情報出力部88からのタイミング情報を参照する。フレームタイミング算出部91は、同期時刻及びフレーム長に基づいて、同期すべきフレームの先頭時刻、つまりフレームタイミングを求める。ここでは、同期時刻は、タイミング情報における時刻情報として得られる。インデックス算出部92は、同期時刻、フレーム長及びフレームタイミングに基づいて、同期すべきフレームのインデックスを求める。フレームタイミング算出部91及びインデックス算出部92は、フレーム情報をフレーム単位で識別して、演算する処理を行う。
なお、制御部70は、周波数偏差演算部を有してもよい。周波数偏差演算部は、二つの情報受信に伴う受信タイミング間隔時間と、対応する二つの情報送信に伴う送信タイミング間隔時間との差分から、送受信間のクロック同士の周波数偏差もしくはその周波数偏差に対応する時差を求める。時刻同期部800は、この周波数偏差に対応する時差の補正も含めて、時刻同期を行うこととしてもよい。
[動作原理]
上記の構成を有する情報通信システム100による時刻同期、フレーム同期の動作原理について、図5〜図13を用いて説明する。
[時刻同期]
まず、時刻同期部800による時刻同期について説明する。時刻同期は、情報通信装置1間のクロック20の時差と、情報通信装置1間の情報の伝搬時間を計測し、この時差を補正することにより行う。
図5に示すように、マスター装置1aがスレーブ装置1bに同期情報を送信し、伝搬時間を経て当該情報をスレーブ装置1bが受信し、当該受信をしてからマスター装置1aに別の同期情報を送信し、同じ伝搬時間を経てマスター装置1aで受信する状況を考え、伝搬時間と時差を定式化する。なお、ここでのマスター装置1aが送信する同期情報、及び、スレーブ装置1bが送信する別の同期情報とは、同期するためにタイミングを計る目的のものであり、当該同期情報にはマスター装置1aの当該同期情報の送信時刻が載せられていても良いが、当該同期情報及び当該別の同期情報の中身は任意である。
ここでは、情報通信システム100においてクロックドメインが単一である場合、すなわち、マスター装置1aのクロック20のクロック周波数と、スレーブ装置1bのクロック20のクロック周波数が同一の周波数fである場合で説明する。この場合、各情報通信装置1で観測された時刻、演算された時間は、他方の情報通信装置1でもそのまま用いることができる。
図5に示すように、マスター装置1aからスレーブ装置1bへの伝搬時間t
dと、スレーブ装置1bからマスター装置1aへの伝搬時間t
dとが同じであるとすると、伝搬時間t
dは、式(1)の通り求める。
また、上記の通り、クロック20間の時差t
0は、マスター装置1aの送信タイミングからスレーブ装置1bの送信タイミングまでの間隔である。この時差t
0は、図5より、式(2)が成立する。
よって、クロック20間の時差t
0は、式(1)を用いて、式(3)の通り求める。
なお、図8に示すように、スレーブ装置1bがマスター装置1aからの情報受信を待たずに、別の情報をマスター装置1aへ送信する場合、スレーブ装置1bにおける受信から送信までの間隔Δtsは負数となるが、スレーブ装置1bがマスター装置1aからの情報受信を待って別の情報をマスター装置1aへ送信する場合と同様に、式(1)及び式(3)が成立する。
スレーブ装置1bの時刻同期部800の同期制御部87は、t0が0となるようにクロック周波数や時刻を繰り返し調整することにより、マスター装置1aに対して時刻同期することができる。
なお、送受信タイミング間にある、伝搬時間や内部遅延は、システムの要求条件などにより無視または補正可能である。また、マスター装置1aから同期情報の送信を開始するのではなく、スレーブ装置1bから同期情報を送信するようにしてもよい。さらに、情報通信に必要なインターフェイス数は1で必要十分であるが、例えば、送信と受信のインターフェイスを独立して実装するなど、複数インターフェイスを同時に使用する構成としてもよい。
[フレーム同期]
次に、フレーム同期部900によるフレーム同期について説明する。まず、各スレーブ装置1bにおいて、任意の時刻から同期を開始し、同期が完了した時点で、直後に同期すべきフレームの先頭時刻、つまりフレームタイミングtkを一意に特定できなければ、フレーム同期が行えない。さらに、同期すべきフレームのフレームインデックスkを一意に特定できることが好ましい場合もある。外部の装置から、フレームタイミングtk、フレームインデックスkが入力されれば、フレーム同期を行うことができる。但し、本実施形態では、このような情報を外部から得ることなく、以下に説明する処理により、各情報通信装置1での時刻同期によって同期した時刻から、フレームタイミングtk、フレームインデックスkを求めて、フレーム同期を行うことができる。
ここで、時刻tの取り扱いを考えるとき、時刻t=0とする任意のタイミングをエポックと称する。時刻は任意のエポックで表現して良いが、時刻同期システム内で統一したエポックを使用する。サブシステムで異なるエポックが使用されている場合は、事前に統一エポックと相互変換するものとする。
同様に、ストリーム上の起源となるフレームの先頭時刻であるフレームタイミングを、フレームエポックと称する。フレームエポックは、仮想的な概念であっても良いが、所望の時刻と一意に対応するものとし、そのフレームタイミングからストリームの先頭のフレームが開始されるものとする。
(関数の定義)
フレーム同期を行うにあたり、必要な関数を定義する。まず、与えられた値が正数の場合に1を、負数の場合に−1を返す関数sgn(x)が、式(4)である。
正負で対称的な床関数sfl(x)を式(5)に示す。式(5)において、[x]は、x以下の最大の整数を返す床関数である。つまり、sfl(x)は、元のxが正負にかかわらず、xの絶対値以下の最大の整数を求め、元の正負を付けて返す関数である。
また、正負で対称的に剰余を求める関数smd(x,y)を式(6)に示す。この関数は、xをyで除した商(整数)にyを乗じた値を、xから引くことにより、余りを求める関数である。ただし、yは0より大きく、整数Nの集合の要素、つまりyは正の整数である。
なお、演算の前提として、各装置における時刻は所定単位時間で統一的に参照される。そして、以降の演算で時刻として小数点以下の数が登場した場合には、その時刻は整数として参照されるように、単位時間変換が行われる。
(基本のフレーム同期)
任意のフレームエポックで同期を行う基本のフレーム同期について、図9を参照して説明する。
(フレームタイミングの算出)
まず、フレームタイミング算出部91によるフレームタイミングの算出について説明する。フレームの時間長がw
Fで一定であるとして、情報通信システム100内で統一してフレームエポックをt
FEと取り決める。すると、t
FE以降の時刻tにおけるストリーム上のフレームのフレームタイミングt
F(0)は、式(7)の通りとなる。つまり、図6に示すように、フレームエポックt
FEから時刻tまでの時間を、時間長w
Fで除した余りが、フレームタイミングt
F(0)から時刻tまでのオフセット時間になる。このオフセット時間を、時刻tから減じることにより、フレームタイミングt
F(0)の時刻を求める。
但し、フレームエポックtFEを取り決める必要がなく、任意のタイミングでフレーム同期を行ってもよい。その場合、tFE=0とおいて、式(7)を簡略化することができる。
時刻tが、時刻同期が完了した時刻、つまり同期完了時刻である場合、フレーム同期が可能となるフレームは、時刻tからフレーム同期に必要な処理時間が経過した以降のフレームタイミングのフレームである。
時刻tにおけるストリーム上のフレームから、xフレーム後のフレームタイミングt
F(x)は、式(8)の通り求めることができる。つまり、フレームの時間長w
Fにxを乗じた値を、フレームタイミングt
F(0)に加算することにより、フレームタイミングt
F(x)を算出することができる。
ここで、フレーム同期に必要な処理時間をd
spとしたとき、フレーム同期可能となる後続のフレーム数xについては、式(9)の関係が成り立つ。つまり、フレームタイミングt
F(0)から時刻tまでのオフセット時間に、処理時間d
spを加算した値は、xフレーム分の時間長、つまり時間長w
Fにxを乗じた値よりも小さい。これにより、フレームタイミングt
F(x)は、時刻同期の同期完了時刻から、フレーム同期に必要な処理時間d
spが経過した後のフレームの先頭時刻となる。
このxの最小値x
MIN、つまり、時刻tにおけるフレームからのフレーム数xの最小値x
MINは、式(10)の通り求める。つまり、フレームタイミングt
F(0)から時刻tまでの時間に、処理時間d
spを加算した値を、フレームの時間長w
Fで除した商(整数)に、1を加算することにより、最小値x
MINを算出する。1を加算しているのは、開始のインデックスが1であるためで、開始のインデックスが0であれば、加算は不要である。
フレーム同期に必要な処理時間をdspとしたとき、フレーム同期可能となる後続のフレーム数の最小値xMINについても、式(9)の関係が成り立つ。この最小値xMINを、式(8)のxに代入することにより、時刻tから最短でフレーム同期可能なフレームのフレームタイミングtF(xMIN)を求める。
(フレームインデックスの算出)
続いて、フレームタイミング算出部91により、同期すべきフレームのフレームインデックスを算出する処理を、図10を参照して説明する。これは、フレーム同期において、フレームタイミングのみならず、フレームインデックスの特定が必要となる場合に行われる。まず、フレーム同期したストリームにおいて、フレームタイミングがフレームエポックtFEと一致するフレームのフレームインデックスをiFEとする。また、フレームxの後続フレームが、フレームx+gであるように、隣接フレーム間でフレームインデックスが順次gずつ増加するものとする。例えば、フレームインデックスが、1、2、3、…、のように、1ずつ増加する場合には、gは1となる。
ここで、時刻tにおいて存在するフレーム、つまり処理中のフレームのフレームインデックスi
Fを、式(11)の通り求める。つまり、フレームエポックt
FEから時刻tまでの時間を、フレームの時間長w
Fで除した商(整数)にgを乗じて、フレームインデックスi
FEを加算する。
なお、フレームタイミングがフレームエポックtFEと一致するフレームのフレームインデックスを取り決める必要がないならば、iFE=0とおいて、式(11)を簡略化することができる。
また、i
Fからxフレーム後のフレームインデックスi
F(x)は、式(12)の通り求める。つまり、xに増分gを乗じた値を、i
Fに加算する。
なお、時刻tから最短でフレーム同期可能なフレームのフレームタイミングtF(xMIN)のフレームインデックスiF(xMIN)は、最小値xMINを、式(12)のxに代入することによって求める。
以上のように、時刻tにおいてフレーム同期可能なフレームのフレームタイミングとフレームインデックスを求めることにより、基本的なフレーム同期を行う。
(周期タイミングとフレームタイミングを一致させるフレーム同期)
上記のように同期時刻が、タイミング情報として周期タイミングとともに得られる場合、また、GNSSの1PPSタイムパルスなどの周期的信号に基づいて、時刻同期を行う場合には、周期タイミングとフレームタイミングを一致させる必要が生じる。
ここで、周期的信号の周期とフレームの時間長が同じならば、常に周期タイミングとフレームタイミングは一致する。しかし、周期とフレームの時間長とが異なる場合には、少なくとも複数タイミングに1回の割合でしか、両タイミングが一致しない。このため、事前に周期タイミングとフレームタイミングとを一致させるタイミングを、取り決めておく必要がある。このような周期タイミングとフレームタイミングとを一致させるフレーム同期を、図11を参照して説明する。
周期的信号の周期がw
cとする。さらに、フレームエポックt
FEが、所望の周期タイミングと一致する時刻をt
CEとする。つまり、t
FE=t
CEである。ここにおいて、周期w
cとフレームの時間長w
Fが同一でない場合、周期タイミングとフレームタイミングが一致するタイミングの隣接間隔w
uを、式(13)の通り求める。ただし、関数lcm( , )は、与えられた二数の最小公倍数を返す関数である。つまり、周期w
cとフレームの時間長w
Fの最小公倍数を求めることにより、両者の先頭時刻が一致する最小の周期を求める。
両タイミングが一致し、その後に再度一致するまでの期間を、隣接間隔wuとする。隣接間隔wuにおいて、両タイミングの時差の時系列は決まった構造を呈し、隣接間隔wuごとに共通の構造を繰り返す。
この繰り返し構造において、ストリーム上に出現するフレーム数N
uは、式(14)の通り求める。なお、N
uは、式(14)より、つまり、二数の一方で最小公倍数を除することにより求めるため、整数となる。
繰り返し構造において、ストリーム上に出現する各フレームのフレームタイミングと、その近傍の周期タイミングとの時差は、フレームごとに固有である。このような繰り返し構造内で、相対的にフレームを識別することが有用である。図11では、各フレームを相対フレームとして表示している。これらの相対フレームの識別のために、式(15)に示すように、1からN
uまでの相対フレームインデックスi
Fr(0)を割り当てることができる。つまり、フレームエポックt
FEが、所望の周期タイミングと一致する時刻t
CEから時刻tまでの時間を、隣接間隔w
uで除した余りを、フレームの時間長w
Fで除した商(整数)に1を加算する。1を加算しているのは、両タイミングが一致する際のフレームインデックスを0ではなく、1としているためである。
よって、i
Fr(0)からxフレーム後のフレームインデックスi
Fr(x)は式(16)の通り求めることができる。なお、上記の基本のフレーム同期と同様に、隣接フレーム間でフレームインデックスが順次gずつ増加するものとする。つまり、i
Fr(0)から1を減算してxに増分gを乗じた値を加算した値を、N
uで除した余りに、1を加算する。
ゆえに、フレームi
Fr(x)におけるフレームタイミングt
Fr(x)は式(17)の通り求めることができる。つまり、時刻t
CEから時刻tまでの時間を、隣接間隔w
uで除した余りから、周期タイミングとフレームタイミングが一致した最近の時刻から時刻tまでのオフセット時間を求める。また、フレームインデックスi
Fr(0)から1を減算した値に、フレームの時間長w
Fを乗ずることにより、周期タイミングとフレームタイミングが一致した最近の時刻から時刻tの直前のフレームの先頭時刻までのオフセット時間を求める。周期タイミングとフレームタイミングが一致した最近の時刻から時刻tまでのオフセット時間から、周期タイミングとフレームタイミングが一致した最近の時刻から時刻tの直前のフレームの先頭時刻までのオフセット時間を減算することにより、時刻tの直前のフレームの先頭時刻から時刻tまでのオフセット時間を求める。そして、時刻tから、時刻tの直前のフレームの先頭時刻から時刻tまでのオフセット時間を減算した値に、フレーム数xにフレームの時間長w
Fを乗じた値を加算することにより、フレームタイミングt
Fr(x)を求める。
なお、相対フレームインデックスを特定する必要がない場合には、フレームタイミングt
Fr(x)を式(18)の通り求めることもできる。
フレーム同期に必要な処理時間をd
SPとしたとき、フレーム同期可能となる後続フレーム数xについては、式(19)の関係が成り立つ。つまり、周期タイミングとフレームタイミングが一致した最近の時刻から時刻tまでのオフセット時間に、処理時間d
SPを加算した値は、xフレーム分の時間長W
Fxよりも小さい。
処理時間d
spについて、フレーム同期可能となる後続のフレーム数の最小値x
MINについても、式(19)の関係が成り立つ。このxの最小値x
MIN、つまり、時刻tにおけるフレームからのフレーム数xの最小値x
MINは、式(20)の通り求める。すなわち、周期タイミングとフレームタイミングが一致した最近の時刻から時刻tまでのオフセット時間に、処理時間d
SPを加算した値を、フレームの時間長w
Fで除した商(整数)に、1を加算することにより、最小値x
MINを算出する。1を加算しているのは、先頭のインデックスが1であるためで、先頭のインデックスが0であれば、加算は不要である。
この最小値xMINを、式(17)又は式(18)のxに代入することにより、時刻tから最短でフレーム同期可能なフレームのフレームタイミングを求める。また、最小値xMINを、式(16)に代入することにより、その際の相対フレームインデックスを求める。周期タイミングを特段に取り決める必要がなく任意である場合、tCE=tFE=0とおいて、式(15)から式(20)を簡略化することができる。
以上のように、式(16)、式(17)又は式(18)、式(19)を用いることにより、時刻tにおいて、フレーム同期可能なフレームのフレームタイミングと相対フレームインデックスを求めることができる。これにより、周期タイミングとフレームタイミングを一致させる必要のあるフレーム同期を行うことができる。
なお、上記の説明では、フレーム情報をインデックスの並びが共通の複数のフレームの繰り返し構造を前提として、フレームインデックスを有限としていた。但し、相対フレームインデックスi
Fr(0)をストリーム上で一意なフレームインデックスに変換することもできる。この場合、フレームタイミングがフレームエポックと一致するフレームのフレームインデックスをi
FEとすれば、式(21)の通り、一意なフレームインデックスi
Fを求めることができる。ここでも、隣接フレーム間でのフレームインデックの増分をgとしている。つまり、時刻t
CEから時刻tまでの時間を隣接間隔w
uで除した商(整数)に、フレーム数N
uを乗じた値に、相対フレームインデックスi
Fr(0)から1を減算した値を加算する。これに増分gを乗じて、さらにフレームインデックスi
FEを加算することにより、一意のフレームインデックスi
Fが算出できる。
なお、iFからxフレーム後の一意なフレームインデックスiF(x)は、式(12)のように求めることができる。このような一意のフレームインデックスは、例えば、リアルタイムで生成されるフレーム情報ではなく、録音済のデータのように、先頭位置が決まっていて、そこから一意に決められるフレームインデックスを同期させる必要がある場合に適している。
[動作]
本実施形態の情報通信システム100の動作を、図12及び図13を用いて説明する。図12は、時刻同期の動作手順を示すフローチャートの一例であり、図13は、フレーム同期の動作手順を示すフローチャートの一例である。
図12に示すように、まず、スレーブ装置1bが、同期要求部80により、マスター装置1aとの同期を要求する信号(以下、同期要求信号ともいう。)をマスター装置1aに送信する(ステップS101:同期要求)。
マスター装置1aが同期要求信号を受信すると、マスター装置1aは、スレーブ装置1bに2つの同期情報を送信し、カウンタ40及びカウンタ制御部76により、当該同期情報の送信間隔ΔTmにおけるクロック20のパルス数pmをカウントし、このパルス数pmを送信器11を介してスレーブ装置1bに送信する(ステップS102:パルス数pmのカウント及び送信)。このパルス数pmは、スレーブ装置1bの周波数取得部82が取得する。
スレーブ装置1bは、マスター装置1aからの2つの同期情報を受信し、カウンタ40及びカウンタ制御部76により、当該同期情報の受信間隔ΔTsにおけるクロック20のパルス数psをカウントする(ステップS103:パルス数psのカウント)。このパルス数psは、周波数取得部82が取得する。なお、ここでは、送信間隔ΔTmを1秒とする。すなわち、パルス数pm、psは、周波数fm、fsであるため、周波数取得部82は、パルス数pm、psの取得により周波数fm、fsを得る。このように、二つの周波数fm、fsが求まったので、スレーブ装置1bは、その周波数fsをマスター装置1aの周波数fmに同期させる周波数同期機能を実行してもよい。
次に、マスター装置1aとスレーブ装置1bとの間で同期情報の送受信を行い、送受信間隔Δtm及び受送信間隔Δtsを演算する(ステップS104:送受信間隔Δtm、受送信間隔Δtsの演算)。
具体的には、図5に示すように、マスター装置1aは、同期情報をスレーブ装置1bに送信する。その際、時刻記録部74により、同期情報の送信タイミングに対応する送信時刻tm1を同期情報に載せておく。スレーブ装置1bは当該同期情報を受信し、当該同期情報に載せられた送信時刻tm1を送受信間隔演算部83が取得する。また、当該同期情報の受信時刻ts1を受送信間隔演算部84が取得する。
スレーブ装置1bは、同期情報の受信後、別の同期情報をマスター装置1aに送信する。その際の送信時刻ts2を受送信間隔演算部84が取得する。マスター装置1aは、当該別の同期情報を受信し、その受信時刻tm2をスレーブ装置1bに送信する。これにより、送受信間隔演算部83が当該受信時刻tm2を取得する。
そして、送受信間隔演算部83は、別の同期情報の受信時刻tm2と、同期情報の送信時刻tm1との差分を演算することで送受信間隔Δtmを得る。受送信間隔演算部84は、別の同期情報の送信時刻ts2と、同期情報の受信時刻ts1との差分を演算することで受送信間隔Δtsを得る。伝搬時間算出部85は、送受信間隔Δtmと受送信間隔Δtsに基づいて、伝搬時間tdを求める(ステップS105:伝搬時間tdの算出)。
時差算出部86は、受送信間隔Δtsと伝搬時間算出部85により算出した伝搬時間tdsとを加算することで時差t0sを算出する(ステップS106:時差の算出)。そして、同期制御部87は、時差算出部86により算出した時差t0sに基づいて、スレーブ装置1bの時計30の時刻を補正し、マスター装置1aと同期する(ステップS107:時刻同期)。例えば、時差t0s>0であれば、同期制御部87は、スレーブ装置1bの時計30が出力する時刻から時差t0sを差し引いた時刻をスレーブ装置1bの時刻とする。
(フレーム同期)
フレーム同期においては、フレームタイミング算出部91が、同期すべきフレームの先頭時刻に対応するフレームタイミングtF(x)を求める。つまり、図13に示すように、フレームタイミング算出部91は、同期が完了した時刻である時刻t及びフレーム長wFに基づいて、時刻tにおけるストリーム上のフレームの先頭時刻であるフレームタイミングtF(0)を求める(ステップ201:フレームタイミングtF(0)の算出)。
そして、フレームタイミング算出部91は、フレームタイミングtF(0)に後続するフレーム数であって、フレーム同期可能な最小のフレーム数xMINを求める(ステップ202:最小フレーム数xMINの算出)。ここでいうフレーム同期可能とは、時刻tからフレーム同期に必要な処理時間dSPが経過した後のフレームであることをいう。さらに、フレームタイミング算出部91は、フレームタイミングtF(0)から、最小フレーム数xMIN後のフレームの先頭時刻であるフレームタイミングtF(XMIN)を求める(ステップ203:フレームタイミングtF(XMIN)の算出)
次に、インデックス算出部92が、同期すべきフレームのインデックスを求める。つまり、インデックス算出部92は、時刻t及びフレーム長wFに基づいて、時刻tにおけるフレームのフレームインデックスiFを求める(ステップ204:フレームインデックスiF算出)。そして、インデックス算出部92は、フレームインデックスiFから、最小フレーム数XMIN後のフレームインデックスiF(XMIN)を求める(ステップ205:フレームインデックスiF(XMIN)算出)。スレーブ装置1bは、このように算出されたフレームタイミングtF(XMIN)で、フレームインデックスiF(XMIN)のフレームを処理することにより、フレーム処理を同期させる(ステップ206:フレーム同期)。
[効果]
(1)実施形態の情報通信システム100は、マスター装置1aとスレーブ装置1bとの間で情報の通信を行う情報通信システム100であって、情報は、マスター装置1a及びスレーブ装置1bにおいて同期させた時刻である同期時刻と、一定長の複数のフレームが時系列で並び、各フレームに並び順を識別するインデックスが付与されたフレーム情報と、を含む。
マスター装置1a及びスレーブ装置1bは、フレームの処理タイミングの同期を行うフレーム同期部900を有し、フレーム同期部900は、同期時刻及びフレーム長に基づいて、同期すべきフレームの先頭時刻であるフレームタイミングを求めるフレームタイミング算出部91を有する。
また、実施形態の情報通信装置1は、フレームの処理タイミングの同期を行うフレーム同期部900を有し、フレーム同期部900は、同期時刻及びフレーム長に基づいて、同期すべきフレームの先頭時刻に対応するフレームタイミングを求めるフレームタイミング算出部91を有する。
このため、外部の装置からのフレームの同期信号がなくても、同期時刻に基づいて、フレームタイミングを同期させ、フレーム間での干渉を防止できる。従って、フレームの同期に必要な装置構成を簡略化することができる。また、フレームの同期信号を通信する必要がなく、不要な通信帯域を削減でき、通信速度の低下を抑制できる。
(2)フレーム同期部900は、フレーム長及びフレームタイミングに基づいて、同期すべきフレームのインデックスを求めるインデックス算出部92を有する。このため、各装置においてフレームのインデックスも同期させて、各装置の間で共通のフレームが同時刻に処理されることが保証される。従って、各装置間で、どのフレームを同期させるかについての情報を送受信して調整を図る場合のような、複雑なフレーム調整作業が不要となる。
(3)フレーム同期部900は、同期すべきフレームを、同期時刻から、フレーム同期部900による同期の処理時間よりも後のフレームとする。このため、同期可能なフレームで同期させることを保証できる。なお、上記のように最小値xMINを用いることにより、短時間でのフレーム同期を実現できる。
(4)フレーム情報は、インデックスの並びが共通の複数のフレームが繰り返される繰り返し構造である。このため、リアルタイムに生成されるフレーム情報のように、有限のインデックスを繰り返し用いる情報を処理する場合に適している。
(5)フレーム同期部900は、周期的に発生するタイミング信号である周期タイミングと、各周期タイミングに一意に対応する時刻情報とを含むタイミング情報に基づいて、周期タイミングとフレームタイミングを同期させる。このため、外部からタイミング情報を得ることにより、フレーム同期を行うことができる。なお、外部からのタイミング情報による場合には、時刻同期部800を省略してもよい。
[他の実施形態]
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。
同期時刻が得られれば、フレーム同期を実行できるため、同期時刻を外部のクロックソースから取得することにして、時刻同期部800を省略したり、タイミング情報を外部から取得することにして、タイミング情報出力部88を省略してもよい。