[time-nuts] Simple GPSDO

Magnus Danielson magnus at rubidium.dyndns.org
Mon Jan 9 02:05:36 UTC 2012


On 12/31/2011 08:15 AM, Charles P. Steinmetz wrote:
> I know the thread began with a request for a "simple" DIY GPSDO, and
> this may not be quite as simple as some might like. However, PPS
> discipline is generally the simplest and most universal scheme from the
> standpoint of interfacing to whatever GPS engine one has available. The
> PRS10 has a clever system for PPS disclipine, using time-tagging for
> phase detection, that mitigates the usual shortcomings of PPS discipline
> and should be suitable for PIC/FPGA implementation.
>
> As implemented by SRS, the discipline parameters are more than
> sufficiently adjustable for any need. For a homebrew version, the VCO
> would be the quartz VCXO or Rb of your choice. The pre-filter (which is
> selectable in the PRS10) would be a great help in dealing with the
> jitter in a GPS PPS signal. PPS locking is discussed at pp. 14-18 of the
> 2003 and 2005 manuals. (The manuals and Rev. H schematic are readily
> available on the web.)

The feedback is really just the PPS counter 0-9999999 modeled, and any 
interpolation can be added without loss of generality. The time-tagging 
is thus just sampling the state of the counter, and optionally add 
interpolator value.

You also want to have a quick-align that will reset the counter to 
quickly jump into phase, before entering normal loop. That will save you 
a lot of lock-in time as the phase will be in line... and worst-case 
phase error can be half a second, so worst-case will 5 milion cycles 
needs to be skewed, and doing that on the oscillator isn't very 
time-efficient and causes for one hell of a initial phase error.

The pre-filtering exponential averager and PI-regulator is very cheap to 
implement in a PIC, AVR or whatever. Just leave enough bits in there.

I think a simple CPLD or FPGA will pull it off. You need 24 bit for 
counting, 24 bit for time-stamp and a few more for logic. You can 
compress the range for the time-stamp, as you only need to know "too 
high", "too low" and a fairly small in-range value range. If you allow 
for +/- 10 us error you only need 200 values... so there is only 8 bits.

Cheers,
Magnus




More information about the Time-nuts_lists.febo.com mailing list