EP1766787A2 - Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes - Google Patents

Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes

Info

Publication number
EP1766787A2
EP1766787A2 EP05758001A EP05758001A EP1766787A2 EP 1766787 A2 EP1766787 A2 EP 1766787A2 EP 05758001 A EP05758001 A EP 05758001A EP 05758001 A EP05758001 A EP 05758001A EP 1766787 A2 EP1766787 A2 EP 1766787A2
Authority
EP
European Patent Office
Prior art keywords
code
bit
value
check
checker
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP05758001A
Other languages
English (en)
French (fr)
Inventor
Steffen Tarnick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
4tech Gesellschaft fur Technologie und Know-How-Transfer Mbh
Original Assignee
4tech Gesellschaft fur Technologie und Know-How-Transfer Mbh
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 4tech Gesellschaft fur Technologie und Know-How-Transfer Mbh filed Critical 4tech Gesellschaft fur Technologie und Know-How-Transfer Mbh
Publication of EP1766787A2 publication Critical patent/EP1766787A2/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
    • H03M13/49Unidirectional error detection or correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
    • H03M13/51Constant weight codes; n-out-of-m codes; Berger codes

Definitions

  • the invention relates to a method for detecting unidirectional errors in words x of a systematic disordered code C and an arrangement for implementing this method.
  • the goal is to detect signal bit errors caused by faulty circuitry as they occur, with the outputs of the circuit being words of code C.
  • the method and arrangement are therefore well suited for the online test.
  • the online test is often implemented using self-checking circuits with coded outputs and self-testing code checkers that monitor the outputs of the circuits under test.
  • the ability of a checker to be self-testing guarantees that it can signal its own circuit faults in the same way as bit errors produced by the supervised circuit.
  • a circuit is called self-testing for a set of skip errors if for each error from that set there exists an input codeword for which the circuit generates a non-codeword output in the presence of the error.
  • the ability to detect bit errors that transform codewords generated by the monitored circuit into non-codewords is achieved by the property of the checker to be code-separating.
  • a circuit is called code-separating when it maps (input) codewords to (output) codewords and non-codewords to non-codewords.
  • E be a class of bit errors.
  • a circuit is code-separating with respect to E if it is code-separating the word set, which consists of all codewords and all those non-codewords that can be generated by the modification of codewords with errors from E. (A similar definition is These are not self-testing with respect to all circuit errors, but with respect to a certain class of errors.If this restriction is omitted, it is usually assumed that this class is the set of all simple sticking errors, which also applies to the checkers considered here Is accepted.)
  • checkers discussed here are code-separating with respect to all unidirectional errors. They are suitable for use in systems where no other type of bit error is expected or even can not emerge as a result of simple trapping errors (see, eg, FY Busaba and PK Lala, "Self-Checking Combinational Circuit Design for Single and Unidirectional Multibit Error.” Journal of Electronic Testing, Vol. 5, No. 1, February 1994, pp. 19-28).
  • checker The ability of a checker to self-test depends not only on its architecture, but also on the amount of codewords the checker receives from the circuit to be monitored. If some code words are not generated by the circuit then some checker errors could not be tested. If such errors are not detected, then the checker loses the property of being code-separating. Since such checkers are not considered as isolated circuits that theoretically receive all codewords, but are embedded in a system in which the amount of codewords they receive depends on the particular environment of the checker, such checkers are called embedded checkers. There are a variety of methods in the literature for designing embedded checkers.
  • checkers have two outputs which in the error-free case form a two-rail signal, ie the output of the checker is ol or 10.
  • the output of the checker is ol or 10.
  • checkers with a single output outputting a periodically changing signal have one Set of advantages. If only checkers with a periodic output signal were used in a complex system consisting of different subsystems with different error-detecting codes, then the size of the global two-rail checker, which evaluates the signals of all the subcheckers, is reduced. Likewise, the number of lines is reduced.
  • x ⁇ is the binary representation of the number k 0 of the zeros of the information bit vector x ⁇ reduced by n - Wi or
  • the error detection comprises comparing the weight of the information bit vector ⁇ (') with the value of the check symbol x ⁇ .
  • test symbol can be selected flexibly by predefinable values WQ and Wj . satisfy the condition I / I / I - W 0 ⁇ 2 k - 2, where WQ denotes a specifiable minimum and w ⁇ a specifiable maximum weight of the information bit vector ⁇ (') and
  • ⁇ ( c ) is the binary representation of the number k 0 of the zeros of the information bit vector ⁇ (') increased by a value s - n + W 1 or
  • a word x of the code C is pinned such that
  • the value of C Q is equal to the value of cjr
  • ie C Q C n ⁇
  • Words of the code C are a periodic sequence 0, 1, 0, 1,. , , is and a unidirectional error is detected by the fact that the periodicity of this sequence is violated.
  • This method additionally constitutes a special realization of the method according to claim 1 or 2, wherein the comparison of the weight of the information bit vector xW with the value of the check symbol ⁇ (c) is performed by comparing x with a word y for which the comparison of the weight of y ( ' ) with the value of y ⁇ has already taken place.
  • Another method for detecting unidirectional errors in words x of a systematic disordered code C provides that the words x are translated into words x 'of a specifiable code C, and then x' is checked by a method for checking the specifiable code C, where the translation is controlled solely by the check symbol of x.
  • the predefinable code C is a code according to one of claims 1 or 2 (Berger type code).
  • the translation from x to x 'X ⁇ j 1 of x is complementary and x is complementary Xf ⁇ J 1 is added to the check symbol x ⁇ of x.
  • the translation from x to x 'be such that all of the most significant check bit or be associated with its complement x £ _ x a XOR operation or that the translation from x to x 'is performed so that the the most significant parity bit xj [_ ⁇ x complementary value x [_ x, an additional information bit x ⁇ forms.
  • Code C is a Biswas Sengupta AUED code k
  • An arrangement for detecting unidirectional errors using a systematically disordered code C comprises at least one chip and / or processor which is / are arranged such that a method for detecting unidirectional errors using the code C according to claim 1 , 2 or 5 is feasible.
  • the chip (s) and / or processors are set up in such a way that a method for detecting unidirectional errors can be carried out using a systematic disordered code C according to claim 3.
  • FIG. 1 shows an averaging circuit (MS)
  • FIG. 2 shows the structure of an embedded Berger code checker with an output
  • FIG. 3 shows a half adder (HA)
  • FIG. 4 shows a B * (2 k , k) -to-B 0 (2 k , / c) code translator
  • FIG. 5 shows a ⁇ # (2 *, / c) -to- ⁇ o -1 (2 / c , k-1) code translator
  • FIG. 6 shows an example of a size comparator
  • Figure 7 shows the comparison of the gate numbers for different translation circuits.
  • the invention includes new embedded checker architectures having an output for Bose AUED codes and Biswas Sengupta AUED codes.
  • the underlying design idea is to translate the codewords into words of a code similar to a Berger code and then check the obtained words with a Berger-type code checker.
  • the architecture of the Berger-type code checker is based on the Checker designs described in AP Stroele and S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error-Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 were proposed.
  • This invention relates to disordered codes. They have the ability to detect single bit errors as well as multiple unidirectional errors. It has been proven that a code is an all-unidirectional error detecting (AUED) code if it is a disordered code (B. B Marvel and TRN Rao, Theory of Unidirectional Error Correcting / Detecting Codes, IEEE Transactions on Computers , Vol. C-31, No. 6, June 1986, pp. 521-530). This invention deals with systematic disordered codes in which each codeword is subdivided into an information part and a test part. Berger codes (JM Berger, "A Note on Error Detection Codes for Asymmetry Channels," Information and Control, Vol. 4, 1961, pp.
  • the information bit vector of x is denoted by X ⁇ and the check symbol by x ⁇ c ⁇
  • the check symbol is the binary representation of / co, where / c 0 denotes the number of zeros in the information bit vector.
  • the check symbol of a ⁇ i ( ⁇ , / c) codeword is obtained by adding 2 k -1-n to the check symbol of the corresponding ⁇ o ( ⁇ , / c) codeword.
  • ⁇ o (n, k) and ⁇ i (n, k) are two extreme cases of a more general class of systematic disordered codes.
  • the codes of this class differ in the number s G ⁇ 0, 1,. , , , 2 k - 1 - n ⁇ , which is added to the check symbol of the corresponding word in ßo ( ⁇ , k).
  • Such a code is denoted by ⁇ o (n, k).
  • the same code can also be denoted by ⁇ f 2 + 1 + n + s (n, k).
  • the last column of Table 1 shows the check symbols of a ⁇ o (8, 4) code (and, for comparison, the check symbols of the classic Berger codes). It is easy to prove that every ß g code, 0 ⁇ s ⁇ 2 k - 1 - n, is a disordered code.
  • These codes are not as efficient as the JE Smith codes, "On Separable Unordered Codes," IEEE Transactions on Computers, Vol. C-33, no. 8, August 1984, pp. 741-743, which are optimal in the event that not all information bit vectors occur. However, they are of practical interest for the design of checkers for Bose AUED codes and Biswas Sengupta AUED codes.
  • a Bose Aued codeword x has 2 k information bits and k check bits.
  • the information part of x is again denoted by ⁇ ( ' ) , the test part by ⁇ (c) and the code by B * (2 k , k).
  • Let / co be the number of zeros in ⁇ ( ' ) and let / ci be the number of ones (the weight of ⁇ ( ' ) ), ie / ci w (x ⁇ ).
  • the check symbols of the code are defined as follows:
  • Bose-AUED codes are a special class of a more general code class (GP Biswas and I. Sengupta, "Design of t-UED / AUED Codes from Berger's AUED Code," The International Conference on VLSI Design, January 1997, pp. 364-369). These codes are constructed by modifying an S 0 -Berger code. The modification is based on the fact that the numbers 2 / and 2 / - 1 are unordered in the binary representation. The information bit vector of weight 0 is modified to a vector of weight w '(with 2 / as the associated check symbol), and 2 / -1 is assigned to the modified information bit vector as a check symbol.
  • the check symbols of these codewords are decremented by one.
  • the information bit vector with weight 2 k is modified in the same way as the information bit vector with weight 0.
  • one of these two vectors starts with 2 k -2i ones, followed by 2 / zeros, whereas in the other bit of information.
  • Vector the bits appear in reverse order.
  • an 8 2 2 /) (2 *, / c) code is composed of words from B Q (2 k , k) and ⁇ 1 (2 / t , k).
  • a codeword belongs to ßi (2 / c , k) if its check symbol is smaller than 2 /, otherwise it belongs to B 0 (2 k , k).
  • An averaging circuit (MS) consists of two parts, as shown in FIG. The upper part carries out a weight averaging operation on the pieces of information ⁇ (') and yW of the codewords x and y, and supplies the information part of the result z.
  • the lower part operates on the check symbols ⁇ ( c ) and y ⁇ and calculates its mean value z ⁇ c ⁇
  • the least significant sum bit d ⁇ is the remainder of the division (x ⁇ + y ⁇ ) / 2.
  • the two D flip Flops are initialized complementarily. It should be noted that in the upper subcircuit (in contrast to an adder with carry forwarding), the roles of the sum bit and the output carry bit are interchanged, ie the sum output of the / full adder (VA) is mixed with the carry output. Input of the / + 1 th full adder, and the carry output of the / th full adder is the / th bit of the result of the operation.
  • VA sum output of the / full adder
  • x be a Berger codeword generated by the monitored circuit
  • y be a codeword stored in the register.
  • the weight of the information piece of z is the average weight of the pieces of information of x and y
  • the value of the check symbol of z is the mean of the check symbols of x and y.
  • z is again a Berger codeword.
  • This word is stored in the register.
  • the signals d 0 and d ⁇ are used as an error signal, which in the error-free case is a two-rail signal and in the event that a non-codeword appears or the checker is faulty, a non-two-rail signal.
  • the sum output O 1 is fed back via an inverter and a D flip-flop to the carry input of the weight averaging circuit.
  • the Berger Code Checker works in a similar fashion to the m-out-of-n code checker described in AP Stroele and S. Tarnick, "Programmable Embedded Self-Testing Checks for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA 1 April 1999, pp. 361-369: the leftmost D flip-flop changes value in each clock, and bits C Q and d x always have the same values. Since d ⁇ is a periodically changing signal, it is used as the Checker's error signal (with one output). The new checker is shown in FIG.
  • Example: Table 5 demonstrates the working principle of the checker for a B Q (9, 4) orbiter code.
  • x and y denote the two inputs of the MS and z the output.
  • checker can also be used for B Q ( ⁇ , / c) -erger type codes, 0 ⁇ s ⁇ 2 k -l-n, and is self-testing if the above conditions apply. In this way, the checker is programmable.
  • the concrete code being tested depends only on the code affiliation of the word with which the checker register was initialized. It can easily be shown that this checker architecture can also be used for the other Berger type codes described in the previous section.
  • Bose-Aued Code B * (2 k, k)
  • a Bose-AUED codeword one of the two checkers must signal an error and the other that no error is present.
  • Another, but more efficient, method is to translate the Bose-AUED codewords into Berger-type codewords and check the received words with a Berger-type code checker. Therefore, the Bose-AUED code checkers described here consist of a translation circuit and a Berger type code checker.
  • the translation circuit must be self-testing. This means that an error will produce a non-Berger type codeword for at least one codeword, and a test codeword will be provided for each error.
  • No Berger Type Code Checker input line receives a constant signal and there are at least two complementary check symbols (see AP Stroele and S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes"). IEEE VLSI Test Symposium, Dana Point, CA 1 April 1999, pp. 361-369).
  • Bose-AUED code checkers Three different architectures for Bose-AUED code checkers are considered.
  • the first draft of Checker is based on the approach outlined in SW Bums and NK Jha, "A Tally Self-Checking Checker for a Parallel Unordered Coding Scheme," IEEE Transactions on Computers, Vol. 4, April 1994, pp. 490-495 was discussed.
  • the words of the ⁇ * (2 fc , k) code are translated into Bo ( 2k -1, k) Berger codewords, which are then checked with a Berger code checker.
  • the Berger code information bit vector consists of only 2 ⁇ - 1 bits.
  • the remaining information bit for example X Q , is used to control the transformation of the check bits.
  • the B * ⁇ 2 k , / c) code translator based on half-adders maps each (single or multiple) unidirectional error to a non- ⁇ o (2 / t , / c) word. This can be shown as follows. An error that does not affect bit X ⁇ 1 is mapped to a ⁇ o (2 / c , k) non-codeword x 'which has an error at the same bit positions as x. If x ⁇ _ x is affected, the value of x ' ⁇ deviates by at least 2 ⁇ -1 - 1 from the correct check symbol value, and the error is detected by the ßo (2 / c , / c) code checker.
  • Each HA receives all 4 bit combinations, and the OR gate receives all combinations except 11, which is not necessary for the test either.
  • the purpose of the Bose AUED code and the checker is to detect unidirectional errors, but a unidirectional error is unable to transform a B * ( 2k , k) codeword into a Berger type codeword not part of the B % (2 k , / c) code. Therefore, the checker's property of not being code-divisive does not prevent it from recognizing all unidirectional errors.
  • the second architecture is based on the property that the word complementary to a B 0 (2 k , / c) word belongs to B 1 (2 k , k) and vice versa.
  • the idea is, each B ⁇ , (2 k, / c) -Bose- Aued codeword x k on a B ⁇ ⁇ 2, / c) -Berger type codeword x map '. If x already belongs to B ⁇ (2 k , k), then it remains unchanged. If x belongs to B 0 (2 k , k), then every bit of x is inverted.
  • the XOR-based ⁇ * (2 k , / f) -to- ⁇ o "1 (2 / c , k-1) code translator forms any (single or multiple) unidirectional error on a non- ⁇ 1 (2 / c , k - 1) word.
  • this checker architecture is not code-breaking in the usual sense. But again, the only non-codewords that the checker is unable to never be caused by unidirectional errors, and the checker's ability to be non-code-breaking does not prevent it from recognizing all unidirectional errors.
  • the B * (2 k , / c) code is translated into a ⁇ o ⁇ 1 (2 / ( + l, / e) ⁇ code, where ⁇ o ⁇ 1 (2 / t + l, / c ) Code has an information bit vector at least one and at most 2 k zeros, so that 0 ⁇ / C Q - 1 ⁇ 2 f e - 1 and thus k check bits are sufficient
  • the B A (2 k , + l, / ⁇ code translation circuit consists of a simple inverter.
  • the B * (2 k , / c) -to- ⁇ o -1 (2 / c + 1, / c ⁇ code translation circuit also makes each (single or multiple) unidirectional error a non- ⁇ 1 ( ., 2 'c 4 l / c) word from this can be shown as follows an error that does not affect bit x ⁇ _ x is a ß o "1 (2 / c + l, k) - not codeword x 'shown that as x has a fault at the same bit positions now let bit x ⁇ _ x affected by the error, it is assumed that the fault is a 0 -...
  • checker consisting of the B * (2 k , / c) -to- ⁇ o "1 (2 / c + 1, / c) code translator and the ⁇ ⁇ 1 (2 / c + 1, / c) -Code ⁇
  • Checker is self-testing under the condition that no input line receives a constant signal, the code words appear in random order and there are at least two complementary check symbols The checker is again not code - separating, but able to detect all unidirectional errors.
  • the checker architectures for Biswas-Sengupta-Aued codes B * (2 k, k) are to those (k 2, k) similar for Bose-Aued codes B *.
  • the main difference is that the distinction as to whether a code word to B 0 (2 k, k) or k B x ⁇ 2, belongs k), can not be made solely with the aid of the most significant test bits X ⁇ . 1 Instead, it is done by examination, whether ⁇ (c) > 2 / - 1. This is implemented by using a magnitude comparator.
  • no (single or multiple) unidirectional error can be transformed into an So ⁇ , / c) codeword.
  • no (single or multiple) unidirectional error can be transformed into a ⁇ 1 (2 / t + 1, / c) codeword
  • the complement of the magnitude comparator output f (x ⁇ ) is added to ⁇ ( c )
  • the following comparison shows the advantages of the various Checker architectures compared to the prior art.
  • the comparison includes hardware size, size of the mini ⁇ mimal test amount and the property of being code-separating.
  • the checker is self-testing provided that no input line receives a constant signal, it receives two check symbols which are complementary and the codewords appear in random order. Two codewords are enough to test the entire checker. Thus, the property of being self-testing is practically achieved independently of the amount of code words made available by the circuit to be monitored.
  • the hardware size is compared to that of an embedded B 0 (2 k , k + 1) aggravator code checker.
  • the numbers indicate how many gates are more or less needed.
  • the hardware size difference thus includes the gate count for the respective translation switch and parts of the Berger type code checker which, due to changed code parameters, in addition to the 60 (2 *, k + 1) -gerger code checker needed or saved.
  • the following values are used to determine the gate numbers: AND and OR gates with two inputs each count as one gate and two inverters are counted as one gate. According to Theorem 4 in AP Stroele and S.
  • the minimum test set consists of at most 2 / c + 16 codewords. Of all the architectures discussed here, it is the only one that is code-separating in the traditional sense.
  • the HA-based translator requires 3.5 (/ c - 1) +1.5 gates, and it saves a full adder for the check symbols and a D-type flip-flop, which together add 3.5 (/ c - 1) - 17 , 5 additional gates results.
  • the minimum test set consists of k + 3 codewords. The checker is code separating with respect to unidirectional errors.
  • the gate count for the XOR-based translator is 4 (2 ⁇ + k-1). Since 2 less check bits are needed, the number of extra gates is reduced to 4 (2 ⁇ + k - 1) - 38.
  • the minimum test set consists of 6 vectors and the checker is code-separating with respect to unidirectional errors.
  • the inverter-based translator requires only one inverter. An additional bit of information is required, but a check bit is saved, so that the checker saves 2.5 gates compared to a Berger code checker.
  • the minimum test set consists of 2 vectors. Compared to other architectures, this is not a special test set. The only requirement is that it contains complementary check symbols.
  • the checker is code-separating with respect to unidirectional errors.
  • Table 7 summarizes the properties of the different Checker architectures for Bose AUED codes.
  • the first column enumerates the architectures, where Burns, HA, XOR, and INV denote the architecture of Burns and Jha, as well as the half-adder, XOR, and inverter-based architecture.
  • the second column shows the number of extra gates compared to an embedded Berger code checker, and the third column shows the size of a minimum test set.
  • Column 4 indicates that only the Checker of Burns and Jha is fully code-separating. All others are code-separating with respect to all unidirectional errors.
  • FIG. 7 compares the numbers of gates additionally required for a B 0 (2 k , k + 1) -gerger code checker for the various architectures.
  • the inverter-based architecture requires the least hardware. Furthermore, it requires only 2 codeword tests for all k, and the property of being self-testing is achieved almost independent of the amount of codewords provided by the monitored circuit.
  • the embedded Biswas-Sengupta code checkers additionally have a size comparator which consists of at most k-l additional gates and requires at most / c + 1 additional codeword tests (except the XOR-based architecture, which uses 2 fc / (2 / t ⁇ 1 - 12 / - 2 * "1 ! + k + 5 test vectors required).
  • test vectors given in column 3 of Table 7 do not mean that after applying the vectors of the corresponding test set, the corresponding Checker architecture is tested. Rather, it is necessary for these vectors to appear repeated in random order. Such a vector sequence (which can also contain additional vectors) is able to test the corresponding checker.
  • a detailed proof will be in AP. Stroele and S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error-Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 given.
  • the size of the test set is not the main testability criterion.
  • testability analysis only considered simple trapping errors.
  • checker architectures presented here are also self-testing with respect to a significantly larger amount of other errors.
  • the half adders and XOR gates of the translation circuits receive all the signal combinations so that they are completely tested and any combinatorial error is recognized.
  • AP Stroele and S. Tarnick "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error-Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp.
  • the first possibility consists of splitting the connected average circuit shown in Figure 2 into two independent sub-circuits such that each of the two sub-circuits comprises at most ⁇ (n + k) / 2] full adders. This modified averaging circuit then resembles the circuit shown in FIG.
  • the versions of the discussed checker with one and two outputs hardly differ in their architecture.
  • the code translation circuits are the same for both versions. The difference is based on the architecture of the Berger type code checker, which can have two outputs that output a two-rail signal in the error-free case, or an output that changes its value every clock.
  • Both versions have their advantages. In a self-checking system, if checkers with two outputs are replaced by checkers with a periodic output, then complementary outputs of two checkers with one output again form a two-rail signal. That way, the size becomes a global two-rail code checker, which evaluates the signals of all subordinate sub-checker reduced.
  • the Checker versions with an output lead to less hardware overhead for the entire system.
  • the two-output versions on the other hand, have a higher operating speed, especially if the averaging circuit is split as described in the previous paragraph.
  • codewords can not even appear because a unidirectional error is not able to falsify a codeword (which belongs to the subcode) into another codeword (which does not belong to the subcode).
  • the architectures presented are very well suited even in the event that the partial code is not completely known.

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

Die Erfindung beschreibt ein Verfahren sowie eine Anordnung zur Erkennung von unidirektionalen Fehlern in Wörtern von systematischen ungeordneten Codes. Bei diesen Codes handelt es sich um Bose-AUED-Codes und Biswas-Sengupta-AUED-Codes. Das Fehlererkennungsverfahren besteht in der Übersetzung der Codewörter in Wörter eines Codes vom Berger-Typ, welche anschließend mit einem Verfahren für den entsprechenden Berger-Typ-Code geprüft werden. Die Anordnung für die Fehlererkennung, welche eine Übersetzungsschaltung und einen Berger-Typ-Code-Checker umfaßt, kann mit einer sehr geringen Zahl von Codewörtern getestet werden, oder erreicht die Eigenschaft, selbsttestend zu sein fast unabhängig von der bereitgestellten Menge von Codewörtern und ist daher sehr gut als eingebetteter Checker geeignet. Dieser Checker hat zwei Ausgänge, die ein Two-Rail-Signal ausgeben oder einen Ausgang, der ein periodisches Signal ausgibt. Des Weiteren ist dieser Checker nicht Code-trennend im üblichen Sinne, aber dennoch in der Lage, alle unidirektionalen Fehler zu erkennen.

Description

Verfahren und Anordnung zur Fehlererkennung mit systematischen ungeordneten Codes
Beschreibung
Die Erfindung betrifft ein Verfahren zur Erkennung von unidirektionalen Fehlern in Wörtern x eines systematischen ungeordneten Codes C sowie eine Anordnung zur Realisierung dieses Verfahrens. Ziel ist es, Signal-Bitfehler, die durch eine fehlerhafte Schaltung verursacht werden, sobald sie auftreten, zu erkennen, wobei die Ausgaben der Schaltung Wörter des Codes C sind. Verfahren und Anordnung eignen sich daher gut für den Online- Test.
Der Online-Test wird häufig implementiert unter Verwendung von selbstprüfenden Schal¬ tungen mit kodierten Ausgängen und selbsttestenden Code-Checkern, die die Ausgänge der zu prüfenden Schaltungen überwachen. Die Fähigkeit eines Checkers, selbsttestend zu sein, garantiert, daß er seine eigenen Schaltungsfehler in derselben Weise signalisieren kann, wie Bitfehler, die von der überwachten Schaltung produziert werden. Eine Schaltung wird selbst¬ testend bezüglich einer Menge von Schältungsfehlern genannt, wenn für jeden Fehler aus dieser Menge ein Eingabe-Codewort existiert für das die Schaltung bei Anwesenheit des Fehlers eine Nichtcodewort-Ausgabe erzeugt. Die Fähigkeit, Bitfehler zu erkennen, welche von der überwachten Schaltung erzeugte Codewörter in Nichtcodewörter transformieren, wird erreicht durch die Eigenschaft des Checkers, Code-trennend zu sein. Eine Schaltung heißt Code-trennend, wenn sie (Eingabe-) Codewörter auf (Ausgabe-) Codewörter abbildet und Nichtcodewörter auf Nichtcodewörter.
Die Eigenschaft eines Checkers, Code-trennend zu sein, ist jedoch nicht immer erforderlich (J.E. Smith, "The Design of Totally Self-Checking Check Circuits for a Class of Unordered Codes" Journal of Design Automation & Fault-Tolerant Computing, Vol. 2, October 1977, pp. 321-342). Die Hauptaufgabe eines Checker besteht nicht primär darin, Codewörter von Nichtcodewörtern zu unterscheiden, sondern Fehler zu erkennen, im vorliegenden Fall unidirektionale Fehler. Die Fähigkeit, Codewörter von Nichtcodewörtern zu unterscheiden, ist eine hinreichende, jedoch nicht notwendige Bedingung, um Fehler zu erkennen. Es wird gezeigt werden, daß die hier beschriebenen Checker in der Lage sind, alle unidirektionalen Fehler zu erkennen, auch im Fall, daß sie nicht Code-trennend im üblichen Sinne sind. Bestimmte Nichtcodewörter würden als Codewörter signalisiert werden. Jedoch ist kein unidirektionaler Fehler in der Lage, ein Codewort in eines dieser Nichtcodewörter zu ändern. Die Definition der Code-Trennung wird wie folgt erweitert:
Sei E eine Klasse von Bitfehlern. Eine Schaltung ist Code-trennend bezüglich E, wenn sie Code-trennend ist für die Wortmenge, die aus allen Codewörtern und all denjenigen Nicht¬ codewörtern besteht, die erzeugt werden können durch die Modifikation von Codewörtern mit Fehlem aus E. (Eine ähnliche Definition ist üblich für selbsttestende Schaltungen. Diese sind nicht selbsttestend bezüglich aller Schaltungsfehler, sondern bezüglich einer bestimm¬ ten Klassen von Fehlern. Wird diese Einschränkung weggelassen, so wird üblicherweise angenommen, daß diese Klasse die Menge aller einfachen Haftfehler ist, was auch für die hier betrachteten Checker angenommen wird.)
Die hier behandelten Checker sind Code-trennend bezüglich aller unidirektionaler Fehler. Sie sind geeignet für den Einsatz in Systemen, in denen kein anderer Bitfehlertyp erwartet wird oder sogar überhaupt nicht als Folge einfacher Haftfehler auftauchen kann (siehe z.B. F.Y. Busaba und P.K. Lala, "Self-Checking Combinational Circuit Design for Single and Unidirectional Multibit Error," Journal of Electronic Testing, Vol. 5, No. 1, February 1994, pp. 19-28).
Die Eigenschaft eines Checkers, selbsttestend zu sein, hängt nicht nur von seiner Architektur ab, sondern auch von der Menge der Codewörter, die der Checker von der zu überwachenden Schaltung erhält. Wenn einige Codewörter von der Schaltung nicht erzeugt werden dann könnten einige Checker-Fehler nicht getestet werden. Werden solche Fehler nicht erkannt, dann verliert der Checker die Eigenschaft, Code-trennend zu sein. Da derartige Checker nicht als isolierte Schaltungen betrachtet werden, die theoretisch alle Codewörter erhalten, sondern als in ein System eingebettet, in dem die Menge der Codewörter, die sie erhalten, von der speziellen Umgebung des Checkers abhängt, werden solche Checker eingebettete Checker genannt. In der Literatur gibt es eine Vielzahl von Verfahren zum Entwurf einge¬ betteter Checker. Diese basieren im wesentlichen auf dem Hinzufügen von Hardware oder zusätzlichen Steuersignalen, der Möglichkeit, den Checker in einem speziellen Testmodus zu testen, den Checker aufgrund der speziellen Eigenschaften des Codes zu entwerfen, oder sie sind eine Kombination verschiedener derartiger Verfahren. Üblicherweise haben Checker zwei Ausgänge, die im fehlerfreien Fall ein Two-Rail-Signal bilden, d.h. die Ausgabe des Checkers ist Ol oder 10. Verglichen zu Checkern mit zwei Ausgängen haben Checker mit einem einzigen Ausgang, der ein sich periodisch änderndes Signal ausgibt, eine Reihe von Vorteilen. Wenn in einem komplexen System, das aus verschiedenen Teilsystemen mit unterschiedlichen fehlererkennenden Codes besteht, nur Checker mit einem periodischen Ausgabesignal verwendet werden würden, dann verringert sich die Größe des globalen Two-Rail-Checkers, der die Signale aller Teilchecker auswertet. Ebenso ist die Anzahl der Leitungen verringert.
Es wurde gezeigt, daß Berger-Codes (J. M. Berger, "A Note on Error Detection Codes for Asymmetrie Channels," Information and Control, Vol. 4, 1961, pp. 68-73) die optimalen systematischen AUED (all-unidirectional error detecting) Codes sind. Jedoch für den Fall, daß die Anzahl der Informationsbits eine Potenz von 2 ist, wurde von Böse einen systema¬ tischen AUED Code entwickelt, der ein Prüfbit weniger als ein entsprechender Berger-Code benötigt und somit eine höhere Informationsrate besitzt (B. Böse, "On Unordered Codes," IEEE Transactions on Computers, Vol. 40, No. 2, February 1991, pp. 125-131). Das Prinzip dieser Code-Konstruktion wurde von Biswas und Sengupta erweitert (G. P. Biswas und I. Sengupta, "Design of t-UED/AUED Codes from Berger's AUED Code," lOth International Conference on VLSI Design, January 1997, pp. 364-369). Codes mit 2k Informationsbits sind von besonderem Interesse, da 2k eine übliche Wortbreite ist.
Architekturen für Berger-Code-Checker basieren meistens auf der Regenerierung der Prüf¬ symbole aus den Informationsbits, die mit den Prüfsymbolen der Codewörter verglichen werden (siehe z.B. M. A. Marouf und A.D. Friedman, "Design of Self-Checking Checkers for Berger Codes," International Symposium on Fault-Tolerant Computing, Toulouse, France, June 1978, pp. 179-184). Andere Checker-Entwürfe verwenden Schwellwert-Schaltungen (X. Kavousianos und D. Nikolos, "Novel Single and Double Output TSC Berger Code Checkers," 16th IEEE VLSI Test Symposium, Monterey, CA, April 1998, pp. 348-353) oder Mittelungsschaltungen (A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369). Ein Checker für Bose-AUED-Codes wurde in S.W. Burns und N. K. Jha, "A Totally Self-Checking Checker for a Parallel Unordered Coding Scheme," IEEE Transactions on Computers, Vol. 43, No. 4, April 1994, pp. 490- 495 diskutiert. Für Biswas-Sengupta-AUED-Codes wurde bisher kein Checker- Entwurf in der Literatur vorgestellt. Die Aufgabe der Erfindung besteht darin, Verfahren und Anordnungen zur Erkennung uni- direktionaler Fehler unter Verwendung eines systematischen ungeordneten Codes C anzuge¬ ben, welche den Stand der Technik erweitern und verbessern, insbesondere die Anordnungen mit besonders wenigen Codewörtern testbar zu machen.
Diese Aufgabe wird erfindungsgemäß gelöst durch die Merkmale im kennzeichnenden Teil der Ansprüche 1, 2, 3 und 5 im Zusammenwirken mit den Merkmalen im Oberbegriff. Zweckmäßige Ausgestaltungen der Erfindung sind in den Unteransprüchen enthalten.
Ein Verfahren nach der Erfindung zur Erkennung unidirektionaler Fehler, insbesondere in sicherheitskritischen Schaltungen oder Systemen, ist dadurch ausgezeichnet, daß die Schal¬ tung bzw. das System Wörter x (Informationsbit- Vektor) und χ(c) (Prüfsymbol) des Codes C erzeugt, wobei das Gewicht w(χW) = ∑j=o x j des Informationsbit- Vektors χ(') mindestens einen vorgebbaren Wert Iv0 > 0 und/oder höchstens einen vorgebbaren Wert W1 < n annimmt, d.h. WQ < w(χW) < Wi, und
• für alle Prüfsymbole gilt, daß x^ die binäre Darstellung der um n — Wi verminderten Anzahl k0 der Nullen des Informationsbit- Vektors x^ ist oder
• für alle Prüfsymbole gilt, daß χ(c) das bitweise Komplement der binären Darstellung der um M/Ό verminderten Anzahl kι = w/(χW) der Einsen des Informationsbit- Vektors xW ist
und die Fehlererkennung den Vergleich des Gewichtes des Informationsbit- Vektors χ(') mit dem Wert des Prüfsymbols x^ umfaßt.
Ein anderes erfindungsgemäßes Verfahren weist den Vorteil auf, daß das Prüfsymbol flexibel gewählt werden kann, indem vorgebbare Werte WQ und Wj. die Bedingung I/I/I — W0 < 2k — 2 erfüllen, wobei WQ ein vorgebbares minimales und w\ ein vorgebbares maximales Gewicht des Informationsbit- Vektors χ(') bezeichnen und
• für alle Prüfsymbole gilt, daß χ(c) die binäre Darstellung der um einen Wert s — n+ W1 erhöhten Anzahl k0 der Nullen des Informationsbit- Vektors χ(') ist oder
• für alle Prüfsymbole gilt, daß χ(c) das um 2k — W1 + wo — s — 1 verminderte bitweise Komplement der binären Darstellung der um WQ verminderten Anzahl /ci der Einsen des Informationsbit- Vektors χ(') ist, wobei der vorgebbare konstante Wert s die Bedingung 0 < s < 2k — w\ + WQ — 1 erfüllt und die Fehlererkennung den Vergleich des Gewichtes des Informationsbit-Vektors χ(') mit dem Wert des Prüfsymbols χ(c) umfaßt.
In einem weiteren erfindungsgemäßen Verfahren wird ein Wort x des Codes C derart gepiift, daß
• eine Gewichtsmittelungs-Operation den π-Bit Informationsbit- Vektor χ(') von x, einen n-Bit Informationsbit- Vektor yW und ein Bit CQ auf einen n-Bit Informationsbit- Vektor zW und ein Bit cψ derart abbildet, daß w(z^) + cjp / 2 = (w(χW) + w(yW) + C0^) / 2 gilt, wobei der Wert der Ausgabegröße z^ zum Arbeitstakt t — l als Eingabewert yW zum Arbeitstakt t verwendet wird, d.h. y^(t) = z^(t — 1), und
• eine Wertemittelungs-Operation das /c-Bit Prüfsymbol y^ und ein Bit CQ auf ein /c-Bit Prüfsymbol z^ und ein Bit dι derart abbildet, daß zW + dχ / 2 = (x^ + yW + c^c)) / 2 gilt, wobei der Wert der Ausgabegröße z(c) zum Arbeitstakt t — 1 als Eingabewert y^ zum Arbeitstakt t verwendet wird, d.h. yW(t) = zW(t - l),
wobei y(0) = y(')(0)y(c)(0) zum Arbeitstakt 0 (Initialwert) ein Wort des zu prüfenden sys¬ tematischen ungeordneten Codes C ist, der Wert von CQ gleich dem Wert von cjr ist, d.h. CQ = Cn \ und der c^ zum Arbeitstakt t der invertierte Wert von O1 zum Arbeit¬ stakt t- 1 ist, d.h. cjj\t) = dι(t - l), wodurch die Folge der Werte di(t), di(tH- l), dx(t + 2), dχ(t + 3), . . . im Fall, daß die Folge der Vektoren x(t), x(t + 1), x(t + 2), x(t + 3), . . . Wörter des Codes C sind, eine periodische Folge 0, 1, 0, 1, . . . ist und ein unidirektionaler Fehler dadurch erkannt wird, daß die Periodizität dieser Folge verletzt ist.
Dieses Verfahren stellt zusätzlich eine spezielle Realisierung der Verfahren nach Anspruch 1 oder 2 dar, wobei der Vergleich des Gewichtes des Informationsbit- Vektors xW mit dem Wert des Prüfsymbols χ(c) dadurch durchgeführt wird, daß x mit einem Wort y verglichen wird, für das der Vergleich des Gewichtes von y(') mit dem Wert von y^ bereits erfolgt ist.
Ein anderes erfindungsgemäßes Verfahren zur Erkennung unidirektionaler Fehler in Wörtern x eines systematischen ungeordneten Codes C sieht vor, daß die Wörter x in Wörter x' eines vorgebbaren Codes C übersetzt werden, und anschließend x' mit einem Verfahren zur Prüfung des vorgebbaren Codes C geprüft wird, wobei die Übersetzung ausschließlich durch das Prüfsymbol von x gesteuert wird. In einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens ist vorgesehen, daß der vorgebbare Code C ein Code gemäß einem der Ansprüche 1 oder 2 (Berger-Typ- Code) ist.
In einer anderen bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens ist vorge¬ und die Übersetzung von x nach x' X^j1 von x komplementäre Wert Xf^J1 zum Prüfsymbol x^ von x hinzuaddiert wird. In alternativen Ausführungsformen ist vorgesehen, daß die Übersetzung von x nach x' derart erfolgt, daß alle von dem am meisten signifikanten Prüfbit oder mit dessen Komplement x£_x über eine XOR-Operation verknüpft werden oder daß die Übersetzung von x nach x' derart erfolgt, daß der zum am meisten signifikanten Prüfbit xj[_χ von x komplementäre Wert x[_x ein zusätzliches Informationsbit xή bildet.
Ist der Code C ein Biswas-Sengupta-AUED-Code k), dann erfolgt die Übersetzung von x nach x' derart, daß der Wert 1 zum Prüfsymbol x^ von x hinzuaddiert wird, wenn χ(c) < 2/ — 1 ist, anderenfalls χ(c) unverändert bleibt, oder daß die Übersetzung von x nach x' derart erfolgt, daß alle Bits derjenigen Wörter x invertiert werden, deren Prüfsymbol χ(c) kleiner als 2/ ist, falls 2/ < 2k~x ist, oder daß alle Bits derjenigen Wörter x invertiert werden, deren Prüfsymbol χ(c) größer oder gleich 2/ ist, falls 2/ > 2k~x ist oder daß die Übersetzung von x nach x' derart erfolgt, daß ein zusätzliches Informationsbit xή betrachtet wird, welches den Wert 0 annimmt, falls x(c) > 2/ - 1 ist und den Wert 1, falls x^ < 2/ - 1.
Eine Anordnung zur Erkennung unidirektionaler Fehler unter Verwendung eines systemati¬ schen ungeordneten Codes C umfasst mindestens einen Chip und/oder Prozessor, der (die) derart eingerichtet ist (sind), daß ein Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung des Codes C gemäß Anspruch 1, 2 oder 5 durchführbar ist.
In einer speziellen Ausführungsform dieser Anordnung ist der (sind) Chip(s) und/oder Prozes¬ soren) derart eingerichtet, daß ein Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung eines systematischen ungeordneten Codes C gemäß Anspruch 3 durchführbar ist.
Die Erfindung wird nachfolgend unter Bezugnahme auf die Figuren an verschiedenen Aus¬ führungsbeispielen näher erläutert. Es zeigen: Figur 1 eine Mittelungsschaltung (MS),
Figur 2 die Struktur eines eingebetteten Berger-Code-Checkers mit einem Ausgang,
Figur 3 einen Halbaddierer (HA),
Figur 4 einen B*(2k, k)-nach-B0(2k, /c)-Code-Übersetzer,
Figur 5 einen ß#(2*, /c)-nach-ßo~1(2/c, k - 1)-Code-Übersetzer,
Figur 6 ein Beispiel eines Größenvergleichers,
Figur 7 den Vergleich der Gatterzahlen für verschiedene Übersetzungsschaltungen.
Anhand der nachfolgenden Ausführungen werden neue Verfahren zur Erkennung unidirek- tionaler Fehler in Wörtern systematischer ungeordneter Codes beschrieben. Insbesondere beinhaltet die Erfindung neue Architekturen für eingebettete Checker mit einem Ausgang für Bose-AUED-Codes und Biswas-Sengupta-AUED-Codes. Die zugunde liegende Entwurfsidee besteht darin, die Codewörter in Wörter eines Codes zu übersetzen, der einem Berger-Code ähnlich ist, und dann die erhaltenen Wörter mit einem Checker für den Berger-Typ Code zu prüfen. Die Architektur des Berger-Typ Code-Checkers basiert auf den Checker-Entwürfen, die in A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 vorgeschlagen wurden.
Systematische ungeordnete Codes
Diese Erfindung betrifft ungeordnete Codes. Sie haben die Fähigkeit, Einzelbitfehler sowie mehrfache unidirektionale Fehler zu erkennen. Es wurde bewiesen, daß ein Code genau dann ein AUED (all-unidirectional error detecting) Code ist, wenn er ein ungeordneter Code ist (B. Böse und T. R. N. Rao, "Theory of Unidirectional Error Correcting/Detecting Codes" , IEEE Transactions on Computers, Vol. C-31, No. 6, June 1986, pp. 521-530). In dieser Erfindung geht es um systematische ungeordnete Codes, bei denen jedes Codewort in einen Informa¬ tionsteil und einen Prüfteil unterteil ist. Diskutiert werden Berger-Codes (J. M. Berger, "A Note on Error Detection Codes for Asymmetrie Channels," Information and Control, Vol. 4, 1961, pp. 68-73) und andere Codes vom Berger-Typ, sowie Bose-AUED-Codes (B. Böse, "On Unordered Codes," IEEE Transactions on Computers, Vol. 40, No. 2, Febru- ary 1991, pp. 125-131) und Biswas-Sengupta-AUED-Codes (G. P. Biswas und I. Sengupta, "Design of t-UED/AUED Codes from Berger's AUED Code," lOth International Confer¬ ence on VLSI Design, January 1997, pp. 364-369), welche beide als Vereinigung zweier verschiedener Berger-Typ-Untercodes betrachtet werden können.
Ein Berger-Codewort x hat n Informationsbits und k = [Iog2(n + I)] Prüfbits. Der Informationsbit- Vektor von x wird mit X^ bezeichnet und das Prüfsymbol mit x^c\ Es gibt zwei Klassen von Berger-Codes. In der ersten Klasse, mit ßo(π, k) bezeichnet, ist das Prüfsymbol die binäre Darstellung von /co, wobei /c0 die Anzahl der Nullen im Informationsbit- Vektor bezeichnet. In der anderen Klasse, ßi(π, k), stellt das Prüfsymbol das bitweise Kom¬ plement von ki dar, wobei /ci die Anzahl der Einsen im Informationsbit- Vektor bezeichnet. Wenn n = 2k — 1, dann fallen BQ(Π, k) und ßi(π, k) zusammen.
Im allgemeinen erhält man das Prüfsymbol eines ßi(π, /c)-Codeworts, indem 2k — 1 — n zum Prüfsymbol des entsprechenden ßo(π, /c)-Codeworts hinzuaddiert wird. Darüberhinaus sind ßo(n, k) und ßi(n, k) zwei Extremfälle einer allgemeineren Klasse von systematischen unge¬ ordneten Codes. Die Codes dieser Klasse unterscheiden sich in der Zahl s G {0, 1, . . . , 2k — 1 — n}, die zum Prüfsymbol des entsprechenden Wortes in ßo(π, k) addiert wird. Solch ein Code wird mit ßo(n, k) bezeichnet. Derselbe Code kann auch mit ßf 2 +1+n+s(n, k) bezeichnet werden. Als Beispiel zeigt die letzte Spalte von Tabelle 1 die Prüfsymbole eines ßo (8, 4)-Codes (und zum Vergleich die Prüfsymbole der klassischen Berger-Codes). Es ist leicht nachzuweisen, daß jeder ßg-Code, 0 < s < 2k — 1 — n, ein ungeordneter Code ist.
representative Prüfbits
Informationsbits ßo(8,4) ßi(8,4) ßO 2(8,4)
00000000 1000 1111 1010
00000001 Olli 1110 1001
00000011 0110 1101 1000
0000 Olli 0101 1100 Olli
00001111 0100 1011 0110
00011111 0011 1010 0101
00111111 0010 1001 0100
Olli 1111 0001 1000 0011
11111111 0000 Olli 0010
Tabelle 1
Es gibt eine weitere Möglichkeit, den klassischen Berger-Code zu erweitem. Wenn zum Beispiel der π-Bit Informationsbit- Vektor nur Gewichte in einem Teilintervall von 0, . . . , n annimmt, dann ist es nicht immer notwendig, [Iog2(π + I)] Prüfbits zu verwenden. Sei n' = max(w(χ('))) — min(i/t/(χW)), wobei w(x^) das Gewicht von χ(') bezeichnet. Dann benötigt man nur [Iog2(n' + I)] Prüfbits. Das Beispiel von Tabelle 2 zeigt einen Code mit n = 11, welcher minstestens 2 und höchstens 9 Nullen hat. Wegen H = 7 werden nur k = 3 Prüfbits benötigt. Das Prüfsymbol repräsentiert die Anzahl der Nullen minus 2 in Solch ein Berger-Typ-Code wird ebenfalls mit BQ (Π, k) bezeichnet, wobei s G {// - max(w(χW)), . . . , 2k - 1 - max(w(χW))} und k = + I)] . Diese Codes sind nicht so effizient wie die Codes aus J.E. Smith, "On Separable Unordered Codes," IEEE Transactions on Computers, Vol. C-33, No. 8, August 1984, pp. 741-743, welche optimal sind für den Fall, daß nicht alle Informationsbit- Vektoren auftreten. Sie sind jedoch von praktischem Interesse für den Entwurf von Checkern für Bose-AUED-Codes und Biswas- Sengupta-AUED-Codes.
representative Prüfbits
Informationsbits ßo-2(ll, 3)
0000 0000 011 111
0000 0000 111 110
0000 0001 111 101
0000 0011 111 100
0000 Olli 111 011
0000 1111 111 010
0001 1111 111 001
0011 1111 111 000
Tabelle 2
Ein Bose-AUED-Codewort x hat 2k Informationsbits und k Prüfbits. Der Informationsteil von x wird wiederum mit χ(') bezeichnet, der Prüfteil mit χ(c) und der Code mit B*(2k, k). Sei wiederum /co die Anzahl der Nullen in χ(') und sei /ci die Anzahl der Einsen (das Gewicht von χ(')), d.h. /ci = w(x^). Die Prüfsymbole des Codes sind wie folgt definiert:
0 < w(χW) < 2^1 — > xW z= k0
2k-χ < w(χt')) < 2k - 1 — > x^ = ko ~ l
Die Informationsbit- Vektoren, die nur aus Nullen und nur aus Einsen bestehen, treten nicht auf. Sie werden ersetzt durch die Vektoren, in denen die ersten 2k~x Bits invertiert sind. Deshalb benötigt der Code eine zusätzliche, aber einfache, Dekodierlogik. Das Prüfsymbol dieser zwei Codewörter ist X^ = Zc0 — 1. Tabelle 3 zeigt den Code für k = 3. K representativer modifizierter
Informationsteil Informationsteil
8 0000 0000 1111 0000 011
7 0000 0001 111
6 0000 0011 110
5 0000 Olli 101
4 0000 1111 100
3 0001 1111 010
2 0011 1111 001
1 Olli 1111 000
0 1111 1111 0000 1111 011
Tabelle 3
Sei msb(x) das am meisten signifikante Bit des Vektors x. Wie man leicht sehen kann gehö¬ ren diejenigen Wörter von B^.(2k , k) mit msb(x^c^) = 1 zum Berger-Typ-Code Bo(2k, k), in welchem x^ die Binärdarstellung von /c0 ist, und die Wörter von 6^(2^, k) mit msb(χ(c)) = 0 gehören zum Berger-Typ-Code Bχ{2k, k), bei dem χ(c) das bitweise Komplement von kx ist. Es gilt folgender Sachverhalt: Sei x G B*(2k, k). Wenn x zum Berger-Typ-Code ßo(2\ k) gehört, dann ist x ein 61(2^, /c)-Codewort und umgekehrt, wobei x das bitweise Komplement von x bezeichnet.
Es wurde festgestellt, daß Bose-AUED-Codes eine spezielle Klasse einer allgemeineren Code¬ klasse sind (G. P. Biswas und I. Sengupta, "Design of t-UED/AUED Codes from Berger's AUED Code," lOth International Conference on VLSI Design, January 1997, pp. 364-369). Diese Codes werden konstruiert durch die Modifikation eines S0-Berger-Codes. Die Modi¬ fikation basiert auf der Tatsache, daß die Zahlen 2/ und 2/ — 1 in der Binärdarstellung unge¬ ordnet sind. Der Informationsbit- Vektor mit Gewicht 0 wird zu einem Vektor mit Gewicht w' modifiziert (mit 2/ als dem zugehörigen Prüfsymbol), und 2/— 1 wird als Prüfsymbol dem mo¬ difizierten Informationsbit- Vektor zugeordnet. Um Überdeckungsprobleme mit Codewörtern zu vermeiden, deren Informationsbit- Vektor ein Gewicht größer als w' haben, werden die Prüfsymbole dieser Codewörter um 1 verringert. Der Informationsbit- Vektor mit Gewicht 2k wird auf dieselbe Weise modifiziert wie der Informationsbit- Vektor mit Gewicht 0. Üblicher¬ weise beginnt einer dieser beiden Vektoren mit 2k—2i Einsen, gefolgt von 2/ Nullen, wohinge¬ gen im anderen Informationsbit- Vektor die Bits in umgekehrter Reihenfolge erscheinen. Für k Prüfbits gibt es 2k 1 ^- I verschiedene Wege, einen Biswas-Sengupta-AUED-Code zu konstruieren, und einer dieser Codes (wenn 2/ = 2k~x) fällt mit einem Bose-AUED-Code zusammen. Diese Codes werden mit ß* (π, /c) bezeichnet, wobei (2/) angibt, daß die An¬ zahl der Nullen der Informationsbit- Vektoren mit Gewicht 0 und 2k zu 2/ modifiziert wurden. Tabelle 4 zeigt die Prüfsymbole von drei verschiedenen Biswas-Sengupta-Codes für k = 3. Hier ist der Code ß* (8, 3) äquivalent zum Bose-AUED-Code, der in Tabelle 3 gezeigt wird. Die modifizierten Informationsbit-Vektoren mit Gewicht 0 und 2k sind 11111100 und 00111111 für ߣ2)(8, 3) und 11000000 und 00000011 für ߣ6)(8, 3).
Prüfbits vv(χW) ßf(8,3) ßi4)(8,3) ßf(8,3)
0 001 011 101
1 111 111 111
2 110 110 110
3 101 101 100
4 100 100 011
5 011 010 010
6 010 001 001
7 000 000 000
8 001 011 101
Tabelle 4
Man sieht wiederum, daß ein 8£2/)(2*, /c)-Code aus Wörtern aus BQ(2k, k) und ß1(2/t, k) zusammengesetzt ist. Ein Codewort gehört zu ßi(2/c, k) wenn sein Prüfsymbol kleiner als 2/ ist, anderenfalls gehört es zu B0(2k, k). Leider gilt der für Bose-AUED-Codes festgestellte Sachverhalt, daß ein Wort aus BQ(2k, k) durch Komplementbildung in ein Wort aus ßi(2/c, k) überführt wird und umgekehrt nicht uneingeschränkt für ß* ''(2k, /f)-Codes (ausgenommen wenn 2/ = 2k~x, wenn sie mit einem Bose-AUED-Code zusammenfallen).
In einem Bose-AUED-Code ist die Anzahl voneinander verschiedener Prüfsymbole von Wör¬ tern, die zu B0(2k, k) gehören, gleich der Anzahl voneinander verschiedener Prüfsymbole von Wörtern, die zu ßi(2/c, k) gehören, welche 2k~x ist. In allen anderen Biswas-Sengupta-Codes ist die Anzahl voneinander verschiedener BQ(2k, /c)-Prüfsymbole kleiner als die der Bι(2k, k)- Prüfsymbole oder umgekehrt. Für Biswas-Sengupta-AUED-Codes gilt: Sei x G B^''(2k, k). Wenn x zum Berger-Typ-Code mit der kleineren Anzahl von Prüfsymbolen in B* '(2k, k) gehört, dann gehört x zum Berger-Typ-Code mit der größeren Anzahl von Prüfsymbolen in Eingebettete Checker für systematische ungeordnete Codes
In A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for AII- Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 wurden Berger-Code-Checker vorgestellt, die aus einer Mittelungs- schaltung und einem Register zum Speichern von Codewörtern bestehen. Eine Mittelungs¬ schaltung (MS) besteht aus zwei Teilen, wie in Figur 1 gezeigt wird. Der obere Teil vollführt eine Gewichts-Mittelungs-Operation auf den Informationsteilen χ(') und yW der Codewörter x und y durch und liefert z^'\ den Informationsteil des Ergebnisses z. Der untere Teil operiert auf den Prüfsymbolen χ(c) und y^ und berechnet ihren Mittelwert z^c\ Das am wenigsten signifikante Summenbit d\ ist der Rest der Division (x^ + y^) / 2. Die zwei D- Flip-Flops werden komplementär initialisiert. Es sei bemerkt, daß in der oberen Teilschaltung (im Gegensatz zu einem Addierer mit Übertragsweiterleitung) die Rollen des Summenbits und des Ausgabe-Übertragsbits vertauscht sind, d.h. der Summen-Ausgang des /-ten Vollad¬ dierers (VA) ist mit dem Ubertrags-Eingang des / + 1-ten Volladdierers verbunden, und der Übertrags-Ausgang des /-ten Volladdierers ist das /-te Bit des Ergebnisses der Operation. Für diese beiden Schaltungen gelten folgende Gleichungen:
(;) do _ w(x(0) + vKy«) + 4i]
2
Jc) 4 χ«0 + y(c) + q(c)
2 2
Sei x ein Berger-Codewort, das von der überwachten Schaltung erzeugt wird, und sei y ein Codewort, welches im Register gespeichert ist. Dann ist das Gewicht des Informationsteils von z das mittlere Gewicht der Informationsteile von x und y, und der Wert des Prüfsymbols von z ist der Mittelwert der Prüfsymbole von x und y. Somit ist z wiederum ein Berger- Codewort. Dieses Wort wird im Register gespeichert. Die Signale d0 und d\ werden als Fehlersignal verwendet, welches im fehlerfreien Fall ein Two-Rail-Signal ist und für den Fall, daß ein Nichtcodewort erscheint oder der Checker fehlerfaft ist, ein Nicht-Two-Rail-Signal.
Hier wird eine zweite, modifizierte Architektur dieses Checkers gezeigt. Sie unterscheidet sich von der des Checkers aus A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 darin, daß die zwei Teilschaltun¬ gen der Mittelungsschaltung jetzt verbunden sind. Der Summen-Ausgang d0 des letzten Volladdierers der Gewichts-Mittelungsschaltung (Informationsteil) ist verbunden mit dem Übertrags-Eingang des ersten Volladdierers (für das am wenigsten signifikante Bit) der Werte-Mittelungsschaltung (Prüfteil). Der Summen-Ausgang O1 ist über einen Inverter und ein D-Flip-Flop zurückgeführt zum Übertrags-Eingang der Gewichts-Mittelungsschaltung. Mit dieser Architektur arbeitet der Berger-Code Checker ähnlich wie der m-aus-n-Code- Checker, der in A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Check¬ ers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA1 April 1999, pp. 361-369 vorgeschlagen wurde: das am weitesten links stehende D-Flip-Flop ändert seinen Wert in jedem Takt, und die Bits CQ und dx haben immer die gleichen Werte. Da d\ ein sich periodisch änderndes Signal ist, wird es als Fehlersignal des Checkers (mit einem Ausgang) verwendet. Der neue Checker ist in Figur 2 gezeigt.
Beispiel: Tabelle 5 demonstriert das Arbeitsprinzip des Checkers für einen BQ (9, 4)-Berger- Code. x und y bezeichnen die beiden Eingaben der MS und z die Ausgabe. Das Gewicht von zW erhält man mit . Bit d0 = cjc) ist der Rest dieser Division. Auf die gleiche Weise erhält man das Prüfsymbol: z<c> = |_(x{c) +y(c) + c{0)) /2j , und dι ist der Rest der Division. Sind x und y Wörter desselben Berger-Codes, dann ist z ebenso ein Wort dieses Codes, und d± = CQ . Die Operation wird für beide Typen von Berger-Codes gezeigt (oben für ßo(9, 4), unten für ßi(9, 4)), sowohl für CQ = 0 als auch
CQ Informationsteil cfe Prüfsymbol O1
X 010111001 0100 y 010000100 Olli
Z 0 010010100 1 0110 0
Z 1 010101001 0 0101 1 c JoO Informationsteil do Prüfsymbol di
X 010111001 1010 y 010000100 1101
Z 0 010010100 1 1100 0
Z 1 010101001 0 1011 1
Tabelle 5
Es sei bemerkt, daß in Tabelle 5 das am meisten signifikante Bit X^1 links erscheint (wie auch in den vorangegangenen Tabellen), während in Figur 2 (wie auch in den anderen Figuren) x[_x auf der rechten Seite steht. Der vorgeschlagene Berger-Code-Checker ist selbsttestend bezüglich aller einfacher Haft¬ fehler, vorausgesetzt, daß keine Checker-Eingangsleitung ein konstantes Signal erhält, die überwachte Schaltung mindestens zwei Codewörter mit komplementären Prüfsymbolen er¬ zeugt und die Codewörter in zufälliger Abfolge erscheinen. (Der Beweis ist ähnlich wie der Beweis von Theorem 4 in A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369.)
Derselbe Checker kann auch für BQ (Π, /c)-Berger-Typ-Codes, 0 < s < 2k — l — n, verwendet werden und ist selbsttestend, wenn die obigen Bedingungen gelten. Auf diese Weise ist der Checker programmierbar. Der konkrete Code, welcher geprüft wird, hängt nur von der Codezugehörigkeit desjenigen Wortes ab, mit dem das Checker-Register initialisiert wurde. Es kann leicht gezeigt werden, daß diese Checker-Architektur auch für die anderen Berger- Typ-Codes verwendet werden kann, die im vorangegangenen Abschnitt beschrieben wurden.
Es sei bemerkt, daß einige Fehler mit einer Verzögerung von einigen Takten signalisiert wer¬ den und daß es eine geringe Wahrscheinlichkeit der Fehlermaskierung gibt. Beides hängt von der "Ruler"-Funktion des Fehlergewichts ab (die "Ruler" -Funktion r(x) bezeichnet die größte Zahl / für die 2' x teilt). Die Details dieses Verhaltens wurden in A. P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error De¬ tecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 analysiert und werden hier weggelassen. Es wurde gezeigt, daß Fehlerverzögerung und Mas¬ kierungswahrscheinlichkeit sehr gering sind. Sie können verringert oder vermieden werden, wenn man den kombinatorischen Teil des Checkers iteriert, was aber zu einer Vergrößerung der Checker-Hardware führt.
Der einfachste Weg, einen Checker für einen Bose-AUED-Code B* (2k, k) zu entwerfen, ist, zwei Checker parallel zu nutzen - einen für Berger-Typ-Code Bo(2k, k) und einen für Berger-Typ-Code Bι(2k, k). Für ein Bose-AUED-Codewort muß einer der beiden Checker einen Fehler signalisieren und der andere, daß kein Fehler vorhanden ist. Eine andere, aber effizientere Methode ist, die Bose-AUED-Codewörter in Berger-Typ-Codewörter zu übersetzen und die erhaltenen Wörter mit einem Berger-Typ-Code-Checker zu prüfen. Daher bestehen die hier beschriebenen Bose-AUED-Code-Checker aus einer Übersetzungsschaltung und einem Berger-Typ-Code-Checker. Damit der Checker selbsttestend ist, muß er die folgenden zwei Bedingungen erfüllen: 1. Die Übersetzungsschaltung muß selbsttestend sein. Das bedeutet, daß ein Fehler ein Nicht-Berger- Typ-Codewort für mindestens ein Codewort produziert, und für jeden Fehler ein Test-Codewort zur Verfügung gestellt wird.
2. Keine Eingabeleitung des Berger-Typ-Code-Checkers erhält ein konstantes Signal, und es gibt mindestens zwei komplementäre Prüfsymbole (siehe A. P. Stroele und S. Tar- nick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17t h IEEE VLSI Test Symposium, Dana Point, CA1 April 1999, pp. 361-369).
Es werden drei verschiedene Architekturen für Bose-AUED-Code-Checker betrachtet. Der erste Checker- Entwurf basiert auf dem Ansatz, der in S.W. Bums und N. K. Jha, "A To- tally Self-Checking Checker for a Parallel Unordered Coding Scheme," IEEE Transactions on Computers, Vol. 43, No. 4, April 1994, pp. 490-495 diskutiert wurde. Dort werden die Wörter des ß*(2fc, k) Codes in Bo(2k — 1, k) Berger-Codewörter übersetzt, welche dann mit einem Berger-Code-Checker geprüft werden. Der Berger-Code-Informationsbit-Vektor besteht nur aus 2^ — 1 Bits. Das verbleibende Informationsbit, beispielsweise XQ , wird ver¬ wendet, um die Transformation der Prüfbits zu steuern. Wenn XQ = 0 dann wird der Wert des am meisten signifikanten Prüfbits x£_x vom Prüfsymbol χ(c) subtrahiert, wenn XQ = 1 dann wird zu χ(c) addiert. Die Prüfsymbol-Transformation wird mit Halbaddierer-/ Halbsubtrahierer-Modulen implementiert, wobei XQ das Signal ist, welches steuert, ob die Module als Halbaddierer oder Halbsubtrahierer arbeiten.
Hier wird ein einfacherer Ansatz verwendet. Es wird nur x[_x zu X^ addiert. Daher werden nur Halbaddierer (HA) für die Prüfsymbol-Transformation benötigt (siehe Figur 3). Die Übersetzungsschaltung ist in Figur 4 gezeigt. Die Schaltung übersetzt einen B*(2k, k)- Code in einen ßo^, /c)-Code. Für X^1 ist der HA zu einem ODER reduziert da kein Übertrags-Ausgang benötigt wird und das erste UND-Gatter niemals die Signalkombination xy = 11 an seinen Eingängen erhält. Die Informationsbits bleiben unverändert.
Der B*{2k , /c)-Code-Übersetzer auf der Basis von Halbaddierern bildet jeden (einfachen oder mehrfachen) unidirektionalen Fehler auf ein Nicht-ßo(2/t, /c)-Wort ab. Dies kann wie folgt gezeigt werden. Ein Fehler, der nicht Bit X^1 betrifft, wird auf ein ßo(2/c, k)- Nichtcodewort x' abgebildet, welches einen Fehler an denselben Bitpositionen wie x hat. Wenn x^_x betroffen ist, dann weicht der Wert von x'^ um mindestens 2^-1 — 1 vom korrekten Prüfsymbolwert ab, und der Fehler wird vom ßo(2/c, /c)-Code-Checker erkannt. Es läßt sich leicht nachprüfen, daß die Prüfsymbole 2' - 1 (/ = 0, . . . , k) und 2k~x den gesamten Übersetzer (bezüglich einfacher Haftfehler) testen. Jeder HA erhält alle 4 Bitkom¬ binationen, und das ODER-Gatter erhält aller Kombinationen außer 11, welche für den Test auch nicht notwendig ist. Da es unter diesen Vektoren keine zwei B*(2k , /c)-Code- Prüfsymbole χ(c) und y^ gibt, welche 60(2^, /c)-Code-Prüfsymbole x'^ und y'^ erzeu¬ gen, die komplementär sind, wird ein zusätzliches Prüfsymbol benötigt (zum Beispiel y^ — 011 . . . 110, für welches /W = 011 . . . 111 komplementär zu x'^ = x^ = 100 . . .000 ist). Somit werden nur k + 3 Codewörter benötigt, um den gesamten Checker zu testen (immer angenommen, daß kein Informationsbit konstant ist). Da k klein ist (k = log2 n), ist nur eine kleine Anzahl von Codewörtern notwendig, um den Checker zu testen.
Es ist wichtig, zu bemerken, daß der beschriebene Checker (bestehend aus dem B*(2k, k)- nach-ßo(2/t, /c)-Code- Übersetzer und einem 60(2^, /c)-Code-Checker) nicht Code-trennend ist. Als Beispiel betrachte man die ß,„(8, 3)-Codewörter 11110000 011 und 00001111 011, die die Informationsbit-Vektoren, die nur aus Nullen bzw. nur aus aus Einsen bestehen, repräsentieren. Jedes andere Wort, welches dasselbe Prüfsymbol und einen Informations¬ teil mit Gewicht /ci = 4 hat, ist ein Nichtcodewort. Bei der Codewort- Übersetzung wird ein solches Nichtcodewort in ein gültiges B0(2k, /c)-Codewort transformiert und wird nicht erkannt. Jedoch ist der Zweck des Bose-AUED-Codes und des Checkers, unidirektionale Fehler zu erkennen, aber ein unidirektionaler Fehler ist nicht in der Lage ein B*(2k, k)- Codewort in ein Berger-Typ-Codewort zu transformieren, das nicht zum B%(2k, /c)-Code gehört. Daher hindert die Eigenschaft des Checkers, nicht Code-trennend zu sein, diesen nicht daran, alle unidirektionalen Fehler zu erkennen.
Die zweite Architektur basiert auf der Eigenschaft, daß das zu einem B0(2k, /c)-Wort kom¬ plementäre Wort zu Bι(2k, k) gehört und umgekehrt. Die Idee ist, jedes B^,(2k, /c)-Bose- AUED-Codewort x auf ein Bχ{2k , /c)-Berger-Typ-Codewort x' abzubilden. Wenn x bereits zu Bι(2k, k) gehört, dann bleibt es unverändert. Wenn x zu B0(2k, k) gehört, dann wird jedes Bit von x invertiert. Zu welchem Berger-Typ-Code x gehört wird durch das am meisten sig¬ nifikante Prüfbit X^1 bestimmt, welches 1 ist für B0(2k, k) und 0 für Bx(2k, k). Daher wird die Übersetzung durchgeführt durch bitweises XOR aller Bits von x mit x^_x. Das erhaltene Wort x' hat nur k — l Prüfbits. x[_x wird nicht benötigt, da XOR von x£_χ mit sich selbst immer 0 ergibt. Aber dieses Bit wird ohnehin nicht benötigt, weil x'M niemals ein Gewicht kleiner als 2k~λ haben kann und somit das ßi-Prüfsymbol nicht größer als 2k~x — 1 sein kann. Die Übersetzungs-Schaltung wird in Figur 5 gezeigt. Sie übersetzt einen B^.(2k, /c)-Code in einen Sf2 (2k, k — 1)-Code, welcher mit einem ßo ~1(2/c, k — 1)-Code identisch ist. Auf analoge Weise kann auch ein Bit.{2k , /c)-Code in einen B1 1(2k, k — 1)-Code durch bitweises XOR aller Codewort- Bits mit dem Inversen von X^1 übersetzt werden. Die nachfolgenden Betrachtungen gelten auch für diese Übersetzung und werden weggelassen.
Der XOR-basierte ß*(2k, /f)-nach-ßo "1(2/c, k - 1)-Code-Übersetzer bildet jeden (einfachen oder mehrfachen) unidirektionalen Fehler auf ein Nicht-ß^"1(2/c, k — 1)-Wort ab. Dies kann wie folgt nachgewiesen werden. Ein Fehler, der nicht Bit X^1 betrifft, wird auf ein BQ 1(2I<, k — I)- Nichtcodewort x' abgebildet, welches einen Fehler an denselben Bitpo¬ sitionen wie x hat. Sei jetzt nur durch den Fehler betroffen und man nehme an, daß dieser vom 0 — )► 1-Typ ist. Da jetzt X^1 = 1 ist, werden alle Bits des Codeworts invertiert. Weil für X^1 = 0 immer kx > 2k~ι galt, gilt jetzt ko' > 2*-\ wobei kQ' die Anzahl der Nullen in x' bezeichnet. Weil in BQ 1(2I<, k - 1) immer 1 < kQ' < 2k~x gilt, ist der einzige Fall, in dem der Fehler nicht erkannt werden würde, der, wenn /f0 = kγ = 2k~λ . Aber dies kann nur dann passieren, wenn alle anderen Bits außer xζ_x von einem 1 — > O-Fehler betroffen werden würden. Dann kann der Fehler aber nicht unidirektional sein. Sei jetzt angenommen, daß neben auch andere Prüfbits und/oder Informationsbits durch einen 0 — > 1-Fehler betroffen sind. Dies führt zu derselben Situation, daß ko' > 2k~ι, so daß x' ein Nichtcodewort in ß^"1(2'c,/c — 1) wird. Eine analoge Argumentation kann verwendet werden, wenn der Fehler vom 1 — )• O-Typ ist.
Für den Test der Übersetzungsschaltung ist es nur erforderlich, daß jedes XOR-Gatter alle 4 Bitkombinationen erhält. Eine minimale Testmenge ist in Tabelle 6 angegeben. Da diese Menge auch Vektoren enthält, deren Prüfsymbole χ(c) in komplementäre Prüfsymbole x'^ aus BQ 1(2I<, k — 1) transformiert werden, ist auch Bedingung 2 erfüllt.
x (0 (c)
00. ..0 11.. .1 10. ..0
11. ..1 00.. .0 10. ..0
10. ..0 00.. .0 11. ..1
Ol. ..1 11.. .1 00. ..0
00. ..0 11.. .1 01. ..1
11. ..1 00.. .0 01. ..1
Tabelle 6
Diese Checker-Architektur ist wiederum nicht Code-trennend im üblichen Sinne. Aber wiederum können die einzigen Nichtcodewörter, die der Checker nicht in der Lage ist, zu erkennen, niemals durch unidirektionale Fehler verursacht werden, und die Eigenschaft des Checkers, nicht Code-trennend zu sein hindert ihn nicht daran, alle unidirektionalen Fehler zu erkennen.
Die dritte Architektur folgt einer ähnlichen Idee wie die HA-basierte Architektur, mit dem Unterschied, daß in Abhängikeit von x[_x nicht der Wert des Prüfsymbols um 1 erhöht wird, sondern das Gewicht des Informationsbit- Vektors. Es wird einfach eine invertierte Kopie des am meisten signifikante Prüfbits zu den Informationsbits hinzugefügt, so daß x„ = das zusätzliche Informationsbit ist. Somit haben nach der Code-Transformation alle Codewörter ein Prüfsymbol, welches /CQ — 1 repräsentiert. Auf diese Weise wird der B*(2k, /c)-Code in einen ßo ~1(2/( + l, /e)~Code übersetzt. Im ßo ~1(2/t + l, /c)-Code hat ein Informationsbit- Vektor mindestens eine und höchstens 2k Nullen, so daß 0 < /CQ — 1 < 2fe — 1 und somit k Prüfbits ausreichend sind. Die BA.(2k, + l, /φCode-Ubersetzungs-Schaltung besteht aus einem einfachen Inverter.
Die B*(2k, /c)-nach-ßo ~1(2/c + 1, /c^-Code-Übersetzungs-Schaltung bildet jeden (einfachen oder mehrfachen) unidirektionalen Fehler auch ein Nicht-ß^1(2'c 4- l, /c)-Wort ab. Dies kann wie folgt gezeigt werden. Ein Fehler, der nicht Bit x^_x betrifft, wird auf ein ßo "1(2/c + l, k)- Nichtcodewort x' abgebildet, welches einen Fehler an denselben Bitpositionen wie x hat. Sei jetzt Bit x^_x durch den Fehler beeinflußt. Es sei angenommen, daß der Fehler ein 0 —> 1-Fehler ist. Dies bedeutet, daß das Prüfsymbol x^ mindestens 2k~ι mehr Nullen anzeigt, aber in χ(') kann es höchstens eine Null mehr geben (Informationsbit Xn , welches jetzt gleich 0 statt 1 ist infolge des Fehlers). Wenn zusätzliche Informationsbits betroffen sind, dann ist die Anzahl der Nullen in χ(') sogar noch geringer und der Unterschied zum fehlerhaften χ(c) ist sogar größer. Ähnliche Aussagen treffen für 1 -¥ 0-Fehler zu.
Es ist leicht zu sehen, daß der Checker, der aus dem B*(2k, /c)-nach-ßo "1(2/c + 1, /c)-Code- Übersetzer und dem ß^1(2/c + 1, /c)-Code~Checker besteht, selbsttestend ist unter der Be¬ dingung, daß keine Eingabeleitung ein konstantes Signal erhält, die Codewörter in zufälliger Abfolge erscheinen und es mindestens zwei komplementäre Prüfsymbole gibt. Der Checker ist erneut nicht Code-trennend, jedoch in der Lage, alle unidirektionalen Fehler zu erkennen.
Die Checker-Architekturen für Biswas-Sengupta-AUED-Codes B* (2k, k) sind ähnlich zu denen für Bose-AUED-Codes B*(2k, k). Der Hauptunterschied ist, daß die Unterscheidung, ob ein Codewort zu B0(2k, k) oder zu Bx{2k , k) gehört, nicht allein mit Hilfe des am meisten signifikanten Prüfbits X^1 gemacht werden kann. Stattdessen erfolgt sie durch Prüfung, ob χ(c) > 2/ — 1. Dies wird implementiert durch Verwendung eines Größenvergleichers (Magnitude Comparator).
Diese Größenvergleicher sind sehr einfach, da x^ mit einem konstanten Wert verglichen wird. Ein Beispiel ist in Figur 6 gezeigt. Die Schaltung prüft für ein 5-Bit Prüfsymbol x(c), ob x^ = xf* x^c) xf> x[c) xf1 > 01101. Der Größenvergleicher benötigt höchstens k — 1 Gatter mit zwei Eingängen. Im Beispiel ist Bit xjf ' nicht notwendig. Für einen Bose- AUED-Code (welcher ein spezieller Biswas-Sengupta-AUED-Code ist) ist sogar überhaupt kein Gatter notwendig - es wird einfach genommen. Der Vergleicher benötigt höchstens k + 1 Testvektoren.
Es wird nun gezeigt, daß ein unidirektionaler Fehler nicht auf ein Berger-Typ-Codewort abgebildet werden kann. In der HA-basierten Übersetzungsschaltung, die in Figur 4 gezeigt wird, wird jetzt der invertierte Ausgang des Größenvergleichers zu χ(c) addiert statt des invertierten Wertes von x[c}v Die Funktion, die durch den Größenvergleicher implementiert wird, sei mit f(x^) bezeichnet, d.h.
0 für x<« < 2/ - 1, f{x^) =
1 für xM > 2/ - l.
In der Halbaddierer-basierten Übersetzungsschaltung kann kein (einfacher oder mehrfacher) unidirektionaler Fehler in ein So^, /c)-Codewort transformiert werden. Dies kann wie folgt nachgewiesen werden. Zuerst wird der Fall betrachtet, daß der Fehler nur auf das Prüfsymbol χ(c) wirkt. Es sei angenommen, daß das ß* (2fc, /c)-Codewort vom ßi-Typ ist, d.h. χ(c) < 2/ — 1 und f(χ(c)) = 0, was bedeutet, daß 1 zu χ(c) addiert wird. Wenn der Fehler nicht f(x^) beeinflußt, dann wird er auf ein ßo^, k)- Nichtcodewort x' abgebildet, welches einen Fehler an denselben Bitpositionen wie x hat. Wenn der Fehler f(x^) beeinflußt, dann kann er nur vom 0 — » 1-Typ sein, weil χ(c) größer als 2/ — 1 geworden sein muß, was im Fall eines unidirektionalen Fehlers nur möglich ist durch das Andern von Nullen in Einsen. Da jetzt f(χ(c)) = I1 wird keine 1 zu χ(c) hinzuaddiert. Die einzige Möglichkeit, daß der Fehler nicht erkannt wird, ist die, daß der Wert von χ(c) dennoch um 1 erhöht wird. Dies kann nur dann der Fall sein, wenn das am wenigsten signifikante Prüfbit XQ von 0 nach 1 wechselt. Der einzige Fall, wo die Addition von 1 zu x^ den Wert von f(x^) von 0 nach 1 ändert, tritt auf, wenn χ(c) = 2/ — 1. Weil in diesem Fall aber bereits x^ = 1 ist, kann der Fehler nicht vom 0 — > 1-Typ sein, was zu einem Widerspruch führt. Auf ähnliche Weise kann dies gezeigt werden für ß* (2fc, /c)-Codewörter, die vom ßo-Typ sind. Aus der obigen Argumentation ist leicht zu sehen, daß ein 0 -> 1-Fehler x1^ nur vergrößern kann. Wenn zusätzlich oder nur Informationsbits betroffen sind, dann ist die Anzahl der Nullen verringert und der Fehler wird vom Bo(2k, /c)-Code-Checker erkannt, welcher x' prüft. Ähnliche Aussagen gelten, wenn der Fehler vom 1 — > O-Typ ist.
Die XOR-basierte Übersetzung von Biswas-Sengupta-AUED-Codes unterscheidet sich etwas von der für Bose-AUED-Codes. Die bitweise Komplementierung ist hier nur für diejenigen Wörter erlaubt, die zum Berger-Typ-Code mit der kleineren Anzahl von Prüfsymbolen in B* {2k, k) gehören. Ein weiterer Unterschied ist, daß das am meisten signifikante Prüfbit bit x£_x noch notwendig ist, so daß der ß* l'(2k, /c)-Code in einen Berger-Typ-Code mit k statt k — 1 Prüfbits übersetzt wird. Demzufolge muß auch für Prüfbit X^1 die XOR- Operation mit dem Ausgang oder invertierten Ausgang des Größenvergleichers durchgeführt werden. Ein Problem ist, daß die XOR-Gatter für die höherwertigen Prüfbits entweder die Signalkombination Ol oder 10 eventuell nicht erhalten. Dies wird gelöst, indem jedes der betroffenen XOR-Gatter ersetzt wird durch ein UND-Gatter mit einem invertierten Eingang. Die minimale Anzahl von Codewörtern, die alle XOR-Gatter und UND-Gatter testen, ist 2k / (2k-1 - \2i - 2k-1\) + 4.
In der XOR-basierten Übersetzungsschaltung mit einem Größenvergleicher kann kein (ein¬ facher oder mehrfacher) unidirektionaler Fehler in ein Codewort transformiert werden. Dieser Sachverhalt kann wie folgt nachgewiesen werden. Zuerst sei der Fall betrachtet, daß der Fehler nur auf das Prüfsymbol χ(c) wirkt. Es sei angenommen, daß das B* (2k, /c)-Codewort vom ßi-Typ sei, für welchen angenommen ist, daß er der Berger-Typ-Code mit der kleineren Anzahl von Prüfsymbolen in k) ist. Wenn der Fehler f(χ(c)) nicht beeinflußt, dann wird er auf ein Nichtcodewort x' abgebildet, welches einen Fehler an denselben Bitpositionen wie x hat. Wenn der Fehler f(x^) beeinflußt, dann kan er nur vom 0 — > 1-Typ sein, weil χ(c) größer als 2/ — 1 geworden sein muß, was im Fall eines unidirektionalen Fehlers nur möglich ist durch das Andern von Nullen in Einsen. Wegen f(x^) = 1 wird das Codewort Bit für Bit invertiert. Da jetzt x' vom ßo-Typ ist, ist der Prüfsymbolwert um 1 vergrößert (verglichen mit wenn x' vom ßi-Typ wäre). Da aber x^ aufgrund des Fehlers größer gewor¬ den ist, ist das invertierte Prüfsymbol kleiner geworden. Somit verhindert die Einwirkung des Fehlers auf f(x^) nicht seine Erkennung. Ähnliche Aussagen gelten, wenn der ßo~Typ- Code derjenige Code ist für den angenommen wird daß er der Berger-Typ-Code mit der kleineren Anzahl von Prüfsymbolen in k) ist. Ein Fehler in einem Wort x welches zu einem Berger-Typ-Code mit der größeren Anzahl von Prüfsymbolen in ß* (2k, k) gehört und/oder im Informationsbit- Vektor χ(') wird auf ein Nichtcodewort x' abgebildet, welches einen Fehler an denselben Bitpositionen wie x hat und somit erkannt. In der Inverter-basierten Übersetzungsschaltung mit einem Größenvergleicher kann kein (ein¬ facher oder mehrfacher) unidirektionaler Fehler in ein ß^"1(2/t + l, /c)-Codewort transformiert werden. Der Nachweis dieses Sachverhalts ist ähnlich dem für den HA-basierten Fall. In der Halbaddierer-basierten Übersetzungsschaltung wird das Komplement des Größenvergleicher- Ausgangs f(x^) zu χ(c) addiert. Im Inverter-basierten Übersetzer ist das Komplement von f(χ(c)) das zusätzliche Informationsbit xj, . Wenn zum Beispiel f(x^) = 0 (was im HA- basierten Übersetzer der Addition von 1 zu χ(c) entspricht), dann ist x„ = 1 (was bedeutet, daß χ(') eine Null weniger hat, als wenn f(x^) = 1 wäre, und dies wiederum entspricht einer Vergrößerung von x^ um 1).
Der nachfolgende Vergleich zeigt die Vorteile der verschiedenen Checker-Architekturen ge¬ genüber dem Stand der Technik. Der Vergleich umfaßt Hardware- Größe, Größe der mini¬ malen Testmenge und die Eigenschaft, Code-trennend zu sein.
Alle hier betrachteten Checker-Architekturen bauen auf einem Berger-Typ-Code-Checker auf. Dieser Checker ist ähnlich aufgebaut wie der in A. P. Stroele und S. Tarnick, "Pro- grammable Embedded SeIf- Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 beschriebene Checker, und seine Eigenschaften werden hier nicht näher diskutiert. Die in Figur 2 gezeigte Version mit einem Ausgang besteht aus 2k + k Volladdierern, 2k + /r + 1 D-Flip-Flops und einem Inverter. Die Version mit zwei Ausgängen hat ein zusätzliches D-Flip-Flop und einen zusätzlichen Inverter. Der Checker ist selbsttestend unter der Voraussetzung, daß keine Eingabeleitung ein konstantes Signal erhält, er zwei Prüfsymbole erhält, die komplementär sind und die Codewörter in zufälliger Abfolge erscheinen. Zwei Codewörter reichen aus, um den gesamten Checker zu testen. Somit ist die Eigenschaft, selbsttestend zu sein, prak¬ tisch unabhängig von der Menge der von der zu überwachenden Schaltung zur Verfügung gestellten Codewörter erreicht.
Die Hardware-Größe wird verglichen mit der eines eingebetteten B0(2k, k + 1)-Berger-Code- Checkers. Die Zahlen geben an, wieviel Gatter mehr oder weniger benötigt werden. Die Hardware-Größendifferenz umfaßt somit die Gatterzahl für die jeweilige Übersetzungsschal¬ tung und Teile des Berger-Typ-Code-Checkers, die aufgrund veränderter Code-Parameter im Vergleich zum 60(2*, k + 1)-Berger-Code-Checker zusätzlich benötigt oder eingespart werden. Für die Bestimmung der Gatterzahlen werden folgende Werte zugrunde gelegt: UND- und ODER-Gatter mit zwei Eingängen zählen jeweils als ein Gatter und zwei Inverter werden als ein Gatter gezählt. Entsprechend Theorem 4 in A. P. Stroele und S. Tarnick, "Pro- grammable Embedded SeIf- Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 bestehen die Volladdierer für den Informationsteil des Berger-Code-Checkers aus zwei separaten Teilschal¬ tungen zur Berechnung der Summe und des Übertrags, und die Volladdierer für den Prüfteil sind wie in A. P. Stroele and S. Tarnick, "Embedded Checker Architectures for Cyclic and Low-Cost Arithmetic Codes," Journal of Electronic Testing, Vol. 16, August 2000, pp. 355- 367 implementiert, so daß sie aus 12 bzw. 15 Gattern bestehen. Ein Halbaddierer besteht aus 3,5 Gattern, und D-Flip-Flops und XOR-Gatter werden aus 4 Gattern bestehend angenom¬ men. Zunächst werden Bose-AUED-Code-Checker verglichen.
Die Checker-Architektur aus S.W. Bums und N. K. Jha, "A Totally Self-Checking Checker for a Parallel Unordered Coding Scheme," IEEE Transactions on Computers, Vol. 43, No. 4, April 1994, pp. 490-495 benötigt 6(/c - 2) + 11 Gatter für die Übersetzungsschaltung. Zusätzlich werden durch die Code-Übersetzung ein Informationsbit und ein Prüfbit gespart, so daß beim B0(2k — l, k)- Berger-Code-Checker im Vergleich zu einem Bo(2k, /c+l)-Berger- Code-Checker zwei Volladdierer und zwei D-Flip-Flops nicht benötigt werden. Zusammenge¬ faßt ist die zusätzliche Gatterzahl 6(/c — 2) — 24. (Obwohl in der ursprünglichen Architek¬ tur von Burns und Jha ein Berger-Code-Checker mit einer anderen Architektur verwendet wird, wurde zur Vereinfachung des Vergleichs ein Berger-Code-Checker entsprechend Figur 2 angenommen.) Die minimale Testmenge besteht aus höchstens 2/c+16 Codewörtern. Unter allen hier diskutierten Architekturen ist sie die einzige, die Code-trennend im herkömmlichen Sinn ist.
Der HA-basierte Übersetzer benötigt 3,5(/c — 1)+1,5 Gatter, und er spart einen Volladdierer für die Prüfsymbole und ein D-Flip-Flop, was zusammen 3,5(/c — 1)- 17,5 zusätzliche Gatter ergibt. Die minimale Testmenge besteht aus k + 3 Codewörtern. Der Checker ist Code¬ trennend bezüglich unidirektionaler Fehler.
Die Gatterzahl für den XOR-basierten Übersetzer ist 4(2^ + k - 1). Da 2 Prüfbits weniger benötigt werden reduziert sich die Zahl der zusätzlichen Gatter auf 4(2^ + k — 1) — 38. Die minimale Testmenge besteht aus 6 Vektoren und der Checker ist Code-trennend bezüglich unidirektionaler Fehler.
Der Inverter-basierte Übersetzer benötigt nur einen Inverter. Es wird ein zusätzliches Infor¬ mationsbit benötigt aber ein Prüfbit eingespart, so daß der Checker 2,5 Gatter im Vergleich zu einem Berger-Code-Checker spart. Die minimale Testmenge besteht aus 2 Vektoren. Verglichen mit den anderen Architekturen ist dies keine spezielle Testmenge. Die einzige Forderung ist, daß sie komplementäre Prüfsymbole enthält. Der Checker ist Code-trennend bezüglich unidirektionaler Fehler.
Tabelle 7 faßt die Eigenschaften der verschiedenen Checker-Architekturen für Bose-AUED- Codes zusammen. Die erste Spalte zählt die Architekturen auf, wobei Burns, HA, XOR und INV die Architektur von Burns und Jha sowie die Halbaddierer-, XOR- bzw. Inverter- basierte Architektur bezeichnen. Die zweite Spalte zeigt die Anzahl der zusätzlichen Gatter im Vergleich zu einem eingebetteten Berger-Code-Checker und die dritte Spalte die Größe einer minimalen Testmenge. Spalte 4 gibt an, daß nur der Checker von Burns und Jha uneingeschränkt Code-trennend ist. Alle anderen sind Code-trennend bezüglich aller unidi¬ rektionaler Fehler. Figur 7 vergleicht die Zahlen der gegenüber einem B0(2k, k + 1)-Berger- Code-Checker zusätzlich benötigten Gatter für die verschiedenen Architekturen.
Architektur Anz. zusätzl. Gatter min. Anz . Tests Code-trennend
Burns 6(A- - 2) - 24 2k + 16 ja
HA 3,5(/r - l)-17,5 k + 3 unidir. Fehler
XOR 4(2* + k - 1) - 38 6 unidir. Fehler
INV -2,5 2 unidir. Fehler
Tabelle 7
Die Figur zeigt, daß die Architektur von S.W. Burns und N. K. Jha, "A Totally Self-Checking Checker for a Parallel Unordered Coding Scheme," lEEE Transactions on Computers, Vol. 43, No. 4, April 1994, pp. 490-495 für k < 5 die geringste Anzahl von Gattern benötigt. Die XOR-basierte Architektur hat nur Vorteile für den Fall k = 2, welche nicht von praktischem Interesse ist. Wenn jedoch in der Ubersetzungsschaltung XOR-Gatter als ein Gatter gezählt werden (z.B. wenn sie mit Pass-Transistor-Logik implementiert sind) dann ist die Anzahl zusätzlicher Gatter nur 2k + k — 39, so daß die XOR-basierte Architektur für k < 5 die beste wird (Kurve "XOR*" ), auch aufgrund der Tatsache daß sie die geringste Anzahl von Codeword-Tests unter allen Architekturen benötigt, welche vom Hardwarebedarf her vorteilhaft für k < 5 sind. Für k > 6 benötigt die Inverter-basierte Architektur die geringste Hardware. Desweiteren benötigt sie für alle k nur 2 Codewort-Tests, und die Eigenschaft, selbsttestend zu sein, ist erreicht fast unabhängig von der Menge der von der überwachten Schaltung bereitgestellten Codewörter. Verglichen mit einem entsprechenden Berger-Code- Checker wird nicht nur eine Leitung für die Prüfbits gespart sondern auch der Hardware- Bedarf ist etwas geringer. Die eingebetteten Biswas-Sengupta-Code-Checker besitzen zusätzlich einen Größenverglei- cher welcher aus höchstens k—l zusätzlichen Gattern besteht und höchstens /c+1 zusätzliche Codewort-Tests benötigt (ausgenommen die XOR-basierte Architektur, welche 2fc / (2/t~1 — 12/ - 2*"1!) + k + 5 Testvektoren erfordert).
Die Anzahlen der Testvektoren, die in Spalte 3 von Tabelle 7 angegeben sind, bedeuten nicht, daß nach Anwendung der Vektoren der entsprechenden Testmenge die entsprechende Checker-Architektur getestet ist. Vielmehr ist es erforderlich, daß diese Vektoren in zufälliger Abfolge wiederholt erscheinen. Eine solche Vektorfolge (die auch zusätzliche Vektoren ent¬ halten kann) ist in der Lage, den entsprechenden Checker zu testen. Ein detaillierter Beweis wird in AP. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 gegeben. Darüberhinaus ist die Größe der Testmenge nicht das Hauptkriterium für die Testbarkeit. Wichtig ist, daß die Ubersetzungsschaltung getestet wird und die Testbedingungen für den Berger-Typ-Code-Checker (keine Eingabeleitung ist kon¬ stant, die Codewörter erscheinen in zufälliger Abfolge und es gibt zwei Codewörter mit kom¬ plementären Prüfsymbolen) erfüllt sind. Die Größe der Codewort-Testmenge unterscheidet sich von Fall zu Fall und hängt davon ab, welche Codewort- Menge die überwachte Schaltung erzeugt. Die Umfange der kleinsten dieser Testmengen sind in Tabelle 7 angegeben.
Bisher wurden bei der Testbarkeitsanalyse nur einfache Haftfehler betrachtet. Die hier vorgestellten Checker-Architekturen sind jedoch auch selbsttestend bezüglich einer wesent¬ lich größeren Menge von anderen Fehlern. Die Halbaddierer und XOR-Gatter der Über- setzungsschaltungen erhalten alle Signalkombinationen, so daß sie vollständig getestet wer¬ den und jeder kombinatorische Fehler erkannt wird. In A.P. Stroele und S. Tarnick, "Pro¬ grammable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369 wurde gezeigt, daß beim betrachteten Berger-Code-Checker in den Addierern für den Informationsteil jeder kombinatorische Fehler in den Teilschaltungen, die Summer und Übertrag berechnen, gete¬ stet wird, und daß in jedem Addierer für den Prüfteil jedes Gatter mit allen möglichen Bitkombinationen getestet wird, mit Ausnahme eines XOR-Gatters. Die gleichen Aussagen treffen auch auf die hier betrachteten Berger-Typ-Code-Checker zu. Somit werden neben allen einfachen Haftfehlern auch die meisten kombinatorischen Fehler innerhalb eines Moduls erkannt, da die meisten Module vollständig getestet werden. Die Testbarkeitsanalyse für Fehler, die sequentielles Verhalten zur Folge haben erfordert im allgemeinen die Kenntnis der speziellen Architektur jedes Moduls, welche jedoch offen gelassen wurde. Unter der Annahme, daß die Codewörter wiederholt in einer zufälligen Abfolge erscheinen, werden für jedes Modul eines Übersetzers auch alle 2- Vektor-Tests erzeugt. Somit werden auch alle se¬ quentiellen Fehler innerhalb eines Moduls erkannt, unabhängig von der Modul-Architektur. Für den Berger-Typ-Code-Checker ist die Beurteilung der Erkennbarkeit sequentieller Fehler jedoch nicht möglich ohne Kenntnis der Modul-Architektur und der von der überwachten Schaltung erzeugten Codewort-Menge.
Bis hierher wurden nur die Basis-Architekturen der Checker diskutiert. In diesen Architek¬ turen sind die Signallaufzeiten relativ groß. Dies liegt hauptsächlich an den Addierer-Ketten der Berger-Typ-Code-Checker. Es gibt zwei Ansätze, die Geschwingkeit der Checker zu verbessern. Die erste Möglichkeit besteht darin, die in Figure 2 dargestellte verbundene Mittel u ngsscha Itu ng in zwei unabhängige Teilschaltungen derart aufzuspalten, daß jede der beiden Teilschaltungen höchstens \(n + k) / 2] Volladdierer umfaßt. Diese modifizierte Mittelungsschaltung ähnelt dann der in Figur 1 gezeigten Schaltung, wobei der obere Teil aus nur |~(π + k) / 2] Volladdierern besteht und die übrigen n — \(n + k) / 2] Volladdierer unter Beibehaltung ihrer Verbindungsstruktur zwischen das D-Flip-Flop und den Eingang CQ der unteren Teilschaltung plaziert werden. Auf diese Weise umfaßt der längste Pfad, den Signal CQ zurücklegen muß, höchstens \{n + k) / 2] Volladdierer, statt n bzw. n + k. Eine weitere Beschleunigungs-Möglichkeit besteht darin, die M ittelu ngsscha Itu ng mit einer Struktur ähnlich einem Carry-Select-Addierer zu implementieren. Bei der Teilschaltung für die Prüfsymbole kann dies direkt gemacht werden, da diese ein Addierer ist. Aber eine Modifikation dieser Teilschaltung im allgemeinen nicht notwendig, da k klein im Vergleich zu n ist. Bei der Gewichtsmittelungs-Schaltung ist der einzige Unterschied zu einem Ad¬ dierer der, daß die Rollen des Summenbits und des Übertragsbits vertauscht sind, so daß dies eine Sum-Select- Struktur wird. Diese Modifikation erfordert jedoch mehr Hardware als die Basis-Architektur. Beide Beschleunigungsmöglichkeiten können natürlich miteinander kombiniert werden.
Die Versionen der diskutierten Checker mit einem und mit zwei Ausgängen unterscheiden sich kaum in ihrer Architektur. Die Code-Übersetzungsschaltungen sind für beide Versionen die gleichen. Der Unterschied beruht auf der Architektur der Berger-Typ-Code-Checker welche zwei Ausgänge haben können, die im fehlerfreien Fall ein Two-Rail-Signal ausgeben, oder einen Ausgang, der seinen Wert in jedem Takt ändert. Beide Versionen habe ihre Vorteile. Wenn in einem selbstprüfenden System Checker mit zwei Ausgängen durch Checker mit einem periodischen Ausgang ersetzt werden, dann bilden komplementäre Ausgaben zweier Checker mit einem Ausgang wieder ein Two-Rail-Signal. Auf diese Weise wird die Größe eines globalen Two-Rail-Code-Checkers, der die Signale aller untergeordneten Sub-Checker auswertet, reduziert. Somit führen die Checker-Versionen mit einem Ausgang zu einem geringeren Hardware-Aufwand für das Gesamtsystems. Die Versionen mit zwei Ausgängen hingegen haben eine höhere Operationsgeschwindigkeit, speziell dann, wenn die Mittelungs- schaltung wie im vorangegangenen Absatz beschrieben aufgespalten ist.
In N. K. Jha, "Design of Sufficiently Strongly Self-Checking Embedded Checkers for Syste- matic and Separable Codes," International Conference on Computer Design, Cambridge, MA, October 1989, pp. 120-123 wurde ein sehr allgemeines Verfahren zum Entwurf einge¬ betteter Checker für systematische Codes vorgeschlagen. Aber dieses Verfahren erfordert die vollständige Kenntnis des von der Schaltung erzeugten Teilcodes, die Checker-Architektur hängt vom Inhalt dieses Teilcodes ab und Wörter, die zum Code, aber nicht zum Teilcode gehören, werden als Fehler angesehen. Verglichen dazu sind die Architekturen der hier disku¬ tierten Checker unabhängig vom Teilcode, die Eigenschaft, selbsttestend zu sein, hängt nur von schwachen Bedingungen an den Teilcode ab, und Codewörter, die nicht zum Teilcode gehören, werden nicht als Fehler signalisiert. Derartige Codewörter können auch gar nicht auftauchen, da ein unidirektionaler Fehler nicht in der Lage ist, ein Codewort (welches zum Teilcode gehört) in ein anderes Codewort (das nicht zum Teilcode gehört) zu verfälschen. Somit sind die vorgestellten Architekturen sehr gut geeignet auch für den Fall, daß der Teilcode nicht vollständig bekannt ist.
Bezugszeichenliste
D-FF D-Flip-Flop
GMS Gewichts-Mittelungsschaltung
MS Mittelungsschaltung
HA Halbaddierer
VA Volladdierer

Claims

Patentansprüche
1. Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung eines systema¬ tischen ungeordneten Codes C1 dessen Wörter x einen n-Bit Informationsbit- Vektor x(0 = χWχ(<) ^ xW1 und ein k_B]t Prüfsymbol x<c) = xjc)x{c) . . . X^1 aufweisen, dadurch gekennzeichnet, daß das Gewicht w(x^) = ∑JIQ Xj des Informationsbit- Vektors χ(') mindestens einen vorgebbaren Wert W0 > 0 und/oder höchstens einen vorgebbaren Wert w\ < n an¬ nimmt, d.h. W0 < ι/ι/(χW) < Wi, und
• für alle Prüfsymbole gilt, daß x^ die binäre Darstellung der um n — Wχ vermin¬ derten Anzahl k0 der Nullen des Informationsbit- Vektors χ(') ist oder
• für alle Prüfsymbole gilt, daß χ(c) das bitweise Komplement der binären Darstel¬ lung der um W0 verminderten Anzahl k\ = w(χW) der Einsen des Informationsbit- Vektors χ('') ist
und die Fehlererkennung den Vergleich des Gewichtes des Informationsbit- Vektors χ(') mit dem Wert des Prüfsymbols χ(c) umfaßt.
2. Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung eines systema¬ tischen ungeordneten Codes C, dessen Wörter x einen n-Bit Informationsbit-Vektor x« = xpχW . . . X^1 und ein Ar-Bit Prüfsymbol χ(« = x^c)x[c) . . . X^1 aufweisen, dadurch gekennzeichnet, daß vorgebbare Werte WQ und wi die Bedingung w\ — W0 < 2k — 2 erfüllen, wobei W0 ein vorgebbares minimales und wi ein vorgebbares maximales Gewicht des Informationsbit- Vektors χ(') bezeichnen und
• für alle Prüfsymbole gilt, daß χ(c) die binäre Darstellung der um einen Wert s — n + Wi erhöhten Anzahl k0 der Nullen des Informationsbit- Vektors χ(') ist oder
• für alle Prüfsymbole gilt, daß χ(c) das um 2k — W1 + w0 — s — 1 verminderte bitweise Komplement der binären Darstellung der um w0 verminderten Anzahl Zf1 der Einsen des Informationsbit- Vektors x^ ist,
wobei der vorgebbare konstante Wert s die Bedingung 0 < s < 2k — Wi + W0 — 1 erfüllt und die Fehlererkennung den Vergleich des Gewichtes des Informationsbit- Vektors x^ mit dem Wert des Prüfsymbols χ(c) umfaßt.
3. Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung eines systema¬ tischen ungeordneten Codes C, dessen Wörter x einen π-Bit Informationsbit- Vektor χ(') = 40Xi0 ■ ■ -4-1 und ein ^r-Bit Prüfsymbol χ(c) = xo {c)x[c) . . . X^1 aufweisen, wobei
• eine Gewichtsmittelungs-Operation den π-Bit Informationsbit- Vektor χ(') des zu prüfenden Wortes x, einen π-Bit Informationsbit- Vektor y^ und ein Bit CQ auf einen π-Bit Informationsbit- Vektor z^ und ein Bit cfi derart abbildet, daß w(z&) + cψ / 2 = (iv(χ('')) + n/(y (0) + CW) / 2 gilt, wobei der Wert der Ausgabegröße z^ zum Arbeitstakt t — 1 als Eingabewert y^ zum Arbeitstakt £ verwendet wird, d.h. y(;)(f) = z(/)(f - 1), und
• eine Wertemittelungs-Operation das /c-Bit Prüfsymbol χ(c), ein /c-Bit Prüfsymbol y^ und ein Bit c^ auf ein /c-Bit Prüfsymbol z^ und ein Bit c/χ derart abbildet, daß z(/) + c/i / 2 = (x(c) +y(c) + gilt, wobei der Wert der Ausgabegröße z^ zum Arbeitstakt t — 1 als Eingabewert y(c) zum Arbeitstakt £ verwendet wird, d.h. y(c)(t) = z(c)(t - l),
wobei y(0) = y^(0)y(c)(0) zum Arbeitstakt 0 (Initialwert) ein Wort des zu prüfenden systematischen ungeordneten Codes C ist, dadurch gekennzeichnet, daß der Wert von c^c) gleich dem Wert von cfi ist, d.h. c^ = cP , und der Wert von CQ zum Arbeitstakt t der invertierte Wert von dι zum Arbeitstakt £ — 1 ist, d.h. cj°(t) = rfι(t-l), wodurch die Folge der Werte ^(f), (h(t+l), d^t+2), d^t+3), . . . im Fall, daß die Folge der Vektoren x(£), x(£ + l), x(£ + 2), x(f + 3), . . . Wörter des Codes C sind, eine periodische Folge 0, 1, 0, 1, . . . ist und ein unidirektionaler Fehler dadurch erkannt wird, daß die Periodizität dieser Folge verletzt ist.
4. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß das Verfahren Verfahrensschritte gemäß Anspruch 3 umfaßt.
5. Verfahren zur Erkennung unidirektionaler Fehler in Wörtern x eines systematischen ungeordneten Codes C, wobei die Wörter x in Wörter x' eines vorgebbaren Codes C übersetzt werden, und anschließend x' mit einem Verfahren zur Prüfung des vorgeb¬ baren Codes C geprüft wird, dadurch gekennzeichnet, daß die Übersetzung ausschließlich durch das Prüfsymbol von x gesteuert wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß der vorgebbare Code C ein Code gemäß einem der Ansprüche 1 oder 2 ist.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Code C ein Bose-AUED-Code B*(n, k) ist und die Übersetzung von x nach x' der¬ art erfolgt, daß der zum am meisten signifikanten Prüfbit X^Z1 von x komplementäre Wert X^1 zum Prüfsymbol χ(c) von x hinzuaddiert wird.
8. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Code C ein Bose-AUED-Code B*(n, k) ist und die Übersetzung von x nach x' derart erfolgt, daß alle von dem am meisten signifikanten Prüfbit X^1 verschiedenen Bits von x mit x£_x oder mit dessen Komplement eration verknüpft werden.
9. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Code C ein Bose-AUED-Code B*(n, k) ist und die Übersetzung von x nach x' de¬ rart erfolgt, daß der zum am meisten signifikanten Prüfbit x^_x von x komplementäre Wert Xj^1 ein zusätzliches Informationsbit xή bildet.
10. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Code C ein Biswas-Sengupta-AUED-Code k) ist und die Übersetzung von x nach x' derart erfolgt, daß der Wert 1 zum Prüfsymbol χ(c) von x hinzuaddiert wird, wenn χ(c) < 2/ — 1 ist, anderenfalls χ(c) unverändert bleibt.
11. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Code C ein Biswas-Sengupta-AUED-Code ß* ''(n, k) ist und die Übersetzung von x nach x' derart erfolgt, daß alle Bits derjenigen Wörter x invertiert werden, deren Prüfsymbol χ(c) kleiner als 2/ ist, falls 2/ < 2k~x ist, oder daß alle Bits derjenigen Wörter x invertiert werden, deren Prüfsymbol χ(c) größer oder gleich 2/ ist, falls 2/ > 2*"1 ist.
12. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Code C ein Biswas-Sengupta-AUED-Code k) ist und die Übersetzung von x nach x' derart erfolgt, daß ein zusätzliches Informationsbit xn' betrachtet wird, welches den Wert 0 annimmt, falls x(c> > 2/- 1 ist und den Wert I1 falls x(c) < 2/- 1.
13. Anordnung mit mindestens einem Chip und/oder Prozessor, der (die) derart ein¬ gerichtet ist (sind), daß ein Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung eines systematischen ungeordneten Codes C gemäß Anspruch 1, 2 oder 5 durchführbar ist.
14. Anordnung nach Anspruch 13, dadurch gekennzeichnet, daß
Chip(s) und/oder Prozessor(en) derart eingerichtet ist (sind), daß ein Verfahren zur Erkennung unidirektionaler Fehler unter Verwendung eines systematischen ungeord¬ neten Codes C gemäß Anspruch 3 durchführbar ist.
EP05758001A 2004-07-06 2005-07-06 Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes Withdrawn EP1766787A2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE200410033584 DE102004033584A1 (de) 2004-07-06 2004-07-06 Verfahren zur Transformation von systematischen ungeordneten Codes in Berger-Typ-Codes zur Erkennung unidirektionaler Fehler
PCT/EP2005/007430 WO2006003023A2 (de) 2004-07-06 2005-07-06 Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes

Publications (1)

Publication Number Publication Date
EP1766787A2 true EP1766787A2 (de) 2007-03-28

Family

ID=35310883

Family Applications (1)

Application Number Title Priority Date Filing Date
EP05758001A Withdrawn EP1766787A2 (de) 2004-07-06 2005-07-06 Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes

Country Status (3)

Country Link
EP (1) EP1766787A2 (de)
DE (1) DE102004033584A1 (de)
WO (1) WO2006003023A2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2671081A2 (de) 2011-01-31 2013-12-11 Systagenix Wound Management IP Co. BV. Wundprognose
DE102011078642A1 (de) 2011-07-05 2013-01-10 Robert Bosch Gmbh Verfahren zum Prüfen eines m aus n Codes
DE102011078645A1 (de) 2011-07-05 2013-01-10 Robert Bosch Gmbh Verfahren zum sicheren Prüfen eines Codes

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1184054B (it) * 1985-03-25 1987-10-22 Cselt Centro Studi Lab Telecom Unita di controllo di microprogramma autocollaudante con rilevazione in linea degli errori in tecnologia mos

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2006003023A2 *

Also Published As

Publication number Publication date
WO2006003023A2 (de) 2006-01-12
DE102004033584A1 (de) 2006-02-09
WO2006003023A3 (de) 2006-04-06

Similar Documents

Publication Publication Date Title
DE2619159C2 (de) Fehlererkennungs- und Korrektureinrichtung
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE19903633A1 (de) Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
EP1766787A2 (de) Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes
DE102012102080A1 (de) Fehlertolerante Flip-Flops
DE2900587C3 (de) Decodierschaltung
DE1937259C3 (de) Selbstprüf ende Fehlererkennungsschaltung
DE2913729C2 (de) Schaltungsanordnung zur bitparallelen Binäraddition oder zum Shiften von Binärzahlen
DE10309255B4 (de) Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler
WO2016050857A1 (de) Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist und datenverarbeitungsanordnungen zum erzeugen von programm-code
DE102004001651B4 (de) Verfahren und Prozessor zur automatischen Befehls-Betriebsartumschaltung zwischen N-Bit und 2N-Bit Befehlen unter Verwendung einer Paritätsüberprüfung
WO1990002994A1 (de) Schaltungsanordnung zur addition oder subtraktion von im bcd-code oder dual-code codierten operanden
EP0193711B1 (de) Schaltungsanordnung zur Funktionsüberwachung eines arithmetische Operationen ausführenden Rechenwerkes anhand von Paritätsbits
DE10347077B4 (de) Multibit-Bit-Addierer
CH674689A5 (de)
Alam et al. Queueing model of a bi-level Markov service-system and its solution using recursion
DE2419837B2 (de) Schaltungsanordnung zur adressierung eines mikroprogramms in datenverarbeitungseinrichtungen und verfahren zur durchfuehrung von sprungbefehlen
DE102022000208A1 (de) Verfahren zur Computer gestützten Prüfung einer Anforderungsspezifikation eines technischen Prozesses
EP1579230A1 (de) Vorrichtung und verfahren zur bildung einer signatur
DE102023110187A1 (de) Schaltung und verfahren zur datenberechnung
DE102013225039B4 (de) Schaltungsanordnung mit Detektion oder Behandlung von transienten Fehlern in einem kombinatorischen Schaltungsteil
EP1476806A2 (de) Verfahren und anordnung zur zusammenführung von daten auf parallelen datenpfaden
DE102013112020A1 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20070206

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20071002

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20090203