機械翻訳であり、ネイティブスピーカーによる確認は行われていません。英語版が基準です。

はじめにGitHub で編集ソース:docs/tutorials/02-clock-holdover.md

チュートリアル 2 — クロックのホールドオーバー:どれだけ持ちこたえられるか

Kind: clock · シナリオ:scenarios/clock-holdover.toml(教材用のコピー:scenarios/clock.toml) · 難易度:初級 · 約 20 分

最後まで進めると、GNSS(全球測位衛星システム)の信号を拒否した状態でクロックのホールドオーバーを実行し、タイミングの性能指標を読み、光時計のほうがチップスケール時計より長く持ちこたえる理由を説明する √(q_wf·T) のドリフト則を理解できます。この法則は NIST(米国国立標準技術研究所)を出典とするもので、作り出したものではありません。

このシナリオについて#

GNSS の信号が失われると、システムは搭載クロックで時刻を保ちます。そのクロックの位相はゆっくりとドリフトし、そのドリフトが運用上のタイミング仕様を超えると、サービスが停止します。ホールドオーバーとは、GNSS を失ってから仕様内に留まれる時間のことで、自律性を表す代表的な性能指標です。

このシナリオは 2 時間のタイムラインを実行します。10 分間の GNSS 同期の後、6600 秒(1.83 時間)の拒否があり、20 ns のタイミング仕様に対して、10 秒ごとにサンプリングします。同一のコードで、二つのクロックを、それぞれ自身の公表されたノイズで比較します。

  • 量子:ストロンチウム光格子時計で、宇宙での目標値は σ_y(1 s) = 1×10⁻¹⁵(arXiv:1503.08457)、地上での実証機の目標であり、飛行したことはありません。σ_y(τ) はアラン偏差で、平均化時間 τ におけるクロックの周波数安定度の標準的な尺度です。
  • 従来型:Microchip SA.45s のチップスケール原子時計(CSAC)で、σ_y(1 s) = 3×10⁻¹⁰(データシート)、実際に配備されている市販部品です。

実行する#

cargo run -- scenarios/clock-holdover.toml

Python:

import json, kshana
r = json.loads(kshana.run(open("scenarios/clock-holdover.toml").read()))
print(r["quantum"]["fom"]["holdover_s"], r["classical"]["fom"]["holdover_s"])

一行の要約を読む#

シード = 42、20 ns の仕様、6600 秒の途絶の場合:

scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
  • quantum holdover 6600s — 光時計は、6600 秒の途絶の全体にわたって 20 ns を超えずに保持します。その 95 パーセンタイルの位相誤差は 1.20e-4 ns、つまりナノ秒の一万分の一ほどで、ほとんど動きません。
  • classical holdover 2610s — CSAC は、途絶の半分に満たない約 2610 秒で 20 ns の仕様を超えます。その p95 の位相誤差(19.7 ns)は、仕様の線のすぐ近くにあります。
  • security n/a (no attack) — このシナリオは攻撃を設定していないため、検出するものがなく、要約は数値を出力しません。JSON には、各クロックの解析的なスプーフィング検出可能性の下限が fom.security に引き続き含まれており(光時計では 0.997、CSAC では 0.000。CSAC は、この区間の自身のコースティングノイズがすでに 20 ns を超えています)、figure_tiers ブロックで applicable: false と記されます。実際の攻撃に対する検出の採点は、チュートリアル 3 の話です。
  • integrity 1.000 — ここでこれが指すのはフィルターの自己整合性(カルマンフィルター自身の k シグマの範囲内にある途絶中のサンプルの割合)であり、航空の水平または垂直保護レベル(HPL/VPL)ではありません。docs/INTEGRITY.md を参照してください。

循環しないオラクル:CSAC がなぜ 2610 秒なのか#

