特許第6227714号(P6227714)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アナログ・デヴァイシズ・グローバルの特許一覧

特許6227714マスタークロックにスレーブクロックを同期させる方法及び装置
<>
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000018
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000019
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000020
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000021
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000022
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000023
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000024
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000025
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000026
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000027
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000028
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000029
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000030
  • 特許6227714-マスタークロックにスレーブクロックを同期させる方法及び装置 図000031
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6227714
(24)【登録日】2017年10月20日
(45)【発行日】2017年11月8日
(54)【発明の名称】マスタークロックにスレーブクロックを同期させる方法及び装置
(51)【国際特許分類】
   H04L 7/00 20060101AFI20171030BHJP
   H04W 56/00 20090101ALI20171030BHJP
   G06F 1/12 20060101ALI20171030BHJP
   H04L 7/04 20060101ALI20171030BHJP
【FI】
   H04L7/00 990
   H04W56/00 130
   G06F1/12 510
   H04L7/04
【請求項の数】14
【全頁数】21
(21)【出願番号】特願2016-112482(P2016-112482)
(22)【出願日】2016年6月6日
(65)【公開番号】特開2017-5701(P2017-5701A)
(43)【公開日】2017年1月5日
【審査請求日】2016年6月6日
(31)【優先権主張番号】14/732,253
(32)【優先日】2015年6月5日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】515280067
【氏名又は名称】アナログ・デヴァイシズ・グローバル
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】カルティック,モハン ペルマル
(72)【発明者】
【氏名】スブラマニアム,シヴァラマクリシュナン
(72)【発明者】
【氏名】クリシュナ,プラヴィーン
【審査官】 岡 裕之
(56)【参考文献】
【文献】 国際公開第2013/190602(WO,A1)
【文献】 特開2013−083450(JP,A)
【文献】 特開2009−194778(JP,A)
【文献】 特開2013−168884(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
G06F 1/12
H04L 7/04
H04W 56/00
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
スレーブデバイスのクロック周波数マスターデバイスのクロックに同期させる方法であって、
前記マスターデバイスから、1組の第1のパケットのSyncメッセージ及び第1のパケットのFollowUpメッセージを受信する工程と、
前記第1のパケットのSyncメッセージの受信を示す第1のローカルタイムを決定する工程と、
前記第1のパケットのFollowUpメッセージから前記マスターデバイスがSyncメッセージを送信した時間を示す第1のリモートタイムを抽出する工程と、
前記第1のローカルタイム及び第1のリモートタイムに基づいて絶対時間差を決定し、前記絶対時間差を減少するように前記スレーブデバイスにおける時間を調整する工程と、
前記マスターデバイスから、1組の第2のパケットのSyncメッセージ及び第2のパケットのFollowUpのメッセージを受信する工程と、
前記第2のパケットのSyncメッセージの受信を示す第2のローカルタイムを決定する工程と、
前記第2のパケットのFollowUpのメッセージから第2のリモートタイムを抽出する工程と、
前記第1のリモートタイムと前記第2のリモートタイムとの間の第1の差を決定する工程と、
前記第2のローカルタイムと前記第1のリモートタイムとの間の第2の差を決定する工程と
前記第1の差及び第2の差から決定されるスレーブデバイスとマスターデバイスとの間のクロック周波数の比率である速度比に基づいて前記スレーブデバイスのクロック周波数を調整する工程とを含む、方法。
【請求項2】
前記絶対時間差は、前記第1のローカルタイムから第1のリモートタイムと隣接伝播遅延とを減算して決定されることを特徴とする請求項1に記載の方法。
【請求項3】
前記第1の差と、前記第2の差と、従前の速度比とに基づいて速度比を決定する工程さらに含む、請求項1又は2に記載の方法。
【請求項4】
前記第2の差がゼロより大きい場合、前記速度比が減少される、請求項1〜3のいずれか一項に記載の方法。
【請求項5】
スレーブデバイスのクロック周波数マスターデバイスのクロックに同期させる装置であって、
1組の第1のパケットのSyncメッセージ及び第1のパケットのFollowUpメッセージと、1組の第2のパケットのSyncメッセージ及び第2のパケットのFollowUpメッセージを受信する少なくとも一のインターフェースと、
前記第1のパケットのSyncメッセージの受信を示す第1のローカルタイムを決定し、前記第1のパケットのFollowUpメッセージから第1のリモートタイムを抽出し、前記第1のローカルタイム及び第1のリモートタイムに基づいて絶対時間差を決定し、前記絶対時間差を減少するように前記スレーブデバイスにおける時間を調整し、前記第2のパケットのSyncメッセージの受信を示す第2のローカルタイムを決定し、前記第2のパケットのFollowUpのメッセージから第2のリモートタイムを抽出する少なくとも一のプロセッサと
を備え、
前記少なくとも一のプロセッサが、前記第1のリモートタイムと前記第2のリモートタイムとの間の第1の差を決定し、かつ前記第2のローカルタイムと前記第1のリモートタイムとの間の第2の差を決定するように構成され、前記第1の差及び第2の差から決定されるスレーブデバイスとマスターデバイスとの間のクロック周波数の比率である速度比に基づいて前記スレーブデバイスのクロック周波数を調整する装置。
【請求項6】
前記絶対時間差は、前記第1のローカルタイムから第1のリモートタイムと隣接伝播遅延とを減算して決定されることを特徴とする請求項に記載の装置。
【請求項7】
前記少なくとも一のプロセッサが、前記第1の差と、前記第2の差と、従前の速度比とに基づいて速度比を決定るようにさらに構成される、請求項5又は6に記載の装置。
【請求項8】
前記第2の差がゼロより大きい場合、前記速度比が減少される、請求項5〜7のいずれか一項に記載の装置。
【請求項9】
前記第2の差がゼロ未満の場合、前記速度比が増大される、請求項5〜8のいずれか一項に記載の装置。
【請求項10】
スレーブデバイスのクロック周波数マスターデバイスのクロックに同期させる装置であって、
1組の第1のパケットのSyncメッセージ及び第1のパケットのFollowUpメッセージと、1組の第2のパケットのSyncメッセージ及び第2のパケットのFollowUpメッセージと受信する外部インターフェース手段と、
前記第1のパケットのSyncメッセージメッセージの受信を示す第1のローカルタイムを決定し、前記第1のパケットのFollowUpメッセージから第1のリモートタイムを抽出し、前記第2のパケットのSyncメッセージメッセージの受信を示す第2のローカルタイムを決定し、前記第2のパケットのFollowUpメッセージから第2のリモートタイムを抽出する処理手段と
を備え、
前記処理手段が、前記第1のローカルタイム及び第1のリモートタイムに基づいて絶対時間差を決定し、前記絶対時間差を減少するように前記スレーブデバイスにおける時間を調整し、前記第1のリモートタイムと前記第2のリモートタイムとの間の第1の差を決定し、かつ前記第2のローカルタイムと前記第1のリモートタイムとの間の第2の差を決定前記第1の差及び第2の差から決定されるスレーブデバイスとマスターデバイスとの間のクロック周波数の比率である速度比に基づいて前記スレーブデバイスのクロック周波数を調整する装置。
【請求項11】
前記絶対時間差は、前記第1のローカルタイムから第1のリモートタイムと隣接伝播遅延とを減算して決定されることを特徴とする請求項10に記載の装置。
【請求項12】
前記処理手段が、前記第1の差と、前記第2の差と、従前の速度比とに基づいて速度比を決定る、請求項10又は11に記載の装置。
【請求項13】
前記第2の差がゼロより大きい場合、前記速度比が減少される、請求項10〜12のいずれか一項に記載の装置。
【請求項14】
前記第2の差がゼロ未満の場合、前記速度比が増大される、請求項10〜13のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ネットワーク内のマスターデバイスのクロックに対するスレーブデバイスのクロックの同期に関する。
【背景技術】
【0002】
ネットワークは、相互接続されたデバイスを含む。一部のネットワークは、指定されたマスターデバイス及びスレーブデバイスを含み、マスターデバイスはスレーブデバイスを制御し、スレーブデバイスはマスターデバイスによって制御される。これらのデバイスのそれぞれは、クロックが含まれるデバイスの動作を調整する別個のクロックを保持する。これらのクロックは、ハードウェアとソフトウェアとの組み合わせで実装することができる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】IEEE Std.802.1AS−2011<https://standards.ieee.org/findstds/standard/802.1AS-2011.html>
【発明の概要】
【発明が解決しようとする課題】
【0004】
一部の動作、特にオーディオ及びビデオストリーミングに関連するものについては、スレーブデバイスのクロックがマスターデバイスのクロックに同期する。様々な業界標準が、このような同期に使用され得る。このような標準の一は、IEEE Std.802.1AS−2011で検討される汎用高精度時間プロトコル(gPTP)である。このgPTPに関して、幾つかの同期方法が存在する。しかしながら、これらの方法には、同期が遅い等の欠点がある。
【課題を解決するための手段及び発明の効果】
【0005】
一実施形態において、スレーブデバイスを同期するための装置が提供される。本装置は、第1のメッセージと、第2のメッセージと、第3のメッセージとを受信する少なくとも一のインターフェースを含む。また本装置は、第1のメッセージから第1の時間を抽出し、第2のメッセージの受信を示す第2の時間を決定し、かつ第3のメッセージから第3の時間を抽出する少なくとも一のプロセッサを含む。少なくとも一のプロセッサは、第1の時間と第3の時間との間の第1の差を決定し、かつ第2の時間と第1の時間との間の第2の差を決定する。
【0006】
一部の実施形態において、少なくとも一のインターフェースは第1のメッセージの前に第4のメッセージを受信し、少なくとも一のプロセッサは第4のメッセージの受信を示す第4の時間を決定する。また少なくとも一のプロセッサは、第1のメッセージ及び第4のメッセージに基づいて第3の差を決定し、その第3の差に基づいてスレーブデバイスのクロック時間を調整する。さらに少なくとも一のプロセッサは、第1の差及び第2の差に基づいてスレーブデバイスのクロック周波数を調整する。さらにまた少なくとも一のプロセッサは、第1の差と、第2の差と、従前の速度比とに基づいて速度比を決定し、かつその速度比に基づいてスレーブデバイスのクロック周波数を調整する。
【0007】
一部の実装において、少なくとも一のプロセッサは、第2の差に基づいて速度比を決定し、かつその速度比に基づいてスレーブデバイスのクロック周波数を調整する。第2の差がゼロより大きい場合、速度比は減少される。第2の差がゼロ未満の場合、速度比は増大される。
【図面の簡単な説明】
【0008】
図1図1は、一実施形態に係るスレーブ同期技術の全体の流れを示すフローチャートである。
図2図2は、一実施形態に係るスレーブ同期技術の第1のパケットの粗調整を示すフローチャートである。
図3図3は、従来の実装に係る単純平均化を使用する絶対時間差を示すグラフである。
図4図4は、一実施形態に係る動的加重平均を使用する相対時間差を示すグラフである。
図5図5は、一実施形態に係る動的加重平均化を使用する絶対時間差を示すグラフである。
図6図6は、従来の実装に係る第2のパケットの最適化を行わない相対時間差を示すグラフである。
図7図7は、従来の実装に係る第2のパケットの最適化を行わない絶対時間差を示すグラフである。
図8図8は、一実施形態に係るスレーブ同期技術の第2のパケットの最適化を示すフローチャートである。
図9図9は、一実施形態に係るスレーブ同期技術の第2のパケットの最適化による相対時間差を示すグラフである。
図10図10は、一実施形態に係るスレーブ同期技術の第2のパケットの最適化による絶対時間差を示すグラフである。
図11図11は、一実施形態に係るスレーブ同期技術の加速動的加重平均化を示すフローチャートである。
図12図12は、一実施形態に係るスレーブ同期技術の加速比計算による相対時間差を示すグラフである。
図13図13は、一実施形態に係るスレーブ同期技術の加速比計算による絶対時間差を示すグラフである。
図14図14は、一実施形態に係るシステムオンチップを示すブロック図である。
【発明を実施するための形態】
【0009】
スレーブデバイスのクロックとマスターデバイスのクロックとの間の同期が遅いことにより、現実の問題が生じる可能性がある。例えば、一部の自動車システムは、運転者にネットワークを介して音声警報を送る。安全のため、運転者が車を出発させると直ぐに、これらの警報を利用できなければならない。これらの警報の再生が遅延同期によって遅れると、運転者はタイムリーに緊急警報を得られない危険な状態に晒されるからである。
【0010】
加えて業界は、これらの自動車システムが、規定のシステム起動時間内に音声を再生することができるよう求めている。従来のシステムは、同期前に運転者に騒々しい警報を再生する試みによって、この規制を回避している。しかしながら、同期することなく、この警報が出される保証はない。
【0011】
本開示において提案される一部の実施形態は、スレーブデバイスのクロックがマスターデバイスのクロック速度に迅速に整合することを可能にする(すなわち、相対時間差)。また一部の実施形態は、マスターデバイスのクロックとスレーブデバイスのクロックとの間の絶対時間差の減少を可能にする。これにより、自動車システムにおいて、クリーンで保証された音声を届けることができる。さらに、音声の損失の可能性を減少させることができ、より速い同期によって運転者の安全性を改善することができる。
【0012】
本開示によって提案される特定の機能に言及する前に、スレーブ同期において発生する根本的な問題を読み手が理解し易いように、ここでは基礎的な情報を提供する。
【0013】
以下検討するように、スレーブデバイスのクロックは、ハードウェアとソフトウェアとの組み合わせで実装することができる。さらに、スレーブデバイスのハードウェアブロックは、実行中のローカルクロックを部分的に維持することができる。次に、このクロックは、gPTPドメインクロックに同期するソフトウェアによって操作することができる。
【0014】
典型的には、スレーブデバイスハードウェアブロックは、調整機能、例えば粗調整及び微調整によりクロックを操作する。典型的には、粗調整及び微調整は、ハードウェアIEEE 802.1AS機構において実装する。IEEE 802.1ASは実装の具体的方法を詳述しないが、一般に認められた慣習が存在する。具体的には、高精度時間プロトコル(PTP)は、クロックとそのクロックの各チックでインクリメントされるカウンタを有するハードウェアに実装できる。各クロックチックに、経過時間を示す特定の値がカウンタに加えられる。例えば、クロックが50MHzの周波数で動作する場合、値20が各クロックチックでカウンタに加えられ、20nsが経過したことを示す。
【0015】
粗調整では、クロックをマスターデバイスと同期させるために、クロックから特定のオフセットが加算又は減算される。この加算又は減算は、通常、同期手順の初めに行われる。
【0016】
対照的に、前述の微調整では、ローカルクロックとマスターデバイスとを同調させるために、ローカルクロックの周波数を操作(すなわち、増減)する。具体的には、微調整は前述の特定の値(すなわち20)がカウンタに加えられる周波数を変化させる。これにより、マスターデバイスのクロックと整合させるためにスレーブクロックを50%遅くしようとする場合、チック毎ではなく1.5クロックチック毎に、20nsがカウンタに加えられる。このように、粗調整は連続性を犠牲にして即時調整を提供するのに対して、微調整は連続した段階的な調整を提供する。
【0017】
gPTP時間同期プロトコルにおいて、指定のグランドマスタは、2つのメッセージであるSync及びFollowUpをスレーブデバイスに周期的に送信する。同期動作において、マスターデバイスが、スレーブデバイスにSyncメッセージを送信する時間をタイムスタンプとして、マスターデバイスは正確に記録する。一般にSyncメッセージは、スレーブデバイスへの途中で隣接伝搬遅延によって遅れる。
【0018】
スレーブデバイスは、遅延Syncメッセージを受信することで、受信時間を即座に記録する。この受信時間は、スレーブデバイスのクロックに関するものであり、かつタイムスタンプsyncEventIngressTimestampとして記録される。
【0019】
マスターデバイスは、スレーブデバイスにFollowUpメッセージを後に送信する。このFollowUpメッセージは、マスターデバイスがSyncメッセージを送信した時間を示すタイムスタンプpreciseOriginTimestampを含む。
【0020】
このようなシステムにおいて、スレーブデバイスのローカルタイムは式1で定義できる。またリモートタイム(すなわち、マスターデバイスのローカルタイム)は、式2で定義できる。
【0021】
【数1】

…式1
【0022】
【数2】

…式2
【0023】
したがって、任意の時間iでのマスターデバイスとスレーブデバイスとの絶対時間差は、式3から導くことができる。
【0024】
【数3】

…式3
【0025】
式中、neighborPropDelayは隣接伝搬遅延であり、pdelayプロトコルと呼ばれるIEEE 802.1AS標準のサブプロトコルを使用して計算される。このpdelayプロトコルは、IEEE 802.1AS規格の項目11.2.15及び11.2.16において詳細に説明されている。
【0026】
絶対時間差とは対照的に、マスターデバイスとスレーブデバイスとの間の相対時間差は、従前の同期間隔の間に、スレーブデバイスがマスターデバイスに対してどれくらい速いか又は遅いかを示している。マスターデバイスとスレーブデバイスとの間の相対時間差は、式4で定義できる。
【0027】
【数4】

…式4
【0028】
特定の(例えば、第iの)同期間隔(syncIntervalと称される)の間の、スレーブデバイスとマスターデバイスとの平均周波数間の比率(中間クロックドリフトに対応する)は、カレント速度比として定義される。一方、即時カレント速度比(currRateRatioと称される)は、式5のように計算することができる。
【0029】
【数5】

…式5
【0030】
時間同期プロトコルは、絶対時間差をゼロまで減少させ、起こり得るジッタの最中に絶対時間差を可能な限りほぼゼロに維持することを目的とする。
【0031】
同期の一の方法は、粗調整の直接適用である。この方法は、Sync及びFollow−Upが受信されるたびに、時間差によりスレーブデバイスの時間を粗調整することを伴う。この方法の欠点は、粗調整が時間と共にスレーブデバイスにジャンプラグをもたらすことである。これらのジャンプラグは、gPTP時間に基づく多くのアプリケーション(音響映像(A/V)再生等)を非常に不均一かつジッタにする不均一な時間表示をもたらす。
【0032】
同期の別の方法は、グランドマスタ速度比としてのカレント速度比の直接適用である。グランドマスタ速度比は、スレーブとグランドマスタとの間のクロック周波数の比率である。具体的には、式6に示すように、カレント速度比は、ハードウェアブロックに対する微調整として、直接適用される。
【0033】
【数6】

…式6
【0034】
カレント速度比のこの直接適用には、クロック測定のジッタに関連する幾つかの欠点がある。第1の欠点は、クロック精度及びドリフトにおいて生じる。カレント速度比は、即時クロックドリフトに基づいて変動し、結果としてジッタをもたらす。
【0035】
また第2の欠点は、隣接伝搬遅延において生じる。伝搬遅延が変化する(例えば、ジッタを有する)場合、スレーブデバイスは、遅延が変化しているパケットを受信し、これらの遅延によってローカルタイムの変化が生じる可能性がある。よって、これらの遅延は、絶対時間差を計算する上で重要な部分となる(式3を参照)。またローカルタイムの変動は、カレント速度比の計算においてエラーを誘発する可能性もある。このように、スレーブデバイスをマスターデバイスに同期させるために従来の方法を使用する場合、システムは、同期を失う前に超低レベルのジッタのみ(例えば、遅延における変動)を許容することができる。
【0036】
第3の欠点は、syncIntervalにおいて生じる。カレント速度比は、従前のsyncIntervalに関して計算される。計算されたカレント速度比が0.9の値である場合、この値はスレーブデバイスのクロックが、従前のsyncIntervalの間のマスターデバイスのクロックより10%速いことを意味する。syncIntervalが変動する場合(例えば、本質的にメッセージがソフトウェアで形成されて、送信されるため)、非定値間隔期間は計算値が次の間隔の間、直接適用されるのを防止する。
【0037】
最後に、第4の欠点は、周波数調整時間オフセットにおいて生じる。比率がSyncメッセージの受信時に計算されるときから、カレント速度比がハードウェアブロックに適用されるときまで時間オフセットが常に存在する。このオフセットによって、クロックの測定の際にジッタが生じる。例えば、以下のパラメータを考慮する。
【0038】
syncInterval=125ms(理想的)
prepDelay=0ns(理想的)
preciseOriginTimestamp〔0〕=125ms
syncEventIngressTimestamp〔0〕=137.5ms
preciseOriginTimestamp〔1〕=250ms
syncEventIngressTimestamp〔1〕=275ms
【0039】
これらのパラメータは、以下のカレント速度比を返す。

【0040】
ここで、ソフトウェアがハードウェアのこの周波数を計算及び設定するために20msを受け取ると仮定する。直ちに周波数を変更するような理想的なハードウェアgPTP実装を想定すると、新規の周波数は、syncIntervalの期間全体にではなく寧ろsyncInterval−20msに有効である。期間におけるこの差は、次のグランドマスタ速度比の計算を不正確なものとする。
【0041】
単純又は移動平均実装は、直接適用法の多くの問題を解決する。平均化を実装することによって、ジッタ問題が解決され、かつスムーズになり得る。その一方で一般的な平均化による欠点は、同期をスムーズにすることによって、スレーブデバイスが同期を実現するのにより多くの時間がかかる場合があることが挙げられる。
【0042】
この平均化の一の変動は、式7によって定義されるグランドマスタ速度比に関する単純平均である。
【0043】
【数7】

…式7
【0044】
式中、Nは計算されたカレント速度比の総数である。
【0045】
この平均化計算の別の変数は、式8によるグランドマスタ速度比に関して定義されるような移動平均である。
【0046】
【数8】

…式8
【0047】
式中、Nは計算されたカレント速度比の総数であり、Mは移動窓サイズである。
【0048】
別の実装は、単純加重平均である。単純加重平均は、単純移動平均よりわずかに良好である。加重平均を実装することによって、ジッタはより一層スムーズになる。一方で加重平均の欠点は、加重パラメータはリアルタイムな変化に動的に反応せず、それ故に同期を実現するのに必要な時間を不必要に遅延することである。
【0049】
単純加重平均は、式9の以下のようにグランドマスタ速度比に関して実装することができる。
【0050】
【数9】

…式9
【0051】
式中、WEIGHTは、システムに使用できるように、加重平均を修正する任意定数である。
【0052】
同期プロセスの実施形態は3つの相を含んでおり、それぞれについて個々に後述する。まずスレーブ同期フロー100全体の実施形態を図1に示す。フローは、変数が初期化される110から始まる。例えば、グランドマスタ速度比変数は、1.0に初期化される。次にフローは、第1のパケットの粗調整が行われる120へ進む。第1のパケットの粗調整については、後で詳細に考察する。130で、第2のパケットの最適化が行われる。第2のパケットの最適化についても、後で詳細に考察する。最後に、加速動的加重同期が140で行われる。加速動的加重同期についても、同様に後で詳細に考察する。その後、プロセスが終了する。
【0053】
ここで第1のパケットの粗調整120のフローを、200として図2に示す。このフローは、スレーブデバイスがマスターデバイスから第1のSyncメッセージを受信する210から始まる。第1のSyncメッセージを受信すると、スレーブデバイスは、第1のSyncメッセージがスレーブデバイスのクロックに対して受信された時間を記録する。スレーブデバイスは、タイムスタンプSyncEventIngressTimestamp〔0〕としてこの時間を記録して(例えば、メッセージをタイムスタンプする)、SyncEventIngressTimestamp〔0〕に相当するローカルタイムLocalTime〔0〕を設定する。
【0054】
220で、スレーブデバイスは、マスターデバイスから第1のFollowUpメッセージを受信する。FollowUpメッセージは、マスターデバイスによって記録されたタイムスタンプpreciseOriginTimestamp〔0〕を含む。これはマスターデバイスが第1のSyncメッセージを送信したマスターデバイスでの時間を示す。第1のFollowUpメッセージを受信すると、スレーブデバイスのプロセッサは、タイムスタンプpreciseOriginTimestampをFollowUpメッセージから抽出して、それを使用する。具体的には、スレーブデバイスは、タイムスタンプpreciseOriginTimestamp〔0〕に相当するリモートタイムRemoteTime〔0〕を設定する。
【0055】
230で、スレーブデバイスは絶対時間差を決定し、粗調整を行う。具体的には、210で記録されるローカルタイムから、220で記録されるリモートタイムと隣接伝搬遅延とを減算することで、スレーブデバイスは絶対時間差を決定する。次いで、スレーブデバイスは、粗調整においてこの差を適用する。
【0056】
比較例において、グランドマスタ速度比に関する単純平均化(式7を参照)の従来の解は、図3に示すような同期をもたらす。この図から判るように、単純平均化によって、絶対時間差は制御できないほどの螺旋形になる。この螺旋化は、主に種々のジッタの影響に起因する。
【0057】
対照的に、提案された方法は、式10に示すようにグランドマスタ速度比に関して実装された動的加重平均化を含むことができる。
【0058】
【数10】

…式10
【0059】
式中、
【0060】
【数11】

…式11
【0061】
オフセットMIN_ACCEPTABLE_OFFSETの値は、経験的に決定することができる。例えば、オフセットMIN_ACCEPTABLE_OFFSETの50nsの値は、望ましい結果を得るように、実験的に決定された。
【0062】
図4図5から判るように、この平均化は、スレーブデバイスとマスターデバイスとの非常に迅速な同期をもたらす。特に、図4から判るように、提案方法は、相対時間差を迅速にロックする。図5に示すように、このロッキングは、確実に絶対時間差を一定レベルに維持する。プロセスはソフトウェアのこの値を追跡し、依存プロトコルにおいて適宜それを使用することができ、又はプロセスは絶対差をほぼ0にする他の方法を使用することもできる。
【0063】
既に示唆したように、スレーブデバイスは第1のsyncパケットの間、式12による粗調整を行う。
【0064】
【数12】

…式12
【0065】
このように、ローカルタイムLocalTime〔0〕値は有効ではなく、比率計算に使用することができない。この無効は、カレント速度比currRateRatio〔0〕を計算することができず、かつ第1の信頼性の高い計算がcurrRateRatio〔1〕より先には始まらないことを意味する(式5参照)。
【0066】
同様に、相対時間差は、第1のsyncパケットに関して計算されないままである。
【0067】
さらに、従来の方法は、第3のパケットの最適化を使用するが、これは当該方法が単にそのときまでは時間が安定であると仮定するためである。このため、時間差は、第2及び第3のsyncパケットに関して一定のままである。また図6図7に示すように、この一定の時間差は、第1の2つのisyncIntervalの間、絶対時間差を抑制せずに増大させる。
【0068】
粗調整後(既に記載した第1のsyncパケット受信の間)、ローカルタイムLocalTime〔0〕は、リモートタイムremoteTime〔0〕に実質的に相当すると確実にみなすことができる。このため、計算は、式13のカレント速度比に関して示される第2のパケットの最適化された比率計算によって最適化することができる。
【0069】
【数13】

…式13
【0070】
この第2のパケットの最適化には、第1の2つのsyncIntervalの間、周波数を連続的にドリフトさせない潜在的な利点があり、このため非常に短い間隔内で同期を実現する。
【0071】
第2の最適化は、図8に示されるワークフロー800によって実装される。810で、スレーブデバイスは、第2のsyncIntervalでマスターデバイスから第2のSyncメッセージを受信する。第2のSyncメッセージを受信すると、スレーブデバイスは、第2のSyncメッセージがスレーブデバイスのクロックに対して受信された時間を記録する。スレーブデバイスは、SyncEventIngressTimestamp〔1〕としてこの時間を記録(例えば、メッセージをタイムスタンプする)して、タイムスタンプSyncEventIngressTimestamp〔1〕に相当するローカルタイムLocalTime〔1〕を設定する。
【0072】
820で、スレーブデバイスは、マスターデバイスから第2のFollowUpメッセージを受信する。第2のFollowUpメッセージは、マスターデバイスによって記録されたタイムスタンプpreciseOriginTimestamp〔1〕を含み、これはマスターデバイスが第2のSyncメッセージを送信したマスターデバイスでの時間を示す。第2のFollowUpメッセージを受信すると、スレーブデバイスのプロセッサは、preciseOriginTimestampを第2のFollowUpメッセージから抽出して、それを使用する。具体的には、スレーブデバイスは、タイムスタンプpreciseOriginTimestamp〔1〕に相当するリモートタイムRemoteTime〔1〕を設定する。
【0073】
830で、スレーブデバイスは、カレント速度比を計算する。スレーブデバイスは、820で設定されたリモートタイムRemoteTime〔1〕と220で設定されたリモートタイムRemoteTime〔0〕との間の第1の差を計算する。またスレーブデバイスは、810で設定されたローカルタイムLocalTime〔1〕と220で設定されたリモートタイムRemoteTime〔0〕との間の第2の差を計算する。
【0074】
ローカルタイムLocalTime〔0〕は、スレーブデバイスがマスターデバイスからsyncパケットを受信する第1の時間であるため、スレーブはこのとき単に同期を初期化しているだけである。したがって、スレーブデバイスのクロックは、マスターデバイスのクロックと比較すると、そのとき大きくずれている場合がある。この不一致に対処するために、粗調整を行い、スレーブタイムを修正することができる。このように、ローカルタイムLocalTime〔0〕は、最初不適切な場合があるため、粗調整によって、リモートタイムRemoteTime〔0〕に相当するように、ローカルタイムLocalTime〔0〕が補正される。後で考察するように、第2のパケットについては、ローカルタイムLocalTime〔0〕の代わりにリモートタイムRemoteTime〔0〕を使用することができる。
【0075】
その後、スレーブデバイスは、第1の差を第2の差で除算することによってカレント速度比を決定する。
【0076】
840で、スレーブデバイスは、式10に示すように、動的加重平均によりグランドマスタ速度比を決定する。特に、スレーブデバイスは、カレント速度比及び従前のグランドマスタ速度比に基づいてグランドマスタ速度比を決定する。
【0077】
850で、スレーブデバイスは、加速度によってグランドマスタ速度比を適宜再計算する。この再計算については、後でより詳細に考察する。
【0078】
860で、スレーブデバイスは、グランドマスタ速度比に基づいて微調整を行う。
【0079】
第2のパケットの最適化により、同期は図9図10に示すように見える場合がある。図6図7に関連して見られる差は、周波数(すなわち、相対時間差)がより短い持続時間(0.5sマークをほぼ実現する)にロックされ、また絶対時間差がより速くロックされるために減少するということである。
【0080】
上記の2つの方法において、実装は場合により、ソフトウェアの絶対時間差を追跡するように強制される。この強制は通常、一旦周波数がロックされると、絶対時間差がいかなる変化もなく均一のままであるためである。同期については、一連の粗調整及び微調整が必要とされ、これはクロック内に容認できないジッタを生じさせる。
【0081】
従前の図4図5は、この方法を用いない同期挙動を説明している。
【0082】
ハードウェア絶対時間ロックワークフロー1100の実装手順を図11に示す。1110で、スレーブデバイスは、第2のsyncIntervalでマスターデバイスから第2のSyncメッセージを受信する。第2のSyncメッセージを受信すると、スレーブデバイスは、第2のSyncメッセージがスレーブデバイスのクロックに対して受信された時間を記録する。スレーブデバイスは、タイムスタンプSyncEventIngressTimestamp〔i〕としてこの時間を記録(例えば、Syncメッセージをタイムスタンプする)して、タイムスタンプSyncEventIngressTimestamp〔i〕に相当するローカルタイムLocalTime〔i〕を設定する。
【0083】
1120で、スレーブデバイスは、マスターデバイスから第2のFollowUpメッセージを受信する。第2のFollowUpメッセージは、マスターデバイスによって記録されたタイムスタンプpreciseOriginTimestamp〔i〕を含み、これはマスターデバイスが第2のSyncメッセージを送信したマスターデバイスでの時間を示す。第2のFollowUpメッセージを受信すると、スレーブデバイスのプロセッサは、タイムスタンプpreciseOriginTimestampを第2のFollowUpメッセージから抽出して、それを使用する。具体的には、スレーブデバイスは、タイムスタンプpreciseOriginTimestamp〔i〕に相当するリモートタイムRemoteTime〔i〕を設定する。
【0084】
1130で、スレーブデバイスは、カレント速度比を計算する。スレーブデバイスは、1120でセットされるリモートタイムRemoteTime[i]と従前のリモートタイムRemoteTime[i−1]との間の第1の差を計算する。例えば、スレーブデバイスは、リモートタイムRemoteTime〔1〕と220で設定されたリモートタイムRemoteTime〔0〕との間の第1の差を計算する。またスレーブデバイスは、1110で設定されたローカルタイムLocalTime〔i〕とローカルタイムLocalTime〔i−1〕との間の第2の差を計算する。例えば、スレーブデバイスは、1110で設定されたローカルタイムLocalTime〔1〕と210で設定されたローカルタイムLocalTime〔0〕との間の第2の差を計算する。その後、スレーブデバイスは、第1の差を第2の差で除算することによってカレント速度比を決定する。
【0085】
1140で、スレーブデバイスは、式10に示すように、動的加重平均によってグランドマスタ速度比を決定する。特に、スレーブデバイスは、カレント速度比及び従前のグランドマスタ速度比に関するグランドマスタ速度比に基づく。
【0086】
1150で、スレーブデバイスは、式14に示すように、加速度によってグランドマスタ速度比を再計算する。
【0087】
【数14】
…式14
【0088】
式中、
【0089】
【数15】
…式15
【0090】
グランドマスタ速度比gmRateRatioは、式10で定義される。
【0091】
1160で、スレーブデバイスは、グランドマスタ速度比に基づいて微調整を行う。
【0092】
一の実装例において、SYNC_ACCEL_CONSTの値は、200,000,000に設定された。この値は、各実装に構成可能なパラメータとでき、加速度の積極性及びジッタ要因の安定性から導くことができる。ジッタがより不安定であるほど、この定数をより増加させなければならず、このため加速度はより積極的にはならない。
【0093】
このロッキングは、図12図13に示すように同期をもたらす。これらの図から判るように、相対時間差(図12及び絶対時間差(図13ともにハードウェアに直接ロックされ、これによりソフトウェアにおけるそれらの非効率的な測定を潜在的に取り除くことができる。またロックは、ほぼ0.4sの非常に短い間隔で実現することができる。このロッキングは、システムに影響を及ぼす種々のジッタに応じてより積極的にすることができる。
【0094】
図14は、一実施形態に係るシステムオンチップ1400のブロック図を示す。システムは、物理的コネクタ1402、PCB配線1404、PHYチップ1406、インターフェース1408、デジタル信号プロセッサ(DSP)1412のイーサネットメディアアクセスコントローラー(EMAC)周辺機器1410、インターフェース1414、メモリ1416、デジタルアナログ変換器(DAC)1420、シリアルポート1422、及びパラレルポート1424を含む。一部の実施形態において、付加的な構成要素が存在することができ、一部の構成要素、例えばDAC1420、シリアルポート1422、及びパラレルポート1424は存在しない場合がある。
【0095】
物理的コネクタ1402は、例えば、RJ45コネクタ等の登録済みのジャッキであり得る。物理的コネクタ1402は、外部インターフェース手段の例である。
【0096】
PCB配線1404は、システムオンチップが実装される回路基板上の配線である。回路基板は、単面、両面、又は多層であることができる。
【0097】
PHYチップ1406は、開放型システム間相互接続(OSI)モデルの物理層の機能を実装するチップである。物理層は、OSIモデルの最下位層である。一部の実施形態において、PHYチップ1406は、上記で定義されたアルゴリズムの動作を行う。例えば、PHYチップ1406は、受信時間(例えば210、220、810、820、1110、及び1120において)を決定することができ、例えば、EMAC1410又はDSP1412に受信時間の詳細を伝える。それらの場合において、EMAC1410又はDSP1412は、タイムスタンプを記録しない場合があり、代わりにPHYチップ1406から詳細を直接受け取ることができる。一部の実施形態において、PHYチップは、処理手段である。
【0098】
インターフェース1408は、PHYチップ1406をメディアアクセス制御(MAC)ブロックに接続する。例えば、インターフェース1408は、メディア独立インターフェース(MII)又は縮小メディア独立インターフェース(RMII)とできる。さらに、インターフェース1408はまた、シリアルギガビットメディア独立インターフェース(SGMII)、ギガビットインターフェースコンバータ(GBIC)、又は他の任意適切なインターフェースであり得る。
【0099】
EMAC周辺機器1410は、OSIモデルの第2層であるデータリンク層で動作する。
【0100】
DSP1412は、既製のDSP又はカスタムDSPによって実装することができる。DSPは、単一コア又は多重コアを有することができる。DSPはオペレーティングシステムを実行する必要はないが、一部の実装において、DSPはオペレーティングシステムを実行する。DSPは通常、固定小数点演算を使用するが、一部の実施形態において、DSPは浮動小数点演算を使用することができる。DSP1412は、処理手段の例である。また処理手段は、PHYチップ1406及びEMAC周辺機器1410を含むこともできる。
【0101】
インターフェース1414は、DSP1412からメモリ1416へとデータをコピーする。インターフェース1414は、直接メモリアクセス(DMA)を実装することができる。例えば、インターフェース1414は、周辺部品相互接続(PCI)アーキテクチャもしくはI/Oアクセラレーションテクノロジー又は他の任意適切な技術に適合することができる。
【0102】
メモリ1416は、スタティックランダムアクセスメモリ(SRAM)として実装することができる。またメモリ1416は、ダイナミックランダムアクセスメモリとして実装することもできる。メモリ1416は、格納手段の例である。
【0103】
特定の実施形態において、例えば、メモリ1416はDSP1412内に存在することができる(レベル1)。他の実施形態において、メモリ1416は、DSP1412に存在しない(レベル2又はレベル3)。メモリ1416がDSP1412に存在しない場合、DSP1412のキャッシュはメモリ1416と協働する。
【0104】
デジタルアナログコンバータ(DAC)1420は、デジタルデータをアナログ信号に変換する。例えば、DAC1420は、シリアルポート1422を介して送信される音声コンテンツに、デジタルデータを変換することができる。さらに又は代わりに、DAC1420は、パラレルポート1424を介して送信されるビデオデータに、デジタルデータを変換することができる。DAC1420は、変換手段の例である。
【0105】
シリアルポート1422は、DAC1420から例えば、音声コンテンツを受信する。シリアルポート1422は、例えば、1組のスピーカーに音声コンテンツを出力する。他の実施形態において、シリアルポート1422は、1組のヘッドホンに音声コンテンツを出力する。
【0106】
パラレルポート1424は、DAC1420から例えば、ビデオデータを受信する。パラレルポート1424は、例えば、テレビ等のディスプレイにビデオコンテンツを出力する。他の実施形態において、パラレルポート1424は、コンピュータモニタ等の異なるディスプレイにビデオコンテンツを出力する。
【0107】
シリアルポート1422及びパラレルポート1424は、出力手段の例である。
【0108】
一部の実装において、DSP1412は一般に、PTPパケットのみを処理する。PTPパケットは、主に制御パケットであることから、DSP1412はメモリ1416を読み込み、パケットを解読し、かつ上記で定義したアルゴリズムを実装する。
【0109】
他の動作において、DSP1412は、音声及び/又はビデオパケットを処理する。このような動作において、DSP1412は、音声及び/又はビデオパケットをメモリ1416中の別の位置へコピーする。またDSP1412は、関連する周辺機器、例えばシリアルポート1422又はパラレルポート1424を起動する。さらにDSP1412は、音声及び/又はビデオパケットのデータをDAC1420に送信する。次に、DAC1420は、データをアナログ信号に変換する。一部の実施形態において、DAC1420は、アナログ信号をシリアルポート1422又はパラレルポート1424に送信する。
【0110】
上記の機能は、スレーブ同期、特に専門ソフトウェアプログラム又はアルゴリズムを実行することができるそれらの回路を伴う任意の集積回路に適用できる。gPtP及び同期に関する一の特定の使用事例は、gPTP対応ネットワークスイッチ/ブリッジにおいてである。さらに、ある種の実施形態は、マルチDSP信号処理、不動小数点処理、信号/制御処理、固定関数処理、マイクロコントローラアプリケーション等に関する。
【0111】
本開示で考察する特徴は、医療システムと、科学又は医療機器(特に高精密な機器)と、無線及び有線通信と、防衛用途(レーダー、及び複数のデバイスを介して中継されるメッセージを時間内に確実に届け、かつ時間内に確実に同期させる等)と、工業プロセス制御(例えば、センサはそれらの収集したデータが有効となるように、同時に同期されなければならない)とにおいて同期させるために適用することができる。本特徴は、音声及びビデオ機器、電流検知、並びに他のデジタル処理ベースのシステムにも適用することができる。
【0112】
本開示の一部の実施形態は、接続ネットワークの精密時間同期を使用するアプリケーションに使用することができる。このようなアプリケーションとしては、例えば、イーサネットオーディオビデオブリッジングによるメディア再生、及び例えば、防衛システム、工業オートメーションシステム、及び医療システムにおける制御情報の同期が挙げられる。
【0113】
本開示のある種の実施形態は、医用画像、患者の監視、及び在宅看護のためのデジタル信号処理技術にプロビジョンすることができる。このプロビジョニングとしては、肺モニタ、アクセロメータ、心拍数モニタ、ペースメーカ等を挙げることができる。他のアプリケーションとしては、安全システム(例えば、安定制御システム、運転者支援システム、ブレーキシステム等)の自動車技術を伴う。他の自動車技術としては、インフォテインメント(例えば、音声/ビデオがいかなる雑音も含まずに再生することができるように、自動車のすべてのデバイスのクロックを調整する)及び内部アプリケーションが挙げられる。さらに、パワートレインシステム(例えば、ハイブリッド及び電気自動車において)は、バッテリ監視、制御システム、通知制御、メンテナンス機能等の高精度の同期製品を使用することができる。
【0114】
また本開示は、生産性、エネルギー効率、及び信頼性の推進を補助するためにプロセス制御システムを含む工業市場に適用することもできる。消費者用途において、上記の同期回路は、画像処理、自動焦点、及び画像安定化(例えば、デジタルスチルカメラ、カムコーダ等のための)に使用することができる。他の消費者用途としては、ホームシアターシステム、DVDレコーダ、及びハイビジョンテレビが挙げられる。さらに他の消費者用途としては、高性能タッチスクリーンコントローラ(例えば、任意のタイプの携帯メディアデバイス)を伴う。それ故、このような技術は、スマートフォン(例えば、iPhone及びAndroidデバイス)、タブレット(例えば、iPad、Microsoft Surface、及びAmazon Kindle)、セキュリティシステム、パーソナルコンピュータ(PC)、ゲーム技術、バーチャルリアリティ、シミュレーショントレーニング等の一部に容易になり得る。
【0115】
ある種の例示的実装において、プロセッサ、ASIC、DSP、又は他の類似の機械によって実行される一以上の有形の非一時的なメディアにコード化される論理(例えば、特定用途向け集積回路(ASIC)にて設けられている埋め込み論理、DSPに対する命令、ソフトウェア[オブジェクトコード及びソースコードにかかわらず])によって、同期機能を実装することができる。別の例では、本明細書において概説される同期機能は、固定論理又はプログラマブル論理(例えば、プロセッサによって実行されるソフトウェア/コンピュータインストラクション)によって実装される。さらに、本明細書において特定される要素は、プログラマブルプロセッサ、プログラマブルデジタル論理(例えば、FPGA、EPROM、EEPROM)又はデジタル論理、ソフトウェア、コード、電子命令、もしくはこれらの任意の好適な組み合わせを含むASICによって実装することができる。非一時的なメディアは、コンパクトディスク、デジタル多用途ディスク、Blu−Rayディスク、ジャンプドライブ、又は他のメディアであり得る。
【0116】
また論理は、伝搬波、電気通信線等の一時的なメディア、又はソフトウェアそれ自体として実装することもできる。
【0117】
またプロセッサによって処理されるソフトウェアは、ダウンロードされ、かつ実行されるインストールプログラムによってインストールされる実行可能ファイルとして、実行することもできる。このため、実行されたソフトウェアは、ダウンロードされたソフトウェアと同様でない場合がある。したがってサーバは、実行される場合、コンピュータにその実行によって、本開示の動作を実行する実行可能ファイルをインストールさせるソフトウェアを格納することができる。
【0118】
上記で提供された例により、交互作用は、明快さ及び単なる例示のために2、3又はそれ以上の要素に関して記載されている。ある場合において、所与の一連のフローの一又は複数の相関関係を限定数のネットワーク要素を参照するのみによって説明した。システムアーキテクチャ及びその特徴は拡張性があり、さらに多数の構成要素、並びにより複雑又は精巧な配置及び構成を収容することができる。したがって、提供された例は、無数の他のアーキテクチャに適用されるものとして、システムアーキテクチャの範囲を限定するものではなく、又はシステムアーキテクチャの特徴を阻害してはならない。
【0119】
前述した機能は、システムアーキテクチャによって、又はその中で実行することができる実現可能な処理シナリオ及びパターンの一部のみを示す。これらの動作の一部は、必要に応じて削除もしくは取り除くことができ、又はこれらの動作は、本開示の範囲から逸脱することなく大幅に修正もしくは変更することができる。さらに、多くのこれらの動作は、一又は複数の付加的な動作と同時に、又はそれらと並行して実行されると説明してきた。しかしながら、これらの動作のタイミングは、大きく変えることができる。前述の動作フローは、例示及び考察のためにのみ提供される。任意の好適な配置、年代順配列、構成、及び調時機構が本開示を逸脱しない範囲で提供することができるという点で、相当な柔軟性をシステムアーキテクチャによって提供することができる。
【0120】
多数の他の変化、代用、変数、変更、及び修正を当業者は確認することができる。本開示は、添付した特許請求の範囲の範囲内にあるとして、すべてのこのような変化、代用、変数、変更、及び修正を包含することが意図される。本明細書に添付の特許請求の範囲を解釈する上で米国特許商標庁(USPTO)、さらに本開示にて記した特許公報の読み手を補助するために、出願人は以下の点に留意するよう望む。すなわち本願出願人は、(a)用語「手段」、又は「ステップ」が特定の特許請求の範囲において具体的に使用される場合を除き、本明細書の出願日に存在しているものとして、添付の特許請求の範囲のいずれも米国特許法第112条(f)に訴えることを意図しない。(b)本明細書のいかなる表現によっても、添付の特許請求の範囲中に別の方法で反映されない、任意の方法において本開示を限定する意図ではない。
【符号の説明】
【0121】
1400…システムオンチップ
1402…物理的コネクタ
1404…PCB配線
1406…PHYチップ
1408…インターフェース
1410…イーサネットメディアアクセスコントローラー(EMAC)周辺機器
1412…デジタル信号プロセッサ(DSP)
1414…インターフェース
1416…メモリ
1420…DAC
1422…シリアルポート
1424…パラレルポート
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14