Table of Contents
CHAPTER 1 — GENERAL INFORMATION
1-1. SCOPE
This manual covers construction and calibration use of a GPS-Disciplined Oscillator (GPSDO) providing a 10 MHz sine or square wave reference traceable to UTC via GPS. The GPSDO provides better short-term stability than 1PPS alone and is suitable as a lab reference for all RF calibration work.
1-2. REFERENCES
- TM-CAL-002: GPS 1PPS Timing Reference
- u-blox NEO-M8N Integration Manual
- Silicon Labs Si5351A Datasheet
- Analog Devices AD9833 Datasheet
1-3. SAFETY
CHAPTER 2 — THEORY OF OPERATION
2-1. GPSDO PRINCIPLE
A GPSDO phase-locks a voltage-controlled crystal oscillator (VCXO) or temperature-compensated crystal oscillator (TCXO) to the GPS 1PPS signal using a phase-locked loop (PLL) or proportional-integral (PI) control algorithm.
Long-term frequency accuracy follows GPS (≈10−12 relative). Short-term stability (seconds) follows the free-running crystal oscillator, which is better than GPS for short intervals due to GPS noise.
2-2. IMPLEMENTATION: NEO-M8N + Si5351
The Si5351A clock generator synthesizes multiple output frequencies from an onboard 25 MHz crystal. Output frequencies are set by integer and fractional division registers over I2C. The ESP32 microcontroller reads GPS NMEA data, monitors 1PPS, and adjusts Si5351 PLL registers to phase-lock the output.
| Parameter | Value | Notes |
|---|---|---|
| Frequency range | 1 Hz – 160 MHz | Si5351A spec |
| Output frequency (typical) | 10.000000 MHz | Adjustable |
| Long-term accuracy | <1×10−10 | GPS-limited |
| Short-term stability (1 s) | ≈10−9 | Crystal-limited |
| Output level | ~3 dBm into 50 Ω | Si5351 CLK0 |
| Lock time | 5–15 minutes | After GPS position fix |
CHAPTER 3 — MATERIALS AND CONSTRUCTION
3-1. BILL OF MATERIALS
| Qty | Item | Specification |
|---|---|---|
| 1 | u-blox NEO-M8N GPS module | With UART and TIMEPULSE |
| 1 | Si5351A clock breakout | Adafruit or equivalent, 25 MHz XTAL |
| 1 | ESP32 development board | Any variant with I2C and UART |
| 1 | Active GPS patch antenna | Magnetic mount, 3.3 V bias |
| 1 | 5 V / 500 mA supply | Clean, low-ripple |
| 1 | SMA panel connector | For 10 MHz output |
| 1 | Project enclosure | Diecast aluminum preferred for RF shielding |
| 4 | 100 nF bypass capacitors | On every power rail |
| 1 | 10 μF electrolytic | Bulk bypass for ESP32 supply |
3-2. WIRING
Connect NEO-M8N UART TX → ESP32 UART RX. Connect NEO-M8N TIMEPULSE → ESP32 GPIO (e.g., GPIO 4) with 100 Ω series resistor. Connect Si5351 SDA/SCL → ESP32 I2C (GPIO 21/22). Connect Si5351 CLK0 output → SMA panel connector via short 50 Ω trace.
CHAPTER 4 — ASSEMBLY PROCEDURES
- Verify all components with multimeter before assembly.
- Install ESP32 board on DIN rail or in enclosure, securing with 4 M3 screws.
- Mount Si5351 breakout board adjacent to ESP32. Keep I2C traces short (<5 cm).
- Mount NEO-M8N module. Route UART and TIMEPULSE connections to ESP32.
- Install SMA connector on enclosure panel. Solder short RG-174 pigtail from Si5351 CLK0 output to SMA center pin. Minimize trace length.
- Install GPS antenna SMA bulkhead connector on enclosure lid or side panel.
- Wire 5 V supply to all modules. Verify +5 V on each module before applying full power.
- Load ESP32 firmware (simple PLL algorithm: measure 1PPS → count Si5351 cycles → adjust frequency word in PI loop).
- Apply power. Observe serial debug output: GPS acquiring, then position fix, then TIMEPULSE valid, then PLL locking.
- Allow 15 minutes for full phase lock. Output frequency should stabilize to <1 Hz of 10.000000 MHz.
CHAPTER 5 — CALIBRATION PROCEDURE
5-1. INITIAL FREQUENCY CALIBRATION
- Connect GPSDO 10 MHz output to frequency counter via 50 Ω BNC cable.
- Allow GPSDO to lock completely (GPS fix acquired + 15 min warm-up).
- Measure output frequency. Should read 10.000000 ±0.010 MHz within 5 minutes of lock.
- If frequency is off by more than 1 Hz, check Si5351 crystal frequency setting in firmware. The on-board crystal may be 25.000 or 26.000 MHz; verify and update firmware constant.
- Monitor frequency for 30 minutes. Deviation from 10.000000 should be <1 Hz after full thermal stabilization.
- Record: frequency, GPS satellite count, ambient temperature.
5-2. LONG-TERM VERIFICATION
- Run GPSDO continuously for 24 hours.
- Record frequency every hour (automate with frequency counter if possible).
- Plot frequency vs. time. Drift >0.1 Hz over 24 hours indicates PLL loop filter or crystal aging issue.
- Compare to WWV at 10 MHz using zero-beat method (see TM-CAL-001). Agreement within 1 Hz confirms NIST traceability.
CHAPTER 6 — TUNING AND ADJUSTMENT
6-1. PLL LOOP FILTER TUNING
The PI control loop has two parameters: proportional gain (Kp) and integral gain (Ki). Too high Kp causes oscillation; too low causes slow lock. Start with Kp = 0.1 and Ki = 0.01, then increase Kp until oscillation appears, then back off 50%.
CHAPTER 7 — VERIFICATION
- Measure GPSDO output against WWV 10 MHz carrier using zero-beat method. Error should be <1 Hz.
- Confirm GPS lock: check satellite count in NMEA GPGGA sentence (≥4 sats required).
- Verify 1PPS LED or debug output shows TIMEPULSE active.
- Connect GPSDO to TinySA Ultra reference input (if equipped) and confirm TinySA frequency readouts are consistent with GPSDO.
- Log: date, firmware version, GPS module serial, lock time, frequency error.
APPENDIX A — CALCULATIONS AND FORMULAS
APPENDIX B — EXAMPLE RESULTS
| Time After Power-On | GPS Sats | 10 MHz Frequency | Deviation | PLL State |
|---|---|---|---|---|
| 0 min | 0 | — | — | Acquiring |
| 2 min | 5 | — | — | Fix, no PLL |
| 5 min | 8 | 9.999998 MHz | −0.2 Hz | PLL locking |
| 15 min | 9 | 10.000000 MHz | <0.05 Hz | Locked |
| 1 hour | 9 | 10.000000 MHz | <0.02 Hz | Stable |