123 Main Street, New York, NY 10001

GNSS-Disciplined Oscillators (GPSDO): Disciplining & Holdover

← Back to:Reference Oscillators & Timing

A GPSDO makes time and frequency predictable: it disciplines a high-quality oscillator to GNSS for traceable 10 MHz/1PPS, then uses trained temperature/aging models to keep errors bounded during GNSS outages (holdover).

The engineering goal is simple—control only two knobs (phase error and frequency error) with quality-gated, slew-limited steering, and verify it with measurable pass criteria from bring-up to field operation.

What is a GPSDO and when do you actually need it?

A GPSDO (GNSS-Disciplined Oscillator) combines a GNSS time reference with a high-quality local oscillator (TCXO/OCXO), then uses a disciplining loop to steer frequency/phase and produce traceable timing outputs (typically 10 MHz, 1PPS, and optional time-of-day). The system goal is long-term correctness with controlled short-term behavior, plus predictable holdover when GNSS becomes unavailable.

The minimum system view (no fluff)

GNSS anchor
Provides an absolute time reference (UTC-traceable) and quality flags; can contain short-term noise and outliers that must be gated.
Local flywheel (TCXO/OCXO)
Maintains continuity and short/medium-term stability; defines holdover capability when the anchor disappears.
Disciplining loop
Compares timing, estimates frequency/phase error, and steers the oscillator gradually (no hard time jumps) while rejecting bad GNSS updates.
Outputs
Frequency reference (e.g., 10 MHz), time alignment (1PPS), and optionally time-of-day; plus alarms/logs for operational use.

Typical “yes, a GPSDO is the right tool” triggers

Long-term drift breaks alignment
  • Multi-device phase slowly diverges over hours/days.
  • Frequency bias accumulates into visible timestamp/phase error.
UTC traceability is required
  • Regulatory/forensics/telecom requirements demand traceable time.
  • Logs must include validity/quality indicators, not just “time set”.
Reboot/holdover behavior matters
  • Phase reference must remain predictable through GNSS outages.
  • Warm-up, temperature, and aging must be managed as a system.

When a GPSDO is not the best first choice

Only short-term jitter is the constraint

Use a jitter cleaner/attenuator when the objective is sub-ps RMS jitter at the endpoint. A GPSDO primarily targets long-term correctness and controlled steering.

Only local relative synchronization is needed

Use timing distribution/synchronization solutions (e.g., PTP/SyncE) when the core problem is network distribution and alignment. A GPSDO can be the source, but does not replace protocol-level synchronization.

A low-cost frequency reference is enough

When absolute time and holdover are not requirements, an XO/TCXO often meets the need with less complexity, power, and integration risk.

What to measure first (to avoid misdiagnosis)

  • 1PPS phase error vs time: look for monotonic drift (frequency bias) versus bounded scatter (noise/outliers).
  • 10 MHz frequency offset: check whether the long-term average converges; use the same measurement window each time.
  • GNSS quality flags: correlate phase updates with signal health (satellites/CN0/validity) to identify “false confidence” states.
Pass criteria (define before tuning)

Define the allowed phase error budget and holdover time for the system (e.g., “phase step < X ns on mode changes; holdover drift < Y ns over T hours”). Use the same measurement window and reference each time to keep results comparable.

Diagram: “Need a GPSDO?” decision tree (symptoms → recommended path)
Need a GPSDO decision tree A block-diagram decision tree mapping timing symptoms to recommended solutions such as GPSDO, clock cleaner, PTP/SyncE, or TCXO only. Symptoms Decision gates Recommended path phase drift timestamp error long-term stability UTC traceability reboot mismatch need UTC? traceable need holdover? GNSS loss only jitter? short-term GPSDO GPSDO + cleaner clock cleaner PTP / SyncE TCXO only YES NO YES NO YES NO
Reading tip: “GPSDO” is the time/traceability anchor; “cleaner” is the short-term jitter tool; “PTP/SyncE” is distribution and alignment.
Out of scope (kept intentionally slim)

GNSS positioning theory, deep OCXO/TCXO device physics, and generic PLL/jitter theory are not expanded here. This page focuses on disciplining, quality gating, and holdover as system behaviors.

System model: time error vs frequency error (the only two knobs)

Every GPSDO decision can be expressed using two quantities: time (phase) error and frequency error. Time error is what 1PPS reveals (early/late in ns). Frequency error is the rate that accumulates into time error (fast/slow in ppb or ppm). Disciplining is simply choosing which timescales follow GNSS and which are carried by the local oscillator.

The two knobs in practice

Time / phase error

The observable timing offset on 1PPS (or a time comparator). It answers: “How early/late is the local time edge?”

Frequency error

The rate error (ppb/ppm). It answers: “How fast does time error grow if left uncorrected?”

Rule-of-thumb conversions (for budgeting and sanity checks)

  • 1 ppb ≈ 1 ns/s of time error growth.
  • Over 1 day (86400 s), 1 ppb accumulates about 86.4 µs.
  • For a 10 MHz output, 1 ppb ≈ 0.01 Hz.

Short-term noise vs long-term drift (why measurement windows matter)

Short-term behavior is dominated by noise (random timing scatter and outliers), while long-term behavior is dominated by drift (temperature sensitivity and aging). A GPSDO must reject short-term GNSS defects yet follow GNSS long-term correctness. Confusion often comes from comparing results taken with different averaging windows.

Short window

Highlights jitter/outliers. Useful for detecting bad GNSS updates and time-jump risks.

Medium window

Reveals frequency trend and loop convergence. Use it to tune time constants and slew limits.

Long window

Captures wander and holdover performance. Use it to validate “hours-level” stability and outage behavior.

What “disciplining” actually does (control behavior, not theory)

  1. Compare: measure 1PPS phase error against an internal timebase.
  2. Gate: accept/weight/reject updates based on GNSS quality to avoid injecting bad data.
  3. Estimate: infer frequency bias (and optionally drift states) from phase history using consistent windows.
  4. Steer: adjust oscillator control slowly (slew/step limits) so phase converges without discontinuities.

Signals to log (to make tuning and field diagnosis deterministic)

Core observables
  • phase_error_ns (1PPS)
  • freq_offset_ppb (estimated or measured)
  • gnss_quality_state (valid / degraded / rejected)
Loop behavior
  • loop_mode (acquire / track / holdover)
  • time_constant / update_rate
  • slew_limit / step_limit
Environment hooks
  • temperature (near oscillator)
  • supply / health flags (optional)
  • holdover_enter_reason
Diagram: time error vs frequency error (and why windows change conclusions)
Time error vs frequency error model Two-track diagram showing time/phase error on the top axis and frequency offset on the bottom axis, with an arrow indicating frequency integrates into time and labels for measurement windows. Time / phase error (ns) Frequency offset (ppb) frequency integrates into time short window medium window long window t0 t1 t2 t0 t1 t2
Practical rule: compare results only when the measurement window and reference are identical; otherwise, “contradictions” are expected.

