Enable externalization; Finish writing SC-LDPC section; Add (unfinished) Tanner graph figure

This commit is contained in:
2026-04-07 18:35:57 +02:00
parent 7fc66a2c68
commit 1d822dac8b
2 changed files with 145 additions and 16 deletions

View File

@@ -416,32 +416,154 @@ good error floor behavior, and capacity approaching
iterative decoding behavior, promising good performance in the
waterfall region \cite[Intro.]{costello_spatially_2014}.
\red{
\begin{itemize}
\item Core construction idea
\item Tanner graph \cite[Fig.~3]{costello_spatially_2014} +
PCM \cite[Eq. 1]{hassan_fully_2016}
\end{itemize}
}
The essential property of \ac{sc}-\ac{ldpc} codes is that codewords
from different \textit{spatial positions}, that would ordinarily be sent
one after the other independently, are coupled.
This is achieved by connecting some \acp{vn} of one spatial position to
\acp{cn} of another, resulting in a \ac{pcm} of the form
\cite[Eq.~1]{hassan_fully_2016}
% TODO: Find reference and make sure notation is correct
%
\begin{align*}
\bm{H} =
\begin{pmatrix}
\bm{H}_0(1) & & & & \\
\vdots & \ddots & & & \\
\bm{H}_W(1) & & \bm{H}_0(L) & & \\
& \ddots & & & \\
& & \bm{H}_W(L) & & \\
\end{pmatrix}
,
\end{align*}
%
where $W \in \mathbb{N}$ is the \textit{coupling width}.
This construction results in a Tanner graph as depicted in
\autoref{fig:sc-ldpc-tanner}.
% TODO: Create SC-LDPC graphic
\begin{figure}[t]
\centering
\tikzset{
VN/.style={
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
},
CN/.style={
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
},
}
% TODO: Coupling over more spatial positions
\begin{tikzpicture}[node distance=7mm and 1cm]
\node[VN] (vn00) {};
\node[VN, below = of vn00] (vn01) {};
\node[VN, below = of vn01] (vn02) {};
\node[VN, below = of vn02] (vn03) {};
\node[VN, below = of vn03] (vn04) {};
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
\node[CN, left = of temp] (cn00) {};
\node[CN, below = of cn00] (cn01) {};
\draw (vn00) -- (cn00);
\draw (vn01) -- (cn00);
\draw (vn03) -- (cn00);
\draw (vn01) -- (cn01);
\draw (vn02) -- (cn01);
\draw (vn04) -- (cn01);
\foreach \i in {1,2,3,4} {
\pgfmathtruncatemacro{\prev}{\i-1}
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
\node[VN, below = of vn\i0] (vn\i1) {};
\node[VN, below = of vn\i1] (vn\i2) {};
\node[VN, below = of vn\i2] (vn\i3) {};
\node[VN, below = of vn\i3] (vn\i4) {};
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
\node[CN, left = of temp] (cn\i0) {};
\node[CN, below = of cn\i0] (cn\i1) {};
\draw (vn\i0) -- (cn\i0);
\draw (vn\i1) -- (cn\i0);
\draw (vn\i3) -- (cn\i0);
\draw (vn\i1) -- (cn\i1);
\draw (vn\i2) -- (cn\i1);
\draw (vn\i4) -- (cn\i1);
}
\foreach \i in {1,2,3,4} {
\pgfmathtruncatemacro{\prev}{\i-1}
\draw (vn\prev 3) -- (cn\i 0);
\draw (vn\prev 4) -- (cn\i 1);
}
\end{tikzpicture}
\caption{
Visualization of the coupling between the Tanner graphs
of individual spatial positions.
}
\label{fig:sc-ldpc-tanner}
\end{figure}
Note that at the first and last few spatial positions, some \acp{cn}
have lower degrees.
This leads to more reliable information about the
\acp{vn} at those positions, that, as we will see, is
later passed to subsequent spatial positions during decoding.
This is precisely the effect that leads to the good performance of
\ac{sc}-\ac{ldpc} codes in the waterfall region \cite{costello_spatially_2014}.
\subsection{Belief Propagation}
% 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}.
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]}
%
% Preliminaires (LLRs, etc.)
%
% TODO: Make this about the SPA or message passing decoders in general?
The \ac{spa} approximates the marginals of the
probability distributions of the \acp{vn} by passing
\textit{messages} along the edges of the Tanner graph \red{[CITATION]}.
The messages take the form of \acp{llr}
%
% TODO: Proper LLR equation
\begin{align*}
L(x) = \log\left( \frac{P(X=0)}{P(X=1)} \right)
.%
\end{align*}
%
\noindent\red{[LLRs]}
%
% SPA equations
%
\noindent\red{[SPA]}
%
% NMS equations
%
\noindent\red{[NMS]}
%
% SC-LDPC decoding
%
\noindent\red{[BP for SC-LDPC codes]}
\red{
\begin{itemize}

View File

@@ -19,7 +19,14 @@
% ]{biblatex}
\usepackage{todonotes}
\usetikzlibrary{calc, positioning, arrows}
\usetikzlibrary{calc, positioning, arrows, fit}
\usetikzlibrary{external}
\tikzexternalize
\makeatletter
\renewcommand{\todo}[2][]{\tikzexternaldisable\@todo[#1]{#2}\tikzexternalenable}
\makeatother
%
%