URL
https://opencores.org/ocsvn/yahamm/yahamm/trunk
Subversion Repositories yahamm
Compare Revisions
- This comparison shows the changes necessary to convert path
/yahamm
- from Rev 10 to Rev 11
- ↔ Reverse comparison
Rev 10 → Rev 11
/trunk/doc/src/Makefile
0,0 → 1,9
VPATH=.. |
|
all: specification.pdf design.pdf |
|
%.pdf: %.tex |
pdflatex -shell-escape -output-directory .. $^ |
|
clean: |
rm ../specification.pdf ../design.pdf |
/trunk/doc/src/design.tex
1,9 → 1,9
\documentclass[twoside,a4paper]{refart} |
\usepackage{ae} % CM-Zeichens"atze mit T1 encoding |
\usepackage{ae} |
\usepackage{makeidx} |
\usepackage{ifthen} |
\usepackage{url} |
\usepackage{minted} |
\usepackage[outputdir=..]{minted} |
\usepackage{graphicx} |
\usepackage{svg} |
\usepackage{makecell} |
122,9 → 122,9
|
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} |
358,7 → 358,7
\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: |
\begin{equation} |
\label{eq:h} |
\label{eq:g} |
\mathbf{G} := ( \mathbf{I}_{k} | \mathbf{A}^T ) |
\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. |
/trunk/doc/src/specification.tex
194,14 → 194,14
\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_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 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_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_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} |
|
|
\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. |
|
227,8 → 227,10
|
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. |
|
|