(57)【要約】【課題】高精度な時刻同期を実現することのできる通信装置を得る。【解決手段】イニシエータノード１００は、ＳｐａｃｅＷｉｒｅエンコード部１０５のＮＵＬＬ送信を止めた後に同期データと同期データの送信時刻とをＳｐａｃｅＷｉｒｅエンコード部１０５に送信する同期データ送信部を備える。ターゲットノード２００は、同期データの送信時刻と、同期データの受信時刻と、イニシエータノード１００とターゲットノード２００とが時刻同期している状態での送信時刻と受信時刻の差とを用いて、ターゲットノード２００の時刻を補正する時刻補正部を備える。【選択図】図１
2015198399.tif 000002
【特許請求の範囲】
【請求項１】
ＳｐａｃｅＷｉｒｅで接続されたイニシエータノードとターゲットノードからなる通信装置において、
前記イニシエータノードは、ＳｐａｃｅＷｉｒｅパケットのエンコードを行って前記ターゲットノードに送信するＳｐａｃｅＷｉｒｅエンコード部と、当該ＳｐａｃｅＷｉｒｅエンコード部のＮＵＬＬ送信を止めた後に同期データと当該同期データの送信時刻とを前記ＳｐａｃｅＷｉｒｅエンコード部に送信する同期データ送信部とを備え、
前記ターゲットノードは、前記同期データの送信時刻と、前記同期データの自ターゲットノードにおける受信時刻と、前記ターゲットノードと前記イニシエータノードとが時刻同期している状態での送信時刻と受信時刻の差とを用いて、前記自ターゲットノードの時刻を補正する時刻補正部を備えたことを特徴とする通信装置。
【請求項２】
前記同期データとして、同期開始を示すヘッダと終端部であるＥＯＰ（Ｅｎｄ  ｏｆ  Ｐａｃｋｅｔ）とを含むＳｐａｃｅＷｉｒｅパケットを用い、
前記同期データ送信部は、前記ＥＯＰの送信時刻を通知すると共に、前記時刻補正部は、前記通知された前記ＥＯＰの送信時刻と、前記ＥＯＰの受信時刻と、前記ターゲットノードと前記イニシエータノードとが時刻同期している状態での送信時刻と受信時刻との差とを用いて補正を行うことを特徴とする請求項１記載の通信装置。
【請求項３】
前記ＳｐａｃｅＷｉｒｅエンコード部は送信ＦＩＦＯを備え、当該送信ＦＩＦＯのデータに基づいてＳｐａｃｅＷｉｒｅパケットのエンコードを行うと共に、
前記同期データ送信部は、前記ＳｐａｃｅＷｉｒｅエンコード部に対して、前記送信ＦＩＦＯをフル状態とするデータ量を送信することでＮＵＬＬ送信を止めることを特徴とする請求項１または請求項２記載の通信装置。
【請求項４】
前記同期データ送信部は、ＳｐａｃｅＷｉｒｅの状態遷移で一時的に時刻同期モードに遷移させて前記ＳｐａｃｅＷｉｒｅエンコード部のＮＵＬＬ送信を止めることを特徴とする請求項１または請求項２記載の通信装置。
【請求項５】
前記同期データ送信部は、時刻同期動作を示すヘッダを付加したデータを送信し、前記時刻補正部は、前記データのヘッダをデコードすることで時刻同期動作を開始すること特徴とする請求項１から請求項４のうちのいずれか１項記載の通信装置。
【請求項６】
前記同期データ送信部は、ＳｐａｃｅＷｉｒｅで規定されているデータフォーマット以外の、時刻同期動作を開始および停止するためのコードを示すデータを送信し、前記時刻補正部は、当該データをデコードして時刻同期動作を行うことを特徴とする請求項１記載の通信装置。
【請求項７】
前記同期データ送信部は、前記ＥＯＰの送信時刻を複数回のＴｉｍｅ−Ｃｏｄｅで送信し、前記時刻補正部は、当該複数回のＴｉｍｅ−Ｃｏｄｅで受信したビット分の精度で時刻補正動作を行うことを特徴とする請求項２記載の通信装置。
【請求項８】
前記イニシエータノードと前記ターゲットノードとの間にＳｐａｃｅＷｉｒｅルータを設け、前記ターゲットノードを複数備えたことを特徴とする請求項１から請求項７のうちのいずれか１項記載の通信装置。
【請求項９】
前記ＳｐａｃｅＷｉｒｅルータは、リング型のトポロジで構成された複数のＳｐａｃｅＷｉｒｅルータからなることを特徴とする請求項８記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主として、人工衛星搭載用のデータ処理装置などのデータ通信を行う通信装置に関する。
【背景技術】
【０００２】
人工衛星搭載用のデータ通信処理装置間の通信として、従来はＭＩＬ―ＳＴＤ―１５５３Ｂ規格やＲＳ４２２やＬＶＤＳによる３線式シリアル通信など多種多様な通信方法が用いられてきた。このような通信方法の乱立は人工衛星開発のコストの増加、開発期間の長期間化に繋がる要因と考え、人工衛星内の通信方法の統一を目指した通信規格としてＳｐａｃｅＷｉｒｅが策定された。非特許文献１に示すＳｐａｃｅＷｉｒｅ規格書ではＳｐａｃｅＷｉｒｅの通信規格が定められており、ＳｐａｃｅＷｉｒｅとしてＯＳＩ参照モデルでいうところの物理層からネットワーク層までが決められている。ＳｐａｃｅＷｉｒｅは全二重のシリアル通信方式であり、通常データの他にデータ終端を示す、ＥＯＰ（Ｅｎｄ  ｏｆ  Ｐａｃｋｅｔ）、Ｔｉｍｅ−Ｃｏｄｅ、通信リンクを維持するためのＮＵＬＬを送信する。Ｔｉｍｅ−Ｃｏｄｅは送信側がネットワーク上のターゲット機器に対してブロードキャストでデータを送るためのデータで、各通信インタフェースでのＦＩＦＯに入れられないため小さい遅延時間で送信ができる。そのため時刻配信用に使うことが有効であるが、その使用方法までは規格では定められていない。
【０００３】
衛星内の観測装置がある自然現象や時間を記録しておくために各観測装置は時計を持つ必要がある。また、人工衛星内を制御する装置は衛星の状態変化を記録しておく時計を持つ必要がある。この時計はＴｉｍｅＰｕｌｓｅ信号を基準としてカウンタで時間が刻まれる。これらのＴｉｍｅＰｕｌｓｅは各装置の持つ発振器でカウントアップされる時刻カウンタで一定カウンと値に達すると生成されることが一般的である。しかしながら、これらの発振器は、発振器ごとの製造ばらつきや温度変化による周波数変化により、長時間経過すると各観測装置の時計はずれてきてしまい、正確な事象記録ができなくなる。そこで衛星制御計算機を中心にすべての搭載装置の時刻を同期させる方法が必要となるが、ＳｐａｃｅＷｉｒｅを装置間のネットワークとして用いる場合、衛星制御計算機からＴｉｍｅ−Ｃｏｄｅを送信し、各観測装置はＴｉｍｅ−Ｃｏｄｅの受信タイミングをもって同期信号とする方法が取られている。従来、このような技術として、例えばＴｉｍｅ−Ｃｏｄｅを受信したタイミングでパルスを発生させて、時刻同期のタイミングとするシステムがあった（例えば、特許文献１参照）。また、非特許文献２には、ルータを経由して装置を接続する場合、Ｔｉｍｅ−Ｃｏｄｅにどの程度の遅延が生じるかを解析しその発生原因について示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−３９３４９号公報
【非特許文献】
【０００５】
【非特許文献１】ＳｐａｃｅＷｉｒｅ規格書“ＥＣＳＳ−Ｅ−ＳＴ−５０−１２Ｃ”
【非特許文献２】Ｍ．Ｓｕｅｓｓ（２０１３），“ＳｐａｃｅＷｉｒｅ  Ｔｉｍｅ−Ｃｏｄｅ  Ｌａｔｅｎｃｙ  ａｎｄ  Ｊｉｔｔｅｒ”，Ｅｕｒｏｐｅａｎ  Ｓｐａｃｅ  Ａｇｅｎｃｙ  ＥＳＴＥＣ，  Ｉｎｔｅｒｎａｔｉｏｎａｌ  ＳｐａｃｅＷｉｒｅ  Ｃｏｎｆｅｒｅｎｃｅ  ２０１３
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載されているような従来のシステムでは、Ｔｉｍｅ−Ｃｏｄｅを受信したタイミングでパルスを発生させて、時刻同期のタイミングとするため、高精度な時刻同期が実現できないという問題があった。その理由は、Ｔｉｍｅ−ＣｏｄｅはＳｐａｃｅＷｉｒｅ上のネットワークで伝送する場合、送信するごとに確率的に揺らぎが生じてしまうという性質があるからである。このＴｉｍｅ−Ｃｏｄｅの揺らぎはＳｐａｃｅＷｉｒｅのプロトコル規定から生じるものであるため減じることはできない。
図２に示すような構成でＳｐａｃｅＷｉｒｅのエンコード部１０５とＳｐａｃｅＷｉｒｅデコード部２０１はシリアル通信を行うが、ＳｐａｃｅＷｉｒｅのデータリンク初期化後の動作は図６のように状態遷移で通信を行う。なお、図２中の構成については実施の形態１で説明する。
【０００７】
ＳｐａｃｅＷｉｒｅでは、図６のフローチャートに示すように、送信ＦＩＦＯ１０５ａにデータがない場合（ステップＳＴ２：ＮＯ）や、Ｔｉｍｅ−Ｃｏｄｅの送信要求がない場合（ステップＳＴ１：ＮＯ）はＮＵＬＬを送信する。ＮＵＬＬは８ビットのデータで８ビットを１クロックずつ送信するため８クロック要する。このＮＵＬＬ送信中はＴｉｍｅ−Ｃｏｄｅやデータは送信できない。すなわちＴｉｍｅ−Ｃｏｄｅ送信要求をした場合、送信は０クロックから８クロック待たされることになる。何クロック待たされるかは一様確率分布となる。この待ち時間はＴｉｍｅ−Ｃｏｄｅ伝送の揺らぎの原因となる。さらに１つのルータを経由して装置を接続する場合、このＳｐａｃｅＷｉｒｅエンコード部が１つ増えるためにこの揺らぎが２つ重ね合わられることになる。ルータが増えるごとに揺らぎが重ね合わせられ大きくなっていくことになる。
【０００８】
Ｔｉｍｅ−Ｃｏｄｅはブロードキャストで送信されるため、複数の装置がＴｉｍｅ−Ｃｏｄｅを受信するが、ＳｐａｃｅＷｉｒｅのネットワークトポロジによって各装置が何個のＳｐａｃｅＷｉｒｅルータを経由しているか異なる。そのため装置ごとに同期の揺らぎの大きさも異なるため装置ごとに時計がずれることになる。
【０００９】
この発明は上記のような課題を解決するためになされたもので、高精度な時刻同期を実現することのできる通信装置を得ることを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る通信装置は、ＳｐａｃｅＷｉｒｅで接続されたイニシエータノードとターゲットノードからなる通信装置において、イニシエータノードは、ＳｐａｃｅＷｉｒｅパケットのエンコードを行ってターゲットノードに送信するＳｐａｃｅＷｉｒｅエンコード部と、ＳｐａｃｅＷｉｒｅエンコード部のＮＵＬＬ送信を止めた後に同期データと同期データの送信時刻とをＳｐａｃｅＷｉｒｅエンコード部に送信する同期データ送信部とを備え、ターゲットノードは、同期データの送信時刻と、同期データの自ターゲットノードにおける受信時刻と、ターゲットノードとイニシエータノードとが時刻同期している状態での送信時刻と受信時刻の差とを用いて、自ターゲットノードの時刻を補正する時刻補正部を備えたものである。
【発明の効果】
【００１１】
この発明の通信装置は、ＳｐａｃｅＷｉｒｅエンコード部のＮＵＬＬ送信を止めた後に同期データと同期データの送信時刻とをターゲットノードに送信し、この送信時刻と、ターゲットノード側の受信時刻と、時刻同期している場合の送信時刻と受信時刻との差とを用いてターゲットノードの時刻を補正するようにしたので、高精度な時刻同期を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の形態１による通信装置を示す構成図である。
【図２】この発明の実施の形態１による通信装置のＳｐａｃｅＷｉｒｅエンコード部とＳｐａｃｅＷｉｒｅデコード部の詳細を示す構成図である。
【図３】この発明の実施の形態１による通信装置のＳｐａｃｅＷｉｒｅパケットのフォーマットを示す説明図である。
【図４】この発明の実施の形態１による通信装置の動作を示すフローチャートである。
【図５】この発明の実施の形態１による通信装置のイニシエータノードとターゲットノードの時刻タイミングを示すタイミングチャートである。
【図６】この発明の実施の形態１による通信装置のＴｉｍｅ−ＣｏｄｅとデータとＮＵＬＬの送信処理を示す説明図である。
【図７】この発明の実施の形態２による通信装置を示す構成図である。
【図８】この発明の実施の形態３による通信装置を示す構成図である。
【図９】この発明の実施の形態４による通信装置を示す構成図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、この発明の実施の形態１による通信装置を示す構成図である。
図１に示す通信装置は、イニシエータノード１００とターゲットノード２００がＳｐａｃｅＷｉｒｅ３００で接続され、通信を行う。イニシエータノード１００は、時刻を管理する主系機器であり、ターゲットノード２００は、イニシエータノード１００によって時刻管理される従系機器である。
【００１４】
イニシエータノード１００は、データ送信部１０１、時刻発生部１０２、同期開始データ送信部１０３、Ｔｉｍｅ−Ｃｏｄｅ送信部１０４、ＳｐａｃｅＷｉｒｅエンコード部１０５を備える。データ送信部１０１は、イニシエータノード１００としてターゲットノード２００へのデータ送信を行う処理部である。時刻発生部１０２は、イニシエータノード１００における時刻データを発生する処理部であり、発振器１０２ａと時刻カウンタ１０２ｂを備えている。発振器１０２ａは、予め定められた周波数のデータを発生する発振器であり、時刻カウンタ１０２ｂは、発振器１０２ａからの発信周波数をカウントしてクロックとして出力するカウンタである。同期開始データ送信部１０３は、ターゲットノード２００との時刻同期を行うための同期開始データを送信する処理部であり、計測カウンタ部１０３ａと開始データ送信部１０３ｂを備えている。計測カウンタ部１０３ａは、時刻発生部１０２からのカウント値をカウントして同期データのＥＯＰの送信時刻を検出するためのカウンタであり、開始データ送信部１０３ｂは、計測カウンタ部１０３ａのカウント値を出力する処理部である。Ｔｉｍｅ−Ｃｏｄｅ送信部１０４は、時刻発生部１０２の時刻と開始データ送信部１０３ｂからの同期データをＴｉｍｅ−Ｃｏｄｅとして送信する処理部である。ＳｐａｃｅＷｉｒｅエンコード部１０５は、ＳｐａｃｅＷｉｒｅとしてのシリアルデータにエンコードする処理部である。なお、ＳｐａｃｅＷｉｒｅエンコード部１０５の内部構成については後述する。また、データ送信部１０１〜Ｔｉｍｅ−Ｃｏｄｅ送信部１０４で、ＳｐａｃｅＷｉｒｅエンコード部１０５のＮＵＬＬ送信を止めた後に同期データとこの同期データの送信時刻をＳｐａｃｅＷｉｒｅエンコード部１０５に送信する同期データ送信部が構成されている。
【００１５】
ターゲットノード２００は、ＳｐａｃｅＷｉｒｅデコード部２０１、データデコード部２０２、データ受信部２０３、リセット部２０４、時刻生成部２０５、処理回路部２０６を備えている。ＳｐａｃｅＷｉｒｅデコード部２０１は、ＳｐａｃｅＷｉｒｅ３００を介して受け取ったイニシエータノード１００からのＳｐａｃｅＷｉｒｅパケットをデコードする処理部であり、その詳細については後述する。データデコード部２０２は、ＳｐａｃｅＷｉｒｅデコード部２０１でデコードされたデータに基づいて、時刻同期動作の開始および終了を判定する処理部である。データ受信部２０３は、データデコード部２０２からのＳＴＯＰ信号とＳＴＡＲＴ信号とに基づいてＳｐａｃｅＷｉｒｅデコード部２０１からのデータ受信を行う処理部である。リセット部２０４は、データデコード部２０２からのＳＴＯＰ信号に基づいてＥＯＰ待ちを行い、ＳｐａｃｅＷｉｒｅデコード部２０１からＥＯＰが出力された場合は、この情報を時刻生成部２０５に送出する処理部である。
【００１６】
時刻生成部２０５は、ターゲットノード２００における時刻生成を行う処理部であり、発振器２０５ａ、計測カウンタ部２０５ｂ、遅れ補正部２０５ｃ、プリセット値２０５ｄ、時刻カウンタ２０５ｅを備えている。ここで、発振器２０５ａおよび時刻カウンタ２０５ｅは、イニシエータノード１００の時刻発生部１０２における発振器１０２ａおよび時刻カウンタ１０２ｂと同様に、ターゲットノード２００における時刻を生成するための処理部である。計測カウンタ部２０５ｂは、リセット部２０４からのＳＴＡＲＴ信号と時刻カウンタ２０５ｅからのＳＴＯＰ信号に基づいてＥＯＰの受信時刻をカウントするためのカウンタである。遅れ補正部２０５ｃは、計測カウンタ部２０５ｂでカウントされたＥＯＰの受信時刻と、予め計測されたイニシエータノード１００とターゲットノード２００とが時刻同期している状態での送信時刻と受信時刻の差と、データ受信部２０３で受信されたイニシエータノード１００におけるＥＯＰの送信時刻とに基づいて、遅れ補正値を算出する処理部である。プリセット値２０５ｄは、時刻カウンタ２０５ｅがカウントする際のプリセット値であり、遅れ補正部２０５ｃによって補正される値である。また、データデコード部２０２〜時刻生成部２０５によって、ターゲットノード２００の時刻を補正する時刻補正部が構成されている。
また、処理回路部２０６は、ターゲットノード２００における各種処理を行う回路である。
【００１７】
図２は、ＳｐａｃｅＷｉｒｅエンコード部１０５とＳｐａｃｅＷｉｒｅデコード部２０１の構成図である。図示のように、ＳｐａｃｅＷｉｒｅエンコード部１０５は、送信ＦＩＦＯ１０５ａとシリアル化送信部１０５ｂを備えている。送信ＦＩＦＯ１０５ａは、データを一時的に格納し、送出する先入れ先出しメモリである。シリアル化送信部１０５ｂは、Ｔｉｍｅ−Ｃｏｄｅまたは送信ＦＩＦＯ１０５ａからのデータをシリアル化してＳｐａｃｅＷｉｒｅ３００に出力する処理部である。ＳｐａｃｅＷｉｒｅデコード部２０１は、パラレル化受信部２０１ａと受信ＦＩＦＯ２０１ｂを備えている。パラレル化受信部２０１ａは、ＳｐａｃｅＷｉｒｅ３００からのシリアルパケットをパラレルデータとして出力する処理部であり、受信ＦＩＦＯ２０１ｂは、受信データを一時的に格納する先入れ先出しメモリである。
【００１８】
次に、実施の形態１の通信装置の動作について説明する。
データ送信部１０１は、ＳｐａｃｅＷｉｒｅエンコード部１０５のＦＵＬＬ信号をモニタしながらＤＡＴＡを送る。ＤＡＴＡの終端にＥＯＰを送信する。ＳｐａｃｅＷｉｒｅエンコード部１０５は、受信した８ｂｉｔデータをシリアルデータに変換し、ＳｐａｃｅＷｉｒｅ規格に従った信号を発生させてターゲットノード２００に送る。ターゲットノード２００のＳｐａｃｅＷｉｒｅデコード部２０１は、シリアルデータをパラレル化受信部２０１ａでパラレルデータに変換した後、受信ＦＩＦＯ２０１ｂに蓄積し、データ受信部２０３が受け取るのを待つ。データ受信部２０３はＳｐａｃｅＷｉｒｅデコード部２０１からのＥＭＰＴＹ信号をモニタし、ＥＭＰＴＹ信号がデアサートされた場合、データ受信可能と認識しＳｐａｃｅＷｉｒｅデコード部２０１よりデータを受信する。
【００１９】
イニシエータノード１００の持つ時刻発生部１０２における時刻カウンタ１０２ｂが基準となる時刻を示し、ターゲットノード２００の持つ時刻生成部２０５の時刻カウンタ２０５ｅは、当初はイニシエータノード１００の時刻カウンタ１０２ｂと同期して動作する。時刻カウンタ２０５ｅは５０ＭＨｚの発振器２０５ａの発生するクロックによりカウントアップし、プリセット値２０５ｄに設定された値に達すると、Ｔｉｍｅ＿Ｐｕｌｓｅを発生させリセットされる。Ｔｉｍｅ＿Ｐｕｌｓｅは、処理回路部２０６をスケジュールに従って駆動するためのタイミング信号として使用される。時間が経過すると、５０ＭＨｚの発振器１０２ａと５０ＭＨｚの発振器２０５ａの固有差によりずれが生じていく。本実施の形態ではこのずれを補正する。
【００２０】
５０ＭＨｚの発振器１０２ａを基準に動作をしているイニシエータノード１００と、同じく５０ＭＨｚの発振器２０５ａを基準に動作をしているターゲットノード２００が、２ＭＨｚのＳｐａｃｅＷｉｒｅ３００で接続されている構成において、イニシエータノード１００の時刻基準信号Ｔｉｍｅ＿Ｐｕｌｓｅとターゲットノード２００の時刻基準信号Ｔｉｍｅ＿Ｐｕｌｓｅとを合わせる。イニシエータノード１００とターゲットノード２００の発振器１０２ａと発振器２０５ａの周波数は５０ＭＨｚのデバイスを使用するが、製造ばらつきや温度変化によって徐々にずれて行き、やがては時刻カウンタ１０２ｂと時刻カウンタ２０５ｅが異なり、Ｔｉｍｅ＿Ｐｕｌｓｅがずれてくる。そこでＴｉｍｅ＿Ｐｕｌｓｅを再度同じタイミングとするためにイニシエータノード１００から同期動作の開始を意味するヘッダ４００ａを有するＳｐａｃｅＷｉｒｅパケット４００をターゲットノード２００へ送信する。図３にＳｐａｃｅＷｉｒｅパケット４００のフォーマットを示す。図示のように、ＳｐａｃｅＷｉｒｅパケット４００は、ヘッダ４００ａとデータ部４００ｂと終端部（ＥＯＰ）４００ｃで構成されている。
【００２１】
また、図４はイニシエータノード１００とターゲットノード２００の動作を示す説明図である。図４では、ステップＳＴ１１で、イニシエータノード１００から同期開始ヘッダ付きデータが送信されている。
【００２２】
ターゲットノード２００は当該データを受信後、データデコード部２０２でそのヘッダをデコードして同期動作が開始したことを認識する。同期動作の開始にあたり、データ受信部２０３に対してＳＴＯＰ信号を出力し、以降のデータを受信しないようにする（ステップＳＴ２１）。つまりＳｐａｃｅＷｉｒｅデコード部２０１のＥＭＰＴＹ信号が非有効になってデータが取得可能な状態になってもデータを取得しないようにする（ステップＳＴ２２）。また、リセット部２０４にもＳＴＯＰ信号を出力して当該データのＳｐａｃｅＷｉｒｅパケットの終端部のＥＯＰ検出待ちを行うようにする（ステップＳＴ２３）。
【００２３】
このようにした状態でイニシエータノード１００は、データ送信部１０１がＳｐａｃｅＷｉｒｅエンコード部１０５にＳｐａｃｅＷｉｒｅパケット４００を送信し続ける（ステップＳＴ１２）。ＳｐａｃｅＷｉｒｅエンコード部１０５とＳｐａｃｅＷｉｒｅデコード部２０１のＦＩＦＯが一杯になると、イニシエータノード１００のＳｐａｃｅＷｉｒｅエンコード部１０５は、データ送信部１０１に対してＦＵＬＬ信号を出力する。これによりデータ送信部１０１は、データの送信を停止し、また、次の送信データはＥＯＰとする（ステップＳＴ１３）。
【００２４】
次に、イニシエータノード１００の同期開始データ送信部１０３は、Ｔｉｍｅ−Ｃｏｄｅとして０ｘＦＦをターゲットノード２００に送信する（ステップＳＴ１４）。
ターゲットノード２００は、Ｔｉｍｅ−Ｃｏｄｅとして０ｘＦＦを受信するとデータデコード部２０２は、ＳＴＡＲＴ信号をデータ受信部２０３に送信する。データ受信部２０３は、ＳＴＡＲＴ信号を受信すると、ＳｐａｃｅＷｉｒｅデコード部２０１からデータを受信し続ける（ステップＳＴ２４）。データ受信部２０３は、ＳｐａｃｅＷｉｒｅ３００上の図示しないＳｐａｃｅＷｉｒｅルータを含むＳｐａｃｅＷｉｒｅデコード部２０１の受信ＦＩＦＯ２０１ｂが一杯にならないように十分高速にデータを受信し続ける。
【００２５】
イニシエータノード１００は、送信ＦＩＦＯ１０５ａのＦＵＬＬ信号がデアサートされたときに終端部（ＥＯＰ）４００ｃのデータを送信する。イニシエータノード１００の同期開始データ送信部１０３は、時刻生成部１０２からのＴｉｍｅ＿ＰｕｌｓｅをＳＴＡＲＴ信号としてＥＯＰの送信時刻Ｔ１を測定する（ステップＳＴ１５）。一方、ターゲットノード２００の時刻生成部２０５では、時刻カウンタ２０５ｅの生成するＴｉｍｅ＿Ｐｕｌｓｅをスタートとして、リセット部２０４が受信したＥＯＰに基づき、ＥＯＰ受信時刻Ｔ３を計測する（ステップＳＴ２５）。装置構成時初期のイニシエータノード１００とターゲットノード２００のＴｉｍｅ＿Ｐｕｌｓｅがそろった状態でのＴ３―Ｔ１をＴ２としておく。Ｔ２は固定値として使用する。
【００２６】
時刻同期が外れていくとＴ３−Ｔ１とＴ２が異なる値を取るようになる。ターゲットノード２００側の発振器２０５ａが遅れると、Ｔ３−Ｔ１＜Ｔ２となり、ターゲットノード２００側の発振器２０５ａが速くなるとＴ３−Ｔ１＞Ｔ２となる。イニシエータノード１００は、Ｔ１の値をＴｉｍｅ−Ｃｏｄｅでターゲットノード２００に送信し（ステップＳＴ１６）、ターゲットノード２００側は、遅れ補正部２０５ｃが（Ｔ３−Ｔ１）−Ｔ２を計算し、結果をプリセット値２０５ｄに１回のみ加える（ステップＳＴ２６）。時刻カウンタ２０５ｅは修正されたプリセット値２０５ｄに達すると０に戻り、Ｔｉｍｅ＿Ｐｕｌｓｅのタイミングが補正される。
この様子を示したのが図５のタイミングチャートである。図示例では、ターゲットノード２００側のタイミングがＮ−４遅れているため、Ｎ−４のタイミングでプリセット値のタイミングが補正される。
【００２７】
ＳｐａｃｅＷｉｒｅエンコード部１０５は、図６に示すように、データとＮＵＬＬ、Ｔｉｍｅ−Ｃｏｄｅを送るためのフローチャートに従ってＳｐａｃｅＷｉｒｅのリンクレート２ＭＨｚの１クロックごとに処理が進むことになる。従来のＴｉｍｅ−Ｃｏｄｅを検出してＴｉｍｅ＿Ｐｕｌｓｅを発生させて同期を取る方法の場合、Ｔｉｍｅ−Ｃｏｄｅを送信するタイミングにデータあるいはＮＵＬＬ送信している場合はＴｉｍｅ−Ｃｏｄｅの送信処理は待たされることになる。データの送信途中の場合は最大１０クロック、５０００ｎｓの待ち時間が発生する。一方で、ＮＵＬＬ送信あるいはデータの送信が完了した直後にＴｉｍｅ−Ｃｏｄｅを送信する場合は待ち時間なしで送信が可能となる。従って、Ｔｉｍｅ−Ｃｏｄｅで時刻同期を行う場合の精度は５０００ｎｓとなる。
【００２８】
一方、本実施の形態の場合、ＳｐａｃｅＷｉｒｅデコード部２０１でＳｐａｃｅＷｉｒｅのデータとターゲットノード２００のクロック５０ＭＨｚでデータの非同期の受け渡しがあるためＥＯＰ検出時間に揺らぎが生じることになる。この揺らぎはターゲットノード２００の５０ＭＨｚのクロックが１クロック遅れる場合と遅れない場合の揺らぎで発生するため、２０ｎｓのゆらぎとなる。また、ＳｐａｃｅＷｉｒｅエンコード部１０５とイニシエータノード１００でのＥＯＰの非同期の受け渡しが生じる。ＳｐａｃｅＷｉｒｅエンコード部１０５がＥＯＰを送出したタイミングをイニシエータノード１００のクロック５０ＭＨｚでサンプリングして検出するため２０ｎｓの揺らぎが発生する。従って本実施の形態の場合、４０ｎｓでの精度での時刻同期を実現する。このことから従来構成の５０００ｎｓの精度と比較して本実施の形態では４０ｎｓでの精度での時刻同期を実現し、１２５倍の精度での時刻同期を実現することになる。
【００２９】
なお、イニシエータノード１００において、ＳｐａｃｅＷｉｒｅの状態遷移で一時的に時刻同期モードに遷移させてＳｐａｃｅＷｉｒｅエンコード部１０５のＮＵＬＬ送信を止めるようにしてもよい。すなわち、本実施の形態が対象とする通信装置では、通信のモードとして、ユーザが送受信したいデータ（センサ取得データ等）を送信している状態（通常状態）と、時刻同期状態に分けられる。時刻同期状態は、一時的に時刻の同期を行うための状態で、ユーザが送信したいデータの送受信は中断される。ユーザにとっては、送受信データが送れないことで不便が生じるが、規定されているＳｐａｃｅＷｉｒｅのプロトコル規格ＥＣＳＳ−Ｅ−ＳＴ−５０−１２Ｃの変更を行うことなく、またそれに対応した既存のＳｐａｃｅＷｉｒｅの送受信用回路ロジックを修正することなく、時刻同期が行える。
【００３０】
また、イニシエータノード１００は、ＳｐａｃｅＷｉｒｅで規定されているデータフォーマット以外の、時刻同期を開始及び停止するためのコードを示すデータを送信し、また、ターゲットノード２００側では、このデータをデコードして時刻同期を行うようにしてもよい。すなわち「ＳｐａｃｅＷｉｒｅで規定されているデータフォーマット以外のデータ」としてすでに規定されているＣｏｎｔｒｏｌ  ＣｏｄｅｓのＮＵＬＬ（８ビットデータ）、Ｔｉｍｅ−Ｃｏｄｅ（１４ビットデータ）に加えて、新たな第３、第４のＣｏｎｔｒｏｌ  Ｃｏｄｅｓとして、時刻同期を開始、停止するためのコード（例えば、時刻同期スタート用パリティ（１１１０１０１）、ストップ用パリティ（１１１０１１０））を加え、プロトコルに修正を加える。このＣｏｎｔｒｏｌ  ＣｏｄｅｓをＳｐａｃｅＷｉｒｅデコード部２０１が受信するとデータデコード部２０２のＳＴＡＲＴ信号に相当する信号を出力することで時刻同期を開始する。また、停止コードをＳｐａｃｅＷｉｒｅデコード部２０１が受信すると、データデコード部２０２のＳＴＯＰ信号に相当する信号を出力する。
【００３１】
さらに、イニシエータノード１００からＥＯＰの送信時刻を複数回のＴｉｍｅ−Ｃｏｄｅで送信し、ターゲットノード２００は、複数回のＴｉｍｅ−Ｃｏｄｅで受信したビット分の精度で時刻補正動作を行うようにしてもよい。
例えば、ＳｐａｃｅＷｉｒｅ（規格ＥＣＳＳ−Ｅ−ＳＴ−５０−１２Ｃ）で規定されているＴｉｍｃｅ-Ｃｏｄｅは１回の送信で８ビットで表現されるデータを送ることができる。ここで、１ビット分の時間を４０ｎｓとすると８ビットで２５６×４０ｎｓであるため最大時間ずれ１０２４０ｎｓまで精度４０ｎｓの補正が可能である。ここで、最大時間を犠牲にして１ビット分を１０ｎｓとすればより精度が高まるが、最大時間が２５６０ｎｓのずれまでしか補正することができない。そこで、Ｔｉｍｅ−Ｃｏｄｅを２回送信すると１６ビット分のデータが送れるため、１０ｎｓの精度で６５５３６０ｎｓの最大時間ずれまでを補正することができる。
【００３２】
以上説明したように、実施の形態１の通信装置によれば、ＳｐａｃｅＷｉｒｅで接続されたイニシエータノードとターゲットノードからなる通信装置において、イニシエータノードは、ＳｐａｃｅＷｉｒｅパケットのエンコードを行ってターゲットノードに送信するＳｐａｃｅＷｉｒｅエンコード部と、ＳｐａｃｅＷｉｒｅエンコード部のＮＵＬＬ送信を止めた後に同期データと同期データの送信時刻とをＳｐａｃｅＷｉｒｅエンコード部に送信する同期データ送信部とを備え、ターゲットノードは、同期データの送信時刻と、同期データの自ターゲットノードにおける受信時刻と、ターゲットノードとイニシエータノードとが時刻同期している状態での送信時刻と受信時刻の差とを用いて、自ターゲットノードの時刻を補正する時刻補正部を備えたので、高精度な時刻同期を実現することができる。
【００３３】
また、実施の形態２の通信装置によれば、同期データとして、同期開始を示すヘッダと終端部であるＥＯＰ（Ｅｎｄ  ｏｆ  Ｐａｃｋｅｔ）とを含むＳｐａｃｅＷｉｒｅパケットを用い、同期データ送信部は、ＥＯＰの送信時刻を通知すると共に、時刻補正部は、通知されたＥＯＰの送信時刻と、ＥＯＰの受信時刻と、ターゲットノードとイニシエータノードとが時刻同期している状態での送信時刻と受信時刻との差とを用いて補正を行うようにしたので、ＳｐａｃｅＷｉｒｅのデータをそのままを使用することができ、また、特定のターゲットノードを選択して時刻同期を行うことができる。
【００３４】
また、実施の形態１の通信装置によれば、ＳｐａｃｅＷｉｒｅエンコード部は送信ＦＩＦＯを備え、送信ＦＩＦＯのデータに基づいてＳｐａｃｅＷｉｒｅパケットのエンコードを行うと共に、同期データ送信部は、ＳｐａｃｅＷｉｒｅエンコード部に対して、送信ＦＩＦＯをフル状態とするデータ量を送信することでＮＵＬＬ送信を止めるようにしたので、ＳｐａｃｅＷｉｒｅプロトコルの修正を必要とせずに、高精度な時刻同期を実現することができる。
【００３５】
また、実施の形態１の通信装置によれば、同期データ送信部は、ＳｐａｃｅＷｉｒｅの状態遷移で一時的に時刻同期モードに遷移させてＳｐａｃｅＷｉｒｅエンコード部のＮＵＬＬ送信を止めるようにしたので、既存のＳｐａｃｅＷｉｒｅの送受信用回路ロジックを修正することなく時刻同期を行うことができる。
【００３６】
また、実施の形態１の通信装置によれば、同期データ送信部は、時刻同期動作を示すヘッダを付加したデータを送信し、時刻補正部は、データのヘッダをデコードすることで時刻同期動作を開始するようにしたので、余分なハードウェア信号線を付加することなくＳｐａｃｅＷｉｒｅをそのまま使用することができる。
【００３７】
また、実施の形態１の通信装置によれば、同期データ送信部は、ＳｐａｃｅＷｉｒｅで規定されているデータフォーマット以外の、時刻同期動作を開始および停止するためのコードを示すデータを送信し、時刻補正部は、データをデコードして時刻同期動作を行うようにしたので、後段のユーザ機能のデータデコード部を不要とすることができる。
【００３８】
また、実施の形態１の通信装置によれば、同期データ送信部は、ＥＯＰの送信時刻を複数回のＴｉｍｅ−Ｃｏｄｅで送信し、時刻補正部は、複数回のＴｉｍｅ−Ｃｏｄｅで受信したビット分の精度で時刻補正動作を行うようにしたので、さらに高精度な時刻同期を実現することができる。
【００３９】
実施の形態２．
上記実施の形態１では、イニシエータノード１００とターゲットノード２００は、ＳｐａｃｅＷｉｒｅ３００によって１対１で接続されていたが、図７に示すようにイニシエータノード１００とターゲットノード２００がＳｐａｃｅＷｉｒｅルータ５００経由で接続されていてもよく、これを実施の形態２として以下説明する。なお、イニシエータノード１００とターゲットノード２００の内部構成については、実施の形態１と同様であるため、ここでの説明は省略する。
【００４０】
実施の形態２では、ＳｐａｃｅＷｉｒｅルータ５００がＳｐａｃｅＷｉｒｅ３００中に一つ挟まるためにＴｉｍｅ−Ｃｏｄｅ送信の揺らぎは１箇所増加することになる。
イニシエータノード１００の発振器１０２ａ、ターゲットノード２００の発振器２０５ａおよびＳｐａｃｅＷｉｒｅ３００の内部クロックが５０ＭＨｚで、ＳｐａｃｅＷｉｒｅ３００のリンクレートが２ＭＨｚの場合、従来方法ではイニシエータノード１００とＳｐａｃｅＷｉｒｅルータ５００間で実施の形態１で説明したように５０００ｎｓの揺らぎが生じる。さらに、ＳｐａｃｅＷｉｒｅルータ５００とターゲットノード２００間で再度５０００ｎｓの揺らぎが生じるため、合計１０μｓの揺らぎが生じることになる。
【００４１】
一方、本実施の形態では、イニシエータノード１００とＳｐａｃｅＷｉｒｅルータ５００の間で４０ｎｓの揺らぎが発生し、さらにＳｐａｃｅＷｉｒｅルータ５００とターゲットノード２００間で４０ｎｓの揺らぎが発生するため、合計８０ｎｓの揺らぎとなる。このように、ＳｐａｃｅＷｉｒｅルータ５００を経由した場合においても、本実施の形態では従来方法に比べて１２５倍の精度での時刻同期精度を実現することができる。
【００４２】
実施の形態３．
上記実施の形態２では、一つのＳｐａｃｅＷｉｒｅルータ５００のみを経由して、イニシエータノード１００とターゲットノード２００を接続していた。これに対し、実施の形態３では、図８に示すように、カスケード接続した複数のＳｐａｃｅＷｉｒｅルータ５００−１〜５００−ｍを備えたＳｐａｃｅＷｉｒｅネットワーク３０１を介して複数のターゲットノード２００−１〜２００−ｎを接続する。なお、実施の形態３においても、イニシエータノード１００とターゲットノード２００−１〜２００−ｎの内部構成については実施の形態１と同様である。
【００４３】
この場合、Ｔｉｍｅ−Ｃｏｄｅはブロードキャストされて全ターゲットノード２００−１〜２００−ｎに送信されるが、ＳｐａｃｅＷｉｒｅパケット４００のヘッダ部に特定のターゲットノード向けのアドレスを付加することにより、特定のターゲットノードのみにＳｐａｃｅＷｉｒｅパケット４００を送ることもできる。すなわち、従来方法では全ターゲットノード一斉に同期を行うが本実施の形態では特定のターゲットノードだけを選択して同期動作を行うことができる。これにより、特に時刻精度が必要なターゲットノードの同期動作を行い、効率的な動作が実現できる。
【００４４】
以上説明したように、実施の形態３の通信装置によれば、イニシエータノードとターゲットノードとの間にＳｐａｃｅＷｉｒｅルータを設け、ターゲットノードを複数備えたので、ＳｐａｃｅＷｉｒｅルータを使用した実際の使用に近いトポロジでも高精度な時刻同期を実現することができる。また、高精度な同期が必要なターゲットノードを選択して時刻同期を行うことができる。
【００４５】
実施の形態４．
実施の形態３では、ＳｐａｃｅＷｉｒｅルータを複数用いてツリー型のネットワークトポロジーを構成したが、実施の形態４では、図９に示すようにＳｐａｃｅＷｉｒｅルータ５００−１〜５００−ｎをリング状に接続にしたＳｐａｃｅＷｉｒｅネットワーク３０２を構成する。また、図示のように、ターゲットノード２００−１〜２００−ｍを複数接続してもよい。なお、ターゲットノード２００−１〜２００−ｍのそれぞれは、実施の形態１のターゲットノード２００と同様である。
【００４６】
このようなトポロジにおいて、イニシエータノード１００は２つのＳｐａｃｅＷｉｒｅインタフェースを有することができる。このため、一つのＳｐａｃｅＷｉｒｅインタフェースが故障した場合でも、もう一方のＳｐａｃｅＷｉｒｅインタフェースから時刻同期を行うことができる。
【００４７】
以上説明したように、実施の形態４の通信装置によれば、ＳｐａｃｅＷｉｒｅルータは、リング型のトポロジで構成された複数のＳｐａｃｅＷｉｒｅルータからなるようにしたので、イニシエータノードの１つのＳｐａｃｅＷｉｒｅインタフェースが故障しても、もう一方のＳｐａｃｅＷｉｒｅインタフェースを利用して同期を行うことができる。
【００４８】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００４９】
１００  イニシエータノード、１０１  データ送信部、１０２  時刻発生部、１０２ａ  発振器、１０２ｂ  時刻カウンタ、１０３  同期開始データ送信部、１０３ａ  計測カウンタ部、１０３ｂ  開始データ送信部、１０４  Ｔｉｍｅ−Ｃｏｄｅ送信部、１０５  ＳｐａｃｅＷｉｒｅエンコード部、１０５ａ  送信ＦＩＦＯ、１０５ｂ  シリアル化送信部、２００，２００−１〜２００−ｎ  ターゲットノード、２０１  ＳｐａｃｅＷｉｒｅデコード部、２０１ａ  パラレル化受信部、２０１ｂ  受信ＦＩＦＯ、２０２  データデコード部、２０３  データ受信部、２０４  リセット部、２０５  時刻生成部、２０５ａ  発振器、２０５ｂ  計測カウンタ部、２０５ｃ  遅れ補正部、２０５ｄ  プリセット値、２０５ｅ  時刻カウンタ、２０６  処理回路部、３００  ＳｐａｃｅＷｉｒｅ、３０１，３０２  ＳｐａｃｅＷｉｒｅネットワーク、４００  ＳｐａｃｅＷｉｒｅパケット、４００ａ  ヘッダ、４００ｂ  データ部、４００ｃ  終端部（ＥＯＰ）、５００，５００−１〜５００−ｎ  ＳｐａｃｅＷｉｒｅルータ。
【図１】
2015198399.tif 000003
【図２】
2015198399.tif 000004
【図３】
2015198399.tif 000005
【図４】
2015198399.tif 000006
【図５】
2015198399.tif 000007
【図６】
2015198399.tif 000008
【図７】
2015198399.tif 000009
【図８】
2015198399.tif 000010
【図９】
2015198399.tif 000011