1. Field of the Invention
The embodiments described herein are related to methods for Low-Density Parity-Check decoding and more particularly to methods for achieving efficient and cost-effective Low-Density Parity-Check decoders.
2. Background of the Invention
A Low-Density Parity-Check (LDPC) code is an error correcting code that provides a method for transferring a message over a noisy transmission channel. While LDPC techniques cannot guaranty perfect transmission, they can be used to make the probability of lost information very small. In fact, LDPC codes were the first to allow data transmission rates at close to the theoretical maximum, e.g., the Shannon Limit. LDPC techniques use a sparse parity-check matrix, e.g, a matrix populated mostly with zeros; hence the term low-density. The sparse matrix is randomly generated subject to defined sparsity constraint.
LDPC codes can be defined as both the matrix and in graphical form. A LDPC matrix will have a certain number of rows (N) and columns (M). The matrix can also be defined by the number of 1's in each row (wr) and the number of 1's in each column (wc). For a matrix to be considered low-density, the following conditions should be met: wc<<N and wr<<M. A LDPC matrix can also be regular or irregular. A regular LDPC matrix, or code is one in which wc is constant for every column and wr=wc*(N/M) is also constant for every row. If the matrix is low-density but the number of 1's in each row or column are not constant, then such codes are called irregular LDPC codes.
It will also be understood that an LDPC code can be graphically defined by its corresponding Tanner graph. Not only do such graphs provide a complete representation of the code, they also help to describe the decoding algorithm as explained in more detail below. The nodes of the graph are separated into two distinctive sets and edges are only connecting nodes of two different types. The two types of nodes in a Tanner graph are called the variable nodes (v-nodes) and check nodes (c-nodes). Thus, the Tanner graph will consist of M check nodes (the number of parity bits) and N variable nodes (the number of bits in a code word). A check node will then be connected to a variable node if there is a 1 in the corresponding element of the LDPC matrix.
The number of information bits can be represented as (K). Accordingly, the number of parity check bits M=N−K. A Generator Matrix (GN×K) can then be defined according to the following:
GN×K=cN×1/dK×1 or
cN×1=GN×K dK×1, where
dK×1=a message or date word, and
cN×1=a code word.
As can be seen, the code word cN×1 is generated by multiplying the message by the generator matrix. The subscripts are matrix rotation and refer to the number of rows and columns respectfully. Thus, the data word and code word can be represented as single column matrices with K and N rows respectfully.
The parity check Matrix can be defined as HM×NcN×1=0.
Accordingly,
In receive portion 110, demodulator 112 can be configure to remove the carrier from the received signal; however, channel 108 will add channel effects and noise, such the signal produced by demodulator 112 can have the form: rN×1=2/σ2(1−2 cN×1)+wN×1, where r is a multilevel signal. As a result of the noise and channel effects, some of data bits d will be lost in the transmission. In order to recover as much of the data as possible, decoder 114 can be configured to use the parity check matrix HM×N to produce an estimate d′K×1 of the data that is very close to the original data dK×1. It will be understood that decoder 114 can be a hard decision decoder or a soft decision decoder. Soft decision decoders are more accurate, but also typically require more resources.
Unfortunately, conventional LDPC decoding techniques result in a high complexity, fully parallel decoder implementations where all the messages to and from all the parity node processors have to be computed at every iteration in the decoding process. This leads to large complexity, increased research requirements, and increased cost. Serializing part of the decoder by sharing a number of parity node processors is one option for reducing some of the overhead involved; however, serializing part of the decoder would result in stringent memory requirements to store the messages in an interconnection complexity bottleneck, i.e., complex interconnects between variable node, processors and parity node processors. Accordingly, serializing part of the decoder is not solely to solve the problems above.
Further, if different data rates are to be supported then the decoder becomes even more complex in terms of memory size, memory architecture, and interconnect complexity. In general, another problem with conventional LDPC decoders is that the computation performed by the parity node processors are highly complex. Accordingly, this computations limit the speed of the decoder and increase its size and cost.
A LDPC decoder comprises a highly structured parity-check matrix that supports variable rates, while still maintaining limited complexity. The LDPC decoder implements resource sharing that reduces the number of parity node processors in a highly efficient manner. The LDPC encoder also comprises an efficient and small memory architecture and reduces interconnect complexity.
In one aspect, compression and decompression algorithms are used to store and retrieve messages from memory.
These and other features, aspects, and embodiments of the invention are described below in the section entitled “Detailed Description.”
Features, aspects, and embodiments of the inventions are described in conjunction with the attached drawings, in which:
In the descriptions that follow, certain example parameters, values, etc., are used; however, it will be understood that the embodiments described herein are not necessarily limited by these examples. Accordingly, these examples should not be seen as limiting the embodiments in any way. Further, the embodiments of an LDPC decoder described herein can be applied to many differnet types of systems implementing a variety of protocols and communication techniques. Accordingly, the embodiments should not be seen as limited to a specific type of system, architecture, protocol, air interface, etc. unless specified.
In order to illustrate the operation of LDPC codes, the following example:
As can be seen, the example parity check matrix H is low density, or sparse. The first row of matrix H defines the first parity check node, or equation. As can be seen, the first parity check node will check received samples r0, r2, and r4, remembering that r is the multilevel signal produced by demodulator 112 in the receiver. The second parity check node, i.e., the second row of H, checks for received samples r1, r3, and r5, and the third parity check node checks samples r0, r1, and r5. In this example, there are three parity check nodes and six samples. The first and second parity check nodes are considered orthogonal, because they involve mutually exclusive sets of samples.
If it is assumed that K=3 and M=3, then the following is true:
This produces the following equations:
d0+d2+p1=0
d1+p0+p2=0
d0+d1+p2=0
These equations reduce to:
p0=d0
p1=d0+d2
p2=d0+d1
Thus, for example, if d=[0;1;0], then p=[0;0;1] and c=[0;1;0;0;0;1].
In an LDPC decoder, the operations of the parity check and variable nodes can be implemented by processors. In other words, each parity check node can be implemented by a parity check processor, and each variable check node can be implemented by a variable node processor. An LDPC is then an iterative decoder that implements a message passing algorithm defined by H.
The messages produced by parity node processor 202 can be defined using the following equations:
Thus variable node processor 202 can be configured to implement the above equations.
Variable node processor 208 can be configured to implement the following equation:
vk0=vk−10+Ek(0→0)+Ek(2→0)
It will be understood that the decoder described above can be implemented using hardware and/or software configured appropriately and that while separate parity check processors and variable node processors are described, these processors can be implemented by a single processor, such as a digital signal processor, or circuit, such as an Application Specific Integrated Circuit (ASIC); however, as mentioned above, implementation of a LDPC processor such as that described with respect to
The embodiments described below allow for more practical implementation of an LDPC decoder. For example, in one embodiment, triangular parity check matrices can be used to reduce the complexity and allow for the practical implementation of an LDPC processor configure to handle multiple data rates.
For example, in one embodiment an LDPC processor can be configured to implement a ½ rate (Rate ½) and ¾ rate (Rate ¾) and a ⅞ Rate (Rate ⅞) in addition to the full data rate. First, the following must be defined:
Thus, for example, if the number of code bits (N) is 1152, then the number of information bits (K) will be 576, 864, and 1008, for Rate ½, Rate ¾, and Rate ⅞, respectively. These values can be determined by defining the following:
Nperm=36;
Nr=4;
Nc=8;
Nb=4;
Nbase=Nr×Nb=32; and
Kbase=Nc×Nb=8.
Accordingly, N and K can be determined according to the following:
N=Nbase×Nperm; and
K=Kbase×Nperm.
With the above defined, a parity check matrices H12 can then be defined and partitioned into Kbase×Nbase sub-matrices. H12 can be defined with the aid of a companion matrix E12 as follows:
Where J is defined as the left, or right cyclic shift of the identity matrix of size Nperm×Nperm and has the following properties:
For example, to construct a parity check matrix H12 for Rate ½, H12 and E12 can first be partitioned into Nr sub-matrices as follows:
Sub matrices H112, . . . , HN12 correspond to supercodes c1, c2, . . . , CNr that act as constituent codes and allow the use of what can be termed a “turbo concept.”
Each sub matrix Hi12 and Ei12 is partitioned into Nb square sub matrices as follows:
Hi12=[Hi,112 Hi,212 . . . Hi,N
Ei12=[Ei,112 Ei,212 . . . Ei,N
Each matrix Hi,j12 and its correspondig sub-matrix Ei,j12 is itself then partitioned into Nb×Nb square blocks of size Nperm×Nperm as illustrated in
With respect to
Sub-matrices E1,j12, E2,j12, . . . , En
The top portions of
Referring to
A companion matrix E12, and therefore a parity check matrix H12, can be completed defined by a vector (q) of Nbase elements, a vector (p) of Nc patterns, and a vector (e) of Nc entrants.
q={[63663]; [23153110]; [13223424]; [0273011]; [14291918]; [721135]; [22849]; [2411130]}
p={4; 5; 6; 1; 6; 6; 4; 1}
e={3; 1; 3; 3; 1; 3; 2; 2}
Accordingly, a parity check matrix for Rate ¾ can be constructed using the same approach described above. For example, in one embodiment, a parity check matrix H34 and its corresponding exponential matrix E34 can be partitioned into Nr sub-matrices as follows:
Each sub-matrix Hi34 defines a supercode ci that act as a constituent code and enabling the “turbo concept.”
As illustrated in
Similarly, a parity check matrix for Rate ⅞ can be constructed using the same approach described above. For example, in one embodiment, a parity check matrix H78 and its corresponding exponential matrix E78 can be partitioned into Nr sub-matrices as follows:
As illustrated in
Accordingly, the methods described above can be used to implement an LPDC decoder for multiple data rates. It should be noted that in order to allow for easier encoding, the parity check matrices H12, H34, and H78, can be modify in certain embodiments to have a triangular structure. A triangular structure is defined for each square sub-matrix, i.e., each 4×4 sub-matrix comprising the H12, H34, and H78 as illustrated in
While certain embodiments of the inventions have been described above, it will be understood that the embodiments described are by way of example only. Accordingly, the inventions should not be limited based on the described embodiments. Rather, the scope of the inventions described herein should only be limited in light of the claims that follow when taken in conjunction with the above description and accompanying drawings.
This application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Application Ser. No. 60/705,277, entitled “Turbo LDPC,” filed Aug. 3, 2005, which is incorporated herein by reference in its entirety as if set forth in full.
Number | Date | Country | |
---|---|---|---|
60705277 | Aug 2005 | US |