Introduction to OFDM – orthogonal Frequency division multiplexing – part 3

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 4.33 out of 5)

In the previous article, the architecture of an OFDM transmitter was described using sinusoidal components. Generally, an OFDM signal can be represented as

$$ OFDM\; signal = c(t)=\sum_{n=0}^{N-1}s_{n}(t)sin(2\pi f_{n}t )$$

\(s(t)\) = symbols mapped to chosen constellation (BPSK/QPSK/QAM etc..,)

\(F_n\) = orthogonal frequency

This equation can be thought of as an IFFT process ( Inverse Fast Fourier Transform). The Fourier transform breaks a signal into different frequency bins by multiplying the signal with a series of sinusoids. This essentially translates the signal from time domain to frequency domain. But, we always view IFFT as a conversion process from frequency domain to time domain.

FFT is represented by

$$X(k)=\sum_{n=0}^{N-1}x(n)sin(\frac{2\pi kn}{N})+j\sum_{n=0}^{N-1}x(n)cos(\frac{2\pi kn}{N})$$

where as its dual , IFFT is given by

$$ x(n)=\sum_{n=0}^{N-1}X(k)sin(\frac{2\pi kn}{N})-j\sum_{n=0}^{N-1}X(k)cos(\frac{2\pi kn}{N})$$

The equation for FFT and IFFT differ by the co-efficients they take and the minus sign. Both equation does the same thing. They multiply the incoming signal with a series of sinusoids and separates them into bins.In fact, FFT and IFFT are dual and behaves in a similar way.IFFT and FFT blocks are interchangeable.

Since the OFDM signal ( c(t) in the equation above ) is in time domain, IFFT is the appropriate choice to use in the transmitter, which can be thought of as converting frequency domain samples to time domain samples. Well, you might ask : s(t) is not in frequency domain and they are already in time domain; so whats the need to convert it into time domain again ? The answer is IFFT/FFT equation comes handy in implementing the conversion process and we can eliminate the individual sinusoidal multipliers required in the transmitter/receiver side. The following figure illustrates, how the use of IFFT in the transmitter eliminates the need for separate sinusoidal converters. Always remember that IFFT and FFT blocks in the transmitter are interchangeable as long as their duals are used in receiver.

OFDM implementation using FFT and IFFT
OFDM implementation using FFT and IFFT

The entire architecture of a basic OFDM system with both transmitter and receiver will look like this

A Complete OFDM communication system
A Complete OFDM communication system

An OFDM system is defined by IFFT/FFT length – N ,the underlying modulation technique ( BPSK/QPSK/QAM), supported data rate, etc..,. The FFT/IFFT length N defines the number of total subcarriers present in the OFDM system. For example, an OFDM system with N=64 provides 64 subcarriers. In reality, not all the subcarriers are utilized for data transmission. Some subcarriers are reserved for pilot carriers (used for channel estimation/equalization and to combat magnitude and phase errors in the receiver) and some are left unused to act as guard band. OFDM system do not transmitany data on the subcarriers that are near the two ends of the transmission band ( Not necessarily at the ends of the bands, implementation may differ). These subcarriers are collectively called guard band. The reservation of subcarriers to guard bands helps to reduce the out of band radiation and thus eases the requirements on transmitter front-end filters.The subcarriers in the guard band are also called Null subcarriers or virtual subcarriers.

For example IEEE 802.11 standard[1] specifies the following parameters for its OFDM physical layer.

FFT/IFFT size = 64 ( implies 64 subcarriers in total = used + unused = Nfft)

Number of data subcarriers = 48 ( Nd)

Number of pilot subcarriers = 4 (Np)

Derived parameters from the above specification.

Number of total USED subcarriers = 52 ( Nu = Nd+ Np )

Number of total UNUSED subcarriers = 12 ( Nun = Nfft – Nu ).

According to the spec, these 52 used subcarriers are distributed in the following way. The 52 used subcarriers are named as 1,2,3,…,26 and -1,-2,-3,…,-26. The used subcarriers 1 to 26 are mapped to 1 to 26 of IFFT inputs and the subcarriers -1,-2,..,-26 are mapped to the IFFT inputs 38 to 63. The remaining IFFT inputs 27 to 37 and the input 0 (dc input) are set to 0 .In this manner the 12 null subcarriers are mapped to IFFT inputs.

Full Matlab Code available at Simulation of Digital Communication Systems using Matlab – an ebook by Mathuranathan Viswanathan


[1] IEEE 802.11 specification – “Orthogonal frequency division multiplexing (OFDM) PHY specification for the 5 GHz band” – chapter 17

See also:

(1) Introduction to OFDM – orthogonal Frequency division multiplexing
(2) Role of Cyclic Prefix in OFDM
(3) Simulation of OFDM system in Matlab – BER Vs Eb/N0 for OFDM in AWGN channel

