This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2010-202095, filed Sep. 9, 2010; the entire contents of which are incorporated herein by reference.
Embodiments described herein relate generally to error correction using an irregular low-density parity check (LDPC) code.
When transmitting or storing data, an error correction code is added to the data. The data to which the error correction code is added is decoded by an error correction decoder incorporated in a receiver or a memory controller.
If a few bit errors are included in received data or read data, the data can be accurately reconstituted by correcting the bit errors using the error correction code.
As an error correction code, an LDPC code is known. LDPC codes excel at correcting errors. Regarding LDPC codes, a phenomenon called “error floor” is known. When error floor is observed, a decoding error rate almost does not reduce in a region in which a bit error rate before decoding is below a certain level.
In general, according to one embodiment, an error correction decoder carries out iterative decoding for data coded using an irregular LDPC code. The decoder includes a row processing unit, a parity check unit and a likelihood control unit. The row processing unit is configured to generate each extrinsic value from each check node to each variable node. The parity check unit is configured to generate a temporary estimated word based on the extrinsic values, to perform parity checks on the temporary estimated word, and to determine the temporary estimated word as a code word when all check nodes satisfy the parity check. The likelihood control unit is configured to carry out weighting using first extrinsic value weights when a first condition including a condition that the code word cannot be obtained even when number of times the iterative decoding has been carried out is greater than a first iterative times, in order to increase absolute value of the extrinsic value from the check node not satisfying the parity check to the variable node, wherein the first extrinsic value weights are equal to each other or become larger in descending order of column weights of the variable nodes, and a maximum of the first extrinsic value weights is not equal to a minimum of the first extrinsic value weights.
In the following, each embodiment will be explained in reference to the figures.
An error correction decoder according to a first embodiment includes, as shown in
A likelihood of code data Fn acquired by a signal processing unit (not shown) in the previous stage is input to the input likelihood storage unit 101. The input likelihood storage unit 101 retains the input likelihood Fn until the decoding of code data is completed. The code data is an LDPC code defined by an irregular LDPC parity check matrix H (hereinafter, sometimes referred to as “parity check matrix H”) stored in the parity check matrix storage unit 105. In other words, the code data is so-called systematic code and consists of data bits and parity bits.
As an example, assuming code data consisting of two data bits C1 and C2 and four parity bits C3, . . . , C6, the likelihood storage unit 101 stores input likelihoods F1, . . . , F6 which respectively correspond to bits C1, . . . , C6. These input likelihoods F1, . . . , F6 are read by the row processing unit 102 and the parity check unit 104, as needed.
Herein, as expressed by equation (1) below, a likelihood is the natural logarithm value of the ratio of the probability P (x=0) of a data bit being 0 to the probability P (x=1) of the data bit being 1. In the description hereinafter, an apriori likelihood means the likelihood of an apriori probability.
The parity check matrix storage unit 105 stores information of the parity check matrix H with M rows and N columns in advance. The same parity check matrix H is shared by a decoder side and an encoder side. The parity check matrix H is read by the row processing unit 102, the column processing unit 103, the parity check unit 104 or the likelihood control unit 106, as needed.
In the explanation hereinafter, a set of column indices indicating column positions of “1” on the mth row will be referred to as A(m), a set of row indices indicating row positions of “1” in the nth column will be referred to as B(n). For example, A(2)={1, 2, 5}, B(3)={1, 4} in
As shown in
The row processing unit 102 generates an extrinsic value αmn using input likelihoods F1, . . . , F6 obtained from the input likelihood storage unit 101, the information of the parity check matrix H from the parity check matrix storage unit 105 and apriori likelihoods βmn from the column processing unit 103. More specifically, the row processing unit 102 generates extrinsic value αmn by the following equation (2). The row processing unit 102 inputs the generated extrinsic value αmn to the parity check unit 104 and the likelihood control unit 106.
It should be noted that every apriori likelihood βmn at the first decoding is set to zero, and after the first decoding, a newest apriori likelihood βmn which is fed back from the column processing unit 103 is set. The function sign(x) and the function f(x) in equation (2) are expressed by the following equation (3) and equation (4):
The parity check unit 104 generates a temporary estimated word based on the information of the parity check matrix H from the parity check matrix storage unit 104, extrinsic value αmn from the row processing unit 102 and the input likelihood Fn from the input likelihood storage unit 101. More specifically, the parity check unit 104 generates the nth element of the temporary estimated word by the following equation (5).
Then, the parity check unit 104 checks whether the generated temporary estimated word is a code word defined by the parity check matrix H or not. More specifically, the parity check unit 104 calculates a parity check vector U by the following equation (6).
U=ĉHT (6)
Each element in the parity check vector U indicates whether a corresponding check node satisfies the parity check or not (whether the parity of the corresponding check node is correct or not). If the mth element in the parity check vector U is “0,” the mth check node Pm satisfies the parity check. If the mth element in the parity check vector U is “1,” the mth check node Pm does not satisfy the parity check. The total number of “1” included in the parity check vector U is equal to the total number of check nodes UCN that do not satisfy the parity check.
In the explanation hereinafter, a set of check nodes not satisfying the parity check will be referred to as UC(P), and a set of check nodes satisfying the parity check and connected (by edges) to the variable nodes that are connected (by edges) to the check nodes not satisfying the parity check will be referred to as SD(P). UCN is equal to the total number of elements included in a set UC(P).
For example, as shown in
When a parity check vector U is zero vector, it means all check nodes satisfy the parity check. If the parity check vector U becomes a zero vector, the parity check unit 104 outputs a temporary estimated word as a code word. If the parity check vector U is not a zero vector, as will be described later, extrinsic value αmn is updated up to a first maximum Lmax, and the parity check based on the updated extrinsic value αmn is iterated. If the parity check vector U is not a zero vector and L, the number of times the iterative decoding has been carried out, is not greater than Lmax, the parity check unit 104 notifies the likelihood control unit 104 of information of the set UC(P) and information of the set SD(P). The number of times L the iterative decoding has been carried out is counted by, for example, the row processing unit 102.
When a first condition is satisfied, the likelihood control unit 106 carries out weighting on extrinsic value αmn from the row processing unit 102, and it inputs the weighted extrinsic value αmn to the column processing unit 103. If the first condition is not satisfied, the likelihood control unit 106 inputs extrinsic value αmn without changing it from the row processing unit 102 to the column processing unit 103. The first condition is either one of or a combination of the second condition that the number of times L the iterative decoding has been carried out is greater than a first iterative times Lin, and the third condition that the UCN is less than or equal to a first maximum UCNmax.
The column processing unit 103 calculates apriori likelihood βmn using the information of the parity check matrix H from the parity check matrix storage unit 105 and extrinsic value αmn (which may be weighted as needed) from the likelihood control unit 106. More specifically, the column processing unit 103 calculates apriori likelihood βmn by the following equation (7). The column processing unit 103 feeds the calculated apriori likelihood βmn back to the row processing unit 102.
In equation (7), the extrinsic value αmn is input from the likelihood control unit 106, and it may or may not be weighed.
The error correction decoder shown in
Below, the technical significance of weighting extrinsic value αmn and the specific processes of weighting extrinsic value αmn will be explained.
Suppose if a result of the parity check as illustrated in
The error correction decoder of
Also, as described above, irregular LDPC codes are expected to be used in the present embodiment. The irregular LDPC codes are non-uniform with respect to a column weight and a row weight. Generally, a bit error occurs more often in a variable node with a small column weight. Accordingly, in the present embodiment, a tendency of bit error occurrence according to a column weight is considered when weighting extrinsic value αmn. More specifically, in the present embodiment, an individual extrinsic value weight is applied to extrinsic value αmn for every column weight wc(n). For example, a larger extrinsic value weight (>1) is used as the multiplier for extrinsic value α31 to be sent from check node P3 to a variable node V1 with a small column weight (i.e., with a lower reliability), and a smaller extrinsic value weight (<1) is used as the multiplier for extrinsic value α36 to be sent from the same check node P3 to variable node V6 with a larger column weight (i.e., with a greater reliability).
More specifically, the likelihood control unit 106 can carry out weighting extrinsic value αmn from each element in the set UC(P) to each variable node, according to the following equation (8):
It should be noted that extrinsic value weights, Wu1, Wu2 and Wu3 in equation (8) satisfy the following condition (9):
1<Wu3≦Wu2≦Wu1 AND Wu3<Wu1 (9)
It should be noted that, although equation (8) and condition (9) exemplify a case in which there are three types of column weight wc(n), the equation and condition can be generalized into a case in which there are two types or four or more types of column weight wc(n). Regardless of the type of column weight wc(n), extrinsic value weight wui corresponding to each column weight wc(n) will be equal to each other, or become greater in accordance with descending order of column weight i. In other words, extrinsic value weight wui does not become smaller in a descending order of column weight i. Also, regardless of the type of column weight wc(n), maximum value Wui
Also, the likelihood control unit 106 can carry out weighting extrinsic value αmn from each element of the set SD(P) to the variable node connected to the check node which does not satisfy the parity check, by the following equation (10).
Extrinsic values Ws1, Ws2 and Ws3 in equation (10) satisfy the following condition (11):
1>Ws3≧Ws2≧Ws1 AND Ws3>Ws1 (11)
It should be noted that, although equation (10) and condition (11) exemplify a case in which there are three types of column weight wc(n), the equation and condition can be generalized into a case in which there are two types or four or more types of column weight wc(n). Regardless of the type of column weight wc(n), extrinsic value weight wsi corresponding to each column weight wc(n) will be equal to each other, or become smaller in accordance with descending order of column weight i. In other words, extrinsic value weight wsi does not become greater in accordance with descending order of column weight i. Also, regardless of the type of column weight wc(n), maximum value Wsi
Also, the likelihood control unit 106 can carry out weighting of extrinsic value αmn from each element of the set UC(P) to each variable node by the following equation (12) instead of equation 8.
Extrinsic value weights |Vu1|, |Vu2| and |Vu3| in Equation (12) satisfy the following condition (13):
|Vu3|≦|Vu2|≦|Vu1| AND |Vu3|<|Vu1| (13)
It should be noted that, although equation (12) and condition (13) exemplify a case in which there are three types of column weight wc(n), the equation and condition can be generalized into a case in which there are two types or four or more types of column weight wc(n). Regardless of the type of column weight wc(n), extrinsic value weight |Vui| corresponding to each column weight wc(n) will be equal to each other, or become greater in accordance with descending order of column weight i. In other words, extrinsic value weight |Vui| does not become smaller in accordance with descending order of column weight i. Also, regardless of the type of column weight wc(n), maximum value |Vui
Further, the likelihood control unit 106 may perform a combination of weighting by multiplication by weight coefficients greater than 1 indicated by equation (8) and weighting by addition of absolute values indicated by equation (12).
Also, the likelihood control unit 106 can carry out weighting extrinsic value αmn from each element in the set SD(P) to the variable node connected to the check node not satisfying the parity check, by the following equation (14) instead of equation (10).
Extrinsic value weights (−|Vs1|), (−|IVs2|) and (−|Vs3|) in equation (14) satisfy the following condition (15):
−|Vs3≧−|Vs2≧−|Vs1| AND −|Vs3|>−|Vs1| (15)
It should be noted that, although equation (14) and condition (15) exemplify a case in which there are three types of column weight wc(n), the equation and condition can be generalized into a case in which there are two types or four or more types of column weight wc(n). Regardless of the type of column weight wc(n), extrinsic value weight (−|Vs1|) corresponding to each column weight wc(n) will be equal to each other, or become smaller in accordance with descending order of column weight i. In other words, extrinsic value weight (−|Vsi|) does not become greater in accordance with a descending order of column weight i. Also, regardless of the type of column weight wc(n), maximum value (−|Vsi
Further, the likelihood control unit 106 may perform a combination of weighting by multiplication by weight coefficients smaller than 1 indicated by equation (10) and weighting by subtraction of absolute values (addition of sign-changed absolute values) indicated by equation (14).
As described above, considering that a bit error occurs more often in a variable node with a smaller column weight, an extrinsic value αmn can be weighted by setting an individual extrinsic value weight (such as Wui, Wsi, |Vui|, (−|Vsi|), etc.) so that the ability to correct errors can be effectively improved in a situation, for example shown in
In the following, an example of the operation of the error correction decoder of
In step S201, the row processing unit 102, as aforementioned, generates extrinsic value αmn using the input likelihood Fn from the input likelihood storage unit 101, the information of the parity check matrix H from the parity check matrix storage unit 105 and newest) apriori likelihood βmn from the column processing unit 103. The row processing unit 102 may count how many times the iterative decoding has been carried out (L times) every time the process at step S201 is carried out. Next, as aforementioned, the parity check unit 104 generates a temporary estimated word based on the information of parity check matrix H from the parity check matrix storage unit 105 and extrinsic value αmn from the row processing unit 102, and determines whether the generated temporary estimated word is a code word that is defined by the parity check matrix H or not (step S202). If the temporary estimated word is determined as a code word, the process ends (decoding succeeded), and if not, the process proceeds to step S203.
In step S203, the likelihood control unit 106 determines whether the number of times L the iterative decoding has been carried out is greater than the first maximum Lmax or not. If greater, the process ends (decoding failed), and if not, the process proceeds to step S204. In step S204, the likelihood control unit 106 determines whether the number of times L the iterative decoding has been carried out is less than or equal to the first iterative times Lin or not. Here, Lin<Lmax. If less or equal, the process proceeds step S205, and if not, the process proceeds to step S206. In step S206, the likelihood control unit 106 determines whether UCN the total number of check nodes that do not satisfy the parity check is greater than UCNmax the first maximum. If greater, the process proceeds to step S205, and if not, the process proceeds to step S207.
In step S207, the likelihood control unit 106 carries out weighting extrinsic value αmn as aforementioned, and the process proceeds to step S205. In step S205, the column processing unit 103 calculates apriori likelihood βmn using information of the parity check matrix H from the parity check matrix storage unit 105 and extrinsic value αmn from the likelihood control unit 106 (if the process proceeds to step S205 via step S207, extrinsic value αmn has been weighted), and the process returns to step S201.
Note that the example of
As explained above, the error correction decoder according to the first embodiment sets an individual extrinsic value weight for each column weight in order to weight extrinsic values when a first condition is satisfied (for example, when iterative decoding has been carried out sufficient times). Thus, according to the error correction decoder according to the present embodiment, the ability of error correction can be effectively improved using the tendency that bit errors occur more often in a variable node with a small column weight, when a code word cannot be obtained in spite of iterative decoding sufficient times.
The storage apparatus according to a second embodiment is an application of the error correction decoder according to the above first embodiment. The storage apparatus is typically a memory card which includes a nonvolatile memory such as a flash memory and a memory controller to control the nonvolatile memory.
A memory card 303 of
The memory controller 302 includes a read-only memory (ROM) 307, a central processing unit (CPU) core 308, a random access memory (RAM) 309, a host interface (I/F) 310, an error correction unit 311 and a memory interface 312. Each element of the memory controller 302 is connected to each other via a bus 306.
The CPU core 308 transmits and receives data with the host 304 through the host interface 310 and with the semiconductor memory unit 305 through the memory interface 312. In other words, the CPU core 308 can function as a reading unit to receive data from the semiconductor memory unit 305 or as a writing unit to transmit data on the semiconductor memory unit 305. Firmware executed by the CPU core 308 realizes address management of the semiconductor unit 306 including restrictions on the number of rewritable times. Further, the firmware realizes the control of whole memory card 303 in accordance with commands input from the host 304.
The ROM 307 stores a control program for the memory card 303, etc. The RAM 309 stores an address conversion table which is necessary for address management, information on abnormal circuits, and so on.
The error correction unit 311 includes a decoder 301 and an encoder 313. The error correction decoder according to the first embodiment is incorporated into to the decoder 301. The decoder 301 performs error correction decoding on data read from the semiconductor memory unit 305. On the other hand, the encoder 313 adds an error correction code to data to be written on the semiconductor memory 305.
As explained in the above, in the storage apparatus according to the second embodiment, the error correction decoder according to the aforementioned first embodiment is incorporated into the memory controller. Thus, according to the storage apparatus according to the present embodiment, an excellent ability of error correction on the read data can be achieved.
The receiver according to the third embodiment is an application of the error correction decoder according to the aforementioned first embodiment. The receiver according to the present embodiment includes, as shown in
The antenna 320 receives high-frequency radio signals. The frequency converter 321 downconverts the received signals from the antenna 320 to intermediate-frequency signals. The analog-to-digital converter 322 digitizes the domain of the intermediate frequency signals from the frequency converter 321. The demodulator 323 demodulates the digital signals from the analog-to-digital converter 322 in accordance with a demodulation scheme corresponding to a modulation scheme on the transmitter side.
The error correction decoder according to the aforementioned first embodiment is incorporated into the decoder 324. The decoder 324 performs decoding process including error correction decoding on the demodulated data from the demodulator 323 to reconstruct the received data.
As explained above, in the receiver according to the third embodiment, the error correction decoder according to the aforementioned first embodiment is incorporated into the decoder. Thus, according to the receiver according to the present embodiment, an excellent ability of error correction for the received data can be achieved. The transmitter-receiver may be configured by combining the elements shown in
For example, it is possible to provide a program that realizes the processing of each of the above-described embodiments by storing the program in a computer-readable storage medium. A storage medium may be a magnetic disk, an optical disc (such as CD-ROM, CD-R, DVD, etc.), a magneto-optical disc (MO, etc.) or a semiconductor memory, as long as it can store a program and is computer-readable.
Also, the program that realizes the processing of each of the above-described embodiments may be stored on a computer (server) connected to network such as the Internet and may be downloaded by a computer (client) via 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 embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments 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.
Number | Date | Country | Kind |
---|---|---|---|
2010-202095 | Sep 2010 | JP | national |