This application claims priority from Japanese Patent Application No. JP 2004-096512, filed Mar. 29, 2004, the entire disclosure of which is incorporated herein by reference.
The present invention relates to information recording/reproducing devices and, more particularly, to an information recording/reproducing device employing a new error correction coding method.
For information recording/reproducing devices such as magnetic disk devices, magneto-optical disk device, and compact disk devices, Reed-Solomon codes are used. This code consists of 28 elements in magnetic disk devices. A Reed-Solomon code over a Galois field GF(28) that is a set of elements for pairs, of which addition, subtraction, multiplication, and division are defined, but “divide by 0” is not defined in division, is used. This Reed-Solomon coding, in which each symbol consists of eight bits (one byte) as a unit of computing, makes error correction of signals that are recorded and reproduced.
The Reed-Solomon codes that are capable of correcting up to t symbols are constructed by including 2t redundant (parity) symbols. The length of sectors that are units of data to be recorded and reproduced at a time is 512 symbols (512 bytes). However, because the length of the Reed-Solomon codes that can be constructed over the GF(28) is not greater than 28−1=255 symbols, data is separated (interleaved) into three or more blocks and each block is constructed by the RS error correction coding.
An advantage of the Reed-Solomon codes is that, in polynomial expression of codewords, the positions of the symbols can be arranged from the highest order αn−1, αn−2, . . . α2, α1, α0 (α: a primitive root of Galois field) and the positions of the symbols can be calculated orderly only by a multiplier during Chien search when the codewords are decoded. The Chien search is a method of evaluating an equation by assigning elements to it in order.
With a recent trend of using magnetic disk devices in video application, the International Disk Drive Equipment Material Association (IDEMA) and other organizations are discussing the usage of sectors longer than 512 bytes in a magnetic disk device, while maintaining conventional read/write processing in units of 512 bytes on the interface to the host side. One suggestion is a Reed-Solomon code organization with eight interleaving sequences that can preferably be used as an error-correcting code for data separated by a sector length of 4 Kbytes=32768 bits.
Relevant references include the following:
Since the ratio of errors in a sector is proportional to “the probability of interleaved codeword bytes (symbols) becoming biased and uncorrectable” and “the number of interleaving sequences,” that ratio can be lowered when interleaving is not performed from the ratio when interleaving is performed. However, due to the Reed-Solomon code length restriction, for error correction coding of data with a length of a0 bits without the use of interleaving, it is necessary to construct an RS code with symbols, each consisting of bits corresponding to an integer m that satisfies a0/m≦2m−1. For example, if data with a length of 4 Kbytes (32768 bits) is RS coded without interleaving, it is conditioned that the number of bits per symbol m is equal to or greater than 12 bits. In fact, the number of redundant bits not only increases in proportion to the number of correctable errors, but also increases in proportion to the number of bits per symbol m. This means that the number of redundant bits increases by a factor of 8 or more if the sector length increases by a factor of 8 and the number of correctable errors increases by a factor of 8. This also means that, as the number of bits per symbol m increases, the number of bits needed to correct one error (2m) increases, and, in other words, the efficiency of error correction of redundant bits decreases.
Even if interleaving is inevitable when decoding delay and other conditions are taken into account, it is desirable not to increase the number of bits per symbol m so much and to make the number of interleaving sequences and the number of redundant bits as small as possible.
By using algebraic geometric codes (AG codes) over the GF(2m), codes that are longer than 2m−1 are constructed. In this code structure, extra redundant symbols are added, but the number of redundant bits is reduced by decreasing the number of bits per symbol instead.
An algebraic geometric code consists of an algebraic curve surface “C: f(X1:X2: . . . :Xc)=0” over a projective plane Pc−1(GF(2m)) (how to construct this code will be described later). The components of the projective plane Pc−1(GF(2m)) are the ratios of coordinates (GF(2m))c/{(0, 0, . . . , 0)}. On this projective plane, (α1, α2, . . . , αc) and (χα1, χα2, . . . , χαc) (where χ≠0) are regarded as same points and represented as (α1, α2, . . . , αc) particularly in consideration of the ratios of the coordinates. The algebraic geometric codes are a general form of the Reed-Solomon codes and, in other words, the Reed-Solomon codes are a particular version of the algebraic geometric codes.
For the algebraic curve surface, a parameter called genus g is defined. The genus is a generalized quantity representing the number of holes of a closed surface in a three-dimensional space. It is known that the genus of a curve remains unchanged after the curve is transformed by (is invariant to) birational mapping and that g=(a−1)(b−1)/2 for a Cab curve on a projective plane P2(GF(2m)) (refer to the non-patent documents 1 and 2 above).
Suppose that E(C, GF(2m)) represents the following set where F is the number of elements in E(C, GF(2m)). A point included in E(C, GF(2m)) is called a GF(2m) rational point of C. If the GF(2m) field is evident from the context, the point is simply called a rational point of C.
E(C,GF(2m)):={(α1:α2: . . . :αc)=0} Equation 1
In E(C, GF(2m)), one point Q is fixed and points that belong to E(C, GF(2m))/{Q} are numbered as P(1), P(2), . . . , P(ε−1). By setting the dimension of a function space L(r0Q) over C to be r, an AG codeword consisting of C is defined as a column vector w that satisfies Hw=0 for a matrix H that is expressed in equation 2. Here, the bases of L(r0Q) are represented as {v0(P), v1(P), v2(P), . . . , vr−1(P)}.
More specifically, code length n up to ε−1 can be given, in which c satisfies equation 3.
ε≦22m+1+2m+1g Equation 3
When there is a square matrix M which satisfies equation 4 as a condition of the check matrix H, the AG codeword can be constructed as a systematic code.
MH=[H1|Ir] Equation 4
The following are known. In the case of the Cab curve and Q=(0:1:0) over the projective plane P2(GF(2m)), r0=r+1−g is satisfied when r>2 g; random errors up to (r−g)/2 in number are correctable when r>3 g−1; and a set that is expressed in equation 5 is assigned to the bases of L(r0Q).
{x(P)iy(P)j|ai+bj≦r−1+g,0≦i,0≦j<a}, Equation 5
where x(X:Y:Z)=X/Z, y(X:Y:Z)=Y/Z
Hence, when 2t+g>3 g−1, a codeword in which up to t symbols are correctable can be constructed by including 2t+g redundant symbols.
Normally, the bases of equation 2 are numbered in ascending order of ai+bj.
In the following, the use of a Fermat code that is an AG code consisting of a Fermat curve “C(L): XL+YL+ZL=0” over the projective plane p2 (GF(22m)) will be discussed. Given φ(X:Y:Z):=(X:Y:Y+Z), φ(C(L)) is a CL−1L curve (a Cab curve where (a, b)=(L□1, L)) and, therefore, g=(L−1)(L−2)/2.
By assigning C=φ(C(L)) and Q=(0:1:0), equations 2 and 3 are satisfied. When L is a divisor of 2m+1 that is greater than 1, it is presumed that equation 3 always has equality. The bases of equation 2 are specifically ordered as in equation 6.
Here, {v0(φ(P)), v1(φ(P)), v2(φ(P)), . . . , vr□1(φ(P))} are the bases of a function space L(r0φ−1(Q)) over C(L).
Matrix H defined by equation 2 when C=φ(C(L)) and Q=(0:1:0) agrees with matrix H defined by equation 2 when C=C(L) and Q=φ−1(0:1:0). This is generally true when the components φX, φY, and φZ of φ(X:Y:Z)=(φX:φY:φZ) are represented by rational mapping of X, Y, and Z and the components of φ−1(X:Y:Z) are also represented by rational mapping of X, Y, and Z (that is, φ(X:Y:Z) is birational mapping).
Data of 4 Kbytes, that is, 4×1024×8 bits is equivalent to 3277 10-bit symbols. The maximum length of a Fermat code with set values of (m, L)=(5, 11) is 3904 symbols and g=45. Thus, the number of redundant symbols is 3904−3277=627. The maximum number of correction symbols is therefore 291 (291×2+45=627). By using this code, it will be possible to construct a 4-Kbyte sector with 10-bit symbols without interleaving.
In particular, when equation 7 is satisfied, equations 8 and 9 are satisfied and points can be calculated by using the elements in subsets (subfields) and n-th power roots thereof.
By using the AG codes, the number of bits per symbol in an error-correcting code can be made smaller than when the Reed-Solomon codes are used. As a result, the number of redundant bits can be reduced accordingly. This is because of the following reason. Adding two redundant symbols is always required to enhance a code capable of correcting up to t symbols to the code capable of correcting up to t+1 symbols. The smaller the number of bits per symbol in the error-correcting code, the lower the number of redundant bits to be added is required.
In the following, the number of redundant bits included in a Reed-Solomon code that can be constructed with 4 Kbytes of one sector and parity bytes for a magnetic disk device will be compared with the number of redundant bits included in the above-described Fermat code example.
For the Reed-Solomon code, due to its code length restriction, the code entity that is equal to or greater than a GF(212) must be used. In the case of the code over the GF(212), it is essential to add 2t 12-bit redundant symbols. Thus, the total number of redundant bits is 2t symbols multiplied by 12 bits, that is, 24t bits.
On the other hand, for the corresponding data size, the Fermat code that comprises C(11): X11+Y11+Z11=0 (g=(11−1)(11−2)/2=45) can be used. In this case, it is essential to add 10-bit redundant symbols that are 2t+g=2t+45 in number. Thus, the total number of redundant bits is (2t+45) symbols multiplied by 10 bits, that is, 20t+450 bits. By comparison, it turns out that the 20t+450 redundant bits of the Fermat code are less than the 24t redundant bits of the Reed-Solomon code when t≧113.
By comparison on the condition that error correction coding is performed to allow for correcting random errors in, for example, up to 240 symbols, 5760 redundant bits are included in the Reed-Solomon code and 5250 redundant bits are included in the Fermat code. The number of redundant bits in the Fermat code can be reduced by 510 bits less than that in the Reed-Solomon code.
If the number of redundant bits is fixed to, for example, 5760 (so the Reed-Solomon code over the GF(212) can correct random errors in up to 240 symbols), the Fermat code over the GF(210) can correct random errors in up to 265 symbols, because 20×265+450<5760<20×266+450. Hence, in this case, by calculation, the number of random errors that are permissible in one sector can be increased by 10% or more.
The present invention aims to improve the efficiency of error correction with redundant bits and the invention reduces the number of bits per symbol for symbols constituting an error-correcting code and, consequently, can achieve a reduced number of redundant bits in the code less than those bits in conventional Reed-Solomon codes.
An embodiment of the present invention will be described hereinafter with reference to the accompanying drawings. In the following drawings, similar functional parts are assigned the same reference numbers for easily understandable explanation.
On the other hand, signals 1 read by the head undergo signal processing such as equalization and Viterbi decoding by the signal processing LSI 3. After discrimination between 0s and 1s, the signals are converted into binary data. The converted binary data 7 enters the hard disk controller 9 and errors in the binary data are detected and corrected by a Reed-Solomon decoder circuit (RS-DEC) 5 in the controller. Three codeword blocks decoded by the decoder circuit 5 are combined into a codeword block by a deinterleaver (DITLV-3) 10. The decoded binary data is converted into signals 15 to be output by the I/F 14.
Although a Reed-Solomon encoding/decoding LSI into which the RS-DEC 5 and the RS-ENC 6 are integrated on one chip is adopted in this example, these circuits may be provided as separate entities without being integrated on the one chip.
On the other hand, the signals 1 read by the head undergo signal processing such as equalization and Viterbi decoding by the signal processing LSI 3. After discrimination between 0s and 1s, the signals are converted into binary data. The converted binary data 7 enters the hard disk controller 9 and errors in the binary data encoded in the error-correcting code are detected and corrected by a Fermat decoder circuit 101 in the controller. The decoded binary data is converted into signals 15 to be output by the I/F 14.
A sequence of input symbols b(1), b(2), . . . , b(k) (k=3277 in this example) is input through an input terminal 304. A rational point generator 301 outputs a point P(j) at timing when b(j) is input. When receiving the input of the point, a vector generator circuit 302 outputs a vector v(j). When receiving the inputs of the vector v(j) and the symbol b(j), a scalar multiplier 303 outputs b(j)v(j) which is in turn added to and stored into a memory 305 for storing syndrome data and, at the same time, the b(j) passes through a selector 307. After completing processing on the k symbols, a matrix arithmetic circuit 306 receives the inputs of addition results and outputs vectors MV. The selector 307 selects and outputs the contents of the vectors MV in order from the top.
To the inputs P(j)=(αj, βj, 1), the vector generator circuit 302 outputs [v0(P(j)), v1(P(j)), v2(P(j)), . . . , vn−k−1(P(j))] which are obtained by equation 10, based on (m, L)=(5, 11) and derived from equation 6.
According to equation 2, a j-th column in a check matrix H from the outputs of the vector generator circuit 302 is located. The matrix arithmetic circuit 306 generates an (n−k)-order square matrix where M satisfies equation 4 when r=n−k.
In the following, the points corresponding to the symbols in the 1st, 2nd, . . . , 3904th positions relative to the reference position for counting the symbols will be denoted as P(1), P(2), . . . , P(3904).
When the numbered points are thus prepared, a matrix M in the matrix arithmetic circuit 306 is a given value, namely, an encoding parameter if the numbered P(1), P(2), . . . , P(3904) have been determined. By calculating the matrix M from the equations 2, 4, and 6 by an arithmetic unit or the like beforehand, the encoder can be configured.
An example of error detection and correction with the above Fermat code will be described below.
Equation 14 represents an example algorithm for calculation of error value e(j). Error value calculation can be executed by using a generalized Forney formula as well (refer to the non-patent document 5).
It is to be understood that the above description is intended to be illustrative and not restrictive. Many embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims alone with their full scope of equivalents.
Number | Date | Country | Kind |
---|---|---|---|
2004-096512 | Mar 2004 | JP | national |