This commit is contained in:
eneller
2026-07-08 21:23:19 +02:00
parent 6d56459eea
commit 996bdc8a36
2 changed files with 143 additions and 12 deletions

View File

@@ -5,4 +5,45 @@
url = "https://en.wikipedia.org/w/index.php?title=Signal-to-noise_ratio&oldid=1334458479", url = "https://en.wikipedia.org/w/index.php?title=Signal-to-noise_ratio&oldid=1334458479",
note = "[Online; accessed 16-February-2026]" note = "[Online; accessed 16-February-2026]"
} }
@misc{ enwiki:convolutional,
author = "{Wikipedia contributors}",
title = "Convolutional code --- {Wikipedia}{,} The Free Encyclopedia",
year = "2026",
url = "https://en.wikipedia.org/w/index.php?title=Convolutional_code&oldid=1353119167",
note = "[Online; accessed 6-July-2026]"
}
@misc{ enwiki:gilbert-varshamov,
author = "{Wikipedia contributors}",
title = "GilbertVarshamov bound --- {Wikipedia}{,} The Free Encyclopedia",
year = "2025",
url = "https://en.wikipedia.org/w/index.php?title=Gilbert%E2%80%93Varshamov_bound&oldid=1329330572",
note = "[Online; accessed 7-July-2026]"
}
@misc{ enwiki:hamming-distance,
author = "{Wikipedia contributors}",
title = "Hamming distance --- {Wikipedia}{,} The Free Encyclopedia",
year = "2025",
url = "https://en.wikipedia.org/w/index.php?title=Hamming_distance&oldid=1320319980",
note = "[Online; accessed 7-July-2026]"
}
@misc{ enwiki:cyclic,
author = "{Wikipedia contributors}",
title = "Cyclic code --- {Wikipedia}{,} The Free Encyclopedia",
year = "2026",
url = "https://en.wikipedia.org/w/index.php?title=Cyclic_code&oldid=1362628486",
note = "[Online; accessed 7-July-2026]"
}
@misc{ enwiki:crc,
author = "{Wikipedia contributors}",
title = "Cyclic redundancy check --- {Wikipedia}{,} The Free Encyclopedia",
year = "2026",
url = "https://en.wikipedia.org/w/index.php?title=Cyclic_redundancy_check&oldid=1360762341",
note = "[Online; accessed 7-July-2026]"
}
@misc{ enwiki:reed-solomon,
author = "{Wikipedia contributors}",
title = "ReedSolomon error correction --- {Wikipedia}{,} The Free Encyclopedia",
year = "2026",
url = "https://en.wikipedia.org/w/index.php?title=Reed%E2%80%93Solomon_error_correction&oldid=1360527569",
note = "[Online; accessed 7-July-2026]"
}

View File

