Measuring 1/f noise -- FFT? - Page 1
Forum section: electronics / general

author: essele
author_rank: Frequent Contributor
timestamp: April 16, 2020, 05:35:23 pm
content: I followed the whole LNA discussion with great interest and even ended up buying one from Pipelie, which I've used with both my scope and an analog discovery to look at 1/f noise of various references etc. It works well, but it's feels like a lot of effort.It struck me that a lot of the complexity of the LNA is the low-pass filter to ensure you get the cut-off at 10Hz, and then the fact you need to plug it into something else!Couldn't this be better achieved (along with actually calculating the 1/f noise) with an ADC and FFT??My theory is that you take a similar front-end (0.1Hz high pass filter) with some input protection, all as per the LNA, but then you feed the input into an instrument amplifier (or keep the existing x10000 stage) and then onto a simple ADC at 20 samples per second. Then some FFT'ing gives you a nice spectrum plot, and presumably (I'm well outside my understanding here) a reverse FFT would then get you back a filtered time-domain output you could use to work out peak-to-peak values.I did a little experiment with my trusty PSoC board, an INA121, and some open source FFT code as a bit of a proof of concept (see attached), but I've only experimented with x10 amplification and a sig-gen at the moment, clearly breadboard isn't going to work for x10000.It all seems a little too easy, so I'm presumably missing something? Is there a reason it wouldn't work? You could build a really nice 1/f noise meter for peanuts if it did!The attached photo is a 2Hz 200mV sine wave with x10, 20 samples per second, using DMA and a 512 sample buffer, so the fft is done on 512 samples each time, but updated about 10 times a second. The display is linear and backwards, so 10Hz is on the left. The 4Hz and 6Hz signals aren't there if you use a non-amplified signal direct from the sig-gen, so I fear this may be the start of my downfall!

author: branadic
author_rank: Super Contributor
timestamp: April 16, 2020, 05:55:04 pm
content: Well, my Advantest R9211E and also the HP FFT Analyzers are similar to this, a 10mHz AC/DC switchable high pass filter, followed by a fet stage (µP70A and µP71A in R9211) and good old NE5534, some additional amplification/attenuation, a 100kHz low pass filter somewhere and a 16bit ADC, in raw words. This arrangement gives results down to -140dBV.-branadic-

author: Andreas
author_rank: Super Contributor
timestamp: April 16, 2020, 06:30:30 pm
content: Quote from: essele on April 16, 2020, 05:35:23 pmYes.You need at minimum 10 sec measurement time to measure 0.1 Hz.and 20 Hz sample rate is way too low even for a 10 Hz bandwidth limited signal.(You will at best get some aliases of the mains frequency).1/f noise is measured as peak to peak voltage. A FFT gives a RMS (energy) value.With best regardsAndreas

author: jbb
author_rank: Super Contributor
timestamp: April 17, 2020, 02:48:06 am
content: For a spectrum, FFT is very effective. To capture low frequencies the total sampling window gets longer and longer; this is inevitable.For peak to peak, you could implement a digital 10Hz LPF on sampled ADC data.In either case, you would need an analog antialiasing filter before the ADC.Anti alias filter should have very low attenuation at 10Hz (that’s the software’s job!), so it might be a relatively high frequency eg 1kHz. You would need to check that the integrated broadband noise up to the filter cutoff isn’t large enough to saturate the ADC.Then the ADC needs a high enough sample rate to avoid aliasing. This will depend on the filter order, and could be 10x (eg 10 kSamples/second) or more.For 0.1 Hz resolution you need min 10 seconds acquisition time (I would suggest at least twice that), so that’s on the order of 100,000 samples to store.A Sigma Delta ADC could be great here. They have huge oversampling rates (often 128x or more) and make anti aliasing easy. Also available in high resolution (eg 24b) which will be good for extracting small signals of interest.For high precision work you’ll need o be careful about power supply noise, clock noise, clock jitter etc.

author: David Hess
author_rank: Super Contributor
timestamp: April 17, 2020, 03:21:10 am
content: Using an FFT is absolutely feasible for measuring noise but there are some issues. A quantitative result will require either having an output with units of 1 Hz RBW (resolution bandwidth) or knowing the RBW so that you can make the correction yourself. On a traditional spectrum analyzer, this would be done by the noise marker function which of course DSO FFTs functions do not provide.Further, it will be very helpful if the result of the FFT is averaged, which means measuring down to 0.1 Hz will require multiple 10 second passes, however the input to the FFTmust not be averaged! Some DSOs apply their average function to the input rather than the FFT result which is less than useless.

author: jbb
author_rank: Super Contributor
timestamp: April 17, 2020, 04:05:11 am
content: I guess the 1Hz slices would need a bit of measurement code to integrate the power.Good point on the averaging, too.Anyone know if taking 16 FFTs (10 seconds each) and averaging FFT outputs will produce different results to one 160 second FFT? (Aside from FFT output frequency resolution and calculation time.)

author: essele
author_rank: Frequent Contributor
timestamp: April 17, 2020, 07:29:38 am
content: Thanks for all the comments ...On the sample time and averaging ... my current approach already uses 512 samples (at 20 per second) so is already a 25 second measurement period, I just use a circular buffer and fft the full buffer each time so I can start displaying quickly (and see it build over time) ... I've checked measurements down to 0.1Hz and they are all fine.On the aliasing and bandwidth limited signal ... I see that's the problem now, at 11Hz input I see quite a strong reading at around 8.5Hz, with various levels showing all the way up to about 1kHz.The ADC in the PSoC is currently set to average 128 readings and I haven't really paid too much attention to the settings or internal sample rate as I've been triggering using a 20 Hz timer ... I will do some experimentation, but it does sound like it's difficult to get away from the 10Hz low pass ... I can increase sample rates probably by a factor of 10 or so, but not much more than that as memory is limited on these devices.

author: Kleinstein
author_rank: Super Contributor
timestamp: April 17, 2020, 11:00:45 am
content: Quote from: jbb on April 17, 2020, 04:05:11 amThe principle curve should be the same with one long FFT followed by deducing the resolution (e.g. combine 10 bins). There can be some differences with the ends and the artifacts due to the windowing function. So one longer FFT has some advantages.With just noise aliasing is generally not so bad. The trouble can be aliasing of some strong signals like 50/100 Hz hum. So while no very interesting it may actually good if at least the 50 / 100 Hz background is insider the working range so they don't alias, even if one decides to cut the display at some 10 or 40 Hz.Averaging works as a digital low pass filter. If may pay of to do averaging over an multiple of 20 ms, as this gives good suppression of 50 Hz / 100 Hz and so on. One may still wand to check the amplitude of the 50/100 Hz, to warn of they are too high.

author: David Hess
author_rank: Super Contributor
timestamp: April 17, 2020, 12:04:47 pm
content: EDN posted an excellent article on measuring noise with a DSO's FFT several years ago:https://www.edn.com/dsos-and-noise/

author: macaba
author_rank: Regular Contributor
timestamp: April 17, 2020, 01:04:35 pm
content: As far as I'm aware, a LNA that has a 0.1hz HPF, then a 10hz LPF is really intended to measure 0.1-10hz noise amplitude.If you're just interested in 1/f noise, then just 0.1hz HPF, or no filter (not quite, an ADC anti-alias filter is required, also assumes no large DC offset on signal if you're amplifying it) would work, combined with FFT.I would select an ADC sample rate equal or greater to 10x your highest frequency of interest.Of course if you had enough frequency bins on the FFT (i.e. a high number of samples fed into the FFT), you could compute the FFT, set all the frequency bins below 0.1 and above 10 to zero, then inverse FFT to get a simulated 0.1-10hz filter. Or simply use any number of existing digital filtering techniques (preferable as they are predictable).

author: Castorp
author_rank: Regular Contributor
timestamp: April 18, 2020, 08:11:35 am
content: Quote from: jbb on April 17, 2020, 04:05:11 amWith the long FFT you can resolve lower frequencies. However, the variance between the bins will be high. With the averaging you get a smoother curve (16 averages -> 4 times lower variance), but the price to pay is the lower FFT resolution (bandwidth per bin) and the loss of low frequencies.There is also another trick - overlapping windows. It's called the Welch method. The principle is the same - your FFT resolution is limited by the number of samples (size of the window). But instead of taking consecutive windows of samples, you let them overlap. The average converges faster this way. Typically an overlap of 50% works fine.

author: branadic
author_rank: Super Contributor
timestamp: April 18, 2020, 08:30:13 am
content: The spectrum analyzer functionality of Analog Discovery works somewhat different. Instead of having one set of samples for the entire frequency range and calculating the FFT or overlapping it works with different sample lengths with a fixed sample memory size. So for each frequency bin it samples its own time window and calculates the FFT for it. As far as I can see this is also implemented in my R9211E FFT Analyzer.The drawback of this solution is an increased measurement time for a given frequency range and a given number of frequency bin, limited by the size of the FFT memory only. Additional averaging of an FFT bin increases the measurement time.You can see this mode of operation as the spectrum is not drawn at once, but point for point from low frequency to high frequencies.-branadic-

author: iMo
author_rank: Super Contributor
timestamp: April 18, 2020, 08:54:35 am
content: Quote from: essele on April 16, 2020, 05:35:23 pmWe were building 1/f spectra analyzers during my study at uni (we had a lab messing with 1/f noise measurements in semiconductors). And it is "easy" basically. Except the low noise preamp you would need a set of low/high pass filters, and the 12-16bit ADC with an adjustable gain (ie 1..256). At my time we used to use simple FFT spectra averaging as the bin's precision is with 1/sqrt(N), where the N is number of FFTs avaraged. We did 10mHz(Edit: or 1mHz?)-10kHz with a 1024 FFT, it took a day to get nice spectra.

author: Andreas
author_rank: Super Contributor
timestamp: April 18, 2020, 10:09:32 am
content: Hello,lets go more in practice:What I did is using a LTZ1000 with output buffer amplifier (ADA4522) and measure that via my 0.1-10 Hz LNA (10000 fold) with my 16 Bit Oscilloscope and let the scope do the FFT with 1'048'576‬ points binned from 2 Megasamples raw data.So sample rate is 20kS/sWindow is Rectangle since we want to analyse noise.Measurement duration is 100 sec per Measurement (1-49)When comparing different measurements we see that there is a large variation between the measurements amd corresponding FFT especially at low frequencies where the resolution is low (around 0.01 Hz).So a measurement window of 10 seconds is useless in my opinion since there the resolution/uncertainity at low frequencies increases even more.When averaging all 49 measurements the variation decreases. But due to the (necessary) filter with -3 db at 0.1 Hz and -3db at 10 Hz we rarely see a 1/f behaviour. The only thing we see is the 50 Hz mains frequency going even through my cookies box where the LTZ and the LNA is embedded.So besides: how do I calculate from dbV with a binning width to nV/sqrt(Hz) what is the information that I gain with a FFT?To compare with the datasheet I need a time measurement (uVpp).And what I really want to see on a 1/f measurement is wether I have popcorn noise (and with which amplitude) or if it is hidden inside the 1/f noise. This information is not visible on a FFT.with best regardsAndreas

author: iMo
author_rank: Super Contributor
timestamp: April 18, 2020, 10:51:33 am
content: With averaging your spectra your "variation" will decrease. With 10000 averaged FFTs you get your values within 1%.With a nice clean spectra you would see some "bumps" in the 1/f spectra (or you get 1/f^x in some parts of it) - that is an indication of various "fluctuation phenomena" in your device, ie popcorn, etc. (a rocket science, btw).With a single FFT you will see nothing special.