Embodiments described herein relate generally to an error correcting code.
In recent years, recording media are increasing in capacity. As the capacities of recording media increase, the reproduction environment becomes stricter. For example, an optical recording medium achieves a large capacity by improving the line density of record marks, forming an information recording layer having a multilayer structure, and the like. On the other hand, reproduced data readily includes errors, resulting in deterioration of the reproduction environment. Hence, there is demanded a signal processing technique capable of accurately reconstructing reproduced data even under such a reproduction environment.
There have been proposed various kinds of error correcting code methods to correct errors in data in recording/reproduction systems and communication systems. An LDPC (Low Density Parity Check) code is known to have an excellent error correcting capability. In particular, the LDPC code exhibits an outstanding characteristic for random errors. However, the LDPC code does not necessarily exhibit a satisfactory characteristic for a burst error (continuous errors) that occurs due to defects in a recording medium or the like, and a composite error of a burst error and a random error. For this reason, when applying the LDPC code to a recording/reproduction system especially, the resistance to a burst error and a composite error of a burst error and a random error is demanded to be improved while suppressing degradation in the resistance to a random error.
Embodiments will now be described with reference to the accompanying drawings.
According to an embodiment, a parity check matrix creation method includes creating a mask matrix whose column weight is K (K is an integer not less than 2) by assigning one of “1” and “0” to each element of M rows×N columns (M is an integer not less than 4, and N is an integer larger than M). The method further includes creating a parity check matrix by, for each element in the mask matrix, arranging a cyclic permutation matrix having P rows×P columns (P is an integer not less than 2) at a corresponding position when the element is “1” and arranging a zero matrix having P rows×P columns at a corresponding position when the element is “0”. All of N column vectors in the mask matrix are different from each other. A submatrix having M rows×L columns (L is an integer not more than (M−K+1−S) and S is an integer not less than 1) obtained by arbitrarily extracting L continuous columns from the mask matrix includes B1 (B1 is an integer not less than 1) first correction rows. The submatrix further includes Bi (Bi is an integer not less than 1, i is any integer not less than 2 and not more than I, and I is an integer not less than 2) ith correction rows. Each of the B1 first correction rows has a row weight of 1. The B1 first correction rows have at least one “1” in total in each of A1 (A1 is an integer not less than 1) first correction columns. Each of the Bi ith correction rows has a row weight of not less than 2. Each of the Bi ith correction rows has at least one “1” in total in Ai−1 (Ai−1 is an integer not less than 1 and not more than Bi−1) (i−1)th correction columns. Each of the Bi ith correction rows has “1” in one of Ai (Ai is an integer not less than 1 and not more than Bi) ith correction columns included in a column set excluding the first correction column to the (i−1)th correction column. The Bi ith correction rows include at least one “1” in total in each of the Ai ith correction columns. A sum from A1 to AI equals L. Bi is not more than Ai−1×(K−1). A sum from B1 to BI−1 equals a sum of S and a sum from A1 to AI−1.
Note that the same or similar reference numerals denote elements that are the same as or similar to those already explained, and a repetitive description will basically be omitted.
The first embodiment is directed to a method of creating a parity check matrix that defines an LDPC code having a satisfactory resistance to a composite error of a burst error and a random error.
The resistance of an LDPC code to a burst error can be evaluated based on a parity check matrix that defines the LDPC code, as will be described below.
Basically, an LDPC code is decoded by iterating correction processing on a row basis based on a result of parity check and propagation processing of propagating the correction result of each row in the row direction. Rows (that is, check nodes) and columns (that is, variable nodes) corresponding to elements “1” of a parity check matrix are involved in the correction processing and the propagation processing.
For example, according to the parity check matrix (H1), the first, fifth, 12th, 15th, 21st, and 23rd columns (that is, c1, c5, c12, c15, c21, and c23) of the first row are the subjects of correction processing. The subjects of correction processing in other rows are also decided in the same way as described above. According to the parity check matrix (H1), the correction result of the first column (that is, cl) of the first row propagates to the fifth and seventh rows, and the correction result of the first columns of the fifth and seventh rows propagates to the first row. Other correction results also propagate in the same way as described above.
Assume that a burst error occurs from the first bit (c1) up to the eighth bit (c8) of the LDPC code defined by the parity check matrix (H1), and no error occurs in the remaining bits. In this case, whether the burst error is correctable can be determined based on column vectors from the first column up to the eighth column of the parity check matrix (H1).
More specifically, as shown in
In the following description, elements of columns that are not the subjects of correction processing in the rows of the matrix (Hsub_1) will be expressed as “—”, and elements of columns that are the subjects of correction processing will be expressed as “⊚”, “⋄”, “◯”, “♦”, or “×”.
Symbol “⊚” indicates that the error is corrected for the first time by correction processing (to be also referred to as row processing) of the ith time (i is the number of times of iterated decoding (that is, correction processing and propagation processing)), and symbol “⋄” indicates that the error was corrected by correction processing before the correction processing of the ith time. Symbol “◯” indicates that the correction result is propagated for the first time by propagation processing (to be also referred to as column processing) of the ith time. Symbol “♦” indicates that the correction result was propagated by propagation processing before the propagation processing of the ith time. Symbol “×” indicates that the error is not corrected. At the start of correction processing of the first time, the burst error that has occurred from the first column up to the eighth column is not corrected. Hence, a matrix (Hsub_1a) shown in
On the principle of LDPC code, when one error bit is included in a row of interest, the error can be corrected at a time by correction processing on the row basis. However, when two or more error bits are included in the row of interest, the errors cannot be corrected at a time. For this reason, in the third, ninth, and 12th rows each including one uncorrected bit out of the subjects of correction processing, the uncorrected bits are corrected by the correction processing of the first time. However, in the remaining rows each including two or more uncorrected bits out of the subjects of correction processing, the uncorrected bits are not corrected. Hence, a matrix labeled “row processing 1” in
As described above, according to propagation processing, the correction result of each row propagates in the row direction. More specifically, the fifth column of the third row, the second column of the ninth row, and the fourth column of the 12th row are corrected by the correction processing of the first time. The correction result of the fifth column of the third row propagates to the first and fifth rows in which the fifth column is likewise the subject of correction processing. The other correction results also propagate similarly. Hence, a matrix labeled “column processing 1” in
As indicated by the matrix labeled “column processing 1” in
Subsequent correction processing and propagation processing progress is as shown in
In the following description, terms “ith correction row” and “ith correction column” are used for descriptive convenience. The “ith correction row” means a row in which all uncorrected bits are corrected for the first time by ith row processing (correction processing). The “ith correction column” means a column corrected by ith column processing (correction processing) based on the “ith correction row”.
For example, the rows and columns of the above-described matrix (Hsub_1) can be expressed as shown in
Next, assume that a burst error occurs from the 16th bit (c16) up to the 23rd bit (c23) of the LDPC code defined by the parity check matrix (H1), and no error occurs in the remaining bits. In this case, whether the burst error is correctable can be determined based on column vectors from the 16th column up to the 23rd column of the parity check matrix (H1).
More specifically, as shown in
In the following description, elements of columns that are not the subjects of correction processing in the rows of the matrix (Hsub_2) will be expressed as “—”, and elements of columns that are the subjects of correction processing will be expressed as “⊚”, “⋄”, “◯”, “♦”, or “×”, as in the example of the matrix (Hsub_1). Since the burst error that has occurred from the 16th bit up to the 23rd bit is not corrected at the start of the correction processing of the first time, a matrix (Hsub_2a) shown in
According to the correction processing of the first time, in the fifth and eighth rows each including one uncorrected bit out of the subjects of correction processing, the uncorrected bits are corrected. However, in the remaining rows each including two or more uncorrected bits out of the subjects of correction processing, the uncorrected bits are not corrected. Hence, a matrix labeled “row processing 1” in
The 19th columns of the fifth and eighth rows are corrected by the correction processing of the first time. The correction result of the 19th columns of the fifth and eighth rows propagates to the second row in which the 19th column is likewise the subject of correction processing. Hence, a matrix labeled “column processing 1” in
On the principle of LDPC code, if a row including two or more uncorrected bits out of the subjects of correction processing remains, and any row including one uncorrected bit out of the subjects of correction processing does not remain at the start of correction processing of the (i+1)th time, the error cannot be corrected even by correction processing and propagation processing of the (i+1)th and subsequent times. As indicated by the matrix labeled “column processing 1” in
When a submatrix corresponding to an assumed burst error is extracted from a parity check matrix and analyzed, the resistance of an LDPC code defined by the parity check matrix to the burst error can be evaluated. Note that assuming a burst error means defining the number of generated burst errors, the burst error occurrence area and burst error occurrence scale.
It is not easy to design an LDPC code that stably exhibits a high resistance to a burst error that can occur on various scales in various areas. Regarding this problem, a related art 1 (William E. Ryan and Shu Lin, “Channel Codes Classical and Modern”) proposes a technique of designing a quasi-cyclic LDPC code guaranteed to be able to correct a burst error up to at least (M−K)×P+1 bits when the number of generated burst errors is 1, where M is the row size of a mask matrix to be described later, K is the column weight of the mask matrix, and P is the size of a block matrix corresponding to the elements of the mask matrix.
The mask matrix represents the structure of a corresponding parity check matrix. More specifically, the parity check matrix arranges block matrices in number corresponding to the row size in the row direction and block matrices in number corresponding to the column size in the column direction. Each block matrix is a cyclic permutation matrix having P rows×P columns or a zero matrix having P rows×P columns. Each element in the mask matrix represents whether each block matrix in the parity check matrix is the cyclic permutation matrix or zero matrix.
For example, the mask matrix has “1” or “0” as an element. “1” represents that the corresponding block matrix in the parity check matrix is a cyclic permutation matrix. “0” represents that the corresponding block matrix in the parity check matrix is a zero matrix. That is, a block matrix having P rows×P columns including the element of the ((m−1)×P+1)th row and the ((n−1)×P+1)th column of the parity check matrix is a cyclic permutation matrix when the element of the mth row and the nth column of the mask matrix is “1” or a zero matrix when the element is “0”.
The mask matrix can be derived by connecting submatrices (G) each having M rows×M columns to be described later in an arbitrary connection number in the column direction, as indicated by
Z1=[GG . . . GG] (1)
In equation (1), Z1 represents the mask matrix. When, for example, M=8 and K=4, the submatrix (G) can be derived by
An LDPC code corresponding to the mask matrix derived by equations (1) and (2) can correct a burst error over five blocks when the number of generated burst errors is 1 according to the above-described evaluation technique. More specifically, when the number of connected submatrices (G) in the mask matrix (Z1) is 8, the coding rate of the LDPC code is 7/8 (=(8M−M)/8M). In addition, when the size (P) of the block matrix is 72, the LDPC code is guaranteed to be able to correct a burst error of 289 (=(8−4)×72+1) bits when the number of generated burst errors is 1.
When the mask matrix (Z1) of equation (1) is generalized, a mask matrix (Z2) represented by equation (3) is obtained. The mask matrix (Z2) is derived by connecting submatrices (Ga) each having M rows×M columns to be described later in an arbitrary connection number in the column direction. In the following explanation, the mask matrix (Z1 or Z2) represented by equation (1) or (3) will be referred to as a mask matrix according to the first comparative example.
Z2=[GaGa . . . GaGa] (3)
The submatrix (Ga) of equation (3) is formed from a first block matrix (GL) having K rows×K columns, a second block matrix (GU) having K rows×K columns, and a zero matrix having K rows×K columns, as indicated by
The first block matrix (GL) in equation (4) is represented by
and the second block matrix (GU) is represented by
Each mask matrix according to the first comparative example is formed by connecting a plurality of submatrices (G or Ga). For this reason, in these mask matrices, the same column vectors appear at a predetermined period according to the row size of the mask matrices. For example, in the mask matrix (Z1) represented by equation (1), the same column vectors appear every eight columns, as shown in
Hence, if the number of generated burst errors is 2 or more, each mask matrix according to the first comparative example may be unable to correct these burst errors regardless of the number of generated burst errors and the scale of each burst error. For example, assume that a first burst error occurs in an area including the first, . . . , Pth bits corresponding to the first column of the mask matrix (Z1), and a second burst error occurs in an area including the (8P+1)th, . . . , (9P)th bits corresponding to the ninth column. In this case, when performing correction processing of the first time, a row including two or more uncorrected bits out of the subjects of correction processing remains, and no row including one uncorrected bit out of the subjects of correction processing remains. It is therefore impossible to correct the errors even by the correction processing and propagation processing of the first and subsequent times.
That is, if a column vector corresponding to the occurrence area of a given burst error matches a column vector corresponding to the occurrence area of another burst error in the mask matrix, these burst errors cannot be corrected. In each mask matrix according to the first comparative example, the number of times of appearance of the same column vector increases as the number of connected submatrices increases. Hence, the higher the coding rate is designed to be, the larger the number of uncorrectable burst error patterns becomes. This degrades the resistance of the LDPC code to the burst errors.
In each mask matrix according to the first comparative example, a loop 4 that is a factor to degrade the performance of the LDPC code is readily generated. This is because the same column vector repetitively appears, and the number of overlaps of rows where the element “1” appears between adjacent column vectors is large (more specifically, K−1). The number of overlaps increases as the column weight of the mask matrix increases. That is, as the column weight of the mask matrix increases, many loops 4 are generated in the mask matrix.
According to the mask matrices of the first comparative example, when a burst error over L columns occurs, the burst error can sequentially be corrected on a column basis from both ends. In other words, two columns are corrected at maximum by one correction processing. For this reason, the number of iterated decoding processes (that is, the number of correction processes and propagation processes) necessary to correct a burst error over L columns is L/2 (rounded up when L is an odd number). That is, the necessary number of iterated decoding processes linearly increases with respect to the scale (L) of the burst error. Note that the related art 1 does not disclose a technique of creating a mask matrix capable of correcting errors in three or more columns by one correction processing.
Additionally, as a characteristic feature of the mask matrix of the first comparative example, the number of ith correction rows equals the number of ith correction columns concerning i=I−1. Note that I is the number of iteration processes necessary to correct a burst error. For example, the correction rows and correction columns of a parity check matrix having the same structure as a submatrix obtained by extracting the first to fifth columns out of the above-described submatrix (G) (here, M=8, and K=4) can be expressed as shown in
The resistance of a parity check matrix (H3) according to the second comparative example, which has the characteristic representing that the number of ith correction rows equals the number of ith correction columns concerning i=1, . . . , I−1, to a composite error of a burst error and a random error will be described below.
In the parity check matrix (H3), as shown in
More specifically, as shown in
In the following description, elements of columns that are not the subjects of correction processing in the rows of the matrix (Hsub_3) will be expressed as “—”, and elements of columns that are the subjects of correction processing will be expressed as “⊚”, “⋄”, “◯”, “♦”, “×”, “Δ”, “▴”, “∇”, or “▾”. The meanings of symbols “⊚”, “⋄”, “◯”, “♦”, and “×” are the same as described above. Symbol “Δ” indicates that the error is corrected wrongly for the first time by correction processing of the ith time. Symbol “▴” indicates that the error was corrected wrongly by correction processing before the correction processing of the ith time. Symbol “∇” indicates that the correction result of “Δ” is propagated for the first time by propagation processing of the ith time. Symbol “▾” indicates that the correction result of “Δ” was propagated by propagation processing before the propagation processing of the ith time. At the start of correction processing of the first time, the burst error that has occurred from the eighth bit up to the 17th bit is not corrected. Hence, a matrix (Hsub_3a) shown in
In evaluation of the resistance to the burst errors in the above-described matrices (Hsub_1 and Hsub_2), nonoccurrence of a random error is assumed. Hence, at the end of correction processing of the ith time, all bits that are the subjects of correction processing can properly be corrected in the ith correction row. However, if a composite error of a burst error and a random error occurs, columns included in the burst error section may be corrected wrongly due to the influence of the random error. For example, the 22nd column of the parity check matrix (H3) has “1” in the third, eighth, and 11th rows. Hence, the columns to be corrected may be corrected wrongly by row processing of the third, eighth and 11th rows.
According to correction processing of the first time, the second, sixth, 10th, and 11th rows each including one uncorrected bit out of the subjects of correction processing are corrected. However, the 15th column of the 11th row is corrected wrongly due to the influence of the random error of the 22th column. Hence, a matrix labeled “row processing 1” in
By the correction processing of the first time, the 16th column of the second row is properly corrected, the 14th column of the sixth row is properly corrected, the 17th column of the 10th row is properly corrected, and the 15th column of the 11th row is corrected wrongly. The correction result of the 16th column of the second row propagates to the eighth and ninth rows in which the 16th column is likewise the subject of correction processing. The other correction results also propagate similarly. Note that the wrong correction result of the 15th column of the 11th row propagates to the first and ninth rows in which the 15th column is likewise the subject of correction processing. Hence, a matrix labeled “column processing 1” in
As indicated by the matrix labeled “column processing 1” in
Subsequent correction processing and propagation processing progress is as shown in
As indicated by a matrix labeled “column processing 4” in
When the burst error correction phase ends, all bits have nonzero values as D. Hence, error correction for the bits in which random errors have occurred and the bits corrected wrongly in the burst error correction phase functions. However, if the number of error bits at this point of time exceeds the upper limit determined by the design of the parity check matrix (H3), error correction is impossible. Generally speaking, if a composite error of a burst error and a random error occurs in the LDPC code corresponding to the parity check matrix (H3), a wrong correction result occurs due to the influence of the random error in the burst error correction phase, and the wrong correction result propagates via column processing. As a result, it may be impossible to properly correct a sufficient number of bits in the burst error section, and error correction may be difficult.
Note that the above-described quasi-cyclic LDPC code also has the same problem. For example, assume that, concerning a mask matrix having the same structure as the parity check matrix (H3), a burst error occurs in bits corresponding to cyclic permutation matrices of the eighth to 17th columns, and a random error occurs in a bit corresponding to the cyclic permutation matrix of the 22nd column. In this case, correction processing and propagation processing of a quasi-cyclic LDPC code corresponding to the mask matrix progress in almost the same way as in
However, each “1” element of the mask matrix corresponds to a cyclic permutation matrix having P rows×P columns, and its shift amount does not necessarily match. Hence, strictly speaking, correction processing and propagation processing of the quasi-cyclic LDPC code may be different from
In this embodiment, the parity check matrix is created by the following method.
This method includes assigning one of “1” and “0” to each element of M rows×N columns, thereby creating a mask matrix having a column weight K, where M is an integer of 4 or more, N is an integer larger than M, and K is an integer of 2 or more.
This method further includes, for each element in the created mask matrix, arranging a cyclic permutation matrix having P rows×P columns at a corresponding position when the element is “1” and arranging a zero matrix having P rows×P columns at a corresponding position when the element is “0”, thereby creating a parity check matrix, where P is an integer of 2 or more.
Note that the mask matrix created by this method meets at least following conditions (a), (b), (c), (d), (e), (f), and (g).
(a) All of N column vectors in the mask matrix are different from each other.
When the condition (a) is met, only (K−1) rows where the element “1” appears overlap at maximum between two arbitrary column vectors in the mask matrix, as shown in
(b) A submatrix having M rows×L columns obtained by extracting L (L is an integer of (M−K+1) or less) arbitrary continuous columns from the mask matrix includes B1 (B1 is an integer of 1 or more) first correction rows.
The first correction rows indicate B1 rows in which all uncorrected bits in the rows are corrected for the first time by correction processing of the first time, as described above. For this reason, the row weight of each of the B1 first correction rows needs to be 1.
(c) The B1 first correction rows have at least one “1” in total in each of A1 (A1 is an integer of 1 or more) first correction columns.
The first correction columns indicate A1 columns corrected in the B1 first correction rows by correction processing of the first time. In other words, all columns having “1” arranged in the B1 first correction rows are handled as the first correction columns. Hence, the total number (A1) of first correction columns is B1 at maximum. If columns corrected by correction processing of the first time overlap between the B1 first correction rows, A1<B1. On the other hand, if columns corrected by correction processing of the first time do not overlap at all between the B1 first correction rows, A1=B1.
(d) The submatrix further includes Bi (Bi is an integer of 1 or more, i is any integer from 2 to I, and I is an integer of 2 or more) ith correction rows.
The ith correction rows indicate Bi rows in which all uncorrected bits in the rows are corrected for the first time by correction processing of the ith time. In other words, the number of uncorrected bits needs to decrease from 2 or more to 1 in the Bi ith correction rows by propagating the correction result of the (i−1)th time by propagation processing of the (i−1)th time. For this reason, the row weight of each of the Bi ith correction rows is 2 or more. In addition, each of the Bi first correction rows has at least one “1” in total in Ai−1 (i−1)th correction columns. In this regard, the maximum number of (i−1)th propagation rows to which the correction result of the (i−1)th time is propagated by propagation processing of the (i−1)th time is Ai−1×(K−1). Hence,
B
i
≦A
i−1×(K−1) (7)
holds for Bi.
(e) Each of the Bi ith correction rows has “1” in one of Ai (Ai is an integer of 1 or more) ith correction columns included in a column set excluding the first correction column to the (i−1)th correction column, and the Bi ith correction rows include at least one “1” in total in each of the ith correction columns.
The ith correction columns indicate Ai columns corrected in the ith correction rows by correction processing of the ith time, as described above. In other words, all columns having “1” arranged in the Bi ith correction rows out of the column set excluding the first correction column to the (i−1)th correction column are handled as the ith correction columns.
Hence, the total number (Ai) of ith correction columns is Bi at maximum. If columns corrected by correction processing of the ith time overlap between the Bi ith correction rows, Ai<Bi. On the other hand, if columns corrected by correction processing of the ith time do not overlap at all between the Bi ith correction rows, Ai=Bi. In this case, the Bi ith correction rows have a total of one “1” in each of the Ai ith correction columns. Hence, Ai≦Bi holds. From expression (7),
A
i
≦A
i−1×(K−1) (8)
holds.
(f) The sum from A1 to AI equals L.
When the condition (f) is met, a burst error over L rows of the mask matrix can be corrected by I iterated decoding processes.
According to a mask matrix that meets the conditions (a), (b), (c), (d), (e), and (f), a burst error over L (L is an integer of 1 to (M−K+1) or less) columns that has occurred at an arbitrary position can be corrected, as will be described below.
To correct a burst error over L columns, at least one correction row is necessary for each column included in the L columns to correct errors in the column. According to the conditions (c) and (e), the first correction column is corrected in at least one first correction row. Similarly, the ith correction column is corrected in at least one ith correction row. For this reason, according to the mask matrix that meets the conditions (a), (b), (c), (d), (e), and (f), a burst error over L (L is an integer of 1 to (M−K+1) or less) columns, which occurs at an arbitrary position, can be corrected.
In addition, according to the mask matrix that meets the conditions (a), (b), (c), (d), (e), and (f), the upper limit of L is M−K+1, as will be described below.
As described concerning the conditions (c) and (e), B1≧A1 and Bi≧Ai. According to the condition (f), the sum from A1 to AI is L. Hence, the sum from B1 to BI is L or more. For this reason, the sum (M″) from B1 to BI−1 is L−AI or more.
In this case, when AI=1, the submatrix includes not only the first to (I−1)th correction rows but also at least the Ith correction rows. When AI=1, BI=K. Hence, when AI=1, M−M″≧AI+K−1 holds.
On the other hand, when AI≧2, the submatrix includes not only the first to (I−1)th correction rows but also at least the Ith correction rows. In addition, Ith propagation rows to which the error correction result of the Ith correction row propagates may exist. Each of the Ith propagation rows has two or more “1” in the AI Ith correction columns. If each of (K−1) Ith propagation rows has “1” in all of AI Ith correction columns, the sum of the total number of Ith correction rows and the total number of Ith propagation rows is minimized to AI+K−1. Hence, even when AI≧2, M−M″≧AI+K−1 holds.
Hence, it can be confirmed that the upper limit value of L is M−K+1 by
M−(L−AI)≧M−M″≧AI+K−1
M−(L−AI)≧AI+K−1
M−L≧K−1
L≦M−K+1 (9)
(g) The total number of rows from the first correction row to the (I−1)th correction row equals the sum of the total number of columns from the first correction column to the (I−1)th correction column and S (S is an integer of 1 or more). Hence,
holds.
As will be described later, when the condition (g) is met, the resistance to a composite error of a burst error and a random error can be increased. More specifically, in the burst error correction phase to correct a burst error over L columns of the mask matrix, it is possible to correct a wrong correction result generated by the influence of a random error by propagation processing of the jth time and also correct a wrong correction result generated in the past by correction processing and propagation processing in the future included in the burst error correction phase. Here, j is at least one integer of 1 to (I−1) or less which meets Bj>Aj.
Note that according to a mask matrix that meets the conditions (a), (b), (c), (d), (e), (f), and (g), the upper limit of L is M−K+1−S, as will be described below.
From the conditions (f) and (g),
M″=L−A
I
+S (11)
holds.
From expressions (9) and (11),
M−M″≧A
I
+K−1
M−(L−AI+S)≧AI+K−1
M−K+1−S≧L (12)
holds.
Note that to make the equal sign of expressions (12) hold, M−M″=AI+K−1 needs to hold.
To allow M−M″=AI+K−1 to hold when AI=1, a total of K rows including the Ith correction rows need to remain in a row set formed by excluding the first to (I−1)th correction rows from the submatrix. As described above, when AI=1, BI=K. In addition, the Ith propagation rows do not exist. Hence, all of the total of K rows are made up of the Ith correction rows. That is, the submatrix cannot include any rows except the first correction rows, . . . , Ith correction rows. Note that to make B1=K hold, AI−1≧2 needs to hold based on expression (7).
To allow M−M″=AI+K−1 to hold when AI≧2, a total of (AI+K−1) rows including the Ith correction rows and the Ith propagation rows need to remain in a row set formed by excluding the first to (I−1)th correction rows from the submatrix. As described above, when AI≧2, the sum of the total number of Ith correction rows and the total number of the Ith propagation rows is minimized to AI+K−1. Hence, all of the total of (AI+K−1) rows are made up of the Ith correction rows and the Ith propagation rows. To minimize the sum of the total number of Ith correction rows and the total number of the Ith propagation rows, B1=AI needs to hold, and the submatrix needs to include (K−1) Ith propagation rows having “1” in all the AI Ith correction columns.
According to the mask matrix that meets the condition (g) in addition to the conditions (a), (b), (c), (d), (e), and (f), even when a composite error of a burst error and a random error occurs, degradation in the resistance to the burst error can be suppressed, as will be described below. Such a mask matrix (H4) is shown in, for example,
Assume that in an LDPC code defined by the mask matrix (H4), a burst error occurs from the (2×P+1)th bit to the (11×P)th bit corresponding to the third to 11th columns of the mask matrix (H4), and a random error occurs in the ((N−2)×P+1) bit to the ((N−1)×P)th bit corresponding to the (N−1)th column of the mask matrix (H4).
As shown in
In the following description, elements of columns that are not the subjects of correction processing in the rows of the matrix (Hsub_4) will be expressed as “—”, and elements of columns that are the subjects of correction processing will be expressed as “⊚”, “⋄”, “◯”, “♦”, “×”, “Δ”, “▴”, “∇”, or “▾”, as in the example of the matrix (Hsub_3). At the start of correction processing of the first time, the burst error that has occurred in the (3×P+1) bit to the (12×P) bit is not corrected. Hence, a matrix in which all “1”s in the matrix (Hsub_4) shown in
In this example, the (N−1)th column of the mask matrix (H4) has “1” in the second, sixth, and 12th rows. Hence, in row processing of the second, sixth, and 12th rows, the bits to be corrected may be corrected wrongly.
By correction processing of the first time, the third, sixth, and ninth rows that are the first correction rows are corrected. However, P bits corresponding to the third column of the sixth row are corrected wrongly due to the influence of random errors in the P bits corresponding to the (N−1)th column. Hence, a matrix labeled “row processing 1” in
By the correction processing of the first time, P bits corresponding to the seventh column of the third row are properly corrected, P bits corresponding to the third column of the sixth row are corrected wrongly, and P bits corresponding to the fourth column of the ninth row are properly corrected. The correction result of the P bits corresponding to the seventh column of the third row propagates to the fourth and 10th rows in which the P bits are likewise the subjects of correction processing. The other correction results also propagate similarly. Note that the wrong correction result of the P bits corresponding to the third column of the sixth row propagates to the eighth and 11th rows in which the P bits are likewise the subjects of correction processing. Hence, a matrix labeled “column processing 1” in
Subsequent correction processing and propagation processing progress is as shown in
By the correction processing of the third time, P bits corresponding to the sixth column of the first row are corrected wrongly, P bits corresponding to the 10th column of the fifth row are properly corrected, and P bits corresponding to the sixth column of the seventh row are properly corrected.
Focusing on the sixth column, correction results of both the first and seventh rows are obtained. That is, by propagation processing of the third time, the wrong correction result of the P bits corresponding to the sixth column of the first row propagates to the second and seventh rows in which the P bits are likewise the subjects of correction processing. On the other hand, the proper correction result of the P bits corresponding to the sixth column of the seventh row also propagates to the first and second rows in which the P bits are likewise the subjects of correction processing.
In iterated decoding of the LDPC code, a correction result is expressed using a probability value. Hence, if a probability value that expresses the proper correction result of the P bits corresponding to the sixth column of the seventh row is larger than a probability value that expresses the wrong correction result of the P bits corresponding to the sixth column of the first row, the P bits corresponding to the sixth column are properly corrected. That is, the wrong correction result in the first row is corrected by the proper correction result in the seventh row. The proper correction result propagates to the second row. The proper correction result in the seventh row is maintained regardless of the wrong correction result in the first row. Hence, a matrix labeled “column processing 3” in
A wrong correction result generated in the past may be corrected due to proper correction of the P bits corresponding to the sixth column. More specifically, by correction processing of the fourth time, the wrong correction result (generated by propagation processing of the second time) of the P bits corresponding to the ninth column of the first row may likewise be corrected due to the influence of the proper correction result of the P bits corresponding to the sixth column of the first row. Hence, a matrix labeled “row processing 4” in
By propagation processing of the fourth time, the proper correction result of the P bits corresponding to the ninth column of the first row propagates to the eighth and 12th rows. As a result, the wrong correction result (generated by correction processing of the second time) of the P bits corresponding to the ninth column of the eighth row and the wrong correction result (generated by propagation processing of the second time) of the P bits corresponding to the ninth column of the 12th row may be corrected. More specifically, if the probability value that expresses the proper correction result is larger than the probability value that expresses the wrong correction result, the wrong correction result is corrected, as described above. When the wrong correction results are corrected, a matrix labeled “column processing 4” in
As described above with reference to
The effect of meeting the condition (g) can also be confirmed from a simulation (to be described later with reference to
In the Min-Sum decoding method, all propagation results βmn obtained by column processing (propagation processing) are initialized first (that is, set to zero). In addition, a channel value λ=(λ1, λ2, . . . , λN) is calculated based on a reception signal y=(y1, y2, . . . , yN). The channel value λ is calculated using
where n∈[1 to N] is represented, and x=(x1, x2, . . . , xN) is a transmitted codeword bit.
Next, iterated decoding is performed. That is, a series of processes including row processing, column processing, determination of a temporarily estimated word, and parity check of the temporarily estimated word is performed. If parity check is OK, the temporarily estimated word is output. On the other hand, if parity check is NG, the number of iteration processes is incremented by one, and the series of processes is performed. If the number of iteration processes has already reached a preset maximum number, the temporarily estimated word (this is not a codeword because parity check is not satisfied) is output without performing the series of processes.
In row processing, a correction result αmn is output using
where A(m) is a set of the numbers of columns in which the elements “1” are arranged in the mth row of a parity check matrix. Hence, n′ represents an element of a set obtained by excluding n from the set A(m). In addition, sign(x) represents a function that returns 1 if the sign of x is positive, and −1 if the sign of x is negative.
In column processing, the propagation result βmn is output using
where B(n) is a set of the numbers of rows in which the elements “1” are arranged in the nth column of the parity check matrix. Hence, m′ represents an element of a set obtained by excluding m from the set B(n).
The temporarily estimated word is determined using
c
n′=0 if sign(Dn)=1
c
n′=1 if sign(Dn)=−1 (16)
Dn is calculated using
Parity check is performed using
OK:(c1′,c2′, . . . , cN′)HT=0
NG:(c1′,c2′, . . . , cN′)HT≠0 (18)
where H represents the parity check matrix, and T indicates transposition of the matrix.
A simulation of iterated decoding for an LDPC code defined by a parity check matrix having the same structure as the mask matrix (H4) will be described below with reference to
The codeword length of the LDPC code is N bits, which equals the number of columns of the parity check matrix. In this simulation, assume that a burst error occurs from the third bit up to the 11th bit, and a random error occurs in the (N−1)th bit. Also assume that all the transmitted codeword bits x1, x2, . . . , xN are “0”. That is, if no error occurs, all the channel values λ1, λ2, . . . , λN are calculated as positive values.
Considering the above assumption, the channel value λ=(λ1, λ2, . . . , λN) shown in
Focusing on the submatrix corresponding to the burst occurrence section, the third, sixth, and ninth rows that are the first correction rows are corrected by the row processing of the first time, as shown in the table labeled “α(1)” in
Focusing on the submatrix corresponding to the burst occurrence section, the first, fifth, and seventh rows that are the third correction rows are corrected by the row processing of the third time, as shown in the table labeled “α(3)” in
Focusing on the sixth column of the table labeled “α(3)” in
More specifically, as the propagation result β1,6 of the sixth column of the first row, the correction result α7,6 of the sixth column of the seventh row propagates. Since α7,6 is “4”, β1,6 is “4” (that is, positive value). As the propagation result β2,6 of the sixth column of the second row, the sum of the correction result α1,6 of the sixth column of the first row and the correction result α7,6 of the sixth column of the seventh row propagates. Since α1,6 is “−1”, and α7,6 is “4”, β2,6 is “3”. That is, although the sixth column of the first row is corrected wrongly, a proper propagation result is given to the sixth column of the second row. As the propagation result β7,6 of the sixth column of the seventh row, the correction result α1,6 of the sixth column of the first row propagates. Since α1,6 is “−1”, β7,6 is “−1”.
Focusing on the submatrix corresponding to the burst occurrence section, the fifth column of the second row and the 11th column of the 11th row that are the fourth correction rows are corrected wrongly by the row processing of the fourth time, as shown in the table labeled “α(4)” in
As shown in the table labeled “D(4)” in
In the parity check matrix creation method according to this embodiment, the design of the mask matrix affects the error resilience of the LDPC code. For example, the larger S is, the smaller the total number of correction columns is, as compared to the total number of correction rows. That is, as S becomes large, the effect of correcting a wrong correction result caused by a random error by propagation processing improves, or the number of correction columns on which the effect can be obtained increases. On the other hand, as S becomes large, L becomes small, as indicated by expressions (12), and correction capability to a burst error therefore degrades. Hence, the value S and the arrangement of correction columns and correction rows are preferably designed in consideration of desired correction capability.
As described above, j<I. If j=I, a wrong correction result generated by correction processing of the Ith time may be corrected by propagation processing of the Ith time. However, since the burst error correction phase is ended by iterated decoding of the Ith time, it is impossible to correct a wrong correction result generated in the past by correction processing and propagation processing in the future included in the burst error correction phase. Hence, j<I preferably holds. That is, if AI≧2, AI=BI is preferably designed. Note that if AI=1, BI=K, as described above.
In addition, since a proper correction result is obtained in the sixth column of the sixth row and the sixth column of the seventh row, the correction results of the third column of the sixth row and the second column of the seventh row may be corrected by correction processing of the third time. That is, even if wrong correction results are obtained in the second and third columns by the correction processing and propagation processing of the first time, the wrong correction results may be corrected by the correction processing and propagation processing of the third time. Hence, when j=2, the effect of correcting a wrong correction result can be expected in a wider range, as compared to a case where j=1.
In addition, since a proper correction result is obtained in the sixth column of the sixth row and the sixth column of the seventh row, the correction results of the third column of the sixth row, the fourth column of the sixth row, the second column of the seventh row, and the fifth column of the seventh row may be corrected by correction processing of the fourth time. That is, even if wrong correction results are obtained in the second, third, fourth, and fifth columns by the correction processing and propagation processing of the first and second times, the wrong correction results may be corrected by the correction processing and propagation processing of the fourth time. Hence, when j=3, the effect of correcting a wrong correction result can be expected in a wider range, as compared to a case where j=1 or j=2.
Note that a wrong correction result generated in the early stage of iterated decoding widely propagates as the iterated decoding progresses. Hence, if j is too large, it may be impossible to sufficiently correct the wrong correction result generated in the early stage of iterated decoding. However, the correcting effect can be expected for a wrong correction result generated in iterated decoding several times before the jth time. Hence, 2≦j≦I−1 is preferably set as compared to j=1.
Additionally, in the submatrix shown in
To maximize the number of jth correction columns including “1” belonging to a plurality of jth correction rows in a case where S is constant, the number of “1”s belonging to the jth correction row included in each of the jth correction columns needs to be 2 at maximum.
Note that the maximum value of S is M−AI−K+2−I. The maximum value of S cab be derived, based on the conditions (c) and (e) and expressions (10) and (12), by
If the number of “1”s belonging to the jth correction row included in each of the jth correction columns is 2 at maximum, S is maximized when all jth correction columns include “1” belonging to two jth correction rows (that is, equation (20) below holds).
The maximum value of S can be derived, from equations (10) and (20), as
However, since S is an integer, fractions after the decimal point on the right-hand side of equation (21) need to be dropped.
A parity check matrix creation method according to this embodiment will be described below in detail. In this embodiment, a submatrix having M rows×L columns called an initial matrix (Mini) is created, and the number of columns of the initial matrix is extended from L to N, thereby creating a mask matrix.
Here, M is the row size of the mask matrix, L≦S M−K+1−S, L is a burst error length correctable by an LDPC code corresponding to the mask matrix, K is the column weight of the mask matrix, I is the maximum number of iterated decoding processes necessary to correct a burst error over L columns, and S is the difference between the total number of rows from the first correction row to the (I−1)th correction row and the total number of columns from the first correction column to the (I−1)th correction column.
In step S101, the initial matrix (Mini) is initialized. More specifically, a zero matrix having M rows×L columns is created in the work area of the memory. In addition, the total number (Ai) of ith correction columns (Ci) and the total number (Bi) of ith correction rows (Ri) are set (step S102). The ith correction column (Ci) indicates a column to be corrected in the ith correction row (Ri) by correction processing of the ith time, where i is a variable that specifies the number of iterated decoding processes, and 1≦i≦I. In addition, Ai≧1. I is a value representing the maximum number of iterated decoding processes necessary to correct a burst error over L columns, as described above, and is preferably set to L/2 or less. In addition,
holds concerning Ai and I.
In step S103, i=1 is set, and the process advances to step S104. In step S104, B1 first correction rows (R1) are created. Note that B1≧A1. Here, the first correction row indicates a row including one uncorrected bit out of the subjects of correction processing of the first time. For this reason, the row weight is 1 in all the first correction rows. B1 first correction rows have at least one “1” in total in each of A1 different columns (that is, first correction columns). After step S104, the process advances to step S105.
In step S105, the ith correction columns (Ci) are extracted. As is set in step S102, Ai ith correction columns (Ci) exist. Focusing on the ith correction columns (Ci) extracted in step 105, Bi+1 (≧Ai+1) or more ith propagation rows (R′i) are created (step S106). The ith propagation row (R′i) indicates a row to which at least one correction result in total is propagated by propagation processing of the ith time. That is, the ith propagation row (R′i) has at least one “1” in total in the Ai ith correction columns. However, rows already created as the first, . . . , ith correction rows (R1, . . . , Ri) are excluded from the candidates of the ith propagation rows. The column weight of each ith correction column (Ci) is adjusted to K by “1” assigned to the ith propagation rows.
When the ith propagation rows (R′i) are created in step S106, the ith correction columns (Ci) are decided. Hence, the ith correction columns (Ci) are deleted from the work area of the memory (step S107). When all columns are deleted from the work area of the memory in step S107, creation of the initial matrix (Mini) is completed, and the processing thus ends. Otherwise, the process jumps to step S109.
In step S109, i is incremented by one, and the process advances to step S110. In step S110, Bi ith correction rows (Ri) are created out of the (i−1)th propagation rows (R′i−1) created in step S106 of the previous time. Note that Bi≧Ai. Here, the Bi ith correction rows have at least one “1” in total in each of the Ai different columns (that is, ith correction columns) included in a column set formed by excluding the A1 first correction columns to the Ai−1 (i−1)th correction columns. In addition, each of the Bi ith correction rows has only one “1” in the Ai ith correction columns. After step S110, the process advances to step S105.
A state in which the initial matrix (Mini) of a mask matrix is generated through the processing shown in
First, a zero matrix having 10 rows×7 columns is created in the work area of the memory (step S101). In addition, A1=3, A2=2, A3=2, B1=3, B2=3, and B3=2 are set (step S102). That is, in this example, I=3, and B2>A2.
As shown in
Next, as shown in
As shown in
As shown in
According to this example, the initial matrix (Mini) shown in
On the other hand, according to the mask matrix (Z1 or Z2) of the first comparative example, 4 (=L/2=7/2=3.5→4) iterated decoding processes are necessary to correct the burst error over seven columns, as described above.
Hence, according to this initial matrix, it is possible to reduce the number of iterated decoding processes necessary to correct the burst error over seven columns as compared to the mask matrix (Z1 or Z2) of the first comparative example. Note that in this example, A1=3, A2=2, and A3=2 are set, thereby achieving I=3. However, an arbitrary positive integer can be set to Ai as long as expressions (8) and (22) are met.
As described above, the mask matrix is created by, for example, extending the number of columns of the initial matrix (Mini) created in accordance with the flowchart of
In step S201, the initial matrix (Mini) of a mask matrix is created. That is, for example, processing shown in
Out of the column vectors created in step S202, those included in the initial matrix (Mini) created in step S201 are handled as selected. If, for example, L=7, seven column vectors included in the initial matrix are handled as selected. The selected column vectors cannot be included in candidates from step S205 to be described later.
By this handling, only (K−1) rows where the element “1” appears overlap at maximum between two arbitrary column vectors in the mask matrix, as shown in
In step S204, n=L+1 is set, where n is a variable that specifies a column to be processed. When steps S203 and S204 are completed, the process advances to step S205.
In step S205, a candidate selectable as the nth column vector is selected. If the following three conditions are met in a case where a certain column vector pattern is employed as the nth column vector, the column vector pattern is selected as one of candidates. As the first condition, a burst error that has occurred from the (n−L+1)th column to the nth column can be corrected within the maximum number of iterated decoding processes (=I). As the second condition, for all of one or more values j set in step S201, Bj>Aj holds in a submatrix formed from the (n−L+1)th column to the nth column of the mask matrix. As the third condition, equation (10) described above holds in the submatrix formed from the (n−L+1)th column to the nth column of the mask matrix. After step S205, the process advances to step S206.
If one or more candidates are selected in step S206, the process advances to step S207. Otherwise, since no mask matrix can be created, the process returns to step S201 to newly create the initial matrix (Mini). If a plurality of candidates are selected in step S207, the process advances to step S208. If the candidates are narrowed down to one, the process advances to step S213.
In step S208, a candidate that minimizes the number of generated loops 4 in the mask matrix when a column vector is employed as the nth column vector of the mask matrix is further selected. If a plurality of candidates are still selected in step S208, the process advances to step S210. If the candidates are narrowed down to one, the process advances to step S213 (step S209).
In step S210, a candidate that minimizes the variance of the row weight in the mask matrix when a column vector is employed as the nth column vector of the mask matrix is further selected. If a plurality of candidates are still selected in step S210, the process advances to step S212. if the candidates are narrowed down to one, the process advances to step S213 (step S211).
In step S212, an arbitrary candidate is selected, for example, at random from the plurality of candidates, and the process advances to step S213. Note that step S212 can be implemented by an arbitrary technique for selecting one of a plurality of candidates.
In step S213, since the candidates are narrowed down to one, the candidate is decided as the column vector of the nth column of the mask matrix. If n=N at the end of step S213, the mask matrix creation is completed, and the processing therefore ends. Otherwise, the process advances to step S215 (step S214). In step S215, n is incremented by one, and the process returns to step S205.
An LDPC code corresponding to the mask matrix created by the processing shown in
In step S201 of
In step S208 of
When cyclic permutation matrices (shift amounts are adjustable) or zero matrices are arranged in accordance with the elements of the mask matrix created by the processing shown in
A simulation of the resistance of the LDPC code corresponding to the parity check matrix created by the parity check matrix creation method according to this embodiment to a composite error of a random error and a burst error will be described below. In this simulation, a model shown in
As shown in
In this simulation, the ratio of transmission energy of the transmission signal per bit to noise power is expressed using an SNR (Signal-to-Noise Ratio) given by
The number of burst erasure signals to be generated is set to one per codeword. In addition, as shown in
The simulation was conducted for six parity check matrices shown in
A parity check matrix corresponding to a parity check matrix (H5) is shown in
For example, as shown in
The parity check matrix (H5) is set to S=0 and L=22. Note that I (=8) is smaller than L/2 (=11). Hence, according to the parity check matrix (H5), a burst error over L columns can be corrected by a smaller number of processes as compared to the parity check matrix of the first comparative example. In addition, since S=0, the condition (g) is not met.
A parity check matrix (H6) is shown in
A parity check matrix (H7) is shown in
A parity check matrix (H8) is shown in
A parity check matrix (H9) is shown in
A parity check matrix (H10) is shown in
In
According to
As described above, the parity check matrix creation method according to the first embodiment includes creating a mask matrix such that in a submatrix obtained by arbitrarily extracting L continuous columns from the mask matrix, the total number of rows from the first correction row to the (I−1)th correction row equals the sum of the total number of columns from the first correction column to the (I−1)th correction column and S (S is an integer of 1 or more). That is, in this submatrix, the number of jth correction rows is larger than the number of jth correction columns (j is at least one integer from 1 to (I−1)). Hence, according to this parity check matrix creation method, it is possible to expect the effect of correcting, by propagation processing of the jth time, a wrong correction result generated by correction processing of the jth time. It is also possible to expect the effect of correcting a wrong correction result generated in the past before the jth time by correction processing and propagation processing in the future included in the burst error correction phase.
A parity check matrix created by the parity check matrix creation method according to the first embodiment is used for error correction decoding processing by a decoding apparatus. In addition, this parity check matrix is used for error correction encoding processing by an encoding apparatus in a state in which the parity check matrix is converted into, for example, a generator matrix. The encoding apparatus and the decoding apparatus are incorporated in, for example, a recording/reproduction system or a communication system.
A recording/reproduction apparatus according to the second embodiment includes an encoding apparatus and a decoding apparatus for error correction. The encoding apparatus and the decoding apparatus use a parity check matrix created by the parity check matrix creation method according to the first embodiment. Note that this parity check matrix can be used by all systems to which an error correcting code is applied, for example, a semiconductor memory device, a communication apparatus, or a magnetic recording/reproduction apparatus, although a detailed description will be omitted.
As shown in
As shown in
The encoding processing unit 300 receives user data 10 and a data address 11 from the controller 500. The encoding processing unit 300 creates user code data 12 by encoding the data address 11, creates BIS (Burst Indicator SubCode) data 13 by encoding the data address 11, and creates the recording data 14 based on the user code data 12 and the
BIS data 13. Note that the BIS data 13 is used to detect a burst error, as will be described later.
The scramble processing unit 301 receives the user data 10 and the data address 11 from the controller 500. The scramble processing unit 301 performs scramble processing for the user data 10 based on the data address 11, thereby obtaining scrambled user data. The scramble processing unit 301 outputs the scrambled data to the EDC encoding unit 302.
The EDC encoding unit 302 receives the scrambled data from the scramble processing unit 301. The EDC encoding unit 302 performs EDC encoding for the scrambled data, thereby obtaining EDC encoded data. The EDC encoding unit 302 outputs the EDC encoded data to the BCH encoding unit 303.
The BCH encoding unit 303 receives the EDC encoded data from the EDC encoding unit 302. The BCH encoding unit 303 performs BCH encoding for the EDC encoded data, thereby obtaining BCH encoded data. The BCH encoding unit 303 outputs the BCH encoded data to the LDPC encoding unit 304.
The LDPC encoding unit 304 uses a parity check matrix created by the parity check matrix creation method according to the first embodiment in a state in which the parity check matrix is converted into, for example, a generator matrix. The LDPC encoding unit 304 receives the BCH encoded data from the BCH encoding unit 303. The LDPC encoding unit 304 performs LDPC encoding based on the parity check matrix for the BCH encoded data, thereby obtaining LDPC encoded data. The LDPC encoding unit 304 outputs the LDPC encoded data to the first interleaving unit 305.
The first interleaving unit 305 receives the LDPC encoded data from the LDPC encoding unit 304. The first interleaving unit 305 performs interleaving for the LDPC encoded data, thereby obtaining the user code data 12. The first interleaving unit 305 outputs the user code data 12 to the data composition/SYNC data adding unit 321.
The RS encoding unit 311 receives the data address 11 from the controller 500. The RS encoding unit 311 performs RS encoding for the data address 11, thereby obtaining RS encoded data. The RS encoding unit 311 outputs the RS encoded data to the second interleaving unit 312.
The second interleaving unit 312 receives the RS encoded data from the RS encoding unit 311. The second interleaving unit 312 performs interleaving for the RS encoded data, thereby obtaining the BIS data 13. The second interleaving unit 312 outputs the BIS data 13 to the data composition/SYNC data adding unit 321.
The data composition/SYNC data adding unit 321 receives the user code data 12 from the first interleaving unit 305 and the BIS data 13 from the second interleaving unit 312. The data composition/SYNC data adding unit 321 composes the user code data 12 and the BIS data 13 and adds SYNC data, thereby generating composed data. The SYNC data is used to detect the start of corresponding composed data. The data composition/SYNC data adding unit 321 outputs the composed data to the 17PP modulation unit 322.
More specifically, the data composition/SYNC data adding unit 321 generates composed data in accordance with a format shown in
The 17PP modulation unit 322 receives the composed data from the data composition/SYNC data adding unit 321. The 17PP modulation unit 322 performs RLL (Run Length Limited) encoding for the composed data using a 17PP modulation code that is the modulation code of the Blu-ray method known as an optical disc standard, thereby obtaining RLL encoded data. The 17PP modulation unit 322 outputs the RLL encoded data to the NRZI conversion unit 323.
The NRZI conversion unit 323 receives the RLL encoded data from the data composition/SYNC data adding unit 321. The NRZI conversion unit 323 performs NRZI conversion for the RLL encoded data, thereby obtaining the recording data 14.
As shown in
The reproduction processing unit 400 receives the reproduced data 20 from the optical recording medium 600 and performs various processes to be described later for the reproduced data 20, thereby restoring user data 28.
The filter/PLL/equalization processing unit 401 receives the reproduced data 20 from the optical recording medium 600. The filter/PLL/equalization processing unit 401 performs signal processing including filter processing, PLL (Phase Locked Loop) processing and equalization processing, thereby obtaining equalized data. The filter/PLL/equalization processing unit 401 outputs the equalized data to the SYNC detection unit 402.
The SYNC detection unit 402 detects SYNC data from the equalized data in accordance with, for example, the format shown in
The PRML/NRZ conversion/17PP demodulation unit 403 receives the synchronized data from the SYNC detection unit 402. The PRML/NRZ conversion/17PP demodulation unit 403 performs PRML processing, NRZ conversion, and 17PP demodulation for the synchronized data, thereby obtaining code data 21. The code data 21 corresponds to the logarithmic probability ratio of user code data and the logarithmic probability ratio of BIS data. The PRML/NRZ conversion/17PP demodulation unit 403 outputs the code data 21 to the data separation unit 404.
The data separation unit 404 receives the code data 21 from the PRML/NRZ conversion/17PP demodulation unit 403. The data separation unit 404 separates the code data 21, thereby obtaining BIS data 22 and user code data 27. The BIS data 22 corresponds to the logarithmic probability ratio of BIS data. The user code data 27 corresponds to the logarithmic probability ratio of user code data. The data separation unit 404 outputs the BIS data 22 to the second deinterleaving units 411 and 413. The data separation unit 404 outputs the user code data 27 to the burst signal correction unit 421.
The second deinterleaving unit 411 receives the BIS data 22 from the data separation unit 404. The second deinterleaving unit 411 performs deinterleaving for the BIS data 22, thereby obtaining deinterleaved BIS data. The second deinterleaving unit 411 outputs the deinterleaved BIS data to the RS decoding unit 412.
The RS decoding unit 412 receives the deinterleaved BIS data from the second deinterleaving unit 411. The RS decoding unit 412 performs RS decoding for the deinterleaved BIS data, thereby obtaining BIS data 23. Note that the BIS data 23 corresponds to a data address 24. The RS decoding unit 412 outputs the BIS data 23 to the data comparison unit 414. The RS decoding unit 412 also outputs the data address 24 to the descramble processing unit 426.
The second deinterleaving unit 413 receives the BIS data 22 from the data separation unit 404. The second deinterleaving unit 413 performs the same deinterleaving as that of the second deinterleaving unit 411 for the BIS data 22, thereby obtaining deinterleaved BIS data. The second deinterleaving unit 413 outputs the deinterleaved BIS data to the data comparison unit 414.
The data comparison unit 414 receives the BIS data 23 from the RS decoding unit 412 and the deinterleaved BIS data from the second deinterleaving unit 413. The data comparison unit 414 compares the BIS data 23 with the deinterleaved BIS data, thereby determining an error included in the deinterleaved BIS data. As the result of determination, the data comparison unit 414 obtains BIS data error position information 25. As described above, the BIS data 23 is generated by performing RS decoding for the deinterleaved BIS data. Hence, when the two pieces of data are compared, an error included in the deinterleaved BIS data can be determined. The data comparison unit 414 outputs the BIS data error position information 25 to the burst occurrence area estimation unit 415.
The burst occurrence area estimation unit 415 receives the BIS data error position information 25 from the data comparison unit 414. The burst occurrence area estimation unit 415 estimates the occurrence area of a burst error in the user code data based on the BIS data error position information 25, thereby obtaining burst occurrence area information 26. The burst occurrence area estimation unit 415 outputs the burst occurrence area information 26 to the burst signal correction unit 421. Note that the burst occurrence area estimation unit 415 may estimate the occurrence area of a burst error in the user code data based on the information of the presence/absence of an error of SYNC data in addition to the BIS data error position.
For example, assume that, as shown in
The burst signal correction unit 421 receives the burst occurrence area information 26 from the burst occurrence area estimation unit 415 and the user code data 27 from the data separation unit 404. The burst signal correction unit 421 specifies the burst occurrence area in the user code data 27 based on the burst occurrence area 26. The burst signal correction unit 421 corrects the logarithmic probability ratio of bits corresponding to the burst occurrence area out of the user code data 27 to, for example, 0, thereby obtaining corrected user code data. Logarithmic probability ratio=0 means that the probability that a corresponding bit is 0 and the probability that the bit is 1 are equal. According to this correction, it is possible to prevent a wrong logarithmic probability ratio in the burst occurrence area from having an adverse effect outside the burst occurrence area in LDPC decoding to be performed by the LDPC decoding unit 423. The burst signal correction unit 421 outputs the corrected user code data to the first deinterleaving processing unit 422.
The first deinterleaving processing unit 422 receives the corrected user code data from the burst signal correction unit 421. The first deinterleaving processing unit 422 performs deinterleaving for the corrected user code data, thereby obtaining deinterleaved user code data. The first deinterleaving processing unit 422 outputs the deinterleaved user code data to the LDPC decoding unit 423.
The LDPC decoding unit 423 uses a parity check matrix created by the parity check matrix creation method according to the first embodiment. The LDPC decoding unit 423 receives the deinterleaved user code data from the first deinterleaving processing unit 422. The LDPC decoding unit 423 performs LDPC decoding based on the parity check matrix for the deinterleaved user code data, thereby obtaining LDPC decoded data. The LDPC decoding unit 423 outputs the LDPC decoded data to the BCH decoding unit 424.
The BCH decoding unit 424 receives the LDPC decoded data from the LDPC decoding unit 423. The BCH decoding unit 424 performs BCH decoding for the LDPC decoded data, thereby obtaining BCH decoded data. The BCH decoding unit 424 outputs the BCH decoded data to the EDC decoding unit 425.
The EDC decoding unit 425 receives the BCH decoded data from the BCH decoding unit 424. The BCH decoding unit 425 performs EDC decoding for the BCH decoded data, thereby obtaining EDC decoded data. The EDC decoding unit 425 outputs the EDC decoded data to the descramble processing unit 426.
The descramble processing unit 426 receives the data address 24 from the RS decoding unit 412 and the EDC decoded data from the EDC decoding unit 425. The descramble processing unit 426 performs descramble processing for the EDC decoded data based on the data address 24, thereby obtaining the user data 28. The descramble processing unit 426 outputs the user data 28 to the controller 500.
As described above, the recording/reproduction apparatus according to the second embodiment performs LDPC encoding and LDPC decoding based on a parity check matrix created by the parity check matrix creation method according to the first embodiment. Hence, according to this recording/reproduction apparatus, it is possible to stably reproduce data even when a composite error of a burst error and a random error has occurred.
The processing in the above-described embodiments can be implemented using a general-purpose computer as basic hardware. A program implementing the processing in each of the above-described embodiments may be stored in a computer readable storage medium for provision. The program is stored in the storage medium as a file in an installable or executable format. The storage medium is a magnetic disk, an optical disc (CD-ROM, CD-R, DVD, or the like), a magnetooptic disc (MO or the like), a semiconductor memory, or the like. That is, the storage medium may be in any format provided that a program can be stored in the storage medium and that a computer can read the program from the storage medium. Furthermore, the program implementing the processing in each of the above-described embodiments may be stored on a computer (server) connected to a network such as the Internet so as to be downloaded into a computer (client) via the network.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
This application is a Continuation Application of PCT Application No. PCT/JP2013/057555, filed Mar. 15, 2013, the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2013/057555 | Mar 2013 | US |
Child | 14847851 | US |