Decoding apparatus, processing apparatus and methods therefor

Information

  • Patent Grant
  • 6421807
  • Patent Number
    6,421,807
  • Date Filed
    Wednesday, June 30, 1999
    25 years ago
  • Date Issued
    Tuesday, July 16, 2002
    21 years ago
Abstract
An apparatus and method for decoding data encoded in a linear cyclic code with less hardware than the prior art decoding apparatus without sacrificing the processing speed are described. The polynomial arithmetic part 14 derives polynomials σ(x), ω(x) by repeating calculation of the following Qi(x), exchange of polynomials between the register U_reg 180 and the register X_reg 184, and exchange of polynomials between the register Y_reg 182 and the register Z_reg 186 until the degree (deg Xreg) of the polynomial in the register X_reg 184 becomes smaller than [(d−h+1)/2] to solve the following recursive formula.[recursive formula]=σi(x)=σi−2(x)+Qi(x)·σi−1(x)ωi(x)=ωi−2(x)+Qi(x)·ωi−1(x)where Qi(x) is a quotient of ωi−2(x)/ωi−1(x) σ−1(x)=1, ω−1(x)=x2t σ0(x)=1, ω0(x)=M(x)
Description




FIELD OF THE INVENTION




This invention relates to a decoding apparatus and method for decoding data encoded in a linear cyclic code.




BACKGROUND OF THE INVENTION




The Peterson method, Berlekamp-Massey method and Euclidean method are known generally as methods of obtaining an error position polynomial indicating a position of a symbol within a received word polynomial where an error occurs and an error evaluator polynomial indicating the value of the error of the symbol in decoding a linear cyclic code,




“A Method for Solving Key Equation for Decoding Goppa Codes, Y. Sugiyama, M. Kasahara, S. Hirasawa and N. Namekawa, Inform. and Contr., Vol. 27, pp 87-99, January 1975” (reference 1) discloses a Euclidean method.




