Channel Code Display Fix complexity
WIFI Convolutional Code
with Viterbi Decoder
5G LDPC Code
with SPA decoder max. iterations:
5G Polar Code
with SCL decoder list size:
LTE Turbo Code
BCJR-based with iterations:
This interactive website provides a new perspective on channel coding and the code families used in telecommunication standards.
Sionna™ and AFF3CT are open source libraries that provide fast simulators and helpful tools for physical layer research and channel coding.
Bit-error-rate (BER) performance
For reliable communication over a channel (e.g. a target bit error rate of $10^{-4}$) a certain minimal SNR is required depending on the type of channel code, the decoding algorithm, the codewordlength N and the coderate R. The figure on the right shows the BER curve for the selected parameters.
Decoding Complexity
It is not always possible to state a general decoding complexity for a given code family since different methods for decoding may be possible. However, we compare codes under the assumption of a given decoding algorithm implementation. The complexities are calculated as stated below.
Beach plots and island plots
A novel type of plot is introduced in order to view different codes from a new perspective. For a given channel coding setup the gap between the SNR defined by the channel capacity and the required SNR for different combinations of R and N is displayed. This can be helpful to view strengths and weaknesses of state of the art channel coding methods and simplifies comparison.
Benchmark your own codes
You can upload your own data (example.csv, minimum three points) and plot the evaluation. Hovering over points will show details and update the BER plot. Interpolation may be used to compare the codes even when the rate or length do not exactly match.
How to cite
    author = {Bezner, Paul and Geiselhart, Marvin},
    title = {{CoComBA: A Code Comparison and Benchmarking Assistant}},
    howpublished = "\url{}",
    year = {2023}
The decoding complexity is measured in fixed point operations per information bit. In the following let $n_{\mathrm{it}}$ denote the number of decoding iterations and $L$ denote the list size for list decoding.
The complexity of the min-sum SPA decoder is given as $C_{\mathrm{SPA}}\approx n_{\mathrm{it}}\cdot\frac{1}{K}\left(\sum_{i=1}^{N+2Z}2w_{\mathrm{row},i}+\sum_{j=1}^{N-K+2Z}2w_{\mathrm{col},j}\right)$,
where $w_{\mathrm{col},j}$ and $w_{\mathrm{row},i}$ denote the column and row weights of the parity check matrix $H$ and $Z$ is the lifting size.
For the Viterbi decoder the complexity is $C_{\mathrm{Vit}}\approx \frac{K+m}{K}\left(\lceil\frac{N}{K+m}\rceil\cdot2^{\lceil\frac{N}{K+m}\rceil}+3\cdot2^m+1\right)$, where $m=6$ denotes the memory.
Similarly for the BCJR turbo decoder $C_{\mathrm{Turbo}}\approx 2n_{\mathrm{it}}\cdot\frac{K+m}{K}\left(2\cdot2^{2}+12\cdot2^m\right)$, where again $m=3$ is the memory.
For SCL decoding the complexity is calculated as $C_{\mathrm{SCL}}\approx L\cdot\frac{1}{K}\left(N\log_2 N+2K+2N+K\left(\frac{1}{2}(\log_2 L+1)(\log_2 L+2)-1\right) \right)$ for $L>1$.

All results are obtained via Monte-Carlo simulation with a minimum of $1000$ frame errors per SNR point.