Iterative Demapping: Closing the BICM Loop

The Open Loop in One-Shot BICM

Look back at the BICM receiver of Chapter 5. A channel observation yy enters the demapper, which produces LL soft per-bit LLRs λ(y)\lambda_\ell(y), one per label bit. The deinterleaver sends these LLRs to a SISO decoder, which produces per-bit a posteriori LLRs and decisions. At that point the receiver stops. The decoder's a posteriori output — which contains information the demapper did not have — is DISCARDED before it can help the demapper do a better job on the same observation.

This is exactly the suboptimality argument that motivated the whole Chapter 5 discussion of CBICM(μ)CCMC_{\rm BICM}(\mu) \le C_{\rm CM}. The BICM demapper treats each label bit as independent, because it has no reason to believe the bits are correlated; but the binary code MAKES them correlated, and the decoder knows that correlation. If the demapper could exploit what the decoder knows, its per-bit LLRs would be sharper, and the decoder would then produce sharper outputs, and so on. That feedback loop is BICM with Iterative Decoding (BICM-ID), introduced independently by Li–Ritcey and by ten Brink–Speidel–Yan in 1997–1998. The point is simple: nothing in the demapper computation λ(y)=logsX(0)p(ys)logsX(1)p(ys)\lambda_\ell(y) = \log \sum_{s \in \mathcal{X}_\ell^{(0)}} p(y \mid s) - \log \sum_{s \in \mathcal{X}_\ell^{(1)}} p(y \mid s) prevents us from incorporating a priori bit probabilities into the sums. Doing so gives a refined LLR; passing the refinement through the decoder gives an even better one; iterating closes the gap to CM capacity.

What is new is not any single computation — the demapper with a priori and the SISO decoder both existed before BICM-ID — but the ARCHITECTURE: the extrinsic information exchanged between the two boxes, iterated to a fixed point. The analysis of that iteration is the content of this chapter.

Definition:

Demapper with A Priori Information

Let b=(b0,,bL1){0,1}L\mathbf{b} = (b_0, \ldots, b_{L-1}) \in \{0,1\}^L be the label of a transmitted constellation symbol s=μ(b)s = \mu(\mathbf{b}), and let λA=(λA,0,,λA,L1)\lambda_A = (\lambda_{A,0}, \ldots, \lambda_{A,L-1}) be the vector of a-priori LLRs supplied to the demapper (one per label bit, from the decoder in the previous iteration). The demapper with a priori computes, for each bit position \ell, λ(y;λA)logsX(0)p(ys)kP(bk=μk1(s)λA,k)sX(1)p(ys)kP(bk=μk1(s)λA,k),\lambda_\ell(y; \lambda_A) \triangleq \log \frac{\sum_{s \in \mathcal{X}_\ell^{(0)}} p(y \mid s) \cdot \prod_{k \ne \ell} P(b_k = \mu^{-1}_k(s) \mid \lambda_{A,k})} {\sum_{s \in \mathcal{X}_\ell^{(1)}} p(y \mid s) \cdot \prod_{k \ne \ell} P(b_k = \mu^{-1}_k(s) \mid \lambda_{A,k})}, where P(bk=cλA,k)=1/(1+exp((12c)λA,k))P(b_k = c \mid \lambda_{A,k}) = 1/(1 + \exp((1 - 2c)\lambda_{A,k})) is the Bernoulli probability induced by the a-priori LLR, and μk1(s)\mu^{-1}_k(s) is the kk-th label bit of ss.

Two limiting cases check the definition: if all λA,k=0\lambda_{A,k} = 0, the a-priori probabilities are uniform and the formula reduces to the one-shot BICM LLR of Ch. 5. If λA,k±\lambda_{A,k} \to \pm\infty for all kk \ne \ell, the sums collapse to a single term and λ(y;λA)\lambda_\ell(y; \lambda_A) becomes the CM max-log LLR against the known symbol — the demapper has become a genie.

,

Definition:

Extrinsic Information

At any SISO box — demapper or decoder — the input is a vector of a-priori LLRs λA\lambda_A and a set of channel observations, and the output is a vector of a-posteriori LLRs λout\lambda_{\rm out}. The extrinsic LLR at bit position \ell is λE,λout,λA,.\lambda_{E,\ell} \triangleq \lambda_{\rm out, \ell} - \lambda_{A,\ell}. Equivalently, λE,\lambda_{E,\ell} is the log-likelihood ratio of bb_\ell given ALL OTHER evidence — the channel observations and the a-priori LLRs of all bits kk \ne \ell. The extrinsic component is the "new" information the box has produced; subtracting λA,\lambda_{A,\ell} is what prevents the iterative scheme from feeding a box its own previous output back to itself, which would create a positive-feedback loop.

The extrinsic/a-priori decomposition is one of the great conceptual inventions of iterative coding theory. It works because LLRs add under independence, so subtracting the a-priori from the a-posteriori yields the contribution of everything BUT that a-priori. In BICM-ID the decoder extrinsic LLRs become the demapper's a-priori LLRs in the next iteration, and vice versa — a strict separation that turns a feedback system into an iteration between two well-defined maps.