GPSDO architecture: GNSS receiver + estimator + oscillator steering

A practical GPSDO is not “GNSS + oscillator”. It is a pipeline that turns GNSS timing observables into a stable, steerable control signal, then publishes outputs with clear validity states. The architecture becomes unambiguous when each block is defined by what it produces: observables → estimated states → steering commands → outputs & alarms.

End-to-end signal chain (what flows through the system)

1) GNSS observables

1PPS edge, time-of-day (ToD), and quality flags. If available, sawtooth correction refines the 1PPS time-mark model without changing GNSS theory scope.

2) Time compare

Converts edges into an engineering observable: phase_error_ns(t), with sign and validity.

3) Estimator

Produces states used for tracking and holdover: freq_offset, optional aging_rate and temp_sensitivity, plus quality/outlier tags.

4) Steering

Translates states into a bounded command: DAC/EFC codes, digital trim, or micro-step frequency adjustments under slew/step limits.

5) Outputs & ops

Publishes 10 MHz / 1PPS / optional ToD and sync outputs, plus alarms and logs to make behavior operationally deterministic.

Block roles (what each block must guarantee)

GNSS receiver
  • Provide 1PPS + validity.
  • Expose quality flags for gating/weighting.
  • Optional sawtooth correction (refine 1PPS model).
Time compare
  • Output signed phase_error_ns.
  • Keep timestamping consistent (window/latency).
  • Attach measurement validity and mode tags.
Estimator
  • Separate noise vs drift using windows.
  • Maintain states for holdover (aging/temp).
  • Emit outlier and quality-weighting metadata.
Steering
  • Bound the command (slew/step limits).
  • Avoid time discontinuity on outputs.
  • Expose steer_cmd and limit flags for logs.

Minimal log schema (enables deterministic tuning & field diagnosis)

Observables
phase_error_ns, gnss_valid, gnss_quality_state
Estimated states
freq_offset_ppb_est, aging_rate_est (opt), temp_sensitivity_est (opt)
Control & mode
steer_cmd (DAC/EFC/trim), slew_limit_active, loop_mode, update_rate, loop_tau
Environment & events
temperature, holdover_enter_reason, holdover_duration, alarm_bits
Pass criteria (architecture-level)

The system must provide valid outputs with explicit state tags (track/holdover/recovery) and maintain time continuity during steering. Logs must allow correlating phase_error_ns with steer_cmd and GNSS quality decisions.

Diagram: GPSDO system block diagram (antenna → outputs + holdover/alarms)
GPSDO architecture block diagram A block diagram showing antenna and GNSS receiver feeding a time comparator, estimator, and steering path into an OCXO or TCXO, producing 10 MHz and 1PPS outputs, with monitor/alarm and holdover controller side paths. Antenna GNSS RF RF + GNSS receiver 1PPS ToD quality Time compare phase error phase_error Estimator states freq aging temp Steering DAC / trim slew limit OCXO or TCXO Outputs 10 MHz 1PPS Monitor alarm / logs Holdover controller Temp sensor dashed = holdover/ops path
Integration tip: treat phase_error as the only primary observable; everything else is estimation, control, and published state.
Out of scope (kept intentionally slim)

GNSS positioning/ephemeris details and deep OCXO/TCXO device physics are not expanded here. This section only uses GNSS outputs as timing observables and focuses on system-level estimation, steering, and operational states.

Disciplining loop design: capture, track, and avoid “time jumps”

The disciplining loop must converge without creating time discontinuities. Capture and track have different objectives: capture corrects large initial frequency bias quickly under strict limits, while track maintains long-term correctness without injecting short-term GNSS defects. The practical design language is: update rate, loop time constant (τ), slew/step limits, and outlier rejection.

Control objectives (define before tuning)

No time discontinuity

Outputs must not “jump” in time. Phase error must be corrected via bounded frequency steering, not hard phase resets.

Bounded phase error

Keep phase_error within the system budget across temperature and GNSS quality variation.

Predictable convergence

From power-up or recovery, convergence time must be measurable and repeatable under the same windows and references.

Capture mode (large initial error: pull-in fast, but never jump)

When capture is needed
  • Power-up with unknown frequency bias.
  • Recovery after long GNSS outage / holdover.
  • Detected frequency offset exceeds a policy threshold.
Slew-limited steering

Allow larger frequency correction, but clamp the change rate. This converts a large phase error into a controlled phase ramp rather than a discontinuity.

Outlier gate is stricter

Reject questionable GNSS updates aggressively in capture; otherwise, the loop “chases” defects and never settles.

Capture pass criteria (define as measurable thresholds)
  • Max phase step at outputs < X ns (time continuity preserved).
  • Within T minutes, freq_offset_ppb_est converges inside ±Y ppb under stable GNSS quality.

Track mode (choose τ by timescale ownership)

The loop time constant (τ) is not “math decoration”; it decides which timescales are trusted to GNSS and which are carried by the local oscillator. Smaller τ converges faster but injects more GNSS short-term defects. Larger τ smooths short-term behavior but leaves more long-term drift to temperature and aging.

If τ is too small
  • 1PPS phase scatter increases; reject rate rises.
  • Apparent “nervous” steering (steer_cmd jitter).
If τ is too large
  • Long convergence; drift persists after warm-up.
  • Holdover “learning” is weak (aging/temp states lag).
A practical tuning rule

Define a short window where the oscillator dominates (smoothness) and a long window where GNSS dominates (correctness). Choose τ so the transition sits between those windows.

Avoid time jumps (phase step vs phase ramp) + robustness knobs

Why hard alignment fails

Forcing phase error to zero instantly creates a discontinuity. Many systems treat that as a time fault even if the average is “correct”.

The correct approach

Convert phase error into a bounded frequency correction (phase ramp). Enforce slew/step limits and reject GNSS outliers to keep outputs continuous.

Robustness knobs
  • Quality-weighted updates (valid/degraded/reject).
  • Outlier rejection (magnitude and slope checks).
  • Integrator protection (avoid wind-up in recovery).
Pass criteria (loop-behavior)
  • Mode transitions show no observable phase step above X ns at 1PPS output.
  • Phase error converges with bounded overshoot and a repeatable settling time under the same measurement window.
Diagram: phase step vs phase ramp (cause → fix → pass)
Phase step versus phase ramp comparison A side-by-side curve comparison showing a hard phase step causing time discontinuity versus a phase ramp achieved by bounded frequency steering, with small cause/fix/pass blocks. phase error (concept) t0 t2 phase step discontinuity phase ramp slew limit update rate loop τ cause → fix → pass Cause Hard phase align creates a time discontinuity. Fix Frequency steering with slew/step limits + gating. Pass max phase step < X ns bounded settling time
A healthy loop converts phase error into a controlled phase ramp. Discontinuities are prevented by slew/step limits and by rejecting low-quality GNSS updates.
Out of scope (kept intentionally slim)

