Also known as: voice superframe, DMR voice superframe
A DMR voice superframe is the repeating unit of a DMR voice call: six bursts labelled A–F, spanning 360 ms, carrying 18 on-air AMBE+2 voice frames of 72 bits each.1 Burst A is framed by a voice sync word; bursts B–F carry no sync and instead put embedded signalling in their central field, so they are located not by a sync search but by TDMA cadence relative to burst A.2
Structure
GopherTrunk decodes the superframe in internal/radio/dmr/voice/superframe.go into a
VoiceSuperframe holding 18 AMBE frames in transmission order (bursts A–F, three per burst). The
central-field roles across the six bursts are:
| Burst | Central field | Voice frames |
|---|---|---|
| A | voice sync word (anchors the frame) | 3 |
| B | embedded LC fragment 1 (LCSS First) | 3 |
| C | embedded LC fragment 2 (Continuation) | 3 |
| D | embedded LC fragment 3 (Continuation) | 3 |
| E | embedded LC fragment 4 (LCSS Last) | 3 |
| F | embedded signalling (no LC fragment) | 3 |
The four fragments from bursts B–E reassemble into a 72-bit
embedded Link Control; when it passes its BPTC + checksum, its
destination and source addresses label the call. A single-fragment (LCSS == Single) field in any of
those bursts instead carries a Reverse Channel word or the null idle.
Cadence and phase lock
Only burst A produces a sync match, so the decoder locks onto it and slices B–F at a fixed same-slot
stride. On a contiguous single-slot stream that stride is 132 dibits; on a real 2-slot TDMA carrier
the other timeslot’s burst sits between each of a call’s bursts, making same-slot bursts 264 dibits
apart (no inter-burst CACH) or 288 when a 12-dibit CACH precedes each burst on
live outbound air. NewInterleavedDecoder auto-detects which stride is in use per call — a
CRC-valid embedded LC is authoritative and locks immediately, and absent one it scores each candidate
by AMBE FEC quality (the Golay-corrected-bit count across all 18 frames)
and locks the clearly-best cadence. That AMBE-quality fallback is what let a 288-cadence CACH carrier
decode even when its embedded LC never did (issue #644). Each superframe also carries a Phase — the
burst-A anchor’s parity over the physical-burst period — which is a stable relative discriminator
between the two interleaved calls, not an absolute TS1/TS2 label.
Relevance to SDR
The superframe is the frame GopherTrunk’s DMR voice pipeline actually operates on: locking burst A,
slicing the six bursts at the right cadence, pulling 18 AMBE+2 frames for the vocoder,
and reassembling the embedded LC to name the call. Handling the 264-vs-288 cadence and the phase lock
correctly is what keeps a decoder from pulling dibits out of the wrong timeslot on a busy carrier — the
difference between clean audio for one talkgroup and a garble of two interleaved calls. Because burst A’s
BS-sourced sync is identical on both slots, the embedded LC (or Phase bound to a talkgroup) is the only
thing that tells the two apart.
Sources
-
Digital mobile radio — Wikipedia, on the DMR standard and its voice superframe. ↩
-
Time-division multiple access — Wikipedia, on the two-slot framing the superframe’s cadence rides. ↩