You are on page 1of 3

Signal-to-noise ratio (SNR), Eb/N0, Es/N0

When we talk about performance of a communication system, we usually quote the


above terminologies. But what do they mean? Particularly, how can you implement
them in your simulation programs?

In a 1-D modulation, such as BPSK, the channel can be modeled as


y = ax + n
where all variables are real numbers. a is the channel amplitude gain (for AWGN
channel, it is a constant usually set to one; for Rayleigh fading channel, it is a random
( )
variable with Rayleigh distribution and we usually normalize E a 2 = 1 ); x is the
modulated symbol (+1/-1 for BPSK); n is the additive white Gaussian noise
(AWGN). n is a random variable of Gaussian distribution with mean zero and
variance σ 2 , denoted as
n ~ N (0, σ 2 ) .
The noise variance is related to the noise power spectrum density N 0 as
N0
σ2 = .
2
Assume that the signal energy has been normalized such that
Es = E( x ) = 1
2

which is the case for BPSK.


E s denotes the energy per modulated symbol x . For a coded system with code rate
Rc and modulation rate Rm = log 2 M (M is the modulation constellation size. BPSK:
M=2; QPSK: M=4; 256-QAM: M=256 etc.), the energy per information bit, denoted
by Eb , is related to E s as
E s = R m Rc E b
since one modulation symbol effectively carries Rm Rc information bits.
E
Therefore, given an b ratio, we can calculate the noise variance according to
N0
Eb Es Es 1
= = =
N 0 Rm Rc N 0 Rm Rc 2σ 2
2 Rm Rcσ 2
−1
 E 
σ =  2 Rm Rc b  .
2

 N0 
Eb
Of course, if is given in dB, you need to convert it into linear scale before
N0
applying the above equation.

In a 2-D modulation, such as M-PSK, M-QAM (M>2), similar relationship holds.


The channel can still be modeled as
y = ax + n
a is still a real number denoting the channel amplitude gain. However, other
variables, x, y and n, are all complex numbers. Particularly, the noise
n = n I + jnQ
has its real and imaginary parts, n I and nQ , respectively. n I and nQ are independent
Guassian random variables with mean zero and the same variance σ 2
n I ~ N (0, σ 2 ) and nQ ~ N (0, σ 2 ) .
All the above equations still hold for 2-D modulation.

For quasistatic Rayleigh fading channels, a is a constant within one block/frame, but
changes independently from one block to another. However, the noise n always
changes independently for each modulated symbol.

Plot FER/BER versus p or Eb/N0 curves


When you obtain the simulated data for FER/BER, you usually need to plot them in a
figure. Since FER/BER generally varies in a large range, we should plot them in a
logarithm scale instead of a linear scale.
For FER/BER versus Eb/N0 curves, the horizontal axis Eb/N0 should be plotted in
linear scale because it is usually expressed in the unit of dB. The vertical axis
FER/BER should be plotted in logarithm scale.
In Matlab, this can be done by the following function:
semilogy(FER,Eb_N0_dB,…);
For FER/BER versus p (BSC channel) curves, you might find it appropriate to plot
both axes in logarithm scale, which can be achieved by the following:
loglog(FER,p,…);

How many blocks/frames to simulate in order to get a


smooth curve?
We are using simulation as a method to estimate the FER/BER according to
number of error frames
FER ≈
number of total frames
number of error bits
and BER ≈ .
number of total bits
In order to get an accurate estimate, the number of error frames or the number of error
bits needs to be large enough. As a rule of thumb, this number should be no smaller
than 400. Otherwise, the estimates you obtain will be useless and the curves you plot
will show big ripples. This means that for EACH Eb/N0 or p values you have to run the
simulation until 400 or more bit errors are encountered.
However, for a complex coding system, such as turbo codes and LDPC codes, due to
the complexity of the encoder/decoder algorithms, at high SNR range, 400 errors
might take a very long time (tens or hundreds of hours) to complete. In that case, in
this project you can reduce the number to 100 for time saving.
How to select the p or Eb/N0 range to simulate?
The rule to choose the proper range of p or Eb/N0 is to ensure that the FER/BER is
acceptable. Usually, for a coded system, the BER range of interest is 10 −1 to 10 −6 .
However, to simulate a codec system down to BER= 10 −6 might take too long a time.
Therefore, in this project, you can choose BER range from 10 −1 to 10 −4 or 10 −5 .
Of course, if you have wrote an efficient program, you can option to simulate lower
BERs.
With the chosen range, you need to take samples in this range to simulate. For
instance, if an Eb/N0 range of 0 to 5 dB is chosen, you might select 0 dB, 1 dB, 2 dB, 3
dB, 4 dB, 5 dB as the simulation points. However, this even selection might not be
appropriate. For example, in the following curve, it is ok to choose 0,1,2,3,4,5dB, but
after 5dB, the curve drops abruptly, you need to choose smaller steps to capture the
transition region between 5 to 7dB.

BER

Eb/N0
0 1 2 3 4 5 6 7 (dB)
We can do the simulation in two steps. First choose an even sparse SNR samples to
simulate, and hence identify the transition regions. Then select dense samples in the
transition regions to do a fine simulation.

You might also like