Skip to content

REQ-DEM-010: SOQPSK is ternary, so the decomposition that put MSK and GMSK in the catalogue does not describe it #440

Description

@TGoodhew

The last row of REQ-DEM-010's table. Everything else in it is demodulated and round-trips; this
one does not fit the shape of demodulator the chain is, and which way it should be made to fit is a
decision rather than an implementation.

evidence/req-dem-010/ has the script, its output and the reasoning.

Why it is not just another pulse

Two continuous-phase formats are already in the catalogue — MSK and GMSK — and they are
there because Laurent's decomposition writes a binary CPM as a linear pulse driven by
pseudo-symbols that walk around a ring, exactly. That pulse is what OpenVSA shapes with and
matches against: it is what PulseFilterType.Msk and PulseFilterType.Edge are.

SOQPSK's excitation is not binary. IRIG 106 Chapter 2 equation 2-10 produces impulses in
{−1, 0, +1}, and the zero is what breaks the construction: when the phase does not move, two
adjacent pulse tails add in phase rather than in quadrature, and the linear model's envelope rises
by exactly √2 on a waveform that is constant-envelope by definition.

Measured on a rectangular frequency pulse of one bit period, where Laurent's decomposition has a
single term and is exact — so the only thing that changes between the two rows is the alphabet:

impulses EVM of the linear model model's envelope
binary, {−1, +1} — which is MSK 0.000000 %rms 0.000 dB
ternary, from equation 2-10 14.17 %rms 3.010 dB

3.010 dB is 20 log₁₀ √2 to three decimals. On SOQPSK-TG's own four-bit-period pulse the same
comparison reads 13.21 %rms, with the true waveform flat to 3.9e-15 dB as a CPM's must be.

It is the alphabet. Not the pulse, not the arithmetic, and no choice of pulse fixes it.

The two routes, and what each costs

A detector over the modulation's phase states — a trellis. h = 1/2 and a four-bit-period pulse
gives a manageable state count, and it is what the format was designed to be received with. But
REQ-DEM-001 fixes fourteen steps in a stated order and enforces it; a sequence detector is not
step 9 with a different decision rule, it replaces steps 8 and 9 for one family and needs its own
place in that order. That is a requirements change, not a code change.

The ternary PAM decomposition (Perrins & Rice). Gives a detection pulse, and the chain then
handles SOQPSK the way it handles GMSK — as offset QPSK through a pulse, with the equaliser taking
out the intersymbol interference the pulse puts in. Cheaper by a long way. But the pulse comes from
the literature rather than from the standard: IRIG 106 defines the transmitter, and equation
2-10 with Table 2-4 is all of it. This project has escalated exactly that kind of sourcing before —
#425 is a reading of 3GPP TS 45.004 rather than an implementation of it — and a detection pulse
taken from a paper would be the first thing in the filter catalogue whose definition is not a
published standard's. It would also be a filter, so #437's count moves again.

What is already done

The frequency pulse, the amplitude A from equation 2-8, the phase integral, the precoder and the
principal Laurent pulse are all evaluated from IRIG Standard 106-15 (Part 1), Chapter 2, subclause
2.4.3.2
in evidence/req-dem-010/soqpsk-pulse.py, and checked for the properties the mathematics
requires — c₀ symmetric about its centre to 7.5e-6, peak 0.998983, energy 0.999107. Whichever route
is chosen, the definition it starts from has been read once already.

Meanwhile Constellation.ByName("SOQPSK") refuses the name and says all of the above, rather than
answering with a constellation that would report a respectable EVM against a signal it does not
describe.

One more thing the standard settles

IRIG 106 admits one variant: "For purposes of this standard, only one specific variant of SOQPSK
and SOQPSK-TG is acceptable." SOQPSK-MIL exists but belongs to a different document with a different
frequency pulse, so if this arrives, whether the catalogue offers one name or two is part of the
same decision.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:demFlexible digital demodulationquestionFurther information is requested

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions