US5880982A - Error detecting digital arithmetic circuit - Google Patents

Error detecting digital arithmetic circuit Download PDF

Info

Publication number
US5880982A
US5880982A US08/809,098 US80909897A US5880982A US 5880982 A US5880982 A US 5880982A US 80909897 A US80909897 A US 80909897A US 5880982 A US5880982 A US 5880982A
Authority
US
United States
Prior art keywords
circuit
arithmetic
input
operand
inverted
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.)
Expired - Fee Related
Application number
US08/809,098
Inventor
Richard A. Evans
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.)
UK Secretary of State for Defence
Original Assignee
UK Secretary of State for Defence
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 UK Secretary of State for Defence filed Critical UK Secretary of State for Defence
Assigned to SECRETARY OF STATE FOR DEFENCE IN HER BRITANNIC MAJESTY'S GOVERNMENT OF THE UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND, THE reassignment SECRETARY OF STATE FOR DEFENCE IN HER BRITANNIC MAJESTY'S GOVERNMENT OF THE UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND, THE ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EVANS, RICHARD ANTHONY
Application granted granted Critical
Publication of US5880982A publication Critical patent/US5880982A/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled

Definitions

  • This invention relates to a digital arithmetic circuit and more particularly to such a circuit having error detection properties.
  • Digital arithmetic circuits are widely used in many fields of activity. Electronic technology has progressed rapidly over the past decade, and integrated circuit and system technology has increased in complexity as a result. Increasing complexity presents a number of problems, but in particular it results in reduced reliability due to ageing, transient malfunctions in operation and production faults during manufacture. These problems increase as circuit and system complexity increases and device size continues to decrease. A further aspect of increasing circuit complexity is that it may not be economically possible to fully test all aspects of a complex circuit or system. Such a circuit or system may therefore be produced in a form giving rise to unidentified errors. Detecting circuit errors becomes increasingly important for safety-critical applications, such as aircraft systems.
  • Hamming codes are parity check codes useful for checking data transmissions and storage. However, they have the important disadvantage that they are not preserved by arithmetic operations and cannot be used in arithmetic circuits.
  • Arithmetic codes all require additional circuitry to carry out initial coding and error checking. Additionally, more hardware is needed to implement the arithmetic function because coded data words are longer than uncoded ones.
  • Time redundant approaches to error detection have also been implemented. These methods require extra processing time compared with that normally required to perform the desired operation. Consequently, an operation which could be completed in one time unit without error detection might take two time units or more if carried out in an error detecting system employing time redundancy.
  • An example of time redundancy has been suggested by Patel and Fung ("Concurrent Error Detection in ALU's by Recomputing with Shifted Operands", J H Patel and L Y Fung, IEEE Trans. on Computers, Vol C-31, pp 589-595, July 1982). This involves calculating a given result twice whilst shifting the position of the bits of the operands between the first and second calculation.
  • the present invention provides a digital arithmetic circuit comprising processing means for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto and means for inputting said at least one input operand to the processing means, characterized in that the processing means comprises:
  • processing means is arranged to perform an arithmetic operation other than the arithmetic operations of exclusively addition and subtraction on the at least one input operand.
  • operand is defined as a signed binary number on which an arithmetic operation is to be performed by the digital arithmetic circuit of the invention.
  • the invention is appropriate for operands for which the sin of the operand is implicit in the bit representation of the number, ie there is not an additional bit indicating the sign.
  • the invention is therefore appropriate for systems using complement representations of numbers such as 2's-complement representation.
  • inverting in relation to an operand means altering the sign of a number whilst retaining its magnitude. For a 2's complement number this involves changing all bits in the numbers from 0 or 1 to 1 or 0 respectively as appropriate, and adding 1 to the result.
  • inverted and “non-inverted” are to be construed accordingly.
  • the invention has the advantage that it provides a means for error detection in arithmetic circuits which may be implemented simply compared to prior art circuits. Input operands are applied twice to the circuit and are inverted at the second application. The inversion enables errors to be detected when the two outputs are compared by the comparison means.
  • the invention provides the capability of detecting errors caused by circuit faults, both permanent and transient, which alter the logic value at a node of the circuit. It is also capable of detecting multiple errors. It is applicable to existing digital signal processing (DSP) circuits and may be used for self-testing applications.
  • DSP digital signal processing
  • the digital arithmetic circuit of the invention may provide an output value indicating the location of an error within the circuit. This facilitates error correction once the fault location has been determined.
  • the invention is arranged to produce a zero output from the comparing means when there is no fault in the circuit.
  • a non-zero output indicates the occurrence of an error.
  • the invention incorporates at least two like digital arithmetic one of which is arranged to perform an operation on the operand and the other to perform a concurrent operation on the inverted operand.
  • the invention provides a digital arithmetic circuit comprising processing means for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto and means for inputting said at least one input operand to the processing means, characterized in that the processing means comprises:
  • (iii) means for comparing result signals from said operations to provide an indication of the occurrence or otherwise of an error in circuit operation.
  • FIG. 1 is a digital arithmetic circuit of the invention
  • FIG. 2 is a timing diagram of the operation of the circuit of FIG. 1;
  • FIG. 3 is a further embodiment of a digital arithmetic circuit of the invention in the form of a multiplier--accumulator
  • FIG. 4 is a cell of the circuit of FIG. 3;
  • FIGS. 5A-5C are a series of examples of the circuit of FIG. 3 in error detection operation.
  • FIG. 1 there is shown a block diagram of a digital arithmetic circuit of the invention, the circuit being indicated generally by 10.
  • the circuit 10 is arranged to receive two input numbers, A and B, not shown in FIG. 1, which are both 2's complement numbers, and to add A and B to produce an output 2's complement sum S.
  • a and B are four-bit numbers, with respective bits a 0 to a 3 and b 0 to b 3 .
  • Numbers A and B are input to the circuit 10 on input lines marked 12, 14, 16, 18 and 20, 22, 24, 26 respectively, all of which are connected to an inverting circuit 28.
  • Inverting circuit 28 has an enabling input 30.
  • the inverting circuit 28 is arranged to generate outputs of -A and -B i.e, it inverts numbers A and B, when it receives an input signal on enabling input 30 which is high.
  • the inversion of the signs of A and B is carried out by inverting each respective bit a and b and adding 1 to the respective resulting number.
  • the output from the inverting circuit 28 is A and B; that is, the numbers A and B are transmitted through the inverting circuit 28 without any operation being performed on them.
  • Output bits a 0 ,a 1 ,a 2 , a 3 , and b 0 ,b 1 ,b 2 ,b 3 from the inverting circuit 28 are output on lines, 32, 34, 36, 38 and 40, 42, 44, 46 respectively.
  • Lines 32 to 38 and 40 to 46 connect inverting circuit 28 to adder circuit 48.
  • Adder circuit 48 is a binary ripple adder. It adds the 2's complement numbers A and B, or their inverted forms -A and -B, to produce a 2's complement result.
  • Output bits s 0 , s 1 , s 2 , s 3 and s 4 from adder circuit 48 are output on lines 50, 52, 54, 56 and 58 respectively.
  • Output lines 50 to 58 connect adder circuit 48 to a group of clock-activated latches 60 in which one latch is allocated to each line. The latches 60 are arranged to pass their contents to output lines 62, 64, 66, 68 and 70 when the input clock signal is high and to retain these signal values on the respective latch outputs when the clock signal is low.
  • a separate set of output lines 72, 74, 76, 78 and 80 are taken from output lines 50 to 58 respectively. These lines carry the output bits s 0 to s 4 from the adder circuit 48 when the inverter 28 has been enabled by enable input 30. Thus, when the circuit 48 outputs the sum of -A and -B the output on lines 50 to 58 are conveyed on lines 72 to 80 respectively.
  • the output lines 62 to 70 and 72 to 80 are connected to a comparison circuit 82.
  • the bits conveyed by these output lines are respectively the bits from the latches 60, and the bits from the adder circuit 48.
  • the comparison circuit 82 compares the respective bits and produces a five-bit output, r 0 , r 1 , r 2 , r 3 and r 4 . These bits are output on lines 84, 86, 88, 90 and 92.
  • Output lines 84 to 92 are connected to a latch 94 which has an enabling input 96.
  • the latch 94 has five output lines 98, 100, 102, 104 and 106.
  • the latch 94 is arranged to receive bits on lines 84 to 92 and output them on lines 98 to 106 when enabling input 96 is high, and retain them when the enabling input is low.
  • the value of sum S 1 on lines 50 to 58 is stored on latch 60.
  • the invert signal to enabling input 30 of inverter circuit 28 becomes high thereby enabling inverter circuit 28.
  • the comparison circuit 82 has inputs equating to S 1 on lines 62 to 70, and S 2 on lines 72 to 80.
  • the circuit 10 detects errors in its operation in the following manner. If the circuit 10 is operating without errors then the output on each of lines 98 to 106 is zero. This is because the comparison circuit 82 adds S 1 and S 2 , which is equivalent to adding (A+B) to ((-A)+(-B)) which equals zero. However, if there is an error in the circuit 10 then one or more of the output bits from the comparison circuit 82 may be a 1.
  • e is a value introduced by a fault in the second pass. When there is no fault e" is zero.
  • the following examples demonstrate the operation of the circuit 10 in detecting faults.
  • one of the lines carrying bit b 1 is stuck at 1. This results in an error being produced in the second pass through the circuit, but not during the first pass as b 1 already has value 1 in the first pass.
  • the comparison of the results from the two passes produces a non-zero result, 00010, on output lines 98 to 106, indicating that a fault has occurred.
  • Example 2 shows the effects of the line carrying bit a 0 being stuck at 0. This produces an error during both passes through the circuit 10. The comparison of the results from the two passes again produces a non-zero output result, 11110, on output lines 98 to 106 which indicates the occurrence of a fault.
  • FIG. 3 there is shown a schematic diagram of a digital arithmetic circuit of the invention in the form of a 2's complement multiplier-accumulator circuit, indicated generally by 210.
  • the numbers X, Y and Z are four-bit 2's complement numbers, with respective bits x 0 to X 3 , Y 0 to y 3 and z 0 to Z 3 .
  • P is an eight-bit 2's complement number represented by bits p 0 to p 7 .
  • the circuit 210 incorporates four rows of multiplier-adder cells 212 indicated by circles, each row having four such cells.
  • the cells 212 are also arranged in four columns.
  • the columns are skewed such that the cell 212 ij is located below cell 212 i+1 , j-1 ; ie a cell in row i is displaced from the cell in row (i-1) in the same column by one cell in the left direction.
  • the cells 212 are connected to their respective column neighbours by connections such as x, and to their row neighbours by connections such as y. They are also connected to their neighbours in the next highest row by connections such as s. For example, cell 212 22 is connected to cell 212 31 by connection s 31 . Not all connections of the kind x, y and z are referenced to reduce illustrational complexity.
  • Each cell 212 in each row has a carry connection, such as c 11 , to its neighbouring cell 212 in the row.
  • Cell 212 33 has a carry connection c 33 to a half adder 214.
  • the half adder 214 has an input 216 which is set at 1.
  • the circuit 210 has eight outputs. Each output is a bit in the 2's complement output P. They are denoted by lines p 0 to p 7 .
  • Output p 7 is an output from the half adder 214.
  • the cells in the rightmost column, i 0, receive inputs corresponding to the 2's complement number Y.
  • Each bit y 0 to y 3 is input to the cell 212 0j corresponding to the respective bit designation.
  • bits y 1 and y 2 are input to cells 212 01 and 212 02 .
  • FIG. 4 there is shown a schematic diagram of the logic and connections of a cell such as 212 ij .
  • Each cell 212 ij has two components: an AND gate 300 and a full adder 302.
  • Each AND gate such as 300 has two inputs: an input from a diagonal line x and a transverse input from line y.
  • Line x forms a column through-interconnection to cell 212 ij from cell 212 i , j-1 through to cell 212 i , j+1.
  • line y forms a row through-interconnection to cell 212 ij , from cell 212 i-1 , j through to cell 212 i+1 , j. Consequently bits on lines x and y are passed to all cells 212 in their respective columns and rows simultaneously.
  • the adder 302 receives a sum input s from above and a second input consisting of the output of the AND gate 300. It also receives a carry bit input at c from the right and generates a carry bit output at c' to the left.
  • the lines x and y provide bits from numbers X and Y.
  • Each AND gate 300 "ANDs" the bits on lines x and y connected to it. It produces a partial product of these bits providing an input to the full adder 302, which receives a second input from the line s and a third input from the carry line c.
  • the input lines s are connected to cell 212 ij and each provides a respective bit from its diagonally above neighbour cell 212 i+1 , j-1.
  • the carry line c provides a carry bit from cell 212 i-1 , j in the same row.
  • the full adder carry output c' provides a carry bit to the next cell 212 i+1 , j in the row where available. Its sum output s' provides a partial sum for input to the next cell 212 i-1 , j+1.
  • the input bit z 3 to cell 212 30 is inverted. This is because it is the most significant bit (msb) of the two's complement number Z and has a negative weight.
  • Cells 212 30 , 212 31 , 212 32 , 212 23 , 212 13 and 212 03 have a NAND gate (not shown) replacing AND gate 300. This is because these cells 212 involve the interaction of sign bits such as X 3 with non-sign bits and produce partial products with negative weights.
  • the replacement of AND gate 300 with a NAND gate inverts the partial product prior to summation by full adder 302.
  • bits x 0 to X 3 corresponding to number X are input to the circuit 210 via the respective cells 212 i0 at the top row, as previously described.
  • Bits y 0 to y 3 are input via cells 212 0j on the right hand side of the circuit 210.
  • the bits x 0 to X 3 are also passed to the remaining cells in the respective input column via cell 212 interconnections as previously described.
  • bits y 0 to y 3 are also passed to remaining cells in the respective input row, also as described. Consequently each bit of number X forms a partial product with each bit of number Y in the cells 212 of the input column.
  • bit x 2 forms partial products with y 0 in cell 212 20 ; with y 1 in cell 212 21 ; with y 2 in cell 212 22 ; and with y 3 in cell 212 23 .
  • Bits z 0 to Z 3 corresponding to number Z are also input to the circuit 210 via respective top row cells 212 i0 , as previously described.
  • each bit z 0 to Z 3 is added in a full adder such as 302 to the partial product from the bits y 0 with x 0 to X 3 .
  • the function of the circuit 210 is to multiply together numbers X and Y, forming partial products in cells 212, and add a third number Z.
  • the various partial products are summed within the cells 212, flowing from top to bottom on output lines such as s'.
  • FIGS. 5A-5C show three examples of the operation of the circuit 210. For clarity, the cell designations have been removed. The number in each cell circle corresponds to the partial product calculated in that cell. The numbers on the horizontal output lines from the cells are respective cell carry output values; and the numbers on the vertical lines are the partial sum bit outputs corresponding to s'.
  • Example 1 illustrates the operation of the circuit 210 with no errors present.
  • the output -P is equal to 00011111.
  • the addition of P and -P produces a sum of 00000000, indicating no fault has occurred.
  • Example 2 illustrates the operation of the circuit 210 with an error in cell 212 11 .
  • the partial product is stuck-at-1. This results in the output P being 11100101.
  • the output -P is 00100011.
  • the sum of P and -P is therefore equal to 00001000. As the sum is non-zero there is an indication that a fault has occurred.
  • Example 3 illustrates the effects of two errors occurring simultaneously.
  • z 0 is stuck-at-0 on input and output p 6 is stuck-at-1.
  • the error introduced by z 6 stuck-at-0 causes an error on both passes whereas p 6 stuck-at-1 causes an error only during the second pass.
  • the result is that output P on the first pass is 11100000, and output -P on the second pass is 01011110.
  • the sum of P and -P is 00111110, again indicating the occurrence of an error.
  • a non-zero summation of the outputs with operands unchanged and then inverted provides an indication that a fault has occurred. Additionally, the actual value of the summation may provide an indication of the location of the fault.
  • the error detection is carried out by time redundancy, ie by making two passes through one circuit. It is also possible to achieve error detection using hardware redundancy, ie by having two or more circuits such as 210 arranged to calculate -P with inverted operands. This would enable error detection to be carried out without loss of processing time.
  • the error detection scheme described may be operated on any circuit with multiple operands at least one of which may be inverted.
  • the error detection scheme may also be operated on circuits using signed binary number representation (SBNR).
  • the invention may also be used for providing a non-zero summation value in error-free operation.
  • an error in circuit operation is detected when the comparison value is a number other than 2.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Hardware Redundancy (AREA)
  • Complex Calculations (AREA)

