Feb 25, 2016:
Revised: v1.0

GPS Referenced Stable Signal Source

Here is a simple 24MHz GPS-referenced test oscillator built around a low cost GPS module. It's useful for calibrating frequency counters and other test equipment around my workbench. An internal backup battery, charger and battery monitor makes it portable, and ensures it keeps going even when the primary power fails.


For many years, I’ve needed a good frequency reference. Initially, I needed a method to check the frequency I was using while operating my amateur radio transceiver. Later on, I used them regularly for calibrating my frequency counters and other pieces of test equipment.

The most commonly used frequency references in the past have been based on crystal oscillators. A widely used early example was the 100kHz calibration oscillators found in many older amateur radio transceivers. These would produce a raster of signals across the HF band at 100kHz intervals to allow a receiver or transceiver dial to be calibrated to within about 1kHz at frequencies up to 30MHz. Later developments led to higher frequency reference crystal oscillators at 1MHz, 5MHz and 10MHz.

Changes in temperatures are the primary source of error in crystal oscillators. Where improved accuracy is required, temperature compensated crystal oscillators can be used. Even better stability can be achieved by selecting a high stability crystal and placing the crystal oscillator inside an “oven”. This is a compact box surrounding the oscillator which is heated to a controlled temperature typically around 75C. By placing this oven inside another similar oven, it is possible to further improve stability.

Many years ago, long before the arrival of GPS and colour-burst, one enthusiast even went so far as to buried his high stability crystal oscillator and its oven in his garden. He believed that this would further reduce the change in ambient temperature affecting the crystal’s long term stability. He claimed he could even measure the tiny frequency jumps as the crystal gradually aged which occurred, he said, as microscopically tiny fragments of the quartz crystal were lost from its edges over time due to the crystal’s mechanical vibration at the oscillator frequency. It’s fair to say he was very devoted to the topic.

Table 1 : Frequency references and their typical stability

Other frequency reference methods over the years have included calibration against high power stable transmitters such as WWV in Colorado, USA or Rugby, in the UK. Later, it became common to use the colour-burst crystal oscillator inside a PAL analog television. This crystal oscillator was accurately phase-referenced via the television broadcast back to a studio-based rubidium or cesium frequency reference. More recently, second-hand rubidium reference oscillators from legacy cellular systems have also become widely available at reasonable cost used as frequency references by both hobbyists and test labs.

GPS-based Frequency References

These days, almost all telecommunications systems use the GPS satellite navigation system as a frequency and time reference. GPS signals are ultra-stable to permit the location of the GPS receivers on the ground to be accurately determined. Like many others, the swiftly reducing cost of GPS receiver modules encouraged me to explore this approach. I developed a design using an ATmega328 and a compact temperature controlled crystal oscillator which was referenced back to a GPS-derived clock source. It worked well, but it was not easy to duplicate so I never bothered to document it here.

Recent improvements in low cost GPS modules has made the construction of an accurate frequency reference even easier, and cheaper. I purchased one of these modules recently from one of many Chinese sources. The frequency reference was so simple, I had it all built and running in an hour or so. It’s been so useful, I’ll describe this simple GPS frequency reference here.

GPS Modules and Outputs

Low cost GPS receiver modules have been available for a number of years. Most of these produce a 1PPS (pulse per second) output. Depending on the module, these pulses can be extremely accurate. With care, these pulses can be used to create and maintain an accurate frequency reference.

One method uses the incoming 1PPS signal to measure the frequency of a crystal oscillator. Any error in the measured frequency can be used to adjust the frequency of this oscillator and minimize the error. Over time, such oscillators can be very accurate.

Such an approach required the construction of a separate oscillator. Beginning in 2014, low cost GPS modules began to appear using chip sets which could output a more extensive range of RF clock signals. These are generated from an internal numerically controlled oscillator (NCO) referenced to incoming GPS timing.

