US8555140B2  Low density parity check decoder for irregular LDPC codes  Google Patents
Low density parity check decoder for irregular LDPC codes Download PDFInfo
 Publication number
 US8555140B2 US8555140B2 US13/759,225 US201313759225A US8555140B2 US 8555140 B2 US8555140 B2 US 8555140B2 US 201313759225 A US201313759225 A US 201313759225A US 8555140 B2 US8555140 B2 US 8555140B2
 Authority
 US
 United States
 Prior art keywords
 message
 block
 matrix
 decoder
 processing
 Prior art date
 Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
 Active
Links
Images
Classifications

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
 H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
 H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
 H03M13/1102—Codes on graphs and decoding on graphs, e.g. lowdensity parity check [LDPC] codes
 H03M13/1105—Decoding
 H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
 H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
 H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
 H03M13/1102—Codes on graphs and decoding on graphs, e.g. lowdensity parity check [LDPC] codes
 H03M13/1105—Decoding

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
 H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
 H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
 H03M13/1102—Codes on graphs and decoding on graphs, e.g. lowdensity parity check [LDPC] codes
 H03M13/1148—Structural properties of the code paritycheck or generator matrix
 H03M13/116—Quasicyclic LDPC [QCLDPC] codes, i.e. the paritycheck matrix being composed of permutation or circulant submatrices

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
 H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
 H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
 H03M13/1102—Codes on graphs and decoding on graphs, e.g. lowdensity parity check [LDPC] codes
 H03M13/1148—Structural properties of the code paritycheck or generator matrix
 H03M13/1177—Regular LDPC codes with paritycheck matrices wherein all rows and columns have the same row weight and column weight, respectively

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
 H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
 H03M13/13—Linear codes

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
 H03M13/615—Use of computational or mathematical techniques
 H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
