OpenCores
URL https://opencores.org/ocsvn/yahamm/yahamm/trunk

Subversion Repositories yahamm

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 10 to Rev 11
    Reverse comparison

Rev 10 → Rev 11

/yahamm/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
/yahamm/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.
/yahamm/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.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.