This improvement to the calibration mechanism in the Ultimate3 kit is introduced in the v3.01 firmware. This page describes the method relating to the 125MHz reference oscillator used in the AD9850 DDS module with the U3 kit. However it is equally applicable to the 27MHz reference oscillator used in the Si5351A synthesiser module used in the U3S kit.

It came about through discussions with David VE3KCL and Eddie G3ZJO. David noticed that with his setup transmitting on 40m, and using the VK16E GPS module, the frequency could jump by +/- 50Hz from one transmission frame to the next. The problem was suspected to be due to the inaccurate timing characteristic on the 1pps signal from GPS modules using the Sirf III chipset such as the VK16E. The VK16E datasheet specifies a timing accuracy of 30us, though other datasheets for the same module say 1us, which is more consistent with other modules using a Sirf III chipset.

The inaccurate timing of 30us would lead to significant variation in the frequency count during the calibration. During the calibration the DDS frequency is set to 6.25MHz and the U3 counts the number of DDS pulses occurring between the arrival of successive 1pps pulses from the GPS. If the timing is inaccurate, so is the frequency, which would lead to significant changes in the 125MHz reference oscillator calibration, as observed by David.

I tested this for myself. Test conditions: VK16E GPS module, at the end of 5m of screened cable. The screened was grounded only at the U3 end. No ferrite beads anywhere. I connected a 20nF capacitor across the supply voltage at the GPS module end. The experiment was carried out on the roof with a good view of the sky. The U3 and GPS modules were open to the elements: wind and cold, and no heatsink or any kind of draft exclusion, on the DDS module.

A slightly modified firmware version was used, which put the kit into continuous calibration routines every 14 seconds, and displayed the calibrated 125MHz oscillator result on the LCD. The calibration figure was scaled to 7MHz to be comparable with David's observations. The vertical axis of this graph shows the deviation in Hz, of the calibration value from the mean. Note the warm-up drift downwards, which is normal. The red line shows the moving average over 10 measurements. This chart therefore shows the approximate shift that would be observed in successive transmission frames on 40m. The +/- 20Hz observed is less than David's +/- 50Hz but broadly speaking I felt that my experiment replicated the same issues that David had seen.


Now I decided to apply Huff Puff Techniques. There is more background information about Huff Puff, see here. In this application it can be thought of as a frequency locked loop and is in some way like an averaging mechanism, that cancels out the effect of inaccuracies in the 1pps timing pulse.

The technique is simple. Set the DDS to 6.25MHz. Measure it during the interval between two successive 1pps pulses (the same as the usual calibration method previously). If the frequency is too high, then it means the calibrated reference oscillator (default 125,000,000) value is too low. Conversely if the measured frequency is too low, the ref osc value is too high. In that case I apply a correction to the reference oscillator. The correction amount is specified by a new parameter in v3.01 called "Cal HP" which can be 00-99.

In a 10-second calibration time with a Cal HP of 20, the calibration therefore can correct the 125MHz oscillator to a maximum of 200Hz. This may not be enough, which means it can take several calibration cycles to initially calibrate the oscillator, but thereafter it would be easily disciplined. So I also added another new parameter "Cal Time" which can be 000-251 and defaults to 010 (10 seconds). This specifies the calibration time.

The chart below was obtained using the same experimental set-up as above: roof, no boxes on the DDS or U3, no heatsinks, cold, wind etc. Temperature on the roof was 5C. Cal HP = 20Hz, Cal Time = 10s. Again, the chart is scaled for 40m band, and the vertical axis is the shift in Hz, from the average. The initial rise from -42Hz is just warm-up drift and calibrating the DDS initially from its 125,000,000 default setting. Once stabiised after a few minutes, the standard deviation in readings is just 1.6Hz at 40m, which is really a good result. Remember that this is without heatsinks, or even boxes, in the open cold and windy air on the roof.


Finally, I put the GPS module in a plastic kitchen food container storage box. I put the U3 in another box of the same kind. It didn't quite fit and I had to use electrical tape to hold the lid on and seal up the gaps. The food container was transparent so I could still see the display. This is a rather crude arrangement for improving the thermal stability of the DDS module: no insulation or heatsinks or anything sophisticated. Just a small plastic box and some tape.

I set Cal Time to 10s and Cal HP to 1Hz. Air temperature 5C. 5m of screened cable between U3 and GPS, as before. The result below is again scaled for 40m. The initial drop is some warm-up since the warm U3 is now in an enclosed container, not open to the elements. I actually waited 15 minutes for the temperature to stabilise, and the initial drop at the start of the curve below is just the last few minutes of this. Now the standard deviation at 40m is just 0.1Hz!


Note that the Huff Puff method restricts the total correction that can be applied. So for example, if Cal Time = 10s and Cal HP = 20Hz, then the maximum correction that can be applied to the 125,000,000 reference oscillator parameter, is 200Hz. In my case the reference frequency was 800Hz too high, ending up in a calibration figure of 125,000,812. It would take 5 calibration cycles to reach this value. So the Cal Time parameter can be used to increase the calibration phase to more than 10 seconds.

For those wishing to stay with the earlier frequency stabilisation method, you can set Cal HP to 00 which results in the original GPS calibration method. Note that the HP stabilisation method will probably offer improved results even with high precision GPS modules.

The side-by-side before and after comparison below is from David VE3KCL, using the VK16 GPS for calibration. The "before" image shows "VK16" transmitted in Slow-Hell on 40m, and you can see variations up to almost +/- 50Hz from one calibration to the next. The "after" image uses v3.01 and Huff Puff method with Cal Time = 050 and Cal HP = 01. The message is FSKCW, repeatedly sending "1" with FSK 25Hz, which takes about 1 minute. The calibration stability is well within 1Hz.

Please CLICK the images for the full-size version. Note that the vertical scales aren't the same, the "after" image is zoomed in about 4x compared to the "before". This means the improvement is even better than it looks, once you pay attention to the vertical axis scale!

View the embedded image gallery online at:

In conclusion, it appears that the timing inaccuracy of the Sirf III chipset GPS modules including inexpensive modules such as the VK16E, makes Ultimate3 calibration inaccurate. However, the described firmware enhancement offers a method that makes the U3 calibration very accurate, even with an inexpensive GPS module such as the VK16E.