Skip to content

REQ-DEM-010: GMSK is demodulated at BT 0.3 only, and the row asks for a BT parameter #438

Description

@TGoodhew

Found while implementing #125. REQ-DEM-010's catalogue row reads "GMSK | with BT parameter".
This build demodulates GMSK, and its BT is fixed at 0.3.

Why

GMSK is demodulated through its linear representation: π/2-BPSK shaped by the principal Laurent
pulse c₀(t). The catalogue has exactly one such pulse — PulseFilterType.Edge, the c₀(t) of
3GPP TS 45.004, which is the pulse for BT = 0.3, GSM's. Round-tripped through the simulator it
gives 0.002179 %rms with every symbol recovered, so GMSK at the BT that matters most is measured
properly; a signal filtered at any other BT is measured against the wrong pulse.

What a BT parameter would take

c₀ is derivable for any BT rather than tabulated, so this is a bounded piece of work:

  1. Frequency pulse g(t) = a rectangle of one symbol convolved with a Gaussian of the wanted BT.
  2. Phase pulse q(t) = ∫g, normalised to a half at infinity.
  3. c₀(t) = Π s(t + iT) over the pulse's span, with s(t) = sin(2πh·q(t)) for the first half and
    sin(πh − 2πh·q(t − LT)) for the second, at h = 1/2.

At BT → ∞ the construction collapses to half a cosine across two symbols, which is
PulseFilterType.Msk — so one function would produce MSK's pulse, GSM's c₀, and every BT between
them, and the two hand-written entries become special cases of it. That is the shape the answer
wants to take.

Also worth deciding at the same time

Whether the Gaussian entry already in the catalogue is what a user will reach for when they mean
this. It is the premodulation filter — what goes in front of the frequency modulator — not the
linear pulse a demodulator matches against, and measured here, using it as a transmit pulse gives a
signal that reads 11.1 %rms against the constellation it is supposed to carry. The names are close
enough to confuse, and REQ-DEM-021 already found it necessary to say in a box of its own that EDGE
is not a Gaussian.

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

    deferred:revisitClosed to keep the backlog at zero; revisit once the rest of the product is complete

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions