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

Magnus Danielson magnus at rubidium.se
Sun May 15 16:33:55 UTC 2022


Hi Matthias,

On 2022-05-14 08:58, Matthias Welwarsky wrote:
> On Dienstag, 3. Mai 2022 22:08:49 CEST Magnus Danielson via time-nuts wrote:
>> Dear Matthias,
>>
>> Notice that 1/f is power-spectrum density, straight filter will give you
>> 1/f^2 in power-spectrum, just as an integration slope.
>>
>> One approach to flicker filter is an IIR filter with the weighing of
>> 1/sqrt(n+1) where n is tap index, and feed it normal noise. You need to
>> "flush out" state before you use it so you have a long history to help
>> shaping. For a 1024 sample series, I do 2048 samples and only use the
>> last 1024. Efficient? No. Quick-and-dirty? Yes.
> I went "window shopping" on Google and found something that would probably fit
> my needs here:
>
> https://ccrma.stanford.edu/~jos/sasp/Example_Synthesis_1_F_Noise.html
>
> Matlab code:
>
> Nx = 2^16;  % number of samples to synthesize
> B = [0.049922035 -0.095993537 0.050612699 -0.004408786];
> A = [1 -2.494956002   2.017265875  -0.522189400];
> nT60 = round(log(1000)/(1-max(abs(roots(A))))); % T60 est.
> v = randn(1,Nx+nT60); % Gaussian white noise: N(0,1)
> x = filter(B,A,v);    % Apply 1/F roll-off to PSD
> x = x(nT60+1:end);    % Skip transient response
>
> It looks quite simple and there is no explanation where the filter
> coefficients come from, but I checked the PSD and it looks quite reasonable.

This is a variant of the James "Jim" Barnes filter to use lead-lag 
filter to approximate 1/f slope. You achieve it within a certain range 
of frequency. The first article with this is available as a technical 
note from NBS 1965 (available at NIST T&F archive - check for Barnes and 
Allan), but there is a more modern PTTI article by Barnes and Greenhall 
(also in NIST archive) that uses a more flexible approach where the 
spread of pole/zero pairs is parametric rather than fixed. The later 
paper is important as it also contains the code to initialize the state 
of the filter as if it has been running for ever so the state have 
stabilized. A particular interesting thing in that article is the plot 
of the filter property aligned to the 1/f slope, it illustrates very 
well the useful range of the produced filter. This plot is achieved by 
scaling the amplitude responce with sqrt(f).

I recommend using the Barnes & Greenhall variant rather than what you 
found. It needs to be adapted to the simulation at hand, so the fixed 
setup you have will fit only some needs. One needs to have the filter 
covering the full frequency range where used flicker noise is dominant 
or near dominant. As one uses flicker shaping for both flicker phase 
modulation as well as flicker frequency modulation, there is two 
different frequency ranges there they are dominant or near dominant.

There is many other approaches, see Attilas splendid review the other day.

Let me also say that I find myself having this question coming even from 
the most senioric researches even the last week: "What is your favorite 
flicker noise simulation model?". They keep acknowledge my basic message 
of "Flicker noise simulation is hard". None model fit all applications, 
so no one solution solves it all. One needs to validate that it fit the 
application at hand.

Cheers,
Magnus

>
> The ADEV of a synthesized oscillator, using the above generator to generate 1/
> f FM noise is interesting: it's an almost completely flat curve that moves
> "sideways" until the drift becomes dominant.
>
> Regards,
> Matthias
>
>
> _______________________________________________
> time-nuts mailing list -- time-nuts at lists.febo.com
> To unsubscribe send an email to time-nuts-leave at lists.febo.com




More information about the Time-nuts_lists.febo.com mailing list