Full PLL transfer-function derivations are intentionally omitted. This section focuses on system behavior: capture/track modes, τ selection by timescale ownership, bounded steering, and robust gating to preserve time continuity.

Holdover strategy: temperature, aging, and predictive steering

Holdover is where the system value shows up: when GNSS becomes unavailable, the oscillator must remain usable with explicit state tags. A practical strategy starts by budgeting error sources (temperature, aging, and short-term noise), then selecting a strategy tier (freeze → temperature-compensated → aging-aware → hybrid predictive), and finally defining a training/logging plan so holdover performance is repeatable.

Holdover error sources (what dominates as time extends)

Temperature sensitivity

TCXO errors follow a temperature curve; OCXO errors often track thermal gradients and airflow changes. Sensor placement near the oscillator matters more than “ambient” temperature.

Aging drift

Aging is a slow, trend-like frequency drift. It becomes the visible “direction” of error growth on multi-hour holdover windows.

Supply sensitivity

Power mode changes (loads, fan profiles, regulator noise) can shift control voltage noise and effective frequency. Treat supply state as a logged condition.

Short-term noise

Noise widens the uncertainty envelope. It rarely sets the long-term trend, but it determines how conservative the predicted bounds must be.

Strategy tiers (complexity only where it buys stability)

Tier 0 — Freeze last good frequency

Hold freq_cmd constant at the last trusted estimate. Works for short windows, but temperature and aging will dominate drift over time.

Tier 1 — Temperature-compensated holdover

Apply a temperature model: freq_cmd = base + f(temp). Use sensor placement and filtered temperature, and avoid updating the model when GNSS quality is degraded.

Tier 2 — Aging-aware holdover

Estimate aging_rate using a long window during healthy GNSS. In holdover, steer predictively: freq_cmd(t) = base + aging_rate · Δt.

Tier 3 — Hybrid predictive steering

Combine temperature compensation (fast variable) + aging trend (slow variable) + recent history smoothing (robustness). Protect against overfitting with model versioning and quality-gated training updates.

Training period (what to accumulate while GNSS is healthy)

Holdover does not appear “for free”. It is improved by accumulating stable statistics and fitting models under known conditions. Training should cover steady state and controlled perturbations (temperature ramps, airflow changes, and power modes), while only accepting updates when GNSS quality is trusted.

Must-log signals
phase_error_ns, freq_offset_ppb_est, temperature, gnss_quality_state, steer_cmd
Holdover readiness tags
model_id, temp_model_valid, aging_rate_est, aging_confidence, supply_mode
Validation fields
holdover_time_error_1h_max, 6h_max, 24h_max (bind to conditions)

How to fill “expected time error vs time” (1h / 6h / 24h)

Method A — test envelope

Enter holdover intentionally, log time error versus time, repeat across conditions, and publish a conservative upper bound tied to temperature range and supply mode.

Method B — budget build-up

Estimate temperature term + aging term + noise term separately, then combine into a bound. Use field logs to keep the bound realistic and guardbanded.

Diagram: holdover error budget stack + expected time error envelope (1h / 6h / 24h)
Holdover error budget stack and expected time error envelope A stacked budget showing temperature, aging, and noise contributions, with a right-side conceptual curve of expected time error increasing over 1 hour, 6 hours, and 24 hours. Holdover budget (concept) Temp dominant term Aging Noise short long time increases Expected time error (envelope) 0 time time error 1h 6h 24h fill by test fill by budget bind to conditions
Publish holdover as a conservative envelope tied to conditions (temperature range, airflow/power modes, oscillator type), not as a single number.
Out of scope (kept intentionally slim)

Deep oscillator physics and phase-noise derivations are intentionally omitted. This section focuses on holdover as a system strategy: error sources, strategy tiers, training/logging, and validation envelopes.

GNSS quality and failure modes: multipath, jamming, antenna and cable issues

This section treats GNSS as a timing observable provider. The goal is not positioning theory, but input trust management: decide when to accept, weight, or reject updates, and when to trigger holdover with a clear reason code.

Must-watch flags (minimal set for GPSDO control)

Time validity

Hard gate: invalid time updates must be rejected and logged; do not “average” invalidity into the loop.

Sat count & CN0

Primary quality indicators for weighting. Sudden drops often correlate with multipath, antenna feed issues, or interference.

Sawtooth availability

If present, apply consistently; if absent, do not mix modes silently. Treat it as a state that affects expected phase scatter.

Holdover enter reason

Always log the trigger reason (quality degraded, outliers, invalid time, antenna fault). This is required for repeatable field diagnosis.

Common failure modes (symptoms → first checks)

Antenna power / LNA bias issues

Symptoms: time validity flaps, sat/CN0 collapses. First checks: feed voltage/current, protector drop, connector corrosion.

Long coax attenuation

Symptoms: persistently low CN0, sensitivity to people/motion near the antenna. First checks: length/connector/spec, inline components, A/B bypass.

Multipath (indoor reflections)

Symptoms: phase_error scatter expands, outliers appear even when “lock” looks present. First checks: placement, reflective surfaces, time-of-day correlation.

Jamming / strong interferers

Symptoms: sudden CN0 drops, degraded quality states, widespread rejects. First checks: site EMI events, equipment schedules, shielding/grounding changes.

Defensive control: accept / weight / reject + holdover trigger policy

Accept

Valid time + quality above policy thresholds → update the loop normally (weight ≈ 1).

Weight

Valid time but degraded quality → reduce influence (weight < 1) to avoid injecting short-term defects.

Reject

Invalid time or outlier behavior (magnitude or slope) → do not update; increment counters; attach a reason code.

Trigger policy (avoid flapping)
  • Enter holdover after continuous rejects ≥ N or accept-rate below threshold for duration T.
  • Exit holdover after continuous accepts ≥ M with recovered quality (use hysteresis).
  • Log enter/exit events with reason_code and quality summary.
Diagram: quality gating logic (accept / weight / reject → loop update / holdover trigger)
GNSS quality gating logic diagram A logic block diagram taking 1PPS and quality flags, classifying updates into accept, weight, or reject paths, and outputting loop updates or holdover triggers with counters and reason codes. 1PPS edge + valid quality sat / CN0 flags sawtooth optional Quality gating ACCEPT valid quality ok WEIGHT valid degraded weight < 1 REJECT invalid outlier count++ reason loop update update · weight holdover trigger enter reason hysteresis
Implement gating as a deterministic policy: validity is a hard gate, quality controls weight, and outliers force reject with counters and reason codes.
Out of scope (kept intentionally slim)

