Also known as: Golay code, binary Golay code
The Golay code is a remarkably efficient binary block error-correction code.1 The binary Golay(23,12) packs 12 data bits into a 23-bit codeword and corrects up to three bit errors, and the extended Golay(24,12) adds one overall parity bit to reach a convenient 24-bit word that can additionally detect a fourth error. It is prized for squeezing strong correction into a very short block, which is exactly what small but critical control fields need.
How it works
The binary Golay(23,12) is one of the very few perfect codes: its 2¹² codewords are arranged so that the Hamming spheres of radius 3 around them exactly tile the whole 23-bit space with no gaps and no overlap. That perfect packing is what guarantees every received word with three or fewer errors sits closest to exactly one codeword, so correction is unambiguous and no redundancy is wasted. Encoding multiplies the 12 data bits by a generator matrix; decoding computes a 11-bit syndrome and, because the code is so small and highly structured, the error pattern can be looked up directly or found with a compact algebraic procedure — fast enough to run on the tiniest processors. The extended (24,12) form trades the perfect property for a tidy byte-aligned length and the bonus of four-error detection.
Variants
Golay sits in the same family of classic linear block codes as the Hamming codes (perfect single-error correctors) and the Reed–Muller codes; in fact the extended Golay is closely related to a shortened Reed–Muller construction and to the mathematics of the Leech lattice. Where Reed–Solomon shines on long bursts, Golay is the tool of choice for a short field that must survive a handful of scattered bit errors.
Relevance to SDR
Golay coding protects link-control and signalling fields across the digital voice systems GopherTrunk decodes. P25 uses Golay codes on parts of its Network ID and link-control words, DMR protects several control fields with Golay(20,8) and (24,12) variants, and M17 uses Golay for its link setup. Correcting these words is often what makes the difference between reading a call’s metadata and losing the frame entirely, so the decoder leans on Golay heavily on marginal signals.
Sources
-
Binary Golay code — Wikipedia, for the perfect (23,12) and extended (24,12) three-error-correcting codes. See also Perfect code for the sphere-packing property. ↩