Enable externalization; Finish writing SC-LDPC section; Add (unfinished) Tanner graph figure
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
%
|
||||
%
|
||||
|
||||
Reference in New Issue
Block a user