GNSS positioning theory, ephemeris details, and anti-jam hardware design are intentionally omitted. This section focuses on timing integrity: flags, observable symptoms, and gating/trigger logic that directly impacts disciplining and holdover behavior.

Outputs & distribution: 10 MHz, 1PPS, ToD, and system integration

GPSDO outputs can look “correct” on a bench while the system still fails to align. Integration must treat 10 MHz as the frequency reference domain, 1PPS as the alignment marker, and ToD as time semantics. A reliable design closes the loop with distribution rules, endpoint consumption patterns, and verification points.

Output roles (do not mix domains)

10 MHz — frequency reference

Drives synthesizers and clock trees. It stabilizes long-term frequency and reduces wander at downstream PLLs.

1PPS — alignment marker

Establishes a shared “time boundary”. Used for delay calibration, phase alignment, and detecting drift across domains.

ToD — time semantics

Provides absolute time for timestamp meaning (log correlation, traceability, and event ordering). Treat ToD as a tagged source to avoid mixing.

Integration tags (recommended)
freq_ref_source, pps_source, tod_source, delay_calibrated, endpoint_lock_state

Distribution rules (system-level, verify-by-probe)

Hierarchy

Keep a clear tree: GPSDO → (optional cleaner) → fanout → endpoints. Avoid hidden side paths that create “silent” reference domains.

Isolation & return paths

Branch sensitive endpoints separately (converter / SerDes) from noisy consumers (management / external IO). Preserve controlled return paths and avoid crossing ground slots.

Verification points

Add probe taps at each stage (post-GPSDO, post-cleaner, post-fanout, endpoint input). Verify amplitude/edge integrity and track phase drift over time.

Endpoint integration patterns (define consumption explicitly)

Converters (ADC / DAC)

10 MHz typically anchors a synthesizer/cleaner; 1PPS provides alignment checkpoints and delay calibration for multi-device phase coherence.

SerDes / PHY chains

Treat the reference as a chain: ref → PLL/CDR behavior → lock. Consistency across cards matters more than “looks good” at a single node.

Timing / PTP / PTS

1PPS and ToD establish timestamp meaning and traceable time. 10 MHz improves local oscillator behavior and reduces drift between corrections.

Monitoring taps

Expose a system boundary view: phase drift between domains, frequency offset estimates, and mode tags (track/degraded/holdover).

Multi-card redundancy (main/backup switching without surprises)

Path symmetry

Keep main and backup paths structurally similar (same stages and distribution depth). Asymmetry creates phase deltas that become visible at switch time.

Switch criteria (hitless as a criterion)

Only switch when phase/frequency delta between sources is within a defined window; validate by endpoint lock stability and absence of retrain/time jumps.

Switch event logging

Record switch_reason, phase_delta_at_switch, lock_drop_count, and the active mode tag (track/holdover) for postmortem analysis.

Verification checklist (system synchronized, not just outputs present)

  • Confirm all endpoints consume the same 10 MHz domain (source-tagged).
  • Measure 1PPS relative delay at multiple endpoints; ensure it is explainable (cable/fanout).
  • Verify ToD is single-source and consistently consumed (avoid mixed semantics).
  • Validate reboot and mode transitions do not introduce time jumps.
  • Validate holdover entry/exit maintains alignment expectations and produces a reason-coded log trail.
Diagram: system integration map (GPSDO → optional cleaner → fanout → endpoints + main/backup + monitor)
GPSDO system integration map A system-level map showing GPSDO outputs routed through optional cleaner and fanout to multiple endpoints, with a main/backup path and a switch monitor block plus probe taps. GPSDO 10 MHz 1PPS / ToD Cleaner optional probe Fanout clk tree pps tree tap ADC / DAC sampling domain SerDes / PHY ref domain Timing / PTP timestamps Monitor phase / alarms Main / Backup Main path Backup path SW
Treat integration as a tagged hierarchy and verify at each probe tap. “Outputs present” is not the same as “system aligned”.
Out of scope (kept intentionally slim)

Component-level fanout selection, output standard details, and termination recipes are intentionally omitted here. This section focuses on system mapping, integration tags, and verification checkpoints.

Monitoring, alarms, and switchover: making GPSDO operational

A GPSDO is operational only when it is observable and predictable: alarms must be defined as a policy (with thresholds and debounce), events must be logged with reason codes and state snapshots, and switchover must avoid flapping via hysteresis and recovery windows.

Must-have alarms (minimal set)

loss_of_gnss

Raised when GNSS validity is lost or cannot be trusted for updates.

holdover_active

Indicates operation in holdover with a reason code and a time-since-enter counter.

phase_error_hi

Threshold-based alarm on phase/time error; tune thresholds per mode (track/degraded/holdover).

freq_offset_hi

Threshold-based alarm on estimated frequency offset; use debounce to avoid spurious triggers.

temp_out_of_range

Alarm on thermal conditions that invalidate the model or degrade stability; bind the alarm to sensor placement and airflow mode.

Alarm record (recommended fields)
alarm_id, start_time, end_time, severity, reason_code, debounce_state, snapshot_ref

Threshold policy (debounce and hysteresis prevent flapping)

Per-mode thresholds

Track, degraded, and holdover should not share a single threshold set. Bind thresholds to mode and expected noise/uncertainty.

Debounce windows

Require sustained violation for duration T to assert an alarm; require sustained recovery for duration T to clear.

Hysteresis

Use separate assert/clear thresholds to avoid rapid toggling near a boundary during environmental changes.

Event logging (postmortem-ready)

Every mode transition and switchover must carry a reason code and a compact state snapshot. Without this, field behavior cannot be explained or improved.

Holdover transitions
enter_reason, exit_reason, time_since_enter, last_good_fix_time, quality_summary
State snapshot
phase_error_ns, freq_offset_ppb_est, aging_rate_est, temp_state, steer_cmd, supply_mode
Switchover events
switch_reason, phase_delta_at_switch, lock_drop_count, active_mode, recovery_window_result

Automatic switchover (conditions + debounce + recovery)

Trigger

Switch when loss_of_gnss persists, quality remains degraded, or phase/frequency alarms sustain beyond policy windows.

Debounce & hysteresis

Debounce prevents rapid toggling. Hysteresis separates assert/clear boundaries and reduces oscillation during marginal conditions.

Recovery window

After GNSS returns, use a recovery state to observe stability before re-entering track. This avoids repeated mode flips.

