Articles

Thermal Noise and AWGN

A friend called me up couple of days back with the question – How white is AWGN? I gave him an answer over phone, which he was not too happy about. That got me thinking bit more on the topic and the result is this post – brief write up on thermal noise and it’s modelling as Additive White Gaussian Noise aka AWGN.

Thermal Noise

Thermal Noise is the noise produced by the random motion of charged particles (usually electrons) in conducting media.”

With a resistor $R$ ohms at temperature $T$ Kelvins, the noise voltage $v(t)$ due to random electron process is a Gaussian distributed (thanks to Central Limit Theorem) variable with zero mean, and variance of

$\sigma^2_v=\frac{2 $$\pi kT$$^2}{3h}R$, where

$k$ is the Boltzmann constant $1.38*10^{-23}$ Joules/Kelvin,

$h$ is the Planck constant $6.62*10^{-34}$ Joules second.

The spectral density of the thermal noise is shown as,

$G_f=\frac{2Rh|f|}{$$e^{\frac{h|f|}{kT}}-1$$}\mbox{ }V^2/Hz$.

Assuming  $\frac{h|f|}{kT}\ll 1$ and using the Taylor series approximation, the equation simplifies to :

$\begin{array}{lll}G_f&=&\frac{2Rh|f|}{$$e^{\frac{h|f|}{kT}}-1$$}\\\\\\&=&\frac{2RkT}{1+\frac{h|f|}{2kT}}\\&=&2RkT$$1-\frac{h|f|}{2kT}$$, \mbox{ for }\frac{h|f|}{kT}\ll 1\\\end{array}$.

Note :

a) Mr. Clay S Turner in his write up “Johnson-Nyquist Noise”, Turner C. S., Jan 2007 has derived the above expression – I did not understand the derivation – one of my many TO-DO’s. 🙂

b) The fundamental paper’s discussing this topic is (thanks to wiki entry on Johnson-Nyquist noise)

“Thermal Agitation of Electric Charge in Conductors”, (1928) H. Nyquist,

“Thermal Agitation of Electricity in Conductors”, (1928) J. Johnson,

Have not gone through both.

c) The Taylor Series results used for the approximation

$e^x =\sum_{n=0}^\infty \frac{x^n}{n!}=1+x+\frac{x^2}{2}+\frac{x^3}{3!}+...\mbox{ for all } x$

$\frac{1}{1-x}=\sum_{n=0}^\infty x^n\mbox{ for } |x| \le 1$

From the plot of the spectral density of thermal noise over frequency, can see that the noise is flat frequency spectrum till around 100GHz or so and starts to fall off at around 1TeraHz.

Figure : Spectral density of thermal noise

Given the above plot, for most of the practical systems which we are dealing with today (i.e. with carrier frequency less than 10GHz or so), can assume that the noise spectral density is flat, i.e.

$\Large{G_f=2RkT,\mbox{ }V^2/Hz}$.

Thus for a bandwidth $B$, the root mean square noise voltage is,

$v_{rms}=\sqrt{2RkT2B} = \sqrt{4RkTB}$

The mean square voltage is,

$\Large{v^2_{rms}=4RkTB}$

Note :

The factor $2B$ is because the noise is real with a symmetric frequency spectrum. Multiplication by 2 suffice to consider both the positive and negative frequencies.

Matlab/Octave script to get the above plot

clear all; close all;
k = 1.38e-23; % Boltzmann constant
h = 6.62e-34; % Planck's constant
T_kelvin = 300; % temperature in Kelvin
f_hz 	 = logspace(0,14,10000);
R_ohm    = 50;
Gf 	   = 2*R_ohm*h*f_hz./(exp((h*f_hz)/(k*T_kelvin)) - 1);
Gf_approx1 = 2*R_ohm*k*T_kelvin*(1-h*f_hz/(2*k*T_kelvin));

semilogx(f_hz,Gf,'bs-');
hold on; grid on;
semilogx(f_hz,Gf_approx1,'r-');
axis([1 10^14 10^-21 0.5*10^-18]);
legend('exact', 'approx');
xlabel('frequency, Hz');
ylabel('voltage spectral density, V^2/Hz');
title('Spectral density of thermal noise');

Plugging in some numbers :

For $R=50$ ohms,

Temperature $T=300K$ (26.85 deg Celsius),

Bandwidth $B=1Hz$,

will result in rms noise voltage of

