Managing SDR System Time

This application note discusses the system time stamping of Per Vices SDR products. By default, the time stamp associated with packets is mapped to a free running system clock. However, with proper configuration, users can benefit from GPS-based time stamps. This will allow incoming packets to be synchronized across multiple devices and locations with an accuracy limited only by the GPS sources used to synchronize the systems.

To do this, we will use Network Time Protocol (NTP) to synchronize the SDR system time coarsely (to within 0.49s of the absolute UTC time we want to use), and then use a combination of a 10MHz reference and a GPS derived PPS input to determine the absolute time.

1. Default Operation of the SDR

The default SDR PPS is used to determine the start of a second, and is based internally using a 10MHz oven-controlled crystal oscillator (OCXO). This 10 MHz OCXO is quite accurate and very stable (5ppb), and may be tuned using the AD5624R nanoDAC. Thus, this is the reference clock used internally by default. The PPS SMA output on the front of our unit, outputs an analog square wave signal (1 cycle/second based on the 10MHz clock) used on the digital board.

2. The Impact of an External Reference Clock

An external 10MHz reference will be needed in some applications. For a very accurate signal, a GPS/GNSS disciplined oscillator will need to be connected to the external reference input. A GPS/GNSS disciplined clock is very accurate, provided there’s GPS/GNSS reception available and the GPS receiver is high-end, and will likely be more accurate than the internal crystal oscillator.

Overall, the impact of using an external reference clock will be that the time board is now synchronized using the external reference, and the PPS will be based on this. As can be seen in Figure 1 below, this entails that the default OCXO is bypassed and instead the Ext. RefClk is used (left side of diagram).

Figure 1: RTM5 Time Board Architecture.

3. The Impact of an External PPS

The GPS-DO also has a PPS output signal that can be connected to the PPS port on our SDRs. The PPS signal does not specify the time, but merely the start of a second, and therefore we must combine the PPS functionality with another time source that provides the full date and time in order to ascertain the time both accurately and precisely. One such time source is NTP. The 64-bit timestamps used by NTP consist of a 32-bit part for seconds and a 32-bit part for fractional second, giving a time scale of every \(2^{32}\) seconds (136 years) and a theoretical resolution of 233 picoseconds.

There are two ways to configure the synchonization of system time on Per Vices SDRs once an external PPS signal is received: hard and soft. Hard is updated right when the external PPS signal is received, and soft is updated smoothly and monotonically over the next second. Both will set the system time to an approximation of NTP (within +/- 0.5s), and by default uses external PPS and (soft) correction to correctly set the fractional and integer time to absolute time.


In order for the PPS port to correctly set an absolute time, the system time on Crimson must be accurate to within 0.49s of the desired GPS time. When the PPS goes high, the internal counter will round to the closest second and adjust the start of a second.

How-to configure Network Time Protocol daemon (NTPD)

The Network Time Protocol daemon (NTPd) is used for clock synchronization between participating computers and/or SDRs over pack-switched, variable-latency data networks. NTPD + External PPS provides for an absolute time reference.


You can set up NTPd by following this NTPd how-to guide.


You can set up an external 10MHz reference and PPS using NTPD by following this how-to configure system time guide.