
This noise generator has an adjustable bandwidth and a consistent amplitude no matter what bandwidth is selected.
When working on a recent Design Idea for an adjustable filter, I wanted to use an electrical noise source to generate an FFT spectrum graph on my oscilloscope. To set up the test, I reached for my signal generator, which I knew had a noise generator option. I hooked the signal generator to the filter input and the scope to the filter output and turned on the scope’s FFT display function. I then set the filter to 10 kHz and set the signal generator noise standard deviation to its maximum of 3.0 volts.
Wow the engineering world with your unique design: Design Ideas Submission Guide
The output of the filter was a minuscule signal. Here’s what I’d ignored – the signal generator outputs a white noise signal with a 3.0 v standard deviation, but its bandwidth is 25 MHz. When I reduced the bandwidth with the filter, the amplitude dropped. With a perfect brick wall filter, this would reduce the standard deviation by the square root of (10 kHz/25 MHz). So, the 3.0 v standard deviation becomes about 60 mV after filtering. This small signal can be easily corrupted by noise existing in a test setup.
This standard deviation reduction comes from the way white noise signals add. Basically, if a signal is uncorrelated white noise and you add it to a second uncorrelated white noise source of the same standard deviation, the combined signal’s standard deviation will increase by the square root of 2. Alternately, when you filter out half of the spectrum of a noise signal with a brick wall filter, the standard deviation will decrease by the square root of 2.
It occurred to me that a noise signal generator should compensate for this reduction if you want to use a narrower portion of its bandwidth. For example, if the project under test is a device for audio, maybe you only need a noise source spanning only up to 50 kHz. Or maybe you’re testing a signal chain’s response for a low-frequency vibration sensor; in this case maybe a 1 kHz span is enough. But in either example you will want the signal’s standard deviation to be large enough to get a clean FFT.
So, how would I create a testing device to give me a noise generator that has an adjustable bandwidth and a consistent amplitude no matter what bandwidth is selected? The first thought was the typical white noise generator created with reversed biased Zener diode or base-emitter transistor junction followed by an adjustable low-pass filter and then an amplifier with some form of automatic gain control (AGC). But then it occurred to me that a micro I’d used recently has a random number generator and a fairly fast DAC for output…hmm.
Let’s take a look at what I came up with (Figure 1). First the name – the concept for this project idea is a Bandwidth Adjustable Noise Generator, which gives rise to the device’s nondescript acronymic moniker of “BANG”. The BANG is a micro-based generator that allows you to set the bandwidth you desire using a touchscreen. It then generates a noise signal with the standard deviation digitally compensated for that bandwidth.

Figure 1 The BANG is a micro-based generator that allows you to set, on a touchscreen, the bandwidth you desire. It then generates a noise signal with the standard deviation digitally compensated for that bandwidth. The device also has a knob to manually adjust the generated signal.
The device also has a good old-fashioned knob to manually adjust the generated signal somewhat, so you can tweak it. Its output has a maximum output of around 3.1 v and is available as an AC signal (biased at 0 v) or a DC signal (biased at around 1.65 v). The bandwidth adjustment of the noise signal goes from 225 kHz to 500 Hz, and this adjustment is accomplished using an LCD and touchscreen.
The hardware
The heart of the BANG is a Microchip Technology ATSAMD51 processor. The adjustable digital filter project mentioned earlier also used a ATSAMD51, which has a true random number generator (TRNG). It’s best to let the Microchip data sheet describe this feature:
The True Random Number Generator (TRNG) generates unpredictable random numbers that are not generated by an algorithm. It passes the American NIST Special Publication 800-22 and Diehard Random Tests Suites. The TRNG may be used as an entropy source for seeding an NIST approved DRNG (Deterministic RNG) as required by FIPS PUB 140-2 and 140-3.”
These 32-bit numbers sound perfect for constructing a noise signal source! Using the same processor as before also meant I could reuse a large portion of the LCD and touch screen code, IIR digital filter code, battery monitor code, and various other initialization and housekeeping pieces. Besides the micro, another major piece of the design is the touchscreen, which is an ILI9341 2.8″ 240×320 pixel TFT LCD with a SPI interface.
The other major electronic piece is the analog back end (ABE). One part of the ABE is a reconstruction filter (sometimes referred to as an anti-imaging filter) attached to a DAC on the micro. It essentially filters out-of-band high frequency content carried along with the digitally generated noise signal as it is sent out of the DAC. The filter is a 4-pole Sallen-Key low pass filter with a cutoff frequency of 250 kHz (I used TI’s Webbench filter design tool to calculate the component values). The ABE section also has a potentiometer-adjustable gain stage from around 0.25x to around 2.5x of the ADC signal. The last part of the ABE is a simple output buffer driving the AC and DC outputs. Figure 2 shows the complete schematic.

Figure 2 The heart of the BANG is a Microchip Technology ATSAMD51 processor.
There are a few odds-and-ends on the schematic that I haven’t mentioned yet. First, the micro format I used is an Adafruit Feather M4 Express Arduino board, powered via USB or, alternately, a 3.7 v lithium polymer battery. The Arduino board also contains a charger for the battery. Being able to power it from the battery may be more convenient in some situations, and better yet, it can provide ground isolation if desired in your setup.
The USB pin shown is actually a regulated 3.3 v source that is used to power the rest of the circuitry. You’ll also notice a voltage divider, connected to an ADC on the micro, used to measure the USB voltage for display purposes. The ON/OFF switch actually connects to the EN (enable) pin. The BANG is powered off when the EN pin is pulled to ground. A Vcc/2 reference circuit can also be seen and is used to provide a center voltage for the single-supply operated op-amps.
More to come
Next time, I’ll describe the BANG’s firmware, integration, and operating results. Until then, I welcome your thoughts in the comments on what I’ve discussed so far!
Note that the schematic, code, 3D print files, Arduino software, links related to various parts of the project, and additional notes and pictures on the project’s design and construction can be downloaded for free at the MakerWorld website.
Damian Bonicatto is a consulting engineer with decades of experience in embedded hardware, firmware, and system design. He holds over 30 patents.
Phoenix Bonicatto is a freelance writer.
Related Content
The post Making noise with a BANG, part 1: Concept and hardware appeared first on EDN.