“An erasures-Errors Decoding Algorithm for Goppa Codes (Y. Sugiyama, M. Kasahara and N. Namekawa, IEEE Trans., Inform. Theory, March 1976” (reference 2) discloses that the Euclidean method can be applied to error erasure and correction processing by calculating an updated syndrome, i.e., by multiplying a syndrome polynomial with an erasure locator polynomial and erasing the (d−1) th degree term where “d” is the minimum Hamming distance of the code (“d” is an odd number unless specifically mentioned).




The Euclidean method involves a computation load which is equal to or less than other methods. In addition, the Euclidean method is conveniently implemented in a hardware because computation is easily paralleled.




For example, Japanese PUPA 62-122332 discloses an apparatus in which the Euclidean method is implemented in a hardware. The apparatus disclosed in this reference (3) is so configured as to successively calculate an updated syndrome and a GCD (greatest common divisor) of two polynomials, and processes error erasure by using a systolic array technology.




In the apparatus disclosed in the reference 3, it is necessary for each calculating cell to be provided with a latch for holding information/status and multiplier/adder for calculation.




Japanese PUPA 7-202718 (reference 4), for example, discloses a decoding apparatus which comprises a less amount of hardware than the apparatus disclosed in the reference 2 by using a polynomial arithmetic processing circuit rather than a systolic array.




SUMMARY OF THE INVENTION




This invention provides a decoding apparatus and a method which allows data encoded in a linear cyclic code to be decoded with less hardware than the prior art decoding apparatus.




It is a further object of this invention to provide a decoding apparatus, an arithmetic apparatus and a method therefor which allows a linear cyclic code to be decoded in a speed equal to or higher than the prior art decoding apparatus with less hardware than the prior art decoding apparatus.




In order to achieve the above objectives, the decoding apparatus of this invention comprises erasure locator data calculating means for calculating erasure locator data α


i


indicating the locator of erasure occurring in a linear cyclic code R(x), syndrome polynomial calculating means for calculating a syndrome polynomial S(x) based on said calculated erasure locator data α


i


and said linear cyclic code R(x), updated syndrome polynomial calculating means for calculating an updated syndrome polynomial M(x) based on said erasure locator data α


i


and said calculated syndrome polynomial S(x), polynomial calculating means for calculating an error position polynomial σ(x) an erasure locator polynomial λ(x) and an error evaluator polynomial ω(x) based on said erasure locator data α


i


and said calculated updated syndrome polynomial M(x), and decoding means for calculating an error/erasure value e


i


/E


i


to correct the error/erasure in said linear cyclic code R(x) for decoding based on said calculated error position polynomial σ(x) said calculated erasure locator polynomial λ(x), said calculated error evaluator polynomial ω(x), said error position data α


i


, and said linear cyclic code R(x), said polynomial calculating means repeating recursive formulas;






σ


i


(


x


)=σ


i−2


(


x


)+


Q




i


(


x


)·σ


i−1


(


x


)








ω


i


(


x


)=ω


i−2


(


x


)+


Q




i


(


x


)·ω


i−1


(


x


)






where Q


i


(x) is a quotient of ω


i−2


(x)/ω


i−1


(x), σ


−i


(x)=1, ω


−i


(x)=x


2t


, σ


o


(x)=1, ω


o


(x)=M(x),




until the degree of the polynomial ω


i


becomes equal to or less than [(d+h−1)/2−1] (where [ ]is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x) for deriving the erasure locator polynomial λ(x) from said erasure locator data α


i


.




The decoding apparatus of this invention solves








S


(


x


)·σ(


x


)·λ(


x


)=ω(


x


) mod (


x


)  (expression 12)






using the Euclidean method to derive the error evaluator polynomial ω(x) and the error position polynomial σ(x) for decoding a linear cyclic code such as BHC code. Rewriting the expression 12 by using the updated syndrome polynomial M(x)=S(x)·(x) mod x


d−1


, φ(x)·x


d−1


±M(x)·σ(x)=ω(x) (expression 14) is obtained. The error position polynomial σ(x) and the error evaluator polynomial ω(x) can be uniquely obtained from this expression 14 except for the difference of a multiple of constant.




The polynomial calculating means of the decoding apparatus of this invention uses the expression;






λ


i


(


x


)


x




2t





i


(


x





M


(


x


)=ω


i


(


x


)






(expression 16) Initial condition






λ


−1


(x)=1, σ


−1


(x)=0, ω


−1


(x)=X


2t


, λ


0


(x)=1,








σ


0


(x)=0, ω


0


(x)=M(x))






for solving the expression 14 using the Euclidean method.




The expression 16 can be expressed in the form of a recursive formula given below and the polynomial calculating means derives the error position polynomial σ(x) and the error evaluator polynomial ω(x) by repeating the following recursive formula until the condition deg ω(x)≦[(d+h−1)/2]−1 is satisfied:






σ


i


(


x


)=σ


i−2


(


x


)+


Q




i


(


x


)·σ


i−1


(


x


)






 ω


i


(


x


)=ω


i−2


(


x


)+


Q




i


(


x


)·ω


1−1


(


x


)




where Q


i


(x) is quotient of ω


i−2


(x)/ω


i−1


(x),




The erasure locator polynomial λ(x) is further calculated from the erasure locator data α


i


as shown in the expression 8.




The decoding means obtains an error value e


i


and an erasure value E


i


to correct a received word by substituting the expressions








e




i


=ω(α


−ji


)/{α


−ji


·α′(α


−ji


)·λ(α


−ji


)},  (23)










E




i


=ω(α


−j′i


)/{α


−j′i


·α′(α


−j′i


)·λ(α


−j′i


)}  (24)






with the erasure locator polynomial λ(x), the error position polynomial σ(x) and the error evaluator polynomial ω(x) so obtained for correcting the received word to decode it.




The arithmetic apparatus of this invention calculates the error position polynomial σ(x) and the error evaluator polynomial ω(x) from the updated syndrome polynomial M(x) which is calculated from the erasure locator data α


i


indicating the locator of an erasure in the linear cyclic code R(x) and the syndrome polynomial S(x) which is calculated from said erasure locator data α


i


and said linear cyclic code R(x). Said arithmetic apparatus repeats recursive formulas;






σ


i


(


x


)=σ


i−2


(


x


)+


Q




i


(


x


)·σ


i−1


(


x


)








ω


i


(


x


)=ω


i−2


(


x


)+


Q




i


(


x


)·ω


i−1


(


x


)






where Q


i


(x) is a quotient of ω


1−2


(x)/ω


i−1


(x), σ


−i


(x)=1, ω


−i


(x)=x


2t


, σ


0


(x)=1, ω


0


(x)=M(x),




until the degree of the polynomial ω


i


becomes equal to or less than [(d+h−1)/2−1] (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x).




Preferably, said arithmetic apparatus comprises; two first registers (registers U, X) having a data width equal □□ to or greater than k·(d−1)/2 bits (where k is the data length of a symbol included in said linear cyclic code), two second registers (registers Y, Z) having a data width equal to or greater than k·(d−1)/2 bits (where k is the data length of a symbol included in said linear cyclic code), multiplier/divider means for multiplying/dividing two multiplication/division data items, a data selector for selecting two of polynomials held by said registers, said erasure locator data α


i


and the result of said multiplication/division to generate said two multiplication/division data items, a first adder means for adding said result of multiplication/division to the data held in one of said first registers, a second adder means for adding said result of multiplication/division to the data held in one of said first registers, a shifter for shifting said result of multiplication/division, and arithmetic control means for causing these means to execute arithmetic processing to solve said recursive formula.




Preferably, said arithmetic control means causes one of said first registers (register U), the other one of said first registers (register X), one of said second registers (register Y), and the other one of said second registers (register Z) to hold said updated syndrome polynomial M(x), a coefficient x


d−1


of said linear cyclic code R(x), and values 0 and 1, respectively, and repeats an arithmetic operation for calculating said Q(x) and an exchange processing of the polynomial held in said register X to derive said error evaluator polynomial ω(x) in said register X and said error position polynomial σ(x) in said register Z.




The arithmetic operation to calculate said Q(x) calculates the highest degree term Q of the quotient of a division of the polynomial held in said register U by the polynomial held in said register X, and repeats a process of causing said register U to hold a polynomial derived by subtracting the result of a multiplication of the polynomial held in said register X with the calculated term Q from the polynomial held in said register X and a process of causing said register Y to hold a polynomial derived by subtracting the result of a multiplication of the polynomial held in said register Y with the calculated term Q from the polynomial held in said register X until the degree of the polynomial held in said register U becomes less than the degree of the polynomial held in said register X.




The exchange of the polynomials held in said registers causes the polynomial held in said register U to be exchanged with the polynomial held in said register X, and causes the polynomial held in said register Y to be exchanged with the polynomial held in said register Z.




Decoding Method




The decoding method of this invention comprises; an erasure locator data calculating step for calculating erasure locator data α


i


indicating the locator of an erasure occurring in a linear cyclic code R(x), a syndrome polynomial calculating step for calculating a syndrome polynomial S(x) based on said calculated erasure locator data α


i


and said linear cyclic code R(x), an updated syndrome polynomial calculating step for calculating an updated syndrome polynomial M(x) based on said erasure locator data a and said calculated syndrome polynomial S(x), a polynomial calculating step for calculating an error position polynomial σ(x), an erasure locator polynomial λ(x) and an error evaluator polynomial ω(x) based on said erasure locator data α


i


and said calculated updated syndrome polynomial M(x), and a decoding step for calculating error/erasure values e


i


/E


i


based on said calculated error position polynomial σ(x), said calculated erasure locator polynomial λ(x), said calculated error evaluator polynomial ω(x), said error position data α


i


, and said linear cyclic code R(x) to correct an error/erasure in said linear cyclic code R(x) for decoding, said polynomial calculating step including;




a process of repeating a recursive formula:






σ


i


(


x


)=σ


i−2


(


x


)+


Q




i


(


x


)·σ


i−1


(


x


)








ω


i


(


x


)=ω


i−2


(


x


)+


Q




i


(


x


)·ω


i−1


(


x


)






where Q


i


(x) is a quotient of ω


i−2


(x)/ω


i−1


(x), σ


−i


(x)=1, ω


−i


(x)=x


2t


, σ


0


(x)=1, ω


0


(x)=M(x),




until the degree of the polynomial ω


i


becomes equal to or less than [(d+h−1)/2−1] (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x), and




a process of calculating an erasure locator polynomial λ (x) from said erasure locator data α


i


.




Arithmetic Method




The arithmetic method of this invention calculates the error position polynomial σ(x) and the error evaluator polynomial ω(x) from the updated syndrome polynomial M(x) which is calculated from the erasure locator data α


i


indicating the locator of an erasure in the linear cyclic code R(x) and the syndrome polynomial S(x) which is calculated from said erasure locator data α


i


and said linear cyclic code R(x), and repeats recursive formulas;






σ


i


(


x


)=σ


i−2


(


x


)+


Q




i


(


x


)·σ


i−1


(


x


)








ω


i


(


x


)=ω


i−2


(


x


)+


Q




i


(


x


)·ω


i−1


(


x


)






where Q


i


(x) is a quotient of ω


i−2


(x)/ω


i−1


(x), σ


−i


(x)=1, ω


−i


(x)=x


2t


, σ


0


(x)=1, ω


0


(x)=M(x),




until the degree of the polynomial ω


i


becomes equal to or less than [(d+h−1)/2−1] (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x).











BRIEF DESCRIPTION OF THE DRAWINGS





FIG. 1

is a diagram showing the configuration of the decoding apparatus implementing the decoding method of this invention.





FIG. 2

is a diagram showing the configuration of the polynomial arithmetic part shown in

FIG. 1







FIG. 3

is a chart showing the format of output data (d=5) of the demodulation part.





FIG. 4

is the first diagram showing the first operation in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates the updated syndrome M(x).





FIG. 5

is a diagram showing the second arithmetic operation in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates the updated syndrome M(x).





FIG. 6

is a diagram showing the first arithmetic operation in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates a quotient Q(x).





FIG. 7

is a diagram showing the second arithmetic the operation (calculation of the arithmetic result Q) in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates the quotient Q(x).





FIG. 8

is a diagram showing the third arithmetic operation in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates the quotient Q(x).





FIG. 9

is a diagram showing an operation to exchange polynomials held in registers in the polynomial arithmetic part shown in

FIGS. 1 and 2

.





FIG. 10

is a diagram showing the first arithmetic operation in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates the erasure locator polynomial.





FIG. 11

is a diagram showing the second arithmetic operation in which the polynomial arithmetic part shown in

FIGS. 1 and 2

calculates the erasure locator polynomial.





FIG. 12

is a flow chart showing the decoding operation of the decoding apparatus shown in FIG.


1


.





FIG. 13

is a diagram showing allocation of fixed multipliers to the registers in the decoding apparatus shown in FIG.


1


.











DESCRIPTION OF PREFERRED EMBODIMENTS




First of all, coding and decoding processes according to the Euclidean method are described to facilitate understanding of the decoding method of this invention.




The Euclidean method is used for decoding a linear cyclic code such as a BCH code.




Coding Process




When a generating polynomial G(x) is defined as given in the expression 1 below, with the primitive root of a Galois field GF(2


m


) being α, the bit length of one symbol being m (m=1, 2, 3 . . . ), the code length n being n≦2


m


−1, the length k of information being k=n−(d−1), and the minimum Hamming distance being d(=2t+1), a code word C(x) in an RS coding scheme which is defined on the Galois field GF(2


m


) is generated by the following arithmetic operation in the sending side.










G


(
x
)


=




i
=
b


b
+
d
-
2




(

x
-

α
i


)






(

expression





1

)













To simplify the description, a case where the coefficient b in the expression 1 is 0 is described hereunder.




First of all, a check polynomial P(x) given in the expression


3


is obtained from the polynomial I(x) given in the following expression 2 which has a series of information {I


k−1


, I


k−2


, . . . , I


0


) as coefficients and the generating polynomial G(x) given in the expression 1.










I


(
x
)


=




i
=
b


k
-
1





I
i

·

x
i







(

expression





2

)












P


(


x


)=


I


(


x





x




d−1


mod


G


(


x


)  (expression 3)




The code word C(x) is obtained from the polynomial I(x) and check polynomial P(x) given in the expressions 1 and 2 as shown in the following expression 4 and the coefficients of the checking polynomial P(x) given in the expression 3 become the check symbol of the code word C(x).








C


(


x


)=


I


(


x





X




d−1




+P


(


x


)  (expression 4)






where




deg P(x)<n−k,




deg P(x) is the degree of P(x).




When the codeword C(x) given in the expression 4 is transmitted from the sending side, an error E(x) is added to the code word during the transmission and the code word is received as a received word polynomial R(x) given in the following expression 5 in the receiving side. Each coefficient of the error E(x) is,defined as an element on the Galois field GF(2


m


). When an error does not occur during the transmission, E(x)=0.








R


(


x


)=


C


(


x


)+


E


(


x


)  (expression 5)






Decoding Process




For decoding the received word polynomial R(x) given in the expression 5, the syndrome polynomial S(x) given in the expression 6 is obtained.










S


(
x
)


=




k
=
0


d
-
2





S
k

·

x
k







(

expression





6

)







where






S
j


=




i
=
0


n
-
1






R
i



(

α
j

)


i




















The updated syndrome polynomial M(x) [=S(x)·λ(x) mod x


d−1


; refer to the expression 13] is obtained from the syndrome polynomial S(x) given in the expression 6 using the erasure locator polynomial λ(x).




Further, the error position polynomial σ(x) and the error evaluator polynomial ω(x) given in the expressions 7 and 9 are obtained by solving the updated syndrome M(x) using the algorithm for finding optimal or near optimal solutions of the Euclidean method.




Incidentally, the term “erasure” means that the position of the error in the receiving polynomial is located but the error value is not known.










σ


(
x
)


=





i
=
1

l



(

1
+


α
ij


x


)


=



k




σ
k



x
k








(

expression





7

)













Where ji is the error location.










λ


(
x
)


=




i
h



(

1
+


α

ij




x


)


=



k




λ
k



x
k








(

expression





8

)













Where ji′ is erasure location.










ω


(
x
)


=



λ


(
x
)







i
=
1

l




e
i





ki
l



(

1
+


a
jk


x


)





+


σ


(
x
)







i
=
1

h




E
i





hi
h



(

1
+


α

jk




x


)










(

expression





9

)







where






e
i






is





error





value

,

l





is





number





of






errors
.















E
i






is





erasure





value

,

h





is





number





of






erasures
.




















When the value σ(α


−i


) which is obtained by substituting the error position polynomial σ(x) given in the expression 7 with a value α


−i


is 0 [σ(α


−i


)=0], it can be determined that an error occurs in the i-th symbol R


i


of the receiving polynomial R(x) and the error value e


i


of the symbol R


i


is obtained by the arithmetic operation given in the following expression 10.








e




i


ω(α


−i


)/{α


−i


σ′(α


−i


)·λ(α


−i


)}  (expression 10)






When the value λ(α


−i


) which is obtained by substituting the erasure locator polynomial λ(x) given in the expression 7 with a value α


i


is 0 [λ(α


−i


)=0], it can be determined that an erasure occurs in the i-th symbol R


i


of the receiving polynomial R(x) and the erasure value E


i


is obtained by the arithmetic operation given in the following expression 11.








E




i


=ω(α


−i


)/{α


−i


·σ(α


−i


)·λ′(α


−i


)}  (expression 11)






The error value e


i


and the erasure value E


i


are used for correcting the error and the erasure for the symbol in the error occurring position and the erasure occurring position, that is, the i-th symbol in the received word polynomial R(x) for decode processing.




Embodiment




An embodiment of this invention is now described hereunder.




Decoding Method of this Invention




In the decoding method of this invention, the following expression 12 is solved using the Euclidean method to derive the error evaluator polynomial ω(x) and the error position polynomial σ(x) for decoding a linear cyclic code such as a BCH code in a high speed with a small amount of hardware.




The decoding method is explained mathematically first of all.








S


(


x


)·σ(


x


)·λ(


x


)=ω(


x


) mod


x




d−1


  (expression 12)






The expression 14 is derived by rewriting the expression 12 using the updated syndrome polynomial M(x) of the following expression 13.








M


(


x


)=


S


(


x


)·λ(


x


)mod


x




d−1


  (expression 13)








φ(


x





x




d−1




+M


(


x


)σ(


x


)=ω(


x


)  (expression 14)






As shown in “Code Theory (Hideki Imai, The Institute of Electronic Information Communication, pp. 169-173; reference 5)”, for example, the error position polynomial σ(x) and the error evaluator polynomial ω(x) can be uniquely obtained from the expression 14 except for the difference of multiple of a constant to the extent in which 2l+h+1≦d is satisfied (where l is the number of symbols in which errors occur and h is the number of erased symbols).




On the other hand, because the degree deg ω(x) of the error evaluator polynomial ω(x) is no greater than l+h−1 (deg ω(x)≦l+h−1) from the expression 9 and the above (2l+h+1≦d) can be rewritten as (2l+2h≦d+h−1), the statement that the degree deg ω(x) of the error evaluator polynomial ω(x) is no greater than 1 is equivalent to the following expression 15.










deg






ω


(
x
)









d
+
h
-
1

2



-
1





(

expression





15

)













The following expression 16 is used for solving the expression 14 using the Euclidean method to obtain the error position polynomial σ(x) and the error evaluator polynomial ω(x).




Initial values of the terms of the expression 16 [A


−1


(x), B


−1


(x) , R


−1


(x), A


0


(x), B


0


(x) , R


0


(x)] are given in the expression 17 and satisfy the expression 16.




The degree deg R


−1


(x) of the received word polynomial R


−1


(x) is lower than the degree deg R


0


(x) of the received word polynomial R


0


(x) [deg R


−1


(x)>deg R


0


(x)] and the degree of the received word polynomial R


i


(x) decreases when the parameter i in the expression 14 increases from −1 to 0. The degree of the received word polynomial R


i


(x) decreases similarly as the parameter i increases.







A




i


(


x


)


x




2t




+B




−1


(


x


)=


R




1


(


x


)  (expression 16)








A




−1


(


x


)=1,


B




−1


(


x


)=0,


R




1


(


x


)=


x




2t












A




0


(


x


)=0,


B




0


(


x


)=1,


R




0


(


x


)=


M


(


x


)  (expression 17)






Defining a polynomial Q


i


(x) by the recursive formula given in the following expression 18 for solving the error position polynomial σ(x) and the error evaluator polynomial ω(x) in the above condition, polynomials A


i


(x), B


i


(x), R


i


(x) can be expressed by the recursive formula given in the expressions 19 to 21.








Q




i


(


x


)=Quotient[


R




i−2


(


x


),


R




i−1


(


x


)]  (expression 18)






where Quotient X, Y are expressed the arithmetic operation which calculate quotient divided X by Y.








A




i


(


x


)=


A




i−2


(


x


)−


Q




i


(


t





A




i−1


(


x


)  (expression 19)










B




i


(


x


)=


B




i−2


(


x


)−


Q




i


(


t





B




i−1


(


x


)  (expression 20)










R




i


(


x


)=


R




1−2


(


x


)−


Q




i


(


t





R




i−1


(


x


)  (expression 21)






When the recursive formulas given in the expressions 18 to 21 are executed repeatedly until the degree deg R


i


(x) satisfies the condition of the expression 15, the polynomials A


i


(x), B


i


(x), R


i


(x) become equal to the erasure locator polynomial λ(x), the error position polynomial σ(x) and the error evaluator polynomial ω(x) [A


i


(x)=λ(x), B


i


(x)=σ(x), R


i


(x)=ω(x)], respectively.




In short, by executing the recursive formulas given in the expressions 18 to 21 repeatedly until the received word polynomial R


i


(x) satisfies condition of the expression 15, the error position polynomial ω(x) and the error evaluator polynomial ω(x) can be obtained. The following expression 22 shows that the polynomials A


i


(x), B


i


(x), R


i


(x) satisfy the expression 16.








A




i


(


x


)


x




2t




+B




i


(


x





M


(


x


)={


A




i−2


(


x


)−


Q




i


(


x





A




i−1


(


x


)}


x




2t




+{B




i−2


(


x


)−










Q




i


(


x





B




i−1


(


x


)}


M


(


x


)={


A




i−2


(


x





x




2t




−M


(


x





B




i−2


(


x


)}+{


A




i−1


(


x











i x


2t




−M


(


x





B




i−1


(


x


)}·


Q




i


(


x


)=R


l−2


(


x


)−


Q




i


(


x





R




i−2


(


x


)=


R




i


(


x


)  (expression 22)






Incidentally, the arithmetic operation of the polynomial A


i


(x) is not necessary in the actual decode processing as seen from the expressions 18 to 21.




Further, a differential equation σ′(x) is obtained from the error position polynomial σ(x) and a differential equation λ′(x) is obtained from the erasure locator polynomial λ(x).




These polynomials are substituted in the following expressions 23, 24 (equivalent to the expressions 10, 11) to derive the error value e


i


and the erasure value E


i


.




The derived error value e


i


and erasure value E


i


are the difference between the error symbol and the correct symbol.




By taking a logical OR between the error symbol in the received word polynomial R(x) and the error value e


i


or the erasure value E


i


, the error symbol is corrected to a correct symbol.







e




i


=ω(α


−ji


)/{α


−ji


·σ′(α


−ji


)·λ(α


−ji


)}  (expression 23)








E




i


ω(α


−ji′


)/{α


−ji′


·σ)(α


−ji′


)·λ(α


−ji′


)}  (expression 24)






Because a method of algebraically solving a polynomial of an arbitrary degree (algebraic polynomial of a single variable) on the Galois field GF (2


m


) is not known, the polynomial is solved by a method called a chein search to determine whether or not an element on the Galois field GF (2


m


) is a solution of the algebraic equation for all the element thereof. The Chein search is not done for the area of the Galois field GF (2


m


) where a solution of the polynomial can not exist.




Further, it can be determined that a correction is impossible when the degree of the polynomial does not match the number of the solutions of the polynomial.




Decoding Apparatus


1






The decoding apparatus


1


which implements the decoding method so far described is now described hereunder.





FIG. 1

is a diagram showing the configuration of the decoding apparatus


1


implementing the decoding method of this invention.




As shown in

FIG. 1

, the decoding apparatus


1


comprises a data transmission part


10


and an error correction part


12


.




The data transmission part


10


comprises a demodulation part


100


, a receiving control part


102


, a memory controller part


104


, a buffer memory part


106


, a transmission control part


108


and a modulation part


110


.




An error correction part


12


comprises a computer control part


120


and a polynomial arithmetic part


14


.




The computer control part


120


comprises a syndrome generating part


124


and an error calculation/correction part


126


.





FIG. 2

is a diagram showing the configuration of the polynomial arithmetic part


14


shown in FIG.


1


.




The polynomial arithmetic part


14


comprises a selector part


16


, a register part


18


, a multiplier part


20


, an adder part


22


and an arithmetic control part


24


.




The selector part


16


comprises 5 selectors including a selector U


160


, a selector Y


162


, a selector X


164


, a selector Z


166


and a selector


168


.




The register part


18


comprises 4 registers including a register U (U_reg)


180


, a register Y (Y_reg)


182


, a register X (X_reg)


184


and a register Z (Z_reg)


186


.




The multiplier part


20


comprises a multiplier input selector


204


, a multiplier


210


, an inverse table


21


, a shifter U


214


and a shifter


216


.




The adder part


22


comprises adders


222


and


232


.




The decoding apparatus


1


is used in a data recording and reproducing device for recording and reproducing data for data transmission device for transmitting data using a linear cyclic code such as an RS code, or in recording media such as a hard disk and a magneto-optical disk for recording/reproducing data, for example.




With these components, the decoding apparatus


1


corrects (decodes) an error and an erasure included in the received or reproduced data (received word) and further transmits and outputs it.




Demodulation Part


100


In the transmission part


10


(FIG.


1


), the demodulation part


100


operates under the control of the receiving control part


102


to demodulate a transmission signal or a reproduced signal received by the data transmission device or the data recording/reproducing device (not shown) including the decoding apparatus


1


and outputs the digital data obtained as a result of demodulation to the receiving control part


102


as a received word (received word polynomial R(x)).




The demodulation part


100


detects an error upon demodulation and generates an error flag indicating the position of an erroneously demodulated symbol for output to the receiving control part


102


. The error flag indicates the position of an erased symbol (erasure locator) in the received word polynomial R(x) and corresponds to the value α


i


in the preceding description.





FIG. 3

is a chart showing a format of output data (d=5) of the demodulation part


100


.




The received word polynomial R(x) outputted from the demodulation part


100


includes an information portion [C(x)·x


d−1


] of 9 symbols and an ECC portion of 4 symbols when d=5 as shown in FIG.


3


and can be expressed as given in the following expression 25.








R


(


x


)=


K




8




·x




12




+k




7




x




11




+ . . . +K




0




·x




4




P




3




·x




3




+P




2




·x




2




+ . . . +P




0


·x


0


  (expression 25)






The received word polynomial R(x) outputted by the demodulation part


100


may be one which can be evenly divided by the generating polynomial G(x) given in the expression 1 when an erasure or an error does not occur without being limited to the form shown in FIG.


3


.




Receiving Control Part


102






The receiving control part


102


controls the decode processing of the demodulation part


100


.




The receiving control part


102


also outputs the received word polynomial R(x) inputted from the demodulation part


100


to the syndrome generating part


124


of the receiving control part


102


, the polynomial arithmetic part


14


and the computer control part


120


.




The receiving control part


102


also generates erasure locator data (α


i


) indicating the erasure locator in the received word polynomial R(x) based on the error flag inputted from the demodulation part


100


and outputs it to the syndrome generating part


124


and the polynomial arithmetic part


14


of the computer control part


120


.




Memory Control Part


104






The memory control part


104


controls the memory operation of the buffer memory


106


to store therein the received word polynomial R(x ) inputted from the receiving control part


102


.




The memory control part


104


also correct s a symbol in which an error or an erasure occurs. Specifically, the memory control part


104


corrects a symbol among those stored in the buffer memory part


106


which is indicated by the correction position data i[σ(α


i


)] inputted from the error calculation/correction part


126


of the computer control part


120


using the error value e


i


or the erasure value E


i


inputted from the error calculation/correction part


126


.




The memory control part


104


also reads out the corrected received word polynomial R(x) (decoded data) from the buffer memory


106


to output it to the transmission part


108


.




Transmission Control Part


108






The transmission control part


108


controls the communication with a communicating party.




The transmission control part


108


also controls modulation processing of the modulation part


110


.




The transmission control part


108


also outputs decoded data outputted from the memory control part


104


to the modulation part


110


.




Modulation Part


110






The modulation part


110


operates under the control of the transmission control part


108


to modulate decoded data inputted from the transmission control part


108


and output it to an external information/communication equipment (not shown) as an output signal or a transmission signal.




Incidentally, the modulation part


110


is not needed when the decoding apparatus


1


outputs data directly to the external equipment without intervening a communication line.




Syndrome Generating Part


124






The syndrome generating part


124


obtains the syndrome polynomial S(x) [=s


0


, s


1


, . . . , s


d−2


] given in the expression 6 using the received word polynomial R(x) and the radix [α


i


] of the generating polynomial inputted from the receiving control part


102


and outputs it to the polynomial arithmetic part


14


.




Error Calculation/Correction Part


126






The error calculation/correction part


126


calculates the correction position data i[(σ(α


i


)] and the error value e


i


or the erasure value E


i


(expression 23, 24) based on the polynomials σ(x), ω(x), λ(x) inputted from the polynomial arithmetic part


14


and the erasure locator data α


i


.




The error calculation/correction part


126


also outputs the calculated correction position data i[σ(α


i


)] and the error value e


i


or the erasure value E


i


to the memory control part


104


to have it correct the symbol in the received word in which an error or erasure occurs (error/erasure symbol).




Polynomial Arithmetic Part


14






The polynomial arithmetic part


14


solves the recursive formula given in the expressions 18 to 21 using the syndrome polynomial S(x) inputted from the syndrome generating part


124


and the erasure locator data α


i


to obtain the erasure locator polynomials σ(x), the error position polynomial ω(x), and the error evaluator polynomial λ(x) for output to the error calculation/correction part


126


.




Selector


160






In the selector part


16


(FIG.


2


), the selector


160


operates under the control of the arithmetic control part


24


and selects either one of data inputted from the adder


222


(adder circuits


222


-


0





222


-d−1) (the result of addition), data inputted from the register X_reg


184


and the syndrome polynomial S(x) or a coefficient x


d−1


(initial value A) inputted from the syndrome generating part


124


to output it to the register U_reg


180


.




Selector Y


162






The selector Y


162


operates under the control of the arithmetic control part


24


and selects either one of data inputted from the register Z_reg


186


, data inputted from the adder


232


(adder circuits


232


-


0


˜


232


-d−1) (the result of addition), and a value 0 (initial value B) to output it to the register Y_reg


182


.




Selector X


164






The selector X


164


operates under the control of the arithmetic control part


24


and selects either one of data inputted from the register U_reg


180


and an initial value C to output it to the register X_reg


184


.




Selector Z


166






The selector Z


166


selects either one of data outputted from the register Y_reg


182


and a value 1 (initial value D) to output it to the register Z_reg


186


.




Selector


168






The selector


168


selects either one of data input from the multiplier


216


(the result of multiplication D-


0


˜D-d−1) and the erasure locator data α


i


input from the receiving control part


102


to output it to a multiplier input selector


204


.




Register U_reg


180






In the register part


18


, the register U_reg


180


includes (d−1) registers of a data width k and operates under the control of the arithmetic control part


24


to hold data input from the selector U


160


and output it to the adder


222


(adder circuits


222


-


0


˜


222


-d−1), the selector X


164


and the multiplier input selector


204


.




The register U_reg


180


also holds the erasure locator polynomial λ(x) which is obtained as a result of the arithmetic operation to be described later with reference to FIG.


12


.




Register Y_reg


182






The register Y_reg


182


includes (d+1)/2 registers of a data width k and operates under the control of the arithmetic control part


24


to hold data input from the selector Y


162


and output it to the adder


232


(adder circuits


232


-


0


˜


232


-d−1), the multiplier input selector


204


and the selector Z


166


.




Resister X_reg


184






The register X_reg


184


includes (d−1) registers of a data width k and operates under the control of the arithmetic control part


24


to hold data input from the selector X


164


.




The register X_reg


184


also outputs the error evaluator polynomial ω(x) obtained as a result of processing to the error calculation/correction part


126


.




Register Z_reg


186






The register Z_reg


186


includes (d+1)/2 registers of a data width k and operates under the control of the arithmetic control part


24


to hold data input from the selector Z


166


and output it to the selector Y


162


and the multiplier input selector


204


.




The register Z_reg


186


also outputs the error evaluator polynomial ω(x) obtained as a result of arithmetic operation to be described later with reference to FIG.


12


.




Incidentally, it is enough for the registers included in the polynomial arithmetic part


14


to be k×(3d−1) bits in total and this is less than the conventional scheme.




Multiplier Input Selector


204






The multiplier input selector


204


operates under the control of the arithmetic control part


24


and selects 2 out of the data input from the receiving control part


102


, the register X_reg


184


, the register Z_reg


186


, and the register


168


.




The multiplier input selector


204


also selects the portion of the 2 selected data items which is processed in the multiplier


210


to generate input data A


0


˜A-d−1, B-


0


˜B-d−1 for output to the multiplier


210


.




Inverse Table


212






The inverse table


212


stores a coefficient input from the multiplier input selector


204


and the inverse thereof in correlation to each other and outputs the inverse of the coefficient (1/y) of input data from the multiplier


210


to the multiplier


210


when the input data is input from the multiplier


210


.




Specifically, when input data A-


0


˜A-d−1 is input from the multiplier input selector


204


, the inverse 1/(A-


0


)˜1/(A-d−1) thereof are returned to the multiplier input selector, or when input data B-


0


˜B-d−1 is input from the multiplier input selector


204


, the inverse 1/(B-


0


)˜1/(B-d−1) thereof are returned to the multiplier input selector.




The inverse table


212


is used when the multiplier


210


performs a division as described later.




Multiplier


210






The multiplier


210


operates under the control of the arithmetic control part


24


and multiplies 2 sets of input data selected by the multiplier input selector


204


(A-


0


˜A-d−1, B-


0


˜B-d−1 or the inverse thereof; the data width of each input data being k bits) each other and outputs the d results of multiplication C-


0


˜C-d−1 [=(A-


0


)·(B-


0


)˜(A-d−1)·(B-d−1)] of k bits of data width to the shifter U


214


.




The multiplier


210


also multiplies input data items each other and outputs (d+1)/2 multiplication results D-


0


˜D-(d+1)/2 of k bits of data width to the shifter Y


216


as the result of multiplication D-


0


˜D-(d+1)/2.




Shifter U


214






The shifter U


214


operates under the control of the arithmetic control part


24


and shifts the results of multiplication C-


0


˜C-d−1 input from the multiplier


210


to generate data E-


0


˜E-d−1 for output it to the adder circuits


222


-


0


˜


222


-d−1 of the adder


222


, respectively.




Shifter Y


216






The shifter Y


216


operates under the control of the arithmetic control part


24


and shifts the results of multiplication D-


0


˜D-d−1 input from the multiplier


210


to generate data F-


0


˜F-(d+1)/2 for output it to the adder circuits


232


-


0


˜


232


-(d+1)/2 of the adder


232


, respectively.




Adder


222






In the adder part


22


, the adder


222


comprises d adder circuits


222


-


0


˜


222


-d−1 (not shown) each of which adds 2 data items of k bits width each other to output the result of addition of k bits data width, and adds data input from the shifter U


214


E-


0


˜E-d−1 to data input from the register U_reg


180


for output to the selector U


160


.




Adder


232






The adder


232


comprises (d+1)/2 adder circuits


232


-


0


˜


232


-(d+1)/2 (not shown) each of which adds 2 data items of k bits width each other to output the result of addition of k bits data width, and adds data F-


0


˜F-(d+1)/2 input from the shifter Y


214


to data input from the register Y_reg


182


for output to the selector Y


162


.




Arithmetic Control Part


24






The arithmetic control part


24


provides an arithmetic control of the polynomial arithmetic part


14


. Specifically, the arithmetic control part


24


controls the operation of the components of the selector part


16


, the multiplier part


20


, the adder part


22


and the register part


18


to derive the polynomials ω(x), λ(x), σ(x) from the syndrome polynomial S(x) input from the syndrome generating part


124


and the erasure locator data α


i


.




The arithmetic control by the polynomial arithmetic part


24


is now described hereunder.




In the polynomial arithmetic part


14


, 2 arithmetic operations shown in the following table 1 are performed.




Table 1




Arithmetic operation performed in the polynomial arithmetic part


14






1. Arithmetic operation to obtain




updated syndrome S(x)·λ(x) mod


x




d−1






[=M(x); Expression 13](arithmetic operation 1)




2. Arithmetic operation to obtain




the error position polynomial σ(x)[expression 7],




the error evaluator polynomial ω(x)[expression 9], and




the erasure locator polynomial λ(x)[expression 8]




(arithmetic operation 2)




Arithmetic Operation to obtain M(x) (Arithmetic Operation 1)




The updated syndrome M(x) is obtained by controlling the components of the polynomial arithmetic part


14


to cause the arithmetic control part


24


to substitute the expression 13 with the erasure locator data α


i


which is input from the receiving control part


102


as the error position polynomial λ(x) and the syndrome polynomial S(x) which is input from the syndrome generating part


124


and is held in the register U_reg


180


(FIG.


2


).




In other words, the updated syndrome M(x) can be calculated by multiplying the erasure locator data α


i


with the syndrome polynomial S(x) as shown in the following expression 26 and extracting the result of multiplication from the constant term to the X


d−1


term.















M


(
x
)


=


S


(
x
)






j




(

1
+


α
ij

·
x


)






mod






x

d
-
1









(

expression





26

)













The actual operation 1 is performed as shown in the following first to the h-th steps by utilizing the fact that the updated syndrome S(x) can be expanded as shown in the following expression 27.




For the purpose of simplifying the description, a case where d=11 is taken hereunder as a specific example.








M


(


x


)=(1


+x·


60






i1


)·(1+


x·α




i2


)· . . . ·(1+


x·α




ih





S


(


x


) mod


x




d−1


  (expression 27)






(First Step)





FIG. 4

is a diagram showing the first arithmetic operation in which the polynomial arithmetic part


14


shown in

FIGS. 1 and 2

calculates the updated syndrome M(x).




In the first step, the arithmetic control part


24


controls the components of the polynomial arithmetic part


14


to cause the 0-th to 9th terms of the syndrome polynomial S(x) which are input from the syndrome generating part


124


to be held in the 0th to the 9th registers of the register U_reg


180


, and the arithmetic operation shown in the following expression 28 is applied to the so held syndrome polynomial S(x), the erasure locator data α


i


input from the receiving control part


102


and a coefficient x of the symbol included in the received word polynomial R(x).








M




1


(


x


)=(1+


x·α




i1





S


(


x


) mod


x




10


  (expression 28)







FIG. 5

is a diagram showing the second arithmetic operation in which the polynomial arithmetic part


14


shown in

FIGS. 1 and 2

calculates the updated syndrome M(x).




Actually, the arithmetic control part


24


causes the arithmetic operation shown in the following expression 29 to be performed using the syndrome polynomial S(x), the erasure locator data α


i1


and the received word polynomial R(x) z and causes the result of the arithmetic operation to be held in the register U_reg


180


.








S


(


x


)+(α


ij





S


(


x





x


  (expression 29)






When d=11, because the highest degree of the syndrome polynomial S(x) is 9, the 0th to the 10th degrees terms are included in the result of the arithmetic operation of the expression 29 but only the 0th to the 9th terms among them are held in the register U_reg


180


with the 10th term not held therein because it includes 10 registers.




Accordingly, when the arithmetic operation of the expression 29 is performed using the register U_reg


180


, the arithmetic result shown in the following expression 30 will be held in the r-th register included in the register U_reg


180


.








S




r




=S




r









ij




·S




r−1


  (expression 30)






where S


r


is the value held in the r-th register of U_reg


180


.




(The Second to the (h−1)th Steps)




In the second to the (h−1)th steps, the arithmetic control part


24


controls the components of the polynomial arithmetic part


14


to cause the similar arithmetic operation to the first step to be performed as shown in the following expression 31 successively using the erasure locator data α


i2


˜α


ih−1


.














M
2



(
x
)


=



(

1
+

x
·

α
i2



)

·


M
t



(
x
)








mod






x
10















M

h
-
1




(
x
)


=



(

1
+

x
·

α

ih
-
1




)

·


M

h
-
2




(
x
)








mod






x
10









(

expression





31

)













(The h-th Step)




In the h-th step, the arithmetic control part


24


controls the components of the polynomial arithmetic part


14


to cause the similar arithmetic operation to the first step shown in the following expression 32 to be performed to calculate the updated syndrome M(x).




By the arithmetic operation so far described, the updated syndrome M(x) is derived and held in the register U_reg


180


.








M


(


x


)=(1


+x




h





M




h−1


(


x


) mod


x




10


  (expression 32)






Arithmetic Operation to Obtain σ(x), ω(x), λ(x) (Arithmetic Operation 2)




The error position polynomial σ(x) and the error evaluator polynomial ω(x) are obtained by the following procedure.




Register Setting





FIG. 6

is a diagram showing the first arithmetic operation (register setting) in which the polynomial arithmetic part


14


shown in

FIGS. 1 and 2

calculates the quotient Q(x).




The arithmetic control part


24


sets up the register U_reg


180


, the register Y_reg


182


, the register X_reg


184


and the register Z_reg


186


as shown in FIG.


6


.




Specifically, the arithmetic control part


24


causes the updated syndrome M(x) calculated by the above arithmetic operation and held in the register U_reg


180


to be held in the register X_reg


184


via the selector X


164


.




The arithmetic control part


24


causes a coefficient x


d−1


(actually, the value is 1) in the received word polynomial R(x) input from the receiving control part


102


to be held in the register U_reg


180


as an initial value A via the selector U


160


.




The arithmetic control part


24


also causes an initial value B (a value 0) to be held in the register Y_reg


182


via the selector Y


162


and an initial value D (the constant term of the polynomial λ(x)=1) to be held in the register X_reg


186


via the selector Z


166


.




Arithmetic Operation Obtaining σ(x), ω(x), λ(x) (Arithmetic Operation 2)




The error position polynomial σ(x), the error evaluator polynomial ω(x) and the erasure locator polynomial λ(x) are derived by solving the recursive formulas given in the expressions 18 to 21 by repeating calculation of the quotient Q(x) given below, followed by exchange of the polynomial (Ureg) held in the register U_reg


180


with polynomial (Xreg) held in the register X_reg


184


and exchange of the polynomial (Yreg) held in the register Y_reg


182


with polynomial (Zreg) held in the register Z_reg


186


(exchange of polynomials) until the degree of the polynomial held in the register X_reg


184


(deg Xreg) becomes smaller than a value [(d−1+h)/2] (where [x] is a Gausian symbol which is a maximum integer not exceeding x).




By such arithmetic operation, the error position polynomial σ(x), the error evaluator polynomial ω(x) and the erasure locator polynomial λ(x) are derived and held in the registers Z_reg


186


, Y_reg


182


and U_reg


180


, respectively, for output to the error calculation/correction part


126


.




Calculation of Q(x)





FIG. 7

is a diagram showing the second arithmetic operation (calculation of the result Q) in which the polynomial arithmetic part


14


shown in

FIGS. 1 and 2

calculates the quotient Q(x).




The arithmetic control part


24


then calculates the quotient Q(x) derived from a division of the coefficient x


d−1


held in the register U_reg


180


by the updated syndrome M(x) held in the register X_reg


184


.




The quotient Q(x) is calculated by repeating the following first to the third steps until the degree of the polynomial held in the register U_reg


180


becomes smaller than the degree of the polynomial held in the register X_reg


184


.




In the first step, the arithmetic control part


24


controls the components of the polynomial arithmetic part


14


according to the procedure shown below to obtain the arithmetic result Q.




The arithmetic control part


24


controls the multiplier input selector


204


to cause it to output the coefficient of the term of the highest degree (the highest degree term) in the polynomial held in the register U_reg


180


and the coefficient of the term of the highest degree in the polynomial held in the register X_reg


184


to the multiplier


210


as input data A-


0


and B-


0


, respectively (it is arbitrary which of the coefficients is chosen as A-


0


or B-


0


).




For example, when the polynomial held in the register U_reg


180


is (F·x


f


+ . . . ) while the polynomial held in the register X_reg


184


is (G⇄x


g


+ . . . ), the multiplier input selector


204


outputs the coefficient F as the input data A-


0


.




The multiplier input selector


204


also obtains the inverse 1/G of the coefficient G input from the register X_reg


184


to output it to the multiplier


210


.




The multiplier


210


multiplies the input data A-


0


and B-


0


input from the multiplier input selector each other to obtain the arithmetic result Q (=F/G) under the control of the arithmetic control


24


.




Specifically, the multiplier


210


divides the coefficient (F) of the highest degree term of the polynomial held in the register U_reg


180


by the coefficient (G) of the highest degree term of the polynomial held in the register X_reg


184


to obtain the arithmetic result Q (F/G) under the control of the arithmetic control


24


and outputs it to the selector


168


as data D-


0


.




The selector


168


outputs the arithmetic result Q input from the multiplier


210


to the multiplier input selector


204


under the control of the arithmetic control part


24


.




(The Second Step)





FIG. 8

is a diagram showing the third arithmetic operation in which the polynomial arithmetic part


14


shown in

FIGS. 1 and 2

calculates the quotient Q(x).




The arithmetic control part


24


controls the multiplier input selector


204


to cause it to output the polynomial (Xreg) held in the register X_reg


184


and the arithmetic result Q obtained in the above step 1 to the multiplier


214


.




The multiplier


210


multiplies these input data and outputs the result of the multiplication (Q·Xreg) to the shifter U


214


.




The shifter U


214


shifts the result of the multiplication under the control of the arithmetic control


24


and outputs it to the adder


222


(adder circuits


222


-


1


˜


222


-d−1) as a coefficient x


f−g


.




The adder


222


(adder circuits


222


-


1


˜


222


-d−1) adds the data input from the multiplier


210


to the data input from the register U_reg


180


and outputs the arithmetic result to the selector


160


.




In the adder


222


(adder circuits


222


-


1


˜


222


-d−1), the result of adding the multiplication result (Q·Xreg) and the polynomial (Ureg) is equal to the result of subtracting the multiplication result (Q·Xreg) from the polynomial (Ureg) [Ureg−Q·Xreg] because the index of the Galois field (2


m


) is 2 and addition is equivalent to subtraction.




The arithmetic control part


24


controls the selector


160


and he register U_reg


180


to cause the result of subtraction input rom the adder


222


(adder circuits


222


-


1


˜


222


-d−1) to be held in the register U_reg


180


(Ureg=Ureg−Q·Xreg)




(The Third Step)




The arithmetic control part


24


controls the multiplier input selector


204


to cause it to output the polynomial (Zreg) held in the register Z_reg


186


and the arithmetic result Q obtained in the above step 1 to the multiplier


210


.




The multiplier


210


multiplies these input data and outputs the coefficients of the polynomial obtained as a multiplication result to the shifter Y


216


.




The shifter Y shifts the multiplication result input from the multiplier


210


under the control of the arithmetic control part


24


to output to the adder


232


(adder circuits


232


-


1


˜


232


-(d−1)/2) as a coefficient x


f−g


.




The adder


232


(adder circuits


232


-


1


˜


232


-(d+1)/2 ) adds the data input from the multiplier


210


to the data input from the register Y_reg


182


to output the result to the selector Y


162


.




In the adder


232


(adder circuits


232


-


1


˜


232


-(d+1)/2), the result of adding the multiplication result (Q·Xreg) to the polynomial (Zreg) is equal to the result of subtracting the multiplication result (Q·Xreg) from the polynomial (Zreg) [Q·Xreg−Zreg].




The arithmetic control part


24


causes the result of the subtraction input from the adder


232


(adder circuits


232


-


1


˜


232


-(d+1)/2) to be held in the register Y_reg


182


(Z_reg=Zreg−Q·Yreg).




By repeating the first to the third steps described in the above until the degree of the polynomial held in the register U_reg


180


becomes smaller than the degree of the polynomial held in the register X_reg


184


, a quotient Q(x) of a division of R


d−2


(x) held in the register U_reg


180


by R


d−1


(x) held in the register Y_reg


182


is obtained one term after another with a resulting residue as shown in the specific example in the following expression 33-1 to 33-3.




In the actual calculation of obtaining the quotient Q(x), the calculations of the subtractions (Ureg−Q·Xreg) and (Zreg−Q·Yreg) are performed simultaneously as shown in

FIG. 8

to improve the arithmetic speed.




when






R


i−1


(x)/R


i−2


=Q(x) . . . R


i


(x)








R


i−1


=x


3


+1, R


i−2


=x+1,


















(Data Width of Multiplier


210


)




The reason why the multiplier


210


can be comprised of d multiplication circuits is now explained using a specific example.




The arithmetic result Q is applied to one input of each of d multipliers (number d−1˜0) while each of the coefficients of the polynomial held in the register X_reg


184


and each of the coefficients of the polynomial held in the register Z_reg


186


are applied to the other input of each of the d multipliers successively in the order of the degrees with the lower degree first.




By this input application, the coefficients of the polynomial m


d−1


x


d−1


+m


d−2


x


d−2


+ . . . +m


0


x


0


held in the register X_reg


184


and the polynomial n


(d+1)/2−1


x


(d+1)/2−1


+n


(d+1)/2−2


x


(d+1)/2−2


+ . . . +n


0


x


0


held in the register Z_reg


186


are input to the (d−1)th˜0th calculation circuits, respectively.




Because the number of terms of the arithmetic result Q obtained in the first step is 1, the number of times of multiplication required for performing the calculation of the second and the third steps is deg(X_reg)+deg(Z_reg)+2 (where X_reg, Z_reg are the polynomials held in the registers X_reg


184


and Z_reg


186


, respectively).




According to deg R


i


+deg B


i


≦2t−1 (i≧0) which is derived by modifying;








deg R




i−1


+deg


B




i


=2


t


(


i≧


0) and


deg R




i




≦R




i−1


1,






deg (X_reg)+deg (Z_reg)+2 is no greater than d so that it is known that the calculation can be performed by d multiplier circuits (reference 5, p.171).




As such, the arithmetic method described here allows the width of the input/output data of the multiplier


210


to be a minimum and the amount of hardwares to be reduced to a minimum.




(Exchange of Polynomial)





FIG. 9

is a diagram showing the operation of exchanging polynomials held in registers in the polynomial arithmetic part


14


shown in

FIGS. 1 and 2

.




The arithmetic control part


24


controls the selector U


160


, the selector X


164


, the register U_reg


180


, and the register X_reg


184


, and connects the input of the register U_reg


180


to the output of the register X_reg


184


and the output of the register U_reg


180


to the input of the register X_reg


184


to cause the polynomial held in the register U_reg


180


to be held in the register X_reg


184


and the polynomial held in the register X_reg


184


to be held in the register U_reg


180


for exchanging the polynomials.




Similarly, the arithmetic control part


24


controls the selector Y


162


, the selector Z


166


, the register Y_reg


182


, and the register Z_reg


186


, to cause the polynomial held in the register Z_reg


186


to be held in the register Y_reg


182


and the polynomial held in the register Y_reg


182


to be held in the register Z_reg


186


for exchanging the polynomials.




Calculation of the Erasure Locator Polynomial λ(x)





FIGS. 10 and 11

are the first and the second diagrams showing the arithmetic operation in which the polynomial arithmetic part


14


obtains the erasure locator polynomial.




As shown in

FIGS. 10 and 11

, the polynomial arithmetic part


14


performs a calculation similar to the derivation of the correction polynomial M(x) shown in

FIGS. 4 and 5

to derive the erasure locator polynomial λ(x) and hold it in the register U_reg


180


(U_reg=λ(x), in the following table 2).




The difference between the calculation of the updated syndrome M(x) and the calculation of the erasure locator polynomial λ(x) lies only in that the initial value in calculating the updated syndrome M(x) is the syndrome polynomial S(x) while the initial value in obtaining the erasure locator polynomial λ(x) is a value 1.




When the polynomials σ(x), ω(x), λ(x) so far described are described in the form of a program, they are in the form shown in the following table 2.




When the arithmetic operation of this invention is performed using a hardware, registers corresponding to the variable TEMP shown in the table 2 are not necessary because the content of the registers can be exchanged using a circuit delay.




[Table 2]




Example of a program to obtain the polynomials




σ(x), ω(x), λ(x)




>>>Set up Register<<<




Ureg=M(x)




Xreg=Ureg




Ureg=x


d−1






Yreg=0




Zreg=1




>>> derivation of σ(x), ω(x) <<<




while( ) {




>>> derivation of Q(x) <<<




while( ) {




If (deg Ureg<deg Xreg) then exit




Q=highest next term of Ureg/highest next term of Xreg




Ureg=Ureg−Q*Xreg




Yreg=Yreg−Q*Zreg




}




>>> Exchange of polynomials <<<




TEMP=Ureg




Ureg=Xreg




Xreg=TEMP




TEMP=Yreg




Yreg=Zreg




Zreg=TEMP




}




If (deg Xreg<Gauss [(d−1/h)/2] then exit >>> derivation of λ <<<




U_reg=λ(x)




}




where; Ureg, Yreg, Xreg, Zreg are the polynomials held in the registers U_reg


180


˜Z_reg


186


,




TEMP is a working variable required for implementation by a software,




deg x is the degree of a polynomial x, and




Gauss is a Gauss symbol.




Operation of the Decoding Apparatus


1






The operation of the decoding apparatus


1


is now described hereunder.





FIG. 12

is a flow chart showing the decoding operation (S


100


) of the decoding apparatus


1


shown in FIG.


1


.




As shown in

FIG. 12

, in step


102


(S


102


), when the demodulation part


100


(

FIG. 1

) demodulates produced/transmitted signal and the receiving control part


102


outputs the received word polynomial R(x) and the erasure locator α


i


to the error correction part


12


, the syndrome generating part


124


of the error correction part


12


derives the syndrome polynomial S(x) while the polynomial arithmetic part


14


performs the operation 1 (expression 34) to derive the updated syndrome polynomial M(x) and hold them in the register U_reg


180


.








S


(


x


)·λ(


x


)=


x




h




·T




1


(


x


)+


T




2


(


x


)  (expression 34)






In step


104


(S


104


), the polynomial arithmetic part


14


starts the operation 2 (expression


35


) to set up the registers. Specifically, the arithmetic control part


24


of the polynomial arithmetic part


14


moves the updated syndrome M(x) held in the register U_reg


180


to the register X_reg


184


to hold a coefficient x


d−1


in the register U_reg


180


, a value 0 in the register Y_reg


182


, and a value 1 in the register Z_reg


186


.








T




1


(


x


)·σ(


x


)=ω


e


(


x


) mod


x




d−1−h


  (expression 35)






In step


106


(S


106


), the arithmetic control part


24


determines whether or not the degree of the polynomial held in the register X_reg


184


is smaller than [(d−1+h)/2].




The arithmetic control part


24


proceeds to the process of S


114


when the degree of the polynomial held in the register X_reg


184


is smaller than [(d+1+h)/2] while it proceeds to the process of S


108


otherwise.




In step


108


(S


108


), the arithmetic control part


24


starts derivation of the quotient Q(x). The arithmetic control part


24


determines whether or not the degree of the polynomial held in the register U_reg


180


is smaller than the degree of the polynomial held in the register X_reg


184


and proceeds to the process of S


114


when the degree of the polynomial held in the register U_reg


180


is smaller than the degree of the polynomial held in the register X_reg


184


while it proceeds to the process of S


110


otherwise.




In step


110


(S


110


), the arithmetic control part


24


controls the components of the polynomial arithmetic part


14


to calculate the highest degree term (Q) in the quotient Q(x) resulted from a division of the polynomial held in the register U_reg


180


by the polynomial held in the register X_reg


184


.




The arithmetic control part


24


also controls the components of the polynomial arithmetic part


14


to have it subtract the value of multiplication of the arithmetic result Q with the polynomial (Xreg) held in the register X_reg


184


from the polynomial (Ureg) held in the register U_reg


180


and hold the resulting polynomial in the register U_reg


180


(Ureg=Ureg−Q·Xreg).




The arithmetic control part


24


also controls the components of the polynomial arithmetic part


14


to have it subtract the value of multiplication of the arithmetic result Q with the polynomial (Zreg) held in the register Z_reg


186


from the polynomial (Yreg) held in the register Y_reg


182


and hold the resulting polynomial in the register Y_reg


182


(Yreg=Yreg−Q·Zreg).




In step


112


(S


112


), the arithmetic control part


24


also controls the components of the polynomial arithmetic part


14


to exchange the polynomial held in the register U_reg


180


with the polynomial held in the register X_reg


184


and the polynomial held in the register Y_reg


182


with the polynomial held in the register Z_reg


186


.




In step


114


(S


114


), the polynomial arithmetic part


14


calculates the polynomial λ(x), holds it in the register U_reg


180


and outputs it to the error calculation/correction part


126


.




The polynomial arithmetic part


14


outputs the polynomials ω(x), σ(x) calculated by the above calculation and held in the registers X_reg


184


and Z_reg


186


to the error calculation/correction part


126


. (refer to expression 36)






ω(


x


)=


x




h




·ω




e


(


x


)+


T




2


(


x


)·σ(


x


)  (expression 36)






In step


116


(S


116


), the error calculation/correction part


126


calculates the error value e


i


, the erasure value E


i


, the correction position data i [σ(α


i


)=0] using the polynomials σ(x), ω(x), λ(x) and the erasure locator α


i


input from the polynomial arithmetic part


14


to correct the received word stored in the buffer memory part


106


.




The corrected received word is outputted as an output/transmitted signal by the transmission control part


108


and the modulation part


110


.




Decoding Latency




In the decoding process of the polynomial arithmetic part


14


, the decoding latency for the case where d is an odd number is 3(d−1)/2 if there is no erasure while it is 2


d−


1 if there is an erasure.




In decoding a received word on the Galois field (


28


) when d=11, for example, the degree of the error position polynomial is at most if there is no erasure while it is [(10−h)/2] ([ ] is a Gaussian symbol) if there is an erasure.




In this case, the degree of the error/erasure value polynomial is 4 at most while it is [(10+h)/2)−1] (ditto) if the number of erasures is h.




Further, the degree of the erasure locator polynomial λ(x) is equal to the number of erasures h and the syndrome polynomial S(x) will be 9 degrees because the number of the syndromes is 10.




The above description is summarized in the following table 3.



















TABLE 3











Number of












Erasures




λ(x)




λ′(x)




σ(x)




σ′(x)




ω(x)































0




0




0




5




4




4







1




1




0




4




2




4







2




2




0




4




2




5







3




3




2




3




2




5







4




4




2




3




2




6







5




5




4




2




0




6







6




6




4




2




0




7







7




7




6




1




0




7







8




8




6




1




0




8







9




9




8




0




0




8







10




10




8




0




0




9
















FIG. 13

is a diagram showing the allocation of fixed multipliers to the registers in the decoding apparatus


1


shown in FIG.


1


.




A fixed multiplier is associated to each register of the polynomial arithmetic part


14


for a chein search as shown in FIG.


13


.




EFFECT OF THE INVENTION




According to the decoding apparatus, the arithmetic apparatus and the method therefor of this invention, a linear cyclic code can be decoded with less hardware than the prior art decoding apparatus.




According to the decoding apparatus, the arithmetic apparatus and the method therefor of this invention, a linear cyclic code can be decoded in a speed equal to or higher than the prior art decoding apparatus with less hardware than the prior art decoding apparatus.



Claims
  • 1. A decoding apparatus comprising:erasure locator data calculating means for calculating erasure locator data αi indicating the locator of erasure occurring in data encoded in a linear cyclic code R(x), syndrome polynomial calculating means for calculating a syndrome polynomial S(x) based on said calculated erasure locator data αi and said linear cyclic code R(x), updated syndrome polynomial calculating means for calculating an updated syndrome polynomial M(x) based on said erasure locator data αi and said calculated syndrome polynomial S(x), polynomial calculating means for calculating an error position polynomial σ(x), an erasure locator polynomial λ(x) and an error evaluator polynomial ω(x), based on said erasure locator data αi and said calculated updated syndrome polynomial M(x), decoding means for calculating an error/erasure value ei/Ei to correct the error/erasure in said linear cyclic code R(x) for decoding based on said calculated error position polynomial σ(x) said calculated erasure locator polynomial λ(x), said calculated error evaluator polynomial ω(x), said error position data αi, and said linear cyclic code R(x), said polynomial calculating means performing according to recursive formulas: σi(x)=σi−2(x)+Qi(x)·σi−1(x) ωi(x)=ωi−2(x)+Qi(x)·ωi−1(x) where Qi(x) is a quotient of ωi−2(x)/(ωi−1(x), σ−1(x)=1, ω−i(x)=x2t, σ0(x)=1, ω0(x)=M(x),until the degree of the polynomial ωi becomes equal to or less than (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x) for deriving the erasure locator polynomial λ(x) from said erasure locator data αi, two first registers (registers U, X) having a data width equal to or greater than k·(d−1)/2 bits (where k is a data length of a symbol included in said linear cyclic code), two second registers (registers Y, Z) having a data width equal to or greater than k·(d−1)/2 bits: (where k is the data length of a symbol included in said linear cyclic code), multiplier/divider means for multiplying/dividing two multiplication/division data items, a data selector for selecting two of polynomials held by said registers, said erasure locator data αi and the result of said multiplication/division to generate said two multiplication/division data items, a first adder means for adding said result of multiplication/division to data held in one of said first registers, a second adder means for adding said result of multiplication/division to the data held in one of said first registers, a shifter for shifting said result of multiplication/division, and arithmetic control means for causing these means to execute arithmetic processing to solve said recursive formulas.
  • 2. An apparatus for calculating the error position polynomial σ(x) and the error evaluator polynomial ω(x) from the updated syndrome polynomial M(x) in which said updated syndrome polynomial M(x) is calculated from the erasure locator data αi indicating the locator of an erasure in data encoded in a linear cyclic code R(x) and the syndrome polynomial S(x), and said syndrome polynomial S(x) is calculated from said erasure locator data αi and said linear cyclic code R(x), said arithmetic apparatus performing according to recursive formulas:σi(x)=σi−2(x)+Qi(x)·σi−1(x) ωi(x)=ωi−2(x)+Qi(x)·ωi−1(x) where Qi(x) is a quotient of ωi−2(x)/(ωi−1(x), σ−1(x)=1, ω−i(x)=x2t, σ0(x)=1, ω0(x)=M(x),until the degree of the polynomial ωi becomes equal to or less than (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x), the apparatus comprising: two first registers (registers U, X) having a data width equal to or greater than k·(d−1)/2 bits (where k is a data length of a symbol included in said linear cyclic code), two second registers (registers Y, Z) having a data width equal to or greater than k·(d−1)/2 bits (where k is the data length of a symbol included in said linear cyclic code), multiplier/divider means for multiplying/dividing two multiplication/division data items, a data selector for selecting two of polynomials held by said registers, said erasure locator data αi and the result of said multiplication/division to generate said two multiplication/division data items, a first adder means for adding said result of multiplication/division to data held in one of said first registers, a second adder means for adding said result of multiplication/division to the data held in one of said first registers, a shifter for shifting said result of multiplication/division, and arithmetic control means for causing these means to execute arithmetic processing to solve said recursive formulas.
  • 3. An arithmetic apparatus of claim 2 in which;said arithmetic control means causes one of said first registers (register U), the other one of said first registers (register X), one of said second registers (register Y), and the other one of said second registers (register Z) to hold said updated syndrome polynomial M(x), a coefficient xd−1 of said linear cyclic code R(x), and values 0 and 1, respectively, and repeats an arithmetic operation for calculating said Q(x) and an exchange processing of the polynomial held in said register X to derive said error evaluator polynomial ω(x) in said register X and said error position polynomial σ(x) in said register Z, said arithmetic operation to calculate said Q(x) calculates the highest degree term Q of the quotient of a division of the polynomial held in said register U by the polynomial held in said register X, and repeats a process of causing said register U to hold a polynomial derived by subtracting a multiplication of the polynomial held in said register X with the calculated term Q from the polynomial held in said register X and a process of causing said register Y to hold a polynomial derived by subtracting a multiplication of the polynomial held in said register Y with the calculated term Q from the polynomial held in said register X until the degree of the polynomial held in said register U becomes less than the degree of the polynomial held in said register X, and said exchange of the polynomials held in said registers causes the polynomial held in said register U to be exchanged with the polynomial held in said register X, and causes the polynomial held in said register Y to be exchanged with the polynomial held in said register Z.
  • 4. A decoding method comprising the steps of:calculating erasure locator data αi indicating the locator of an erasure occurring in data encoded in a linear cyclic code R(x), calculating a syndrome polynomial S(x) based on said calculated erasure locator data αi and said linear cyclic code R(x), an updated syndrome polynomial calculating step for calculating an updated syndrome polynomial M(x) based on said erasure locator data αi and said calculated syndrome polynomial S(x), calculating an error position polynomial σ(x), an erasure locator polynomial λ(x) and an error evaluator polynomial ω(x) based on said erasure locator data αi and said calculated updated syndrome polynomial M(x), and calculating error/erasure values ei/Ei based on said calculated error position polynomial σ(x), said calculated erasure locator polynomial λ(x), said calculated error evaluator polynomial ω(x), said error position data αi and said linear cyclic code R(x) to correct an error/erasure in said linear cyclic code R(x) for decoding, including: a process of repeating a recursive formula: σi(x)=σi−2(x)+Qi(x)·σi−1(x) ωi(x)=ωi−2(x)+Qi(x)·ωi−1(x) where Qi(x) is a quotient of ωi−2(x)/(ωi−1(x),σ−1(x)=1, ω−i(x)=x2t, σ0(x)=1, ω0(x)=M(x), until the degree of the polynomial ωi becomes equal to or less than (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x), calculating an erasure locator polynomial λ(x) from said erasure locator data αi, generating two first registers (registers U, X) having a data width equal to or greater than k·(d−1)/2 bits (where k is a data length of a symbol included in said linear cyclic code), generating two second registers (registers Y, Z) having a data width equal to or greater than k·(d−1)/2 bits (where k is the data length of a symbol included in said linear cyclic code), multiplying/dividing two multiplication/division data items, selecting two of polynomials held by said registers, said erasure locator data αi and the result of said multiplication/division to generate said two multiplication/division data items, adding said result of multiplication/division to data held in one of said first registers, adding said result of multiplication/division to the data held in one of said first registers, shifting said result of multiplication/division.
  • 5. A method for calculating an error position polynomial σ(x) and an error evaluator polynomial ω(x) from the updated syndrome polynomial M(x) in which said updated syndrome polynomial M(x) is calculated from erasure locator data αi indicating a location of an erasure in the linear cyclic code R(x) and the syndrome polynomial S(x) and said syndrome polynomial S(x) is calculated from said erasure locator data αi and said linear cyclic code R(x),said method repeating calculations according to recursive formulas; σi(x)=σi−2(x)+Qi(x)·σi−1(x) ωi(x)=ωi−2(x)+Qi(x)·ωi−1(x) where Qi(x) is a quotient of ωi−2(x)/(ωi−1(x),σ−1(x)=1, ω−i(x)=x2t, σ0(x)=1, ω0(x)=M(x), until the degree of the polynomial ωi becomes equal to or less than (where [ ] is a Gauss symbol, d is a minimum Hamming distance and h is the number of erasures) to calculate the error position polynomial σ(x) and the error evaluator polynomial ω(x), generating two first registers (registers U, X) having a data width equal to or greater than k(d−1)/2 bits (where k is a data length of a symbol included in said linear cyclic code), generating two second registers (registers Y, Z) having a data width equal to or greater than k·(d−1)/2 bits (where k is the data length of a symbol included in said linear cyclic code), multiplying/dividing two multiplication/division data items, selecting two of polynomials held by said registers, said erasure locator data αi and the result of said multiplication/division to generate said two multiplication/division data items, adding said result of multiplication/division to data held in one of said first registers, adding said result of multiplication/division to the data held in one of said first registers, shifting said result of multiplication/ division.
Priority Claims (1)
Number Date Country Kind
10-184827 Jun 1998 JP
US Referenced Citations (5)
Number Name Date Kind
4162480 Berlekamp Jul 1979 A
5642367 Kao Jun 1997 A
5715262 Gupta Feb 1998 A
5983383 Wolf Nov 1999 A
6212659 Zehavi Apr 2001 B1
Foreign Referenced Citations (2)
Number Date Country
6-164421 Jun 1994 JP
7-50594 Feb 1995 JP
Non-Patent Literature Citations (1)
Entry
Hung-Wei Chen et al. (A new VLSI architecture of Reed Solomon decoder with erasure function; IEEE; pp. 1455-1459 vol 2; 13-17 Nov. 1995).