[LinuxPPS] Recommendation / Re: Stats & architectures

Cirilo Bernardo cirilo.bernardo at gmail.com
Thu Mar 13 22:04:41 CET 2008


> I believe that the Ulrich Windl patches included nanosecond precision while
> LinuxPPS is at the microsecond level.
>
> Is it possible to implement this nanosecond precision in conjunction
> with LinuxPPS?

You need to think about what nanosecond precision implies:
1. An ultra-stable clock with less than 1 part-per-billion drift and
accuracy also less than 1ppb.  General computer hardware does
not have this; the clocks used for timekeeping are often only
1MHz and the drift with temperature, ageing, etc is well beyond the
1ppb spec.  Many CPUs have high-speed counters which can be
'disciplined'; NTPD essentially tries to discipline a clock which might
only have 100usec precision.

2. A GPS which has a PPS signal synchronized to within 1ppb or at
least an extremely stable signal propagation delay - many
manufacturers claim their GPS has <1nsec sync delay, but it's
impossible for most people to test this claim.

3. A computer that can respond to the interrupt signal in less that 1nsec,
or with a delay time which varies less than 1nsec.  When your computer
is doing other jobs as well, you can forget about this unless you have a
real-time kernel patch that ensures this latency for your GPS channel.

4. Things depend a bit on the actual hardware setup.  For example,
I have a GPS in an embedded device and some logic gates introduce a
propagation delay of ~20nsec, but the interrupt is actually triggered by
the falling edge of the PPS signal; the PPS signal is ~4usec wide, but
the accuracy of the pulse width is unspecified so we can easily assume
10% or 400nsec.  In this example, an approximation of my propagation
delay (GPS only, computer isn't involved yet) would be 4020+/-400nsec.
With that sort of figure, the propagation delay caused by the extra gates
becomes insignificant.  The computer side of things is far messier.

This can all be done and I'd be surprised if no one has done it, but
it is an awful lot of work (==$$$).  You need to ask yourself what time accuracy
and precision you need for your job, and do you need absolute time or
just a precise interval counter?

- Cirilo



More information about the LinuxPPS mailing list