Books on OFDM

More Recommended Books at our Integrated Book Store

  • Pierre-Yves Pau

    Great description, but what is gained by transposing the ODFM signal from the frequency to the time domain before transmission? How does this make transmission more robust/efficient?

    • What is important is that the source symbols get spread across different frequency subchannels in an OFDM transmission system. This is beneficial especially in frequency selective fading channel. By dividing the channel into narrowband flat fading subchannels, OFDM is more resistant to frequency selective fading than single carrier systems are.

      As discussed in the articles, the FFT and IFFT blocks are completely interchangeable. Since we have used IFFT block in the Tx side, we conceptually think of it as converting from frequency domain to time domain (actually this is not the purpose). FFT/IFFT blocks are used to efficiently implement the modulation and demodulation functions.

    • Pierre-Yves Pau

      OK so multiple sub-channels acts as a form of spread-spectrum scheme. I understand now that by transmitting the modulated source signal in parallel over the multiple sub-channels, transmission rate over each sub-channel can slower: N sub-channels => 1/N transmission rate. This in turn decreases the impact of Inter Symbol Interference (ISI). However since each sub-channel as 1 Nth of the B/W of the original channel (+ guardband?), everything else being equal the energy contained in each waveform is divided by N as well, so SNR for each waveform decreases accordingly at receiver’s end. This in turn decreases max. achievable transmission speed. What is the trade-off between what is gained from reducing ISI and frequency fading on the one hand, and what is lost from lower energy level for each orthogonal waveform? In layman’s terms this is what would matter no? Also require high performance filters and very precise timing control, and how can you ball park the incremental cost of this?

  • Sunny Kabbinada


  • Kenny

    I thought that a constellation mapper takes in a FIXED NUMBER of bits, and then the mapping system does a ‘look-up’ to generate an output vector (magnitude and phase) that defines a location assigned to that code-word within the constellation. So why does the ‘constellation mapper’ in the above diagrams have many outputs So, S1, S2 …. Sn?

  • Max Fréjus

    Hi !
    Could anyone help me to implement in MATLAB, the code for Time domain channel equilization for OFDM please?
    Thanks a lot !

  • yasser

    please where is the article that illustrate the STO (symbol time offset ) and CFO (carrier frequency offset ) effect and estimation for ofdm? i need some hints on them to be implemented in matlab

  • bilo

    Hi ,
    what’s mean this kind of subcarrier mapping :
    The logical frequency subcarriers 1 to 61 are mapped to the same numbered IFFT inputs while the logical frequency subcarriers –61 to –1(How can i mapping the complex Data into logical frequency -60 to -1: what’s means the logical frequency -61 to -1 ) are mapped into IFFT inputs 67 to 127 respectively. The rest of the inputs, 62 to 66 and the 0 (DC) input, are set to zero?

  • Sai

    Respected Sir,

    Thanks for everything. I have understood everything you explained me. I have one final set of questions though. I hope you won’t find it a burden.

    I am unable to understand the connections given to the multiport switch and the use of the ‘PAD’ block in the model.Why are we padding zeroes there? and what is the ‘err’ that is coming out from the demodulator blocks.The internal block diagram of the first demodulator block is in the link below

    The last question is, when we are providing two threshold values i.e SnrUp and SnrDown, they should be two different values, but the adaptive modulation control block :

    has the same input from the output of delay block. How is it possible??

    Thankyou Sir.


    • Mathuranathan

      Usually zeros are padded to fit the fixed frame size. The “err” signal is used to calculate EVM (Error Vector Magnitude) which is a metric to measure the constellation error in the received signal. It compares the received constellation with the ideal constellation.

      SnrUp and SnrDown blocks are implemented as Look Up Tables (LUTs). You have to see how the LUTs are configured for these blocks.

      Example Configuration:

      SnrUp Block:
      Index Value
      1. 0.5
      2. 1
      3. 1.5

      SnrDown block:
      Index Value
      1. 0.25
      2. 0.5
      3. 0.75

      From the above examples of LUTs, when the index is same (ex: ‘1’), then for SnrUp a value of ‘1’ is chosen and for SnrDown a value of ‘0.5’ is chosen. So there is nothing wrong with the model.

  • Sai

    Respected Sir, I have one more question if you don’t mind. I am currently working on the simulink model of 802.11g. I am unable to understand this block that I have attached in the comment.


    • Mathuranathan

      Looks like packer error rate (PER) is being calculated. The individual data bits received by the receiver are compare with the sent ones.
      This gives the Bit Error Rate (BER). The delay block $latex Z^{-50} $ controls the packet length (may be in bits). The two $latex Z^{-1} $ blocks feeding backwards indicate accumulator. It accumulates the values. The top one accumulates the packet errors and the bottom one accumulate the number of packets transmitted. Dividing packet errors and number of packets transmitter will give PER.

      Check the annotations on the image below

      • Sai Krishna

        Respected Sir,

        The more deeply I am studying this model the more doubts I’m getting! Kindly help me out with this one-

        Please explain me the use of Hermitian Transpose there and its operation.

        and also this

        Why are variance and snrdb being added before giving them as the input to variance of AWGN block.


        • Mathuranathan

          Hi Sai,
          Please check the following post for details on Hermitian Transpose. Check under the heading – “Conjugate Transpose”.

          Hermitian Transpose operation involves two things : 1. Taking transpose of a matrix and 2. Taking complex conjugate of all the matrix elements. Hermitian Transpose is applicable to complex matrices only

          The first image (referred by you) is shown below with annotation.

          It calculates the normalized SNR where the signal power is normalized to 1. The noise power in the denominator of the SNR can be calculated by computing the noise covariance matrix. Computing noise covariance matrix is equivalent to calculating noise power.

          Noise Covariance matrix is calculated by multiplying the original noise vector (errors) and its Hermitian Transpose.

          $latex \mbox{Noise power = Noise Covariance} = u^{H}u $
          Here “u” is the noise vector and “H” is the Hermitian Transpose operation.

          The second image (referred by you) computes the scaling factor required for generating appropriate AWGN noise to get the desired SNR.

          I have annotated the images for better understanding

  • Sai

    Thanks a lot Sir! So the final output (bitrate-18mbps) that I am getting in the display box means that at the last time slot QPSK scheme is selected and the bit rate corresponds to that modulation scheme!

    Thankyou :)!

    Please do visit my blog

  • Sai Krishna

    Respectd Sir,

    This is Sai again. If we consider the 802.11g PHY model, modulation schemes like BPSK,QPSK,16 QAM,64QAM are all used. But the final bitrate of the 802.11g models is a single value which ranges from 2mbps to 54mbps.

    As you said that the bitrate depends on the modulation scheme sselected at a particular time, we should get 4 different bitrates but that aint happening. There is only one single bitrate at the output.    — this site provides the simulink model of 802.11g PHY  layer. You can clearly understand my question if you simulate that model.

    Kindly help!

    Thank you.

    • Mathuranathan

      Hi Sai,
      Got the context in which you are talking about… Let me go through 802.11g spec and get back to you soon.

      — Updated —
      I have gone through 802.11g specification and for the modulation format concerned you have to refer 802.11a specification which is available here ..
      Check chapter 18 on OFDM PHY specification, sub topic – Modulation-dependent parameters.
      The supported data rates are listed here. 802.11g specification gives you several options to choose your modulation format to get desired data rate. Only one modulation format is support at one time. There is no mixing of different modulation types. IF you choose OFDM-BPSK and a 1/2 coding scheme, you get 6Mbps data rate (for 20 MHz channel spacing) – See attached image below. If you choose OFDM-QPSK with 1/2 rate coding scheme, you get 12 Mbps data rate.

      Even in the simulink model that you are referring to, the modulator is initialized as follows

      switch modulation
      case ‘BPSK’, Nb1 = 1;
      case ‘QPSK’, Nb1 = 2;
      case ’16-QAM’, Nb1 = 4;
      case ’64-QAM’, Nb1 = 6;
      case ‘DQPSK’, Nb1 = 8;
      case ‘OQPSK’, Nb1 = 16;

      So the code essentially choose only one modulation type depending on the value of the variable – “modulation”.

  • Sai

    What is the method to calculate bitrate in OFDM?

    Generally if we want to calculate bit rate we use Bitrate=Baudrate*Number of bits per symbol. So for a generate PSK or ASK it’d be Bitrate=Baudrate, for QPSK it’d be Bitrate=2*Baudrate, for 16 QAM it’d be 4*Baudrate. But in OFDM we use multiple modulation schemes like BPSK,QPSK,16QAM and 64 QAM. In such case with what should we multiply the baud rate? What’d be the formula?

    • Mathuranathan

      Hi Sai,
      There is nothing special in OFDM as far as calculation of bit rate is concerned as you might think. It uses only one underlying modulation technique at one time.

      So the same calculation can be applied to OFDM as well. For example, if OFDM uses QPSK as the underlying modulation technique, the bitrate calculation will be same as that of normal QPSK.

  • Pingback: Simulation of OFDM system in Matlab – BER Vs Eb/N0 for OFDM in AWGN channel | GaussianWaves()

  • Pingback: Introduction to OFDM – orthogonal Frequency division multiplexing – part 2 | GaussianWaves()

  • Pingback: Introduction to OFDM – orthogonal Frequency division multiplexing – part 4 – Cyclic Prefix | GaussianWaves()

  • Pingback: Introduction to OFDM – orthogonal Frequency division multiplexing | GaussianWaves()