[time-nuts] Centroid pulse timing
Dr Bruce Griffiths
bruce.griffiths at xtra.co.nz
Wed Sep 27 07:54:40 EDT 2006
Hal Murray wrote:
Another way of determining the the arrival time of a pulse with high
resolution is to use centroid timing techniques. The input pulse is
converted to a short pulse using a delay line timed monostable then
the resultant pulse is low pass filtered by a discrete component RLC
Gaussian low pass filter.
This sounds like fun. Thanks.
A sampling ADC continuously samples the low pass filter output at a
fixed clock speed. The centroid of the pulse can then be calculated
from the resultant sequence of ADC samples. Monostable output pulse
width ~ 2x ADC sample clock period. Low pass filter risetime ~ 2 ADC
sample clock periods. With a 10MHz sample clock a resolution of
100picosec or better can be achieved with a 12 bit ADC.
The idea seems simple, but I don't see how to write the code. Is there a
good URL on that? Table lookup and average? (make the table from spice or
A delay line timed monostable is required for low output pulse jitter
and good output pulse width temperature stabilty.
2x 100 ns delay line seems like a pain.
What's the (ballpark) tempco of coax? What's the ballbark tempco of a normal
(whatever that means) delay chip? (Assume I use a chip designed for this
rather than kludging gate delays.)
Can I correct for the change in pulse width if I have more samples?
How much accuracy do I give up by making the pulse wider so I can get more
info on the width/height of the pulse in order to correct?
Typical delay tempco for coax is~ 50-100ppm/K.
A discrete component hybrid delay line like those from Newport and
their successors typically has a tempco of 300 ppm/K.
The Maxim/Dallas delay chips are likely to have a tempco somewhat
greater than this.
If you built your own discrete component delay line it fairly easy to
achieve a tempco of less than 50ppm/K
provided you use NP0/C0G capacitors and either air core or iron powder
However such a delay line will be somewhat bulky although it will
occupy less space than 200ns (~ 40m) of ordinary coax.
At one time special delay line coax was available, Tektronix used it
in some of their scopes.
The delay of such coax was about 40 times that of an equal length of
It is also possible to just implement the delay line as a folded
microstrip line but it will occupy about
56 square inches of FR4 circuit board per 100ns of delay when the
delay line track is 20 mils wide on a 50 mil pitch.
The delay will also vary about 20% over a temperature range of 0-70C.
The rise time at the output of such a delay line will be relatively
slow (several nanoseconds).
Only the variation in the propagation delay from the input to the
centroid of the output pulse is important.
If one is timestamping a GPS PPS pulse then there is plenty of time to
generate another pulse
that is synchronous with the reference clock and inject it into the
input of the delay line timed monostable.
If the known time stamp of the leading edge of this pulse is
subtracted from the corresponding time stamp
of the resultant output pulse centroid, this is equal to the
propagation delay from input to output pulse
centroid to within a fast gate delay or so.
Thus you can continuously measure this delay so that changes can be
An offset in the time stamp is unimportant when using PPS pulse timing
to monitor the reference frequency stability and drift, as long as the
offset remains constant.
Off course it is also necessary to correct for the PPS pulse sawtooth
error which is transmitted by the GPS timing receiver,
This is best done in software.
Whilst several papers have been published over the years on this
technique no details on how to calculate a centroid are given.
This is because the method of calculating the centroid of a pulse from
a sequence of samples is regarded as obvious.
Link below is to a recent Latvian implementation of this technique to
achieve resolution of a few picosec.
If S[j] is the value of the jth sample after the synchroniser output
time stamp Ts then the centroid time stamp value T[c ]is given by
Tc = Ts +T*(1*S + 2*S[2 ]+ ....+ n*S[n])/(S[1 ]+ S + ... +S[n])
Where T is the sampling clock period.
Off course in practice these samples all occur before the synchroniser
time stamp so all the j's will be negative.
If you imagine drawing the pulse shape on a piece of paper and cutting
it out, what you are trying to do is to find the centre of gravity of
this piece of paper.
The above formula approximates the pulse shape a sequence of
rectangular pulses of height Sj and
width 1 sampling clock period centred on the instant at which the
pulse was sampled.
It is also possible to approximate the pulse by a sequence of
trapaezoids where straight lines join the succesive samples.
The result using this algorithm is a little more accurate, however in
practice as long as the pulse is well sampled
and has a Gaussian like shape the difference between the 2
calculations is small.
You can use a shorter monostable output pulse width but the amplitude
of the low pass filtered pulse will be reduced.
A longer monostable pulse width will produce a flat topped pulse which
should be avoided.
The amplitude should be slightly less than the ADC full scale range to
maximise the accuracy of determining the centroid position.
Both the input and output of the low pass filter should be correctly
The low pass filter input and output terminations need not be equal.
More information about the time-nuts