Skip to main content

Module ofdm

Module ofdm 

Source
Expand description

OFDM and DFT-spread OFDM.

A block carries $K$ symbols on $K$ contiguous subcarriers centred on the carrier, out of a grid of $N$ subcarriers; the time signal is computed by an IFFT of size $L N$, an oversampling by $L$ that the peak measurements need (the peaks of the continuous signal fall between the Nyquist-rate samples; $L = 4$ is the usual choice), and a cyclic prefix of $N_{\mathrm{cp}}$ Nyquist-rate samples ($L N_{\mathrm{cp}}$ samples) is prepended.

§Model

With $X_{k}$ the symbol of subcarrier $k \in \{-K/2, \dots, K/2 - 1\}$ (unit average energy),

$$ x[n] = \frac{1}{\sqrt{K}} \sum_{k} X_{k}\, e^{\,j 2 \pi k n / (L N)}, \qquad n = 0, \dots, L N - 1, $$

so that $\mathbb{E}|x[n]|^{2} = 1$: the samples have unit average power whatever $K$, $N$ and $L$. With dft_spread, the $K$ data symbols are first transformed by a unitary DFT of size $K$ (localised SC-FDMA, the uplink of LTE): the signal is then a single-carrier signal interpolated by the subcarrier mapping, whose PAPR is that of the constellation, not that of a Gaussian signal.

The submodules build the rest of an OFDM link: grid (data and pilot resource elements), estimation (LS and LMMSE channel estimation on the grid), wiener (two-dimensional Wiener interpolation of pilots, Hoeher et al. 1997), sync (Schmidl & Cox timing and frequency synchronisation), budget (the SNR loss of residual synchronisation and estimation errors, Speth et al. 1999), detection (MIMO-OFDM, per-subcarrier detection) and correction (pilot-based gain correction against a cochannel interferer, Cimini 1985); the signals of the standards are in nr, lte (the synchronisation, reference and broadcast signals of the LTE downlink) and dvbt.

§Examples

use comnum_waveform::ofdm::Ofdm;
use comnum_math::C64;
let ofdm = Ofdm { n_cp: 16, ..Ofdm::new(256, 200)? };   // L = 4 by default
let d: Vec<C64> = (0..400).map(|i| C64::new(if i % 3 == 0 { 1.0 } else { -1.0 }, 0.0)).collect();
let x = ofdm.modulate(&d)?;
assert_eq!(x.len(), 2 * 4 * (256 + 16));
let back = ofdm.demodulate(&x)?;
assert!(back.iter().zip(&d).all(|(a, b)| (a - b).norm() < 1e-12));

§References

  1. R. van Nee and R. Prasad, OFDM for Wireless Multimedia Communications, Artech House, 2000.
  2. H. G. Myung, J. Lim and D. J. Goodman, “Single carrier FDMA for uplink wireless transmission,” IEEE Veh. Technol. Mag., 1(3), 30–38, 2006.

Modules§

budget
The SNR-loss budget of an OFDM receiver (Speth, Fechtel, Fock & Meyr 1999).
correction
Pilot-based gain correction in the presence of a cochannel interferer (Cimini 1985, Sec. II-C to II-F).
detection
MIMO-OFDM: per-subcarrier detection.
dvbt
The OFDM frame of DVB-T (ETSI EN 300 744 V1.6.2, Secs. 4.4 to 4.6): the 2K and 8K modes, the guard intervals, the scattered and continual pilots, the carriers of the transmission parameter signalling (TPS) and the cells left to the data.
estimation
Channel estimation on the OFDM resource grid.
grid
The OFDM resource grid: data and pilot resource elements.
link
An OFDM link of several antennas: the frame of resource grids, its transmission and its reception.
lte
The downlink signals of LTE that a terminal reads before anything else: the synchronisation signals, the cell-specific reference signals, the resource elements of the broadcast channel, the OFDM grid with its unused DC subcarrier, and the space-frequency block code of transmit diversity (frame structure type 1, FDD, normal cyclic prefix).
nr
The numerology, the synchronisation signal block and the demodulation reference signals of 5G NR (and the numerology of LTE, its case $\mu = 0$).
sync
Timing and carrier-frequency synchronisation of OFDM (Schmidl & Cox 1997).
wiener
Two-dimensional Wiener interpolation of pilots in time and frequency (Hoeher, Kaiser & Robertson 1997).

Structs§

NoReduction
Plain OFDM.
Ofdm
An OFDM (or DFT-spread OFDM) modulator and demodulator.

Traits§

PaprReduction
A PAPR reduction technique applied block by block by Ofdm::modulate_with.