• 0

Noise Floor and SNR values: Waveforms Spectrum Analyzer vs Time Domain Measurements


Question

I have used Analog Discovery 1 extensively for various audio measurements (Bode plots, photonic measurements, scope noise measurements etc.) and have just started to use the Waveforms Spectrum Analyzer. I have made quite a few real-time noise measurements using a very low noise well calibrated 24 bit/96kHz sound card down to the uVrms level using a steep 46kHz low pass filter and also a similar 20kHz 5th order LPF. So these are time-domain analog measurements within a well defined "noise bandwidth".  With sufficiently high noise levels (say +20mVrms well above the ~ 0.5mV noise floor of the Discovery scope inputs) my independent total noise measurements agree closely with the Discovery scope RMS noise readings.  I generally calculate a SNR by dividing a signal level (typically 1-2 dBV) by this total RMS noise value (20kHz filtered and sometimes adding an A-Weight Filter to check product specs).

So my question is about the noise-floor value displayed in the Waveforms Spectrum Analyzer for the FFT option and dBV vertical scaling. I realize that the noise floor values are values related to the bin frequency size and the filtering related to the type of sample. I'd like to:

(1) numerically reconcile my total noise measurements within a specified noise BW (above) with noise floor display provided by Spectrum Analyzer. 

(2)numerically  reconcile my SNR (relative to the peak signal level) with the SNR result calculated by Spectrum Analyzer (my simple comparison of SNR is off by at least 3dB. What is the effective "noise bandwidth" range used by Spectrum Analyzer?

 

This provides a bit of background including a link to other articles I've written about my usage of Analog Discovery 1

60dBLowNoiseAudioAmplifier

Thanks.

Link to post
Share on other sites

23 answers to this question

Recommended Posts

  • 0

Thanks. I have looked at that documentation but I'm still a bit confused about the NF description in the doc versus what the NF measurement displays in measurements. To be specific, here's a simple example which I think shows how to get the total integrated noise floor over a specified bandwidth (20 kHz in the example) starting with the NF value from the FFT and compares this total with the total real-time rms noise measurement with good agreement. This seems to be what the linked Audio Precision article says.

Noise Floor and total integrated noise 

Link to post
Share on other sites
  • 0

Hi,

if I had to solve the problem, I would definitely calibrate with a test signal, for example a sine wave at -20 dBfs and a bandpass noise signal with an equivalent power (I'd leave maybe 20 dB headroom for peaks, starting from Gaussian noise e.g. randn() in Octave. This is a differential measurement so it can be done with near-unlimited accuracy.

The math has so many possible pitfalls that I would always run a measurement (if only to validate the calculation).

 

Link to post
Share on other sites
  • 0

Thanks. I have checked the signal level calibration and the dBV level is accurate. For the noise test signal, I used a white noise source signal generated by Wavelab Pro at a good high level (well above the noise floor of Analog Discovery) and measured its total rms noise voltage in dBV (16 Hz to 20 kHz with LPF and HPF) using the Discovery scope and another measurement. They agree very well. I'm confident this measurement is accurate. The measured results are in my last link. 

How does the FFT noise measurement (NF measured value) relate to the time domain measurement within a specified bandwidth? The docs say NF value of FFT  is the sum of rms noise in all the bins but I find I need to sum up all the bins as 10log(samples) and add that to the FFT NF value to get the total noise as measured in time domain as in my last example. 

Edited by MitchG
Greater clarity
Link to post
Share on other sites
  • 0

>> The docs say NF value of FFT  is the sum of rms noise in all the bins

OK strictly speaking about the math (not AD's implementation), one problem here is we want the readings to be consistent regardless whether a sine signal is exactly on a FFT bin frequency or just halfway between two bins. The typical solution is to use a time domain windowing function before the FFT that "blurs" the FFT's output power spectrum. But when the instrument is calibrated to give accurate spot frequency readings (so the power of a sine wave is accounted for by a single point from the FFT, not an integral to collect the known "blurring" we've just introduced by windowing), this requires a correction factor which will not be correct for noise-like signals that occupy many adjacent bins that mostly "blur" into each other.

The math gives me headaches but fortunately it all boils down to a single correction factor, which can be determined with one calibration measurement (for one given bandwidth).

To sum up FFT bins, always convert to power (e.g. convert dBV to voltage, then square it which has units of Watts over a 1 ohms resistor). Then integrate / sum this over all bins, and convert the result back to e.g. voltage if you like. As an intuitive justification, FFT bins correspond to orthogonal signals, superposition applies, their power dissipated in some hypothetical load can be calculated one-by-one and added.

Link to post
Share on other sites
  • 0

Ok here is a specific example:

Fairly high flat noise spectral source.

Waveforms DC to 20kHz range with 1025 bins. Using units of RMS (V).

The FFT NF measurement = 4.66 mVrms (or -46.6dBVrms using those units)

I measured total noise using Waveforms scope as 210 mVrms which agrees closely with measurements from a calibrated sound card measurement.

I then exported all the FFT bin measurements (in Vrms units) and using Excel computed the sum of the squared bin values:         Sqrt(Sum(Vbin^2)

which gives 209 mVRMS in exact agreement with the time domain scope measurement of RMS noise level. All good.

But how  is that FFT NF=4.66 mVrms value computed from the bin samples??  The documentation says:

"NF: .. is a root mean square of all the bins except peak and harmonics "

 

Edited by MitchG
Clarity
Link to post
Share on other sites
  • 0

Hi @MitchG

NF = sqrt( sum(Bin^2) / count)
Bins except: DC, fundamental frequency, harmonics and its slopes.

The measured NF was accidentally converted to RMS, for RMS units twice... that is why it is showing 3dB (20*log10(sqrt(1/2)) less of actual value.
It is corrected for the next software release.

Thank you for the observation.

Link to post
Share on other sites
  • 0

Yes!! Thank you so much! I did notice the Sqrt2 difference and it was driving me crazy. Agreement is perfect now. Might be a good idea to explicitly add that NF definition (with /count) to the documentation showing that the FFT NF measurement is an average value of all the sample bin values.  Are the other definitions such as SN correct ? Or do SNR and THD, for example need to be corrected with 3dB? Is the next software release out yet?

For audio measurements, its usually the TOTAL noise value (typically in 20kHz range as in 210 mVrms above) that's useful 

TN = sqrt( sum(Bin^2))

versus the FFT NF average value per bin.

Edited by MitchG
more detail
Link to post
Share on other sites
  • 0

Thanks @attila.

I forgot to mention that the window type should add a correction factor P (sampling spread in adjacent bins) to get exact agreement of total noise using FFT bin summing and scope total rms noise:

TN = sqrt( sum(Bin^2)/P)

The default window in my Spectrum Analyzer options is Flat Top which has P=3.83 .. a lot of overlap between adjacent bins. I had used Rectangular earlier (P=1) so correction wasn't required.  For Hann window, P=1.5.

Current NF don't seem to include that correction factor.

Link to post
Share on other sites
  • 0

Thanks @attila

Just ran this beta and the NF and TN are good now and the TN  doesn't depend on the sample window type (corrected for ENBW) as expected but the NF is still the averaged value, not adjusted for ENBW. Final question is about  SNRFS.  Is the full scale  here: 

  5.518Vpp = 2.76Vp = 1.95Vrms

So if I switch sample windows shouldn't I expect to get the same value? The values I get are all different. For a TN value of 330mVrms I'd  expect a SNRFS of

  20*log(1.95/0.33) = 15.4dBFS

This is exactly 3dB higher than the Rectangular window value of 12.4dBFS (with ENBW=1) and

Hann is 10.6dBFS

Flat Top is 6.6dBFS

 

I'd expect that SNR would be:

20*log10(Vrms_peak/TN) with

TN= Sqrt(Sum(Vrmsi^2)/ENBW)

Similarly for THD, SINAD etc

Edited by MitchG
Clarity
Link to post
Share on other sites
  • 0

Ok so I guess I still don't understand the vertical scale for noise purposes in the FFT window. Here's a simple example (based on article in link above). Same white noise source input .. from a 24bit/96kHz wave file so (as seen below) noise cutoff is at 48kHz.

When I change the FFT freq range displayed from 20 to 40 to 100kHz with same bin# over each range, why is the TN the same? (and identical to the scope total noise measurement). And also because the bin frequency width (resolution) increases with freq range , I expected the bin value would be higher as the range increases but its almost the same for all ranges as shown below.

https://www.jensign.com/Discovery/Noise/RangeChange

Link to post
Share on other sites
  • 0

Hi @MitchG

With different stop frequencies/sample rate, the calculations are performed on the same number of samples/BINs, having about the same values.
By default the "sampling mode" is decimate which does not integrate/filter noise at lower rate.
Here you can see for channel 2 I've set averaging which acts as a filter

image.png.11489be16c69639c0f73cfbe63f949d5.png

Link to post
Share on other sites
  • 0

Thanks again @attila

I think i understand now. For noise analysis it seems to me that AVERAGE sampling makes more sense. For example in the 96kHz white noise sample I have been using, the TN results displayed for DECIMATE are all the same (56mVrms)  independent of the captured frequency range of 100kHz, 50kHz or 20kHz and with default 4097 bins even though the white noise content is uniform from DC to about 48kHz where it has sharp drop-off.

Conversely with AVERAGE sampling, the TN results change (as I'd naively but intuitively expect) with capture range like:

100 kHz:  54mVrms   

50kHz:  49mVrms 

20kHz: 34mVrms

where TN in range below 48kHz scales with Sqrt of capture BW. )The TN value for DECIMATE above for 20kHz range above by contrast is identical to the full 100kHz TN value).

The AVERAGED values are somewhat lower than real-time scope measurement (54 vs 56mVrms) but I gather that's  to be expected in AVERAGE mode.

Also the NF value in AVERAGE sampling scales with the bin spectral width (which I expected, based on the Audio Precision article I referenced) but it's different in DECIMATE mode where NF is almost constant).

Link to post
Share on other sites
  • 0

Sorry to keep posting responses on this thread but I hope to update the article on using Discovery specifically for wideband noise measurements relevant to audio application.

The AD TN noise measurements (included in latest beta release) in the frequency domain should agree with rms noise measured in the time domain using the scope. The default sample mode setting in the FFT is DECIMATE whereas the default mode for scope is AVERAGE sampling.  When the noise values are compared between FFT and Scope, the results agree almost exactly provided both are set at DECIMATE or AVERAGE.  For example, the default time-based setting of the scope is 1ms/div or 10ms for the 8192 sample range for an 800kHz sample rate (or 400kHz bandwidth), 128 times higher that the fixed 100MHz AD sampling rate. Therefore for DECIMATE mode, only 1 out of every 128 AD samples are used and for AVERAGE mode, 128 samples are averaged and used as one recorded sample. 

This scope setting corresponds to the 400kHz FFT frequency range. Noise values shown by the scope and FFT are the same. Scaling down to smaller sample rates (longer scope time-based range and smaller  FFT frequency range) give identical changes in noise.

All good. The AVERAGE sampling mode shows the LPF effect in total noise in both FFT and Scope results.

 

For typical audio noise measurements with noise sampling BWs of at most 200kHz, the default 800kHz sample rate (1ms/div) works well with either AVERAGE or DECIMATE mode.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now