A Tale of Two Noises

There are sometimes when noise is useful. I find that when designing filter for instance that rather than using a swept frequency and an oscilloscope a noise generator and spectrum analyser can give you a better picture.

There are two flavours of noise generator: digital and analogue. I have decided to rig up one of each and compare them.


My first circuit was the digital one as this was the easiest to implement as I didn’t have the parts for the analogue version. I used an Arduino Due which has two 12 bit DACs and runs at 84MHz. I combined the two outputs; DAC0 and DAC1 in a simple resistor network. and wrote a simple sketch. You don’t need to set up the random number seed.

The spectrom up to 400kHz and the waveform at 2mS / division

Above is the result. The spectrum at the top and the waveform below. A white noise spectrum should be flat but this dips at 80kHz intervals. If you inspect the waveform at a faster sweep you can see why.

The waveform 50uS / division

It consists of a sequence of square topped periods. This is to be expected and according to Harry Nyquist this limits use to half the sampling pulse rate; in this case about 40kHz. If you’re only dealing with audio this is more than adequate.
If you want to create a digital noise generator the clock rate has to be double the intended bandwidth. To get large bandwidths requires high speed logic.
Another drawback is that the amplitude dynamic range is not very good.


For the analogue version I found a good circuit online.

It looks a bit unusual because T2 has only two terminals connected and those are reverse biased. The circuit uses the emitter – base junction as a very noisy Zener diode. I’ve tried this with other transistors without much success.

This is what a good noise generator should look like. Notice that the spectrum goes all the way up to 25MHz without any humps. It probably goes quite a bit further but my ‘scope doesn’t. The lower waveform as at 10uS / division just to prove that it doesn’t have flat tops. My scope can’t display much higher frequencies.
The analogue generator is only really limited by the gain-bandwidth of the transistor.


If you want a good, simple, white noise generator it has to analogue. If, like me, you are a little impatient and have the parts around the digital version can serve well at lower frequencies. Digital noise generators are far more expensive, but a professional model has functions I can’t imagine using. I also want my Arduino Due back.

Simon Monk made a suggestion that improves the bandwidth of the digital version using the following sketch:

void setup() {
while(true) {
analogWrite( DAC0, random(4096));
analogWrite( DAC1, random(4096));
void loop() {}

This improves the bandwidth by about 30%.
you can find out about Simon Monk at simonmonk.org

Leave a Reply

Your email address will not be published.