Cyclic Prefix in OFDM: hands-on demo in Matlab

Synopsis: Cyclic prefix in OFDM, tricks a natural channel to perform circular convolution. This simplifies equalizer design at the receiver. Hands-on demo in Matlab.

Cyclic Prefix-ed OFDM

A cyclic-prefixed OFDM (CP-OFDM) transceiver architecture is typically implemented using inverse discrete Fourier transform (IDFT) and discrete Fourier transform (DFT) blocks (refer Figure 13.3). In an OFDM transmitter, the modulated symbols are assigned to individual subcarriers and sent to an IDFT block. The output of the IDFT block, generally viewed as time domain samples, results in an OFDM symbol. Such OFDM symbols are then transmitted across a channel with certain channel impulse response (CIR). On the other hand, the receiver applies DFT over the received OFDM symbols for further demodulation of the information in the individual subcarriers.

This article is part of the book
Wireless Communication Systems in Matlab (second edition), ISBN: 979-8648350779 available in ebook (PDF) format and Paperback (hardcopy) format.

In reality, a multipath channel or any channel in nature acts as a linear filter on the transmitted OFDM symbols. Mathematically, the transmitted OFDM symbol (denoted as s[n] gets linearly convolved with the CIR h[n] and gets corrupted with additive white gaussian noise – designated as w[n]. Denoting linear convolution as ‘\ast‘, the received signal in discrete-time can be represented as

r[n] = h[n] \ast s[n] + w[n] \;\;\; (\ast \rightarrow linear\;convolution ) \quad\quad (1)

The idea behind using OFDM is to combat frequency selective fading, where different frequency components of a transmitted signal can undergo different levels of fading. The OFDM divides the available spectrum in to small chunks called sub-channels. Within the subchannels, the fading experienced by the individual modulated symbol can be considered flat. This opens-up the possibility of using a simple frequency domain equalizer to neutralize the channel effects in the individual subchannels.

Circular convolution and designing a simple frequency domain equalizer

From one of the DFT properties, we know that the circular convolution of two sequences in time domain is equivalent to the multiplication of their individual responses in frequency domain.

Let s[n] and h[n] are two sequences of length N with their DFTs denoted as S[k] and H[k] respectively. Denoting circular convolution as \circledast ,

h[n] \circledast s[n] \equiv H[k] S[k] \quad\quad (2)

If we ignore channel noise in the OFDM transmission, the received signal is written as

r[n] = h[n] \ast s[n] \quad\quad (\ast \rightarrow linear\;convolution ) \quad\quad (3)

We can note that the channel performs a linear convolution operation on the transmitted signal. Instead, if the channel performs circular convolution (which is not the case in nature) then the equation would have been

r[n] = h[n] \circledast s[n] \quad\quad (\circledast \rightarrow circular\;convolution ) \quad\quad (4)

By applying the DFT property given in equation 2,

r[n] = h[n] \circledast s[n] \quad\quad \equiv R[k] = H[k] S[k] \quad\quad (5)

As a consequence, the channel effects can be neutralized at the receiver using a simple frequency domain equalizer (actually this is a zero-forcing equalizer when viewed in time domain) that just inverts the estimated channel response and multiplies it with the frequency response of the received signal to obtain the estimates of the OFDM symbols in the subcarriers as

\hat{S}[k] = \frac{R[k]}{H[k]} \quad\quad (6)

Demonstrating the role of Cyclic Prefix

The simple frequency domain equalizer shown in equation 6 is possible only if the channel performs circular convolution. But in nature, all channels perform linear convolution. The linear convolution can be converted into circular convolution by adding Cyclic Prefix (CP) in the OFDM architecture. The addition of CP makes the linear convolution imparted by the channel appear as circular convolution to the DFT process at the receiver (Reference [1]).

Let’s understand this by demonstration.

To simply stuffs, we will create two randomized vectors for s[n] and h[n]. s[n] is of length 8, the channel impulse response h[n] is of length 3 and we intend to use N=8-point DFT/IDFT wherever applicable.

N=8; %period of DFT
s = randn(1,8);
h = randn(1,3);
>> s =   -0.0155    2.5770    1.9238   -0.0629   -0.8105    0.6727   -1.5924   -0.8007
>> h =   -0.4878   -1.5351    0.2355

Now, convolve the vectors \mathbf{s} and \mathbf{h} linearly and circularly. The outputs are plotted in Figure 1. We note that the linear convolution and the circular convolution does not yield identical results.

lin_s_h = conv(h,s) %linear convolution of h and s
cir_s_h = cconv(h,s,N) % circular convolution of h and s with period N
lin_s_h = 0.0076 -1.2332 -4.8981 -2.3158  0.9449  0.9013 -0.4468  2.9934  0.8542 -0.1885 
cir_s_h = 0.8618 -1.4217 -4.8981 -2.3158  0.9449  0.9013 -0.4468  2.9934
Difference between linear convolution and circular convolution
Figure 1: Difference between linear convolution and circular convolution

Let’s append a cyclic prefix to the signal \mathbf{s} by copying last N_{cp} symbols from \mathbf{s} and pasting it to its front. Since the channel delay is 3 symbols (CIR of length 3), we need to add atleast 2 CP symbols.

Ncp = 2; %number of symbols to copy and paste for CP
s_cp = [s(end-Ncp+1:end) s]; %copy last Ncp symbols from s and prefix it.
s_cp = -1.5924 -0.8007 -0.0155  2.5770  1.9238 -0.0629 -0.8105  0.6727 -1.5924 -0.8007

Lets assume that we send the cyclic-prefixed OFDM symbol \mathbf{s_{cp}} through the channel which perform linear filtering

lin_scp_h = conv(h,s_cp) %linear convolution of CP-OFDM symbol s_cp and the CIR h
lin_scp_h = 0.7767  2.8350  0.8618 -1.4217 -4.8981 -2.3158  0.9449  0.9013 -0.4468  2.9934  0.8542 -0.1885

Compare the outputs due to cir_s_h =\mathbf{s} \circledast \mathbf{h} and lin_scp_h =\mathbf{s}_{cp} \ast \mathbf{h}. We can immediately recognize that that the middle section of lin_scp_h is exactly same as the cir_s_h vector. This is shown in the figure 2.

Equivalence of circular convolution and linear convolution with cyclic prefix OFDM
Figure 2: Equivalence of circular convolution and linear convolution with cyclic prefixed signal
cir_s_h   = 0.8618  -1.4217 -4.8981 -2.3158  0.9449  0.9013 -0.4468  2.9934
lin_scp_h = 0.7767   2.8350  0.8618 -1.4217 -4.8981 -2.3158  0.9449  0.9013 -0.4468 2.9934 0.8542 -0.1885

We have just tricked the channel to perform circular convolution by adding a cyclic extension to the OFDM symbol. At the receiver, we are only interested in the middle section of the lin_scp_h which is the channel output. The first block in the OFDM receiver removes the additional symbols from the front and back of the channel output. The resultant vector is the received symbol r after the removal of cyclic prefix in the receiver.

r = lin_scp_h(Ncp+1:N+Ncp)%cut from index Ncp+1 to N+Ncp

Verifying DFT property

The DFT property given in equation 5 can be re-written as

equation for DFT OFDM verification

To verify this in Matlab, take N-point DFTs of the received signal and CIR. Then, we can see that the IDFT of product of DFTs of \mathbf{s} and \mathbf{h} will be equal to the N-point circular convolution of \mathbf{s} and \mathbf{h}

R = fft(r,N); %frequency response of received signal
H = fft(h,N); %frequency response of CIR
S = fft(s,N); %frequency response of OFDM signal (non CP)

r1 = ifft(S.*H); %IFFT of product of individual DFTs

display(['IFFT(DFT(H)*DFT(S)) : ',num2str(r1)])
display([cconv(s,h): ', numstr(r)])
IFFT(DFT(H)*DFT(S)) : 0.86175  -1.4217  -4.8981  -2.3158  0.94491  0.90128 -0.44682  2.9934
cconv(s,h):           0.86175  -1.4217  -4.8981  -2.3158  0.94491  0.90128 -0.44682  2.9934

Rate this article: PoorBelow averageAverageGoodExcellent (26 votes, average: 4.31 out of 5)

Reference:

[1] H. Sari, G. Karam, and I. Jeanclaude, Transmission Techniques for Digital Terrestrial TV Broadcasting, IEEE Commun. Magazine, Vol. 33, pp. 100-109, Feb. 1995.↗

Topics in this chapter

Orthogonal Frequency Division Multiplexing (OFDM)
● Introduction
Understanding the role of cyclic prefix in a CP-OFDM system
 □ Circular convolution and designing a simple frequency domain equalizer
 □ Demonstrating the role of cyclic prefix
 □ Verifying DFT property
Discrete-time implementation of baseband CP-OFDM
Performance of MPSK-CP-OFDM and MQAM-CP-OFDM on AWGN channel
● Performance of MPSK-CP-OFDM and MQAM-CP-OFDM on frequency selective Rayleigh channel

Books by the author

Wireless Communication Systems in Matlab
Wireless Communication Systems in Matlab
Second Edition(PDF)

PoorBelow averageAverageGoodExcellent (180 votes, average: 3.62 out of 5)

Digital modulations using Python
Digital Modulations using Python
(PDF ebook)

PoorBelow averageAverageGoodExcellent (134 votes, average: 3.56 out of 5)

digital_modulations_using_matlab_book_cover
Digital Modulations using Matlab
(PDF ebook)

PoorBelow averageAverageGoodExcellent (136 votes, average: 3.63 out of 5)

Hand-picked Best books on Communication Engineering
Best books on Signal Processing

19 thoughts on “Cyclic Prefix in OFDM: hands-on demo in Matlab”

  1. Hi sir, Thank you very much for providing information on MATLAB coding for wireless communication techniques. Will you please help how to do MATLAB coding for OFDM modulation in underwater acoustic communication

    Reply
  2. Hello Mathuranathan. Nice article. You mentioned ‘estimated channel response’. I assume that means estimated discrete time domain channel impulse response. Have you got an article that shows some basics on obtaining estimates of the channel impulse response for OFDM communications? I see some papers online from authors with topics of channel estimation, but a lot of cryptic math is involved. If there is an entry-level demonstration that can be relatively easy to test or applied in practice, then that would give the newcomers a really nice boost in understanding the OFDM communications method. Thanks Mathuranathan.

    Reply
  3. Hello Mathuranathan. Nice article. You mentioned ‘estimated channel response’. I assume that means estimated discrete time domain channel impulse response. Have you got an article that shows some basics on obtaining estimates of the channel impulse response for OFDM communications? I see some papers online from authors with topics of channel estimation, but a lot of cryptic math is involved. If there is an entry-level demonstration that can actually be easily tested or applied in practice, then that would give the newcomers a really nice boost in understanding the OFDM communications method. Thanks Mathuranathan.

    Reply
      • This section contains so many tables? how to go ahead ? and every table is not mentioning all the details of OFDMA for one scenario ? Pl. help

        Reply
        • Tables are linked. You need to read the text above to understand the scenarios the tables can be applied.

          Start by modelling the simplest possible config and you can build on to that. For example:

          To begin with just choose a column in Table 6-146 that dictates the parameters for a given nominal channel BW.
          Choose one CP ratio. Choose the same column in Table 6-147 that corresponds to nominal channel BW chosen for Table 6.146.

          Reply
          • Can I mail you the pdf which I am referring just to check whether I am studying correct one or not ?? It is not getting attached here.

            Reply
          • Hi Sir,

            I am Abid, in real world noise is not always gaussian. It has non gaussian component as well. However, all your codes and discussion about gaussian. Can u please guide me about non gaussian noise generation through MATLAB M file.

            Thanks

            Best Regards
            Dr. ABID MUHAMMAD KHAN

            Reply
  4. hello sir

    I want your help. i want matlab code of ber vs snr plot with bpsk,qpsk and 16qam modulation with mrc, egc and sc in mmse sic receiver

    Reply
      • Sir, actually I have a query. In your matlab book, the Rayleigh channel generation has been done taking the Jakes’s model into consideration. But the Rician channel generation has been done in a static scenario, unlike the Rayleigh case. It would have been really helpful for me if you could do the same (i.e., scenarios where Rician channel is generated taking into account the doppler effect and the inter-sampling duration) and upload a post regarding the same or share the Matlab code.

        Reply

Post your valuable comments !!!