# [time-nuts] First success with very simple, very low cost GPSDO

Charles Steinmetz csteinmetz at yandex.com
Thu Apr 10 21:47:45 EDT 2014

```Me:

> > Why even try to discipline an OCXO before it's warm?  Just leave the
> > control loop off for a predetermined time at startup.

Chris:

>Even if you wait long enough you still need to set the DAC to "something"
>as a first try.    What if your first guess is off by a large amount.

Me:

> > Alternatively, you could figure out the EFC voltage needed to zero the
> > cold oscillator

Chris:

>How to do that?  Can you write code to do this without counting overflows?
>You can be off by 256 cycles and never know it.   Let's assume someone is
>building a GPSDO because they need a frequency reference and don't have
>one.  A good assumption, I think.   How could such a person "figure out the
>EFC voltage needed"  with out either coining cycles?

You originally described a system that counts to 5M every
second.  Tom and others pointed out that you do not need the complete
5M count, all you need is the remainder of a modulo count.  The
question then is, how much of a remainder do you need to be sure that
it spans all anticipated errors in both the PPS and the
oscillator?  Tom opined that 8 bits should be sufficient, based on
some realistic assumptions regarding the anticipated errors in PPS
placement and oscillator drift.  (Note that a 256 cycles per second
error is 51 PPM at 5 MHz.)  Brent said that he found 8 bits was not
sufficient to track his OCXO from cold, so he went to 16 bits.  I
questioned whether trying to track the OCXO from cold was a
worthwhile exercise.

So:  If you can't count on anything, then you need to count every
cycle.  (But wait -- if you can't count on anything, you can't count
on your PPS being accurate, either.)  In the real world, you should
be able to trust that any oscillator that is chosen for a GPSDO will
free-run within 1 PPM when it is warmed up, and that your PPS will
always be within 1 PPM, as well.  This determines how large your
remainder needs to be.  I agree with Tom that 8 bits should be plenty
(with the caveat pointed out by Brent, that 8 bits may not be enough
to track the OCXO from cold).  So, my suggestion was to wait until
you CAN trust that the oscillator error is within your error budget
before starting to discipline.

As far as where to start the DAC, I'd be inclined to determine what
EFC voltage puts the warmed-up oscillator within 1 PPM and store the
corresponding DAC word for readout at boot time.  (I'm assuming here
that any aspiring time nut has or can beg a counter good to 1PPM
before building the GPSDO.  If not, see below.)  To account for
long-term oscillator drift, you can update the DAC word in NV memory
with the long-term average during locked operation.

As far as disciplining the oscillator from cold (which I do not
recommend for the reasons I discussed previously), you could do the
same thing, either manually at construction/alignment time, or by
counting the full 5M immediately at startup and zeroing the
oscillator with a fast loop.  (This would also apply to the warmed-up
DAC count referred to in the paragraph next above, if you do not have
independent means to ascertain when the OCXO is on frequency.  In
either case, you could make the "count every cycle" mode a
manually-invoked calibration subroutine and use the more efficient
and robust modulo count for normal operation.)

Best regards,

Charles

```