Skip to main content

Module fbmc

Module fbmc 

Source
Expand description

Filter-bank multicarrier with offset QAM (FBMC/OQAM, staggered multitone).

§Model

$M$ subcarriers spaced by $1/T$ ($T = M$ samples) carry real symbols $a_{m,n}$ every $T/2$, each on a time and frequency shift of a real, symmetric prototype filter $h$ of $L = KM - 1$ taps ($K$ the overlapping factor; Bouhadda et al. 2014, eqs. (3)–(4); Nissel & Rupp 2017, eq. (2)):

$$ s[k] = \sum_{n} \sum_{m=0}^{M-1} a_{m,n}, g_{m,n}[k], \qquad g_{m,n}[k] = h[k - nM/2], e^{j 2\pi m (k - nM/2 - D/2)/M}, e^{j \frac{\pi}{2}(m + n)}, $$

with $D = L - 1$, so that the exponential is centred on the filter. The pulses are orthogonal in the real sense only, $\Re\langle g_{m,n}, g_{m’,n’} \rangle = \delta_{mm’}\delta_{nn’}$ (nearly, for PHYDYAS: below $5 \cdot 10^{-4}$ per neighbour for $K = 4$, $5 \cdot 10^{-3}$ for $K = 3$, $0.05$ for $K = 2$): the receiver projects on $g_{m,n}$ and keeps the real part, the imaginary part being the intrinsic interference of the neighbours (Fbmc::interference). A complex QAM symbol is split into two real ones on consecutive half-symbols (oqam_stagger), the real part first on the even subcarriers and the imaginary part first on the odd ones, so that FBMC/OQAM carries as many complex symbols as OFDM without a cyclic prefix ($TF = 1$).

The pulses have unit energy: with QAM symbols of unit energy (real symbols of variance 1/2) on all subcarriers the signal has unit power, and complex noise of variance $\sigma^{2}$ per sample leaves a variance $\sigma^{2}/2$ on every real estimate, the SNR of OFDM per dimension (Nissel & Rupp 2017, eq. (18)).

The modulator and the demodulator are polyphase: one FFT of size $M$ per half-symbol and $L$ products.

As Modulate and Demodulate blocks, Fbmc takes complex QAM symbols and returns them: the OQAM staggering (oqam_stagger) and its inverse on the real parts of the projections (oqam_destagger) are inside the traits, at Fbmc::sample_rate.

Prototype::Hermite is the pulse of Haas & Belfiore (1997) as Nissel, Schwarz & Rupp (2017) write it, eqs. (10)–(11): $p(t) = \frac{1}{\sqrt{T_{0}}} e^{-2\pi (t/T_{0})^{2}} \sum_{i \in {0, 4, \dots, 20}} a_{i} H_{i}(2\sqrt{\pi}, t/T_{0})$, $T_{0} = M$ samples, truncated to $K T_{0}$ (they take $K = 8$) and normalised; it is orthogonal for complex symbols at $T = T_{0}$, $F = 2/T_{0}$ (their eq. (12)) and real-orthogonal on the OQAM lattice. Its time–frequency localisation (their eqs. (4)–(5), (13), (17)), Prototype::localisation, is $\sigma_{t}\sigma_{f} = 1.02/(4\pi)$ against $1.13/(4\pi)$ for PHYDYAS ($K = 4$).

Prototype::Phydyas is the filter of the PHYDYAS project (Bellanger 2010), sampled from its frequency response $H_{0} = 1$, $H_{1}, \dots, H_{K-1}$: $h[k] = H_{0} + 2\sum_{i=1}^{K-1} (-1)^{i} H_{i} \cos\left(\frac{2\pi i (k+1)}{KM}\right)$, $k = 0, \dots, KM - 2$, normalised to unit energy; for $K = 4$, $H_{1} = 0.97195983$, $H_{2} = 1/\sqrt{2}$, $H_{3} = 0.23514695$ (the transmultiplexer response of Table 1 of Bouhadda et al. 2014 to three decimals, checked by Fbmc::interference).

§Examples

use comnum_waveform::fbmc::{Fbmc, oqam_stagger, oqam_destagger};
use comnum_math::C64;
let f = Fbmc::new(16, 4)?;
// 6 complex symbols per subcarrier: 12 real half-symbols
let c: Vec<C64> = (0..16 * 6).map(|i| C64::new(if i % 3 == 0 { 1.0 } else { -1.0 }, if i % 5 == 0 { -1.0 } else { 1.0 })).collect();
let a = oqam_stagger(&c, 16)?;
let s = f.modulate(&a)?;
assert_eq!(s.len(), f.n_samples(12));
let y = f.demodulate(&s)?;
let back = oqam_destagger(&y.iter().map(|v| v.re).collect::<Vec<f64>>(), 16)?;
// PHYDYAS is nearly perfect reconstruction: a residual of a few 1e-3
assert!(back.iter().zip(&c).all(|(a, b)| (a - b).norm() < 1e-2));

§References

  1. B. Farhang-Boroujeny, “OFDM versus filter bank multicarrier,” IEEE Signal Process. Mag., 28(3), 92–112, 2011.
  2. M. Bellanger, “FBMC physical layer: a primer,” PHYDYAS project (FP7-ICT 211887), 2010.
  3. H. Bouhadda, H. Shaiek, D. Roviras, R. Zayani, Y. Medjahdi and R. Bouallegue, “Theoretical analysis of BER performance of nonlinearly amplified FBMC/OQAM and OFDM signals,” EURASIP J. Adv. Signal Process., 2014:60.
  4. R. Nissel and M. Rupp, “OFDM and FBMC-OQAM in doubly-selective channels: calculating the bit error probability,” IEEE Commun. Lett., 21(6), 1297–1300, 2017.
  5. R. Nissel, S. Schwarz and M. Rupp, “Filter bank multicarrier modulation schemes for future mobile communications,” IEEE J. Sel. Areas Commun., 35(8), 1768–1782, 2017.
  6. R. Haas and J.-C. Belfiore, “A time-frequency well-localized pulse for multiple carrier transmission,” Wireless Personal Commun., 5(1), 1–18, 1997.

Structs§

Fbmc
An FBMC/OQAM modem (see the module).

Enums§

Prototype
The prototype filter of an Fbmc.

Functions§

oqam_destagger
The inverse of oqam_stagger: complex symbols from the real estimates a[n * M + m] of an even number of half-symbols.
oqam_stagger
Split complex symbols c[k * M + m] ($k$ the complex symbol, $m$ the subcarrier) into real symbols on twice as many half-symbols, a[n * M + m]: the real part on the even half-symbol and the imaginary part on the odd one for the even subcarriers, the reverse for the odd subcarriers.