Line 1... |
Line 1... |
\documentclass[twoside,a4paper]{refart}
|
\documentclass[twoside,a4paper]{refart}
|
\usepackage{ae} % CM-Zeichens"atze mit T1 encoding
|
\usepackage{ae}
|
\usepackage{makeidx}
|
\usepackage{makeidx}
|
\usepackage{ifthen}
|
\usepackage{ifthen}
|
\usepackage{url}
|
\usepackage{url}
|
\usepackage{minted}
|
\usepackage[outputdir=..]{minted}
|
\usepackage{graphicx}
|
\usepackage{graphicx}
|
\usepackage{svg}
|
\usepackage{svg}
|
\usepackage{makecell}
|
\usepackage{makecell}
|
\usepackage{multirow}
|
\usepackage{multirow}
|
\usepackage{pbox}
|
\usepackage{pbox}
|
Line 120... |
Line 120... |
|
|
A non zero syndrome means indicates an error. There are different possibilities, depending on the user choice of the value of the generics \verb|CORRECT| and \verb|EXTRA_PARITY_BIT|, as show by Table~\ref{tab:secded}. A combinatorial logic (see \emph{Correction Assessment} in Fig.~\ref{fig:decoder}) determines if the correction has to be done (\verb|correction_en| signal|) and the position of the wrong bit (\verb|wrong_bit| signal). In the SECDED configuration (\verb|CORRECT| true and \verb|EXTRA_PARITY_BIT| 1), a double error can be detected observing that the syndrome is odd with only the extra parity bit '1', and no correction is done.
|
A non zero syndrome means indicates an error. There are different possibilities, depending on the user choice of the value of the generics \verb|CORRECT| and \verb|EXTRA_PARITY_BIT|, as show by Table~\ref{tab:secded}. A combinatorial logic (see \emph{Correction Assessment} in Fig.~\ref{fig:decoder}) determines if the correction has to be done (\verb|correction_en| signal|) and the position of the wrong bit (\verb|wrong_bit| signal). In the SECDED configuration (\verb|CORRECT| true and \verb|EXTRA_PARITY_BIT| 1), a double error can be detected observing that the syndrome is odd with only the extra parity bit '1', and no correction is done.
|
|
|
In the Single Event Detected case (SEC), and with \verb|CORRECT| generic set to \verb|true|, the wrong bit is then corrected in the non-systematic form of the code word. This is then swapped to systematic form and \verb|data_o| data output is the least signal part of this code word.
|
In the Single Event Detected case (SEC), and with \verb|CORRECT| generic set to \verb|true|, the wrong bit is then corrected in the non-systematic form of the code word. This is then swapped to systematic form and \verb|data_o| data output is the least signal part of this code word.
|
|
|
Independently from the configuration of the generic CORRECT, Single Error and Double Error are counted (\verb|cnt_proc| process). Note that it is not possible to count Double Error unless the \verb|EXTRA_PARITY_BIT| generic has value 1. Counters are connected to the ports \verb|cnt_errors_corrected_o| and \verb|cnt_errors_detected_o| and can be synchronously cleared with the input \verb|cnt_clr|.
|
Single Error and Double Error are counted (\verb|cnt_proc| process) and the counters connected to the output ports \verb|cnt_errors_corrected_o| and \verb|cnt_errors_detected_o|. \verb|cnt_errors_corrected_o| increments only in the SEC case (see Table~\ref{tab:secded}). In all other cases errors, if any, are not corrected and are counted by \verb|cnt_errors_detected_o|. Counters can be synchronously cleared with the input \verb|cnt_clr_i|.
|
|
|
Independently from the configuration of the generic CORRECT, the position of the wrong bit in case of Single Error is used to flip the corresponding bit in the internal \verb|log_wrong_bit_pos_data_o_nonsys| that, after form swapping and slicing, is mapped to the output ports \verb|log_wrong_bit_pos_data_o| and \verb|log_wrong_bit_pos_parity_o|.
|
In the SEC case (see Table~\ref{tab:secded}) the position of the wrong bit in case of Single Error is used to flip the corresponding bit in the internal \verb|log_wrong_bit_pos_data_o_nonsys| that, after form swapping and slicing, is mapped to the output ports \verb|log_wrong_bit_pos_data_o| and \verb|log_wrong_bit_pos_parity_o|. They can be synchronously cleared with the input \verb|cnt_clr_i|.
|
|
|
|
|
\begin{table}
|
\begin{table}
|
\hspace{-6cm}
|
\hspace{-6cm}
|
\begin{tabular}{cc|c|c|}
|
\begin{tabular}{cc|c|c|}
|
Line 356... |
Line 356... |
ONE_PARITY_BIT : boolean := false)
|
ONE_PARITY_BIT : boolean := false)
|
return matrix_t;
|
return matrix_t;
|
\end{minted}
|
\end{minted}
|
Returns the code generator matrix in systematic form. The construction algorithm, as suggested in \cite{ham}, Sec. \emph{Construction of G and H}, is based on the comparison of G in systematic form:
|
Returns the code generator matrix in systematic form. The construction algorithm, as suggested in \cite{ham}, Sec. \emph{Construction of G and H}, is based on the comparison of G in systematic form:
|
\begin{equation}
|
\begin{equation}
|
\label{eq:h}
|
\label{eq:g}
|
\mathbf{G} := ( \mathbf{I}_{k} | \mathbf{A}^T )
|
\mathbf{G} := ( \mathbf{I}_{k} | \mathbf{A}^T )
|
\end{equation}
|
\end{equation}
|
with the expression of the parity-check matrix in systematic form in Eq.~\ref{eq:h}. So the left hand side of $\mathbf{H}$ in systematic form can be transposed and combined with the $\mathbf{I}_{k}$ identity matrix.
|
with the expression of the parity-check matrix in systematic form in Eq.~\ref{eq:h}. So the left hand side of $\mathbf{H}$ in systematic form can be transposed and combined with the $\mathbf{I}_{k}$ identity matrix.
|
|
|
E.g. we want to get the code generator matrix for the code Hamming(7,4) that encodes four bits of data into seven bits by adding three parity bits. The matrix has dimension 7x4 if no extra parity bit is added. The following snippet of test-bench:
|
E.g. we want to get the code generator matrix for the code Hamming(7,4) that encodes four bits of data into seven bits by adding three parity bits. The matrix has dimension 7x4 if no extra parity bit is added. The following snippet of test-bench:
|