Also known as: turbo code, PCCC, parallel concatenated convolutional code
A turbo code is a powerful forward error correction scheme built by running the same data through two convolutional encoders, one directly and one through an interleaver that scrambles the bit order, then transmitting both sets of parity bits.1 Its breakthrough was the decoder: two soft-input/soft-output BCJR decoders that trade reliability estimates back and forth, iterating until they converge — a process whose feedback loop gave turbo codes their name and let practical codes get within a fraction of a decibel of the Shannon limit.2
How it works
The encoder is deliberately simple. The information bits are sent once (the systematic part), and two recursive convolutional encoders each add parity — the second working on an interleaved copy so its parity protects a completely different ordering of the same bits. If a burst of noise wipes out a run of bits, it damages consecutive positions for one encoder but scattered positions for the other, so the two views rarely fail in the same place.
Decoding is where the power lives:
- Decoder 1 runs BCJR on the systematic bits plus parity 1 and produces a soft LLR for each bit, then strips out the part it was given to keep only its new extrinsic information.
- That extrinsic information is interleaved and handed to decoder 2 as a prior, which runs BCJR on the interleaved bits plus parity 2 and returns its own extrinsic estimate.
- Deinterleave, feed back to decoder 1, and repeat. Each pass sharpens the LLRs; after a handful of iterations the bits are decided by sign.
Exchanging only extrinsic information (never a decoder’s own input echoed back) is what keeps the loop from reinforcing its own mistakes and lets it converge — the same principle that makes LDPC belief propagation work.
In practice
Turbo codes trade latency and decoder complexity for coding gain: the iterations and the double BCJR pass cost far more than a one-shot Viterbi decode, and the interleaver adds delay, so they suit throughput- and power-limited links more than low-latency ones. Performance hinges on the interleaver design, which sets the code’s minimum distance and its error floor. Rate is tuned by puncturing the parity streams.
Relevance to SDR
Turbo codes carried the data channels of 3G (UMTS/HSPA) and 4G LTE and are standard for CCSDS deep-space telemetry, where every fraction of a decibel of coding gain saves antenna size or transmit power. 5G NR later moved its data channels to LDPC and control to polar codes, but turbo remains widespread in deployed cellular and space systems. The land-mobile and aviation formats GopherTrunk decodes use block and plain convolutional FEC, not turbo codes, so GT does not implement a turbo decoder; the topic is covered here as a landmark in near-capacity coding and the primary application of BCJR.
Sources
-
Turbo code — Wikipedia, for the parallel-concatenated structure and iterative decoding. ↩
-
Near Shannon limit error-correcting coding and decoding: Turbo-codes — Berrou, Glavieux, Thitimajshima, ICC (1993), the introducing paper. ↩