Diagram: alarm & switchover state machine (Track → Degraded → Holdover → Recovery)
Alarm and switchover state machine for GPSDO operation A state machine with Track, Degraded, Holdover, and Recovery states, labeled transition triggers, plus side blocks for emitted alarms and debounce/hysteresis policy. TRACK normal updates DEGRADED down-weight HOLDOVER predictive steer RECOVERY observe window quality low reject burst GNSS stable phase stable Alarms emitted loss_gnss holdover phase_hi freq_hi Policy guards debounce hysteresis
Make mode transitions deterministic: define triggers, apply debounce/hysteresis, and attach reason-coded snapshots to every transition.
Out of scope (kept intentionally slim)

Detailed hardware implementations (TDC choices, monitor IC selection, and exact threshold numbers) are intentionally omitted. This section defines operational policy, alarm taxonomy, event schema, and switchover behavior.

Verification & measurement: what to measure and common traps

Validation should produce a reproducible evidence chain. The minimum set is a time-error trend (1PPS phase error) and a frequency-error trend (10 MHz offset), both tied to the same timeline and mode tags. Long-term stability metrics (TDEV, MTIE, Allan deviation) are useful only when the measurement window, gating policy, and reference quality are explicitly controlled and recorded.

Must-measure set (minimum evidence chain)

1PPS phase error vs time

Record continuous phase/time error in nanoseconds with a stable trigger policy. This is the primary evidence for alignment behavior and transitions.

10 MHz frequency offset vs time

Track frequency offset (ppb/ppm). Frequency error integrates into time error, so both trends must be recorded on the same timeline.

Mode tags and context

Always log mode (track/degraded/holdover/recovery) plus minimal context (quality grade, temperature, supply, steering command) to explain anomalies.

Minimal CSV schema (recommended)
t_utc, mode, pps_phase_ns, freq_offset_ppb, quality_grade, temp_c, supply_v, steer_cmd

Long-term metrics (use-case driven, no derivations)

Allan deviation

Answers “frequency stability vs averaging time”. Use it to identify the best observation window and where drift dominates at long τ.

TDEV

Answers “time stability vs τ”. Prefer TDEV when the deliverable is timing alignment or timestamp quality rather than pure frequency.

MTIE

Answers “worst-case time error over τ”. Use MTIE to express operational risk and pass/fail thresholds in holdover windows.

Reporting rules (recommended)
declare tau_set, data_length, gating/outlier policy, temperature condition, and reference class

Wander vs jitter (the most common misread)

Mistake: treating short-term noise as drift

A noisy 1PPS trend can look “bad” even if long-term stability is acceptable. Evaluate by τ-binned metrics rather than a single RMS number.

Mistake: over-averaging hides drift

Heavy averaging can make plots look clean while bias slowly accumulates. Always include raw trend and the declared filter window.

Non-negotiable rule

Report must include raw trend + filtered trend + declared policy parameters (window, gate, outliers).

Common measurement traps (cause → symptom → avoidance)

Unstable reference

Cause: reference wanders more than the DUT.
Symptom: DUT appears to “drift” while the reference is the real mover.
Avoid: use a higher-class reference or cross-check against a second reference.

Gate/averaging policy changes the answer

Cause: different gate time and smoothing windows.
Symptom: “pass” under one window and “fail” under another.
Avoid: freeze a declared policy and always publish it with results.

Random noise misread as wander

Cause: short-term jitter dominates the visible trend.
Symptom: phase plot looks “messy” without meaning long-term failure.
Avoid: evaluate TDEV/MTIE across multiple τ ranges (seconds, minutes, hours).

Ground/cable/thermal artifacts

Cause: return-path changes, cable motion, or temperature gradients.
Symptom: step-like offsets or bursts of outliers unrelated to GPSDO state.
Avoid: fixed cabling, same ground reference, stable thermal environment.

Trigger/timebase mismatch

Cause: inconsistent trigger source or timebase tagging across instruments.
Symptom: periodic “sawtooth” patterns or phantom jumps.
Avoid: use a single declared trigger and a consistent timeline for logging.

Minimum viable test setup (MVT)

Compare the DUT GPSDO against a reference using a time interval counter (or phase comparator) and a logger. References can be tiered (another high-quality GPSDO, rubidium, or lab-grade) but the critical factor is disciplined test control.

Tiered reference concept
Tier 1: another GPSDO (cross-check) · Tier 2: rubidium (better mid/long) · Tier 3: lab-grade reference (metrology)
Pass statement template
Track: pps_phase within [X] over [Y] with policy [Z] · Holdover: MTIE@tau_set below [X] over [1h/6h/24h] · Transitions: no time jump
Diagram: measurement setup (DUT vs reference + TIC/phase comparator + logger)
GPSDO verification measurement setup Block diagram showing DUT GPSDO and a reference feeding a time interval counter or phase comparator, with a logger/analyzer. Three warning icons highlight same reference, same ground, and stable thermal conditions. DUT GPSDO 1PPS 10 MHz REFERENCE GPSDO / Rb / lab 1PPS 10 MHz TIC / Phase Comparator gate time timestamps outliers Logger / Analyzer phase trend freq trend TDEV / MTIE Discipline ! same ref same ground stable thermal
Make results reproducible: declare the reference class, fix the gating policy, and control ground and thermal conditions.
Out of scope (kept intentionally slim)

Detailed phase-noise math and RMS jitter budgeting are intentionally omitted. This section focuses on time/frequency validation, long-term stability reporting discipline, and measurement traps.

Design hooks & pitfalls: power, thermal, isolation, and mode transitions

Field failures often come from coupling paths rather than the disciplining algorithm itself. Power noise can modulate steering, thermal gradients can dominate holdover behavior, poor isolation can create outlier bursts, and mode transitions can introduce overshoot, wind-up, or slow bias drift that hides in short tests.

Power-to-steering coupling (symptoms and countermeasures)

Symptom

Steering command (DAC/EFC) shows correlated ripple or step-like changes that track digital activity or load transitions.

Why it matters

Control-path contamination becomes frequency error, which integrates into time error. It can look like “bad GPSDO behavior” even when GNSS is stable.

Verification hook

Check correlation between steer_cmd and supply_v / IO activity. Strong correlation indicates coupling, not true oscillator drift.

Thermal placement and gradients (holdover is dominated here)

OCXO sensitivity

Thermal gradients and airflow changes can degrade holdover even when the average board temperature looks “stable”.

TCXO sensitivity

Temperature curves and sensor placement matter. A temperature reading that does not represent the resonator temperature produces false compensation.

Verification hook

Apply controlled temperature steps and compare the repeatability of freq_offset and pps_phase response. Non-repeatability indicates gradients or sensor mismatch.

Isolation and grounding (what to isolate, what must be shared)

Isolate noise injectors

Keep digital IO bursts, switching supplies, and high-current returns from coupling into the reference and steering paths.

Share measurement truth

Measurements require a consistent reference and ground. Over-isolation can create “moving baselines” that look like drift.

Quick exposure test

Toggle IO or load steps while observing outlier bursts on 1PPS phase error. Bursts indicate coupling paths that must be corrected.

