[time-nuts] I've designed a GPSDO, but how "good" is it?

Nick Sayer nsayer at kfu.com
Sun Aug 16 19:28:33 EDT 2015

> On Aug 16, 2015, at 1:53 PM, Graham / KE9H <ke9h.graham at gmail.com> wrote:
> Nick:
> From your description, it sounds like you have a frequency locked loop with
> a maximum frequency sensitivity of 1 ppb, as opposed to a phase locked loop.

Yes. I am leveraging the capabilities of the microcontroller as much as I can. It has a 16 bit timer that is clocked from the system clock (the 10 MHz oscillator). The timer has “input capture” capability - the rising PPS edge copies the clock reading into a holding register and triggers an interrupt. The only extra hardware required is the 16 bit DAC and its output buffer. That circuit is largely copied from a Connor Winfield application note.

Since people have brought it up, I’ve considered how I would do a PLL system. I’d probably use something like an ATTiny25 to do a simple divide-by-ten-million in software. That, and the PPS signal would go into a phase comparator that would (in my mind) have some sort of interface to the controller to allow the controller to get a high granularity view of the phase angle between the two. It would then apply feedback with the DAC and (as now) blink the LOCK LED to indicate quality. The DAC would probably need an upgrade as well to have more feedback granularity. All of that adds to the cost (as does my low production volume).

> At the end of the 100 second count period, do you start over with a counter
> set to zero, or do you carry forward any error from the previous period?

For the purpose of feedback to the oscillator, only the 100 second error count is used. The adjustment granularity is on the order of 370 ppt or so, so I’m not sure there much more “there” there.

For the purpose of user feedback (the LOCK LED has four different states indicating no lock: >50 ppb, “good”: 50-5 ppb, “better”: 5ppb-1ppb and “best”: <1 ppb), there is a rolling window of ten 100 second samples that are aggregated for a 1000 second window. So when the “best” blink is happening, it means that the error over the past 1000 seconds is < 10 counts.

> --- Graham
> ==
> On Sun, Aug 16, 2015 at 2:31 PM, Tom Van Baak <tvb at leapsecond.com> wrote:
>> Hi Nick,
>> Nice project. Thanks for sharing.
>> I was hoping someone would someday use a cheap Sparkfun / Parallax /
>> Adafruit GPS to make a low-cost GPSDO. Mostly what people on this list do
>> is go to the extreme of using serious GPS timing receivers (such as Oncore
>> M12+T, or ublox-5T or 6T or 8T) but those require significant amounts of
>> configuration, tuning, survey, etc. to meet ultimate performance levels.
>> The good thing about using a cheap hobbyist-grade 3D GPS/1PPS receiver is
>> that they work anywhere, without fiddling or survey, within seconds of
>> power-on. Ok, you lose a few ns of precision compared to serious receivers
>> -- but for a TCXO that doesn't matter.
>> Anyway, to answer your question -- to measure its true performance you
>> only need two things. 1) a phase meter (or time interval counter) that's
>> good to 1 ns or better, and 2) a local reference standard that's maybe 10x
>> better than the TCXO and the Adafruit GPS. Usually that means a cesium
>> standard, or supremely qualified GPSDO, or equivalent.
>> A number of us here on the time-nuts list have such equipment at home. And
>> unlike professional labs, we will do it for free/fun if you loan the GPSDO
>> for a week.
>> If you want to play with raw timing data from an Adafruit GPS board see
>> file gps-mtk3339.txt.gz under http://www.leapsecond.com/pages/gpsdo-sim/
>> and then use TimeLab for phase, frequency, and Allan deviation analysis (
>> http://www.ke5fx.com/timelab/readme.htm).
>> /tvb
>> ----- Original Message -----
>> From: "Nick Sayer via time-nuts" <time-nuts at febo.com>
>> To: <time-nuts at febo.com>
>> Sent: Sunday, August 16, 2015 11:47 AM
>> Subject: [time-nuts] I've designed a GPSDO, but how "good" is it?
>> I’ve designed and make and sell a GPSDO on Tindie (
>> https://hackaday.io/project/6872-gps-disciplined-tcxo). It’s brand new -
>> I’ve sold a handful of them so far. So as to make this post not *entirely*
>> self-serving, what I would like is some further guidance on how I can
>> better characterize its performance.
>> The GPS reference is a 1 pps signal (It’s the Adafruit Ultimate GPS module
>> - a PA6H). The manufacturer claims an accuracy of ±10 ns, but that's
>> accuracy relative to the true start of the GPS second. They don’t make any
>> claim for stability.
>> The oscillator itself (Connor Winfield DOT050V 10 MHz) has a short-term
>> (though they don’t say how short that term is) stability of 1 ppb. The
>> absolute accuracy of it is (I assume) irrelevant, because it’s a VCTCXO and
>> the control voltage is steered by GPS feedback.
>> The feedback loop takes samples over a 100 second period. That gives me an
>> error sample with a granularity of 1 ppb. I keep a rolling sample window of
>> 10 samples to get an error count over 1000 seconds. I've kept track of both
>> of these values for extended periods (days) as well as logging the DAC
>> value (the number that's proportional to the control voltage). The 1000
>> second sample window error averages zero, and it almost never exceeds ±7
>> (every once in a while if I physically move it, it will show a momentary
>> error glitch, but that shows up in the short term feedback sampling too).
>> The 100 second samples are almost all 0 or ±1, with an occasional ±2
>> showing up. As I said before, if I bonk the oscillator, it may briefly show
>> a ±6 or so for one sample.
>> If I pit two of them against each other on a scope and take a time lapse
>> video (http://www.youtube.com/watch?v=9HkeCI90i44), you can see that they
>> stay mostly locked with occasional periods of drift. I sort of assume that
>> that represents periods where the two GPS receivers disagree as they decide
>> differently how to select among the available satellites.
>> I've been saying out loud that the oscillator is ±1 ppb from GPS over the
>> 1000 second window. I know of Allan variance, but I don't have anything
>> else handy I can use for comparison. I also can't really afford to send one
>> off for testing to a proper lab. In looking at
>> http://tf.nist.gov/general/pdf/2297.pdf, it suggests that my results are
>> relatively poor compared to what a GPSDO can achieve (more like 10^-12
>> rather than 10^-9), but I assume that they’re able to use a higher
>> frequency GPS reference than just 1 PPS (and they’re a lot pricier).
>> What else can I do to try and characterize the performance? If mine is
>> performing far more poorly than the same price ($175) can buy elsewhere,
>> then what am I doing wrong?
>> _______________________________________________
>> time-nuts mailing list -- time-nuts at febo.com
>> To unsubscribe, go to
>> https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
>> and follow the instructions there.
>> _______________________________________________
>> time-nuts mailing list -- time-nuts at febo.com
>> To unsubscribe, go to
>> https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
>> and follow the instructions there.
> _______________________________________________
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.

More information about the time-nuts mailing list