Claims
- 1. A convolutional generator comprising:a first set of registers; a second set of registers; a multiplier; wherein the convolutional generator operates upon a codeword and syndromes generated for the codeword by using a first recursion rule to generate coefficients of an error locator polynomial σ(x) for the codeword in the first set of registers, the coefficients of the error locator polynomial being generated in the first set of registers using the multiplier, wherein the multiplier updates the first set of registers by multiplying contents τn(x) of the second set of registers by a current discrepancy quantity, the current discrepancy quantity including a current discrepancy dn and being derived from values stored in the first set of registers and syndromes, wherein the contents τn(x) of the second set of registers are updated using updated values σn(x) of the first set of registers by the convolutional generator using a second recursion rule; wherein the first recursion rule is: σ(n+1)(x)=αd(σ(n)−dnτ(n))=αdσ(n)(x)−αddnτ(n)(x) the second recursion rule is: τ(n)(x)=x*(τ(n−1)(x)+(αddn−1)−1σ(n)(x)CHANGE_L) wherein CHANGE_L refers to a change in the length of a connection polynomial, and wherein d is non-zero.
- 2. The apparatus of claim 1, whereinthe first recursion rule is: σ(n+1)(x)=(α−4σ(n)(x))−(α−3dn)(τ(n)(x))α−1=(α−4σ(n)(x))−(α−3((α−3dn)α2)(τ(n)(x)) the second recursion rule is: τ(n)(x)=x*(τ(n−1)(x)+α−3(((α−4(α−3dn−1))−1CHANGE_L)σ(n)(x))).
- 3. The apparatus of claim 1, wherein dn−1−1 is an inverse of a prior discrepancy, wherein the second recursion rule is implemented by a multiplier which updates the second set of registers, and wherein a quantity including the inverse of the prior discrepancy is received two bits at a time at the multiplier which updates the second set of registers.
- 4. The apparatus of claim 3, wherein the quantity including the inverse of the prior discrepancy is received in α basis representation at the multiplier which updates the second set of coefficient registers.
- 5. The apparatus of claim 3, wherein bits of each nibble of the quantity including the inverse of the prior discrepancy are serially received in most significant bit order.
- 6. The apparatus of claim 1, wherein the registers included in the first set of registers have an α−1 multiplier connected between an input and output of the registers.
- 7. The apparatus of claim 1, wherein the codeword contains m-bit symbols, and wherein the generator performs plural error locator iterations for determining the coefficients of the error locator polynomial, each error locator iteration having no more than m/2 clock cycles.
- 8. The apparatus of claim 7, further comprising a third set of registers which obtain coefficients of an error evaluator polynomial, wherein the generator performs plural error evaluator iterations for determining the coefficients of the error evaluator polynomial, each error locator iteration having no more than m/2 clock cycles.
- 9. The apparatus of claim 8, wherein m is 8.
- 10. The apparatus of claim 1, wherein the generator comprises plural slices, wherein the first set of registers comprises a high order nibble coefficient register and a low order nibble coefficient register for each slice.
- 11. The apparatus of claim 10, further comprising for each slice a discrepancy-producing multiplier which multiplies a selected one of the syndromes by the contents of the high order nibble coefficient register and by the contents of the low order nibble coefficient register.
- 12. The apparatus of claim 11, wherein the discrepancy-producing multiplier multiplies the contents of the higher order nibble coefficient register by a factor α4 prior to multiplying by the selected one of the syndromes.
- 13. The apparatus of claim 11, further comprising an accumulator, and wherein the discrepancy-producing multiplier outputs an inner product two bits at a time to the accumulator.
- 14. The apparatus of claim 13, further comprising an α−1 multiplier connected between an input and output of the accumulator.
- 15. The apparatus of claim 13, wherein bits of each nibble of the inner product is serially output by the discrepancy-producing multiplier in most significant bit order.
- 16. The apparatus of claim 13, wherein the accumulator accumulates the current discrepancy quantity, and wherein the current discrepancy quantity is α−3dn.
- 17. The apparatus of claim 13, wherein the generator further comprises an inverse generator which receives the current discrepancy quantity in β basis representation from the accumulator and which serially outputs a quantity including the inverse of a prior discrepancy in a basis representation, the inverse of a prior discrepancy being dn−1−1.
- 18. The apparatus of claim 17, wherein the inverse generator serially outputs each nibble of the quantity including the inverse of the prior discrepancy in most significant bit order.
- 19. The apparatus of claim 17, wherein the inverse generator comprises:a first inverse look up table which receives a parallel input value and which serially outputs a first value in β basis representation in least significant bit order; a second inverse look up table which receives the parallel input value and serially outputs a second value in β basis representation in least significant bit order; a first shift register which receives the serially output first value from the first inverse look up table; a summer forms a summation of preselected bit positions of the first shift register; an adder which adds (1) the first value; (2) the second value; and (3) summation of the summer; a second shift register which receives serially the output of the adder; and wherein contents of the first shift register comprise higher order bits of an inverse of the input value in a basis representation; and contents of the second shift register comprise lower order bits of an inverse of the input value in a basis representation.
- 20. The apparatus of claim 1, further comprising:an accumulator wherein the current discrepancy quantity is accumulated; an inverse generator which receives the current discrepancy quantity in β basis representation and serially outputs a quantity including the inverse of a prior discrepancy in α basis representation, the inverse of a prior discrepancy being dn−1−1.
- 21. A convolutional generator comprising:a first set of registers used to accumulate coefficients of an error locator polynomial for a codeword; a second set of registers used to update the first set of registers; a third set of registers into which syndromes for the codeword are at least initially loaded; a first multiplier which serially outputs, two bits at a time, an inner product of the syndromes in the third set of registers and contents of the first set of registers; an accumulator connected to the first multiplier for accumulating an accumulation value therein; an inverse generator which receives the accumulation value in β basis representation and which serially outputs, two bits at a time, an α basis representation of an inverse of the accumulation value; a second multiplier which uses the accumulation value and contents of the second set of registers to update the first set of registers and a third multiplier which uses the a basis representation of the inverse of the accumulation value and contents of the first set of registers to update the second set of registers.
- 22. The apparatus of claim 21, further comprising plural slices, each slice comprising:one of the plural first coefficient register pairs; one of the second set of coefficient registers; a slice portion of the first multiplier; a slice portion of the second multiplier; and, a slice portion of the third multiplier.
- 23. The apparatus of claim 21, wherein the first multiplier outputs bits of two nibbles of the inner product in most significant bit order.
- 24. The apparatus of claim 21, wherein the accumulation value has a factor α−3.
- 25. The apparatus of claim 21, wherein the accumulation value includes a current discrepancy dn.
- 26. The apparatus of claim 21, wherein the registers included in the first set of registers have an α−1 multiplier connected between an input and output of the registers.
- 27. The apparatus of claim 21, wherein the codeword contains m-bit symbols, and wherein the generator performs plural error locator iterations for determining the coefficients of the error locator polynomial, each error locator iteration having no more than m/2 clock cycles.
- 28. The apparatus of claim 27, wherein the third set of registers eventually contain coefficients of an error evaluator polynomial, and wherein the generator performs plural error evaluator iterations for determining the coefficients of the error evaluator polynomial, each error locator iteration having no more than m/2 clock cycles.
- 29. The apparatus of claim 27, wherein m is 8.
- 30. The apparatus of claim 21, further comprising an α−1 multiplier connected between an input and output of the accumulator.
- 31. The apparatus of claim 21, wherein the inverse generator serially outputs each nibble of the quantity including the inverse of the prior discrepancy in most significant bit order.
- 32. The apparatus of claim 21, wherein the inverse generator comprises:a first inverse look up table which receives a parallel input value and which serially outputs a first value in β basis representation in least significant bit order; a second inverse look up table which receives the parallel input value and serially outputs a second value in β basis representation in least significant bit order; a first shift register which receives the serially output first value from the first inverse look up table; a summer which forms a summation of preselected bit positions of the first shift register; an adder which adds (1) the first value; (2) the second value; and (3) summation of the summer; a second shift register which receives serially the output of the adder; and wherein contents of the first shift register comprise higher order bits of an inverse of the input value in α basis representation; and contents of the second shift register comprise lower order bits of an inverse of the input value in α basis representation.
- 33. The apparatus of claim 32, wherein the parallel input value is received from the accumulator, and wherein the accumulation value accumulated in the accumulator is obtained from the first multiplier.
- 34. The apparatus of claim 32, wherein the parallel input value is received from the accumulator, and wherein the accumulation value accumulated in the accumulator is a sum of selected ones of the registers of the first set of registers.
- 35. The apparatus of claim 21, further comprising an error pattern generation circuit which uses the α basis representation of the inverse of the accumulation value output from the inverse generator to generate an error pattern.
- 36. An inverse generator comprising:a circuit which receives a parallel input value in β basis representation and which serially outputs, two bits at a time, an α basis representation of an inverse of the parallel input value.
- 37. The apparatus of claim 36, wherein the inverse generator comprises:a first inverse look up table which receives the parallel input value and which serially outputs a first value in β basis representation in least significant bit order; a second inverse look up table which receives the parallel input value and serially outputs a second value in β basis representation in least significant bit order; a first shift register which receives the serially output first value from the first inverse look up table; a summer forms a summation of preselected bit positions of the first shift register; an adder which adds (1) the first value; (2) the second value; and (3) summation of the summer; a second shift register which receives serially the output of the adder; and wherein contents of the first shift register comprise higher order bits of an inverse of the input value in α basis representation; and contents of the second shift register comprise lower order bits of the inverse of the input value in α basis representation.
- 38. The apparatus of claim 36, wherein the inverse generator receives a current discrepancy quantity produced by a convolutional generator operating on a codeword as the parallel input value.
- 39. The apparatus of claim 36, wherein the inverse generator receives a sum of selected registers of a convolutional generator as the parallel input value.
- 40. The apparatus of claim 39, further comprising an error pattern generation circuit which uses the α basis representation of the inverse of the input value in α basis representation to generate an error pattern.
- 41. The apparatus of claim 36, wherein the codeword contains m-bit symbols, and wherein the inverse generator generates the inverse of the input value in α basis representation in no more than m/2 clock cycles.
- 42. A method of operating a convolutional generator which operates upon a codeword, the method comprising:using a first recursion rule to generate coefficients of an error locator polynomial σ(x) for the codeword in a first set of registers, the coefficients of the error locator polynomial being generated by multiplying contents τn(x) of a second set of registers by a current discrepancy quantity which includes a current discrepancy dn; updating the contents τn(x) of the second set of registers using a second recursion rule; the first recursion rule being: σ(n+1)(x)=αd(σ(n)−dnτ(n))=αdσ(n)(x)−αddnτ(n)(x) the second recursion rule being: τ(n)(x)=x*(τ(n−1)(x)+(αddn−1)−1σ(n)(x)CHANGE_L) wherein CHANGE_L refers to a change in the length of a connection polynomial, and wherein d is non-zero.
- 43. The method of claim 42, wherein the first recursion rule is:σ(n+1)(α−4σ(n)(x))_31 (α−3dn))(τ(n)(x))α−1=(α−4σ(n)(x))−(α−3((α−3dn)α2(τ(n)(x)) the second recursion rule is: τ(n)(x)=x*(τ(n−1)(x)+α−3(((α−4(α−3dn−1))−1CHANGE_L)σ(n)(x))).
- 44. The method of claim 42, wherein dn−1−1 is an inverse of a prior discrepancy, wherein the method further comprises:implementing the second recursion rule using a multiplier which updates the second set of registers; and applying a quantity including the inverse of the prior discrepancy two bits at a time to the multiplier which updates the second set of registers.
- 45. The method of claim 44, further comprising applying the quantity including the inverse of the prior discrepancy in α basis representation to the multiplier which updates the second set of coefficient registers.
- 46. The method of claim 44, wherein bits of each nibble of the quantity including the inverse of the prior discrepancy are serially received in most significant bit order.
- 47. The method of claim 42, further comprising providing an α−1 feedback multiplication for the first set of registers.
- 48. The method of claim 42, wherein the codeword contains m-bit symbols, and wherein the method comprises performing plural error locator iterations for determining the coefficients of the error locator polynomial, each error locator iteration having no more than m/2 clock cycles.
- 49. The method of claim 48, wherein the method further comprises performing plural error evaluator iterations for determining the coefficients of the error evaluator polynomial, each error locator iteration having no more than m/2 clock cycles.
- 50. The method of claim 48, wherein m is 8.
- 51. The method of claim 42, further comprising:taking an inner product of contents of the first set of registers and syndromes in a third set of registers; and outputting the inner product two bits at a time to an accumulator.
- 52. The method of claim 51, further comprising providing an α−1 feedback multiplication for the accumulator.
- 53. The method of claim 51, further comprising serially outputting bits of each nibble of the inner product in most significant bit order.
- 54. The method of claim 51, further comprising accumulating in the accumulator the current discrepancy quantity, and wherein the current discrepancy quantity is α−3dn.
- 55. The method of claim 54, further comprising:transmitting the current discrepancy quantity from the accumulator to an inverse generator which receives the current discrepancy quantity in β basis representation; serially outputting from the inverse generator a quantity including the inverse of a prior discrepancy in α basis representation, the inverse of a prior discrepancy being dn−1−1.
- 56. The method of claim 42, further comprising:accumulating the current discrepancy quantity in an accumulator; applying the current discrepancy quantity in β basis representation to an inverse generator; serially outputting from the inverse generator in α basis representation a quantity including the inverse of a prior discrepancy, the inverse of a prior discrepancy being dn−1−1.
- 57. The method of claim 56, further comprising serially outputting each nibble of the quantity including the inverse of the prior discrepancy in most significant bit order.
- 58. The method of claim 56, further comprising:(a) applying a parallel input value to a first inverse look up table and serially outputting from the first look up table a first value in β basis representation in least significant bit order; (b) applying a parallel input value to a second inverse look up table and serially outputting from the second look up table a second value in β basis representation in least significant bit order; (c) receiving the serially output first value from the first inverse look up table in a first shift register; (d) forming a summation of preselected bit positions of the first shift register in a (e) adding (1) the first value; (2) the second value; and (3) summation; (f) serially applying the sum of (e) to a second shift register; (g) serially outputting contents of the first shift register as higher order bits of an inverse of the input value in α basis representation; and (h) serially outputting contents of the second shift register as lower order bits of an inverse of the input value in α basis representation.
- 59. A method of operating an inverse generator, the method comprising:applying a parallel input value in β basis representation to the inverse generator; and serially outputting from the inverse generator, two bits at a time, an α basis representation of an inverse of the parallel input value.
- 60. The method of claim 59, further comprising:(a) applying a parallel input value to a first inverse look up table and serially outputting from the first look up table a first value in β basis representation in least significant bit order; (b) applying a parallel input value to a second inverse look up table and serially outputting from the second look up table a second value in β basis representation in least significant bit order; (c) receiving the serially output first value from the first inverse look up table in a first shift register; (d) forming a summation of preselected bit positions of the first shift register in a summer; (e) adding (1) the first value; (2) the second value; and (3) summation; (f) serially applying the sum of (e) to a second shift register; (g) serially outputting contents of the first shift register as higher order bits of an inverse of the input value in α basis representation; and (h) serially outputting contents of the second shift register as lower order bits of an inverse of the input value in α basis representation.
- 61. The method of claim 60, further comprising applying to the inverse generator as the parallel input value a current discrepancy quantity produced by a convolutional generator operating on a codeword.
- 62. The method of claim 61, wherein the codeword contains m-bit symbols, and wherein the inverse generator generates the inverse of the input value in α basis representation in no more than m/2 clock cycles.
- 63. The method of claim 60, further comprising applying to the inverse generator a sum of selected registers of a convolutional generator as the parallel input value.
- 64. The method of claim 63, further comprising applying the inverse of the input value in α basis representation to an error pattern generation circuit for generating an error pattern.
- 65. A slice of an error correction circuit for a Reed-Solomon decoder, the slice comprising:a first set of registers used to accumulate coefficients of an error locator polynomial for a codeword having t correction signals; a second set of registers used to update the first set of registers; a third set of registers into which syndromes for the codeword are at least initially loaded; the first set of registers, the second set of registers, and the third set of registers being distributed over t+1 component slices; a first multiplier which prepares an inner product of the syndromes in the third set of registers and contents of the first set of registers; an accumulator connected to the first multiplier for accumulating an accumulation value therein; an inverse generator which receives the accumulation value and outputs an inverse of the accumulation value; a second multiplier which uses the accumulation value and contents of the second set of registers to update the first set of registers; a third multiplier which uses the inverse of the accumulation value and contents of the first set of registers to update the second set of registers; wherein at least one of the first multiplier, second multiplier, and third multiplier also perform an αd multiplication (d not equal to zero) whereby no sets of registers other than the first set of registers, the second set of registers, and the third set of registers are utilized in the slices to determine coefficients of the error locator polynomial.
- 66. The apparatus of claim 65, wherein d equals −4.
- 67. A convolutional generator comprising:a first set of registers; a second set of registers; an updating multiplier; a feedback multiplier; wherein the convolutional generator operates upon a codeword and syndromes generated for the codeword by using a first recursion rule to generate coefficients of an error locator polynomial σ(x) for the codeword in the first set of registers, the coefficients of the error locator polynomial being generated in the first set of registers using the updating multiplier, the updating multiplier updating the first set of registers by multiplying contents τn(x) of the second set of registers by a current discrepancy quantity, the current discrepancy quantity including a current discrepancy dn and being derived from values stored in the first set of registers and syndromes, and wherein the contents τn(x) of the second set of registers are updated by the convolutional generator using a second recursion rule; wherein the feedback multiplier is provided for the first set of registers whereby contents of the first set of registers are clocked with a feedback value on a clock of an error locator iteration; wherein the first recursion rule is an expression employed by the convolutional generator for updating the second set of registers and the second recursion rule is an expression employed by the convolutional generator for updating the first set of registers.
- 68. The apparatus of claim 67, wherein the first recursion rule is:σ(n+1)(x)=αd(σ(n)−dnτ(n))=αdσ(n)(x)−αddnτ(n)(x) the second recursion rule is: τ(n)(x)=x*(τ(n−1)(x)+(αddn−1)−1σ(n)(x)CHANGE_L) wherein CHANGE_L refers to a change in the length of a connection polynomial, and wherein d is non-zero.
- 69. The apparatus of claim 68, whereinthe first recursion rule is: σ(n+1)(x)=(α−4σ(n)(x))−(α−3dn)(τ(n)(x)α−1=(α−4σ(n)(x))−(α−3((α−3dn)α2(τ(n)(x)) the second recursion rule is: τ(n)(x)=x*(τ(n−1)(x)+α−3(((α−4(α−3dn−1))−1CHANGE_L)σ(n)(x))).
- 70. The apparatus of claim 67, wherein the feedback value is α−1.
Parent Case Info
This application claims the priority and benefit of U.S. Provisional Patent Application Serial No. 60/142,444 filed Jul. 6, 1999, which is incorporated herein by reference.
US Referenced Citations (10)
Non-Patent Literature Citations (1)
Entry |
Glover et al, “Practical Error Correction Design for Engineers”, 2nd Edition, Cirrus Logic, 1991. |
Provisional Applications (1)
|
Number |
Date |
Country |
|
60/142444 |
Jul 1999 |
US |