Abstract

A digital arithmetic circuit includes an inverting circuit connected to a digital circuit in which errors are to be detected. An operand input to the circuit produces an output result in a first operation which is stored in a comparison circuit. The operand is inverted by the inverting circuit on a second cycle of operation of the circuit and the output result is compared by the comparison circuit with that from the first operation. A non-zero result from the comparison indicates the occurrence of an error or errors in the operation of the circuit.

Description

This application is a 371 of PCT (GB 95) 02139 filed Sep. 11, 1995.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to a digital arithmetic circuit and more particularly to such a circuit having error detection properties.
2. Discussion of Prior Art
Digital arithmetic circuits are widely used in many fields of activity. Electronic technology has progressed rapidly over the past decade, and integrated circuit and system technology has increased in complexity as a result. Increasing complexity presents a number of problems, but in particular it results in reduced reliability due to ageing, transient malfunctions in operation and production faults during manufacture. These problems increase as circuit and system complexity increases and device size continues to decrease. A further aspect of increasing circuit complexity is that it may not be economically possible to fully test all aspects of a complex circuit or system. Such a circuit or system may therefore be produced in a form giving rise to unidentified errors. Detecting circuit errors becomes increasingly important for safety-critical applications, such as aircraft systems.
Methods of detecting errors are known, such as those employing Hamming codes as described in "Error Detecting and Error Correcting Codes", R W Hamming, Dell Systems Technical Journal, Vol 29 No 1 pp 147-160, January 1950. Hamming codes are parity check codes useful for checking data transmissions and storage. However, they have the important disadvantage that they are not preserved by arithmetic operations and cannot be used in arithmetic circuits.
Codes which overcome the limitation regarding preservation in arithmetic operations are described in "Error Detecting Code, Self-Checking Circuits and Applications", J Wakerly, Elsevier, North Holland Inc, 1978. A simple example is the so-called AN code. Here, input data words are multiplied by an applied multiplicand. Outputs which are not a multiple of the multiplicand can therefore be construed as containing errors.
Arithmetic codes all require additional circuitry to carry out initial coding and error checking. Additionally, more hardware is needed to implement the arithmetic function because coded data words are longer than uncoded ones.
Time redundant approaches to error detection have also been implemented. These methods require extra processing time compared with that normally required to perform the desired operation. Consequently, an operation which could be completed in one time unit without error detection might take two time units or more if carried out in an error detecting system employing time redundancy. An example of time redundancy has been suggested by Patel and Fung ("Concurrent Error Detection in ALU's by Recomputing with Shifted Operands", J H Patel and L Y Fung, IEEE Trans. on Computers, Vol C-31, pp 589-595, July 1982). This involves calculating a given result twice whilst shifting the position of the bits of the operands between the first and second calculation. After realigning the two output results, any error introduced by the hardware will appear in a different position in the two output values, and will be detectable. This approach is applicable to circuits such as arithmetic logic units (ALUs) which are constructed in a modular fashion with little or no connectivity between modules. This has the disadvantage that extra hardware modules are needed to handle the shifted operand.
The method of T H Chen et al ("Design of Concurrent Error-Detectable VLSI-Based Array Dividers", T H Chen, L G Chen, Y S Chang, Proc IEEE International Conference on Computer Design (ICCD), 1992) exploits circuit regularity to separate a circuit into two identical parts, each of which performs only half of the required calculation. Each part of the circuit is then used twice to generate two complete results which should be identical in the absence of errors. However, this approach is limited to circuits have regularity which enables separation for performing functions of calculations.
An adding and subtracting system is described in "Patent Abstracts of Japan", Volume 13 Number 460 (P-946), 18 Oct., 1989 which adds the result of the operations (A-B) and (B-A) and a zero check is then performed on this result.
SUMMARY OF THE INVENTION
It is an object of the invention to provide an alternative form of digital arithmetic circuit with error detection properties.
The present invention provides a digital arithmetic circuit comprising processing means for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto and means for inputting said at least one input operand to the processing means, characterized in that the processing means comprises:
(i) means for inverting at least one operand input to the processing means,
(ii) means for performing said arithmetic operation on said at least one input operand and for performing said arithmetic operation on at least one inverted operand, and
(iii) means for comparing result signals from said operations to provide an indication of the occurrence or otherwise of an error in circuit operation,
and that the processing means is arranged to perform an arithmetic operation other than the arithmetic operations of exclusively addition and subtraction on the at least one input operand.
For the purpose of this specification the term "operand" is defined as a signed binary number on which an arithmetic operation is to be performed by the digital arithmetic circuit of the invention. The invention is appropriate for operands for which the sin of the operand is implicit in the bit representation of the number, ie there is not an additional bit indicating the sign. The invention is therefore appropriate for systems using complement representations of numbers such as 2's-complement representation. The term "inverting" in relation to an operand means altering the sign of a number whilst retaining its magnitude. For a 2's complement number this involves changing all bits in the numbers from 0 or 1 to 1 or 0 respectively as appropriate, and adding 1 to the result. The terms "inverted" and "non-inverted" are to be construed accordingly.
The invention has the advantage that it provides a means for error detection in arithmetic circuits which may be implemented simply compared to prior art circuits. Input operands are applied twice to the circuit and are inverted at the second application. The inversion enables errors to be detected when the two outputs are compared by the comparison means.
The invention provides the capability of detecting errors caused by circuit faults, both permanent and transient, which alter the logic value at a node of the circuit. It is also capable of detecting multiple errors. It is applicable to existing digital signal processing (DSP) circuits and may be used for self-testing applications.
The digital arithmetic circuit of the invention may provide an output value indicating the location of an error within the circuit. This facilitates error correction once the fault location has been determined.
In a preferred embodiment the invention is arranged to produce a zero output from the comparing means when there is no fault in the circuit. A non-zero output indicates the occurrence of an error.
In a further embodiment, the invention incorporates at least two like digital arithmetic one of which is arranged to perform an operation on the operand and the other to perform a concurrent operation on the inverted operand.
In addition the invention provides a digital arithmetic circuit comprising processing means for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto and means for inputting said at least one input operand to the processing means, characterized in that the processing means comprises:
(i) means for inverting at least one operand input to the processing means,
(ii) means for performing said arithmetic operation
(a) on one or more operands excluding inverted operands, and
(b) on one or more operands including at least one inverted operand, and
(iii) means for comparing result signals from said operations to provide an indication of the occurrence or otherwise of an error in circuit operation.
The invention further provides a method of detecting errors in operation of a digital arithmetic circuit characterized in that the method includes the steps of:
(i) supplying at least one input operand to the circuit;
(ii) inverting at least one of the at least one input operand;
(iii) performing an arithmetic operation
(a) on one or more operands excluding inverted operands, and
(b) on one or more operands including at least one inverted operand, and
(iv) comparing circuit outputs resulting from said operations to provide a comparison value indicative of the occurrence or otherwise of an error or errors in circuit operation.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention will now be described in relation to the drawings in which:
FIG. 1 is a digital arithmetic circuit of the invention;
FIG. 2 is a timing diagram of the operation of the circuit of FIG. 1;
FIG. 3 is a further embodiment of a digital arithmetic circuit of the invention in the form of a multiplier--accumulator;
FIG. 4 is a cell of the circuit of FIG. 3;
FIGS. 5A-5C are a series of examples of the circuit of FIG. 3 in error detection operation.
DETAILED DISCUSSION OF PREFERRED EMBODIMENTS
Referring to FIG. 1, there is shown a block diagram of a digital arithmetic circuit of the invention, the circuit being indicated generally by 10. The circuit 10 is arranged to receive two input numbers, A and B, not shown in FIG. 1, which are both 2's complement numbers, and to add A and B to produce an output 2's complement sum S. A and B are four-bit numbers, with respective bits a0 to a3 and b0 to b3. Generally, A and B have bits ai and bj respectively (i=0 to 3, j=0 to 3) where i=0 and j=0 each represent a least significant bit (1sb) and i=3 and j=3 each represent a most significant bit (msb). Sum S is a five-bit number with respective bits s0 to s4 ; generally, S has bits sk where k=0 and k=4 respectively represent the lsb and msb of S. S has a fifth bit s4 because addition of two four-bit numbers A and B may produce a carry bit.
Numbers A and B are input to the circuit 10 on input lines marked 12, 14, 16, 18 and 20, 22, 24, 26 respectively, all of which are connected to an inverting circuit 28. Inverting circuit 28 has an enabling input 30. The inverting circuit 28 is arranged to generate outputs of -A and -B i.e, it inverts numbers A and B, when it receives an input signal on enabling input 30 which is high. The inversion of the signs of A and B is carried out by inverting each respective bit a and b and adding 1 to the respective resulting number. When the enabling input signal is low the output from the inverting circuit 28 is A and B; that is, the numbers A and B are transmitted through the inverting circuit 28 without any operation being performed on them. Output bits a0,a1,a2, a3, and b0,b1,b2,b3 from the inverting circuit 28 are output on lines, 32, 34, 36, 38 and 40, 42, 44, 46 respectively.
Lines 32 to 38 and 40 to 46 connect inverting circuit 28 to adder circuit 48. Adder circuit 48 is a binary ripple adder. It adds the 2's complement numbers A and B, or their inverted forms -A and -B, to produce a 2's complement result. Output bits s0, s1, s2, s3 and s4 from adder circuit 48 are output on lines 50, 52, 54, 56 and 58 respectively. Output lines 50 to 58 connect adder circuit 48 to a group of clock-activated latches 60 in which one latch is allocated to each line. The latches 60 are arranged to pass their contents to output lines 62, 64, 66, 68 and 70 when the input clock signal is high and to retain these signal values on the respective latch outputs when the clock signal is low.
A separate set of output lines 72, 74, 76, 78 and 80 are taken from output lines 50 to 58 respectively. These lines carry the output bits s0 to s4 from the adder circuit 48 when the inverter 28 has been enabled by enable input 30. Thus, when the circuit 48 outputs the sum of -A and -B the output on lines 50 to 58 are conveyed on lines 72 to 80 respectively.
The output lines 62 to 70 and 72 to 80 are connected to a comparison circuit 82. The bits conveyed by these output lines are respectively the bits from the latches 60, and the bits from the adder circuit 48. The comparison circuit 82 compares the respective bits and produces a five-bit output, r0, r1, r2, r3 and r4. These bits are output on lines 84, 86, 88, 90 and 92. Output lines 84 to 92 are connected to a latch 94 which has an enabling input 96. The latch 94 has five output lines 98, 100, 102, 104 and 106. The latch 94 is arranged to receive bits on lines 84 to 92 and output them on lines 98 to 106 when enabling input 96 is high, and retain them when the enabling input is low.
The operation of the circuit 10 will now be described with reference to the timing diagram of FIG. 2. At the beginning of a cycle, at time t=0, input numbers A and B are input on input lines 12 to 18 and 20 to 26. They are maintained on these lines for two clock cycles, ie. until time t=4. The numbers A and B pass through inverting circuit 28 without inversion, as it is not enabled by input 30 at this time.
Numbers A and B are thus input to adder circuit 48 on lines 32 to 38 and 40 to 46 respectively. Adder circuit 48 calculates the sum S1 =A+B, and the result is output on lines 50 to 58. At the clock signal at t=1 the value of sum S1 on lines 50 to 58 is stored on latch 60. Thus the output from the latch 60 on lines 62 to 70 remains equal to the input S1 on lines 50 to 58 until the next clock signal at t=3. At time t=2, the invert signal to enabling input 30 of inverter circuit 28 becomes high thereby enabling inverter circuit 28. Subsequently inverter circuit 28 generates numbers -A and -B which are output on lines 32 to 38 and 40 to 46 respectively. Adder circuit 48 then calculates the sum S2 =(-A)+(-B), which is output on lines 50 to 58, and consequently on lines 72 to 80 which are connected to lines 50 to 58.
As a result, between times t=2 and t=3 the comparison circuit 82 has inputs equating to S1 on lines 62 to 70, and S2 on lines 72 to 80.
The comparison circuit 82 compares the sums S1 and S2 by adding them ie it is an adder circuit, and the result is output on lines 84 to 92. Between times t=2 and t=3 the signal on enabling input 96 of latch 94 goes high. Subsequently the comparison of S1 and S2 is output on lines 98 to 106 and remains on these lines between times t=3 and t=4.
The circuit 10 detects errors in its operation in the following manner. If the circuit 10 is operating without errors then the output on each of lines 98 to 106 is zero. This is because the comparison circuit 82 adds S1 and S2, which is equivalent to adding (A+B) to ((-A)+(-B)) which equals zero. However, if there is an error in the circuit 10 then one or more of the output bits from the comparison circuit 82 may be a 1.
Generally, at the end of the first pass through the circuit 10, ie. at t=2 before A and B have been inverted, the output from latch 60 is
S.sub.1 =A+B+e'                                            (1)
where e' is a value introduced by an error in the first pass. When there is no fault e' is zero.
After the second pass, ie when A and B have been inverted, the output from the adder circuit 48 is
S.sub.2 =-A-B+e"                                           (2)
where e" is a value introduced by a fault in the second pass. When there is no fault e" is zero.
The output from the latch 94 after t=2 is then ##EQU1##
If the value of (e'+e") is non-zero then an error is present in either S1 or S2 or both. It must be noted that the value of (e'+e") may also be zero if a fault is present.
The following examples demonstrate the operation of the circuit 10 in detecting faults. In these examples the numbers A and B are 1011 and 0111 respectively. These are 2's complement representations of the numbers -5 and +7. Their inverted forms -A and -B are 0101 and 1001 respectively. In the absence of errors the results from the first and second passes through the circuit are S1 =00010 and S2 =11110. These are the 2's complement forms of +2 and -2 respectively.
EXAMPLE 1--No faults ##EQU2##
In this example the output from the circuit 10 is equal to zero, which implies that no errors have arisen in the circuit 10.
EXAMPLE 2--Bit b1 is stuck-at-1 ##EQU3##
In this example one of the lines carrying bit b1 is stuck at 1. This results in an error being produced in the second pass through the circuit, but not during the first pass as b1 already has value 1 in the first pass. The comparison of the results from the two passes produces a non-zero result, 00010, on output lines 98 to 106, indicating that a fault has occurred.
EXAMPLE 3--Bit a0 is stuck-at-0 ##EQU4##
Example 2 shows the effects of the line carrying bit a0 being stuck at 0. This produces an error during both passes through the circuit 10. The comparison of the results from the two passes again produces a non-zero output result, 11110, on output lines 98 to 106 which indicates the occurrence of a fault.
EXAMPLE 4--Carry bit in Adder 48 is stuck-at-0
In this example a carry bit resulting from the addition of a1 and b1, and any carry from the addition of a0 and b0, is stuck-at-0. ##EQU5##
An error is caused in the first pass only. Again, the presence of an error is indicated by the non-zero comparison results.
From the above it can be seen that all of the errors in the Examples 2, 3 and 4 produce different results in the comparison of S1 and S2. Consequently, when a fault occurs the resulting comparison value may provide an indication of the location of the error within the circuit 10.
Referring to FIG. 3, there is shown a schematic diagram of a digital arithmetic circuit of the invention in the form of a 2's complement multiplier-accumulator circuit, indicated generally by 210. The circuit 210 is arranged to receive as inputs 2's complement numbers X, Y and Z, and produce an output P where P=XY+Z. The numbers X, Y and Z are four-bit 2's complement numbers, with respective bits x0 to X3, Y0 to y3 and z0 to Z3. P is an eight-bit 2's complement number represented by bits p0 to p7.
The circuit 210 incorporates four rows of multiplier-adder cells 212 indicated by circles, each row having four such cells. The cells 212 are also arranged in four columns. The cells bear subscript indices i, j indicating column and row positions; ie. cell 212ij is the jth cell in the ith column (i=0 to 3, j=0 to 3). The column index i increases in the right-to-left direction, so that cells 2120j (j=0 to 3) are the rightmost cells. Similarly, row index j increases in the top-to-bottom direction, so that cells 212i0 (i=0 to 3) are the topmost cells. The columns are skewed such that the cell 212ij is located below cell 212i+1, j-1 ; ie a cell in row i is displaced from the cell in row (i-1) in the same column by one cell in the left direction.
The cells 212 are connected to their respective column neighbours by connections such as x, and to their row neighbours by connections such as y. They are also connected to their neighbours in the next highest row by connections such as s. For example, cell 21222 is connected to cell 21231 by connection s31. Not all connections of the kind x, y and z are referenced to reduce illustrational complexity.
A carry input, carryj is input to the right most cell 2120j of each row. This input has the value 0 for each of rows j=0, 1 and 2, and the value 1 for row j=3. Each cell 212 in each row has a carry connection, such as c11, to its neighbouring cell 212 in the row. Additionally, cells 21230, 21231 and 21232 have carry connections c30, c31, and c32 to the next lower cell 212 in the same column i=3; ie the connections are to cells 21231, 21232 and 21233.
Cell 21233 has a carry connection c33 to a half adder 214. The half adder 214 has an input 216 which is set at 1.
The circuit 210 has eight outputs. Each output is a bit in the 2's complement output P. They are denoted by lines p0 to p7. Lines p0 to p3 are outputs from cells 21200, 21201, 21202 and 21203 ; ie they are outputs from each cell in the column i=0. The outputs p4 to p6 are outputs from the cells 21213, 21223 and 21233 ; ie. they are outputs from the cells 212 in the columns i=1, 2 and 3. Output p7 is an output from the half adder 214.
The cells 212 in the top row, j=0 receive inputs corresponding to the 2's complement numbers X and Z is input to the cell 212i0 corresponding to the respective bit designation. For example, bits x2 and z2 are input to cell 21220. Similarly, bits x1 and a1 are input to cell 21210.
The cells in the rightmost column, i=0, receive inputs corresponding to the 2's complement number Y. Each bit y0 to y3 is input to the cell 2120j corresponding to the respective bit designation. For example, bits y1 and y2 are input to cells 21201 and 21202.
Referring to FIG. 4, there is shown a schematic diagram of the logic and connections of a cell such as 212ij. Each cell 212ij has two components: an AND gate 300 and a full adder 302.
Each AND gate such as 300 has two inputs: an input from a diagonal line x and a transverse input from line y. Line x forms a column through-interconnection to cell 212ij from cell 212i, j-1 through to cell 212i, j+1. Similarly, line y forms a row through-interconnection to cell 212ij, from cell 212i-1, j through to cell 212i+1, j. Consequently bits on lines x and y are passed to all cells 212 in their respective columns and rows simultaneously. The adder 302 receives a sum input s from above and a second input consisting of the output of the AND gate 300. It also receives a carry bit input at c from the right and generates a carry bit output at c' to the left.
The lines x and y provide bits from numbers X and Y. Each AND gate 300 "ANDs" the bits on lines x and y connected to it. It produces a partial product of these bits providing an input to the full adder 302, which receives a second input from the line s and a third input from the carry line c. For cells 212 in rows for which j>0, the input lines s are connected to cell 212ij and each provides a respective bit from its diagonally above neighbour cell 212i+1, j-1. The carry line c provides a carry bit from cell 212i-1, j in the same row. The full adder carry output c' provides a carry bit to the next cell 212i+1, j in the row where available. Its sum output s' provides a partial sum for input to the next cell 212i-1, j+1.
The input bit z3 to cell 21230 is inverted. This is because it is the most significant bit (msb) of the two's complement number Z and has a negative weight.
Cells 21230, 21231, 21232, 21223, 21213 and 21203 have a NAND gate (not shown) replacing AND gate 300. This is because these cells 212 involve the interaction of sign bits such as X3 with non-sign bits and produce partial products with negative weights. The replacement of AND gate 300 with a NAND gate inverts the partial product prior to summation by full adder 302.
The operation of the circuit 210 will now be described. Bits x0 to X3 corresponding to number X are input to the circuit 210 via the respective cells 212i0 at the top row, as previously described. Bits y0 to y3 are input via cells 2120j on the right hand side of the circuit 210. The bits x0 to X3 are also passed to the remaining cells in the respective input column via cell 212 interconnections as previously described. Similarly, bits y0 to y3 are also passed to remaining cells in the respective input row, also as described. Consequently each bit of number X forms a partial product with each bit of number Y in the cells 212 of the input column. For example, bit x2 forms partial products with y0 in cell 21220 ; with y1 in cell 21221 ; with y2 in cell 21222 ; and with y3 in cell 21223.
Bits z0 to Z3 corresponding to number Z are also input to the circuit 210 via respective top row cells 212i0, as previously described. In the cells 212i0 each bit z0 to Z3 is added in a full adder such as 302 to the partial product from the bits y0 with x0 to X3.
From the above it can be seen that the function of the circuit 210 is to multiply together numbers X and Y, forming partial products in cells 212, and add a third number Z. The various partial products are summed within the cells 212, flowing from top to bottom on output lines such as s'. The final product is the value P=XY+Z which appears at output lines p0 to p7 as previously described.
Error detection in the circuit 210 will now be described. FIGS. 5A-5C show three examples of the operation of the circuit 210. For clarity, the cell designations have been removed. The number in each cell circle corresponds to the partial product calculated in that cell. The numbers on the horizontal output lines from the cells are respective cell carry output values; and the numbers on the vertical lines are the partial sum bit outputs corresponding to s'.
The examples of FIGS. 5A-5C illustrate the operation of the circuit with operands values as follows: X=6 (0110), Y=-4 (01100) and Z=-7 (1001). The value of P output from the circuit is P=11100001.
For error detection the value of -P is generated. To achieve this the input operands X and Z are inverted, but not Y. Alternatively, Y and Z could be inverted leaving X unchanged. The operand values for the inversion of P are then as follows: -X=-6 (1010), Y=-4 (1100) and -Z=7 (0111).
In FIG. 5A, Example 1 illustrates the operation of the circuit 210 with no errors present. In this example the output -P is equal to 00011111. The addition of P and -P produces a sum of 00000000, indicating no fault has occurred.
In FIG. 5B, Example 2 illustrates the operation of the circuit 210 with an error in cell 21211. Here the partial product is stuck-at-1. This results in the output P being 11100101. On the second pass through the circuit, with operands inverted, the output -P is 00100011. The sum of P and -P is therefore equal to 00001000. As the sum is non-zero there is an indication that a fault has occurred.
In FIG. 5C, Example 3 illustrates the effects of two errors occurring simultaneously. Here z0 is stuck-at-0 on input and output p6 is stuck-at-1. The error introduced by z6 stuck-at-0 causes an error on both passes whereas p6 stuck-at-1 causes an error only during the second pass. The result is that output P on the first pass is 11100000, and output -P on the second pass is 01011110. The sum of P and -P is 00111110, again indicating the occurrence of an error.
As for the circuit 10, a non-zero summation of the outputs with operands unchanged and then inverted provides an indication that a fault has occurred. Additionally, the actual value of the summation may provide an indication of the location of the fault. As for circuit 10, the error detection is carried out by time redundancy, ie by making two passes through one circuit. It is also possible to achieve error detection using hardware redundancy, ie by having two or more circuits such as 210 arranged to calculate -P with inverted operands. This would enable error detection to be carried out without loss of processing time.
The error detection scheme described may be operated on any circuit with multiple operands at least one of which may be inverted. The error detection scheme may also be operated on circuits using signed binary number representation (SBNR).
The invention may also be used for providing a non-zero summation value in error-free operation. For example, a circuit output Y representing an incremental addition to an input operand X is given by Y=X+1. Inverting X on a second pass produces an output Y=-X+1. A comparison of outputs from first and second passes produces a summation S=(X+1)+(-X+1) which is equal to 2 for error-free operation. In this example an error in circuit operation is detected when the comparison value is a number other than 2.

Claims (16)

I claim:
1. A digital arithmetic circuit (10) comprising processing means for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto and means (12 to 18) for inputting said at least one input operand to the processing means, wherein said processing means comprises:
(i) means (28) for inverting at least one operand input to the processing means,
(ii) means (210) for performing said arithmetic operation on said at least one input operand and for performing said arithmetic operation on at least one inverted operand, and
(iii) means (82) for comparing result signals from said operations to provide an indication of an error in circuit operation,
and that the processing means is arranged to perform an arithmetic operation other than the arithmetic operations of exclusively addition and subtraction on the at least one input operand.
2. A circuit according to claim 1, wherein said processing means is arranged to compute result signals for inverted operands concurrently with the calculation of result signals for non-inverted operands.
3. A circuit according to claim 2, wherein said input means is arranged to supply at least two input operands.
4. A circuit according to claim 3, wherein said input operands are 2's complement numbers.
5. A circuit according to claim 4, wherein said processing means includes a multiplier-accumulator circuit.
6. A circuit according to claim 1, wherein said processing means is arranged to generate a result signal from inverted operands at a different time to generation of a result signal from non-inverted operands.
7. A circuit according to claim 1, wherein said circuit is arranged to provide a non-zero comparison value in response to the occurrence of an error in circuit operation.
8. A digital arithmetic circuit (10) comprising processing means for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto and means (12 to 26) for inputting said at least one input operand to the processing means, wherein said processing means comprises:
(i) means (28) for inverting at least one operand input to the processing means,
(ii) means (48, 210) for performing said arithmetic operation
(a) on one or more operands excluding inverted operands, and
(b) on one or more operands including at least one inverted operand, and
(iii) means (82) for comparing result signals from said operations to provide an indication of an error in circuit operation.
9. A method of detecting errors in operation of a digital arithmetic circuit wherein said method includes the steps of:
(i) supplying at least one input operand to the circuit;
(ii) inverting at least one of said at least one input operand;
(iii) performing an arithmetic operation
(a) on one or more operands excluding inverted operands, and
(b) on one or more operands, including at least one inverted operand, and
(iv) comparing outputs resulting from said operations to provide a comparison value indicative of at least one error in circuit operation.
10. A digital arithmetic circuit for performing an arithmetic operation on at least one input operand and for generating a result signal in response thereto, said circuit having at least one input operand, said circuit comprises:
(i) an inverting circuit, responsive to said at least one input operand, providing an inverted at least one operand output,
(ii) an arithmetic circuit, responsive to said at least one input operand and said inverted at least one operand output, operating on said at least one input operand to provide an arithmetic output and operating on at least one inverted operand to provide an inverted arithmetic output, said arithmetic circuit performing an arithmetic operation other than the arithmetic operations of exclusively addition and subtraction on said at least one input operand, and
(iii) comparison circuit, responsive to said arithmetic output and said inverted arithmetic output, for providing an indication of the occurrence of an error in circuit operation.
11. A digital arithmetic circuit according to claim 10, wherein said arithmetic circuit is arranged to compute said arithmetic output and said inverted arithmetic output concurrently.
12. A digital arithmetic circuit according to claim 11, wherein said at least one input operand comprises at least two input operands.
13. A digital arithmetic circuit according to claim 12, wherein said at least two input operands are 2's complement numbers.
14. A digital arithmetic circuit according to claim 13, wherein said arithmetic circuit includes a multiplier-accumulator circuit.
15. A digital arithmetic circuit according to claim 10, wherein said arithmetic circuit is arranged to compute said arithmetic output and said inverted arithmetic output at different times.
16. A digital arithmetic circuit according to claim 10, wherein said comparison circuit provides a non-zero comparison value in response to the occurrence of an error in circuit operation.
US08/809,098 1994-09-22 1995-09-11 Error detecting digital arithmetic circuit Expired - Fee Related US5880982A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9419072A GB2293469A (en) 1994-09-22 1994-09-22 Error detection in arithmetic circuit.
GB9419072 1994-09-22
PCT/GB1995/002139 WO1996009586A1 (en) 1994-09-22 1995-09-11 Digital arithmetic circuit

Publications (1)

Publication Number Publication Date
US5880982A true US5880982A (en) 1999-03-09

Family

ID=10761713

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/809,098 Expired - Fee Related US5880982A (en) 1994-09-22 1995-09-11 Error detecting digital arithmetic circuit

Country Status (8)

Country Link
US (1) US5880982A (en)
EP (1) EP0782727B1 (en)
JP (1) JPH10505929A (en)
KR (1) KR970706537A (en)
CA (1) CA2200715A1 (en)
DE (1) DE69505554T2 (en)
GB (1) GB2293469A (en)
WO (1) WO1996009586A1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2843466A1 (en) * 2002-04-29 2004-02-13 Samsung Electronics Co Ltd METHOD FOR PREVENTING FALSIFICATION OF A DATA PROCESSING SYSTEM, AND SYSTEM
FR2870021A1 (en) * 2004-05-07 2005-11-11 Alcatel Sa METHOD AND DEVICE FOR MANAGING A BUS
US7225381B1 (en) 2005-06-02 2007-05-29 Lehman Thomas F Error detection and correction method
FR2925720A1 (en) * 2007-12-21 2009-06-26 Thales Sa SECURE SYSTEM FOR TRANSMITTING DATA.
US20090248781A1 (en) * 2008-03-28 2009-10-01 Priyadarsan Patra Method and device for dynamically verifying a processor architecture
US20100332957A1 (en) * 2009-06-29 2010-12-30 Fujitsu Limited Arithmetic circuit, arithmetic processing device, and arithmetic processing method
US20160019028A1 (en) * 2014-07-21 2016-01-21 International Business Machines Corporation Checking arithmetic computations
EP3629177A1 (en) * 2018-09-28 2020-04-01 Sick Ag Method for checking an operation of an electronic data processing means

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1271317A1 (en) * 2001-06-29 2003-01-02 Nagracard S.A. System-on-chip with time redundancy operation
DE102004008901A1 (en) * 2004-02-24 2005-09-15 Giesecke & Devrient Gmbh Safe result calculation
CN107329864B (en) * 2017-06-28 2020-09-11 中国航空工业集团公司雷华电子技术研究所 Automatic positioning method for signal fault of processor
TW202324098A (en) * 2021-12-07 2023-06-16 財團法人工業技術研究院 Error detection and correction device and method thereof

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3166737A (en) * 1960-12-23 1965-01-19 Ibm Asynchronous data processor
US3649817A (en) * 1969-07-31 1972-03-14 Ibm Arithmetic and logical unit with error checking
US3665394A (en) * 1970-09-23 1972-05-23 Gte Automatic Electric Lab Inc Data error detector for determining the error rate prior to equalization
US4001570A (en) * 1975-06-17 1977-01-04 International Business Machines Corporation Arithmetic unit for a digital data processor
JPH01180043A (en) * 1988-01-08 1989-07-18 Fujitsu Ltd Adding and subtracting system
JPH04180134A (en) * 1990-11-15 1992-06-26 Nec Ibaraki Ltd Pseudo error generating system
US5140545A (en) * 1991-02-13 1992-08-18 International Business Machines Corporation High performance divider with a sequence of convergence factors
US5495431A (en) * 1993-04-30 1996-02-27 Hyundai Electronic Industries Co., Ltd. High speed two's complementer
US5561619A (en) * 1993-12-27 1996-10-01 Fujitsu Limited Arithmetic logic unit provided with combinational circuit and zero value detector connected in parallel
US5629945A (en) * 1994-02-26 1997-05-13 Robert Bosch Gmbh Electronic arithmetic unit with multiple error detection
US5798958A (en) * 1996-06-05 1998-08-25 Samsung Electronics Co., Ltd. Zero detect for binary sum

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3166737A (en) * 1960-12-23 1965-01-19 Ibm Asynchronous data processor
US3649817A (en) * 1969-07-31 1972-03-14 Ibm Arithmetic and logical unit with error checking
US3665394A (en) * 1970-09-23 1972-05-23 Gte Automatic Electric Lab Inc Data error detector for determining the error rate prior to equalization
US4001570A (en) * 1975-06-17 1977-01-04 International Business Machines Corporation Arithmetic unit for a digital data processor
JPH01180043A (en) * 1988-01-08 1989-07-18 Fujitsu Ltd Adding and subtracting system
JPH04180134A (en) * 1990-11-15 1992-06-26 Nec Ibaraki Ltd Pseudo error generating system
US5140545A (en) * 1991-02-13 1992-08-18 International Business Machines Corporation High performance divider with a sequence of convergence factors
US5495431A (en) * 1993-04-30 1996-02-27 Hyundai Electronic Industries Co., Ltd. High speed two's complementer
US5561619A (en) * 1993-12-27 1996-10-01 Fujitsu Limited Arithmetic logic unit provided with combinational circuit and zero value detector connected in parallel
US5629945A (en) * 1994-02-26 1997-05-13 Robert Bosch Gmbh Electronic arithmetic unit with multiple error detection
US5798958A (en) * 1996-06-05 1998-08-25 Samsung Electronics Co., Ltd. Zero detect for binary sum

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
IEE Proceedings E. Computers & Digital Techniques, vol. 135, No. 2, Mar. 1988, Stevenage GB pp. 87 94, S. W. Chan et al, Systematic design strategy for concurrent error diagnosable iterative logic arrays . *
IEE Proceedings E. Computers & Digital Techniques, vol. 135, No. 2, Mar. 1988, Stevenage GB pp. 87-94, S.-W. Chan et al, "Systematic design strategy for concurrent error diagnosable iterative logic arrays".
IEE Proceedings E. Computers & Digital Techniques, vol. 139, No. 2, Mar. 1992, Stevenage GB pp. 123 130, XP000288123 C. L. Wey, Concurrent error detection in array dividers by alternating input data . *
IEE Proceedings E. Computers & Digital Techniques, vol. 139, No. 2, Mar. 1992, Stevenage GB pp. 123-130, XP000288123 C.-L. Wey, "Concurrent error detection in array dividers by alternating input data".
Patent Abstracts of Japan, vol. 13, No. 460 (P 94618 Oct. 1989 & JP A01 180 043(Fujitsu Ltd) 18 Jul. 1989. *
Patent Abstracts of Japan, vol. 13, No. 460 (P-94618 Oct. 1989 & JP A01 180 043(Fujitsu Ltd) 18 Jul. 1989.
Patent Abstracts of Japan, vol. 16, No. 500 (P 1437), 15 Oct. 1992 & JP A 04 180 134(NEC Ibaraki Ltd) 26 Jun. 1992. *
Patent Abstracts of Japan, vol. 16, No. 500 (P-1437), 15 Oct. 1992 & JP A 04 180 134(NEC Ibaraki Ltd) 26 Jun. 1992.

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2843466A1 (en) * 2002-04-29 2004-02-13 Samsung Electronics Co Ltd METHOD FOR PREVENTING FALSIFICATION OF A DATA PROCESSING SYSTEM, AND SYSTEM
FR2870021A1 (en) * 2004-05-07 2005-11-11 Alcatel Sa METHOD AND DEVICE FOR MANAGING A BUS
WO2005111822A3 (en) * 2004-05-07 2006-04-13 Tcl & Alcatel Mobile Phones Method and device for managing a bus
US7225381B1 (en) 2005-06-02 2007-05-29 Lehman Thomas F Error detection and correction method
US20100312996A1 (en) * 2007-12-21 2010-12-09 Thales Secure system for data transmission
FR2925720A1 (en) * 2007-12-21 2009-06-26 Thales Sa SECURE SYSTEM FOR TRANSMITTING DATA.
WO2009083431A1 (en) * 2007-12-21 2009-07-09 Thales Secured system for data transmission
US20090248781A1 (en) * 2008-03-28 2009-10-01 Priyadarsan Patra Method and device for dynamically verifying a processor architecture
US8055697B2 (en) * 2008-03-28 2011-11-08 Intel Corporation Method and device for dynamically verifying a processor architecture
US20100332957A1 (en) * 2009-06-29 2010-12-30 Fujitsu Limited Arithmetic circuit, arithmetic processing device, and arithmetic processing method
US8312361B2 (en) * 2009-06-29 2012-11-13 Fujitsu Limited Arithmetic circuit, arithmetic processing device, and arithmetic processing method
US20160019028A1 (en) * 2014-07-21 2016-01-21 International Business Machines Corporation Checking arithmetic computations
US9940199B2 (en) * 2014-07-21 2018-04-10 International Business Machines Corporation Checking arithmetic computations
EP3629177A1 (en) * 2018-09-28 2020-04-01 Sick Ag Method for checking an operation of an electronic data processing means

Also Published As

Publication number Publication date
KR970706537A (en) 1997-11-03
CA2200715A1 (en) 1996-03-28
DE69505554D1 (en) 1998-11-26
JPH10505929A (en) 1998-06-09
DE69505554T2 (en) 1999-04-22
EP0782727B1 (en) 1998-10-21
EP0782727A1 (en) 1997-07-09
WO1996009586A1 (en) 1996-03-28
GB9419072D0 (en) 1994-11-09
GB2293469A (en) 1996-03-27

Similar Documents

Publication Publication Date Title
Patel et al. Concurrent error detection in ALU's by recomputing with shifted operands
Mitra et al. Which concurrent error detection scheme to choose?
US5880982A (en) Error detecting digital arithmetic circuit
Patel et al. Concurrent error detection in multiply and divide arrays
Avizienis Arithmetic algorithms for error-coded operands
JP5407589B2 (en) Arithmetic circuit, arithmetic processing device, and arithmetic processing method
US5018093A (en) High performance self-checking adder having small circuit area
US3925647A (en) Parity predicting and checking logic for carry look-ahead binary adder
Zhou A new bit-serial systolic multiplier over GF (2/sup m/)
US3342983A (en) Parity checking and parity generating means for binary adders
Akbar et al. Self-repairing hybrid adder with hot-standby topology using fault-localization
Lo et al. Concurrent error detection in arithmetic and logical operations using Berger codes
Fujiwara et al. A self-testing group-parity prediction checker and its use for built-in testing
US3185822A (en) Binary adder
Orton et al. New fault tolerant techniques for residue number systems
US20100146031A1 (en) Direct Decimal Number Tripling in Binary Coded Adders
EP0534760A2 (en) High speed multiplier device
Tahir et al. Fault tolerant arithmetic unit using duplication and residue codes
Oikonomakos et al. Error correction in arithmetic operations by I/O inversion
EP0339305B1 (en) Parity prediction for binary adders with selection
KR20240029249A (en) MAC operator capable of correcting computational error
JP2000040081A (en) Vector data processor
SU1134948A1 (en) Matrix calculating device
SU1633395A1 (en) Dividing device
Davis A checking arithmetic unit

Legal Events

Date Code Title Description
AS Assignment

Owner name: SECRETARY OF STATE FOR DEFENCE IN HER BRITANNIC MA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EVANS, RICHARD ANTHONY;REEL/FRAME:008479/0641

Effective date: 19970228

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20030309