,

BICM-ID Iteration (Single Pass)

Complexity: Per iteration: demapper is O(NM)O(N \cdot M) with M=2LM = 2^L constellation points (or O(NL)O(N \cdot L) with max-log and smart subset indexing); SISO decoder depends on the code (BCJR: O(N2ν)O(N \cdot 2^\nu) for ν\nu-state convolutional; LDPC BP: O(Ndc)O(N \cdot d_c) per iteration). Total cost is the per-iteration cost times TmaxT_{\max}, typically 5–10 outer iterations in practice.
Input: channel observations y_1, ..., y_N
a-priori LLR vector from decoder: lambda_A_dec (initialised to 0)
constellation X, labelling mu, bit subsets X_ell^(b)
SISO decoder for outer code C
maximum iteration count T_max
for t = 0, 1, ..., T_max - 1:
# ---- Demapper box ----
for each symbol index i = 1, ..., N:
for each label bit position ell = 0, ..., L - 1:
# a-priori for THIS bit comes from decoder; pass ALL others forward
lambda_dem_ell(y_i; lambda_A_dec)
= log [ sum over s in X_ell^(0) of
p(y_i | s) * prod_{k != ell} P(b_k = mu_k^{-1}(s) | lambda_A_dec) ]
- log [ same with X_ell^(1) ]
lambda_E_dem(i, ell) = lambda_dem_ell - lambda_A_dec(i, ell)
# lambda_E_dem is now the EXTRINSIC demapper output
# It becomes the a-priori for the decoder:
lambda_A_dec_interleaved = lambda_E_dem
# ---- Deinterleave ----
lambda_A_dec = pi^{-1}(lambda_A_dec_interleaved)
# ---- Decoder box ----
(lambda_out_dec, lambda_E_dec) = SISO_decode(lambda_A_dec, code C)
# Check stopping criterion (CRC or max iterations)
if CRC_passes(hard_decision(lambda_out_dec)):
return hard_decision(lambda_out_dec)
# ---- Interleave extrinsic for next demapper pass ----
lambda_A_dec = pi(lambda_E_dec)
return hard_decision(lambda_out_dec)

The structure is a serial concatenation: demapper (inner) and decoder (outer). The interleaver π\pi randomises the bit order between them and is essential for making the extrinsic-information assumption of independence approximately valid. Without a long enough interleaver, bits correlated inside a code constraint get mapped to neighbouring constellation positions and the extrinsic information becomes contaminated by its own past — the classical iterative-decoder convergence failure.

BICM-ID Receiver Block Diagram

BICM-ID Receiver Block Diagram
Receiver architecture for BICM-ID. The demapper outputs extrinsic LLRs, which after deinterleaving become the decoder's a-priori input. The decoder produces extrinsic LLRs in turn, which after interleaving become the demapper's a-priori input for the next pass. Subtraction of the a-priori from the a-posteriori at each box's output is what enforces the extrinsic-only exchange — feeding a box its own previous output would create a positive-feedback loop (cf. pitfall below).

Theorem: Fixed-Point Rate of a Converged BICM-ID Receiver

Consider BICM-ID with a binary linear code CC of rate RR and a labelling μ\mu on a memoryless channel with input SNR. Assume the Gaussian-LLR model holds (s02) and the interleaver is long. Let (IA,IE)(I_A^*, I_E^*) be a fixed point of the iteration — i.e., a point satisfying IE=Tdem(IA,SNR)I_E^* = T_{\mathrm{dem}}(I_A^*, \mathrm{SNR}) and IA=Tdec(IE,R)I_A^* = T_{\mathrm{dec}}(I_E^*, R). If (IA,IE)=(1,1)(I_A^*, I_E^*) = (1, 1), the receiver achieves arbitrarily low BER and the effective information rate through the combined channel is RR. If the only fixed point strictly below (1,1)(1, 1) is attracting, the iteration stalls there and the BER is bounded away from zero.

A fixed point is where the two maps cross. The iteration walks from (0,0)(0, 0) — no a priori, no extrinsic — up the staircase until it hits a crossing. If the crossing is (1,1)(1, 1), the code's bits are all perfectly known and the BER is zero. If it is anything less, the bits are only partially known and there is an error floor. All the BICM-ID design story is about arranging the two curves so that the FIRST crossing encountered on the way up is (1,1)(1, 1) itself.

,

Why Extrinsic — Not A Posteriori

