IP Library Granted Patent US 11,843,393
Granted Patent B2
US 11,843,393 · App. 17/952,240 · Granted Dec 12, 2023

Method and apparatus for decoding with trapped-block management

Inventor: Peter John Waldemar Graumann (Calgary, CA)
Assignee: Microchip Technology Inc.
H03M13/1111H03M13/611
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,843,393
App. No.
17/952,240
Granted
Dec 12, 2023
Kind
B2
Abstract

A method and apparatus for decoding in which a first failed decode operation is performed on raw bit values of a FEC block by a LDPC decoder. When the FEC block is determined to be a trapped block an updated LLR map is generated; the updated LLR map and either the raw bit values of the FEC block or a failed-decode-output-block from a previous failed decode operation on the trapped block are provided to the LDPC decoder; a decode operation of the LDPC decoder is performed using the updated LLR map on the bit values of the FEC block or the failed-decode-output-block from the previous failed decode operation; and the generating, the providing and the performing are repeated until the decode operation is successful or until a predetermined number of trapped-block-decoding iterations have been performed. When the decode operation is successful in decoding the FEC block the codeword is output.

Claims (94)

1. A decode circuit comprising:

an input to receive raw bit values of a forward error correction (FEC) block;

a low-density parity check (LDPC) decoder coupled to the input, the LDPC controller to perform a failed decode operation on the raw bit values of the FEC block and output a syndrome of the failed decode operation and a failed-decode-output-block;

a trap detection comparator coupled to the LDPC decoder, the trap detection comparator to determine whether the FEC block is a trapped block by comparing the number of failing check nodes indicated by the syndrome to an error threshold, the FEC block determined to be a trapped block when the number of failing check nodes indicated by the syndrome is less than the error threshold; and

a trap controller coupled to the input, the trap detection comparator and the LDPC decoder, wherein when the FEC block is determined to be a trapped block the trap controller to perform trapped-block-decoding iterations using the LDPC decoder until the decoding operation is successful or until a predetermined number of trapped-block-decoding iterations have been performed, at each trapped-block-decoding iteration the trap controller to:

generate an updated log likelihood ratio (LLR) map,

provide to the LDPC decoder the updated LLR map and either the raw bit values of the FEC block or a failed-decode-output-block from a previous failed decode operation, and

send an indication to the LDPC decoder to perform a decode operation, and

the LDPC decoder, in response to the indication, to use the updated LLR map to perform a decode operation on the respective bits of the raw bit values of the FEC block or the failed-decode-output-block from the previous failed decode operation,

wherein when the FEC block is not determined to be a trapped block the decode circuit to output an error indication at an output of the decode circuit, and

when the decoding operation is successful so as to generate a codeword, the decode circuit to output the codeword.

2. The decode circuit of claim 1 further comprising a block buffer memory coupled to the input to store the received raw bit values of the FEC block, coupled to the LDPC decoder and coupled to the trap controller, and

wherein the either the raw bit values of the FEC block or a failed-decode-output-block from a previous failed decode operation are stored in the block buffer memory during a respective trapped-block-decoding iteration.

3. The decode circuit of claim 2 , wherein, in each trapped-block decoding iteration the trap controller is to

generate an updated LLR map,

store a failed-decode-output-block from a previous failed decode operation in the block buffer memory,

provide to the LDPC decoder the updated LLR map and the failed-decode-output-block from the previous failed decode operation,

send an indication to the LDPC controller to perform a decode operation, and

in response to each subsequent indication, the LDPC decoder to use the updated LLR map to perform a decode operation on the failed-decode-output-block from the previous failed decode operation.

4. The decode circuit of claim 2 , wherein trap controller is to use weak bit values corresponding to each bit in the FEC block and stochastic probability values corresponding to each bit in the FEC block to generate the updated LLR map.

5. The decode circuit of claim 4 ,

wherein the weak bit values comprise a weak LLR value and a weak LLR delta value, and

wherein the trap controller is to use a sturdy LLR value, the weak LLR value, a sturdy LLR delta value and the weak LLR delta value and the stochastic probability values to generate the updated LLR map.

6. A memory controller comprising:

a decode circuit including:

an input to receive raw bit values of a forward error correction (FEC) block;

a block buffer memory coupled to the input to store the received raw bit values of the FEC block;

