Field Guide · term

Also known as: FSW, NXDN sync word, NXDN frame sync

The NXDN Frame Sync Word (FSW) is the fixed 16-bit pattern that opens every NXDN frame, letting a decoder find where a frame begins in the incoming dibit stream.1 Its value depends on direction: 0xC55A for the outbound link (base station to mobile) and 0x3AA5 for the inbound link (mobile to base station). Before a decoder can read the LICH, the SACCH, or the information field, it must know where the frame starts — and the FSW is the landmark it searches for, exactly the job of frame synchronization.2

FSW · 8 dibits LICH SACCH information field outbound 0xC55A = 3 0 1 1 1 1 2 2 (dibits) inbound 0x3AA5 = 0 3 2 2 2 2 1 1 (bit-complement) correlator peak = frame start
Every NXDN frame opens with an 8-dibit sync word; a sliding correlator locks onto it to mark the boundary, then the decoder reads the LICH, SACCH, and information field that follow. The inbound word is the bit-complement of the outbound word.

How it works

An NXDN receiver produces a stream of dibits (two bits per 4FSK symbol) from the demodulator. The FSW is 8 of those dibits in a fixed order, so the decoder runs a sliding access-code correlation: at each new dibit it compares the last 8 dibits against the known pattern and declares a frame boundary wherever the number of mismatches falls under a configured tolerance. GopherTrunk’s SyncDetector accepts one or more FSW patterns and reports each hit’s dibit index, plus whether the matched pattern was the inbound word — a downlink monitor searches for 0xC55A, while an uplink or direct-mode monitor also carries 0x3AA5.

The two directional words are exact bit-complements of one another: 0xC55A XOR 0x3AA5 equals 0xFFFF. Expanded to dibits (most-significant first), the outbound word is 3 0 1 1 1 1 2 2 and the inbound word is 0 3 2 2 2 2 1 1. That complementary relationship means a whole-alphabet polarity flip on the demodulator — a common consequence of a conjugated I/Q input — turns one direction’s pattern into the other’s, so a detector that carries both words is naturally robust to a swapped-sideband front end.

Direction Hex Dibits (MSB-first)
Outbound (BS→MS) 0xC55A 3 0 1 1 1 1 2 2
Inbound (MS→BS) 0x3AA5 0 3 2 2 2 2 1 1

FSW versus RAN

The FSW answers where a frame starts; it does not say which system the frame belongs to. That second job falls to the Radio Access Number (RAN), the 6-bit per-frame identifier NXDN carries in the SACCH so a repeater or radio accepts only its own system’s traffic on a shared channel. The FSW is identical for every NXDN system on a given link direction — it is a universal landmark — whereas the RAN differs per system. A decoder first correlates the FSW to lock the frame grid, then reads the RAN to decide whether the frame is worth following. The two are complementary: sync without RAN would lock onto every co-channel system indiscriminately; RAN without sync would have no aligned bits to read the RAN from.

Relevance to SDR

The FSW is the front door of GopherTrunk’s NXDN decoder. internal/radio/nxdn/sync.go holds the canonical FSWOutboundHex / FSWInboundHex constants, materialises them into 8-dibit patterns, and runs a SyncDetector that slides those patterns over the demodulated dibits and reports each hit’s absolute index and direction. Every NXDN frame — control (CAC), voice, or data — begins at an FSW hit, so getting this search right is what lets everything downstream decode at all. The exact bit patterns follow the values cited across public NXDN reference implementations; GopherTrunk’s source flags that they should be cross-checked against the published NXDN technical document before being trusted on unusual captures, since the sync search is the one place a wrong constant would silently prevent any lock.

Sources

  1. NXDN — Wikipedia, on the NXDN narrowband digital land-mobile standard and its frame structure. 

  2. Frame synchronization — Wikipedia, on using a fixed sync sequence to locate frame boundaries in a bit stream. 

See also