The subtraction λE=λoutλA\lambda_E = \lambda_{\rm out} - \lambda_A is not a mere bookkeeping convention. It is the MECHANISM that prevents BICM-ID from becoming a runaway positive-feedback system. If the demapper received λout\lambda_{\rm out} from the decoder (the full a-posteriori), it would effectively be counting the channel observation twice: once directly through p(ys)p(y \mid s), and a second time through the a-priori term, which the decoder computed FROM that same p(ys)p(y \mid s). The "new" estimate would merely re-emphasise the old one, and after a few iterations every bit would be declared confident and wrong in equal measure. Passing only the extrinsic part keeps each iteration honest: the demapper learns from code structure (via the decoder's extrinsic), not from its own prior LLR.

This is the same principle that makes turbo decoding work, and it generalises to turbo equalisation, iterative MIMO detection, and iterative source-channel decoding. Memorise it.

Common Mistake: Feeding the A-Posteriori Back (Positive Feedback)

Mistake:

In a first implementation, it is tempting to simplify the BICM-ID receiver by feeding the decoder's a-posteriori LLRs back to the demapper — after all, these are "the best estimates we have" of the coded bits. Surely using better a priori can only help?

Correction:

The a-posteriori LLR for bit bb_\ell contains the CHANNEL observation yy (through the demapper) plus the code-induced cross-information from the other bits. Feeding it back as a-priori to the demapper makes the demapper multiply by P(bλA)P(b \mid \lambda_A), which already contains p(ys)p(y \mid s) — the channel is now counted twice. The iteration no longer tracks MI correctly: confidence inflates without justification, LLRs diverge to ±\pm \infty, and decisions become arbitrary. The correct quantity to exchange is the EXTRINSIC part λE=λoutλA\lambda_E = \lambda_{\rm out} - \lambda_A, which removes the double-counted contribution. Every EXIT-chart analysis, every density-evolution proof, every convergence theorem in this chapter relies on extrinsic feedback. Posterior feedback is a bug.

Example: Demapper-with-A-Priori for QPSK with Gray Labelling

Consider QPSK with Gray labelling μG\mu_G: the four constellation points are s=(±1±j)/2s = (\pm 1 \pm j)/\sqrt{2} with labels (b0,b1){00,01,11,10}(b_0, b_1) \in \{00, 01, 11, 10\}. The channel is AWGN, y=s+wy = s + w, wCN(0,2σ2)w \sim \mathcal{CN}(0, 2\sigma^2). The decoder supplies a-priori LLRs λA=(λA,0,λA,1)\lambda_A = (\lambda_{A,0}, \lambda_{A,1}). Compute the demapper extrinsic LLR λE,0(y;λA)\lambda_{E,0}(y; \lambda_A) for bit 0.

Example: Demapper-with-A-Priori for 16-QAM with Set-Partition Labelling

Consider 16-QAM with the set-partition labelling μSP\mu_{\rm SP}: the MSB bit splits the constellation into two 8-point QAM lattices of large minimum distance, and successively finer bits resolve inside each subset. Suppose the decoder supplies an a-priori LLR λA,0=+\lambda_{A,0} = +\infty for the MSB (perfect knowledge that bit 0 = 0). Describe what the demapper LLRs for bits 1, 2, 3 become, and contrast with the case λA,0=0\lambda_{A,0} = 0.

Quick Check

In BICM-ID, what is exchanged between the demapper and the decoder on each iteration?

The channel LLRs (demapper computes them once and decoder reuses them every iteration).

The full a-posteriori LLRs from each box.

The extrinsic LLRs: a-posteriori minus a-priori at each box's output.

The hard decisions after each decoder pass.

Key Takeaway

BICM-ID is a two-box serial iteration with extrinsic-only exchange. The demapper with a priori sharpens per-bit LLRs using the code's cross-bit correlations (via decoder extrinsic), and the SISO decoder sharpens a-posteriori LLRs using the refined per-bit LLRs (via demapper extrinsic). Subtracting the a-priori at each output is what keeps the iteration from double-counting. Gray labelling gets nothing from the loop — it fully decouples bits already. Set-partition labelling gets a lot — it concentrates bit information and the loop unlocks the concentration.

Why This Matters: BICM-ID in DVB-S2X Very-Low-SNR Modes

The DVB-S2X standard extends DVB-S2 with a set of very-low-SNR MODCODs (down to QPSK at rate 2/92/9, an operating Es/N0E_s/N_0 near 2.85-2.85 dB) for sub-1 m satellite terminals in tropical-scintillation environments. At these SNRs, the one-shot BICM receiver leaves several tenths of a dB on the table relative to CM capacity — enough that the standard includes an optional iterative demapping mode. The receiver performs 3–5 passes between the APSK demapper and the LDPC decoder before declaring a codeword. In practice this closes about 0.3 dB of the gap on the VL-SNR modes and pushes the link budget just over the rain-fade edge that the system was designed for.

Extrinsic Information

At any soft-in/soft-out decoding box, the extrinsic LLR for a bit is the a-posteriori LLR minus the a-priori LLR for that same bit. It represents the box's learning — the information contributed by the box from sources other than its own input for that bit. In BICM-ID, extrinsic LLRs are the only quantity exchanged between demapper and decoder, to prevent positive feedback.

Related: A Posteriori Llr, Siso Decoding, Turbo Principle

BICM-ID (Bit-Interleaved Coded Modulation with Iterative Decoding)

A BICM receiver architecture that iterates between a demapper-with- a-priori and a soft-in/soft-out decoder, exchanging extrinsic information through a bit interleaver. Introduced by Li and Ritcey (1997) and ten Brink–Speidel–Yan (1998), BICM-ID can close most of the gap between BICM capacity and CM capacity when combined with a set-partition (or similar) labelling.

Related: The Open Loop in One-Shot BICM, Iterative Decoding, Exit Chart