[time-nuts] Re: Timestamping counter techniques : dead zone quantification
Tom Van Baak
tvb at LeapSecond.com
Mon Feb 7 15:05:56 UTC 2022
Erik,
The hp 53132A counter was mentioned in an earlier posting. Check the
documentation on the frequency command(s) and also the programming
examples in the appendix. Look for words like: "pre-measurement",
"expected frequency", and "optimizing throughput". Another good source
is the SRS FS740 manual, as well as Pendulum CNT-91 documents.
The least squares fit (regression) is ok in textbooks but, especially
for large blocks of timestamp data, you run into loss of precision and
range problems, as you've seen.
The trick that I use is to roughly detrend the data before you compute
the regression. I know that sounds odd, to detrend before you apply a
formula to compute the trend, but when you look at your sums you will
see why it works so well. We don't have access to hp or srs source code,
but perhaps this is why regression-based counters make use of the
expected value.
Here are two examples based on 10 000 picPET timestamp data, with debug
mode turned on [1]:
(1) A not-so-pretty least squares fit directly from raw timestamp data.
Note r^2 and steyx are suspect:
sums:
              833333324.999999880000000 Sxx
              833333316.906344180000000 Syy
              833333320.953173520000000 Sxy
     694444423810844930.000000000000000 Sxy*Sxy
     694444423810842370.000000000000000 Sxx*Syy
                      1.000000000000004 Sxy*Sxy/Sxx/Syy
              833333316.906344180000000 Syy
              833333316.906347160000000 Sxy*Sxy/Sxx
                     -0.000002980232239 Syy-Sxy*Sxy/Sxx
stats:
       10000.000000  1.000000000000000e+004 n
         499.950000  4.999500000000000e+002 x_mean
         499.949998  4.999499977851931e+002 y_mean
         288.689568  2.886895679907167e+002 x_sdev
         288.689567  2.886895665887843e+002 y_sdev
           1.000000  9.999999951438083e-001 m
           0.000000  2.130461211891088e-007 b
           1.000000  1.000000000000004e+000 r2
          -1.#IND00 -1.#IND00000000000e+000 steyx
(2) Since this is tau 0.1 s data, I apply a pre-detrend of 0.10001 to
the data before the least squares fit:
sums:
                      8.333333245853750 Sxx
                      8.334142635551871 Syy
                      8.333737930750992 Sxy
                     69.451187898437823 Sxy*Sxy
                     69.451187900531593 Sxx*Syy
                      0.999999999969853 Sxy*Sxy/Sxx/Syy
                      8.334142635551871 Syy
                      8.334142635300619 Sxy*Sxy/Sxx
                      0.000000000251251 Syy-Sxy*Sxy/Sxx
stats:
       10000.000000  1.000000000000000e+004 n
          -0.049995 -4.999499998841863e-002 x_mean
       26719.148510  2.671914850958520e+004 y_mean
           0.028869  2.886895679188980e-002 x_sdev
           0.028870  2.887035873203724e-002 y_sdev
           1.000049  1.000048562188179e+000 m
       26719.198507  2.671919850701305e+004 b
           1.000000  9.999999999698527e-001 r2
           0.000000  1.585249899616256e-007 steyx
You can play around with this to determine the right approach given the
frequency, batch size, quantization, and noise of your counter.
And again, a suggestion to re-read the TimeLab, TimePod, 53132A, and
FS740 literature, even once a week. The more you play with your own
counter the more you will understand what's in those manuals. Notice
also that these regression-based counters don't have to work with fixed
gate times either.
/tvb
[1] See xystats3.c / .exe in my leapsecond.com/tools/ directory.
On 2/6/2022 4:40 AM, Erik Kaashoek wrote:
> 4: I've looked into the math producing the steyx and its clear there
> are insufficient digits (16) in my math, only with low input
> frequencies, short gate times and low subsample rate it can always
> produce a relevant (non zero) number. I have no clue how to reduce the
> digit count, I tried subtracting an estimated global trend but as the
> x intervals are not constant that does not work with the integer math.
> I tried shifting the Y so the sumxy term gets lower but that is
> insufficient as the sumy2 is already > 1e+16 with 10 MHz input, will
> be even worse with 100MHz input. sumy2 is > 1e+20 with 0.1 s gate
> time. So it seems the steyx is usable to detect when measuring noise
> but otherwise only under very specific conditions.
More information about the Time-nuts_lists.febo.com
mailing list