In problem 4.37 of DSP-Proakis [1], the task is to analyze the total harmonic distortion in quantized sinusoidal, where .

My take:

As detailed in the previous problem (4.36 in DSP-Proakis [1]), due to imperfections in practical generation of sinusoidals, apart from the power at the desired frequency, there will be non-zero power for other frequency components as well. This undesirable spurious power typically measured as,total harmonic distortion (THD) is:

where

and .

Note that this definition is different from the definition provided from [3] – “Total harmonic distortion (THD) is the ratio of the rms value of the fundamental signal to the mean value of the root-sum-square of its harmonics (generally, only the first 5 harmonics are significant)“.

The definition provided from [1] can be considered as the the signal to quantization noise ratio (SQNR) where the quantization noise includes the noise power at the harmonics of the desired frequency as well as the noise in other frequency components in .

Using bits for quantization, the signal range of 2 units is divided into steps i.e each step is of range units. The original samples of are rounded (quantized) towards the nearest bin location i.e. the quantized signal is .

The error due to quantization is .

In an article from Analog Devices[2], the author has mentioned that – “quantization error for any ac signal which spans more than a few LSBs can be approximated by an uncorrelated sawtooth waveform“.

The error signal lies uniformly in the range and the root mean square value of the error signal is

.

(For details refer Eq 9.2.7. Section 9.2.3 in [1]).

The root mean square value of the signal sine wave, .

Summarizing, the signal to quantization noise ratio (SQNR) in decibels is:

.

With this mathematical analysis as a background, let us move on to obtaining the results from quick MATLAB simulations with levels.

b = 8;x = sin(2*pi*[0:1/50:1]); xq = round(x*2^(b-1))/2^(b-1); ex = x-xq; SQNR_xdB = 10*log10((x*x')/(ex*ex')) y = sin(2*pi*[0:1/100:1]); yq = round(y*2^(b-1))/2^(b-1); ey = y-yq; SQNR_ydB = 10*log10((y*y')/(ey*ey'))

For this example, as the sampling clock is an integer multiple of the signal frequency, the quantization noise is correlated and the energy is concentrated in the harmonics of the signal. However, the root mean square value of the noise remains approximately [2].

This can explain the facts that the simulated SQNR values, are different from the theoretical values by around 0.5dB, 1.5dB for SQNR_ydB and SQNR_xdB respectively.

Probable fix for making the noise uncorrelated is to have either have a slight offset of the frequency to remove the integer relationship [2] OR by increasing the sampling frequency. For example, if we consider a new sinusoidal z with , which is of very low frequency when compared to x, y and simulate the SQNR, we can find that the simulation and the theory are in good agreement.

b = 8; z= sin(2*pi*[0:1/10000:1]); zq = round(z*2^(b-1))/2^(b-1); ez = z-zq; SQNR_zdB = 10*log10((z*z')/(ez*ez')) hist(ez); % can see the uniformly distributed error figure plot(sort(ez)); % can see a nice sawtooth waveform

Note that in practical scenarios as the input to the analog to digital converter will consist of a band of frequencies (and not a single frequency), the assumption of uniformly distributed quantization noise over is valid.

## References:

[2] Application Note from Analog Devices, MT-001: Taking the Mystery out of the Infamous Formula, “SNR=6.02N + 1.76dB,” and Why You Should Care, Walt Kester, REV. 0, 10-03-2005 (link checked on March19th 2007)

[3] Application Note from Analog Devices, MT-003: Understand SINAD, ENOB, SNR, THD, THD + N, and SFDR so You Don’t Get Lost in the Noise Floor, by Walt Kester, REV. 0, 10-03-2005 (link checked on March19th 2007)

D id you like this article? Make sure that you do not miss a new article
by subscribing to RSS feed OR subscribing to e-mail newsletter.
* Note: Subscribing via e-mail entitles you to download the free e-Book on BER of BPSK/QPSK/16QAM/16PSK in AWGN.*

{ 14 comments… read them below or add one }

Τhank you for the auspicious writeup. It in fact was once a amusement account it.

ʟook complicated to more delivered agreeahle from you!

Howeveг, how can we keep up a correspondence?

Hey there! Quick question that’s totally off topic. Do you know how to make your site mobile friendly?

My website looks weird when viewing from my apple iphone.

I’m trying to find a template or plugin that might be able to resolve this issue.

If you have any suggestions, please share. Thanks!

What’s up, just wanted to mention, I liked this blog

post. It was helpful. Keep on posting!

I’m not sure why but this web site is loading incredibly slow for me.

Is anyone else having this issue or is it a issue on my end?

I’ll check back later on and see if the problem still exists.

An outstanding share! I have just forwarded this onto a coworker who had been conducting a little homework on this.

And he actually ordered me lunch simply because I discovered it for him…

lol. So let me reword this…. Thank YOU for the meal!!

But yeah, thanx for spending some time to talk about this matter here on your internet site.

Asking questions are truly fastidious thing if you are

not understanding something totally, but this article provides pleasant understanding yet.

obviously like your web-site but you need to check the spelling on several of your posts.

Many of them are rife with spelling problems and I find it very bothersome to inform the truth

nevertheless I will definitely come back again.

Greetings! I know this is somewhat off topic but I was wondering which blog platform are you using for this site?

I’m getting sick and tired of Wordpress because I’ve had problems with hackers and

I’m looking at alternatives for another platform. I would be awesome if you could

point me in the direction of a good platform.

Wow, incredible blog layout! How long have you been blogging for?

you make blogging look easy. The overall look of your web site is wonderful, let alone the content!

How to calculate the SNRq for uniform quantizer if the input samples are normally distributed using matlab.

@sap: You can change x to be a picked up from randn() function call.

signal to quantization noise ratio for linear quantization

@oguegbe: Please look at

http://www.dsplog.com/2012/02/22/adc-snr-clock-jitter-quantization-noise/

hello, i m here again, waiting for the next post

{ 2 trackbacks }