Demo

Trellis Path Enumerator

Models $L$ preamble zeros, $N$ message bits and $L$ tail zeros. The symbol spacing $\tau_k$ depends on $b_k, b_{k-1}$ for $k = 2..K_{total}$; peaks follow $p_k = p_{k-1} + \tau_k \cdot f_s$.

M-BCJR demo (N = 3, L = 2 only):

Transmit Signal (Tx)

Received Signal (Rx @ MF Output)

Overall Pulse Shape (g(t))

Key Max-Log-BCJR formulas

State: $s_k$, Previous State: $s'$, Input Bit: $b_k$, Received Sample(s): $y_k$

Branch Metric: $\log \gamma_k(s', s) \approx \log P(y_k | s', s) + \log P(b_k)$

Forward ($\alpha$): $\log \alpha_k(s) = \max_{s' \to s} \{ \log \alpha_{k-1}(s') + \log \gamma_k(s', s) \}$

Backward ($\beta$): $\log \beta_k(s') = \max_{s \mid s' \to s} \{ \log \beta_{k+1}(s) + \log \gamma_{k+1}(s', s) \}$

LLR: $LLR(b_k) = \Lambda_1 - \Lambda_0$, where $\Lambda_i = \max_{s',s | b_k=i} \{ \log \alpha_{k-1}(s') + \log \gamma_k(s', s) + \log \beta_k(s) \}$

All valid paths (Ktotal = L+N+L = input symbols)

Click "Generate" to see paths...