IP Library Granted Patent US 10,298,261
Granted Patent B2
US 10,298,261 · App. 15/132,143 · Granted May 21, 2019

Reduced complexity non-binary LDPC decoding algorithm

Inventors: Majid Nemati Anaraki (San Diego, CA); Xinde Hu (San Jose, CA); Richard David Barndt (San Diego, CA)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
H03M13/1105H03M13/05H03M13/114H03M13/1111H03M13/1122H03M13/1128H03M13/1171H03M13/458H03M13/615H03M13/6505H03M13/1162H03M13/255
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 10,298,261
App. No.
15/132,143
Granted
May 21, 2019
Kind
B2
Abstract

Decoding logic is provided that is operational upon a data buffer to represent a plurality of variable nodes and a plurality of check nodes. For a respective one of the variable nodes, a vector component is selected from a confidence vector associated with the variable node. Using a respective one of the check nodes, a check node return value is calculated based on one or more other vector components from one or more other vectors and one or more vector indices corresponding to the one or more other vector components. The confidence vector is then updated based on the check node return value and an index for the check node return value, and a current state of a memory cell associated with the respective one of the variable nodes is determined based on a location of a primary one of multiple vector components within the updated confidence vector.

Claims (46)

1. A system, comprising:

a data buffer;

a decoder comprising decoding logic operational upon the data buffer to represent a plurality of variable nodes and a plurality of check nodes, the variable nodes being associated with a plurality of respective confidence vectors, the decoder configured to:

provide, to respective check nodes according to a code graph, respective vector components of a first confidence vector of the plurality of confidence vectors;

update the respective vector components based on respective return values provided by the respective check nodes according to the code graph, each of the respective return values being based on at least one vector component other than a vector component updated by the respective return value;

determine a primary index of the first confidence vector based on respective values of the updated vector components;

perform the provide, update, and determine steps for the plurality of confidence vectors; and

determine at least a portion of a valid codeword based on determined indices of the plurality of confidence vectors.

2. The system of claim 1 , wherein the provide, update, and determine steps are performed until the decoder determines the valid codeword, wherein at least one of the respective values of the updated vector components converge to a predetermined limit in connection with the valid codeword being determined.

3. The system of claim 2 , wherein the valid codeword comprises multiple symbols or values, one or more of the respective symbols or values being changed from an initial state to a valid state based on a primary index of a corresponding confidence vector being changed as a result of performing the provide, update, and determine steps for the corresponding confidence vector.

4. The system of claim 3 , wherein the primary index of the first confidence vector is the index of the component having the largest value in the first confidence vector, the decoder further configured to:

determine a confidence value for the one or more of the respective symbols or values based on vector components other than the component having the largest value or based on a difference between the component having the largest value and a component having a second largest value in the first confidence vector.

5. The system of claim 3 , wherein each check node obtains a vector index for each vector component associated with the check node, and for each return value generates a return index based on the obtained vector indices, and returns the return index according to the code graph, wherein only one vector component and one index is saved in memory for each edge of the code graph.

6. The system of claim 5 , wherein each return index is generated by summing the obtained vector indices using Galois field addition with a number of elements equal to the number of, or one less than the number of, vector components in each of the plurality of confidence vectors.

7. The system of claim 1 , wherein, for each check node, calculating each return value by summing the vector components associated with the check node according to the code graph.

8. The system of claim 1 , wherein, for each check node, calculating each return value comprises selecting as the return value a largest one or smallest one of the vector components associated with the check node according to the code graph.

9. The system of claim 1 , wherein the decoder is further configured to:

reduce each vector component of the confidence vector by an amount sufficient to zero a vector component value at a predetermined index of the confidence vector.

10. The system of claim 1 , wherein the decoder is further configured to:

for each check node, calculate a first lowest value and a second lowest value of all vector components associated with the check node, wherein the first lowest value is selected as a return value for all but one of the variable nodes that provided a vector component to the check node, and the second lowest value is selected as a return value for the one of the variable nodes.

