From 4ae8f6660315e69d18d2801c399ae35df4e22993 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Mon, 30 Mar 2026 23:19:11 +0200 Subject: [PATCH] [thesis] Add BP text and error floor figure --- src/thesis/acronyms.tex | 15 ++++ src/thesis/chapters/2_fundamentals.tex | 94 +++++++++++++++++++++++--- 2 files changed, 99 insertions(+), 10 deletions(-) diff --git a/src/thesis/acronyms.tex b/src/thesis/acronyms.tex index 6606381..f1c96a4 100644 --- a/src/thesis/acronyms.tex +++ b/src/thesis/acronyms.tex @@ -8,6 +8,21 @@ long=belief propagation } +\DeclareAcronym{nms}{ + short=NMS, + long=normalized min-sum +} + +\DeclareAcronym{spa}{ + short=SPA, + long=sum-product algorithm +} + +\DeclareAcronym{llr}{ + short=LLR, + long=log-likelihood ratio +} + \DeclareAcronym{sc}{ short=SC, long=spatially coupled diff --git a/src/thesis/chapters/2_fundamentals.tex b/src/thesis/chapters/2_fundamentals.tex index 5673373..597906a 100644 --- a/src/thesis/chapters/2_fundamentals.tex +++ b/src/thesis/chapters/2_fundamentals.tex @@ -308,17 +308,79 @@ qualitative performance characteristic of an \ac{ldpc} code \cite[Fig.~1]{costello_spatially_2014}. We talk of the \textit{waterfall} and the \textit{error floor} regions. +% TODO: Make this look better \begin{figure}[t] \centering \begin{tikzpicture} \begin{axis}[ - domain=-5:5, - width=\figwidth, - height=\figheight, + width=12cm, + height=9cm, + xlabel={$E_b/N_0$ (dB)}, + ylabel={\ac{ber}}, + xmin=0, xmax=6, + ymin=1e-9, ymax=1, + ticks=none, + % y tick label={}, + ymode=log, + grid=both, + grid style={line width=0.2pt, draw=gray!30}, + major grid style={line width=0.4pt, draw=gray!50}, + legend pos=north east, + legend cell align={left}, ] - \addplot+[mark=none, line width=1pt] - {x^2}; + + \addplot+[mark=none, solid, thick, smooth] coordinates { + (0.0, 1.2e-1) + (0.3, 1.1e-1) + (0.5, 9e-2) + (0.7, 5e-2) + (0.8, 2e-2) + (0.9, 5e-3) + (1.0, 8e-4) + (1.1, 1e-4) + (1.2, 1.5e-5) + (1.3, 3e-6) + (1.4, 5e-7) + (1.5, 8e-8) + (1.6, 2e-8) + (1.8, 8e-9) + (2.0, 5e-9) + (2.5, 3e-9) + (3.0, 2e-9) + }; + \addlegendentry{Regular LDPC-BC} + + \addplot+[mark=none, solid, thick, smooth] coordinates { + (0.0, 1.5e-1) + (0.3, 1.4e-1) + (0.5, 1.2e-1) + (0.6, 1.0e-1) + (0.7, 6e-2) + (0.8, 1e-2) + (0.85, 2e-3) + (0.9, 2e-4) + (0.95, 2e-5) + (1.0, 1.5e-6) + (1.05, 1e-7) + (1.1, 1e-8) + (1.2, 3e-9) + (1.5, 1.5e-9) + (2.0, 1e-9) + (2.5, 8e-10) + (3.0, 6e-10) + }; + \addlegendentry{Irregular LDPC-BC} + + \draw[red, thick, rounded corners=12pt] + (axis cs:0.55, 2e-3) rectangle (axis cs:1.55, 5e-5); + \node[red, font=\small\bfseries, anchor=west] at (axis + cs:1.6, 4e-4) {Waterfall}; + + \draw[red, thick, rounded corners=12pt] + (axis cs:1.6, 8e-9) rectangle (axis cs:3.2, 4e-10); + \node[red, font=\small\bfseries, anchor=west] at (axis + cs:3.3, 2e-9) {Error floor}; \end{axis} \end{tikzpicture} @@ -330,7 +392,7 @@ qualitative performance characteristic of an \ac{ldpc} code \label{fig:ldpc-perf} \end{figure} -Broadly, there are two kinds of \ac{LDPC} codes, \textit{regular} and +Broadly, there are two kinds of \ac{ldpc} codes, \textit{regular} and \textit{irregular}. Regular codes are characterized by the fact that the weights, i.e., the numbers of ones, of their rows and columns are constant @@ -364,13 +426,25 @@ waterfall region \cite[Intro.]{costello_spatially_2014}. \subsection{Belief Propagation} -\red{[key points (sub-optimal but good enough, low complexity, \ldots)]} \\ -\red{[top-level overview (iterative algorithm that approximates \ldots)]} +% TODO: Add exact reference +As mentioned above, \ac{ldpc} codes are generally decoded using +efficient iterative algorithms, something that is possilbe due to +their sparsity \cite[\red{WHERE}?]{ryan_channel_2009}. +Specifically, the \ac{spa} is a general decoder that provides +near-optimal performance across many different scenarios. +Often, the term \ac{bp} is used to denote a whole class of variants +of the \ac{spa}, e.g., the \ac{nms} algorithm. +The \ac{spa} is an algorithm that approximates the marginals of the +probability distributions of the \acp{vn} by passing +\textit{messages} in the form of \ac{llr} values along the edges of +the Tanner graph. + +\noindent\red{[SPA]} \\ +\red{[NMS]} \\ +\red{[BP for SC-LDPC codes]} \red{ \begin{itemize} - \item Thanks to their sparsity, an efficient iterative - decoder exists for LDPC codes, called \ac{bp}. \item SPA and NMS algorithms % TODO: Would it be better to split this into a separate section? \item Sliding-window decoding of SC-LDPC codes