117 lines
4.2 KiB
TeX
117 lines
4.2 KiB
TeX
\documentclass{article}
|
|
\usepackage[utf8x]{inputenc}
|
|
\usepackage[margin=1in]{geometry} % Adjust margins
|
|
\usepackage{caption}
|
|
\usepackage{wrapfig}
|
|
\usepackage{subcaption}
|
|
\usepackage{parskip} % dont indent after paragraphs, figures
|
|
\usepackage{xcolor}
|
|
%\usepackage{csquotes} % Recommended for biblatex
|
|
\usepackage{tikz}
|
|
\usepackage{pgfplots}
|
|
\usetikzlibrary{positioning}
|
|
\usepackage{float}
|
|
\usepackage{amsmath}
|
|
\PassOptionsToPackage{hyphens}{url}
|
|
\usepackage{hyperref} % allows urls to follow line breaks of text
|
|
\usepackage{glossaries}
|
|
\usepackage[style=ieee, backend=biber, maxnames=1, minnames=1]{biblatex}
|
|
\addbibresource{correction.bib}
|
|
|
|
\newacronym{snr}{SNR}{signal-to-noise ratio}
|
|
|
|
|
|
|
|
|
|
\title{Error Correction Codes}
|
|
\date{\today}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
\section{Introduction}
|
|
When messages are transmitted over real media, errors are inevitably introduced.
|
|
Examples range from mundane sources of errors like scratches on CDs and capacitive coupling of conductors
|
|
to geomagnetic storms.
|
|
Though the source of errors are manifold, they are ubiquitous and need to be accounted for if we want any
|
|
real chance of reading a correct message at the end.
|
|
On a basic level, we can understand that a channel with a lower \textit{\acrfull{snr}},
|
|
i.e. more errors per intended information will require more effort to retain the message information.
|
|
\[ \mathrm{SNR} = \frac{P_{signal}}{P_{noise}} \]
|
|
In an analog system, one might attempt to simply increase transmission power $P_{signal}$
|
|
as is done for example in professional audio equipment.
|
|
This would however require the modification of the transmission channel itself, which is not possible for e.g. wireless transmissions.
|
|
|
|
In a digital system, we could understand \acrshort{snr} as the probability of a bit being flipped in transit.
|
|
For example, if a binary message is sent electronically, with a 1 being represented by a voltage of one volt
|
|
and a 0 being represented by zero volts,
|
|
the receiver is likely to observe some intermediate value such as .82 volts.
|
|
Using a nearest-neighbor criterion, the receiver might consider anything over .5 volts to be the binary signal 1
|
|
and anything less than .5 volts to be the binary signal 0.
|
|
If the noise level is small on average, most transmissions will be interpreted correctly.
|
|
However, there generally remains a chance that an intended 1 will be received as .47 volts and hence interpreted incorrectly as a 0.
|
|
\cite{enwiki:signal-to-noise}
|
|
|
|
|
|
In this digital system, we can improve communication reliability by using a coding scheme that is tolerant of errors.
|
|
As a naive approach, we will simply transmit our message multiple times.
|
|
This is called a \textit{repetition code}, where the receiver will perform a majority vote over the received bits,
|
|
resulting in the following
|
|
|
|
\begin{figure}[H]
|
|
\begin{minipage}{.5\textwidth}
|
|
\begin{tabular}{c|ccc}
|
|
recieved & 0 & \textcolor{red}{1} & 2 \\
|
|
\hline
|
|
read & 0 & ERR & 1 \\
|
|
\end{tabular}
|
|
|
|
\begin{tabular}{c|cccccccc}
|
|
recieved & 0 & \textcolor{red}{1} & \textcolor{red}{2} & 3 \\
|
|
\hline
|
|
read & 0 & 0 & 1 & 1 \\
|
|
\end{tabular}
|
|
|
|
\begin{tabular}{c|cccccccc}
|
|
recieved & 0 & \textcolor{red}{1} & \textcolor{red}{2} & \textcolor{red}{3} & 4 \\
|
|
\hline
|
|
read & 0 & 0 & ERR & 1 & 1 \\
|
|
\end{tabular}
|
|
\caption{Error detection and detection for 2,3 and 4 bits used per symbol in a repetition code}
|
|
\label{tab:detection-correction}
|
|
\end{minipage}
|
|
\begin{minipage}{.5\textwidth}
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
domain=0:1,
|
|
samples=100,
|
|
axis lines=middle,
|
|
xlabel={$p$},
|
|
ylabel={Channel Capacity $C$},
|
|
xmin=0, xmax=1,
|
|
ymin=0, ymax=1.1,
|
|
xtick={0,0.25,0.5,0.75,1},
|
|
grid=both,
|
|
width=8cm,
|
|
height=6cm,
|
|
every axis x label/.style={at={(current axis.right of origin)}, anchor=west},
|
|
every axis y label/.style={at={(current axis.above origin)}, anchor=south},
|
|
]
|
|
\addplot[thick, blue] {1-(-x * log2(x) - (1-x) * log2(1-x))};
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
\caption{Capacity of a binary channel with crossover probability $p$}
|
|
\label{fig:graph-errorrate}
|
|
\end{minipage}
|
|
\end{figure}
|
|
|
|
|
|
|
|
\section{Hamming Condition}
|
|
theorems: Hamming condition, Varsham-Gilbert
|
|
Shannon-Hartley
|
|
Convolutional Code
|
|
Reed-Solomon
|
|
CRC
|
|
\printbibliography
|
|
\end{document}
|