Patent ID: 6023782
Filing Date: 2000-02-08
Classification: H03M

Abstract:
In a system for correcting errors in a Reed-Solomon encoded datastream, comprising a syndrome generator outputting syndromes of the datastream, a circuit, coupled to the syndrome generator and receiving the syndromes, for performing a computation of a plurality of coefficients of an error locator polynomial and a plurality of coefficients of an error evaluator polynomial, comprising:(a) an arithmetic unit performing arithmetic and logical operations on portions of the received syndromes, comprising:a random access memory, having a bidirectional port selectably operable as an input or an output, storing a plurality of signals representing a plurality of data elements,a first operand register, having an input coupled to the port of the memory and an output, storing a data element output from the memory,a first forcing device, having an input coupled to the output of the first operand register and an output, selectably outputting either the input data element or a predetermined fixed data element,a first multiplexer, having a first input coupled to the output of the first operand register, a second input coupled to the port of the memory and an output, selectably outputting either the data element output from the first operand register or the data element output from the memory,a second operand register, having an input coupled to the output of the first multiplexer and an output, storing a second operand,a second forcing device, having an input coupled to the second operand register and an output, selectably outputting either the input data element or a predetermined fixed data element,a second multiplexer, having a first input coupled to the second forcing device, a second input, a third input and an output, outputting a data element selected from among the data elements present at its inputs,a multiplier, having a first input coupled to the output of the first forcing device, a second input coupled to the output of the second multiplexer and an output, generating a data element representing the Galois field product of the data elements present at its inputs,an accumulator, having an input and an output coupled to the second input of the second multiplexer, outputting a data element representing the accumulation of a plurality of data elements input to the accumulator,an inverse ROM, having an input coupled to the output of the accumulator and an output coupled to the third input of the second multiplexer, outputting a data element representing a Galois field inverse of the data element present on its input,output from the accumulator,a first adder, having a first input coupled to the output of the accumulator, a second input coupled to the output of the multiplier and an output, generating a data element representing a Galois field sum of the data elements present at its inputs,a third multiplexer, having a first input coupled to the output of the second forcing device and a second input coupled to the output of the multiplier, outputting a data element selected from between those present at its inputs, anda second adder, having a first input coupled to the output of the multiplier, a second input coupled to the output of the second forcing device and an output coupled to the port of the memory, outputting to the memory a data element representing a Galois field sum of the data elements present at its inputs; and(b) a controller, controlling the sequence of operations performed by the arithmetic unit, comprising:a first counter outputting a count of iterations of the computation,a second counter outputting signals allowing branch conditions to be resolved,a third counter outputting a loop count,a fourth counter outputting the count of shifts of data elements stored in the memory,a fifth counter outputting an interleave, anda finite state machine, having as inputs the outputs of the five counters and having a sixth input accepting a signal indicating the correction power of the code and a seventh input accepting a signal indicating the state machine is to begin processing, and having twelve outputs, comprising:a first output for the address of the data element to be accessed in the memory,a second output which causes a data element to be output from the memory,a third output which causes a data element to be input to the memory,a fourth output which causes the first operand register to store a data element output from the memory,a fifth output which causes the second operand register to store a data element output from the first multiplexer,a sixth output which causes the accumulator to store a data element output from the second multiplexer,a seventh output which causes the first forcing device to output a predetermined fixed data element,an eighth output which causes the second forcing device to output a predetermined fixed data element,a ninth output which causes the first multiplexer to select the data element stored in the first operand register to be output to the second operand register,a tenth output which causes the second multiplexer to select the output from the second forcing device to be output to the accumulator,an eleventh output which causes the third multiplexer to select the output from the second forcing device to be output to the multiplier, anda twelfth output which causes the third multiplexer to select the output from the inverse ROM to be output to the multiplier.