Mode transitions (wind-up, overshoot, and slow bias drift)

Transition bugs are often intermittent and are missed by short tests. Recovery behavior must be defined as a policy: limit slew, prevent integrator wind-up, and require a stability window before declaring “back to track”.

Wind-up

Symptom: large correction overshoots after outage.
Fix: anti-windup, clamp integrator, staged enable during recovery.

Overshoot / time jump risk

Symptom: abrupt phase step during recovery.
Fix: phase ramp / frequency slew, observe window before full re-lock.

Slow bias drift

Symptom: short tests look stable, hours drift out.
Fix: evaluate long-τ MTIE/TDEV, verify model consistency with temperature/aging states.

Practical checklist (fast field triage)

  • Check steer_cmd correlation with supply_v and IO/load activity.
  • Run controlled thermal steps and compare repeatability of freq_offset and pps_phase.
  • Look for outlier bursts on 1PPS during IO/load toggles (coupling exposure test).
  • Validate recovery behavior with a stability window and anti-windup policy.
  • Include long-τ MTIE/TDEV in holdover validation; short plots are not sufficient.
Diagram: mode transition pitfalls (wind-up / overshoot / slow drift)
Mode transition pitfalls for GPSDO recovery Three-panel diagram showing wind-up, overshoot, and slow bias drift with simplified curves and short cause/fix labels. Wind-up sat Cause: integrator accumulates Fix: anti-windup clamp Overshoot jump risk Cause: aggressive recovery Fix: ramp / slew limit Slow bias drift short test Cause: model mismatch Fix: long-τ MTIE/TDEV
Transition behavior must be verified with recovery windows and long-duration metrics, not only short “looks stable” plots.
Out of scope (kept intentionally slim)

Detailed regulator selection, full PCB isolation recipes, and oscillator vendor-specific tuning are intentionally omitted. This section consolidates coupling paths and mode-transition pitfalls that most often cause field failures.

Engineering checklist (Plan → Build → Verify → Operate)

This checklist turns GPSDO theory into an execution sequence. It prevents the two most common failure patterns: (1) closing the loop on bad GNSS timing quality, and (2) “passing bench tests” but failing in the field due to missing alarms, logs, and recovery discipline.

A) Plan checklist (define “pass” before building)

  • Define targets: holdover duration (1h/6h/24h), environment (temperature range, airflow), and whether the priority is time (1PPS/ToD) or frequency (10 MHz).
  • Define outputs & interfaces: 10 MHz / 1PPS / ToD, output standard (LVCMOS/LVDS), and distribution method (direct, fanout, redundant path).
  • Define operational contract: alarms, thresholds, debounce/hysteresis, and remote access (UART/USB/Ethernet/SNMP if applicable).
  • Define the logging schema: do not start bring-up without a minimal dataset (see below).
Minimal log schema (recommended)
mode, t_utc, gnss_valid, sat_count, cn0_avg, sawtooth_ok, pps_phase_ns, freq_offset_ppb, steer_cmd_dac, loop_tau_s, slew_limit, temp_c, supply_v, holdover_reason, alarm_bits
Pass criteria must be tied to these fields (not to “looks stable on a scope”).

B) Build checklist (block coupling paths early)

  • Power hygiene: separate rails (GNSS RF / digital / DAC-EFC / oscillator), place low-noise LDO near the oscillator and DAC-EFC loop, and keep return paths continuous.
  • Thermal discipline: avoid placing OCXO next to high-dissipation components; minimize thermal gradients and airflow turbulence across the can/package.
  • Isolation & routing: keep 10 MHz and 1PPS away from fast digital edges; if differential clocks are used, maintain impedance and symmetry; avoid stitching-via gaps under clock routes.
  • Antenna chain sanity: validate antenna bias, lightning protection insertion loss/distortion, and cable length/attenuation assumptions (especially for long coax).
Pass criteria examples (structure)
  • Noise-sensitive rails: ripple/noise low enough that steer_cmd_dac does not correlate with load transients.
  • Thermal: temperature sensor near oscillator tracks local temperature changes without large lag.

C) Bring-up checklist (do not close the loop too early)

  1. Stage 1 — GNSS quality first: confirm gnss_valid, stable sat_count/cn0_avg, and consistent time-pulse behavior. If quality flags are unstable, keep the loop open.
  2. Stage 2 — Enable disciplining (conservative): start with a long time constant (large loop_tau_s), strict outlier rejection, and a low slew_limit.
  3. Stage 3 — Tune only one knob at a time: adjust τ, then slew limit, then gating thresholds; each change requires a fixed observation window with logs captured.
  4. Stage 4 — Recovery behavior: force a GNSS outage test and verify no “time jumps” during recovery (prefer phase ramp / frequency steering).
Pass criteria (bring-up)
  • Track mode: pps_phase_ns stays within the system budget for an agreed window.
  • Holdover entry: reason code is deterministic; freq_offset_ppb does not jump at entry.
  • Recovery: no step-like discontinuity in time output; steering returns smoothly.

D) Field checklist (operational readiness)

  • Alarm set: loss of GNSS, holdover active, phase error threshold, frequency offset threshold, temperature out-of-range, and “quality degraded” (gated updates).
  • Event records: store holdover enter/exit time, reason code, last good fix time, and estimated states (aging/temp if available).
  • Maintenance actions: antenna/cable inspection routine, connector torque & corrosion checks, and environmental checks (airflow, nearby emitters).
  • Switchover discipline: apply hysteresis/debounce; never switch on single-sample spikes. Verify after switching: output continuity and phase/frequency within the budget.
Field “first checks” (fast triage)
  • If phase error spikes: check cn0_avg/sat_count trend and sawtooth availability before touching loop settings.
  • If holdover drift worsens: check local temperature gradient and whether temp_c tracks the oscillator vicinity.
  • If alarms chatter: increase debounce/hysteresis; do not widen loop bandwidth as a “quick fix”.
SVG-11 · Checklist flow (Plan → Build → Verify → Operate)
GPSDO engineering checklist flow A four-stage flow for planning, building, verifying, and operating a GPSDO, with short action items per stage and a feedback loop from field operation back to planning. Plan Build Verify Operate holdover target outputs & levels alarms & ops log schema clean rails thermal placement isolation antenna chain quality gating enable loop tune τ & limits prove holdover thresholds event codes maintenance recovery checks field data → refine thresholds & models GPSDO execution flow (single discipline, no skipped stages)

Tip: If a step cannot be proven with logs (phase, frequency, quality, mode), treat it as “not done”.

Applications & IC selection notes (GPSDO-focused)

This section maps real deployment requirements to GPSDO architecture choices, then lists concrete reference part numbers to accelerate datasheet lookup and lab verification. Treat the part numbers as starting points only; always validate package, suffix, availability, and performance in the target environment.