@@ -18,7 +18,9 @@
\usepackage[style=ieee, backend=biber, maxnames=1, minnames=1]{biblatex} \usepackage[style=ieee, backend=biber, maxnames=1, minnames=1]{biblatex}
\addbibresource{correction.bib} \addbibresource{correction.bib}
\newcommand{\red}[1]{\textcolor{red}{#1}}
\newacronym{snr}{SNR}{signal-to-noise ratio} \newacronym{snr}{SNR}{signal-to-noise ratio}
\newacronym{crc}{CRC}{Cyclic Redundancy Check}
@@ -39,7 +41,7 @@ i.e. more errors per intended information will require more effort to retain the
\[ \mathrm{SNR} = \frac{P_{signal}}{P_{noise}} \] \[ \mathrm{SNR} = \frac{P_{signal}}{P_{noise}} \]
In an analog system, one might attempt to simply increase transmission power $P_{signal}$ In an analog system, one might attempt to simply increase transmission power $P_{signal}$
as is done for example in professional audio equipment. 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. This would however require the modification of the transmission channel itself, which is only feasible to a certain degree.
In a digital system, we could understand \acrshort{snr} as the probability of a bit being flipped in transit. 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 For example, if a binary message is sent electronically, with a 1 being represented by a voltage of one volt
@@ -55,24 +57,24 @@ However, there generally remains a chance that an intended 1 will be received as
In this digital system, we can improve communication reliability by using a coding scheme that is tolerant of errors. 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. 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, This is called a \textit{repetition code}, where the receiver will perform a majority vote over the received bits,
resulting in the following resulting in error detection for 2 bits used, and error correction for 3+ bits used.
\begin{figure}[H] \begin{figure}[H]
\begin{minipage}{.5\textwidth} \begin{minipage}{.5\textwidth}
\begin{tabular}{c|ccc} \begin{tabular}{c|ccc}
recieved & 0 & \textcolor{red}{1} & 2 \\ received & 0 & \textcolor{red}{1} & 2 \\
\hline \hline
read & 0 & ERR & 1 \\ read & 0 & ERR & 1 \\
\end{tabular} \end{tabular}
\begin{tabular}{c|cccccccc} \begin{tabular}{c|cccccccc}
recieved & 0 & \textcolor{red}{1} & \textcolor{red}{2} & 3 \\ received & 0 & \textcolor{red}{1} & \textcolor{red}{2} & 3 \\
\hline \hline
read & 0 & 0 & 1 & 1 \\ read & 0 & 0 & 1 & 1 \\
\end{tabular} \end{tabular}
\begin{tabular}{c|cccccccc} \begin{tabular}{c|cccccccc}
recieved & 0 & \textcolor{red}{1} & \textcolor{red}{2} & \textcolor{red}{3} & 4 \\ received & 0 & \textcolor{red}{1} & \textcolor{red}{2} & \textcolor{red}{3} & 4 \\
\hline \hline
read & 0 & 0 & ERR & 1 & 1 \\ read & 0 & 0 & ERR & 1 & 1 \\
\end{tabular} \end{tabular}
@@ -106,11 +108,99 @@ resulting in the following
\section{Hamming Condition} \subsection{Mathematical Bounds}
theorems: Hamming condition, Varsham-Gilbert In general, the amount of errors a code can detect or correct
Shannon-Hartley is determined by the Hamming distance $h$ defined as the number of positions in which neighboring strings (code words) differ.
Convolutional Code
Reed-Solomon "Karolin" and "Kerstin" differ in 3 letters and thus have a Hamming distance of $h=3$, just as the binary example.
CRC In general, a code is said to have a Hamming distance of $h$ if it is the minimal pairwise distance of all codewords.
Given a Hamming distance of $h$, $(h-1)$ errors can be detected, to correct $r$ errors a minimum distance of $h\geq 2r+1$ is required.
This is analogous to the repetition code already shown in \autoref{tab:detection-correction},
as the length of our repetition code is directly equivalent to the hamming distance.
The Hamming distance of a code is then defined as the minimum pairwise distance between any two code words.
From it, minimal detection and correction capabilities follow according to the above rules.
\cite{enwiki:hamming-distance}
Given a $q$-ary code with length $n$ and minimum Hamming distance $d$, the Gilbert-Varshamov bound provides a bound for the size of
the resulting code, i.e. the number of available code words given the conditions.
Let $\mathcal{A}_q(n,d)$ be the maximum possible size of said code, then the Gilbert-Varshamov bound consists of
$q^n$ as the number of total possible code words in a $q$-ary code of length n, divided by
$\sum_{j=0}^{d-1} \binom{n}{j} (q-1)^j$, the size of a ball created around a code word by the required Hamming distance.
\cite{enwiki:gilbert-varshamov}
The ball is the geometric interpretation of the space created around each used code word by requiring a minimal hamming distance,
i.e. requiring that no code word lie closer within the vector space.
\begin{figure}[h]
\begin{minipage}{.3\textwidth}
\begin{tabular}{c|c}
karolin & 0111 \\
k\red{e}r\red{st}in & 0\red{000}
\end{tabular}
\end{minipage}
\begin{minipage}{.3\textwidth}
\[
\mathcal{A}_q(n,d) \geq \frac{q^n}{\sum_{j=0}^{d-1} \binom{n}{j} (q-1)^j}
\]
\end{minipage}
\end{figure}
\section{Block Codes}
% NOTE fact-check
Block codes are \textit{memoryless}, meaning that each block is encoded independently using a static dictionary.
\subsection{Cyclic Redundancy Check}
A \acrfull{crc} is a method of detecting (correcting) errors by interpreting the information to be sent as a polynomial.
They are particularly suited for the type of burst error common in storage media such as DVDs.
Typically an $n$-bit \acrshort{crc} can detect any error burst of length $n$,
with a chance of also detecting longer error bursts of approximately $1-2^{-n}$.
Specification of a \acrshort{crc} code requires definition of a so-called \textit{generator polynomial}.
It is used as the divisor in a polynomial division taking the message as the dividend.
The remainder of $n$ bits is then appended to the message, thus requiring a generator polynomial of degree $n$ for the calculation.
Because the division is calculated in a finite (also known as galois) field, so the operation can be performed
bitwise-parallel, reducing to a simple bitwise \verb|XOR| in the binary case.
One of the simplest error-detection systems besides a repetition code, the parity bit, is in fact a 1-bit \acrshort{crc}.
Using the generator polynomial $g=x+1$ of degree 1 results in the well-known pattern of extending the code words to achieve
an even number of 1s.
\cite{enwiki:crc}
\begin{figure}[H]
\begin{minipage}{0.7\textwidth}
To calculate the \acrshort{crc}-1, the message $100$ is first extended by $n$ 0s to $1000$.
It is then divided by the generator polynomial $g=x+1 \equiv (11_2)$, leaving a remainder of $1$.
Thus, the code word that should be transmitted is $1001$.
As a result, any 1-bit flip will be detected, allowing the receiver to request retransmission of the message.
\end{minipage}
\hspace{1cm}
\begin{minipage}{0.2\textwidth}
\begin{verbatim}
1000 : 11 = 111
:11
=010
:11
=010
:11
=1
\end{verbatim}
\end{minipage}
\end{figure}
\subsection{Reed-Solomon}
Similar to \acrshort{crc}, a Reed-Solomon code also interprets the message as a polynomial.
This polynomial of degree $k-1$ is uniquely identified by $k$ evaluation points.
By transmitting $n>k$ points, a Reed-Solomon code can detect $t=n-k$ errors or locate and correct up to $\lfloor t/2 \rfloor$ errors.
Formally, the message will be $(a_1,a_2,...,a_k)$ coefficients of a polynomial
\[
f(x) = a_1 + a_2 x + a_3 x^2+...+a_k x^{k-1} = \sum_{i=1}^{k} a_i x^{i-1}
\]
\cite{enwiki:reed-solomon}
\section{Convolutional Codes}
\printbibliography \printbibliography
\end{document} \end{document}