A layered message updating method and system for the decoding of LDPC codes with high sub-matrix degree has a scalable and flexible decoder architecture to support LDPC codes with arbitrary high sub-matrix degree with very small hardware overhead and high throughput. Embodiments of the invention support LDPC codes with sub-matrix degree W>=1. The architecture does not require duplication of extrinsic memory which greatly reduces decoder complexity. The size of the memory is also independent of sub-matrix degree which makes the decoder scalable for large w values.
|
6. A double scan decoding method of a matrix wherein each of a plurality of sub-matrixes has w positions, said method comprising:
initializing a belief information with intrinsic information;
performing iteration of a matrix in a block row order, comprising:
a first scan for finding a first minimum and a second minimum;
a second scan for updating extrinsic information, said second scan comprising:
reading belief information ln from a first memory;
generating new extrinsic information R′m,n1, R′m,nw, . . . R′m,nWfrom a second memory;
generating extrinsic information rm,n1, rm,nw, . . . rm nW from a third memory;
computing a delta rm,nw by subtracting rm,nw from R′m,nw where w=1 to w;
permuting delta rm,nw to delta rmw,n where w=1 to w;
computing a new belief information L′n wherein
L′n=Ln+delta_Rm1,n+delta_Rmw,n+. . . +delta_RmW,n; and
storing said new belief information L′n; and
outputting belief information.
1. A method of layer message updating, said method comprising:
initializing a belief information of each bit (corresponding to a column in h matrix) with a log-likelihood-ratio LLR value;
initializing extrinsic information from a check node m (corresponding to a row in h matrix) to a bit n to 0;
performing iteration in a block row order, for each row m in a block row m, a plurality of sub-matrixes in said block row are scanned through twice, wherein each non-zero sub-matrix will have w positions with a ‘1’ in the h matrix;
before a first scan;
initializing two variables for a first minimum and a second minimum to maximum possible positive value;
for each non-zero submatrix in a plurality of n sub-matrixes in said block row m, a plurality of w bits (n1, nw, . . . nW) are obtained;
calculating said extrinsic information from bit n1, nw, . . . nW to check m;
comparing a plurality of values |qm,n1|, |qm,nw|, . . . |qm,nW|against said first minimum and said second minimum to find a new first minimum value and a new second minimum value;
storing said new minimum values;
recording an index of a minimum q value (Pm) and sign bits for all q values;
after a second scan;
said LLR values are updated, for each column n, there are w rows (m1.mw, . . . , mW) having ‘1’ in the current block row;
updating said extrinsic information;
updating said LLR value; and
outputting said LLR value when specific stopping criteria are met.
2. The method of
3. The method of
9. The method of
|
This application claims priority, under 35 U.S.C. §119(e), to Provisional Application Nos. 61/113,926, filed Nov. 12, 2008 and 61/114,790, filed Nov. 14, 2008. This application is related to U.S. application Ser. No. 11/463,236, filed on Aug. 8, 2006, entitled A HARDWARE-EFFICIENT LOW DENSITY PARITY CHECK CODE FOR DIGITAL COMMUNICATIONS; which is a Continuation of U.S. application Ser. No. 10/329,597, filed on Dec. 26, 2002—now U.S. Pat. No. 7,178,080. This application is also related to U.S. application Ser. No. 11/744,357, filed on May 4, 2007, entitled PARITY CHECK DECODER ARCHITECTURE. All said applications incorporated herein by reference.
Not applicable.
Embodiments of the invention are in the field of digital data communications, and is more specifically directed to Low-Density Parity-Check (LDPC) codes and a scalable decoder architecture.
A problem common to digital data communication technology is the likelihood of data corruption. Data is usually corrupted by noise occurring in the communication channel. The noise interferes with the signal carrying the data over the channel, causing errors in the data bits, or symbols. As is fundamental in the art, the signal-to-noise ratio for a communications channel is a degree of goodness of the communications carried out over that channel, as it conveys the relative strength of the signal that carries the data (as attenuated over distance and time), to the noise present on that channel. These factors relate directly to the likelihood that a data bit or symbol received over the channel will be in error relative to the data bit or symbol as transmitted. This likelihood is reflected by the error probability for the communications over the channel, commonly expressed as the Bit Error Rate (BER) ratio of errored bits to total bits transmitted. In short, the likelihood of error in data communications must be considered in developing a communications technology. Techniques for detecting and correcting errors in the communicated data must be incorporated for the communications technology to be useful.
Various techniques for detecting and correcting errors in the bits have been developed. At least some error detection and correction techniques are implemented through redundant coding of the bits. For example, parity bits may be inserted into the transmitted data stream sent over the communication channel. These parity bits do not add any additional information, but can be cross-referenced to detect and correct errors in the values of other bits. Of course, these parity bits are also prone to errors. As another example, a code may repeat the transmission; for instance, the payload is sent three times. The receiver deduces the payload by using a decoder to determine which bit in each position was received two or more times. The drawback of such a decoder is that if a bit is received erroneously two or more times, the decoder will select the erroneous bit as correct. There is tradeoff between decoder architecture complexity and bit error rate. A desire for a lower bit error rate typically results in higher complexity decoder architecture than would be the case if a higher bit error rate was permitted. An architecture, system, or method that results in a less complex decoder while maintaining a low the bit error rate is desirable.
Error detection and correction techniques are typically implemented through the use of redundant coding of the data. In general, redundant coding inserts data bits into the transmitted data stream that do not add any additional information, but that indicate whether an error is present in the received data stream. More complex codes provide the ability to deduce the true transmitted data from a received data stream, despite the presence of errors.
Many types of redundant codes that provide error correction have been developed. One type of code simply repeats the transmission, for example repeating the payload twice, so that the receiver deduces the transmitted data by applying a decoder that determines the majority vote of the three transmissions for each bit. Of course, this simple redundant approach does not necessarily correct every error, but greatly reduces the payload data rate. In this example, a predictable likelihood remains that two of three bits are in error, resulting in an erroneous majority vote despite the useful data rate having been reduced to one-third. More efficient approaches, such as Hamming codes, have been developed toward the goal of reducing the error rate while maximizing the data rate.
Another class of known redundant codes is the Low Density Parity Check code. Low-Density Parity-Check (LDPC) codes are linear block codes with sparse parity check matrices. Their asymptotic performance can be as close to one tenth dB away from the Shannon limit. Another advantage of LDPC codes is that the decoding algorithm is inherently parallel and so a wide variety of hardware implementations can be derived that exploit this feature. Because of their extraordinary performance, LDPC codes have been adopted in many recent communication standards such as DVB-S2, 10GBase-T, 802.16 and 802.11n, etc. LDPC codes are also serious candidates for many storage applications.
Existing LDPC decoders can only handle sub-matrix degree W=1 with reasonable complexity. If W is larger than 1, then the decoding complexity dramatically increases. Thus it limited many high performance LDPC codes from being implemented in real systems. A general decoder architecture that can handle LDPC codes with higher sub-matrix degree is still missing and needs to be developed for future applications on LDPC codes. There is a need for an algorithm and scalable decoder architecture to handle W>=1 case.
Having thus described the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
It should be understood at the outset that although several illustrative embodiments are described below, the present disclosure may be implemented using any number of techniques whether currently known or later developed. The present disclosure should in no way be limited to the illustrative embodiments described and illustrated herein, and may be modified within the scope of the appended claims along with their full scope of equivalents.
Certain terms are used throughout the following claims and discussion to refer to particular system components. 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” are used in an open-ended fashion, and thus should be interpreted to mean “including but not limited to”. Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections. Additionally, the term “system” refers to a collection of two or more hardware components, and may be used to refer to an electronic device or circuit, or a portion of an electronic device or circuit.
Embodiments of the invention will be described in connection with an example of its implementation in an exemplary transceiver, for example a wireless network adapter such as according to the National Aeronautics and Space Administration (NASA) Goddard Space Flight Center (GSFC) standard. It will be apparent to those skilled in the art having reference to this specification that this invention is particularly well-suited for use in such an application. However, it is also contemplated that this invention will be of similar benefit in many other applications that involve error correction coding, including communications according to orthogonal frequency division multiplexing (OFDM), discrete multitone modulation (DMT) for example as used in conventional Digital Subscriber Line (DSL) modems, and other modulation and communication approaches, whether carried out as land line or wireless communications. It is therefore to be understood that these and other alternatives to and variations on the embodiment described below are contemplated to be within the scope of the invention as claimed.
A low-density parity-check (“LDPC”) code is a type of redundant code that enables accurate detection and correction of the bits of signals sent over a communication channel. The “parity-check” adjectives refer to verifying the transmission using a matrix H, which defines the code, in conjunction with the parity bits to detect and correct errors. The “low-density” adjectives refer to the sparsity of H. Any sparse matrix, including H, has zero for the value of the majority of its elements.
The matrix H is designed such that a zero matrix results when H is multiplied by t, as described by the equation
Ht=0,
wherein t is a non-erroneous, or valid, set of bits. Hence, whenever Ht≠0, it is known that t contains erroneous bits. Each set t consists of the source message, s, combined with the corresponding parity-check bits for that particular s. When a set t is transmitted, the receiving network element receives a vector r, which is equal to t plus n, as described by the equation
r=t+n,
wherein n is the noise added by the channel. Because an LDPC decoder at the receiver designed to recognize the coding scheme, and hence matrix H, it can compute a vector z=Hr. Because r=t+n, and because Ht=0, the vector z is computed using the equation
z=Hr=Ht+Hn=Hn.
The decoding process thus involves finding the sparsest vector x that satisfies the equation:
Hx=z.
The vector x becomes the best guess or predictor for noise vector n, which can be subtracted from the received signal vector r to recover set t, thus detecting and correcting errors in the transmitted signal t.
The decoding process involves the iterative manipulation of the signal vector expressed as fractional values in several bits. In at least some preferred embodiments, parity check matrix H is arranged into a composite of circularly shifted identity matrices. This composite is represented by a macro matrix Hm, with a 1 value symbolizing a ZxZ circularly shifted identity matrix and a 0 value symbolize a ZxZ zero matrix.
LDPC codes used in practical systems are composite of ZxZ zero sub-matrices and non-zero sub-matrices each of which being superimpose of one or more (W) permuted identity matrices of dimension ZxZ. W is referred as the degree of the sub-matrix. For example,
Decoder Architecture and Operation Description
A column based LDPC decoder architecture is shown in
In this architecture, there are three types of storage:
R-Gen 565 generates R values using information stored in R-Mem. R′-Gen 575 generates R′ values using information from T-Reg 570. The number of Adders 567 are determined by the throughput.
The organization of R-Mem is shown in
The organization of L-Mem 510 is shown in
The organization of T-Reg 570 is shown in
Permuters 521, 52w, . . . , 52W and 581, 58w, . . . , 58W are used to perform the permutation of each sub-matrix back and forth. The number of permuters used in the architecture can be determined by the throughput requirement. For example only, 2 permuters are used to handle the two stream for W=2 case. Permuters 58w (w=1 to W) may time shared for handling Rm,n and R′m,n values. We may also use only 1 permuter and time shared for two streams as well as the Rm,n and R′m,n values with smaller area and larger cycle count. We may also use permuters with no time sharing.
I. Double Scan Decoding Algorithm
The decoder iteratively updates the belief information of each bit based on the extrinsic information passing along the decoding. After certain number of iterations or specific stopping criteria are met, the decoder will output the belief information in forms of soft information or hard decision.
A. Initialization:
The belief information of each bit (corresponding to a column in H matrix) Ln is initialized with LLR value input (intrinsic information). The extrinsic information (Rm,n) from check node m (corresponding to a row in H matrix) to a bit n is initialized with 0.
B. Iterative Update:
First Scan (Finding Minimum Two) 430
Before the first interation, R-Mem values are initialized to 0; thus, R-Gen 575 is initialized to 0 also. Before the first scan 430, Two temp variables TA′m and TB′m for holding minimum (TAm) and second minimum (TBm) are initialized to maximum possible positive value. These values are held in T-Reg 535. The maximum possible value may be the maximum value for the chosen precision in implementation. For each of the N sub-matrixes in the block row, n1 and n2 is obtained (for the exemplar case of W=2).
Rm,n1 and Rm,n2 values are generated by R Gen 565 based on the RAm (min1 610), RBm (min2 620), Pm (pos 630) and sign array 640 read from R-Mem.
Sign bits of the Rm,n1 and Rm,n2 values are taken from sign array 640 of
The extrinsic information from bit n1 and n2 to check m are calculated as:
Qm,n1=Ln1−Rm,n1
Qm,n2=Ln2−Rm,n2
The |Qm,n1| and |Qm,n2 | values are compared against TA′m and TB′m. The new two minimum values are stored in TA′m (minimum) and TB′m (second minimum) in T-Reg 535. The index of the minimum Q value (Pm) and sign bits for all Q values are also updated in T-Reg 535. After the final comparison, the TA′m and TB′m are written to T-Reg as TAm, TBm. An additive or multiplicative factor can be applied to TAm and TBm for scaled-Min-Sum or Offset-Min-Sum implementation. After the first scan, the content of T-Reg is written to R-Mem 560.
Second Scan (Update LLR) 440
After the second scan 440, the LLR values are updated. For each column n, there are W=2 rows (m1 and m2) have ‘1’ in the current block row. The check-to-bit extrinsic information is updated such that
R Gen 565 gets R values from R-Mem 560. R′ Gen 575 gets values from T-Reg 570 and generates R′ values. The LLR value is updated as
L′n=Ln+(R′m1,n−Rm1,n)+(R′m2,n−Rm2,n)
The iterative process will be performed for all M block rows and for multiple of iterations.
Output:
If the specific stopping criteria are met, for example, the decoder reach maximum iterations or all parity check equations met, the soft-information or hard-decision of updated Ln are output from LLR-Mem 510.
The decoder cycle-by-cycle operation for the decoder is depicted in
The coded data rate of the decoder for the current setting can be formulated as following:
While the invention has been described according to its preferred embodiments, it is of course contemplated that modifications of, and alternatives to, these embodiments, such modifications and alternatives obtaining the advantages and benefits of this invention, will be apparent to those of ordinary skill in the art having reference to this specification and its drawings. It is contemplated that such modifications and alternatives are within the scope of this invention as subsequently claimed herein. Other items shown or discussed as directly coupled or communicating with each other may be coupled through some interface or device, such that the items may no longer be considered directly coupled to each other but may still be indirectly coupled and in communication, whether electrically, mechanically, or otherwise with one another. Other examples of changes, substitutions, and alterations will become apparent to those skilled in the art. It is intended that the following claims be interpreted to embrace all such changes, substitutions, and alterations.
Sun, Yang, Zhu, Yuming, Goel, Manish
Patent | Priority | Assignee | Title |
10148288, | Nov 24 2015 | Texas Instruments Incorporated | LDPC post-processor architecture and method for low error floor conditions |
9793923, | Nov 24 2015 | Texas Instruments Incorporated | LDPC post-processor architecture and method for low error floor conditions |
Patent | Priority | Assignee | Title |
7139959, | Mar 24 2003 | Texas Instruments Incorporated | Layered low density parity check decoding for digital communications |
7178080, | Aug 15 2002 | Texas Instruments Incorporated | Hardware-efficient low density parity check code for digital communications |
7181676, | Jul 19 2004 | Texas Instruments Incorporated | Layered decoding approach for low density parity check (LDPC) codes |
7500172, | Feb 26 2005 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | AMP (accelerated message passing) decoder adapted for LDPC (low density parity check) codes |
7757149, | Oct 12 2005 | CALLAHAN CELLULAR L L C | Broadcast message passing decoding of low density parity check codes |
20030229843, | |||
20040034828, | |||
20040194007, | |||
20050166132, | |||
20050289438, | |||
20060123318, | |||
20070283215, | |||
20100115386, | |||
20100318872, | |||
WO2009053940, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 05 2009 | ZHU, YUMING | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024945 | /0457 | |
Nov 05 2009 | GOEL, MANISH | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024945 | /0457 | |
Nov 10 2009 | SUN, YANG | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024945 | /0457 | |
Nov 12 2009 | Texas Instruments Incorporated | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Apr 25 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 15 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Apr 19 2024 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Nov 06 2015 | 4 years fee payment window open |
May 06 2016 | 6 months grace period start (w surcharge) |
Nov 06 2016 | patent expiry (for year 4) |
Nov 06 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 06 2019 | 8 years fee payment window open |
May 06 2020 | 6 months grace period start (w surcharge) |
Nov 06 2020 | patent expiry (for year 8) |
Nov 06 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 06 2023 | 12 years fee payment window open |
May 06 2024 | 6 months grace period start (w surcharge) |
Nov 06 2024 | patent expiry (for year 12) |
Nov 06 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |