Turbo Codes and Iterative Decoding

The Turbo Principle

In 1993, Berrou, Glavieux, and Thitimajshima demonstrated a coding scheme that operated within 0.70.7 dB of the Shannon limit at a bit-error rate of 10510^{-5} — a gap roughly three decibels better than the best practical codes known at the time. The construction is deceptively simple: two convolutional encoders separated by a pseudo-random interleaver. The decoder is similarly simple: two maximum-a-posteriori (MAP) decoders that exchange soft extrinsic information iteratively.

The principle behind this success transcends turbo codes and defines an entire class of receivers. Whenever a system can be decomposed into subsystems coupled through interleaving or permutation, one can often derive efficient SISO (soft-input soft-output) decoders for each subsystem and let them exchange extrinsic information iteratively. This is the turbo principle, and it subsumes turbo decoding, turbo equalization, iterative MIMO detection, iterative demapping, and joint source-channel decoding.

Historical Note: Berrou's Pragmatic Leap

1993–1998

Claude Berrou, an engineer at ENST Bretagne, developed turbo codes while searching for practical decoders near capacity. The 1993 ICC paper "Near Shannon limit error-correcting coding and decoding: Turbo-codes" reported simulation results so close to the Shannon bound that most information theorists initially refused to believe them. Robert McEliece later described the community's reaction as disbelief giving way to astonishment. The iterative decoder was not derived from first principles but was discovered experimentally; its rigorous interpretation as the sum-product algorithm on a loopy factor graph was given by McEliece, MacKay, and Cheng in 1998. This was the event that rekindled interest in Gallager's 1962 LDPC codes, launched iterative receiver design as a discipline, and ultimately placed message passing at the centre of modern physical-layer design.

Definition:

Parallel Concatenated Convolutional Code (PCCC)

A parallel concatenated convolutional code with interleaver Π\boldsymbol{\Pi} of length KK encodes an information sequence u{0,1}K\mathbf{u} \in \{0,1\}^K as follows. Let C1\mathcal{C}_1 and C2\mathcal{C}_2 denote two recursive systematic convolutional (RSC) component encoders.

  • Pass u\mathbf{u} through C1\mathcal{C}_1 to obtain parity sequence p(1)\mathbf{p}^{(1)}.
  • Pass Πu\boldsymbol{\Pi}\mathbf{u} through C2\mathcal{C}_2 to obtain parity sequence p(2)\mathbf{p}^{(2)}.

The codeword is c=(u,p(1),p(2))\mathbf{c} = (\mathbf{u}, \mathbf{p}^{(1)}, \mathbf{p}^{(2)}), giving a rate-1/31/3 code. Higher rates are obtained by puncturing parity bits. The encoder is systematic because the information sequence u\mathbf{u} appears verbatim in the codeword.

The RSC structure is essential: it ensures that isolated weight-one input patterns generate infinite-weight parity sequences, which is what couples the two encoders through the interleaver and gives turbo codes their excellent distance spectrum.

Turbo Encoder and Iterative Decoder

Turbo Encoder and Iterative Decoder
Top: parallel concatenation of two RSC encoders separated by an interleaver Π\boldsymbol{\Pi}. Bottom: the iterative decoder. Each SISO MAP decoder consumes a-priori LLRs from its peer (via Π\boldsymbol{\Pi} or Π1\boldsymbol{\Pi}^{-1}) and produces extrinsic LLRs back to it.

Definition:

A-priori, A-posteriori, and Extrinsic LLRs

Fix a binary random variable X{+1,1}X \in \{+1, -1\} representing a coded bit. A SISO decoder receives channel observations y\mathbf{y} and a-priori beliefs about XX supplied by another decoder. Define the three LLRs:

Lch=logp(yX=+1)p(yX=1),LA=logPr(X=+1)Pr(X=1),L_{ch} = \log\frac{p(\mathbf{y}|X=+1)}{p(\mathbf{y}|X=-1)}, \qquad L_A = \log\frac{\Pr(X=+1)}{\Pr(X=-1)},

LD=logPr(X=+1y)Pr(X=1y).L_D = \log\frac{\Pr(X=+1|\mathbf{y})}{\Pr(X=-1|\mathbf{y})}.

The extrinsic LLR is what the decoder learned beyond the channel observation of XX itself and beyond the a-priori input:

LE=LDLALch.L_E = L_D - L_A - L_{ch}.

Only LEL_E may be passed as a-priori input to a peer decoder; reusing LDL_D would double-count information and destroy the iterative dynamics.

This separation is the algebraic heart of the turbo principle. When two decoders share extrinsic information through an interleaver, the interleaver decorrelates the messages so that each decoder receives information it could not have computed from its own observations.

Iterative Turbo Decoder

Complexity: O(TmaxKS)O(T_{\max} \cdot K \cdot |\mathcal{S}|) where S|\mathcal{S}| is the trellis state count
Input: Channel LLRs for systematic bits Lchu\mathbf{L}_{ch}^{\mathbf{u}}
and for the two parity sequences Lch(1),Lch(2)\mathbf{L}_{ch}^{(1)}, \mathbf{L}_{ch}^{(2)};
interleaver Π\boldsymbol{\Pi}; maximum iterations TmaxT_{\max}.
Output: Hard decisions u^\hat{\mathbf{u}}.
1. Initialize a-priori LLRs LA(1)0\mathbf{L}_A^{(1)} \leftarrow \mathbf{0}.
2. for t=1,,Tmaxt = 1, \ldots, T_{\max} do
3. \quad Run BCJR on C1\mathcal{C}_1 with inputs
(Lchu+LA(1),Lch(1))(\mathbf{L}_{ch}^{\mathbf{u}} + \mathbf{L}_A^{(1)}, \mathbf{L}_{ch}^{(1)}).
4. \quad Extract extrinsic LE(1)\mathbf{L}_E^{(1)} on the info bits.
5. \quad Set LA(2)ΠLE(1)\mathbf{L}_A^{(2)} \leftarrow \boldsymbol{\Pi}\,\mathbf{L}_E^{(1)}.
6. \quad Run BCJR on C2\mathcal{C}_2 with inputs
(ΠLchu+LA(2),Lch(2))(\boldsymbol{\Pi}\mathbf{L}_{ch}^{\mathbf{u}} + \mathbf{L}_A^{(2)}, \mathbf{L}_{ch}^{(2)}).
7. \quad Extract extrinsic LE(2)\mathbf{L}_E^{(2)}.
8. \quad Set LA(1)Π1LE(2)\mathbf{L}_A^{(1)} \leftarrow \boldsymbol{\Pi}^{-1}\,\mathbf{L}_E^{(2)}.
9. \quad if stopping criterion met then break.
10. end for
11. Form LDLchu+LA(1)+LE(1)\mathbf{L}_D \leftarrow \mathbf{L}_{ch}^{\mathbf{u}} + \mathbf{L}_A^{(1)} + \mathbf{L}_E^{(1)}.
12. return u^=sign(LD)\hat{\mathbf{u}} = \text{sign}(\mathbf{L}_D).

Each BCJR call is a two-sweep forward-backward recursion on the component trellis. The extrinsic extraction in steps 4 and 7 subtracts the inputs that came from outside (a-priori plus channel LLR on the information bit) from the a-posteriori LLR.

Theorem: Turbo Decoding as Loopy Belief Propagation

The iterative turbo decoder of Algorithm AIterative Turbo Decoder is exactly the sum-product (belief propagation) algorithm applied to the factor graph of the PCCC, with flooding schedule and messages represented as log-likelihood ratios. The factor graph has cycles of length at least equal to the interleaver girth; turbo decoding is therefore an instance of loopy belief propagation.

Each BCJR call computes exact bitwise marginals on a tree (the trellis of one component code). The interleaver couples the trees into a single loopy graph. Passing extrinsic LLRs is precisely passing the messages that sum-product would pass between the two trees along the edges they share.

Key Takeaway

Turbo decoding is loopy belief propagation on the PCCC factor graph with messages expressed as LLRs and updated by BCJR within each component trellis. The only information the component decoders exchange is extrinsic, so the interleaver can decorrelate successive iterations and the decoder behaves as if the graph were locally a tree.

Why EXIT Charts?

Loopy BP is not guaranteed to converge to the true posterior, and even when it does the rate of convergence can be hard to predict. Ten Brink (2001) observed that for long interleavers the distribution of extrinsic LLRs at each iteration is, to a good approximation, symmetric Gaussian. Under this assumption each SISO block is characterized by a one-dimensional transfer function mapping input mutual information to output mutual information. Composing the transfer functions of the two decoders produces the extrinsic information transfer (EXIT) chart, a graphical tool that predicts convergence thresholds within fractions of a dB.

Definition:

The JJ-Function

Let LL be a real-valued LLR with distribution consistent with the symmetric Gaussian model: conditional on X=+1X = +1, LN(σ2/2,σ2)L \sim \mathcal{N}(\sigma^2/2, \sigma^2), and conditional on X=1X = -1, LN(σ2/2,σ2)L \sim \mathcal{N}(-\sigma^2/2, \sigma^2), with XX equiprobable. Define

J(σ)    I(X;L)=1e(σ2/2)2/(2σ2)2πσ2log2 ⁣(1+e)d.J(\sigma) \;\triangleq\; I(X; L) = 1 - \int_{-\infty}^{\infty} \frac{e^{-(\ell - \sigma^2/2)^2/(2\sigma^2)}}{\sqrt{2\pi\sigma^2}} \log_2\!\big(1 + e^{-\ell}\big)\,d\ell.

The function JJ is continuous, strictly increasing from J(0)=0J(0) = 0 to limσJ(σ)=1\lim_{\sigma\to\infty} J(\sigma) = 1, and hence invertible. It translates a Gaussian LLR variance into the mutual information carried by the LLR.

A widely used numerical approximation of JJ and its inverse was given by ten Brink and Ashikhmin–Kramer–ten Brink; the Hamming-distance symmetry of coded binary channels makes the consistency condition E[LX=+1]=Var(L)/2\mathbb{E}[L|X=+1] = \text{Var}(L)/2 natural.

Definition:

EXIT Function of a SISO Block

Consider a SISO block (a decoder or equalizer) that receives a-priori LLRs LAL_A modelled as symmetric Gaussian with input mutual information IAI_A, and observations y\mathbf{y} from a channel parameterized by SNR ρ\rho. The EXIT transfer function is

T(IA;ρ)    I(X;LEIA,ρ),T(I_A; \rho) \;\triangleq\; I(X; L_E \mid I_A, \rho),

where LEL_E is the extrinsic LLR produced by the block and the mutual information is computed assuming LAL_A follows the symmetric Gaussian model with J1(IA)J^{-1}(I_A) standard deviation. For a convolutional decoder Tdec(IA)T_{\text{dec}}(I_A) is typically estimated by Monte Carlo using a long random codeword.

The symmetric-Gaussian assumption on LAL_A is a consistency condition that is preserved under interleaving and BCJR for long blocks. It is not exact — it is an idealization whose accuracy improves with interleaver length.

Theorem: EXIT Chart Prediction of Decoding Threshold

Let T1T_1 and T2T_2 be the EXIT transfer functions of the two component decoders at channel SNR ρ\rho. Under the symmetric-Gaussian message assumption, the trajectory of the turbo decoder starting from IA=0I_A = 0 is IA(t+1)=T2 ⁣(T1(IA(t);ρ);ρ),t=0,1,I_A^{(t+1)} = T_2\!\big(T_1(I_A^{(t)}; \rho); \rho\big), \quad t = 0, 1, \ldots The decoder converges to IA=1I_A = 1 (zero BER) if and only if T1(I;ρ)>T21(I;ρ)T_1(I; \rho) > T_2^{-1}(I; \rho) for all I[0,1)I \in [0, 1), i.e., the curve T1T_1 lies strictly above the mirrored curve T21T_2^{-1} on the EXIT diagram. The turbo cliff (waterfall SNR) is the smallest ρ\rho at which the two curves just separate.

The staircase trajectory visualizes the composition T2T1T_2 \circ T_1 iterated from zero. If the EXIT curves cross (intersect) the trajectory gets stuck at the intersection — this is the pinch point that determines the threshold.

EXIT Chart for Rate-1/21/2 Turbo Code

Explore how the EXIT curves of the two RSC component decoders depend on the channel SNR. The "tunnel" between the curves determines whether the iterative decoder can reach IE=1I_E = 1. When the tunnel closes, the decoder stalls (this is the turbo cliff).

Parameters
0.7

Channel SNR

Component code constraint length $K = m+1$

Example: Reading the Threshold from an EXIT Chart

A turbo code uses two identical RSC(1,5/7)8(1, 5/7)_8 encoders (memory m=2m=2) at rate R=1/2R = 1/2 after puncturing. The EXIT functions at channel Eb/N0E_b/N_0 are denoted T(IA;Eb/N0)T(I_A; E_b/N_0). At Eb/N0=0.5E_b/N_0 = 0.5 dB the curves TT and T1T^{-1} cross at I=0.62I = 0.62; at 0.70.7 dB they just touch at I=0.78I = 0.78; at 0.90.9 dB there is an open tunnel. Estimate the decoding threshold and predict the qualitative BER behaviour at these three SNRs.

Turbo Decoder BER vs Iteration Count

Simulated BER of a rate-1/21/2 turbo code versus the number of decoding iterations, at several Eb/N0E_b/N_0 values. Above the turbo cliff BER drops by several decades; below it BER stalls.

Parameters
0.7
15

EXIT Chart Staircase Trajectory

Animation of the iterative decoder trajectory climbing the staircase between the two EXIT curves. When the tunnel is open, the staircase reaches (1,1)(1,1); when it closes, the staircase hits the wall.
The horizontal and vertical moves alternate between decoder 1's map T1T_1 and the mirrored map T21T_2^{-1}. Convergence is the squeezing between these two curves.

Common Mistake: Do Not Feed Back the A-Posteriori LLR

Mistake:

A common implementation bug is to feed the a-posteriori LLR LD=LA+LE+LchL_D = L_A + L_E + L_{ch} back to the peer decoder instead of the extrinsic LLR LEL_E.

Correction:

The peer decoder already has LchL_{ch} for the systematic bits and supplied LAL_A itself in the previous iteration. Re-including these causes positive feedback that drives LLRs to unbounded magnitudes, produces overconfident wrong decisions, and breaks the EXIT analysis. Always subtract the inputs before passing to the peer: LE=LDLALchL_E = L_D - L_A - L_{ch}.

Common Mistake: Gaussian LLR Assumption Fails for Short Blocks

Mistake:

EXIT charts can mislead when the interleaver is short: the symmetric-Gaussian model for LAL_A is violated and the predicted threshold may be 1 dB or more optimistic.

Correction:

For interleavers below roughly K=1000K = 1000, validate threshold predictions with Monte Carlo simulation. For very short blocks (e.g., K128K \leq 128 in 5G control channels) use the actual LLR histograms, PEXIT charts for punctured codes, or direct finite-length simulation.

🔧Engineering Note

Turbo Codes in LTE and the Transition to LDPC/Polar in 5G

LTE (3GPP Release 8, 2008) adopted rate-1/31/3 parallel turbo codes with memory-33 RSC components and a quadratic-polynomial-permutation (QPP) interleaver. Block lengths range from 4040 to 61446144 bits. Standard decoders use max-log-MAP with scaling factor 0.70.7 to approximate MAP while keeping hardware simple; typically 6688 iterations.