a low-density parity check (LDPC) decoder coupled to the block buffer memory, the LDPC controller to perform a failed decode operation on the raw bit values of the FEC block and output a syndrome of the failed decode operation and a failed-decode-output-block;

a trap detection comparator coupled to the LDPC decoder, the trap detection comparator to determine whether the FEC block is a trapped block by comparing the number of failing check nodes indicated by the syndrome to an error threshold, the FEC block determined to be a trapped block when the number of failing check nodes indicated by the syndrome is less than the error threshold; and

a trap controller coupled to the block buffer memory, the trap detection comparator and the LDPC decoder, wherein when the FEC block is determined to be a trapped block the trap controller to perform trapped-block-decoding iterations using the LDPC decoder until the decode operation is successful or until a predetermined number of trapped-block-decoding iterations have been performed, at each trapped-block-decoding iteration the trap controller to:

generate an updated log likelihood ratio (LLR) map,

provide to the LDPC decoder the updated LLR map and either the raw bit values of the FEC block or a failed-decode-output-block from a previous failed decode operation, and

send an indication to the LDPC decoder to perform a decode operation,

in response to the indication, the LDPC decoder to use the updated LLR map to perform a decode operation on the respective bits of the raw bit values of the FEC block or the failed-decode-output-block from the previous failed decode operation,

when the FEC block is not determined to be a trapped block the memory controller to output an error message, and

when the decoding operation is successful so as to generate a codeword, the memory controller to output the codeword.

7. The memory controller of claim 6 , wherein the first failed decode operation is a decode operation in which an initial LLR map is used to perform the first failed decode operation, and wherein, in each trapped-block decoding iteration the trap controller is to

generate an updated LLR map,

store a failed-decode-output-block from a previous failed decode operation in the block buffer memory,

provide to the LDPC decoder the updated LLR map and the failed-decode-output-block from the previous failed decode operation,

send an indication to the LDPC controller to perform a decode operation, and

in response to the indication, the LDPC decoder to use the updated LLR map to perform a decode operation on the failed-decode-output-block from the previous failed decode operation.

8. The memory controller of claim 6 , wherein the trap controller is to use weak bit values corresponding to each bit in the FEC block and stochastic probability values corresponding to each bit in the FEC block to generate the updated LLR map.

9. The memory controller of claim 8 wherein the trap controller is to apply a percentage variation to individual ones of the raw bit values of the FEC block to generate the stochastic probability values.

10. The memory controller of claim 9 ,

wherein the weak bit values comprise a weak LLR value and a weak LLR delta value, and

wherein the trap controller is to use a sturdy LLR value, the weak LLR value, a sturdy LLR delta value and the weak LLR delta value and the stochastic probability values to generate the updated LLR map.

11. The memory controller of claim 6 comprising an input:

to receive input indicating a percentage variation, wherein the trap controller is to apply the percentage variation to individual ones of the raw bit values of the FEC block to determine the stochastic probability values, wherein the trap controller is to generate a stochastic probability value corresponding to each bit in the FEC block,

to receive input indicating a sturdy LLR value, a weak LLR value, a sturdy LLR delta value and a weak LLR delta value, and

wherein the trap controller is to use the generated stochastic probability values, the sturdy LLR value, the weak LLR value, the sturdy LLR delta value and the weak LLR delta value to generate the updated LLR map.

12. A solid state drive (SSD) comprising:

a plurality of memory devices;

a memory controller coupled to the plurality of memory devices, the memory controller including a decode circuit, the decode circuit comprising:

an input to receive raw bit values of a forward error correction (FEC) block from a read of one or more of the plurality of memory devices;

a block buffer memory coupled to the input to store the received raw bit values of the FEC block;

a low-density parity check (LDPC) decoder coupled to the block buffer memory, the LDPC controller to perform a failed decode operation on the raw bit values of the FEC block and output a syndrome of the failed decode operation and a failed-decode-output-block;

a trap detection comparator coupled to the LDPC decoder, the trap detection comparator to determine whether the FEC block is a trapped block by comparing the number of failing check nodes indicated by the syndrome to an error threshold, the FEC block determined to be a trapped block when the number of failing check nodes indicated by the syndrome is less than the error threshold; and

