Line 192... |
Line 192... |
\item \verb|parity_i|: input parity bits. It must be connected to the \verb|parity_o| of the decoder.
|
\item \verb|parity_i|: input parity bits. It must be connected to the \verb|parity_o| of the decoder.
|
\item \verb|data_o|: output data. Length equal to MESSAGE\_LENGTH.
|
\item \verb|data_o|: output data. Length equal to MESSAGE\_LENGTH.
|
\item data\_valid\_o: output valid signal for data\_o. This is just en\_i delayed by the core latency.
|
\item data\_valid\_o: output valid signal for data\_o. This is just en\_i delayed by the core latency.
|
\item \verb|cnt_errors_corrected_o|: counter of single errors corrected. It is always zero if the generic \verb|CORRECT| is false.
|
\item \verb|cnt_errors_corrected_o|: counter of single errors corrected. It is always zero if the generic \verb|CORRECT| is false.
|
\item \verb|cnt_errors_detected_o|: counter of errors detected. It includes single, double and triple errors (not there's no way to distinguish between a single and a triple error), if the generic \verb|CORRECT| is false, otherwise it only counts double errors.
|
\item \verb|cnt_errors_detected_o|: counter of errors detected. It includes single, double and triple errors (not there's no way to distinguish between a single and a triple error), if the generic \verb|CORRECT| is false, otherwise it only counts double errors.
|
\item \verb|log_wrong_bit_pos_data_o|: position of the single error in \verb|data_o|. Zero if the generic \verb|CORRECT| is false or if it's not a single error.
|
\item \verb|log_wrong_bit_pos_data_o|: position of the single errors in \verb|data_o|. A bit is asserted high when there is an error in the same position in \verb|data_o|. They are only de-asserted by a synchrnous clear \verb|cnt_clr_i| or by a reset. It is not used if generic \verb|CORRECT| is false or if it's not a single error.
|
\item \verb|log_wrong_bit_pos_data_o|: position of the single error in \verb|parity_o|. Zero if the generic \verb|CORRECT| is false or if it's not a single error.
|
\item \verb|log_wrong_bit_pos_parity_o|: position of the single error in \verb|parity_o|. A bit is asserted high when there is an error in the same position in \verb|parity_o|. They are only de-asserted by a synchrnous clear \verb|cnt_clr_i| or by a reset. It is not used if generic \verb|CORRECT| is false or if it's not a single error.
|
\end{enumerate}
|
\end{enumerate}
|
|
|
|
|
\section{SEC-DED and other possibilities}
|
\section{SEC-DED and other possibilities}
|
|
|
In order to have SEC-DED (Single Error Corrected - Double Error Detected) capability, user should leave the default values for the generics \verb|EXTRA_PARITY_BITS| to 1, and \verb|CORRECT| to true.
|
In order to have SEC-DED (Single Error Corrected - Double Error Detected) capability, user should use the default values for the generics \verb|EXTRA_PARITY_BITS| 1, and \verb|CORRECT| true.
|
|
|
Other choices can be made as described by the following table.
|
Other choices can be made as described by the following table.
|
|
|
\begin{table}
|
\begin{table}
|
\begin{tabular}{||c|cc||}
|
\begin{tabular}{||c|cc||}
|
Line 225... |
Line 225... |
}
|
}
|
\end{table}
|
\end{table}
|
|
|
The generic \verb|EXTRA_PARITY_BITS| set to true (default) adds a parity bit so that the Hamming distance is $4$ between two code words (number of bits to flip in a code word to obtain another code word). With \verb|EXTRA_PARITY_BITS| set to false the Hamming distance will be $3$.
|
The generic \verb|EXTRA_PARITY_BITS| set to true (default) adds a parity bit so that the Hamming distance is $4$ between two code words (number of bits to flip in a code word to obtain another code word). With \verb|EXTRA_PARITY_BITS| set to false the Hamming distance will be $3$.
|
|
|
The generic \verb|CORRECT| set to true (default) corrects for single bit errors. It can be set to false if only error detection is needed. This allows triple error detection with \verb|EXTRA_PARITY_BIT| set to true. Indeed, a triple error is indistinguishable from a single error with an Hamming distance 4 and the correction would be wrong in this case. Similarly, with \verb|EXTRA_PARITY_BIT| set to false, hence with Hamming distance 3, a double error is indistinguishable from a single error and the correction would be wrong. Note that if \verb|CORRECT| is false, the port \verb|cnt_errors_detected_o| provides the value of a counter that sums up any kind of error detected (single, double and triple).
|
The generic \verb|CORRECT| set to true (default) corrects for single bit errors. It can be set to false if only error detection is needed. This allows triple error detection with \verb|EXTRA_PARITY_BIT| set to true. Indeed, a triple error is indistinguishable from a single error with an Hamming distance 4 and the correction would be wrong in this case. Similarly, with \verb|EXTRA_PARITY_BIT| set to false, hence with Hamming distance 3, a double error is indistinguishable from a single error and the correction would be wrong.
|
|
|
|
If \verb|CORRECT| is false, the port \verb|cnt_errors_detected_o| provides the value of a counter that sums up any kind of error detected (single, double and triple). If the configuration is SEC-DED, \verb|cnt_errors_detected_o| provides the counter for DED, \verb|cnt_errors_corrected_o| provides the counter for SEC.
|
|
|
For most applications, SEC-DED configuration (the default) is the preferred choice. A communication channel can be considered reliable if the probability of double error is negligible. A noisy channel showing double errors detected is not to be trusted because event a corrected single error may be a triple error and the correction would be wrong.
|
For most applications, SEC-DED configuration (the default) is the preferred choice. A communication channel can be considered reliable if the probability of double error is negligible. A noisy channel showing double errors detected is not to be trusted because event a corrected single error may be a triple error and the correction would be wrong.
|
|
|
|
|
\printindex
|
\printindex
|