Skip to main content

Module differential

Module differential 

Source
Expand description

Differential coding of M-PSK (DBPSK, DQPSK, D8PSK, …): encoding and decoding of the phase indices, noncoherent detection, and the Gray-labelled link Dpsk.

§Model

The information is carried by the phase transitions. With $a_{k} \in \{0, \dots, M - 1\}$ the differential phase index of the symbol $k$ and $c_{-1} = 0$ the reference,

$$ c_{k} = (a_{k} + c_{k-1}) \bmod M, \qquad x_{k} = e^{j 2 \pi c_{k} / M}, $$

so a sequence of $n$ information symbols is transmitted as $n + 1$ PSK symbols (encode). Decoding is the difference $a_{k} = (c_{k} - c_{k-1}) \bmod M$ (decode). The noncoherent detector (detect) needs no carrier phase: it decides the differential phase nearest to

$$ \arg \left(r_{k} \, r_{k-1}^{\ast}\right), $$

which a constant rotation $e^{j \phi}$ of the received symbols leaves unchanged. With coherent decisions on every symbol followed by decode, one wrong symbol spoils two differences: the bit error rate of DBPSK becomes $2p(1 - p)$ with $p = Q(\sqrt{2 E_{b}/N_{0}})$ (crate::theory::ber_dbpsk_coherent); the noncoherent detector gives $\frac{1}{2} e^{-E_{b}/N_{0}}$ for DBPSK and the integral of Pawula, Rice & Roberts for M-DPSK (crate::theory::ber_dpsk).

Dpsk maps bits to differential phase indices with the Gray labelling of crate::constellation (the bits of a symbol are the Gray label of its phase transition), so that the nearest wrong transitions differ by one bit.

§Square QAM with a differential quadrant

A carrier recovery of square QAM, such as the blind phase search, leaves an ambiguity of a multiple of $\pi/2$. QuadrantQam removes it as Pfau, Hoffmann and Noé (2009, Sec. III-A, Fig. 5): the two bits that select the quadrant are the Gray label of a differential quadrant index (encode with $M = 4$), and the other $\log_{2} M - 2$ bits select the point inside the quadrant, Gray-labelled along each axis, the pattern of the first quadrant rotated with the quadrant. A rotation of the received symbols by $j$ moves every symbol to the next quadrant with the same inner label, so the differential decoding of the quadrants returns the same bits. The labelling is no longer Gray across the axes, which costs about 3 dB of SNR for QPSK at a given bit error rate (every symbol error spoils two quadrant differences), and less and less for larger constellations.

§Examples

use comnum_mapping::differential::{Dpsk, decode, detect, encode};
use comnum_core::rng::Rng;
let a = vec![0, 1, 3, 2, 1];
let c = encode(&a, 4)?;
assert_eq!(c, vec![0, 0, 1, 0, 2, 3]);
assert_eq!(decode(&c, 4)?, a);
let dqpsk = Dpsk::new(4)?;
let bits = comnum_mapping::source::bits(200, &mut Rng::new(1));
let x = dqpsk.map_bits(&bits)?;
assert_eq!(x.len(), 101);
// a constant phase rotation does not change the decoded bits
let rotated: Vec<_> = x.iter().map(|v| v * comnum_math::cis(1.234)).collect();
assert_eq!(dqpsk.demap_bits(&rotated)?, bits);
assert_eq!(detect(&rotated, 4)?, detect(&x, 4)?);

§References

  1. J. G. Proakis and M. Salehi, Digital Communications, 5th ed., McGraw-Hill, 2008, §3.2-2 (differentially encoded PSK) and §4.5 (noncoherent detection, DPSK).
  2. R. F. Pawula, S. O. Rice and J. H. Roberts, “Distribution of the phase angle between two vectors perturbed by Gaussian noise,” IEEE Trans. Commun., 30(8), 1828–1841, 1982.
  3. T. Pfau, S. Hoffmann and R. Noé, “Hardware-efficient coherent digital receiver concept with feedforward carrier recovery for M-QAM constellations,” J. Lightw. Technol., 27(8), 2009.

Structs§

Dpsk
Differential M-PSK with Gray-labelled phase transitions: the differential phase index $k$ carries the label $g(k)$ (comnum_math::gray).
QuadrantQam
Square M-QAM whose quadrant is differentially encoded and whose points inside a quadrant are Gray-labelled (Pfau et al. 2009, Sec. III-A; see the module): the bits are read by a coherent receiver after a carrier recovery with an ambiguity of a multiple of $\pi/2$.

Enums§

Detection
The detection of a differential PSK signal.

Functions§

decode
Differential decoding: the n differences $a_{k} = (c_{k} - c_{k-1}) \bmod M$ of n + 1 phase indices.
detect
Noncoherent detection: the differential phase index nearest to $\arg(r_{k} r_{k-1}^{\ast})$ for every pair of consecutive received symbols (n decisions for n + 1 symbols).
detect_coherent
Coherent decisions: the phase index nearest to every received symbol (the hard decision of M-PSK on the absolute phase); decode then removes the differential encoding.
encode
Differential encoding: the n + 1 phase indices $c_{-1} = 0, c_{0}, \dots, c_{n-1}$ with $c_{k} = (a_{k} + c_{k-1}) \bmod M$.