a trap controller coupled to the block buffer memory, the trap detection comparator and the LDPC decoder, when the FEC block is determined to be a trapped block the trap controller to perform trapped-block-decoding iterations using the LDPC decoder until the decode operation is successful or until a predetermined number of trapped-block-decoding iterations have been performed, at each trapped-block-decoding iteration the trap controller to:

generate an updated log likelihood ratio (LLR) map,

provide to the LDPC decoder the updated LLR map and either the raw bit values of the FEC block or a failed-decode-output-block from a previous failed decode operation, and

send an indication to the LDPC decoder to perform a decode operation,

in response to the indication, the LDPC decoder to use the updated LLR map to perform a decoding operation on the respective bits of the raw bit values of the FEC block or the failed-decode-output-block from the previous failed decode operation, and

when the FEC block is not determined to be a trapped block the memory controller to output an error message, and

when the decoding operation is successful so as to generate a codeword, the memory controller to output the codeword.

13. The SSD of claim 12 , wherein the first failed decode operation is a decode operation in which an initial LLR map is used to perform the first failed decode operation, and

wherein at each trapped-block-decoding iteration the trap controller is to:

generate the updated LLR map,

store a failed-decode-output-block from a previous failed decode operation in the block buffer memory,

provide to the LDPC decoder the updated LLR map and the failed-decode-output-block from the previous failed decode operation,

send an indication to the LDPC controller to perform a decode operation, and

in response to each indication, the LDPC decoder to use the updated LLR map to perform a decode operation on the failed-decode-output-block from the previous failed decode operation.

14. A method for decoding comprising:

performing a first failed decode operation on raw bit values of a forward error correction (FEC) block by a low-density parity check (LDPC) decoder that outputs a syndrome of the failed decode operation and a failed-decode-output-block;

determining whether the FEC block is a trapped block by comparing the number of failing check nodes indicated by the syndrome to an error threshold, the FEC block determined to be a trapped block when the number of failing check nodes indicated by the syndrome is less than the error threshold;

when the FEC block is not determined to be a trapped block outputting an error indication;

when the FEC block is determined to be a trapped block:

generating an updated log likelihood ratio (LLR) map;

providing to the LDPC decoder the updated LLR map and either the raw bit values of the FEC block or a failed-decode-output-block from a previous failed decode operation on the trapped block;

performing a decode operation of the LDPC decoder using the updated LLR map on the bit values of the FEC block or the failed-decode-output-block from the previous failed decode operation on the trapped block; and

repeating the generating, the providing and the performing until the decode operation is successful or until a predetermined number of trapped-block-decoding iterations have been performed; and

when the decode operation is successful in decoding the FEC block outputting the codeword; and

when the decode operation is not successful in decoding the FEC block and the predetermined number of trapped-block-decoding iterations have been performed, outputting an error indication.

15. The method of claim 14 wherein the performing trapped-block-decoding iterations comprises:

generating an updated LLR map;

providing to the LDPC decoder the failed-decode-output-block from the previous failed decode operation on the trapped block and the updated LLR map; and

performing a decode operation on the failed-decode-output-block from the previous failed decode operation on the trapped block using the updated LLR map.

16. The method of claim 14 further comprising storing the raw bit values of the FEC block or storing the failed-decode-output block from a previous failed decode operation on the trapped block.

17. The method of claim 14 wherein the updated LLR map is generated using the stored raw bit values of the FEC block, stochastic probability values corresponding to each bit in the FEC block and weak bit values corresponding to each bit in the FEC block.

18. The method of claim 17 comprising receiving input indicating a percentage variation, wherein the stochastic probability values are generated by applying the percentage variation to individual ones of the raw bit values of the FEC block.

19. The method of claim 14 comprising:

receiving input indicating a sturdy LLR value, a weak LLR value, a sturdy LLR delta value and a weak LLR delta value,

wherein each LLR value in the updated LLR map that corresponds to a weak column of the H-matrix has an LLR value that is equal to the weak LLR value, and

wherein each LLR value in the updated LLR map that corresponds to a column of the H-matrix that is not a weak column has a LLR value that is equal to the sturdy LLR value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2022
From: GRAUMANN, PETER JOHN WALDEMAR
To: MICROCHIP TECHNOLOGY INC.
Reel/Frame 061219/0600 →
Continuity (2)
Provisional Application 63249556 · Sep 28, 2021
Related Publication 20230094363A1 · Mar 30, 2023