Professional Documents
Culture Documents
Frequency Division Multiplexing) modulation. In this post, we will discuss a simple OFDM
transmitter and receiver, find the relation between Eb/No (Bit to Noise ratio) and Es/No (Signal
to Noise ratio) and compute the bit error rate with BPSK.
OFDM modulation
Let us use the OFDM system loosely based on IEEE 802.11a specifications.
Parameter Value
FFT size. nFFT 64
Number of used subcarriers. nDSC 52
FFT Sampling frequency 20MHz
Subcarrier spacing 312.5kHz
Used subcarrier index {-26 to -1, +1 to +26}
Cylcic prefix duration, Tcp 0.8us
Data symbol duration, Td 3.2us
Total Symbol duration, Ts 4us
You may refer to post Understanding an OFDM Transmission for getting a better understanding
of the above mentioned parameters.
Cyclic prefix
In an OFDM transmission, we know that the transmission of cyclic prefix does not carry extra
information in Additive White Gaussian Noise channel. The signal energy is spread over time
whereas the bit energy is spread over the time i.e.
.
Simplifying,
Frequency spread
In OFDM transmission, all the available subcarriers from the DFT is not used for data
transmission. Typically some subcarriers at the edge are left unused to ensure spectrum roll off.
For the example scenario, out of the available bandwidth from -10MHz to +10MHz, only
subcarriers from -8.1250MHz (-26/64*20MHz) to +8.1250MHz (+26/64*20MHz) are used.
This means that the signal energy is spread over a bandwidth of 16.250MHz, whereas noise is
spread over bandwidth of 20MHz (-10MHz to +10MHz), i.e.
Simplifying,
Expressing in decibels,
Simulation model
The attached Matlab/Octave simulation script performs the following:
(c) Assigning to multiple OFDM symbols where data subcarriers from -26 to -1 and +1 to +26
are used, adding cyclic prefix, concatenation of multiple symbols to form a long transmit
sequence
(e) Grouping the received vector into multiple symbols, removing cyclic prefix, taking the
desired subcarriers
Click here to download: Script for BER computation of BPSK using OFDM
Figure: Bit Error Rate plot for BPSK using OFDM modulation
Can observe that the simulated bit error rate is in good agreement with the theoretical bit error
rate for BPSK modulation i.e.
Orthogonal pulses
In a previous post (here ), we have understood that the minimum frequency separation for two
sinusoidals with arbitrary phases to be orthogonal is , where is the symbol period.
, where
correspond to the frequency of the sinusoidal and
We now have understood that OFDM uses multiple sinusoidals having frequency separation
where each sinusoidal gets modulated by independent information. The information is
multiplied by the corresponding carrier and the sum of such modulated sinusoidals form
the transmit signals. Mathematically, the transmit signal is,
To understand in detail the correspondence between the subcarrier index and frequency, one may
refer to a previous post (here).
Once the bits in each symbol are assigned to appropriate IDFT inputs (Ref. Figure 109 in
[80211A]), the IDFT operation is performed to obtained the time domain signal.
For each symbol, some samples from the end are appended to the beginning of the symbol
(referred to as cyclic prefix insertion). We may discuss the pros/cons of cyclic prefix in a future
post.
Simulation Model
A simple Octave script where a BPSK modulated signal is transmitted on the 52 used
subcarriers, may be used for understanding generation of an OFDM signal. The script is loosely
based on 802.11a specification.
Click here to download.
% Script for computing the Bit Error probability using OFDM modulation
clear all
nFFT = 64; % fft size
nDSC = 52; % number of data subcarriers
nBitPerSym = 52; % number of bits per OFDM symbol (same as the number of
subcarriers for BPSK)
nSym = 10^4; % number of symbols
for ii = 1:length(EbN0dB)
% Transmitter
ipBit = rand(1,nBitPerSym*nSym) > 0.5; % random 1's and 0's
ipMod = 2*ipBit-1; % BPSK modulation 0 --> -1, 1 --> +1
ipMod = reshape(ipMod,nBitPerSym,nSym).'; % grouping into multiple
symbolsa
% Adding noise, the term sqrt(80/64) is to account for the wasted energy
due to cyclic prefix
yt = sqrt(80/64)*xt + 10^(-EsN0dB(ii)/20)*nt;
% Receiver
yt = reshape(yt.',80,nSym).'; % formatting the received vector into
symbols
yt = yt(:,[17:80]); % removing cyclic prefix
% BPSK demodulation
% +ve value --> 1, -ve value --> -1
ipModHat = 2*floor(real(yMod/2)) + 1;
ipModHat(find(ipModHat>1)) = +1;
ipModHat(find(ipModHat<-1)) = -1;
end
simBer = nErr/(nSym*nBitPerSym);
theoryBer = (1/2)*erfc(sqrt(10.^(EbN0dB/10)));