Also known as: puncturing, punctured code, rate-compatible puncturing
Puncturing is the deliberate deletion of selected coded bits from a low-rate mother code so that fewer bits are transmitted, raising the effective code rate without designing a new encoder.1 A single rate-1/2 convolutional encoder, for example, can be punctured to 2/3, 3/4, 5/6 or 7/8 simply by discarding different coded bits on a fixed schedule — and one Viterbi decoder handles all of them by treating each deleted bit as an erasure. This is the standard way modern links offer a menu of rates from one piece of hardware.
How it works
The encoder always runs the full low-rate mother code, producing every coded bit. A
puncturing pattern — a small binary matrix, one row per output stream — then marks
which bits are kept (1) and which are thrown away (0) over a short repeating period.
Deleting p of every q coded bits turns a rate-R mother code into a higher rate.
Because only a fixed, agreed set of positions is dropped, the receiver knows exactly
where the holes are.
At the decoder the missing bits are not guessed. Instead the receiver depunctures: it reinserts a placeholder at each deleted position carrying zero soft information — a neutral log-likelihood, i.e. an erasure that pulls the metric in neither direction. The Viterbi or BCJR decoder then runs on the reconstructed full-length stream as usual, simply getting no help from the erased branches. The elegance is that the trellis, the branch metrics and the traceback are all unchanged; only the input soft values differ. The cost is real, though: fewer transmitted parity bits mean smaller coding gain and a higher error floor, so a punctured rate-7/8 code is far weaker than the rate-1/2 mother it came from.
In practice
Rate-compatible punctured convolutional (RCPC) codes carry the idea further: the puncturing patterns are nested so that a higher-rate codeword’s kept bits are always a subset of a lower-rate one’s. That lets a transmitter start at a high rate and, if the receiver reports failure, send just the previously-punctured bits to lower the rate incrementally — the foundation of hybrid ARQ and adaptive modulation and coding in cellular systems. The same mechanism appears in turbo (turbo-code) and LDPC coding, where puncturing the parity stream sets the transmitted rate while the mother code stays fixed.
Relevance to SDR
Puncturing is pervasive in the wireless standards a software radio meets: Wi-Fi (802.11a/g/n) punctures a rate-1/2, K=7 convolutional code to reach 2/3 and 3/4; DVB, WiMAX and satellite modems publish tables of standard puncturing patterns; and LTE/5G puncture their turbo and LDPC codes for rate matching. In land-mobile trunking the effect shows up as the odd-looking code rates in the framing: P25 and other C4FM systems mix punctured and shortened codes to fit protection into fixed-size bursts. GopherTrunk must therefore depuncture correctly — reinserting erasures at the standard positions before its convolutional decoder — to read those channels; that depuncturing step, not a puncturing encoder, is where the technique lives in a receive-only decoder like GT.
Sources
-
Punctured code — Wikipedia, for the deletion of coded bits to raise rate, puncturing patterns, erasure-based depuncturing, rate-compatible punctured convolutional codes, and the Wi-Fi/DVB/turbo applications. ↩