The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Mar 28th, 2024, 6:58pm
Pages: 1
Send Topic Print
Actual SNR value using FFT in Matlab/Cadence (Read 3437 times)
jdp
Community Member
***
Offline



Posts: 42

Actual SNR value using FFT in Matlab/Cadence
Feb 08th, 2015, 11:11pm
 
Hello friends.

We know that SNR can be found using FFT on transient analysis data from Cadence (using calculator or Spectrum in plot), as well as Matlab (after importing data into it).

I am doing this for a delta-sigma modulator, and have taken all precautions like f_in = (D/N)*f_s : D = prime integer and N = no of points of FFT...

Now comes the question (rather, confusion):

In some references (http://www.analog.com/static/imported-files/tutorials/MT-003.pdf, https://inst.eecs.berkeley.edu/~ee247/fa10/files07/lectures/L13_2_f10.pdf etc.), it is stated that:

"FFT acts as a narrowband spectrum analyzer with a bandwidth of fs/N that sweeps over the spectrum. This has the effect of pushing the noise down by an amount equal to the process gain..."
"...For correct frequency domain measurements it is also necessary to apply corrections for FFT processing gain...theoretical noise floor for N-point FFT is 10log(N/2) dB below the quantization noise due to processing gain of the FFT"

So my question, do we really need to subtract 10log(N/2) dB from the SNR computed using FFT? But, none of the Matlab codes found from internet does so while finding SNR!   Sad
Is there anything that I am missing in this regard, which nullifies the need of subtracting 10log(N/2) ?

Any help/idea is highly anticipated... Roll Eyes
Back to top
 

fft.JPG

-- jdp
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: Actual SNR value using FFT in Matlab/Cadence
Reply #1 - Feb 9th, 2015, 12:50am
 
JDP,

  If you use the ADE spectrum function SNR function, the SNR result
will be correct. The functions you require are available: SINAD, ENOB,
THD, SFDR.

  Another way to look at the problem is that the noise is output as
V/rtHz, so the total noise is spectral density * bandwidth, bandwidth
is 1/FFT fundamental frequency. As a result, as the number of points
increase the bandwidth decreases. an the noise floor decreases.
Since the total noise is dependent on the bandwidth and the bandwidth
is a function of square root of frequency, the dependence is 10dB(..).

  For example, if the quantization noise floor of a 10 bit ADC 61.96dB,
then for a 256 point FFT, the noise floor of the FFT is 83dB, for a
1024 point FFT the FFT noise floor is 89dB. As a result as the number
of FFT points increase, it is easier to discern the distortion tones.
However, the SNR and total noise do not change, the noise floor
does decrease.

                                                                      Sheldon
Back to top
 
 
View Profile   IP Logged
jdp
Community Member
***
Offline



Posts: 42

Re: Actual SNR value using FFT in Matlab/Cadence
Reply #2 - Feb 9th, 2015, 6:00am
 
Thank you Sheldon for that helpful reply... Smiley

Just to confirm a few things if I understood properly from what you said:

sheldon wrote on Feb 9th, 2015, 12:50am:
... As a result as the number of FFT points increase, it is easier to discern the distortion tones.
However, the SNR and total noise do not change, the noise floor does decrease.


Is it like, with increase in N, the # of bins increases while the magnitude of the noise per bin reduces - keeping the total noise power constant irrespective of N used?

sheldon wrote on Feb 9th, 2015, 12:50am:
  Another way to look at the problem is that the noise is output as
V/rtHz, so the total noise is spectral density * bandwidth, bandwidth
is 1/FFT fundamental frequency....


What is the "FFT fundamental frequency" ? Is it =(1/record-length in sec) = f_s/N ?
Can you please tell why the bandwidth to be used is reciprocal of that?

Grateful regards!...
Back to top
 
 

-- jdp
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: Actual SNR value using FFT in Matlab/Cadence
Reply #3 - Feb 9th, 2015, 7:02am
 
JDP,

 My bad, the fundamental frequency is the reciprocal of the
record length. The fundamental frequency is the bandwidth
of the bin.

 Yes, as the number of bins increases the level of each bin
decreases. The level of a bin spectral density * bandwidth,
where the fundamental frequency = bandwidth.

  Yes the total noise should be constant.

  Sorry for causing confusion.

                                                                             Sheldon
Back to top
 
 
View Profile   IP Logged
jdp
Community Member
***
Offline



Posts: 42

Re: Actual SNR value using FFT in Matlab/Cadence
Reply #4 - Feb 9th, 2015, 8:29am
 
Once again thank you Sheldon, that is so kind of you...really helped to clear the doubt!

Regards!
Back to top
 
 

-- jdp
View Profile   IP Logged
RobG
Community Fellow
*****
Offline



Posts: 569
Bozeman, MT
Re: Actual SNR value using FFT in Matlab/Cadence
Reply #5 - Feb 9th, 2015, 9:38am
 
sheldon wrote on Feb 9th, 2015, 12:50am:
JDP,

  If you use the ADE spectrum function SNR function, the SNR result
will be correct. The functions you require are available: SINAD, ENOB,
THD, SFDR.

Sheldon - how do you find these functions? The only one that I find in my calculator is THD.
Back to top
 
 
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: Actual SNR value using FFT in Matlab/Cadence
Reply #6 - Feb 9th, 2015, 3:20pm
 
Rob,

 If you are using IC616, in the ViVA Results Browser there is a
pull-down labeled Measurements. If you expand it, Spectrum is
the second measurement on the list. It will open the Spectrum
assistant. Please try it and let me know if there are any
questions. If you in IC615, then you can use there is a calculator
function that can help but you need to be a little "patient" with
it. The IC616 implementation is much improved.

                                                                           Sheldon
Back to top
 
 
View Profile   IP Logged
RobG
Community Fellow
*****
Offline



Posts: 569
Bozeman, MT
Re: Actual SNR value using FFT in Matlab/Cadence
Reply #7 - Feb 10th, 2015, 8:09am
 
Thanks Sheldon. I'm using IC6.1.5. I quickly tried SpectrumMeas and got 5dB for SINAD so my patience has already expired  ;D. Seriously, THD does what I need, but I will look for the new spectrum function in IC6.1.6, Thanks again!

rg
Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.