ppgpsdo

ppgpsdo is a reference implementation of a GNSS-disciplined oscillator.

It reuses the same timestamp-capture infrastructure as ppts, but instead of only printing events it pairs PPS and auxiliary timestamps, derives a timing error, and drives a DAC through a PID controller.

Requirements:

  • FPGA running the PulsePins design with an external clock signal (EXT_CLK) from a tunable oscillator such as an OCXO or TCXO
  • pulse-per-second signal from a GNSS receiver applied to the PPS pin
  • DAC on PP_PMOD controlling the frequency of the tunable oscillator

Command-line switches:

  • -kp: coefficient for proportional part of PID

Implementation notes:

  • timestamp capture and pairing live in c++/pptool_measurement.cc
  • timestamp routing comes from c++/timestamp.hh
  • DAC control is handled through the I2C-backed helper used in the same command implementation

Because the underlying timestamp core is designed for sparse events, ppgpsdo assumes PPS-like timing signals rather than dense arbitrary transitions.

See also PP_PMOD hardware reference.