Multi-dimensional quasi-cyclic (QC) low-density parity-check (LDPC) code constructions
AssigneeWestern Digital Technologies, Inc.
InventorsRichard Leo Galbraith, Iouri Oboukhov, Niranjay Ravindran
Life of this patent
Estimating the term…
Abstract
The disclosure relates in some aspects to multi-dimensional quasi-cyclic (QC) low-density parity-check (LDPC) code generation. In one example, a controller of a data storage apparatus determines a plurality of dimensions for a code, the plurality of dimensions comprising a plurality of coprime numbers, generates distinct circulant rotation values based on at least a root of unity number and a prime number, assigns a different one of the distinct circulant rotation values to each of a plurality of circulant locations defined within the plurality of dimensions to generate the code, and encodes data using the code.
Claims22
A data storage apparatus, comprising:
- a non-volatile memory (NVM) array;
- and
- a processor coupled to the NVM array and configured to:
- determine a plurality of dimensions for a code to be generated by selecting a prime number corresponding to a square circulant matrix size and determining a plurality of coprime numbers based on a number that is at least one less than the selected prime number, the plurality of dimensions comprising the plurality of coprime numbers;
- generate distinct circulant rotation values based on at least a root of unity number and a prime number;
- assign a different one of the distinct circulant rotation values to each of a plurality of circulant locations defined within the plurality of dimensions to generate the code;
- receive data from a host device;
- encode the data using the code;
- store the encoded data in the NVM array for subsequent retrieval;
- and
- recover at least one unreadable portion of retrieved encoded data using the code.
A data storage apparatus, comprising:
- a non-volatile memory (NVM) array;
- a code dimension determiner circuit configured to determine a plurality of dimensions for a code to be generated by selecting a prime number corresponding to a square circulant matrix size and determining a plurality of coprime numbers based on a number that is at least one less than the selected prime number, the plurality of dimensions comprising the plurality of coprime numbers;
- a circulant rotation generator circuit configured to generate distinct circulant rotation values based on at least a root of unity number and a prime number;
- a circulant rotation assigner circuit configured to assign a different one of the distinct circulant rotation values to each of a plurality of circulant locations defined within the plurality of dimensions to generate the code;
- a host interface configured to receive data from a host device;
- a data encoding circuit configured to encode the data using the code;
- an NVM interface configured to store the encoded data in the NVM array for subsequent retrieval;
- and
- a controller configured to recover at least one unreadable portion of retrieved encoded data using the code.
A method, comprising:
- determining a plurality of dimensions for a code to be generated by selecting a prime number corresponding to a square circulant matrix size and determining a plurality of coprime numbers based on a number that is at least one less than the selected prime number, the plurality of dimensions comprising the plurality of coprime numbers;
- generating distinct circulant rotation values based on at least a root of unity number and a prime number;
- assigning a different one of the distinct circulant rotation values to each of a plurality of circulant locations defined within the plurality of dimensions to generate the code;
- receiving data from a host device;
- encoding the data using the code;
- storing the encoded data in a memory for subsequent retrieval;
- and
- recovering at least one unreadable portion of retrieved encoded data using the code.
A data storage apparatus, comprising:
- means for determining a plurality of dimensions for a code to be generated by selecting a prime number corresponding to a square circulant matrix size and determining a plurality of coprime numbers based on a number that is at least one less than the selected prime number, the plurality of dimensions comprising the plurality of coprime numbers;
- means for generating distinct circulant rotation values based on at least a root of unity number and a prime number;
- means for assigning a different one of the distinct circulant rotation values to each of a plurality of circulant locations defined within the plurality of dimensions to generate the code;
- means for receiving data from a host device;
- means for encoding the data using the code;
- means for storing the encoded data in a memory for subsequent retrieval;
- and
- means for recovering at least one unreadable portion of retrieved encoded data using the code.
Dependencies are inferred from the claim text.