IP Library › Granted Patent US 11,368,168
Granted Patent B2
US 11,368,168 · App. 17/084,564 · Granted Jun 21, 2022

Low density parity check decoder

Inventors: Kiran Kumar Gunnam (San Jose, CA); Gwan S. Choi (College Station, TX)
Assignee: The Texas A&M University System
H03M13/1128H03M13/1105H03M13/116H03M13/1177H03M13/13H03M13/616
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,368,168
App. No.
17/084,564
Granted
Jun 21, 2022
Kind
B2
Abstract

A method and system for decoding low density parity check (“LDPC”) codes. An LDPC code decoder includes LDPC decoding circuitry comprising a Q message generator and a P sum adder array. The Q message generator combines an R message from a previous iteration with a P message to produce a Q message. The P sum adder array adds the P message to a difference of an R message from a current iteration and the R message from the previous iteration to produce an updated P message.

Claims (58)

1. A method for decoding a low density parity check (LDPC) code, comprising:

combining a first R message with a P message to produce a Q message;

producing a corrected Q message using the Q message and a correction factor;

providing the corrected Q message to a check node unit of the decoder; and

permuting the P message by a difference of permutation of a block currently being processed and permutation of a block previously processed; wherein the block currently being processed and the block previously processed are in a same block column of an LDPC matrix.

2. The method of claim 1 , wherein the Q message is a Q message of a circulant; and further comprising determining the correction factor for the Q message of the circulant based on a check node degree of a layer to which the circulant belongs.

3. The method of claim 1 , wherein the Q message is a Q message of a circulant; and further comprising determining the correction factor for the Q message of the circulant based on a variable node degree of a block column to which the circulant belongs.

4. The method of claim 1 , wherein the Q message is a Q message of a circulant; and further comprising determining the correction factor for the Q message of the circulant based on a variable node degree of a block column to which the circulant belongs and a check node degree of a layer to which the circulant belongs.

5. The method of claim 1 , further comprising storing the Q message in a first memory until a second R message is generated.

6. The method of claim 1 , further comprising:

storing a channel log-likelihood ratio (LLR) value in a first memory to initialize decoding; and

storing the Q message in the first memory after using initialized values for the decoding.

7. The method of claim 1 further comprising:

further storing in a second memory at least two values computed in processing of a check node in addition to a message index for the check node, and

wherein the first R message is computed based on a selected value, wherein the selected value is one of the two values read from the second memory and the selection is based on the message index read from the second memory.

8. The method of claim 1 , further comprising:

further storing in a second memory at least two values computed in processing of a check node in addition to a message index for the check node, and

wherein a second R message is computed based on a selected value, wherein the selected value is one of the two values read from the second memory and the selection is based on the message index read from the second memory.

9. The method of claim 1 , further comprising adding the Q message to a second R message to produce an updated P message.

10. The method of claim 1 , further comprising buffering hard decisions of decoded codewords in one order and providing the hard decisions to an output interface in another order.

11. The method of claim 1 , further comprising:

storing a channel log-likelihood ratio (LLR) value from an inter-symbol interference detector in a first memory to initialize decoding,

and storing the Q message in the first memory after using initialized values for the decoding.

12. The method of claim 1 , further comprising:

determining a maximum number of LDPC decoder iterations for each received codeword based on a number of failing LDPC check node constraints in the received codeword.

13. The method of claim 1 , further comprising using a flag for each non-zero circulant in the LDPC matrix to dictate initialization of a decoding process.

14. A method for decoding a low density parity check (LDPC) code, comprising:

processing blocks of an LDPC matrix in a sequence defined by an order of non-zero blocks of a given layer of the LDPC matrix;

wherein the LDPC matrix comprises a plurality of layers, each layer having a plurality of blocks ordered such that the sequence of non-zero blocks of the given layer of the LDPC matrix specifies a first set of non-zero blocks of the given layer to be processed at a given time and a second set of non-zero blocks of the given layer to be processed after the first set of non-zero blocks;

wherein the first set specifies only non-zero blocks of the given layer that are not dependent on a result of a previously processed layer and the second set specifies non-zero blocks of the given layer that are dependent on a result of the previously processed layer.

15. The method of claim 14 , further comprising:

processing each block of the matrix in processing substeps comprising:

producing a first R message for a block of a different layer of the matrix from a layer containing a block currently being processed; and

producing a second R message for the block currently being processed.

16. The method of claim 14 , further comprising generating a P message by combining a first R message with a Q message read from a first memory.

17. The method of claim 14 , further comprising permuting a P message, wherein permuting a P message comprises permuting the P message by a difference of permutation of a second block currently being processed and permutation of a block previously processed; wherein the second block currently being processed and the block previously processed are in a same block column of the LDPC matrix.

18. The method of claim 14 , further comprising subtracting a second R message from a permuted P message to generate a Q message.

19. The method of claim 14 , further comprising:

storing a channel log-likelihood ratio (LLR) value in a first memory to initialize decoding,

and storing a Q message in the first memory after using initialized values for the decoding.

20. The method of claim 14 , further comprising:

further storing in a second memory at least two values computed in processing of a check node in addition to a message index for the check node, and

wherein a first R message is computed based on a selected value, wherein the selected value is one of the two values read from the second memory and the selection is based on the message index read from the second memory.

21. The method of claim 14 , further comprising:

further storing in a second memory at least two values computed in processing of a check node in addition to a message index for the check node, and

wherein a second R message is computed based on a selected value, wherein the selected value is one of the two values read from the second memory and the selection is based on the message index read from the second memory.

22. The method of claim 14 , further comprising buffering hard decisions of decoded codewords in one order and providing the hard decision to an output interface in another order.

23. The method of claim 14 , further comprising:

storing a channel log-likelihood ratio (LLR) value from an inter-symbol interference detector in a first memory to initialize decoding,

and storing a Q message in the first memory after using initialized values for the decoding.

24. The method of claim 14 , further comprising:

determining a maximum number of LDPC decoder iterations for each received codeword based on a number of failing LDPC check node constraints in the received codeword.

25. The method of claim 14 , further producing a corrected Q message using a Q message and a correction factor,

and providing the corrected Q message to a check node unit of the decoder.

26. The method of claim 25 , wherein the Q message is a Q message of a circulant; and further comprising determining the correction factor for the Q message of the circulant based on a check node degree of a layer to which the circulant belongs.

27. The method of claim 25 , wherein the Q message is a Q message of a circulant; and further comprising determining the correction factor for the Q message of the circulant based on a variable node degree of a block column to which the circulant belongs.

28. The method of claim 25 , wherein the Q message is a Q message of a circulant; and further comprising determining the correction factor for the Q message of the circulant based on a variable node degree of a block column to which the circulant belongs and a check node degree of a layer to which the circulant belongs.

29. The method of claim 14 , further comprising using a flag for each non-zero circulant in the LDPC matrix to dictate initialization of a decoding process.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2020
From: GUNNAM, KIRAN K.; CHOI, GWAN S.
To: THE TEXAS A&M UNIVERSITY SYSTEM
Reel/Frame 054228/0428 →
Continuity (8)
Continuation 15373822 · Dec 9, 2016
Continuation 14792982 · Jul 7, 2015
Continuation 14141508 · Dec 27, 2013
Continuation 13693650 · Dec 4, 2012
Continuation 12113729 · May 1, 2008
Provisional Application 60988680 · Nov 16, 2007
Provisional Application 60915320 · May 1, 2007
Related Publication 20210067175A1 · Mar 4, 2021
Cited By (1)
US 12,652,062