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...