orthogonal frequency division multiplexing

Table of Contents

OFDM is a multicarrier communication system.

Protocol specifics are listed in the article about ieee802.11.

1. Mathematical basis

We are concerned with linear time invariant channels. We say this channel has order \(L\) which is defined by the channel delay spread divided by the sampling period. In other words, the order of the channel is how many symbols back can influence the current symbol, or how many elements are used in the linear convolution with the signal.

We know that typically,

\begin{equation} x = \sum_{l = 0}^{L} h(l)u(n-l)+\gamma(n) \end{equation}

where we'll use \(x\) to denote the recieved signal, \(u\) to denote the transmitted signal, \(h\) the channel any finally \(\gamma(n)\) some awgn.

The key idea is to block up the signal \(u(n)\) into blocks of size \(P\) such that \(P > L\). The idea here is that any symbol in a block should not be determined by any symbol further than the immediately previous block. We denote \(u_{i, j}\) to be the transmitted signal at the $i$th block but $j$th index in that block (note indices are reversed due to transmission order).

Note that the linear convolution starting at any block will necessarily touch at least some elements in the block before it.

Let the length of each signal within each block (not the length of the block itself, as we will see) be \(N = 4\) and \(L = 3\) for instance. The full linear convolution on the data in block 1 would be

\begin{array}{c c c c | c c c c } u_{0, 3} & u_{0, 2} & u_{0, 1} & u_{0, 0} & u_{1, 3} & u_{1, 2} & u_{1, 1} & u_{1, 0} \\ \hline 0 & 0 & h(2) & h(1) & h(0) & 0 & 0 & 0 \\ 0 & 0 & 0 & h(2) & h(1) & h(0) & 0 & 0 \\ 0 & 0 & 0 & 0 & h(2) & h(1) & h(0) & 0 \\ 0 & 0 & 0 & 0 & 0 & h(2) & h(1) & h(0) \\ \end{array}

We may then clearly split up the influences of the channel on each block using two matrices.

The influence of the convolution on the current block is a lower triangular toeplitz matrix, and is

\begin{equation} H_0 = \begin{bmatrix} h(0) & 0 & 0 & \dots & 0 \\ h(1) & h(0) & 0 & \dots & 0 \\ \vdots & \dots & \ddots & \dots & \vdots \\ h(L) & \dots & \ddots & \dots & \vdots \\ \vdots & \dots & \ddots & \dots & 0 \\ 0 & \dots & h(L) & \dots & h(0) \\ \end{bmatrix} \end{equation}

and the matrix determining essentially the inter-block interference is

\begin{equation} H_1 = \begin{bmatrix} 0 & \dots & h(L) & \dots & h(1) \\ \vdots & \ddots & 0 & \ddots & \vdots \\ 0 & \dots & \ddots & \dots & h(L) \\ 0 & \dots & 0 & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & \dots & 0 & \dots & 0 \\ \end{bmatrix} \end{equation}

Both matrices are of dimension \((N+L) \times (N+L)\). Now it appears that in order to multiply this matrix with \(u(i)\), the length of \(u(i)\) should be \(P\), which we will define now as \(P = N + L\).

The question is now to determine how to pad the \(L\) values we must add to vector \(u(i)\) which is length \(N\) in order to make it size \(P\).

There are two main options here, zero-padding and the cyclic prefix.

  1. Cyclic prefix

    The idea is that for a block (column vector) of initial length \(N\), we will prefix it with \(L\) values from the end of the block to make it length \(P\). So, for \(N = 4\), \(P = 7\) and \(L = 3\)

    \begin{equation} \text{CP}\{(u_3, u_2, u_1, u_0)\} = (u_2, u_1, u_0, u_3, u_2, u_1, u_0) \end{equation}

    Intuitively, this now makes the linear convolution with the channel a circular convolution one since the "overlap" that used to touch the previous block now touches the end of the current block in a form of wrap-around.

    Mathematically, we define a matrix \(T\) to add the cyclic prefix as

    \begin{equation} T = \begin{bmatrix}I_{cp} \\ I_N \end{bmatrix} \\ \end{equation}

    Where \(I_cp\) is a matrix of the last \(L\) rows of \(I_N\). This matrix is of dimension \(P \times N\)

    We must also construct a matrix to remove the cyclic prefix. This matrix, \(R\) can be defined as

    \begin{equation} R = \begin{bmatrix} 0_{N \times L} & I_N \end{bmatrix} \end{equation}

    with dimension \(N \times P\).

    It can now be shown that

    \begin{equation} \tilde{H} := RHT \end{equation}

    is circulant, and therefore diagonalizable in fourier basis.

    \begin{equation} \tilde{H} = F D F^H \end{equation}

    This is an enormously useful fact. It means that for equalization, we can simply pre-multiply by \(F^H\). Because the columns of the fourier matrix basically represent sinusoids at set frequencies spaced apart, multiplying by the IDFT matrix is really doing a kind of parallelization of a signal across these frequencies, known as subcarriers. This is precisely what gives rise to the notion of ODFM as a multicarrier algorithm.

    By using exactly the fourier frequencies as subcarriers, we can ensure that their frequencies are not changed as result of the channel due to a result about the columns of the DFT matrix being eigenvectors of circulant matries (proved in the lti article).

    Because received signals are modified only by phase and amplitude (really, the transfer function of the system or the frequency response), this enables a trivial and computationally cheap equalization strategy at the receiver, simply multiplying by the matrix \(D^{-1}\) which is a diagonal matrix.

    Caveat \(D\) is only invertible when \(C\) is invertible, when its fourier transform has no 0s

  2. Zero padding


2. Circuit/system outline

  1. Transmission
    1. input stream is modulated by quadrature amplitude modulation, giving \(N\) complex symbols, in the frequency domain, \(X[N]\)
    2. Serial to parallel converter, giving N different outputs that are fed into an \(N\) point IFFT to give the ofdm block in the time domain, \(x[n]\)

      At this point, each sample of \(x\) is exactly tho sum of the QAM modulated symbols \(X[i]\) each modulated on frequency \(e^{-j2\pi i \frac{t}{T_N}}\) where \(i\) is a range from \(0\) to \(N-1\). This is what is actually doing the "multicarrier" modulation, since each value is on a different carrier frequency.

    3. Add cyclic prefix to time domain symbols
    4. Parallel to serial converter to D/A converter, resulting in baseband signal
    5. Multiply with \(cos(2\pi f_c t)\) to upconvert to the right frequency.
  2. Reception
    1. Received signal passes through a linear time invariant system characterized by channel impulse response \(h(t)\) and noise \(n(t)\), therefore \(y(t) = \tilde{x}(t) + n(t)\)
    2. Downconverted to baseband and lowpass filtered.
    3. Remove first μ samples
    4. FFT
    5. QAM demod
Back to index