A) Application patterns (GPSDO-relevant only)

Telecom backhaul / datacenter timing
Need: traceable timing + predictable holdover during GNSS loss.
Outputs: 10 MHz + 1PPS/ToD (site standard).
Holdover: define hours + temperature range; favor OCXO when long and harsh.
Ops: alarms + remote logs + deterministic recovery (no time jumps).
Lab frequency reference / metrology bench
Need: long-term repeatability + audit-friendly verification logs.
Outputs: 10 MHz is the primary; 1PPS used for correlation.
Holdover: prioritize thermal discipline; model-based holdover improves stability.
Ops: stable measurement setup and time-series reporting (phase/frequency).
Distributed DAQ / multi-node timestamp alignment
Need: consistent time across reboots and across nodes.
Outputs: 1PPS + ToD are critical; 10 MHz optional for local clocks.
Holdover: define outage scenarios; avoid step corrections on recovery.
Ops: reason codes + quality-weighted disciplining (gated updates).
Broadcast / video synchronization (genlock-adjacent)
Need: stable time alignment with controlled switching behavior.
Outputs: 1PPS/ToD alignment discipline; 10 MHz for system clock trees.
Holdover: short outages still matter; recovery must be ramped (no jump).
Ops: alarms + switch validation on live transitions.
Radar / measurement systems (clock purity + traceability)
Need: clean frequency reference plus long-term traceability.
Outputs: 10 MHz (or a derived RF clock tree), 1PPS for correlation.
Holdover: OCXO commonly preferred; thermal gradients dominate drift.
Ops: verify that short-term clock purity is preserved (optionally add a cleaner).

B) Selection rules (turn requirements into an architecture)

  • OCXO-GPSDO fits when: holdover must remain tight over hours, temperature/airflow is variable, and predictable long-term stability is required. Plan for higher power and stronger thermal discipline.
  • TCXO-GPSDO fits when: size/power is constrained, environment is moderate, and holdover targets are shorter or looser. Expect stronger temperature sensitivity; use model-based holdover if possible.
  • GPSDO + clock cleaner fits when: the system needs both traceable long-term timing and very low short-term jitter at specific interface clocks. Keep the loop discipline conservative; avoid injecting GNSS short-term noise into the clean domain.
  • Dual-GPSDO redundancy fits when: continuity and operational uptime dominate (critical infrastructure). Define switchover hysteresis and post-switch validation (phase/frequency within budget).

C) Reference examples (material numbers for fast datasheet lookup)

These examples speed up evaluation. Always verify the exact suffix, package, performance grade, and timing features (1PPS/ToD flags, monitoring, and configuration tooling).

GNSS timing receiver / module
  • u-blox ZED-F9T (timing module)
  • u-blox NEO-M8T-0 (timing module)
  • Septentrio mosaic-T (GNSS timing module)
Oscillator options (holdover driver)
  • OCXO: Isotemp OCXO 143-55 (example OCXO family)
  • OCXO: Rakon ROM1490X (example high-stability OCXO)
  • TCXO: Epson TG-5006CJ (example TCXO family)
  • Super-TCXO: SiTime SiT5356 (example ordering code: SIT5356AI-FQ-33E0-10.000000X)
Steering actuation & sensing
  • Precision DAC for EFC: ADI AD5686R (quad 16-bit DAC, internal reference)
  • Temperature sensor (local thermal model): TI TMP117
Clock cleaning / distribution blocks
  • Jitter attenuator / cleaner: Skyworks/Silicon Labs Si5341 (family example)
  • Timing/Sync manager: Renesas 8A34001 (system synchronizer class)
  • Fanout buffer: TI LMK00334 (HCSL fanout buffer class)
Low-noise power rails (reduce control-loop modulation)
  • Ultra-low-noise LDO: ADI LT3045
  • Low-noise LDO: TI TPS7A47 (example device: TPS7A4700)
Verification instruments (reference examples)
  • Time interval / counter: Keysight 53230A (time interval & frequency measurements)
SVG-12 · Selection flow (Requirements → Architecture choice)
GPSDO selection flowchart Inputs on holdover, temperature, outputs, and operational alarms feed decisions that lead to architecture outputs: TCXO-GPSDO, OCXO-GPSDO, GPSDO plus cleaner, or dual GPSDO redundancy. Inputs (requirements) holdover hours temperature range outputs needed ops alarms / logs Decisions holdover long? short / long thermal stable? yes / no short-term purity critical? Outputs (architecture) TCXO-GPSDO low power short / moderate holdover OCXO-GPSDO best holdover thermal care GPSDO + cleaner very low short-term interface clocks Dual GPSDO continuity failover & alarms Output choice must match holdover hours, thermal reality, outputs, and operational alarms (not just “best spec”)

Use this flow to keep selection disciplined: requirements → architecture → verification plan → field contract.

Request a Quote

Accepted Formats

pdf, csv, xls, xlsx, zip

Attachment

Drag & drop files here or use the button below.

FAQs (GPSDO disciplining, holdover, measurement, alarms, antenna)

Each answer is intentionally short and executable. Format is fixed: Likely cause / Quick check / Fix / Pass criteria.

