diff --git a/latex/thesis/chapters/theoretical_background.tex b/latex/thesis/chapters/theoretical_background.tex index 245fd54..63a1272 100644 --- a/latex/thesis/chapters/theoretical_background.tex +++ b/latex/thesis/chapters/theoretical_background.tex @@ -44,34 +44,6 @@ Lastly, the optimization methods utilized are described. \tikzstyle{box} = [rectangle, minimum width=1.5cm, minimum height=0.7cm, rounded corners=0.1cm, text centered, draw=black, fill=KITgreen!80] -\begin{figure}[htpb] - \centering - - \begin{tikzpicture}[scale=1, transform shape] - \node (in) {$\boldsymbol{c}$}; - \node[box, right=0.5cm of in] (bpskmap) {Mapper}; - \node[right=1.5cm of bpskmap, - draw, circle, inner sep=0pt, minimum size=0.5cm] (add) {$+$}; - \node[below=0.5cm of add] (noise) {$\boldsymbol{z}$}; - \node[box, right=1.5cm of add] (decoder) {Decoder}; - \node[box, right=1.5cm of decoder] (demapper) {Demapper}; - \node[right=0.5cm of demapper] (out) {$\boldsymbol{\hat{c}}$}; - - \node at ($(bpskmap.east)!0.5!(add.west) + (0,0.3cm)$) {$\boldsymbol{x}$}; - \node at ($(add.east)!0.5!(decoder.west) + (0,0.3cm)$) {$\boldsymbol{y}$}; - \node at ($(decoder.east)!0.5!(demapper.west) + (0,0.3cm)$) {$\boldsymbol{\hat{x}}$}; - - \draw[->] (in) -- (bpskmap); - \draw[->] (bpskmap) -- (add); - \draw[->] (add) -- (decoder); - \draw[->] (noise) -- (add); - \draw[->] (decoder) -- (demapper); - \draw[->] (demapper) -- (out); - \end{tikzpicture} - - \caption{Overview of notation} - \label{fig:notation} -\end{figure} \todo{Note about $\tilde{\boldsymbol{c}}$ (and maybe $\tilde{\boldsymbol{x}}$?)} @@ -80,11 +52,101 @@ Lastly, the optimization methods utilized are described. \section{Channel Coding with LDPC Codes} \label{sec:theo:Channel Coding with LDPC Codes} -\begin{itemize} - \item Introduction - \item Binary linear codes - \item \Ac{LDPC} codes (especially $i$, $j$, parity check matrix $\boldsymbol{H}$, $N\left( j \right) $ \& $N\left( i \right) $, etc.) -\end{itemize} +Channel coding describes the process of adding redundancy to information +transmitted over a channel in order to detect and correct any errors +that may occur during the transmission. +Encoding the information using \textit{binary linear codes} is one way of +conducting this process, whereby \textit{data words} are mapped onto longer +\textit{codewords}, which carry redundant information. +It can be shown that as the length of the encoded data words becomes greater, +the theoretically achievable error-correcting capabilities of the code become +better, asymptotically approaching the capacity of the channel. +For this reason, \ac{LDPC} codes have become especially popular, given their +low memory requirements even for very large codes. + +The lengths of the data words and codewords are denoted by $k$ and $n$, +respectively. +The set of codewords $\mathcal{C} \subset \mathbb{F}_2^n$ of a binary +linear code can be represented using the \textit{parity-check matrix} +$\boldsymbol{H} \in \mathbb{F}_2^{m\times n}$, where $m$ represents +the number of parity-checks:% +% +\begin{align*} + \mathcal{C} := \left\{ \boldsymbol{c} \in \mathbb{F}_2^n : + \boldsymbol{H}\boldsymbol{c}^\text{T} = \boldsymbol{0} \right\} +.\end{align*} +% +A data word $\boldsymbol{u} \in \mathbb{F}_2^k$ can be mapped onto a codword +$\boldsymbol{c} \in \mathbb{F}_2^n$ using the \textit{generator matrix} +$\boldsymbol{G} \in \mathbb{F}_2^{k\times n}$:% +% +\begin{align*} + \boldsymbol{c} = \boldsymbol{u}\boldsymbol{G} +.\end{align*} +% + +After obtaining a codeword from a data word, it is transmitted over a channel, +as shown in figure \ref{fig:theo:channel_overview}. +Using the selected modulation scheme, $\boldsymbol{c}$ is mapped onto +$\boldsymbol{x}$. +The channel distorts $\boldsymbol{x}$ into $\boldsymbol{y}$, which is what +reaches the receiver. +The received signal $\boldsymbol{y}$ is then decoded at the receiver to obtain +an estimate of the transmitted codeword, $\hat{\boldsymbol{c}}$. +Finally, the encoding procedure is reversed and an estimate for the originally +sent data word is obtained. + +\begin{figure}[htpb] + \centering + + \begin{tikzpicture}[scale=1, transform shape] + \node (c) {$\boldsymbol{c}$}; + \node[box, right=0.5cm of c] (bpskmap) {Mapper}; + \node[right=1.5cm of bpskmap, + draw, circle, inner sep=0pt, minimum size=0.5cm] (add) {$+$}; + \node[box, right=1.5cm of add] (decoder) {Decoder}; + \node[box, right=1.5cm of decoder] (demapper) {Demapper}; + \node[right=0.5cm of demapper] (out) {$\boldsymbol{\hat{c}}$}; + + \node (x) at ($(bpskmap.east)!0.5!(add.west) + (0,0.3cm)$) {$\boldsymbol{x}$}; + \node (y) at ($(add.east)!0.5!(decoder.west) + (0,0.3cm)$) {$\boldsymbol{y}$}; + \node (x_hat) at ($(decoder.east)!0.5!(demapper.west) + (0,0.3cm)$) + {$\boldsymbol{\hat{x}}$}; + \node[below=0.5cm of add] (z) {$\boldsymbol{z}$}; + + \draw[->] (c) -- (bpskmap); + \draw[->] (bpskmap) -- (add); + \draw[->] (add) -- (decoder); + \draw[->] (z) -- (add); + \draw[->] (decoder) -- (demapper); + \draw[->] (demapper) -- (out); + + \coordinate (top_left) at ($(x.north west) + (-0.1cm, 0.1cm)$); + \coordinate (top_right) at ($(y.north east) + (+0.1cm, 0.1cm)$); + \coordinate (bottom_center) at ($(z.south) + (0cm, -0.1cm)$); + \draw[dashed] (top_left) -- (top_right) |- (bottom_center) -| cycle; + \node[below=0.25cm of z] (text) {Channel}; + \end{tikzpicture} + + \caption{Overview of codeword transmission} + \label{fig:theo:channel_overview} +\end{figure} + +The decoding process itself is generally based either on the \ac{MAP} or the \ac{ML} +criterion:% +% +\begin{align*} + \hat{\boldsymbol{c}}_{\text{\ac{MAP}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}} + p_{\boldsymbol{C} \mid \boldsymbol{Y}} \left(\boldsymbol{c} \mid \boldsymbol{y} + \right) + \hat{\boldsymbol{c}}_{\text{\ac{ML}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}} + f_{\boldsymbol{Y} \mid \boldsymbol{C}} \left( \boldsymbol{y} \mid \boldsymbol{c} + \right) +.\end{align*}% +% +The methods examined in this work are all based on \textit{soft-decision} decoding, +i.e., $\boldsymbol{y}$ is considered to be in $\mathbb{R}^n$ and no preliminary decision +is made by a demodulator. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -94,6 +156,7 @@ Lastly, the optimization methods utilized are described. \begin{itemize} \item Introduction to message passing \item Overview of \ac{BP} algorithm + \item \Ac{LDPC} codes (especially $i$, $j$, parity check matrix $\boldsymbol{H}$, $N\left( j \right) $ \& $N\left( i \right) $, etc.) \end{itemize}