In this question a zener diode is used to generate white noise, and I've also seen reverse-biased transistor base-emitter junctions for this.
Digitally a Linear Congruential Generator (LCG) can be used.

What's the best way to get good quality white noise without spending thousands of euros (or even hundreds)?

For extra credit: how can you judge the quality of an LCG noise generator without a spectrum analyser?


Noise diodes with guaranteed specifications are available from various suppliers:



A simple way of testing the output would be to feed it into a suitable radio receiver, and tune it across the frequency range. That's basically how a spectrum analyser works.

In many cases, such as adjusting a matching network, a calibrated noise source isn't necessary as relative measurements are sufficient.

Here is a simple noise source of mine, with a broad-band amplifier.

  • \$\begingroup\$ The Micronetics looks bloody expensive, and is probably overkill for what I need: a noise source which generates a higher noise level than an ordinary transistor, so that I don't have to amplify it too much (which may alter the spectrum) \$\endgroup\$ Jul 22 '11 at 6:01
  • \$\begingroup\$ Just use a broad-band amplifier after the noise source. That won't affect the spectrum. \$\endgroup\$ Jul 22 '11 at 9:02
  • \$\begingroup\$ Thank you. But do you have any idea why they use LNAs then to amplify, like I also asked in this question? \$\endgroup\$ Jul 22 '11 at 9:18
  • \$\begingroup\$ BTW, I love the No-PCB-Prototype. PCBs are for sissies! :-) \$\endgroup\$ Jul 22 '11 at 9:20

On the subject of digital noise generators, a simple (and cheap) generator can be made with a SIPO shift register whose input is obtained from an exclusive-nor combination of some of it's outputs (taps). With the right choice of taps, the shift register will cycle through a maximal length sequence, just as a LCG does. The maximal length is \$2^N-1\$ for an N bit shift register since the all-ones state is not allowed (it is self perpetuating).

Now, the spectrum of a digital pseudo-random noise generator consists of an infinite number of discrete lines separated by the sequence repetition frequency. So if our sequence repeats every second, the spectral lines will be 1Hz apart. A true random number generator will by definition never repeat and the spectral lines will be 0Hz apart, ie we would get a continuous spectrum.

The amplitude of the spectral lines of a PRNG fall-off with frequency reaching a nulls at multiples of the clock frequency (it follows a \$\dfrac{\sin(f)}{f}\$ law).

As for the practicalities, you would need to choose a clock frequency much higher than the highest frequency of interest. For instance, a 10MHz clocked PRNG would have a spectral line at 1MHz with an amplitude of about 98% of the lowest frequency line. If we use a 16 bit shift register, the spectral lines will be about 150Hz apart (\$\dfrac{10^7}{2^{16}-1}\$) which may or may not be acceptable to you. Choosing the taps as far as I know is a black art. I remember seeing a published table of taps vs register length some years ago but I can't locate it, however it's not too hard to write a program to find them by trial and error.

  • \$\begingroup\$ Thank you. Would it help to have several independent LCGs (different lengths and frequencies) and XOR their outputs? \$\endgroup\$ Jul 22 '11 at 13:29
  • \$\begingroup\$ @Federico - That's an interesting idea, but I don't have the mathematical skills to say what the spectrum would be like! \$\endgroup\$
    – MikeJ-UK
    Jul 22 '11 at 13:33
  • \$\begingroup\$ @Federico - Their combined length would be the LCM (Least Common Multiple) of the length of each of them divided by their resp. clock frequency, and thus, as per Mike's answer, have spectral lines closer together. I \$\endgroup\$
    – stevenvh
    Jul 22 '11 at 13:41
  • \$\begingroup\$ Wikipedia: LFSR lists a table of taps vs register length, and links to much larger tables. \$\endgroup\$
    – davidcary
    Jul 23 '11 at 1:05
  • \$\begingroup\$ @Federico - If you want a really long period you need a Mersenne Twister. MT19937 has a period of \$2^{19937}-1\$, or \$10^{6001}\$. That means that no matter how fast you clock it, it will never repeat. It is a bit more complex than an LFSR, however, you'll need an FPGA to implement it. \$\endgroup\$
    – stevenvh
    Jul 24 '11 at 17:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.