GNSS lock is “OK” but 1PPS phase still slowly drifts—first check what?
Likely cause: Frequency steering is biased (aging/thermal model or DAC/EFC offset), so time error integrates into a slow phase drift.
Quick check: Log pps_phase_ns slope and compare with freq_offset_ppb trend over ≥2–6 hours; also check correlation with temp_c and steer_cmd_dac.
Fix: Enable/retune temperature + aging estimation (or increase model weight), and remove steady bias (DAC/EFC offset calibration) before tightening the loop.
Pass criteria: Phase drift rate stays within budget: |d(pps_phase_ns)/dt| < X ns/hour over Y hours (X, Y from system timing budget).
Why does disciplining cause periodic “time bumps” every N minutes?
Likely cause: Control updates are quantized or scheduled (windowed averaging / step policy / sawtooth or ToD correction cadence), creating periodic corrections.
Quick check: Overlay bump timestamps with loop update interval and any “correction” events; log mode, steer_cmd_dac, and flags like sawtooth_ok / ToD validity across ≥3–5 bump cycles.
Fix: Replace step corrections with ramped steering (slew-limited), increase update granularity (smaller steps), and gate corrections when quality is degraded.
Pass criteria: Periodic phase excursions disappear or become ramps with peak-to-peak amplitude < X ns (X from endpoint tolerance).
Holdover after GNSS loss is much worse than expected—temperature or aging first?
Likely cause: Temperature gradient/changes dominate early holdover; aging dominates longer horizons once temperature is stable.
Quick check: During a forced outage, log temp_c, freq_offset_ppb, and inferred phase drift over 1h/6h/24h; compute correlation between drift and temperature (strong correlation → temperature first).
Fix: If temperature dominates, enable temp-compensated holdover (model + local sensor placement). If temperature is stable but drift persists, estimate aging rate online and apply predictive steering.
Pass criteria: Holdover time error stays within target: |time_error| < X at 1h/6h/24h (X per SLA); drift curve matches the expected budget stack (Temp/Aging/Noise).
Recovery from holdover overshoots and takes hours—what parameter is usually wrong?
Likely cause: Integrator wind-up or an aggressive capture policy causes overshoot; long τ then makes the system painfully slow to settle.
Quick check: At GNSS return, plot steer_cmd_dac vs pps_phase_ns: a sharp command spike followed by slow correction indicates wind-up + too-long τ.
Fix: Add anti-windup (clamp/reset integrator on mode changes), use a two-stage recovery (fast-but-slew-limited capture, then conservative tracking), and tighten outlier gating during reacquisition.
Pass criteria: No overshoot beyond X ns and settle within Y minutes (X/Y from system recovery SLA), with command transitions bounded by slew limit.
Long antenna cable works on bench but fails in the field—what to log first?
Likely cause: Field conditions change the RF link budget or introduce distortion (bias issues, protector nonlinearity, moisture/connector loss), degrading timing quality without an obvious “unlock”.
Quick check: Log sat_count, cn0_avg, gnss_valid, holdover_reason, and any antenna-bias status during the failure window; compare to bench baseline at the same update rate.
Fix: Treat timing updates as quality-weighted: tighten gating when cn0_avg drops or flags degrade; validate antenna bias margin and replace/relocate protection that distorts signals.
Pass criteria: In the field, timing remains stable with quality thresholds met: cn0_avg stays above site-defined minimum and no repeated holdover entries in steady conditions.
CN0 looks fine, yet phase noise gets worse at 10 MHz—how to isolate the cause?
Likely cause: The 10 MHz path is being polluted by power/ground coupling or distribution/load modulation (not by GNSS RF quality).
Quick check: Compare noise with (a) loop open vs closed, and (b) different loads/fanout enabled; log correlation between steer_cmd_dac and rail ripple events. If available, measure with a phase-noise tool or a stable reference + counter (example instrument: Keysight 53230A).
Fix: Isolate oscillator and DAC/EFC supplies, reduce distribution sensitivity (buffer/fanout hygiene), and avoid “tightening the loop” as a cure for 10 MHz purity issues.
Pass criteria: 10 MHz noise meets the target mask with load and distribution enabled; no measurable degradation from open-loop baseline beyond X dB (X from system clock budget).
Why does tightening the loop (faster lock) worsen long-term stability?
Likely cause: Wider loop bandwidth injects GNSS short-term noise (and multipath artifacts) into the oscillator, degrading wander/long-term metrics.
Quick check: Compare long-window metrics (e.g., time error over hours, MTIE/TDEV trend) before/after τ change; if short-term phase jitter increases when τ is reduced, the loop is importing GNSS noise.
Fix: Use a two-mode strategy: conservative steady-state tracking (narrow) + bounded capture when far off; always apply quality-weighted updates and outlier rejection.
Pass criteria: Faster lock does not degrade long-term: MTIE/TDEV at target τ set stays within budget, and phase jitter does not exceed X over the specified observation windows.
How do I set slew/step limits to avoid “time jumps”?
Likely cause: Step-based time alignment (or large frequency steps) forces discontinuities that downstream systems interpret as time jumps.
Quick check: Identify if corrections appear as steps in pps_phase_ns. If yes, your policy is stepping, not ramping; also log maximum steer_cmd_dac delta per update.
Fix: Prefer phase ramps via slew-limited frequency steering: set slew_limit from the maximum downstream tolerance (how fast endpoints can absorb phase change) and cap per-update command deltas.
Pass criteria: No discrete steps above X ns; phase transitions are monotonic ramps with |d(phase)/dt| < Y ns/s (X/Y from endpoint tolerance).
My TIC readings disagree with the scope—what measurement trap is most common?
Likely cause: Different trigger/thresholding and timebase references create “measurement disagreement,” especially when one instrument is not locked to the same reference.
Quick check: Ensure both instruments share the same reference (10 MHz in/out) and measure the same edge definition (threshold, slope). Repeat with fixed gate time and identical averaging; log instrument settings with the data.
Fix: Lock all instruments to a single stable reference, use a time-interval counter for phase statistics, and avoid scope-only “eyeballing” for wander/holdover evaluation.
Pass criteria: Independent instruments agree within ±X for the same measurement definition and gate time (X from instrument + setup uncertainty).
Why does the GPSDO behave differently after warm-up—what’s “enough” soak time?
Likely cause: The oscillator and nearby PCB reach thermal equilibrium slowly; early “stable-looking” behavior can still carry a hidden drift slope.
Quick check: Define soak by dual stability: (1) temp_c change rate below a threshold for ≥T minutes, AND (2) freq_offset_ppb slope below a threshold over the same window.
Fix: Enforce a warm-up state before declaring “in spec” (and before training holdover models); improve thermal placement to reduce gradients and shorten settling.
Pass criteria: After soak, drift slopes remain within spec: |d(temp)/dt| < X and |d(freq_offset_ppb)/dt| < Y over the defined window (X/Y from validation plan).
How to detect multipath/jamming from logs without RF equipment?
Likely cause: Multipath or interference degrades timing observables even if “lock” remains true; the quality degradation shows up as unstable timing and inconsistent quality flags.
Quick check: Look for signature patterns: (a) sudden CN0 distribution changes, (b) fast fluctuations in pps_phase_ns variance, (c) frequent gating/rejections, (d) time-validity or sawtooth flags dropping intermittently while sat count stays moderate.
Fix: Make disciplining quality-weighted (accept/weight/reject), tighten outlier rejection when “degraded,” and trigger holdover on sustained quality loss rather than waiting for full unlock.
Pass criteria: In degraded environments, the loop stops importing bad updates: rejection rate increases as designed, holdover entry is deterministic, and phase/frequency remain within the degraded-mode budget.
Dual GPSDO main/backup switching causes phase step—how to make it operationally safe?
Likely cause: The two sources are not phase-aligned at the switching instant, and/or the switch policy triggers on transient alarms (no hysteresis/debounce).
Quick check: Measure relative phase between main/backup before switching (TIC or phase comparator), and log switch triggers with alarm_bits + debounce timers; verify if switching occurs on single-sample spikes.
Fix: Add hysteresis/debounce to switchover, require “quality degraded sustained” before switching, and validate post-switch: output continuity + endpoints remain locked. If phase alignment is required, add a controlled alignment step (ramped, not stepped).
Pass criteria: During switching, phase step < X ns and no endpoint relock/retime events; switch decision is repeatable and does not chatter under marginal conditions.