Concatenated error correcting codes
Systems and methods are provided for concatenated error-correcting coding. An apparatus may include a Low-Density Parity-Check (LDPC) decoder configured to perform an iterative LDPC decoding process on bits of an LDPC codeword, a Bose-Chaudhuri-Hocquenghem (BCH) decoder coupled to the LDPC decoder and a BCH scheduler coupled to the LDPC decoder and the BCH decoder. The LDPC codeword may be generated by LDPC encoding a Bose-Chaudhuri-Hocquenghem (BCH) codeword and the BCH codeword may be generated by BCH encoding a data unit. The BCH scheduler may be configured to determine whether a triggering condition for the BCH decoder is met after each iteration of the iterative LDPC decoding process and activate the BCH decoder to operate on an intermediate decoding result of the LDPC decoder if the triggering condition for the BCH decoder is met.
1 . A method, comprising:
reading bits of a Low-Density Parity-Check (LDPC) codeword from a non-volatile storage device, the LDPC codeword being generated by LDPC encoding a Bose-Chaudhuri-Hocquenghem (BCH) codeword, the BCH codeword being generated by BCH encoding a data unit;
feeding the bits of the LDPC codeword read from the non-volatile storage device to an LDPC decoder; and
performing an iterative concatenated decoding process on the LDPC codeword in an iterative LDPC decoding process;
wherein performing the iterative concatenated decoding process comprises performing a first iteration comprising:
performing a first LDPC decoding iteration of the iterative LDPC decoding process on the LDPC codeword to generate a first intermediate LDPC decoding result;
determining a first LDPC syndrome of the first intermediate LDPC decoding result has not reached zero;
determining whether a triggering condition for BCH decoding is met using a BCH scheduler, wherein the triggering condition for BCH decoding is based on status information of the iterative LDPC decoding process;
in response to the triggering condition for BCH decoding being met, performing a BCH decoding process on the first intermediate LDPC decoding result;
in response to the triggering condition for BCH decoding not being met, performing a second iteration in the iterative concatenated decoding process;
wherein the second iteration starts with performing a second LDPC decoding iteration of the iterative LDPC decoding process on the LDPC codeword to generate a second intermediate LDPC decoding result;
wherein the second iteration continues by:
determining a second LDPC syndrome of the second intermediate LDPC decoding result has not reached zero;
determining whether the triggering condition for BCH decoding is met using the BCH scheduler;
in response to the triggering condition for BCH decoding being met, performing the BCH decoding process on the second intermediate LDPC decoding result;
in response to the triggering condition for BCH decoding not being met, performing a third iteration in the iterative concatenated decoding process;
wherein the third iteration starts with performing a third LDPC decoding iteration of the iterative LDPC decoding process on the LDPC codeword to generate a third intermediate LDPC decoding result.
2 . The method of claim 1 , further comprising:
in response to the triggering condition for BCH decoding being met, determining whether the BCH decoding process successfully decodes the BCH codeword;
in response to the BCH decoding process not successfully decoding the BCH codeword, performing the second iteration.
3 . The method of claim 1 , wherein the triggering condition for BCH decoding is that a number of flipped bits in the LDPC decoding iteration is zero and the LDPC syndrome is larger than zero.
4 . The method of claim 1 , wherein the triggering condition for BCH decoding is that the LDPC syndrome is smaller than a predefined threshold.
5 . The method of claim 1 , wherein the triggering condition for BCH decoding is that a number of flipped bits in the LDPC decoding iteration and a number of flipped bits in a previous LDPC decoding iteration are both smaller than a threshold.
6 . The method of claim 1 , wherein the triggering condition for BCH decoding is that a current iteration number has reached a predefined threshold.
7 . The method of claim 1 , wherein inputs to the BCH scheduler include one or more of: an LDPC iteration number, an LDPC column index, an LDPC layer index, the LDPC syndrome, a number of flipped bits in the LDPC decoding iteration, and a number of flipped bits in a previous LDPC decoding iteration.
8 . The method of claim 1 , wherein the iterative LDPC decoding process is a hard decision decoding process or a soft decision decoding process.