11. The system of claim 1 , wherein, for each check node, the respective return value represents a difference between the largest of vector components obtained by the check node and a vector component associated with a variable node designated to receive the respective return value.

12. The system of claim 1 , wherein the decoder is further configured to, for each check node:

determine a first return term equal to a first lowest value or a second lowest value of all vector components associated with the check node;

determine a second return term based on a difference between the largest of the associated vector components and a vector component associated with a variable node designated to receive the return value,

wherein the respective return value of the check node is based on a function of the first return term and the second return term.

13. The system of claim 1 , wherein the decoder is further configured to:

provide a selected vector component of the first confidence vector, and an index of the selected vector component as input to a portion of the decoder logic representative of a corresponding one of the plurality of check nodes,

wherein a return index is generated for the corresponding check node based on one or more indices of one or more vector components other than the selected vector component, and wherein the respective vector components of the first confidence vector are updated based on the return index and a return value from the corresponding check node.

14. A method, comprising:

providing decoding logic operational upon a data buffer to represent a plurality of variable nodes and a plurality of check nodes, the variable nodes being associated with a plurality of respective confidence vectors;

providing, to respective check nodes according to a code graph, respective vector components of a first confidence vector of the plurality of confidence vectors;

updating the respective vector components based on respective return values provided by the respective check nodes according to the code graph, each of the respective return values being based on at least one vector component other than a vector component updated by the respective return value;

determining a primary index of the first confidence vector based on respective values of the updated vector components;

performing the provide, update, and determine steps for the plurality of confidence vectors; and

determining at least a portion of a valid codeword based on determined indices of the plurality of confidence vectors.

15. The method of claim 14 , wherein the providing, updating, and determining are performed until the decoder determines the valid codeword, wherein at least one of the respective values of the updated vector components converge to a predetermined limit in connection with the valid codeword being determined.

16. The method of claim 15 , wherein the valid codeword comprises multiple symbols or values, one or more of the respective symbols or values being changed from an initial state to a valid state based on a primary index of a corresponding confidence vector being changed as a result of performing the providing, updating, and determining for the corresponding confidence vector.

17. The method of claim 16 , wherein the primary index of the first confidence vector is the index of the component having the largest value in the first confidence vector, the method further comprising:

determining a confidence value for the one or more of the respective symbols or values based on vector components other than the component having the largest value or based on a difference between the component having the largest value and a component having a second largest value in the first confidence vector.

18. The method of claim 14 , further comprising:

for each check node, calculating a first lowest value and a second lowest value of all vector components associated with the check node, wherein the first lowest value is selected as a return value for all but one of the variable nodes that provided a vector component to the check node, and the second lowest value is selected as a return value for the one of the variable nodes.

19. The method of claim 14 , wherein, for each check node, the respective return value represents a difference between the largest of vector components obtained by the check node and a vector component associated with a variable node designated to receive the respective return value.

20. The method of claim 14 , further comprising, for each check node:

determining a first return term equal to a first lowest value or a second lowest value of all vector components associated with the check node;

determining a second return term based on a difference between the largest of the associated vector components and a vector component associated with a variable node designated to receive the return value,

wherein the respective return value of the check node is based on a function of the first return term and the second return term.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2018
From: HGST TECHNOLOGIES SANTA ANA, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046174/0446 →
CHANGE OF NAME Recorded Aug 23, 2016
From: STEC, INC.
To: HGST TECHNOLOGIES SANTA ANA, INC.
Reel/Frame 039785/0306 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2016
From: NEMATI ANARAKI, MAJID; HU, XINDE; BARNDT, RICHARD D.
To: STEC, INC.
Reel/Frame 039491/0302 →
Continuity (4)
Continuation 14607039 · Jan 27, 2015
Continuation 13764649 · Feb 11, 2013
Provisional Application 61597690 · Feb 10, 2012
Related Publication 20160233894A1 · Aug 11, 2016