[Thumbgps-devel] Fwd: Long term SiRF data

Patrick Maupin pmaupin at gmail.com
Sat Mar 17 12:56:50 EDT 2012


On Sat, Mar 17, 2012 at 9:42 AM, Ron Frazier (NTP)
<timekeepingntplist at c3energy.com> wrote:
> (I'd like to cross post this message, including the original message below
> to the NTP questions list since we've been discussing this nmea wandering
> effect.  Let me know if there are any objections.)

I don't know why there would be.  But perhaps you can forward any
interesting replies.

> I've been seeing similar wandering of the NMEA output on my BU-353.  This
> graph shows what looks like the internet servers (colored lines) wandering
> off while my pc is locked to gps time (dark jaggy baseline).  I suppose it's
> actually the GPS wandering off.

I've been making some progress on building a replicable device
suitable for fairly accurate short term timing.  I think the
capabilities required have been shrinking as things like reports of
300 us jitter come in, but I still think it would be extremely useful
to have a device (a) that we can have a few of and (b) that can be
used to validate timing variations from other devices and as a check
on the system clock and (c) that isn't a $100K piece of lab equipment.

So the simplest goal is to make a highly accurate oscillator that you
can hook to your PC that generates USB interrupts like the USB.  If it
"wanders" like the GPS, then, well, it's probably your PC, perhaps
losing time under heavy load or something.

The next goal is to be able to timestamp external events (e.g. from a
1pps pin) to even more accurately determine the intrinsic jitter.  As
part of this, the jitter from the USB chip can be measured fairly
automagically.

There are lots of OCXO and rubidium timing standards on places like
ebay.  Most are used, pulled from service for some reason, and reside
in China.  I found a cache of new OCXO oscillators in the US that
aren't the absolute best, but the specs seem pretty good for my
purposes:

OHM4048052GG010020-26.0M

http://pletronics.com/files/index.php/ohm4%205.0v.pdf

Accuracy is 100 ppb over entire temperature range and 100 ppb over any
power variations.  Short term accuracy (defined as: pick a pulse, and
then pick another pulse that should happen between 0.1s and 30 s
later, and measure the actual elapsed time vs. expected time, where
"expected time" is not the nominal frequency, but rather the long-term
measured frequency) is within 0.5 ppb.  If you can't figure out where
your jitter's coming from with that sort of accuracy, you're doing
something horribly wrong.

I found a discussion of these OCXOs in the timenuts mailing list
archives -- people seem happy with them, and he was selling them for
$2 last year.  They're a bit more now, but the guy apparently still
has lots of these and they're much cheaper than any other new OCXOs
around.

It's an oddball frequency, so my guess is somebody had a custom build
done and then didn't build as many units as they were anticipating,
and the price stays low because people building frequency standards
usually want 10 MHz, not 26 MHz.  Anyway, wanting to make sure that I
had a cheaply replicable device for a reasonable number of units, I
bought 10 of them for under $4 each.

Unlike people who want a stable, accurate 10 MHz signal in their lab,
we want stable, controllable USB interrupts.  Absolute accuracy is not
all that important, because if the signal is long-term stable, you can
easily figure out the real frequency.  The actual frequency of the
crystal is not important to us for the same reason.

The main downside of this OCXO from my perspective is that it is 5
volts, and I want to build a self-contained bus-powered USB unit for
it, and USB 5 volts is not very stable or accurate, so I will need to
build a boost converter followed by a linear LDO to get a more
accurate voltage source.  I've done some research on the components
for this and will probably try to lay out a board by next weekend.

The primary other components are USB and an FPGA.  I'm initially
planning on making 3 of these boards, and ease of assembly is higher
on my priority list than low cost, so I am planning on using modules
for the USB and FPGA.

I will probably go with an FTDI high speed USB module -- the UM232H is
readily available.  For the FPGA, there's a company that has been
around awhile but has been uncompetitive for a long time, but that has
recently refreshed its product line, and now has a nice cheap open
source design:

http://xess.com/prods/prod048.php

They specialize in Windows, but all the microcontroller and driver
code is open source and someone did a Python script that uses PyUSB
for programming it.  I'm sure we could transfer timestamp info through
the PIC USB device it has on it, but I'm not interested in learning
that at this point, and it's only full-speed and I'm sure we can get
better resolution with a high speed device, so I will go ahead and
build a board that can accept the FTDI module.  I've ordered a couple
of these as well.

So far the design looks like this:

$20 FTDI UM232H module
$55 Xess FPGA module
$35 PCB (each for qty 3)
$ 3 OCXO
$ 7 estimated precision power supply for xtal
$ 5 estimated other components for xtal (tuning voltage, level shifter)
$20 estimated misc connectors, etc.
-------
$140

So if all goes well, in around three weeks, for under $500, I should
have three precision timing devices that we can ship around as needed,
and reprogram the FPGA on to give us whatever info we want.  They will
be usable both as a stable time base, and to be able to timestamp
external events, such as 1pps pulses, start of character data, end of
character data, etc.

Start of character data is useful because, for example, if a given
chipset outputs data at a known location in the second, and we can set
the latency timer to 0, then we will know by when the first character
comes out what time it is.  As esr points out, it may be difficult to
know whether this is accurate or not in the field, but as others point
out, this might be determinable via examining vendor-specific strings.


More information about the Thumbgps-devel mailing list