[time-nuts] Simulating Oscillator Noise: Difficulties Simulating Flicker FM Noise

Magnus Danielson magnus at rubidium.dyndns.org
Thu Apr 22 19:27:43 EDT 2010

On 04/22/2010 11:06 PM, Kyle Wesson wrote:
> Hello,
> I am trying to simulate oscillator noise by following the procedure
> outlined in James Barnes' paper: "Simulation of Oscillator Noise"
> (1984) 28th Annual Frequency Control Symposium. In the paper, Barnes
> explains the models of the five typical types of noise that occur in
> oscillators and a method for their simulation.

Have you looked at


They are a little more modern. The first paper is a modernisation of 
what you have at hand, the second uses an FFT approach.

> I've followed the steps he presents in his paper and have been unable
> to produce simulated output for flicker FM noise that leads to an flat
> Allan variance graph (ie. all Allan variance values are nearly
> constant for all tau values). Instead, the Allan variance values of my
> simulated flicker FM noise start out constant at the Allan variance
> value I desire but then tend upwards by two to three orders of
> magnitude (nearly every simulation) about halfway through the range of
> possible tau values. In short, it starts out flat and then increases
> rapidly about halfway through the tau range. I believe there may be a
> couple possibilities and am wondering if anyone else has come across
> the same issues or knows of a solution.
> 1) To simulate flicker FM noise, Barnes uses a set of ARIMA
> coefficients to model the noise. Is an updated set of coefficients
> available that would have better accuracy or produce better simulation
> results? Is the ARIMA method typically used with the availability of
> today's higher computational power?

See above papers.

> 2) Barnes devotes a section of the paper to random number generation
> and states that the random numbers to be used should be normally
> distributed with zero mean and unit variance. I  used the built-in
> Matlab command randn() to generate the random data but only achieved
> an all-flat Allan variance plot when the random number generator was
> seeded with a particular number. The majority of the time (using a
> "random" seed), this method produced non-flat results as described
> above. I then attempted the two methods Barnes presents in his paper
> to generate the random numbers which provided similar non-flat
> results.

The length of your data record may be an issue. Depending on the random 
generator some stretches may behave none-flat locally.

> Are random normally distributed random numbers optimal for these
> simulations? Would another distribution produce results consistent
> with the expectation of an all-flat (ie. constant) Allan variance for
> flicker noise?

You are approaching it from the wrong angle. The distribution form is 
orthogonal to the white-ness. A standard no-frills random generator of a 
normal computer system (say standard UNIX) is normal distributed. This 
is no good for even white-noise simulations as the distirbution you want 
is gaussian. However, by adding many noise-samples you shape it into 
gaussian form. It will never be true gaussian, but it is one 
approximation. A better approach is the Box-Mueller transformation, but 
it comes at a fairly high price, nothing that a good CORDIC can't solve 
thought. The traditional way of adding normal distributed samples 
ranging from 0 to 1 is to add 12 of them and subtract the constant 6. 
This will not be truely DC-free as the random generator never does 0 but 
has at least 1. The solution is to take two samples and subtract them 
from each other, then using 6 pairs and add their results. This achieves 
the same thing but handles the DC offset issue. The reason for 12 is 
that the produced output has the RMS power of 1 (since the RMS amplitude 
of the normal distributed noise is 1/sqrt(12) ), so just multiplying 
with requested noise amplitude gets the final amplitude correct.

To frequency slope shape the noise the approach used by Barnes is to use 
a set of filters to create the 1/f power-law slope and using various 
numbers of integrations 1/f^2, 1/f^3 and 1/f^4 can be produced.

The trouble with the filter approach is that it only approximates the -3 
dB/Oct slope and has a number of wiggles depending on the number of 
poles being employed. Also, depending on the quality of the algorithm 
providing the coefficients, the flatness may be more or less good.
You want to use the first paper over the one you used.
The filter-approach has a pass-band for which you get the requested -3 
dB/Oct and outside of that you get standard 0 dB/Oct or -6 dB/Oct 
responses. I just isn't particularly efficient.

To overcome the range and flattness issues of the filter approach, the 
FFT approach to filtering is benefitial.

Thus, when analyzing time-spans covering more and more of the 
non-flicker response, the Allan variance will shift character too.

Also consider that the Allan variance estimator will loose statistical 
resolution for longer taus as it's effective degrees of freedom becomes 
less and less.

I hope you have got some useful hints. Let me know of your progress.


More information about the time-nuts mailing list