\section{Codes}

\subsection{Tetraden-Codes}

\begin{itemize}
    \item \textbf{BCD}: Häufig benutzt, keine Rundungsfehler!
    \item \textbf{Excess-3 und Aiken}: Ziffern liegen symmetrisch im Binärfeld, günstige Verteilung für dezimale Rechenwerke
    \item \textbf{4-2-2-1}: Interessante Gewichtung für A/D Wandler
    \item \textbf{Gray und O'Brien}: Einschrittige Codes (Schwächere Auswirkung von Übertragungsfehlern), keine Fehlinformation bei Übergängen (Winkelkodierung)
\end{itemize}

\begin{center}
    \includegraphics[width = 0.32\textwidth]{images/TetradenCodes.jpg}
\end{center}


\subsection{Parity-Bits}

Redundante Kodierung, welche Übertragungsfehler erkennen kann, solange \emph{höchstens} ein Fehler pro Bitgruppe geschieht. \medskip

Bitgruppe wird durch ein Parity-Bit ergänzt, welches die Bitgruppe auf geradzähligkeit ($P_E$) oder ungeradzähligkeit ($P_O$) überprüft. Der Datenempfänger kann so die Richtigkeit der Datenübertragung überprüfen. 

\begin{center}
    \begin{minipage}{0.45\linewidth}
        \subsubsection{Korrekt mit $P_E$}
        \begin{center}
            \begin{tikzpicture}
                \begin{pgfonlayer}{l1}
                    \matrix (pm) [
                        matrix of nodes,
                        nodes in empty cells
                    ]{
                        0 & 1 & 0 & 1 & 0 \\
                        1 & 1 & 0 & 1 & 1 \\
                        1 & 0 & 1 & 1 & 1 \\
                        0 & 0 & 1 & 0 & 1 \\
                        0 & 0 & 0 & 1 & 1 \\
                    };
                \end{pgfonlayer}
                \begin{pgfonlayer}{l1}
                    \draw[] (pm-4-1.south west) -- (pm-4-4.south east) -- (pm-1-4.north east);
                \end{pgfonlayer}
                \fill[draw, thick, darkgreen!80, rounded corners = 3pt, fill opacity = 0.3] ($(pm-5-1.north west) + (1.5pt, -1.5pt)$) rectangle ($(pm-5-5.south east) + (-1.5pt, 1.5pt)$);
                \begin{pgfonlayer}{bg}
                    \fill[draw, thick, blue!80, rounded corners = 3pt, fill opacity = 0.3] ($(pm-1-5.north west) + (1.5pt, -1.5pt)$) rectangle ($(pm-5-5.south east) + (-1.5pt, 1.5pt)$);
                \end{pgfonlayer}
            \end{tikzpicture}
        \end{center}
    \end{minipage}
    \begin{minipage}{0.45\linewidth}
        \subsubsection{Fehler mit $P_E$}
        \begin{center}
            \begin{tikzpicture}
                \begin{pgfonlayer}{l2}
                    \matrix (pm) [
                        matrix of nodes,
                        nodes in empty cells
                    ]{
                        0 & 1 & 0                                 & 1 & 0                                 \\
                        1 & 1 & 1                                 & 1 & \node[text = blue] {\bfseries 1}; \\
                        1 & 0 & 1                                 & 1 & 1                                 \\
                        0 & 0 & 1                                 & 0 & 1                                 \\
                        0 & 0 & \node[text = blue] {\bfseries 0}; & 1 & 1                                 \\
                    };
                \end{pgfonlayer}
                \begin{pgfonlayer}{l1}
                    \draw[] (pm-4-1.south west) -- (pm-4-4.south east) -- (pm-1-4.north east);
                \end{pgfonlayer}
                \begin{pgfonlayer}{bg}
                    \fill[mred, draw, thick, fill opacity = 0.3, rounded corners = 3pt] (pm-1-3.north west) rectangle (pm-5-3.south east);
                    \fill[mred, draw, thick, fill opacity = 0.3, rounded corners = 3pt] (pm-2-1.north west) rectangle (pm-2-5.south east);
                \end{pgfonlayer}
            \end{tikzpicture}
        \end{center}
    \end{minipage}
\end{center}
\vfill

Für eine Fehlerkorrektur muss zusätzlich ein Prüfwort übertragen werden, welches Spaltenweise ein Parity-Bit bildet. Der Empfänger kann so das fehlerbehaftete Bit in der Matrixdarstellung (siehe Bsp.) erkennen und korrigieren. 