Also known as: BSCH, SCH/F, SCH/HD, SCH/HU, TETRA signalling channels
The TETRA logical channels are the named control-plane bearers a TETRA downlink carries — the broadcast, common-control and dedicated-signalling channels that ride inside its slots.1 Each channel is defined by a pair of sizes: how many type-1 information bits it accepts and how many type-5 on-air bits they become after channel coding. A receiver that knows those sizes and the coding chain can invert the chain and recover the bits, which are then a MAC PDU for the upper layers to parse.
The channels
| Channel | Type-1 → type-5 | Role |
|---|---|---|
| BSCH | 60 → 120 | Broadcast Synchronisation Channel — the MAC SYNC that carries colour code, slot/frame numbering and the network identity used to seed the scrambler |
| SCH/HD | 124 → 216 | Signalling Channel / Half slot Downlink — dedicated downlink signalling |
| BNCH | 124 → 216 | Broadcast Network Channel — SYSINFO / network-broadcast (same coding as SCH/HD) |
| STCH | 124 → 216 | Stealing Channel — signalling that steals a traffic half-slot (same coding as SCH/HD) |
| SCH/HU | 92 → 168 | Signalling Channel / Half slot Uplink — random-access uplink signalling |
| SCH/F | 268 → 432 | Signalling Channel / Full slot — the full-slot signalling bearer, one MAC PDU per slot |
| AACH | 14 → 30 | Access Assignment Channel — RM(30,14), not the SCH chain |
The coding chain
Except for the AACH, every one of these channels runs the same four stages, §8.3.1:
- CRC-16. A 16-bit CRC is appended over the K1
information bits (the (K1+16, K1) block code of §8.2.3.3). It is the standard CRC-CCITT
— polynomial
0x1021, initial fill0xFFFF, final XOR0xFFFF— and is the gate a receiver uses to accept or reject each recovered block. - Tail + RCPC. Four zero tail bits flush the encoder, and the RCPC code — a K=5 rate-1/4 mother convolutional code punctured to rate 2/3 — expands the type-2 bits to type-3 at a 3∶2 ratio.
- Interleaving. A block interleaver permutes the type-3 bits to type-4, spreading a burst of channel errors across the codeword so the Viterbi decoder sees them as scattered.
- Scrambling. The scrambler XORs a colour-code-seeded PN sequence over the bits to produce type-5. The BSCH is a special case: it is always scrambled with colour code 0 (§8.2.5.2) so a cold receiver with no configuration can decode it, then read the network identity it needs to form the extended colour code for every other channel.
GopherTrunk decodes each channel both hard-decision and soft-decision; the soft-input Viterbi recovers roughly 1.5–2 dB the hard slicer discards, which matters most on the longer SCH/F block where a marginal constellation accumulates more symbol errors before the CRC gate.
Relevance to SDR
internal/radio/tetra/channel_coding.go implements the whole set as EncodeBSCH /
DecodeBSCH, EncodeSCHHD / DecodeSCHHD (also used for BNCH and STCH), EncodeSCHHU /
DecodeSCHHU, and EncodeSCHF / DecodeSCHF, each with a …Soft twin, all composed from
the shared signalingEncode / signalingDecode helpers plus the framing primitives. The
BSCH decode is the bootstrap: sync_pdu.go parses its 60 bits into the SyncPDU whose MCC,
MNC and colour code form the extended colour code that unlocks BNCH, SCH/HD and SCH/F, so
getting the BSCH’s colour-0 rule right is what lets everything else on the cell decode
without operator configuration.
Sources
-
Terrestrial Trunked Radio — Wikipedia, on the TETRA logical-channel structure. ↩