$v_{rms}=\sqrt{4*50*1.38*10^{-23}*300*1}\ \approx$1 nano Volts

(Thanks to wiki entry on Johnson Nyquist Noise for this)

Thevenin Equivalent Model

Thevenin equivalent model of the thermal resistance noise is shown below, where the it is modeled as a voltage source in series with a noiseless resistor.

Figure : Thevenin equivalent model with matched load (Figure 9.3-3 in Communication Systems – An introduction to Signals and noise in Electrical Communication by A. Bruce Carlson, Paul Crilly, Janet Rutledge)

Assuming that the load resistance is $R$ (per maximum power transfer theorem), the rms voltage seen across the load resistance is,

$v_{rms}=\frac{\sqrt{2RkT}}{2}$

The power is,

$\begin{array}{lll}P_n&=&\frac{2RkT}{4R}\\&=&\frac{KT}{2}\mbox{, } watts/Hz\end{array}$.

Note :

a) The noise power is independent of the resistance $R$.

b) Above is the single sided noise power

Noise Power in dBm

Typically the noise power is expressed in dBm (0dBm = 1 milli Watts). The noise power in dBm for 1Hz at room temperature

$P_{dBm}=10\log_{10}$$\frac{kT}{2}\frac{2}{1e-3}$$=-173.83\ dBm/Hz$

In general, for a bandwidth $B$, the noise power is

$\Large{P_{dBm}=-173.83+10\log_{10}$$B$$\ dBm}$.

 Bandwidth, B Hz Thermal noise power, dBm Remark 1 -173.83 for 1Hz bandwidth 1,000,000 -113.83 For Bluetooth channel 20,000,000 -100.82 for WLAN 20MHz channel 40,000,000 -97.81 for WLAN 40MHz channel 80,000,000 -94.80 for WLAN 80MHz channel

Modeling white noise

Typically, we can write spectral density of white noise as

$G_f = \frac{N_0}{2}$.

Further, from Weiner – Khinchin theorem, it is known that power spectral density and autocorrelation are Fourier transform pairs, i.e. the autocorrelation is,

$R$$\tau$$ = \frac{N_0}{2}\delta(\tau)$.

Figure : Power spectral density and autocorrelation of white noise

Note: The term 1/2 is to indicate that power is symmetric across both positive and negative frequencies.

In the simulation models used in the blog, the randn() function provided by Mathworks is used to generate White Gaussian Noise. Using a small Matlab code snippet, can see that over many realizations the simulated power spectral density tends to be white (i.e. constant across frequency).

clear all;
n_fft = 2048; n_vec = 1000;
nt  = randn(n_vec,n_fft);
ntf = 1/sqrt(n_fft)*fft(nt,[],2);
ntf_pwr     = ntf.*conj(ntf);
ntf_pwr_avg = mean(ntf_pwr);
plot([-n_fft/2:n_fft/2-1]/n_fft,10*log10(fftshift(ntf_pwr_avg)));
axis([-0.5 0.5 -5 5]); grid on;
ylabel('power spectral density, dB/Hz');
xlabel('normalized frequency');
title('power spectral density of white noise');

Figure : Simulated spectrum of white noise

Further, can see an impulse for the simulated auto-correlation of the noise vector generated from randn().

clear all;
n_len = 10^4;
nt = randn(1,n_len);
n_ac = 1/n_len*conv(fliplr(nt),nt);
plot([-n_len+1:n_len-1],n_ac);
xlabel('delay, tau');
ylabel('autocorrelation');
title('autocorrelation of white noise');

Figure : Simulated autocorrelation of white noise

References

Communication Systems – An introduction to Signals and noise in Electrical Communication by A. Bruce Carlson, Paul Crilly, Janet Rutledge

Johnson-Nyquist Noise”, Turner C. S., Jan 2007

Wiki entry on Weiner – Khinchin theorem

Wiki entry on Johnson Noise

randn() function by Mathworks

10 thoughts on “Thermal Noise and AWGN”

1. WOW just what I was looking for. Came here by searching for pcb software

2. aann says:

very useful

3. zhangfeng says:

Thank you for your insightful discussion!!!

4. Shabeer says:

Nice site byt the way and now I know how the thermal noise popped up in our 44Mhz DAC discussion :-)….

5. d9dd9dd9d says:

I used to believe that thermal noise and AWGN are different things until I saw this acticle. Thx for your work.

6. Wig says:

Very useful!!