白色周波数変調(white-FM)のクロックでは、1-σ の位相誤差は σ_x(T) ≈ √(q_wf · T) のように増加します。ここで q_wf = σ_y(1 s)² の単位は s² です。この関係は NIST Special Publication 1065(Riley, Handbook of Frequency Stability Analysis)の σ_y(τ) と位相の関係に由来し、tests/calibration.rs がエンジンのアラン偏差を約 2 % の範囲で検証するのと同じ SP-1065 の関係です。

CSAC では q_wf = (3×10⁻¹⁰)² = 9×10⁻²⁰ s² です。1-σ の位相が 20 ns = 2×10⁻⁸ s に達する時間を求めます。

T ≈ (2e-8)^2 / 9e-20 = 4e-16 / 9e-20 ≈ 4444 s   (1-sigma crossing)

エンジンの 2610 秒は、その 1-σ の時間ではなく、そうである必要もありません。holdover_s は、このシードによる実現値の絶対位相誤差が 20 ns を超える最初の 10 秒の格子点(step_s = 10)です(src/fom.rs)。ランダムウォークがあるレベルを最初に横切る時刻は、その 1-σ の包絡線がそのレベルに達する時刻よりかなり早いことが多く、実現値には、600 秒の同期の後にフィルターに残る周波数誤差も含まれます。したがって、この法則が定めるのは規模、すなわち 3×10⁻¹⁰ のクロックが 20 ns に達するまでの数千秒であり、正確な値ではありません。試験が主張するのは、その数値ではなく、その周囲の 2000〜3200 秒の帯です。

データシートの基準値自体は外部のものであり、シナリオの provenance の文字列で引用されています。光ストロンチウム格子の目標値 1×10⁻¹⁵(arXiv:1503.08457)、Microchip SA.45s CSAC 3×10⁻¹⁰(データシート)です。そして、エクスポートされる adev_curve は、データシートの σ_y(τ) と約 2 % の範囲で一致します(tests/calibration.rs、NIST SP 1065)。プレイグラウンドで、両対数の「Clock stability (ADEV, Allan deviation)」のグラフとしてプロットできます。

試験が固定するもの#

tests/tutorials.rs::tutorial2_clock_holdover_holds:

  • quantum holdover >= classical holdover(光時計は少なくとも同じ時間だけ保持しなければならない)、
  • quantum holdover ≈ 6600 s(途絶の全体を保持する)、
  • classical holdover ∈ [2000, 3200] s — SP-1065 の白色 FM の規模の周囲にある許容差の帯であり、魔法の数字ではありません。オラクルは法則であって、値ではありません。

落とし穴と単位#

  • タイミングの数値の単位はナノ秒であり、メートルではありません。(位置のホールドオーバーは別のパックです。チュートリアル 3 の慣性の節を参照してください。)
  • q_wf の単位は s² で、σ_y(1 s)² に等しくなります。これが、データシートのアラン偏差の数値とモデルをつなぐ橋渡しです。
  • ホールドオーバーは、格子に量子化された下限です(step_s)。正確な値を読み込みすぎず、帯を読んでください。
  • ここでの integrity は、フィルターの自己整合性であり、航空のインテグリティではありません。

次のステップ#

  • ティア 2:threshold_ns を 20 から 10 に厳しくすると、CSAC のホールドオーバーが低下するのを確認できます(2610 秒 → 1300 秒、exercises/tier2_sweep.py で測定)。あるいは kind = "sweep" を使って、CSAC のノイズレベル classical_q_wf に対するホールドオーバーを表にできます(scenarios/sweep-clock-stability.toml:10⁻²⁴ から 10⁻¹⁸ s² までの 25 点、従来型のホールドオーバーは 2610 秒 → 250 秒)。
  • ティア 3:runs = 200 を追加するとモンテカルロのアンサンブルになり、[p05–p95] のホールドオーバーの帯を読み取れます(scenarios/clock-ensemble.toml は classical holdover 844s [220-2130] を出力します)。
  • そして最後の総仕上げとして、チュートリアル 3 — 量子と従来型のレジリエンス。