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
- B. Farhang-Boroujeny, “OFDM versus filter bank multicarrier,” IEEE Signal Process. Mag., 28(3), 92–112, 2011.
- M. Bellanger, “FBMC physical layer: a primer,” PHYDYAS project (FP7-ICT 211887), 2010.
- 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.
- 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.
- 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.
- 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§
Functions§
- oqam_
destagger - The inverse of
oqam_stagger: complex symbols from the real estimatesa[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.