Skip to main content

Module ce_ofdm

Module ce_ofdm 

Source
Expand description

Constant-envelope OFDM (CE-OFDM): the modulator, the phase demodulator and the error rate of its linear regime, after S. C. Thompson, A. U. Ahmed, J. G. Proakis, J. R. Zeidler and M. J. Geile, “Constant envelope OFDM,” IEEE Trans. Commun. 56(8), 2008.

§Model (matrix form)

A block carries $K$ data symbols $\mathbf{d} \in \mathbb{C}^{K}$ (unit mean energy) on the subcarriers $1..K$ of a DFT of size $N = 2J(K + 1)$, with $J \ge 1$ the oversampling factor ($J = 1$ is the smallest DFT that keeps the bins $0$ and $K + 1$ empty). With $\mathbf{F} \in \mathbb{C}^{N \times K}$, $F_{nk} = e^{j2\pi kn/N}$, the real OFDM signal and the transmitted samples are

$$\mathbf{x} = \frac{\mathbf{F}\mathbf{d} + \mathbf{F}^{}\mathbf{d}^{}}{\sqrt{2K}},, \qquad s_{n} = e^{j 2\pi h x_{n}},,$$

so that $\mathbb{E}[\mathbf{x}\mathbf{x}^{T}]$ is circulant with a unit diagonal and the phase $\varphi = 2\pi h x$ has the standard deviation $2\pi h$, $h$ being the modulation index (Sec. II of the paper). An optional cyclic prefix of $N_{\mathrm{cp}}$ samples is prepended. The channel adds $\mathbf{w} \sim \mathcal{CN}(0, \sigma^{2}\mathbf{I})$.

The receiver (Sec. III, Fig. 1 of the paper) takes the phase $\theta = \arg r$, optionally unwraps it along the stream (Unwrap::Stream, the phase unwrapper of the paper), removes the prefix and projects on the data bins:

$$\hat{\mathbf{d}} = \frac{\mathbf{G}\boldsymbol{\psi}}{2\pi h},, \qquad \mathbf{G} = \frac{\sqrt{2K}}{N}\mathbf{F}^{H}$$

($\mathbf{G}\mathbf{x} = \mathbf{d}$ because $\mathbf{F}^{H}\mathbf{F} = N\mathbf{I}$ and $\mathbf{F}^{H}\mathbf{F}^{*} = \mathbf{0}$).

§SNR convention

The SNR is $E_{s}/N_{0}$ per data symbol: a block of energy $N + N_{\mathrm{cp}}$ (unit envelope) carries $K$ symbols, so $\sigma^{2} = (N + N_{\mathrm{cp}})/(K \cdot E_{s}/N_{0})$. The results of the linear regime are then independent of the oversampling factor.

§Theory of the linear regime

Above the threshold of the phase demodulator (a carrier-to-noise ratio of about 10 dB, Sec. III-B of the paper), the phase error $\varepsilon = \operatorname{Im}(w e^{-j\varphi}) \sim \mathcal{N}(0, \sigma^{2}/2)$ and $\hat{\mathbf{d}} = \mathbf{d} + \mathbf{G}\boldsymbol{\varepsilon}/(2\pi h)$, so every data subcarrier sees the SNR

$$\mathrm{SNR} = (2\pi h)^{2},\frac{E_{s}}{N_{0}},\frac{N}{N + N_{\mathrm{cp}}},:$$

the error rates are those of the constellation over AWGN with the SNR multiplied by $(2\pi h)^{2}$ (theory::snr, theory::ser_esn0, theory::ber_esn0). For $M$-PAM data on every real subcarrier this is eq. (15) of the paper, which keeps the nearest-neighbour term of the Gray BER; the library uses the exact Gray BER of the square QAM whose real and imaginary parts are the two PAM symbols (checked against eq. (15) by the test literature). Below the threshold the demodulator fails and the error rate stays above this theory, as in Fig. 2 of the paper.

§Receivers

CeOfdm::demodulate_with_receiver takes a Receiver: the arctangent phase demodulator above, or the low-complexity receivers of Ahmed and Zeidler (2015), which replace $\arg r$ by $\operatorname{Im} r$ (basic linear receiver) or by $\operatorname{Im} r \, (2 - \operatorname{Re} r)$ (enhanced receiver) and avoid the threshold and the wraps of the phase at the price of a distortion. gamp::Gamp is the near-optimum receiver of López Morales et al. (2022), by message passing, which decodes beyond $2\pi h \approx 0.7$ where the phase leaves $(-\pi, \pi]$. theory gives the error rates of the receivers, the spectrum, the optimum asymptotic gain and the effect of a cycle slip.

§Examples

use comnum_waveform::ce_ofdm::{CeOfdm, Receiver, Unwrap};
use comnum_mapping::constellation::Constellation;
use comnum_core::rng::Rng;
let ce = CeOfdm::new(16, 2, 0.1).unwrap();
let c = Constellation::qam(16).unwrap().normalized();
let (_, d) = comnum_mapping::source::symbols(&c, 64, None, &mut Rng::new(1)).unwrap();
let s = ce.modulate(&d).unwrap();
assert_eq!(s.len(), 4 * ce.n_fft());
assert!(s.iter().all(|v| (v.norm() - 1.0).abs() < 1e-12));          // constant envelope
let e = ce.demodulate_with_receiver(&s, Receiver::Arctangent(Unwrap::None)).unwrap();
assert!(e.iter().zip(&d).all(|(a, b)| (a - b).norm() < 1e-9));

Modules§

gamp
A near-optimum receiver of CE-OFDM by generalised approximate message passing (GAMP), after M. J. López Morales, R. Dinis and A. García Armada, “Near-optimal detection of CE-OFDM signals with high power efficiency via GAMP-based receivers,” Proc. IEEE Globecom Workshops, 2022, Algorithm 1.
theory
The theory of CE-OFDM: the error rates of the receivers, the spectrum, the optimum asymptotic gain and the effect of a cycle slip.

Structs§

CeOfdm
A CE-OFDM link (see the module documentation).

Enums§

Receiver
The receiver: how the samples become a proxy of the phase before the DFT.
Unwrap
The phase processing of the receiver before the DFT.