Claims
- 1. A programmable logic device, comprising:
- control circuitry, for receiving program instructions and for generating control signals responsive thereto;
- a data bus;
- a Euclidean array execution unit coupled to the data bus, for executing a Euclidean program instruction unI(er the control of the control circuitry, and comprising:
- a source register, having at least first and second operand locations therein, for storing A and B input operands from the data bus;
- a control register, coupled to the control circuitry, for storing control signal states in a plurality of locations including a swap bit location, a 0.sup.th cell location, and a left/right location;
- swap select circuitry, coupled to the source register, for selectively swapping the A and B input operands stored in the source register responsive to the control signal state of the swap bit location of the control register;
- finite field divide circuitry, coupled to the swap select circuitry to perform finite field division of the A and B operands responsive to the control signal state of the 0.sup.th cell location of the control register being set, and for storing a quotient value result from the division;
- a first finite field multiplier, coupled to the swap select circuitry and to the finite field divide circuitry, for multiplying one of the input operands by the quotient value result to produce a product;
- first product select circuitry, having an input coupled to the first finite field multiplier, for forwarding the product to either a first or a second output responsive to the control signal state of the left/right location of the control register;
- first and second finite field adders, coupled to first and second outputs of the first product select circuitry, respectively, and both coupled to the swap select circuitry, for performing finite field addition; and
- a result register, coupled to outputs of the first and second finite field adders, and having first and second storage locations therein, for storing output results from the first and second finite field adders and for forwarding the stored results to the data bus.
- 2. The programmable logic device of claim 1,
- wherein the first and second finite field adders generate A and B operand results, respectively;
- and wherein the outputs of the first and second finite field adders are coupled to the result register in such a manner that the A and B operand results are stored in opposite positions in the first and second storage locations of the result register relative to the positions of the A and B input operands as stored in the first and second operand locations of the source register.
- 3. The programmable logic device of claim 2, further comprising:
- read/write memory, coupled to the data bus, and comprised of a plurality of addressable locations;
- wherein the A operand result stored in the result register is stored in the same addressable location of the read/write memory as that containing the B input operand from which the A operand result is determined;
- and wherein the B operand result stored in the result register is stored in the same addressable location of the read/write memory as that containing the A input operand from which the B operand result is determined.
- 4. The programmable logic device of claim 1, further comprising:
- read/write memory, coupled to the data bus, for storing A and B operand results in an interleaved fashion.
- 5. The programmable logic device of claim 1, wherein the source register has at least four operand locations therein, for storing both higher order and lower order A and B input operands from the data bus;
- wherein the swap select circuitry is for selectively swapping the higher order A and B input operands with one another, and the lower order A and B input operands with one another, responsive to the control signal state of the swap bit location of the control register;
- further comprising:
- a second finite field multiplier, coupled to the swap select circuitry and to the finite field divide circuitry, for multiplying a lower order one of the input operands by the quotient value result to produce a second product;
- second product select circuitry, having an input coupled to the second finite field multiplier, for forwarding the second product to either a first or a second output responsive to a lower order control signal state in the left/right location of the control register; and
- third and fourth finite field adders, coupled to first and second outputs of the second product select circuitry, respectively, and both coupled to the swap select circuitry, for performing finite field addition; and
- and wherein the result register is also coupled to outputs of the third and fourth finite field adders, and has third and fourth storage locations therein, for storing output results from the third and fourth finite field adders and for forwarding the stored results to the data bus.
- 6. The programmable logic device of claim 5, wherein the left/right location of the control register comprises a plurality of left/right locations, each associated with an iteration;
- and further comprising:
- a counter, for counting iterations of the Euclidean array execution unit; and
- a multiplexer, coupled to the plurality of left/right locations of the control register, for selecting first and second left/right control state signals for application to the first and second product select circuitry responsive to a value stored in the counter.
- 7. The programmable logic device of claim 5, wherein the source register stores higher order and lower order A and B input operands in an interleaved fashion;
- and further comprising:
- a zeroth cell source register, for storing higher order and lower order A and B input operands in a non-interleaved fashion; and
- a source register select circuit, coupled to the source register and to the zeroth cell source register, for selecting operands responsive to the control signal state of the 0.sup.th cell location of the control register.
- 8. The programmable logic device of claim 5, further comprising:
- read/write memory, coupled to the data bus, and comprised of a plurality of addressable locations;
- wherein each A operand result stored in the result register is stored in the same addressable location of the read/write memory as that containing the B input operand from which the A operand result is determined;
- and wherein each B operand result stored in the result register is stored in the same addressable location of the read/write memory as that containing the A input operand from which the B operand result is determined.
- 9. The programmable logic device of claim 1, wherein each of the finite field divider, finite field multipliers, and finite field adders operate according to Galois field arithmetic.
- 10. The programmable logic device of claim 1, further comprising:
- a multiply/add unit, for executing multiply-and-add program instructions under the control of the control circuitry.
- 11. A method of operating a programmable logic device to execute a Euclidean array operation upon first and second polynomials represented by an A sequence of coefficients and a B sequence of coefficients, respectively, comprising the steps of:
- for each of a plurality of passes:
- selectively swapping highest order A and B input operands responsive to the relative degree of the first and second polynomials;
- after the selectively swapping step, performing a finite field division of the highest order A and B input operands to generate a quotient value;
- retrieving A and B input operands from read/write memory, and storing the highest order A and B input operands in first and second source locations of a source register, respectively;
- repeating the selective swapping step;
- generating A and B result values from the retrieved A and B input operands, using finite field multiplication with the quotient value and finite field addition;
- storing the B and A result values in first and second locations of a result register, respectively;
- storing the contents of the result register in read/write memory by
- storing the B result value in the same addressable location of read/write memory as that containing the A input operand from which the B operand result is generated, and
- storing the A result value in the same addressable location of read/write memory as that containing the B input operand from which the A operand result is generated; and
- repeating the retrieving, repeating the selective swapping, generating, and storing steps for each of the A and B input operands in the A and B sequences.
- 12. The method of claim 11, further comprising:
- for each of the plurality of passes after a first pass, retrieving the highest order A and B input operands from read/write memory at a memory location beginning with a starting byte address; and
- incrementing the starting byte address for each of the plurality of passes.
- 13. The method of claim 11, wherein each of the retrieving, repeating the selective swapping, generating, and storing steps are performed simultaneously for higher order and lower order A and B input operands, to produce higher order and lower order A and B result values.
- 14. The method of claim 11, further comprising:
- decoding an instruction corresponding to the Euclidean array operation to generate control signals;
- carrying out the generating step responsive to the control signals.
- 15. The method of claim 11, wherein the instruction corresponding to the Euclidean array operation includes arguments for indicating which of a plurality of registers are to correspond to the source register and result register.
- 16. An electronic system, comprising:
- an interface for receiving signals, in the form of encoded digital data; and
- a programmable logic device, comprising:
- control circuitry, for receiving program instructions and for generating control signals responsive thereto;
- a data bus;
- a Euclidean array execution unit coupled to the data bus, for executing a Euclidean program instruction under the control of the control circuitry, and comprising:
- a source register, having at least first and second operand locations therein, for storing A and B input operands from the data bus;
- a control register, coupled to the control circuitry, for storing control signal states in a plurality of locations including a swap bit location, a 0.sup.th cell location, and a left/right location;
- swap select circuitry, coupled to the source register, for selectively swapping the A and B input operands stored in the source register responsive to the control signal state of the swap bit location of the control register;
- finite field divide circuitry, coupled to the swap select circuitry to perform finite field division of the A and B operands responsive to the control signal state of the 0.sup.th cell location of the control register being set, and for storing a quotient value result from the division;
- a first finite field multiplier, coupled to the swap select circuitry and to the finite field divide circuitry, for multiplying one of the input operands by the quotient value result to produce a product;
- first product select circuitry, having an input coupled to the first finite field multiplier, for forwarding the product to either a first or a second output responsive to the control signal state of the left/right location of the control register;
- first and second finite field adders, coupled to first and second outputs of the first product select circuitry, respectively, and both coupled to the swap select circuitry, for performing finite field addition; and
- a result register, coupled to outputs of the first and second finite field adders, and having first and second storage locations therein, for storing output results from the first and second finite field adders and for forwarding the stored results to the data bus.
- 17. The system of claim 16,
- wherein the first and second finite field adders generate A and B operand results, respectively;
- and wherein the outputs of the first and second finite field adders are coupled to the result register in such a manner that the A and B operand results are stored in opposite positions in the first and second storage locations of the result register relative to the positions of the A and B input operands as stored in the first and second operand locations of the source register.
- 18. The system of claim 16, wherein the programmable logic device further comprises:
- read/write memory, coupled to the data bus, and comprised of a plurality of addressable locations;
- wherein the A operand result stored in the result register is stored in the same addressable location of the read/write memory as that containing the B input operand from which the A operand result is determined;
- and wherein the B operand result stored in the result register is stored in the same addressable location of the read/write memory as that containing the A input operand from which the B operand result is determined.
- 19. The system of claim 16, wherein the source register has at least four operand locations therein, for storing both higher order and lower order A and B input operands from the data bus;
- wherein the swap select circuitry is for selectively swapping the higher order A and B input operands with one another, and the lower order A and B input operands with one another, responsive to the control signal state of the swap bit location of the control register;
- wherein the programmable logic device further comprises:
- a second finite field multiplier, coupled to the swap select circuitry and to the finite field divide circuitry, for multiplying a lower order one of the input operands by the quotient value result to produce a second product;
- second product select circuitry, having an input coupled to the second finite field multiplier, for forwarding the second product to either a first or a second output responsive to a lower order control signal state in the left/right location of the control register; and
- third and fourth finite field adders, coupled to first and second outputs of the second product select circuitry, respectively, and both coupled to the swap select circuitry, for performing finite field addition; and
- and wherein the result register is also coupled to outputs of the third and fourth finite field adders, and has third and fourth storage locations therein, for storing output results from the third and fourth finite field adders and for forwarding the stored results to the data bus.
- 20. The system of claim 16, wherein the programmable logic device further comprises:
- a multiply/add unit, for executing multiply-and-add program instructions under the control of the control circuitry.
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is related to copending application Ser. No. 09/087,584, entitled "An Efficient Hardware Implementation of Chien Search Polynomial Reduction in Reed-Solomon Decoding", filed contemporaneously herewith, and commonly assigned herewith.
US Referenced Citations (3)
| Number |
Name |
Date |
Kind |
|
4162480 |
Berlekamp |
Jul 1979 |
|
|
4958348 |
Berlekamp et al. |
Sep 1990 |
|
|
5442578 |
Hattori |
Aug 1995 |
|
Non-Patent Literature Citations (1)
| Entry |
| Araki, et al., "Modified Euclidean Algorithm having High Modularity and Minimum Register Organization", Trans. IEICE, vol. E-74, No. 4 (IEICE, 1994), pp. 731-737. |