Specifically, modules with “u-Blox” brand “series 5” chipsets could produce digital output clocks with frequencies of up to 1kHz. Subsequent u-Blox “series 6T” and, more importantly, “series 7” chips could produce 0.25Hz-10MHz clock outputs. Theoretically, these output signals can be generated with GPS-based precision.

Figure 1 : This is how the GPS module looks - Very much the same as almost any GPS receiver module. The specifications reveal its ability to do the job - The use of the u-Blox series 7 chipset

Some very detailed tests by Russian hobbyists found that the internal NCO used to generate these output clock signals could only produce useful low jitter GPS-referenced clocks at certain clock speeds (i.e. output frequencies). Specifically, only outputs generated at 24.0, 16.0, 12.0, 8.0, 6.0, 4.0, 3.0 and 2.0 MHz could provide anything like a suitable signal. You will note that the three highest frequencies are actually outside the u-Blox specification but they still work successfully.

Unfortunately, the most widely used reference frequency of 10.0MHz is not in this set. As we’ll see, this is not really a problem for most of us. 

In order to get this output from the GPS module, the u-Blox  module’s “Timepulse” feature must be correctly configured with the vendor’s software. Once that’s done, the system usefully outputs an accurate, stable (well, for me) output reference with relatively low jitter.

As soon as I read a couple of the many references on the web about this, I purchased a cheap u-Blox series 7 module from one of my usual Chinese vendors (Thanks, Banggood!). When I finally got hold of it on one of my trips out of the Middle East where I live (You can read more details on that topic here, some background about the postal services in this part of the world), I promptly made the required minor modification to it (See below), mounted the GPS module onto a spare scrap of prototyping board, added an output buffer and battery backup power supply, and packaged in in a printed PLA box to make a lightweight GPS referenced frequency test source running at 24 MHz.

Technical Description

The schematic of my system is shown in Figure 2.

 Figure 2 : Schematic of the GPS-based signal source (See text for details of the various modules)

It’s clearly quite simple. The entire assembly is either powered from the USB serial port (during programming) or via the charger and battery. The 24MHz CMOS-level signal generated by the GPS module is buffered via IC1 (74HC14) to provide both a DC-coupled logic level output and an AC-coupled output.

The assembly is normally connected to a small external 5V charger from an old cellular phone. This charges the 1400mAh single cell 4.2V Li-Ion battery via a Chinese-sourced TP4056 charger module (Figure 3) at currents of up to 1A. When the battery is charged, the TP4056 changes to “float charge” mode to maintain the battery’s charge. LEDs on this module indicate on the charger status, showing red while charging and blue when charge is complete.

Figure 3 : The TP4056 Li-Ion charger module is easy to use and comes complete with "charging" (red) and "charge-complete" (blue) LEDs mounted on the PCB (Just visible at the top corner)
The battery powers the GPS module and buffer. When the charger is disconnected or the primary power fails, the GPS frequency reference reverts automatically to the internal battery. The frequency reference can therefore be used independently of primary power.

While not shown in this schematic, a further module was added across the battery to monitor its operation and status. This Li-Ion single cell battery monitor is described elsewhere on this website. It allows continuous monitoring of the cell capacity and voltage, and provides an immediate alerting when recharging is required.

Initial programming of the GPS module’s “timepulse” feature is handled via J1, the GPS module’s serial interface. This port is connected to a PC or laptop via an RS232 TTL serial to USB interface cable assembly.

Figure 4 : Typical USB-serial cable assembly

The PC or laptop runs the u-Blox utility software to initially configure the module correctly. After this has been done, a one-off task, the port is unlikely to be used again unless a change in output frequency is required.

Note: When connecting the external RS232 TTL serial to USB interface module to the GPS reference, connect the +5V and ground lines first. Then connect the RxD and TxD lines. This ensures the GPS module is not exposed to 5V-level voltages on the TxD and RxD port pins while still powered from the 3.8V battery, prior to power being applied to the device from the PC or laptop. It’s almost certain that internal protection on the GPS module prevents any damage due to this possibility, but I try to be careful.