5G NR (Release 15, 2018) replaced turbo codes with LDPC for the data channel (PDSCH/PUSCH) and polar codes for control. The reasons were primarily practical: LDPC decoders parallelize better for multi-Gbps throughput, have lower error floors at high rates, and support flexible rate-matching via HARQ. Turbo codes retain a role in earlier 3GPP releases, DVB-RCS2, and space communications (CCSDS 131.0-B).

Practical Constraints
  • LTE turbo: K{40,,6144}K \in \{40, \ldots, 6144\}, 188 distinct block sizes with QPP interleavers

  • Max-log-MAP with scaling factor α0.7\alpha \approx 0.7 loses 0.1\approx 0.1 dB vs true MAP

  • Typical LTE decoders: 6–8 iterations, early stopping via CRC

📋 Ref: 3GPP TS 36.212 §5.1.3
🎓CommIT Contribution(2004)

EXIT-Chart Design of Multi-Edge-Type Concatenated Schemes

G. Caire, G. Taricco, E. BiglieriIEEE Trans. Information Theory, vol. 44, no. 3

The bit-interleaved coded modulation (BICM) analysis by Caire, Taricco and Biglieri was a forerunner of EXIT-based iterative receiver design. It demonstrated that treating the demapper and decoder as two SISO blocks separated by a bit interleaver yields a parallel-channel model whose capacity can be approached by iterative BICM-ID. The mutual-information decomposition exploited there — channel MI split into a SISO transfer function on each edge — is exactly the tool EXIT charts formalize. This work directly informs modern EXIT-chart design of concatenated codes with higher-order modulation.

bicmexit-chartiterative-demappingView Paper →

Turbo Cliff

The steep drop in bit error rate that occurs near a critical channel SNR when a turbo or iterative receiver transitions from stalled iterations to convergent ones. The threshold SNR is the one at which the EXIT tunnel first opens.

Related: EXIT Chart, Extrinsic LLR

EXIT Chart

A two-dimensional plot of the extrinsic mutual information output by a SISO block against its a-priori mutual information input. Composing the EXIT curves of two SISO blocks predicts the convergence of their iterative composition.

Related: Turbo Cliff

Extrinsic LLR

The log-likelihood ratio of a coded bit obtained by subtracting a-priori and direct channel contributions from the a-posteriori LLR. Passing only extrinsic information between SISO blocks prevents double-counting and is the algebraic basis of the turbo principle.

Related: Turbo Cliff

Why This Matters: Turbo Codes and Hybrid ARQ

The rate-compatible puncturing of turbo codes is ideally matched to incremental-redundancy HARQ: the transmitter sends a high-rate punctured codeword first, and on NACK appends additional parity bits. The receiver concatenates the soft channel LLRs from all transmissions and runs one turbo decoding. This is the basis of 3GPP HSPA and LTE HARQ-IR.

See full treatment in Chapter 22

Quick Check

Suppose two EXIT curves T1(I)T_1(I) and T21(I)T_2^{-1}(I) cross at I=0.4I = 0.4 at a given SNR. What is the predicted outcome of iterative turbo decoding?

BER drops to near-zero within a few iterations.

The trajectory is trapped at I0.4I \approx 0.4; BER stalls well above zero.

The decoder diverges: LLR magnitudes grow without bound.

Convergence depends on the interleaver but not on the SNR.

Quick Check

Given channel LLR Lch=1.2L_{ch} = 1.2, a-priori LLR LA=0.8L_A = 0.8, and a-posteriori LLR LD=3.5L_D = 3.5 for a systematic bit, what is the extrinsic LLR that should be passed to the peer decoder?

LE=3.5L_E = 3.5

LE=1.5L_E = 1.5

LE=2.7L_E = 2.7

LE=5.5L_E = 5.5

Quick Check

The rigorous interpretation of iterative turbo decoding as loopy belief propagation on the PCCC factor graph was given by:

Berrou, Glavieux, and Thitimajshima (1993)

Gallager (1962)

McEliece, MacKay, and Cheng (1998)

ten Brink (2001)