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:
- Frequency pulse
g(t) = a rectangle of one symbol convolved with a Gaussian of the wanted BT.
- Phase pulse
q(t) = ∫g, normalised to a half at infinity.
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.
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) of3GPP 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:
g(t)= a rectangle of one symbol convolved with a Gaussian of the wanted BT.q(t) = ∫g, normalised to a half at infinity.c₀(t) = Π s(t + iT)over the pulse's span, withs(t) = sin(2πh·q(t))for the first half andsin(πh − 2πh·q(t − LT))for the second, ath = 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 betweenthem, 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-021already found it necessary to say in a box of its own that EDGEis not a Gaussian.