The first step is to add a jumper wire to the GPS module (See diagram below) because the manufacturer does not provide the “Timepulse” output on the module. However, the signal is present on the module on the “PPS” LED via a 1k resistor.
Then the module can be mounted on the prototyping board and connected to the buffer, serial connector and power supply.

I used a high capacity single cell Li-Ion battery which was obtained from a disassembled compact laptop multi-cell Li-Ion battery. This cell was placed in the base of a 3D-printed PLA enclosure and the various modules were mounted on top using hot-glue. Crude, but effective. The GPS module, buffer and other components were mounted on a prototyping board which was similarly mounted on the battery.

The assembly was placed inside a 3D-printed enclosure.

Figure 5 : The 3D-printed enclosure consisted of a printed cover and lower box. The holes on the right-hand side are for the two output signals which appear on two pairs of 0.1" header pins mounted on the prototyping board. The hole on the left is for the serial port. The hole on the back panel is for the TP4056 USB charging socket.
A simple front panel label (Figure 5) was printed, covered with clear plastic film and mounted on the 3D-printed enclosure panel. The label on the right is for the front facing edge of the enclosure. It fits in a printed cutout on that surface.

Figure 5 : Front panel label for the GPS referenced test oscillator


All of the details can be found here and/or here and/or here. Little point in my repeating all of that excellent material.  Information on the GPS module itself can be found here. Finally, the uBlox configuration software utility can be downloaded from here.

Accuracy of this GPR-based Frequency Reference

The GPS module used in this design and the output arrangement is clearly not going to produce a signal with the stability and accuracy of a GPS disciplined oscillator (GPSDO). A GPSDO uses GPS signals to accurately control the frequency of a crystal or rubidium oscillator.

The GPS signal can reach stability limits of as great as 1 part in 10^13 when averaged for 10,000 seconds or more.  The problem is that the GPS signal is (relatively) noisy for short periods, so the accuracy of that signal can be as poor as 1 part in 10^7 over a one second period. That’s where the "controlled oscillator " part comes in. Its output is controlled by the long term averaged GPS signal (hence “disciplined”) and, of course, that output must clean and free from jitter. This brief description of a GSPDO is hardly one that fits the oscillators built into these new low cost GPS modules, and I am not attempting to do long term averaging of the GPS signal in this design. It’s not difficult or expensive to build your own GPSDO, but it is (a little) more expensive and time-consuming than the design described here.

So, how accurate is this signal source described here? The u-Blox 7 GPS receiver specification gives the time pulse accuracy as 30 nanoseconds RMS. This suggests an accuracy of 30 parts in 10^12. But, as we’ve noted, that’s unlikely given the properties of the GPS signal. At best, perhaps 1 part in 10^9 might be a reasonable figure, bearing in mind it may be degraded periodically to as little as 1 part in 10^7 as noted earlier but, in use, the output would likely be the result of some operator averaging over, probably at least a few minutes i.e say 100 seconds minimum.

Also, the module generates the “timepulse” output using on an internal 48MHz NCO. The phase of the output signal is internally adjusted to achieve the required average number of clock pulses to reach the programmed timepulse output. If an integer division ratio is chosen for the output (e.g. 2 or 3 or 4 i.e. 24MHz, 16MHz or 12MHz outputs) then phase adjustment jitter is minimized and accuracy improved. This appears to be the case.

So my estimate as to its accuracy (in the absence of suitable measurement tools) is something like 1 x 10-8 or about 1Hz at 100MHz. In other words, good enough for me.


This has proven to be a simple and effective frequency reference. While 24MHz is not a commonly used frequency for such applications, it is proven to be perfectly suitable for use around here given my limited range of test equipment.


GPS frequency signal source 3D-printed case: The STL-format file is available here

Front panel artwork is available here

Want to go back to the main page? Click here to return directly.