Channel Coding

BCJR Algorithm

/bee-see-jay-ahr/
A maximum a posteriori (MAP) decoding algorithm (Bahl, Cocke, Jelinek, Raviv, 1974) that computes the posterior probability of each transmitted bit given the entire received sequence. Uses forward (α) and backward (β) trellis recursions with branch metrics (γ). Produces exact soft-output LLRs essential for turbo code iterative decoding. Practical variants: Log-MAP (exact, log domain) and Max-Log-MAP (~0.2 dB loss, simpler). Foundation of 3G/4G turbo decoding and 5G LDPC belief propagation.
Type: MAP bit-level
Complexity: O(N×2v)×2
Output: Soft LLR

Understanding the BCJR Algorithm

The BCJR algorithm was published in 1974 but remained largely academic until the invention of turbo codes in 1993 by Berrou, Glavieux, and Thitimajshima. Turbo codes use two BCJR decoders that exchange soft information iteratively, approaching the Shannon capacity limit within 0.5 to 1.0 dB. The key insight is that BCJR produces exact posterior probabilities for each bit, not just the most likely sequence (which Viterbi provides).

The difference between "most likely sequence" (Viterbi) and "most likely bit" (BCJR) becomes critical in iterative decoding. Soft LLR outputs from BCJR serve as prior information for the next decoder iteration. Each iteration refines the probability estimates, progressively eliminating uncertainty until the decoder converges to the correct codeword.

BCJR Recursions

Forward Recursion:
αk(s) = ∑s' αk−1(s') × γk(s',s)

Backward Recursion:
βk(s) = ∑s' βk+1(s') × γk+1(s,s')

LLR Output:
L(dk) = ln[∑d=1 αγβ] − ln[∑d=0 αγβ]

Log-MAP (practical):
ln(ea+eb) = max(a,b) + ln(1+e−|a−b|)
Max-Log-MAP: drop correction term (−0.2 dB)

Decoding Algorithm Comparison

AlgorithmCriterionOutputPassesUsed In
ViterbiML sequenceHard / SOVA1 (forward)3G conv., GSM
BCJR (MAP)MAP bitExact soft LLR2 (fwd + bwd)Turbo (3G/4G)
Max-Log-MAPApprox MAPApprox soft LLR2HW turbo decoders
Belief Prop.MAP (graph)Soft LLRIterativeLDPC (5G, Wi-Fi)
Common Questions

Frequently Asked Questions

How does BCJR work?

Three passes on trellis: forward (α), backward (β), combine with branch metrics (γ). Computes posterior probability per bit. LLR = ln(P1/P0). Log-MAP uses log domain. Max-Log-MAP approximates (~0.2 dB loss).

BCJR vs. Viterbi?

Viterbi: most likely sequence, 1 pass, hard/SOVA output. BCJR: most likely bit, 2 passes, exact soft LLR. BCJR = 2x complexity. Standalone: <0.1 dB difference. Iterative: BCJR converges within 0.5 to 1.0 dB of Shannon.

Modern RF applications?

3G/4G turbo decoder (6 to 8 iterations). DVB-RCS2 satellite. LDPC belief propagation (generalized BCJR). Turbo equalization. MIMO joint detection-decoding. Every modern iterative receiver derives from BCJR.

Channel Coding

Precision RF Components

RF Essentials provides precision terminations and custom waveguide assemblies for digital communication test systems and receiver evaluation platforms.

Request a Quote