Abstract
Description
This application is a continuation under 35 U.S.C. §120 of pending U.S. patent application Ser. No. 12/113,755, filed May 8, 2008, titled “Low Density Parity Check Decoder for Irregular LDPC Codes,” which claims priority from U.S. provisional patent application Ser. No. 60/915,320 filed May 1, 2007 and U.S. provisional patent application Ser. No. 60/988,680 filed Nov. 16, 2007. The disclosures of said applications are hereby incorporated herein by reference in their entireties.
Error correcting codes are used to automatically detect and correct errors in a received data signal. Generally, a data signal transmitter applies a selected encoding algorithm to a transmitted data signal. A receiver applies an appropriate decoder to determine whether the received signal was corrupted after transmission and to correct any errors detected. Low density parity check (“LDPC”) codes are one of a variety of error correcting codes.
LDPC decoders operate near the Shannon limit. When compared to the decoding of turbo codes, low density parity check decoders require simpler computational processing, and they are more suitable for parallelization and low complexity implementation. Low density parity check decoders are applicable for error correction coding in a variety of next generation communication and data storage systems.
LDPC decoders require simpler computational processing than other error coding schemes. While some parallel low density parity check decoder designs for randomly constructed low density parity check codes suffer from complex interconnect issues, various semiparallel and parallel implementations, based on structured low density parity check codes, alleviate the interconnect complexity.
Because of their superior performance and suitability for hardware implementation, LDPC codes are considered to be a promising alternative to other coding schemes in telecommunication, magnetic storage, and other applications requiring forward error correction.
A variety of novel techniques for decoding low density parity check (“LDPC”) codes are herein disclosed. The techniques disclosed present a number of advantages over known decoders, for example, embodiments allow for a reduction both in message storage memory and improved throughput. In accordance with at least some embodiments, a low density parity check code decoder comprises a control unit that controls decoder processing, the control unit causing the decoder to process the blocks of a low density parity check (“LDPC”) matrix out of order.
In other embodiments, a method for decoding a low density parity check code comprises processing the blocks of a low density parity check (“LDPC”) matrix out of order and providing a result of the processing to a user.
In other embodiments, a method for determining a processing sequence for a low density parity check (“LDPC”) code comprises extracting parameters from an LDPC code matrix. A processing sequence of the blocks of the matrix is determined based, at least in part, on the parameters extracted from the matrix. The determined processing sequence causes a decoder to process the blocks out of order.
In other embodiments, a computer program product comprises a computer useable medium having computer readable program code embodied therein. The computer readable program code comprises instructions that extract parameters from a low density parity check (“LDPC”) matrix, and instructions that determine a processing sequence for decoding LDPC matrix based at least in part on the parameters extracted from the matrix. The determined processing sequence causes a decoder to process the blocks out of order.
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, entities may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” and “e.g.” are used in an openended fashion, and thus should be interpreted to mean “including, but not limited to . . . ”. The term “couple” or “couples” is intended to mean either an indirect or direct connection. Thus, if a first component couples to a second component, that connection may be through a direct connection, or through an indirect connection via other components and connections. The term “system” refers to a collection of two or more hardware and/or software components, and may be used to refer to an electronic device or devices, or a subsystem thereof. Further, the term “software” includes any executable code capable of running on a processor, regardless of the media used to store the software. Thus, code stored in nonvolatile memory, and sometimes referred to as “embedded firmware,” is included within the definition of software.
In the following detailed description, reference will be made to the accompanying drawings, in which:
The drawings show illustrative embodiments that will be described in detail. However, the description and accompanying drawings are not intended to limit the claimed invention to the illustrative embodiments, but to the contrary, the intention is to disclose and protect all modifications, equivalents, and alternatives falling within the spirit and scope of the appended claims.
I/O port 106 is adapted to detect the signal 116 from transmitter 106 as received via the selected transmission medium. I/O port 116 may include any suitable protocol for receiving encoded signal 116 from transmitter 102. For example, I/O port 106 may incorporate an Ethernet protocol for network based communications or incorporate a wireless protocol, such as IEEE 802.11 or IEEE 802.16. The encoded signal 116 detected by the I/O port 106 is provided to the LDPC decoder 110. The LDPC decoder 110 decodes the encoded signal 116 to extract the signal encoded by the transmitter 102. The LDPC decoder 110 detects and corrects errors introduced into the signal 116 as the signal 116 traversed the channel 118. The LDPC decoder 110 preferably includes onthefly computation of LDPC codes as disclosed herein to optimize decoding performance, hardware resource utilization and power consumption.
Processor 112 may be any suitable computer processor for executing code stored in memory 114. Processor 16 controls operations of I/O port 12 by inputting data in the form of coded messages from remote computing system 20. Memory 14 may be any suitable type of storage for computer related data and/or programming which may be, for example, volatile memory elements, such as random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), or FLASH memory.
Some embodiments of receiver 104 comprise a hardware implementation of the LDPC decoder 110. For example the LDPC decoder 110 may be implemented in an application specific integrated circuit (“ASIC”) or a field programmable gate array (“FPGA”). Some embodiments of receiver 104 may provide the LDPC decoder 110 as software programming executed by processor 112. Some embodiments of receiver 104 may implement the LDPC decoder 110 as a combination of software programming executed by processor 112 and other electronic circuits.
While elements of system 100 are described in terms of data transmission and reception, system 100 is also applicable to other systems. For example, various embodiments may be applied to data storage systems where LDPC encoded data is stored on a storage medium (e.g., a magnetic disk). Thus, in such embodiments, the storage medium is represented by channel 118. Transmitter 102 provides media write systems, and receiver 104 provides media read systems.
LDPC codes are linear block codes described by an m×n sparse parity check matrix H. LDPC codes are well represented by bipartite graphs. One set of nodes, the variable or bit nodes correspond to elements of the code word and the other set of nodes, viz. check nodes, correspond to the set of parity check constraints satisfied by the code words. Typically the edge connections are chosen at random. The error correction capability of an LDPC code is improved if cycles of short length are avoided in the graph. In an (r,c) regular code, each of the n bit nodes (b_{1}, b_{2}, . . . , b_{n}) has connections to r check nodes and each of the m check nodes (c_{1}, c_{2}, . . . , c_{m}) has connections to c bit nodes. In an irregular LDPC code, the check node degree is not uniform. Similarly the variable node degree is not uniform. The present disclosure focuses on the construction which structures the parity check matrix H into blocks of p×p matrices such that: (1) a bit in a block participates in only one check equation in the block, and (2) each check equation in the block involves only one bit from the block. These LDPC codes are termed Quasicyclic (“QC”) LDPC codes because a cyclic shift of a code word by p results in another code word. Here p is the size of square matrix which is either a zero matrix or a circulant matrix. This is a generalization of a cyclic code in which a cyclic shift of a code word by 1 results in another code word. The block of p×p matrix can be a zero matrix or cyclically shifted identity matrix of size p×p. The Block LDPC codes having these blocks are referred as QCLDPC codes. The block of p×p matrix can be a random permutation as in IEEE 802.3 Reed Solomon based LDPC codes. The present disclosure gives examples for QCLDPC codes and it is straight forward for one skilled in the art to use the same embodiments for other Block LDPC codes with appropriate modification. To enable such modification, embodiments apply a permuter rather than a cyclic shifter.
An array low density parity check paritycheck matrix for a regular quasicyclic LDPC code is specified by three parameters: a prime number p and two integers k (checknode degree) and j (variablenode degree) such that j, k≦p. This is given by
where I is a p×p identity matrix, and α is a p×p permutation matrix representing a single right cyclic shift (or equivalently up cyclic shift) of I. The exponent of α in H is called the shift coefficient and denotes multiple cyclic shifts, with the number of shifts given by the value of the exponent.
Ratecompatible array LDPC codes (i.e., irregular quasicyclic array LDPC codes) are modified versions of the above for efficient encoding and multirate compatibility. The H matrix of a ratecompatible array LDPC code has the following structure:
where O is the p×p null matrix. The LDPC codes defined by H in equation (2) have codeword length N=kp, number of paritychecks M=jp, and an information block length K=(k−j) p. A family of ratecompatible codes is obtained by successively puncturing the left most p columns, and the topmost p rows. According to this construction, a ratecompatible code within a family can be uniquely specified by a single parameter, for example, q with 0<q≦j−2. To provide a wide range of ratecompatible codes, j and p may be fixed, and different values for the parameter k selected. Since all the codes share the same base matrix size p; the same hardware decoder implementation can be used. Note that this specific form is suitable for efficient lineartime LDPC encoding. The