Embodiments relate to error correction and error detection of digital signals and particularly to an apparatus and a method for detecting an error within a coded binary word and an apparatus and a method for detecting an error within a plurality of coded binary words coded by an error correction code.
For the correction of data encoded with error correction codes, error correction circuits are used. As codes for error correction, frequently Hamming-Codes, Hsiao-Codes, BCH-Codes and others are used. For the error correction of data encoded with error-correcting codes, error correction circuits may be used.
By the high degree of integration of electronic circuits, more frequently transient and permanent hardware errors occur which may also corrupt the error correction circuit. An erroneous error correction circuit may lead to an erroneous correction of the data to be processed by the same, even if the data to be processed by the same are correct, which is disadvantageous and ought to be practically excluded, for example, in safety-critical applications.
An embodiment according to an aspect provides an apparatus for detecting an error within a coded binary word comprising an error corrector and an error detector. The error corrector is configured to correct a correctable bit error within a faulty subset of bits of a faulty coded binary word coded by an error correction code, so that the corrected subset of bits is equal to a corresponding subset of bits of a code word of the error correction code, if the error corrector works faultlessly. Further, the error detector is configured to determine an error detection bit sequence indicating whether or not an error detector input binary word is a code word of the error correction code. The error detector input binary word is based on a corrected coded binary word containing the corrected subset of bits and maximally a proper subset of bits of the faulty coded binary word.
By determining whether or not the error detector input binary word is a code word of the error correction code an error within the error detector input binary word can be detected. This error may be caused by a faulty error correction performed by the error corrector or an error within the proper subset of bits of the faulty coded binary word not corrected by the error corrector.
Another embodiment according to an aspect provides an error detector configured to determine an error detection bit sequence indicating whether or not an error detector input binary word is a code word of an error correction code. The error detector may determine the error detection bit sequence based on a multiplication of an error detection matrix and the error detector input binary word. The error detection matrix is based on a check matrix of the error correction code. Further, the error detection matrix comprises less rows than the check matrix or less columns than the check matrix.
A further embodiment according to an aspect provides an error detector configured to determine an error detection bit sequence indicating whether or not an error detector input binary word is a code word of an error correction code. The error detector determines the error detection bit sequence based on a multiplication of an error detection matrix and the error detection input binary word. Further, the error detection matrix is based on the check matrix of the error correction code and the error detection matrix comprises at least one column or at least one row derived by inverting at least one element of a corresponding column or at least one element of a corresponding row of the check matrix.
Another embodiment according to another aspect provides an apparatus for detecting an error within the plurality of coded binary words coded by an error correction code comprising a combiner and an error detector. The combiner is configured to determine a combined binary word by combining a first coded binary word and a second coded binary word of the plurality of coded binary words, so that the determined combined binary word is a code word of the error correction code, if the first coded binary word and the second coded binary word are code words of the error correction code, and so that the determined combined coded binary word is no code word of the error correction code, if the first coded binary word or the second coded binary word is no code word of the error correction code. Further, the error detector is configured to determine an error detection bit sequence indicating whether or not the determined combined binary word is a code word of the error correction code.
By combining two or more coded binary words in a way, so that the combined binary word is again a code word of the error correction code if all combined coded binary words are code words of the error correction code, it may be sufficient to use the same error detector for detecting an error within two or more coded binary words simultaneously. Therefore, for example, only one error detector is required for detecting an error within a plurality of binary words coded by an error correction code. In this way, the hardware efforts for the error detection can be significantly reduced.
Embodiments will be detailed subsequently referring to the appended drawings, in which:
In the following, the same reference numerals are partly used for objects and functional units having the same or similar functional properties and the description thereof with regard to a figure shall apply also to other figures in order to reduce redundancy in the description of the embodiments.
By determining whether or not the error detector input binary word 118 is a code word of the error correction code, an error caused by the error corrector and/or an error already existing in the proper subset of bits of the faulty coded binary word 102 contained by the corrected coded binary word 112 can be detected. Therefore, the probability of an error within a coded binary word after error correction can be significantly reduced, so that the overall error detection probability can be significantly improved.
In this example and in the following examples, a binary word comprises the same number of bits as a code word of the error correction code. A subset of bits of a binary word or a code word may be an empty subset, may contain some bits of the binary word or the code word or may contain all bits of the binary word or the code word. Further, a proper subset of a binary word or a code word may be an empty subset or may contain some bits, but not all bits, of the binary word or the code word.
The error corrector 110 may be implemented so that a correctable bit error within all bits of a coded binary word can be corrected or so that only a part of the bits of a coded binary word provided to the error corrector 110 is corrected. For example, a coded binary word may comprise address bits, which may not be corrected and therefore, the hardware efforts for the error corrector 110 can be reduced. In this example, a correctable bit error may only be corrected in a faulty proper subset of bits if a faulty coded binary word is provided to the error corrector 110.
In other words, the faulty subset of bits of the faulty binary word may contain all bits of the faulty coded binary word 102 or the faulty subset of bits may be a proper subset of the bits of the faulty coded binary word 102 and contains not all bits of the faulty coded binary word 102.
For example, the faulty coded binary word 102 contains 20 bits and the faulty subset of bits contains the first 14 bits of the faulty coded binary word 102 with at least one faulty bit. Then, the error corrector 110 corrects a correctable bit error (e.g. the at least one faulty bit) within the 14 bits of the faulty subset of bits, while a correctable bit error within the last 6 bits of the faulty coded binary word 102, which are not contained by the faulty subset of bits, is not corrected by the error corrector 110, if it works faultlessly. If the faulty subset of bits contains all 20 bits of the faulty coded binary word 102, each correctable bit error is corrected by the error corrector 110. If a faultless coded binary word is provided to the error corrector, none of the 14 bits of subset of bits (which is in that case no “faulty” subset) is corrected and the corrected subset of bits is equal to the 14 bits of the faultless coded binary word.
The corrected subset of bits contains the same number of bits as the faulty subset of bits, but at least one bit may be corrected by the error corrector 110 based on the error correction code, if the faulty subset comprises a correctable bit error. The corrected subset of bits corresponds to a subset of bits of a code word of the error correction code, which is a result of the correction of the correctable bit error, if the error corrector 110 works faultlessly. Otherwise, the error corrector 110 may output a faulty corrected subset of bits containing at least one faulty bit. Such a faulty behavior of the error corrector 110 can be detected by the error detector 120.
The input of the error corrector 110 may be all bits of a coded binary word, since all bits may be necessary for the error correction based on the error correction code. The input coded binary word is a faulty coded binary word, if it comprises at least one faulty bit. The corrected subset of bits, which represents the output of the error corrector 110, may comprise less bits than the input coded binary word depending on whether the error corrector 110 corrects a correctable bit error within all bits of a faulty coded binary word or only within a faulty proper subset of bits of the faulty coded binary word.
The error detector 120 determines an error detection bit sequence 122 indicating whether or not an error detector input binary word 118 is a code word of the error correction code. For example, the error detector 120 may determine the error detection bit sequence 122 based on the error correction code, so that the error detection bit sequence may represent an error syndrome of the error detector input binary word 118. In this example, the error detection bit sequence 102 may comprise a number of bits equal to the number of check bits of the error correction code. In this way, each detectable error (depending on the error correction code) may be detected by the error detector 120 (if the error detector works faultlessly).
Alternatively, for example, the error detector 120 may determine the error detection bit sequence 122, so that the error detection bit sequence 102 represents only a reduced error syndrome (e.g. a subset of bits of the error syndrome or a function of the bits of the error syndrome as for example the parity of all bits of the error syndrome) of the error detector input binary word 118 resulting in a reduced error detection probability, but also reduced hardware requirements for the error detector 120. In other words, the error detection bit sequence 122 may comprise less bits than a number of check bits of the error correction code. In this way, the error detection probability of the error detector 120 can be adapted to the required error detection probability resulting in reduced hardware requirements for reduced error detection probability requirements. So, the necessary hardware efforts can be easily adapted to applications with different error detection probability requirements.
In other words, the error correction code may be used by the error corrector for correcting a correctable bit error within the faulty subset of bits and the same error correction code may be used by the error detector for detecting an error within the error detector input binary word 118. In this connection, the error correction code may also be called error correction and detection code or error correction/detection code and may be used for error correction or for error detection or for error correction and detection.
For example, codes can be used for error correction and for error detection. For instance a Hamming Code can be used for 1-bit error correction or for 1-bit and 2-bit error detection. Similarly a Hsiao-Code can be used for 1-bit error correction and simultaneously for 2-bit error detection. If a Hsiao Code is used for error detection only, 1-bit, 2-bit and 3-bit errors are detected. Here, the notion “error correction code” is used and it is not excluded that the corresponding code can be also used for error detection.
The error detector input binary word 118 is based on a corrected coded binary word 112 containing the corrected subset of bits and maximally a proper subset of bits of the faulty coded binary word 102. The error detector input binary word 118 may be the corrected coded binary word 112 itself or the corrected coded binary word 112 may be combined with one or more other coded binary words 114 to obtain the error detector input binary word 118 as it will be explained in more detail later on.
The corrected coded binary word 112 contains the corrected subset of bits and maximally a proper subset of bits of the possibly faulty coded binary word. Depending on whether the error corrector 110 may be implemented to correct a correctable bit error within all bits of a faulty coded binary word or only a proper subset of bits of a faulty coded binary word, the corrected coded binary word 112 may contain only the corrected subset of bits (representing all bits of a coded binary word) and no bit of the faulty coded binary word itself (bits, which are not corrected by the error corrector) or the corrected coded binary word 112 may contain the corrected subset of bits representing only a proper subset of bits of a coded binary word and one or more bits (the proper subset of bits) of the faulty coded binary word, which are not corrected by the error corrector 110. In other words, the proper subsets of bits of a faulty coded binary word may be an empty subset or may contain between one bit of the faulty coded binary word and all except one bit of the faulty coded binary word. In still other words, at least one bit of a coded binary word is considered for correction by the error corrector 110, so that maximally all except one bit (the proper subset of bits) of the faulty coded binary word is contained by the corrected coded binary word 112 directly without processing by the error corrector 110.
In this example, the faulty subset v′1 is a proper subset of bits of the faulty coded binary word v′ 21, which means that the error corrector 23 may not correct a correctable bit error of all bits of a coded binary word. Further, the proper subset of bits v′2 of the faulty coded binary word v′ contained by the corrected coded binary word vcorr is a complementary subset of bits in comparison to the faulty subset of bits v′1. This means that the proper subset of bits v′2 of the faulty coded binary word v′ 21 contains the bits of a coded binary word for which a correctable bit error is not corrected by the error corrector 23. In still other words, the corrected subset of bits v1corr and the proper subset of bits v′2 of the faulty coded binary word v′ 21 complete one another to form a code word vcorr, the error correction code, if the error corrector 23 works faultlessly and the proper subset of bits v′2 of the faulty coded binary word v′ 21 comprises no bit error.
In some embodiments, the error detection bit sequence 122, 26 may be determined by the error detector 120, 25, so that the error detection bit sequence 122, 26 comprises the same predefined detection bit sequence for all possible code words of the error correction code. In this way, it can be easily determined from the error detection bit sequence 122, 26 whether or not the error detector input binary word is a code word of the error correction code. For example, this predefined detection bit sequence may comprise only bits equal to 0 or only bits equal to 1, although also other bit sequences may be chosen for the predefined detection bit sequence.
Alternatively, according to an embodiment of an aspect, the error detection bit sequence 122, 26 may be determined by the error detector 120, 25, so that the error detection bit sequence 122, 26 comprises more than one predefined detection bit sequence for different code words of the error correction code. For example, the error detector 120, 25 may determine the error detection bit sequence 122, 26, so that the error detection bit sequence 122, 26 is equal to a first predefined detection bit sequence for a first subset of code words of the error correction code and equal to a second predefined detection bit sequence for a second subset of code words of the error correction code. The first predefined detection bit sequence is different from the second predefined detection bit sequence and the first subset is different from the second subset. In this way, a stuck at fault at least at an output of the error detector 120 can be identified, since at least for two different code words of the error correction code, the error detection bit sequence 122, 26 comprises different predefined detection bit sequences, if the error detector 120, 25 works faultlessly.
For example, if the error detection bit sequence 122, 26 is either equal to the first predefined detection bit sequence or equal to the second predefined detection bit sequence for each code word of an error correction code, then the error detection bit sequence 122, 26 may be unequal to the first predefined detection bit sequence and the second predefined detection bit sequence, if the corrected coded binary word is no code word of the error correction code. In this way, an error caused by the error corrector 110 or an error already contained in the proper subset of bits of the faulty coded binary word can be detected.
Although an arbitrary bit sequence may be chosen for the first predefined detection bit sequence and the second predefined detection bit sequence (since implementing one or more inverters at the outputs of the error detector can realize every predefined bit sequence), all bits of the first predefined detection bit sequence may be 0 and all bits of the second predefined detection bit sequence may be 1. In this way, stuck-at-0 or stuck-at-1 errors at the outputs of the error detector 120, 25 can be detected.
For example, the error detection bit sequence 122 can be further processed by an error indication determiner. An example for an error indication determiner 35 is shown in
Alternatively, as mentioned before, the error detection bit sequence A1 . . . Al may be equal to two or more predefined detection bit sequences for different code words of the error correction code.
In other words, the apparatus shown in
For example, the error correction code may be a linear error correction code, although also a non-linear error correction code may be used. For example, the error correction code may be a Hamming Code, a Hsiao Code or a BCH code.
In some embodiments, the error detector 120, 25, 34, 44 may determine the error detection bit sequence based on a multiplication of an error detection matrix and the error detector input binary word. The error detection matrix may be based on a check matrix (e.g. a parity check matrix) of the error correction code.
For example, the error detection matrix comprises less rows than the check matrix or less columns than the check matrix. In other words, the error detection bit sequence may comprise less bits than a number of check bits of the error correction code as already described above.
Further, for example, the error detection matrix comprises at least one column or at least one row derivable by inverting at least one element of a corresponding column or at least one element of a corresponding row of the check matrix or by inverting at least one element of a corresponding column or at least one element of a corresponding row of a matrix resulting from a multiplication of a transformation matrix and the check matrix.
In some embodiments, the input of the error corrector 110, 23 may be a coded binary word provided by an addressable storage (e.g. ROM, RAM or non volatile memory), a coder or may be received from a transmitter. In any case, the coded binary word may comprise one or more faulty bits resulting in a faulty coded binary word.
For example, a coded binary word or a faulty coded binary word comprises a first group of bits representing data bits, a second group of bits representing check bits of the error correction code and a third group of bits representing address bits.
Further, the faulty subset of bits of the faulty coded binary word may contain only the first group of bits and the second group of bits and the corrected coded binary word contains the corrected subset of bits and the third group of bits of the faulty coded binary word (representing the proper subset of bits of the faulty coded binary word). In other words, the first group of bits and the second group of bits may be corrected by the error corrector, if a correctable bit error within these bits occur and the error corrector works faultlessly, while the third group of bits are not corrected by the error corrector, if the correctable bit error occurs within the third group of bits.
A coded binary word, which may be a faulty coded binary word, may be provided to the error corrector by an addressable storage 51 as shown in
As already mentioned before, the error detector input binary word may be a combination of the corrected coded binary word and at least one other coded binary word. For this, in some embodiments, the apparatus for detecting an error within a coded binary word may comprise additionally a combiner, which determines the error detector input binary word by combining the corrected coded binary word and a second coded binary word, so that the error detector input binary word is a code word of the error correction code, if the corrected coded binary word and the second coded binary word are code words of the error correction code, and so that the error detector input binary word is no code word of the error correction code, if the corrected coded binary word or the second coded binary word is no code word of the error correction code. In this way, an error within several input coded binary words can be detected simultaneously by the same error detector.
It was described that the error detector detects errors in its input sequences which are coded by a code C. In most of the examples described so far the same code C was also used for error correction of faulty bits in a subset of bits of a code word by the corrector circuit.
Alternatively the described error detector can be also applied for the detection of erroneous bits in its input sequences coded by a code C independently whether the code C was used for error correction to determine the input sequences of the detector or whether the code C is used for error correction or for error detection only.
For example in
In this example, the combiner mentioned before is realized as an XOR gate 63. In other words, the combiner may combine the corrected coded binary word 65 and the second coded binary word 66 by a bitwise logical XOR function (exclusive OR function) to obtain the error detector input binary word.
Alternatively to the second error detector 62, the second coded binary word 62 may be provided by a coder, which encodes a binary word according to the error correction code to obtain the second coded binary word 66.
Further, more than two coded binary words may be combined by the combiner according to the described concept, so that the same error detector may detect an error within the plurality of coded binary words provided by error correctors, coders or transmitters simultaneously.
Therefore, the hardware efforts for the error detection of errors caused by error correctors, coders and/or coded binary words transmitted by a transmitter can be significantly reduced, since the output of several of these units can be processed by the same error detector.
Some embodiments relate to an error detector determining an error detection bit sequence indicating whether or not an error detector input binary word is a code word of an error correction code. The error detector may determine the error detection bit sequence based on a multiplication of an error detection matrix and the error detector input binary word. The error detection matrix is based on a check matrix of the error correction code. Further, the error detection matrix comprises less rows than the check matrix or less columns than the check matrix.
In this way, the error detection probability of the error detector can be adapted to the required error detection probability resulting in reduced hardware requirements for reduced error detection probability requirements. So, the necessary hardware efforts can be easily adapted to applications with different error detection probability requirements.
Further embodiments relate to an error detector determining an error detection bit sequence indicating whether or not an error detector input binary word is a code word of an error correction code. The error detector determines the error detection bit sequence based on a multiplication of an error detection matrix and the error detection input binary word. Further, the error detection matrix is based on the check matrix of the error correction code and the error detection matrix comprises at least one column or at least one row derivable by inverting at least one element of a corresponding column or at least one element of a corresponding row of the check matrix.
In this way a suitable error detection matrix may be found easily.
For example, an error detector may be configured to determine an error detection bit sequence indicating whether or not an error detector binary word is a code word of a linear code C of length n with q information bits, with m=n−q and with an (m,n) check matrix H. Further, the error detector is configured to determine the error detection bit sequence based on a multiplication of an error detection (l,n)-matrix L and the error detector input binary word. The error detection matrix L is determined based on an (l,n)-Matrix M which is defined as the product of a transformation matrix K and the matrix H as M=K H, where K is an (l,m) binary matrix for which not all elements are equal to 0 and l is lower or equal to m. The error detection matrix L may comprise at least one column or at least one row derivable by inverting at least one element of a corresponding column or at least one element of a corresponding row of the (l,n)-matrix M.
In other words, the (l,n)-error detection matrix L may be determined based on a matrix M which is the product M=K H of a binary (l,m)-transformation matrix K and the (m,n)-check matrix H of the error correction code where K (transformation matrix) is an (l,m)-binary matrix for which not all elements are equal to 0 and where the error detection matrix L comprises at least one column or at least one row derivable by inverting at least an element of a corresponding column or at least an element of a corresponding row of the check matrix.
In still other words, the error detection matrix may be determined based on a first matrix which is determined by multiplying the check matrix of the code by an binary matrix for which not all elements are equal to zero and where the error detection matrix comprises at least one row or at least one column derivable by inverting at least an element of a corresponding row of the first matrix or at least an element of a corresponding column of the first matrix.
For deriving the L matrix from the H matrix, for example, the first and the second row of H are added modulo 2 (e.g. by a multiplication with a suitable matrix K). The determined matrix is the M matrix. For determining L, for example, all elements of the first column of the M matrix are inverted.
Further embodiments relate to an apparatus for detecting an error within a coded binary word comprising a means for correcting a bit error and a means for determining an error detection bit sequence. The means for correcting a bit error corrects a correctable bit error within a faulty subset of bits of a faulty coded binary word coded by an error correction code, so that the corrected subset of bits is equal to a corresponding set of bits of a code word of the error correction code, if the means for correcting a bit error works faultlessly. Further, a means for determining an error detection bit sequence determines an error detection bit sequence indicating whether or not an error detector input binary word is a code word of the error correction code. The error detector input binary word is based on a corrected coded binary word containing the corrected subset of bits and maximally a proper subset of bits of the faulty coded binary word.
Additionally, the method 800 may comprise further steps representing one or more of the optional aspects of the proposed concept described above.
By combining two or more coded binary words to one combined binary word, so that the determined combined binary word is a code word of the error correction code, if all coded binary words to be combined are code words of the error correction code, the error detector 920 can detect an error within one or more of the coded binary words simultaneously. Therefore, only one error detector may be necessary for detecting errors within a plurality of coded binary words resulting in a significantly reduced hardware effort for the error detection.
The plurality of coded binary words comprises at least the first coded binary word and the second coded binary word, which may be provided from two independent sources (e.g. error corrector, coder or transmitter). However, the plurality of coded binary words may comprise also more than two coded binary words provided by more than two different independent sources. In this example, the combiner may determine the combined binary word 912 by combining all coded binary words of the plurality of coded binary words, so that the determined combined binary word 912 is a code word of the error correction code, if all coded binary words of the plurality of coded binary words are code words of the error correction code, and so that the determined combined binary word 912 is no code word of the error correction code, if a coded binary word of the plurality of coded binary words is no code word of the error correction code.
The plurality of coded binary words may be provided by one or more error correctors, coders or may be received from one or more transmitters, for example.
For example, the first coded binary word may be provided by a first error corrector and the second coded binary word may be provided by a second error corrector or a first coded binary word may be provided by an error corrector and a second coded binary word may be provided by a coder.
For example, the combiner may comprise an XOR gate for determining the combined binary word, if the error correction code is a linear error correction code. In other words, the combiner 910 may combine the first coded binary word 902 and the second coded binary word 904 by a bitwise logical XOR function to obtain the combined binary word 912.
Alternatively, the error correction code may be a non-linear error correction code and the combiner 910 may realize a combination of the first coded binary word 902 and the second coded binary word 904 based on the non-linear error correction code, so that the combined binary word 912 is a code word of the non-linear error correction code, if the first coded binary word 902 and the second coded binary word 904 are code words of the non-linear error correction code.
The error detector 920 may be implemented in various ways, for example, the error detector 920 may be implemented according to one or more aspects or possible variations of an error detector 120, 25, 34, 44, 64 described before. In this connection, the combined binary word 912 corresponds to the error detector input binary word.
Additionally, the apparatus 900 may comprise an error corrector. This error corrector may correct a correctable bit error within a faulty subset of bits of a faulty coded binary word coded by the error correction code, so that a corrected subset of bits is equal to a corresponding subsets of bits of a code word of the error correction code, if the error corrector works faultlessly. In this example, the first coded binary word 902 contains the corrected subset of bits and maximally a proper subset of bits of the faulty coded binary word.
The error corrector may be implemented in various ways. For example, the error corrector may be implemented according to one or more aspects of an error corrector 110, 23, 61, 62 described before. In this connection, the first coded binary word 902 corresponds to the corrected coded binary word mentioned before.
Similar as mentioned before, the faulty subset may be a proper subset of the bits of the faulty coded binary word and the proper subset of the bits of the faulty coded binary word contained by the first coded binary word may be a complementary subset of bits in comparison to the faulty subset of bits.
Alternatively, the faulty subset of bits is equal to the faulty coded binary word and the first coded binary word contains only the corrected subset of bits representing a corrected faulty coded binary word.
Further, the apparatus 900 may comprise a second error corrector. This second error corrector may correct a correctable bit error within a second faulty subset of bits of a second faulty coded binary word coded by the error correction code, so that the corrected second subset of bits is equal to a corresponding subset of bits of a code word of an error correction code, if the second error corrector works faultlessly. In this example, the second coded binary word 904 contains the corrected second subset of bits on maximally a proper subset of bits of the second faulty coder primary word.
Similarly, the first error corrector, the second error corrector may be implemented according to one or more aspects of an error detector mentioned above.
An example for an apparatus for detecting an error within a plurality of coded binary words coded by an error correction code comprising two error correctors and a combiner realized by an XOR gate was already shown and described in
Alternatively to the second error corrector, the apparatus 900 may comprise a coder, which encodes a binary word according to the error correction code to obtain the second coded binary word.
Additionally, the apparatus 900 may comprise one or more further error correctors and/or coders providing a coded binary word of the plurality of coded binary words.
Similar as already mentioned in connection with other aspects, the error detection bit sequence 922 may comprise less bits than a number of check bits of the error correction code, so that the error detection probability and the hardware efforts for the error detector may be adapted to the requirements of the application.
Additionally, or alternatively, the error detector 920 may determine the error detection bit sequence 922, so that the error detection bit sequence 922 is equal to a first predefined detection bit sequence for a first subset of code words of the error correction code and equal to a second predefined detection bit sequence for a second subset of code words of the error correction code. The first predefined detection bit sequence is different from the second predefined detection bit sequence and the first subset is different from the second subset.
Further, the error detection bit sequence 922 may be unequal to the first predefined detection bit sequence and the second predefined detection bit sequence, if the corrected coded binary word is no code word of the error correction code.
For example, the bits of the first predefined detection bit sequence are all 0 and the bits of the second predefined detection bit sequence are all 1.
In this way, for example, also stuck-at faults at least at the outputs of the error detector 920 can be detected as already described above.
As already mentioned, for example, the error detector 920 may determine the error detection bit sequence 922 based on a multiplication of an error detection matrix and the determined combined binary word 912. This error detection matrix is based on a check matrix of the error correction code.
The error detection matrix may comprise less rows than the check matrix or less columns than the check matrix, for example.
Alternatively, or additionally, the error detection matrix may comprise at least one column or at least one row derivable by inverting a corresponding column or a corresponding row of the check matrix.
As already mentioned before, a coded binary word, which may be a faulty coded binary word, may be provided by an addressable storage, a coder or a transmitter, for example. This is similar as already described in connection with
Some embodiments according to an aspect relate to an apparatus for detecting an error within a plurality of coded binary words coded by an error correction code. The apparatus comprises a means for determining a combined binary word and a means for determining an error detection bit sequence. The means for determining a combined binary word determines a combined binary word by combining a first coded binary word and a second coded binary word of the plurality of coded binary words, so that the determined combined binary word is a code word of the error correction code, if the first coded binary word and the second coded binary word are code words of the error correction code, and so that the determined combined binary word is no code word of the error correction code, if the first coded binary word or the second coded binary word is no code word of the error correction code. Further, the means for determining an error detection bit sequence determines an error detection bit sequence indicating whether or not the determined combined binary word is a code word of the error correction code.
Additionally, the method 1000 may comprise further steps representing one or more of the optional aspects of the proposed concept described above.
In the following, aspects are described in more detail based on
First, one embodiment is to be explained with reference to
The length of the code C is designated by n, and the number of information bits w=w1, . . . , wq is designated by q, wherein q<n. Examples for error correction codes are Hamming-Codes, for example described in “Lin, S., Costello, D., “Error Control coding”, Prentice Hall, 1983, pp. 79-82, Hsiao-Codes for example described in Fujijwara, E., “Code Design for Dependable Systems”, Wiley, 2006, pp. 98-101″, Hsiao codes, as described for example in “Fujijwara, E., “Code Design for Dependable Systems”, Wiley, 2006 S. 98-101″, BCH-Codes for example described in “Micheloni, R., Marelli, A. und Ravasio, R., “Error Correction Codes for Non. Volatile Memories”,Springer 2008, S. 48-54″ and Reed-Muller codes allowing a majority decoding as it is for example described in “Micheloni, R., Marelli, A. und Ravasio, R. “Error Correction Codes for Non-Volatile Memories” Springer 2008, S. 38-42″.
In applications, codes are frequently used by a person skilled in the art in an shortened form to adapt the same to the actually required word width. This may be done by deleting columns of the H-matrix of the unshortened code.
For a linear code C, the associated code word v is determined from the information bits w by
v=w·G
wherein G is a generator matrix of the code C and G is a (q, n)-matrix.
Based on to the relation
s
T
=H·v′
T
it may be checked whether the word v′=(v′1, . . . , v′n) is a code word of the code C. Here, V′T designates the transposed column vector of the row vector v′. H is an (m, n)-matrix, the H-matrix (check matrix or parity check matrix) of the code and s=(sl, . . . , sm)T with m=n−q is the syndrome of the word v′. Here, (s1, . . . , sm)T designates the transposed column vector of the row vector (S1, . . . , sm). If v′=v is a code word of the code C, the error syndrome is s=0.
The apparatus shown in
The components of v′l are the p components of v′ which are corrected by the circuit FKS 23, and the components of v′2 are the n-p components of v′, which are not corrected by the circuit FKS 23 and which are led on the n-p bit wide line 22 to its output. Without a limitation regarding generality, the components which are corrected were arranged flush left, so that the description becomes more simple. The bits which are corrected may be the data bits u1, . . . , uk and the check bits c1, . . . , cm of a linear code whose information bits w=w1, . . . wq consists of the data bits u=u1, . . . , uk and the address bits a=a1, . . . , ar, wherein the data bits u and the check bits c are stored under the address a in a storage as will be explained in more detail below. It is also possible that p=n and all bits are corrected by the circuit FKS 23.
At its p bit wide output 24, the circuit FKS outputs the values vcorr1=vcorr,1, . . . , vcorr,p, provided together with the non-corrected bits v′2=v′p+1, . . . , v′n on the line 22 forming the n-digit binary word vcorr=vcorr1, v′2=vcorr,1, . . . , vcorr,n.
The error correction circuit FKS 23 corrects words, caused by errors in the first p bits of code words of the code C and which are correctable by the code C.
First the case is considered that the circuit FKS 23 is faultless (works faultlessly). If v′=v applies, wherein v is a code word of the code C, then the following applies vcorr=v. If C, for example, is a 1-bit correcting Hamming code, then all code words of the Hamming code and all words resulting by the 1 bit error in the first p bits of code words are corrected by the circuit FKS 23 in code words. Words, resulting by 1 bit errors in the bits v′2 of code words are not corrected into code words. If code words of the code C and non-code words of the code C, which originate from code words of the code C by 1-bit errors exclusively within the first p bits, are provided to the input of the circuit FKS 23, then a codeword of the code C is outputted by the circuit FKS 23.
If C is a 2 bit error correcting BCH code, all code words of this code and all words resulting from 1-bit and 2-bit errors of code words exclusively in the first p bits are corrected into code words by the circuit FKS 23. All words resulting from errors in the bits v′2 of code words are not corrected by the circuit FKS 23.
If C is a Reed-Muller Code, for example, of a code distance 8, whose correction circuit may, for example, be implemented as a majority decoding and which may correct all 3-bit errors, then all code words and all words resulting from code words by 1-bit, 2-bit and 3-bit errors exclusively in the first p bits, are corrected by the circuit FKS 23, but not words which resulted from errors in the bits v′2.
The error correction circuit FKS 23 may be a conventional error correction circuit of the error correction code C. If for p<n n−p bits are not corrected, then the non-corrected outputs of a error correction circuit for a code C are, for example, simply ignored and not implemented as hardware.
It is of interest that the error correction circuit FKS 23 transforms not only code words of the code C, but also words which may be generated from code words of the code C by at most t errors in the first p bits and which are applied to the input of this circuit FKS 23, into code words υcorr of the code C, if the code C allows to correct t bit errors.
If the circuit FKS 23 is faulty, or contains errors, this may be seen in that vcorr is no code word of the code C. If a code word of the code or a non-code word of the code C, which would be corrected to a code word of the code C by a faultless circuit FKS 23, is inputted to a faulty error correction circuit FKS 23, then this can be detected, if vcorr is no code word.
This is advantageously detected by an error detection circuit FE 25, which serves, as indicated above, for error detection of errors in the error correction circuit FKS 25.
In this example, the error detection circuit FE 25 is a combinatorial circuit with n inputs and l outputs A1, . . . , Al, wherein l≦m which outputs at its outputs an l-component binary error signal f=f1, . . . , fl, so that when inputting a code word υcorr for the error signal f1i1=f2i2= . . . =flil=0 or f1i1=f2i2= . . . =flil=1 applies and in case that not all components f1i1 . . . =flil are equal, it is detected that no code word was input into the circuit FE 25. This either caused by an error in the error correction circuit FKS 23 or indicates that a non-correctable word v′ exists at the input of the error correction circuit and the correction by the circuit FKS was not successful. In this connection, fjij=
If, for example, all values i1, . . . , il equal to 1, then f1i1=f1, . . . , flil=fl and at input of a code word applies either f1=f2= . . . =fl=1 or f1=f2= . . . =fl=0 and an error is detected, if not all components f1, . . . , fl are equal. For example, if j1=1, j2=0, j3=0, j4=1, . . . , jl=1, then f1i1=f1, f2i2=
It is advantageous here that by the selection of the number l of the outputs of the circuit FE 25 the complexity for error detection, for example, in contrast to duplication and comparison may be varied with the variation of l and may be adapted to the requested error detection probability, and that then, when two different occupancies are predefined for f=f1, . . . , fl, e.g. 1, 1, . . . , 1 and 0, 0, . . . , 0, when different code words are applied at the input of the error-detection circuit FE 25, the outputs A1, . . . , Al in the faultless case take on two different values and are thus at least tested with respect to stuck-at-0 and stuck-at-1 errors at least of the outputs in the continuous faultless operation of the error-correction circuit FKS 23, which is, for example not the case with the outputs of a comparator when realizing doubling and comparison.
It is further advantageous that also several error correction circuits, for example on a chip may be checked by one single error detection circuit by XORing its outputs component by component, as it will be explained in more detail below.
It is illustrated in
It is assumed that i1=i2= . . . =il. If f1= . . . =fl=1 applies, then e1=0 and e2=1, and if f1= . . . =fl=0 applies, then e1=1 and e2=0, so that then, when different code words vcorr are applied at the input of the circuit FE 44, different values are output for e1 and e2. If not all components of f are equal, then e1=e2, and an error of the circuit FKS 23 in
In
The data bits u and the address bits a form the q information bits w=w1, . . . , wq of the error correction code which was here assumed to be separable, so that from the information bits u and a the check bits c are determined and the information bits are not changed in encoding. The bits u and c are stored under the address a in a storage 51 when writing and when reading again read out under the address a. When writing it is assumed that u, a, c is a code word of the code C. If the data is again read out at the address, it may have changed erroneously, so that generally u′, c′ are read out which may be different from u, c. Also the address may be formed erroneously, so that instead of the address at the address a′ is to be considered. The read-out data u′, c′=v′1 is corrected by the error correction circuit FKS 23 in
In the following, it is explained with respect to examples how a combinatorial circuit FE 25 for error detection may be determined practically.
The error detection circuit FE 25 (error detector), for example, realizes a function
f
T
=L·v
T,
wherein L is a (l,n)-matrix and fT designates the transposed column vector of the row vector f=(f1, . . . , fl). The matrix L (error detection matrix) can be determined, for example, by
M=K·H=(M1, . . . , Mn).
wherein H is an (m,n)-H-matrix (check matrix) of the error correction code C and the transformation matrix K is a binary (l,m)-matrix unequal to the zero matrix. The following applies m=n−q, 1<l≦m and M1, . . . , Mn are the I-component columns of the matrix M.
The (l,n)-matrix L=(L1, L2, . . . , Ln) with the columns L1, . . . Ln here is determined from a matrix M=K·H=M1, M2, . . . Ml, so that for a subset {Li1, . . . , Lih} of h, h≦n, columns these h columns of the matrix L are the corresponding inverted columns of the matrix M. For these h columns of the matrix L the following applies Li1=
For example, if h=0, then no column of the matrix M is inverted and L=K·H.
In another example, it is possible, that the matrix K is equal to the m-dimensional identity matrix, so that M=I·H=H applies. It is also possible, that the matrix K contains only one single element 1 while all other elements are 0.
To explain the determination of the matrix L in more detail, as an example of an error correction code now a shortened Hamming Code is considered with the (4.9)-H-matrix and with the matrix K=I4 (transformation matrix), wherein I4 is the 4-dimensional identity matrix. In this example M=H with
and with the (5,9)-G-matrix G of the code
The code word v=v1, . . . , v9 with v=u·G=u, c with the check bits c=c1, . . . , c4 is associated with the information bits u=u1, . . . , u5, wherein
c1=u1⊕u2⊕u4⊕u5
c2=u1⊕u3⊕u4
c3=u2⊕u3⊕u4
c4=u5
applies. The two words v=110110001 and v′=101100100 are valid code words, as H·vT=0 and H·v′T=0 applies.
h=1 and Mi1=M2 are selected. Then, for the second column L2 of the matrix L it applies that L2=
and L·vT=fT=(f1, f2, f3, f4)T=(1, 1, 1, 1)T and L·v′T=fT=(f1, f2, f3, f4)T=(0,0,0,0)
The circuit FE 25 simply realizes the binary linear equations
f
T
=L·v
T i.e.
f1=v1⊕v4⊕v5⊕v6
f2=v1⊕v2⊕v3⊕v4⊕v7
f3=v3⊕v4⊕v8
f4=v2⊕v5⊕v9
which may for example be implemented with a synthesis tool.
One especially simple variant is obtained for the considered shortened hamming code by selecting M=K·H with
wherein the matrix K comprises only zeros except of one element 1 and H is the H-matrix of the already described shortened hamming code. Further, M=KH=(1 1 0 1 1 1 0 0 0)=M1, . . . , M9 applies. If here h=2 and i1=2, i2=4 are selected and thus L2=
In a further embodiment it may be illustrated how, with a described error detection circuit FE several error correction circuits are to be checked regarding errors simultaneously, which is especially advantageous when several error correction circuits are implemented on the same chip.
In a very similar way, also more than two error correction circuits may be checked with respect to errors, by bitwise XORing the corrected values of the more than two error correction circuits and then checking by the error detection circuit FE whether the values applied to the same form a code word. It may then be detected if an error correction circuit is erroneous.
Likewise, it is also possible, as illustrated in
The encoder 71 is implemented such that it forms the associated code word v=w·G from the information bits w1, . . . , wq, wherein G is the G-matrix of the code C. The error correction circuit FKS 72 corrects the bits v′1 in vcorrl forming the word vcorr together with the non-corrected bits v′2.
Apart from this, it may be advantageous to connect the outputs of a code via XOR gates to the outputs of an error correction circuit, so that the outputs of the XOR gates are connected to the inputs of the error detection circuit FE via XOR gates.
Likewise, it may be advantageous, to connect several n-bit wide lines, which exist on a chip and carry respectively simultaneously or at different times code words of the code C, so that in the faultless case the connecting lines carry also code words of the code C and that the n bit wide lines carry no code word of the code, if one of the n bit wide connecting lines carry no code word and the connecting lines are connected with the inputs of a described error detection circuit.
Some embodiments relate to a circuitry for error detection. It relates to the improvement of error detection in electrical circuits and is, for example, applicable in the detection of errors in circuits for error correction of data encoded with error correction codes.
The proposed concept may provide a circuitry and/or a method enabling an error detection of errors in an error correction circuit which is simple and/or cost-efficient.
Some embodiments relate to a circuitry S for detecting errors in a circuit for correcting errors in code words of a linear error correction code C, comprising an error correction circuit FKS. The error correction circuit FKS comprises n binary inputs for the input of an n-component binary word v′=v′1 . . . , v′n, consisting of two bit groups v′1=v′1, . . . , v′p and v′2=v′p+1, . . . , v′n, and p outputs for outputting p corrected bits of the first bit group vcorr1=vcorr,1, . . . , vcorr,p, wherein 1≦p≦n applies.
The linear code consists of code words v=v1, . . . , vn=v1, v2 of the length n with q, q<n information bits, wherein the code words consist of a first group of bits v1=v1, . . . , vp and a second group of bits v2=vp+l, . . . , vn, wherein errors in the first group of bits are corrected by the error correction circuit FKS in vcorr1, and errors in the second bit group of bits are not corrected, and wherein the bits vcorr1 of the first bit group corrected by the error correction circuit FKS and the non-corrected bits u′2 of the second bit group form the n-digit binary word vcorr=vcorr1, v′2.
The error correction circuit FKS is set up so that when inputting a code word vεC, Vcorr=v applies, when the error correction circuit FKS is not erroneous.
An error detection circuit FE with n binary inputs and I binary outputs A1, . . . , Al for outputting an I-component error signal f1 . . . , fl exists, which forms the error signal f=f1 . . . , fl for l determined binary values i1, i2 . . . il so that for an input of any code word vcorr of the code C for the components of the error signal
f1i1=f2i2= . . . =flil
applies, and when inputting a non-code word vcorr not all components f1i1, f2i2, . . . , flil of the components of the error signal are equal and the error detection circuit indicates an error when not all values of the components f1i1, f2i2, . . . , flil of the error signal f are equal and l≦n−q applies, and wherein fjij=
According to an aspect, and i1=i2=, . . . , =il and f1i1=f1, f2i2=f2, . . . , flil=fl applies.
Further, there may be a code word vcorr of the code C, so that f1=f2= . . . =fl=0 and there is a further code word v′corr of the code C, so that f1=f2= . . . =fl=1.
According to a further embodiment, the error detection circuit FE 24 forms the error signal f according to the relation
f
T
=L·υ
corr
T,
wherein L is an (l,n)-matrix with binary elements, vT designates the transposed column vector of the line vector v and fT designates the transposed column vector of the row vector f=f1, . . . fl and f1=f2= . . . =fl applies, when vcorr is a code word of the code C and for (at least) a non-code word vcorr it applies that not all components f1=f2= . . . =fl of f are equal and the error correction circuit FE indicates an error when not all components are equal.
Further, the circuit outputs A1, . . . , Al of the circuit FE may be led into I inputs of a first combinatorial circuit SFE1 for realizing a Boolean function with a controlling value outputting a binary error signal e1 at its 1-bit wide output.
According to another aspect, the circuit outputs A1, . . . , Al of the circuit FE are connected to a first combinatorial circuit SFE1 for realizing a l digit Boolean function with the controlling value 1 and the l inputs of a second combinatorial circuit SFE2 for realizing a further Boolean function with the controlling value 0, wherein the circuit SFE1 outputs a binary error signal e1 and the circuit SFE2 outputs a binary error signal e2.
Further, the (l,n) matrix L may be determined by
L=K·H
wherein H is an (m,n) H-matrix of the error correcting linear code C and K is a binary (l,m)-matrix unequal the zero matrix and m=n−q and l≦m.
Alternatively, l=m and K is an (m,m)-identity matrix, for example.
According to a further aspect, the (l,n)-matrix L=(L1, L2 . . . , L1) is determined from a matrix (M=K·H=M1, M2, . . . M1), that for a subset {Li1, . . . Lih} of h, h≦l, columns of the matrix L i.e Li1=
Further, the first bit group v1=u, c and the second bit group v2=a of the code words of the error corrected code C may consist of a bit group u=u1, . . . , uk of k bits, a bit group c=c1, . . . , cm of m bits and a bit group a of r bits a=a1, . . . , ar, wherein k+r+m=n applies, wherein u are the data bits and a the address bits and u and a form the information bits of the error correction code C and c the check bits of the error correction code C, wherein the check bits c are determined from (u, a) and the data bits u and the check bits c are stored under the address a in a storage.
For example, the data bits u and the check bits c are the bits which are corrected. Alternatively, all n bits may be corrected and v1=v1l . . . , vnl includes all n bits und v2 includes no bits.
Further, apart from the error correction circuit FKS at least one further error correction circuit FKS* may exist, wherein each of the n circuit outputs of the error correction circuit FKS is led into the first input of an XOR gate, at least comprising one further input. At this at least one further input at the right position a corresponding output line of the further error correction circuit FKS* is connected and the output of the XOR gate is connected at the right position to the corresponding input of the error detection circuit FE.
Alternatively or additionally, apart from the at least one error correction circuit FKS also at least one circuit for data encoding DK (coder) of information bits into code words v=v1, . . . , vn of the code C exists and the output lines carrying the bits v1, . . . , vn of the circuit for data encoding DK are connected at the right position to the inputs of the error detection circuit FE.
In general, an error corrector, an error detector, a combiner, a coder, an error indication determiner, a means for correcting a bit error and/or a means for determining an error detection bit sequence as described above may be an independent hardware unit or part of a computer, a microcontroller or a digital signal processor as well as a computer program or software product for running on a computer, a microcontroller or a digital signal processor.
Further, an error corrector, an error detector, a combiner, a coder, an error indication determiner, a means for correcting a bit error and/or a means for determining an error detection bit sequence as described above, may be implemented independently from each other or at least partly together. For this, for example, the functionality of two or more of these units may be at least partly united to a combined hardware unit or a software unit by a synthesis tool.
Although some aspects of the described concept have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus.
Depending on certain implementation requirements, embodiments can be implemented in hardware or in software. The implementation can be performed using a digital storage medium, for example a floppy disk, a DVD, a Blue-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium may be computer readable.
Some embodiments comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed.
Generally, embodiments can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code may for example be stored on a machine readable carrier.
Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.
In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.
A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein.
A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals may for example be configured to be transferred via a data communication connection, for example via the Internet.
A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform one of the methods described herein.
A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
In some embodiments, a programmable logic device (for example a field programmable gate array) may be used to perform some or all of the functionalities of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.
The above described embodiments are merely illustrative for the principles described. It is understood that modifications and variations of the arrangements and the details described herein will be apparent to others skilled in the art. It is the intent, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented by way of description and explanation of the embodiments herein.
Although some dependent claims only relate to one other claim, also a combination with one or more further dependent or different independent claims may be possible. Further, also different independent claims may be combined.
This application is related to U.S. patent application Ser. No. ______ (Attorney Reference number SZP170US) filed on Dec. 3, 2010.
Number | Date | Country | |
---|---|---|---|
Parent | 12208897 | Sep 2008 | US |
Child | 12959817 | US |