[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Lux, Jim

On 5/2/22 7:03 PM, Magnus Danielson via time-nuts wrote:

Hi Jim,

Thanks for the corrections. Was way to tired to get the uniform and 
normal distributions right.


rand() is then by classical UNIX tradition is generated as a unsigned 
integer divided by the suitable (32th) power of two, so the maximum 
value will not be there, and this is why a small bias is introduced, 
since 0 can be reached but not 1.


I'll bet it's "pre-Unix" -

System/360 Scientific Subroutine Package Programmer's Manual, Version 
III, DOI: 10.3247/SL2Soft08.001 says 1968 version, but I'm pretty sure 
the SSP is older (it is Version 3 after all)


I used it on an IBM 1130 as a mere youth in 1969

http://media.ibm1130.org/1130-106-ocr.pdf


    SUBROUTINE RANDU(X,IY,YFL)
    IY = IX*899
    if (IY) 5,6,6
5   IY=IY+32767+1
6   YFL=IY
    YFL=YFL/32767.
    RETURN
    END


GAUSS does normal distribution, with this comment:

Y approaches a true normal distribution asympototically as K approaches 
infinity. For this subroutine, K was chosen as 12 to reduce execution time.


It also helps that the variance of a uniform distribution is 1/12, so 
summing 12 numbers produces a distribution with a variance of 1.



But it's older than that.. I found a reference to it in some 
documentation for 7090 from 1961.  Since Unix wasn't even a name until 
1970...





In practice the bias is small, but care is taken never the less.


Yes, that's a clever technique.

And the less said about the actual "randomness" of generators from that 
era, the better.





Cheers,
Magnus

___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.

[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Magnus Danielson via time-nuts

Hi Jim,

Thanks for the corrections. Was way to tired to get the uniform and 
normal distributions right.


rand() is then by classical UNIX tradition is generated as a unsigned 
integer divided by the suitable (32th) power of two, so the maximum 
value will not be there, and this is why a small bias is introduced, 
since 0 can be reached but not 1.


In practice the bias is small, but care is taken never the less.

Cheers,
Magnus

On 2022-05-03 03:43, Lux, Jim wrote:

On 5/2/22 6:09 PM, Magnus Danielson via time-nuts wrote:

Matthias,

On 2022-05-02 17:12, Matthias Welwarsky wrote:

Dear all,

I'm trying to come up with a reasonably simple model for an OCXO 
that I can
parametrize to experiment with a GPSDO simlator. For now I have the 
following
matlab function that "somewhat" does what I think is reasonable, but 
I would

like a reality check.

This is the matlab code:

function [phase] = synth_osc(samples,da,wn,fn)
# aging
phase = (((1:samples)/86400).^2)*da;
# white noise
phase += (rand(1,samples)-0.5)*wn;
# flicker noise
phase += cumsum(rand(1,samples)-0.5)*fn;
end

There are three components in the model, aging, white noise and 
flicker noise,

with everything expressed in fractions of seconds.

The first term basically creates a base vector that has a quadratic 
aging
function. It can be parametrized e.g. from an OCXO datasheet, daily 
aging

given in s/s per day.

The second term models white noise. It's just a random number scaled 
to the

desired 1-second uncertainty.

The third term is supposed to model flicker noise. It's basically a 
random

walk scaled to the desired magnitude.






Another thing. I think the rand function you use will give you a 
normal distribution rather than one being Gaussian or at least 
pseudo-Gaussian.


rand() gives uniform distribution from [0,1). (Matlab's doc says 
(0,1), but I've seen zero, but never seen 1.) What you want is 
randn(), which gives a zero mean, unity variance Gaussian distribution.


https://www.mathworks.com/help/matlab/ref/randn.html


A very quick-and-dirty trick to get pseudo-Gaussian noise is to take 
12 normal distribution random numbers, subtract them pair-wise and 
then add the six pairs. 


That would be for uniform distribution. A time-honored approach from 
the IBM Scientific Subroutine Package.



The subtraction removes any bias. The 12 samples will create a 
normalized deviation of 1.0, but the peak-to-peak limit is limited to 
be within +/- 12, so it may not be relevant for all noise 
simultations. Another approach is that of Box-Jenkins that creates 
much better shape, but comes at some cost in basic processing. 

___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe 
send an email to time-nuts-le...@lists.febo.com

To unsubscribe, go to and follow the instructions there.

___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.


[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Lux, Jim

On 5/2/22 6:09 PM, Magnus Danielson via time-nuts wrote:

Matthias,

On 2022-05-02 17:12, Matthias Welwarsky wrote:

Dear all,

I'm trying to come up with a reasonably simple model for an OCXO that 
I can
parametrize to experiment with a GPSDO simulator. For now I have the 
following
matlab function that "somewhat" does what I think is reasonable, but 
I would

like a reality check.

This is the matlab code:

function [phase] = synth_osc(samples,da,wn,fn)
# aging
phase = (((1:samples)/86400).^2)*da;
# white noise
phase += (rand(1,samples)-0.5)*wn;
# flicker noise
phase += cumsum(rand(1,samples)-0.5)*fn;
end

There are three components in the model, aging, white noise and 
flicker noise,

with everything expressed in fractions of seconds.

The first term basically creates a base vector that has a quadratic 
aging
function. It can be parametrized e.g. from an OCXO datasheet, daily 
aging

given in s/s per day.

The second term models white noise. It's just a random number scaled 
to the

desired 1-second uncertainty.

The third term is supposed to model flicker noise. It's basically a 
random

walk scaled to the desired magnitude.






Another thing. I think the rand function you use will give you a 
normal distribution rather than one being Gaussian or at least 
pseudo-Gaussian.


rand() gives uniform distribution from [0,1). (Matlab's doc says (0,1), 
but I've seen zero, but never seen 1.) What you want is randn(), which 
gives a zero mean, unity variance Gaussian distribution.


https://www.mathworks.com/help/matlab/ref/randn.html


A very quick-and-dirty trick to get pseudo-Gaussian noise is to take 
12 normal distribution random numbers, subtract them pair-wise and 
then add the six pairs. 


That would be for uniform distribution. A time-honored approach from the 
IBM Scientific Subroutine Package.



The subtraction removes any bias. The 12 samples will create a 
normalized deviation of 1.0, but the peak-to-peak limit is limited to 
be within +/- 12, so it may not be relevant for all noise 
simultations. Another approach is that of Box-Jenkins that creates 
much better shape, but comes at some cost in basic processing. 

___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.


[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Magnus Danielson via time-nuts

Matthias,

On 2022-05-02 17:12, Matthias Welwarsky wrote:

Dear all,

I'm trying to come up with a reasonably simple model for an OCXO that I can
parametrize to experiment with a GPSDO simulator. For now I have the following
matlab function that "somewhat" does what I think is reasonable, but I would
like a reality check.

This is the matlab code:

function [phase] = synth_osc(samples,da,wn,fn)
# aging
phase = (((1:samples)/86400).^2)*da;
# white noise
phase += (rand(1,samples)-0.5)*wn;
# flicker noise
phase += cumsum(rand(1,samples)-0.5)*fn;
end

There are three components in the model, aging, white noise and flicker noise,
with everything expressed in fractions of seconds.

The first term basically creates a base vector that has a quadratic aging
function. It can be parametrized e.g. from an OCXO datasheet, daily aging
given in s/s per day.

The second term models white noise. It's just a random number scaled to the
desired 1-second uncertainty.

The third term is supposed to model flicker noise. It's basically a random
walk scaled to the desired magnitude.


What you have shown is 2 out of the standard 5 noise-types. The Leeson 
model describes how 4 noise-types can be generated, but in addition to 
that the Random Walk Frequency Modulation is included. For standard, see 
IEEE Std 1139. For Leeson model, see David Leeson articles from special 
issue of Feb 1966, as I believe you can find on IEEE UFFC site. The 
Wikipedia Allan Deviation article may also be of some guidance.


Noise-types:

White Phase Modulation - your thermal noise on phase

Flicker Phase Modulation - your 1/f flicker noise on phase

Because we have oscillators that integrate inside the resonators 
bandwidth, we also get their integrated equivalents


White Frequency Modulation - your thermal noise on frequency - forms a 
Random Walk Phase Modulation


Flicker Frequency Modulation - Your 1/f flicker noise on frequency

Random Walk Frequency Modulation - Observed on disturbed oscillators, a 
random walk in frequency, mostly analyzed for finding rare faults.


You have only modelled the first two. This may or may not be relevant 
depending on the bandwidth of your control loop and the dominant noise 
there. It may not be relevant. The phase-noise graph will illustrate 
well where the power of the various noise-types intercept and thus 
provide a range over frequency for which one or the other is dominant. 
You control loop bandwidth will high-pass filter this for your locked 
oscillator, and low-pass filter for your reference oscillator/source. 
The end result will be a composit of both. The Q-value / damping factor 
will control just how much jitter peaking occurrs at the cut-over 
frequency, and the basic recommendation is to keep it well damped at all 
times.


The ADEV variant of this is similar.

Now, to simulate flicker you have a basic problem, whatever processing 
you do will end up needing the full time of your simulation data to 
maintain the slope. You can naturally cheat and do a much reduced setup 
that only provides the 1/f slope of PSD at and about the area where it 
dominates. Notice that this can occurr both for the FPM and FFM cases. 
Also notice that if we respect the model, these should be completely 
independent.


Simulation wise, you can turn WPM into WFM by integration, and FPM into 
FFM by integration. Similarly the WFM becomes RWFM through a second 
integration. Just source each of these independent to respect the model.


The Leeson model for an oscillator does not have these fully 
independent, but for most uses, simulate fully independent, and you will 
not make more fool of yourself than anyone else usually does, present 
company included.


As you see, flicker and random-walk is not the same thing. Often "random 
walk" implies Random Walk Frequency Modulation.


Another thing. I think the rand function you use will give you a normal 
distribution rather than one being Gaussian or at least pseudo-Gaussian. 
A very quick-and-dirty trick to get pseudo-Gaussian noise is to take 12 
normal distribution random numbers, subtract them pair-wise and then add 
the six pairs. The subtraction removes any bias. The 12 samples will 
create a normalized deviation of 1.0, but the peak-to-peak limit is 
limited to be within +/- 12, so it may not be relevant for all noise 
simultations. Another approach is that of Box-Jenkins that creates much 
better shape, but comes at some cost in basic processing.



As an example, the following function call would create a phase vector for a
10MHz oscillator with one day worth of samples, with an aging of about 5
Millihertz per day, 10ps/s white noise and 10ns/s of flicker noise:

phase = osc_synth(86400, -44e-6, 10e-12, 10e-9);

What I'd like to know - is that a "reasonable" model or is it just too far off
of reality to be useful? What could be changed or improved?


As I've stated above, I think it misses key noise-types. I really wonder 
if the flicker noise model you have is 

[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Bob kb8tq
Hi

….. except that having done this for many decades on hundreds of
designs, , a single data set from a real OCXO is likely to show you 
things that millions of simulations from a formula will somehow miss ….

Bob

> On May 2, 2022, at 5:13 PM, Greg Maxwell  wrote:
> 
> On Mon, May 2, 2022 at 10:01 PM Bob kb8tq  wrote:
>> By far the best approach is to use actual data. Grab a pair of OCXO’s and
>> compare them. A single mixer setup is one easy ( = cheap ) way to do it. You
>> will get the sum of the two devices, but for simulation purposes, it will be 
>> *much*
>> closer to reality than anything you can brew up with a formula.
> 
> But a programmatic way of generating plausible OCXO noise lets you
> generally millions of times more data, over a much larger spectrum of
> plausible operating conditions-- so that you can test the stability of
> an algorithm over a wider collection of conditions.
> 
> It's not a complete replacement for using real data-- you should do
> that too.  But it can be a much more comprehensive test.
> ___
> time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
> email to time-nuts-le...@lists.febo.com
> To unsubscribe, go to and follow the instructions there.
___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.

[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Greg Maxwell
On Mon, May 2, 2022 at 10:01 PM Bob kb8tq  wrote:
> By far the best approach is to use actual data. Grab a pair of OCXO’s and
> compare them. A single mixer setup is one easy ( = cheap ) way to do it. You
> will get the sum of the two devices, but for simulation purposes, it will be 
> *much*
> closer to reality than anything you can brew up with a formula.

But a programmatic way of generating plausible OCXO noise lets you
generally millions of times more data, over a much larger spectrum of
plausible operating conditions-- so that you can test the stability of
an algorithm over a wider collection of conditions.

It's not a complete replacement for using real data-- you should do
that too.  But it can be a much more comprehensive test.
___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.

[time-nuts] Re: Simple simulation model for an OCXO?

2022-05-02 Thread Bob kb8tq
Hi

By far the best approach is to use actual data. Grab a pair of OCXO’s and 
compare them. A single mixer setup is one easy ( = cheap ) way to do it. You
will get the sum of the two devices, but for simulation purposes, it will be 
*much*
closer to reality than anything you can brew up with a formula. 

Bob

> On May 2, 2022, at 10:12 AM, Matthias Welwarsky  
> wrote:
> 
> Dear all,
> 
> I'm trying to come up with a reasonably simple model for an OCXO that I can 
> parametrize to experiment with a GPSDO simulator. For now I have the 
> following 
> matlab function that "somewhat" does what I think is reasonable, but I would 
> like a reality check.
> 
> This is the matlab code:
> 
> function [phase] = synth_osc(samples,da,wn,fn)
> # aging
> phase = (((1:samples)/86400).^2)*da;
> # white noise
> phase += (rand(1,samples)-0.5)*wn;
> # flicker noise
> phase += cumsum(rand(1,samples)-0.5)*fn;
> end
> 
> There are three components in the model, aging, white noise and flicker 
> noise, 
> with everything expressed in fractions of seconds.
> 
> The first term basically creates a base vector that has a quadratic aging 
> function. It can be parametrized e.g. from an OCXO datasheet, daily aging 
> given in s/s per day.
> 
> The second term models white noise. It's just a random number scaled to the 
> desired 1-second uncertainty.
> 
> The third term is supposed to model flicker noise. It's basically a random 
> walk scaled to the desired magnitude.
> 
> As an example, the following function call would create a phase vector for a 
> 10MHz oscillator with one day worth of samples, with an aging of about 5 
> Millihertz per day, 10ps/s white noise and 10ns/s of flicker noise:
> 
> phase = osc_synth(86400, -44e-6, 10e-12, 10e-9);
> 
> What I'd like to know - is that a "reasonable" model or is it just too far 
> off 
> of reality to be useful? What could be changed or improved?
> 
> Best regards,
> Matthias
> 
> 
> ___
> time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
> email to time-nuts-le...@lists.febo.com
> To unsubscribe, go to and follow the instructions there.
___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.

[time-nuts] Simple simulation model for an OCXO?

2022-05-02 Thread Matthias Welwarsky
Dear all,

I'm trying to come up with a reasonably simple model for an OCXO that I can 
parametrize to experiment with a GPSDO simulator. For now I have the following 
matlab function that "somewhat" does what I think is reasonable, but I would 
like a reality check.

This is the matlab code:

function [phase] = synth_osc(samples,da,wn,fn)
# aging
phase = (((1:samples)/86400).^2)*da;
# white noise
phase += (rand(1,samples)-0.5)*wn;
# flicker noise
phase += cumsum(rand(1,samples)-0.5)*fn;
end

There are three components in the model, aging, white noise and flicker noise, 
with everything expressed in fractions of seconds.

The first term basically creates a base vector that has a quadratic aging 
function. It can be parametrized e.g. from an OCXO datasheet, daily aging 
given in s/s per day.

The second term models white noise. It's just a random number scaled to the 
desired 1-second uncertainty.

The third term is supposed to model flicker noise. It's basically a random 
walk scaled to the desired magnitude.

As an example, the following function call would create a phase vector for a 
10MHz oscillator with one day worth of samples, with an aging of about 5 
Millihertz per day, 10ps/s white noise and 10ns/s of flicker noise:

phase = osc_synth(86400, -44e-6, 10e-12, 10e-9);

What I'd like to know - is that a "reasonable" model or is it just too far off 
of reality to be useful? What could be changed or improved?

Best regards,
Matthias


___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.


[time-nuts] Re: Can the ADEV of a GPSDO output ever be lower than the minimum of the ADEV of the internal oscilator and the ADEV of the GPS PPS?

2022-05-02 Thread Markus Kleinhenz via time-nuts
Hi Bob,

thanks for the heads-up. The only other source I had was a paper
claiming similar things, but they had only done so in simulations.
So I thought the manual of the FS740 would be the more trustworthy of
the two.

Greetings
Markus

Am 02.05.2022 um 13:38 schrieb Bob kb8tq:
> Hi
>
> If you have a FS740 and measure it’s performance …. you likely will 
> take anything the manual says a lot less seriously ….. Their ADEV 
> performance in the real world is a bit underwhelming.
>
> Bob
>
>> On May 2, 2022, at 1:42 AM, Markus Kleinhenz via time-nuts 
>>  wrote:
>>
>> Hi Erik,
>>
>> I just found a hint that what you are seeing may be correct after all:
>>
>> The Manual of the Stanford Research Systems FS740 says:
>>
>>/*Predictive Filtering*//
>>//The superior short term stabilities of the OCXO and Rb timebases
>>enable the usage of//
>>//predictive filtering to improve the stability of the FS740 by up
>>to 3 times over traditional//
>>//methods. Predictive filtering uses state space methods to predict
>>the phase of the local//
>>//timebase relative to GNSS. The technique is quite similar to
>>Kalman filtering. The//
>>//benefit is that the FS740 can average the GNSS signal much more
>>effectively, resulting//
>>//in a significantly more stable signal with a much shorter time
>>constant than would be//
>>//possible with traditional filtering./
>>
>> And has the ADEV Plots I attached. The GPS curve they printed is in the
>> realm of a sawtooth corrected M8T (<1e-12 @ tau=10ks) [See the Plot from
>> John Ackermanns Ublox evaluation]. But especially the Rb option seems to
>> surpass the reference in a parallel fashion.
>>
>> My two cents on simulated 1PPS Signals:
>>
>> One has to be careful when only using ADEV as the only characteristic
>> for modeling the 1PPS Signal as it combines White PM and Flicker PM in
>> one slope. So you may create an artificial signal which is pure WPN and
>> in turn is best predicted by something like the kalman filter.
>>
>> Regards,
>>
>> Markus
>>
>> Am 29.04.2022 um 19:24 schrieb Erik Kaashoek:
>>> Thanks for confirming something is still wrong. :-(
>>> I've extended the simulation to contain a full Kalman filter working
>>> with 2 state parameters: phase and frequency.
>>> The biggest impact I can see is when increasing Kp above the optimal
>>> value the PPS noise normally starts to impact the output phase and the
>>> ADEV at tau 1 becomes worse
>>> The Kalman filter seems to be able to filter the noise from the PPS
>>> better so with equally high Kp the ADEV at tau =1 is about a factor 4
>>> better
>>> Unfortunately the high Kp of 0.1 is far from optimal and setting Kp to
>>> 0.01 gives overall a better performance and the Kalman filter no
>>> longer seem to have a visible impact.
>>> Octave code for the simulation and the used data files are attached.
>>> Also 3 plots are attached showing optimal Kp, high Kp with no filter
>>> and high Kp with Kalman filer
>>> I'm still seeing some weird stuff in the ADEV plots.
>>> Erik.
>>>
>>> On 29-4-2022 16:53, André Balsa wrote:
 Hi Erik,
 Mathematically, no, a GPSDO cannot have a lower uncertainty (ADEV)
 than the
 minimum observable uncertainty (ADEV) of the combined oscillator
 (disciplined clock) and PPS (disciplining clock) from the GPS receiver.
 Unless there is some magic trick to remove the uncertainty in a clock
 that
 I am not aware of. ;)

 On Thu, Apr 28, 2022 at 10:03 PM Erik Kaashoek 
 wrote:

> I'm doing some simulations to understand the impact of a filter
> between the
> TIC measurement and the PI controller steering the Vtune of the OCXO.
> With a well tuned PI controller without filter the best ADEV I can
> get is
> just above the minimum ADEV of an actual measured  OCXO and an actual
> measured GPS PPS.
> When I add an alpha-beta filter, similar to a first order Kalman filter
> with a manually tuned Kalman gain, and using similar Kp, Ki, the
> overall
> performance does not change (much)
> However with the filter its is possible to increase the Kp, Ki with a
> factor 10 and when I use in the simulation instead of a measured PPS an
> artificial PPS created from noise with the same ADEV as the GPS PP
> but with
> a very constant phase (different from the varying phase of a GPS
> PPS)  the
> ADEV of the GPSDO output in my simulation seems to drops below the
> ADEV of
> the PPS. Am I correct to assume this is a hint there is still something
> wrong in the simulation or was my initial assumption about the possible
> range of the GPSDO ADEV wrong?
> Erik.
>
>> ___
___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions 

[time-nuts] Re: What time difference to expect from two clocks using internal GPS receivers?

2022-05-02 Thread Dan Kemppainen

Hi,

Have you looked at the delay of the GPS signal passing through the 
filter to the one unit vs C on the other?


I've seen a similar situation where a bias T was the culprit. I don't 
recall the numbers off hand but it was significant enough to notice, and 
the difference went away once the T removed (or duplicated on the other 
device).


Dan


On 5/1/2022 3:30 AM, time-nuts-requ...@lists.febo.com wrote:


Some more info
The two GPS do keep their phase stable vs a Rb within ±10 ns. But the
absolute time difference of their PPS pulses  was, after a cold start,
stable within ± 20ns but  the average value could be up to 100ns and
differed after every cold start.
The two GPS antenna cables had a length difference of 1 meter, but that
should cater for only 5 ns (?) One module is connected to the antenna with
only a C, the other has a 1 GHz CLC high pass filter between antenna and
module
Erik

___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.


[time-nuts] Re: Can the ADEV of a GPSDO output ever be lower than the minimum of the ADEV of the internal oscilator and the ADEV of the GPS PPS?

2022-05-02 Thread Bob kb8tq
Hi

If you have a FS740 and measure it’s performance …. you likely will 
take anything the manual says a lot less seriously ….. Their ADEV 
performance in the real world is a bit underwhelming.

Bob

> On May 2, 2022, at 1:42 AM, Markus Kleinhenz via time-nuts 
>  wrote:
> 
> Hi Erik,
> 
> I just found a hint that what you are seeing may be correct after all:
> 
> The Manual of the Stanford Research Systems FS740 says:
> 
>/*Predictive Filtering*//
>//The superior short term stabilities of the OCXO and Rb timebases
>enable the usage of//
>//predictive filtering to improve the stability of the FS740 by up
>to 3 times over traditional//
>//methods. Predictive filtering uses state space methods to predict
>the phase of the local//
>//timebase relative to GNSS. The technique is quite similar to
>Kalman filtering. The//
>//benefit is that the FS740 can average the GNSS signal much more
>effectively, resulting//
>//in a significantly more stable signal with a much shorter time
>constant than would be//
>//possible with traditional filtering./
> 
> And has the ADEV Plots I attached. The GPS curve they printed is in the
> realm of a sawtooth corrected M8T (<1e-12 @ tau=10ks) [See the Plot from
> John Ackermanns Ublox evaluation]. But especially the Rb option seems to
> surpass the reference in a parallel fashion.
> 
> My two cents on simulated 1PPS Signals:
> 
> One has to be careful when only using ADEV as the only characteristic
> for modeling the 1PPS Signal as it combines White PM and Flicker PM in
> one slope. So you may create an artificial signal which is pure WPN and
> in turn is best predicted by something like the kalman filter.
> 
> Regards,
> 
> Markus
> 
> Am 29.04.2022 um 19:24 schrieb Erik Kaashoek:
>> Thanks for confirming something is still wrong. :-(
>> I've extended the simulation to contain a full Kalman filter working
>> with 2 state parameters: phase and frequency.
>> The biggest impact I can see is when increasing Kp above the optimal
>> value the PPS noise normally starts to impact the output phase and the
>> ADEV at tau 1 becomes worse
>> The Kalman filter seems to be able to filter the noise from the PPS
>> better so with equally high Kp the ADEV at tau =1 is about a factor 4
>> better
>> Unfortunately the high Kp of 0.1 is far from optimal and setting Kp to
>> 0.01 gives overall a better performance and the Kalman filter no
>> longer seem to have a visible impact.
>> Octave code for the simulation and the used data files are attached.
>> Also 3 plots are attached showing optimal Kp, high Kp with no filter
>> and high Kp with Kalman filer
>> I'm still seeing some weird stuff in the ADEV plots.
>> Erik.
>> 
>> On 29-4-2022 16:53, André Balsa wrote:
>>> Hi Erik,
>>> Mathematically, no, a GPSDO cannot have a lower uncertainty (ADEV)
>>> than the
>>> minimum observable uncertainty (ADEV) of the combined oscillator
>>> (disciplined clock) and PPS (disciplining clock) from the GPS receiver.
>>> Unless there is some magic trick to remove the uncertainty in a clock
>>> that
>>> I am not aware of. ;)
>>> 
>>> On Thu, Apr 28, 2022 at 10:03 PM Erik Kaashoek 
>>> wrote:
>>> 
 I'm doing some simulations to understand the impact of a filter
 between the
 TIC measurement and the PI controller steering the Vtune of the OCXO.
 With a well tuned PI controller without filter the best ADEV I can
 get is
 just above the minimum ADEV of an actual measured  OCXO and an actual
 measured GPS PPS.
 When I add an alpha-beta filter, similar to a first order Kalman filter
 with a manually tuned Kalman gain, and using similar Kp, Ki, the
 overall
 performance does not change (much)
 However with the filter its is possible to increase the Kp, Ki with a
 factor 10 and when I use in the simulation instead of a measured PPS an
 artificial PPS created from noise with the same ADEV as the GPS PP
 but with
 a very constant phase (different from the varying phase of a GPS
 PPS)  the
 ADEV of the GPSDO output in my simulation seems to drops below the
 ADEV of
 the PPS. Am I correct to assume this is a hint there is still something
 wrong in the simulation or was my initial assumption about the possible
 range of the GPSDO ADEV wrong?
 Erik.
 
> 
> ___
> time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
> email to time-nuts-le...@lists.febo.com
> To unsubscribe, go to and follow the instructions there.
___
time-nuts mailing list -- time-nuts@lists.febo.com -- To unsubscribe send an 
email to time-nuts-le...@lists.febo.com
To unsubscribe, go to and follow the instructions there.