Publication number | US7913149 B2 |
Publication type | Grant |
Application number | US 11/613,256 |
Publication date | Mar 22, 2011 |
Filing date | Dec 20, 2006 |
Priority date | Dec 20, 2006 |
Fee status | Paid |
Also published as | US20080168334, US20110099454 |
Publication number | 11613256, 613256, US 7913149 B2, US 7913149B2, US-B2-7913149, US7913149 B2, US7913149B2 |
Inventors | Sergey Gribok, Alexander Andreev, Igor Vikhliantsev |
Original Assignee | Lsi Corporation |
Export Citation | BiBTeX, EndNote, RefMan |
Patent Citations (39), Non-Patent Citations (3), Referenced by (15), Classifications (7), Legal Events (8) | |
External Links: USPTO, USPTO Assignment, Espacenet | |
This invention relates to the field of integrated circuit fabrication. More particularly, this invention relates to a method of implementing low-density parity-check (LDPC) codes that allows efficient performance of the encoding steps.
Low density parity-check (LDPC) codes were first proposed by Gallager in 1962, and then “rediscovered” by MacKay in 1996. LDPC codes have been shown to achieve an outstanding performance that is very close to the Shannon transmission limit.
LDPC codes are based on a binary parity-check matrix H with n columns and m=n−k rows that has the following properties:
For every given binary source message u={u_{0}, . . . , u_{k−1}} of length k, the LDPC encoder builds a binary codeword v={v_{0}, . . . , v_{n−1}} of length n where (n>k), such that Hv=0. The codeword consists of two parts. The first k bits of the codeword are equal to the bits of the source message. The other n−k bits of the codeword are the so-called parity-check bits p={p_{0}, . . . , p_{n−k−1}}. The main task of the encoder is to calculate these parity-check bits p for the given input message u.
To simplify matrix operations, the parity check matrix can be composed of ργ cells. The cells are arranged in ρ columns and γ rows, as given below.
Each cell is a t×t permutation matrix (n=ρt, n−k=γt). It contains exactly one value of “one” in every row and every column. Therefore, properties (1), (2), and (4) as listed above are satisfied by the construction of the matrix. An example of a cell-based parity-check matrix with k=32, n=56, γ=3, and ρ=7 is depicted in
Matrix H can be considered as a concatenation of two sub matrices: A and B. Matrix A contains k columns and (n−k) rows. It includes the first k columns of H. Matrix B is a square matrix that contains (n−k) columns and (n−k) rows. It includes the last (n−k) columns of matrix H. The source equation Hv=0 can then be rewritten as Au+Bp=0, or Bp=x, where x=Au. Therefore, the calculation of the parity-check bits can be performed in two steps:
All existing LDPC encoder implementations divide the calculation of the parity-check bits into these two steps as explained above.
Matrix A is a so-called “low-density” matrix, in that it contains just a small number of “ones,” and so can be efficiently stored in a memory. An especially compact representation of matrix A is achieved if the matrix has the cell-based structure as described above. The simple structure of matrix A allows an efficient implementation of the first step.
The most difficult part of the encoding process is the second step. Different solutions have been proposed to accomplish this step, but the existing solutions either require too much computational effort, work with a very limited and inefficient matrix B, or use different structures for the matrices A and B and, therefore, complicate the decoder structure.
Some methods use a two-diagonal matrix B. In this case, step 2 can be performed very fast, but the simulation results show that this code is relatively weak. The reason for this is that many columns have only two “ones.” Another problem with this code is that the decoder must take into account the different structures of A and B. Therefore, the decoder becomes more complicated. In reality, this code does not fully satisfy the four conditions presented above, in that different columns of the parity-check matrix have a different number of “ones.” Such codes are generally called irregular LDPC codes.
In other methods, the matrix B is selected to be a non-singular matrix. According to such methods, B^{−1 }exists and p=B^{−1}x. To find the parity-check bits, the inverse matrix B^{−1 }is multiplied by the vector x. The problem with this method is that the matrix B^{−1 }is not a low-density matrix anymore. Some significant additional resources are needed to store this matrix and to efficiently perform the multiplication. Another problem with this approach is that we cannot compose the matrix B from permutation sub matrices, because matrices based on permutation cells are always singular. This means that the matrices A and B have different structures, and once again the decoder becomes more complicated.
What is needed, therefore, is a method that overcomes problems such as those described above, at least in part.
The above and other needs are met by a method according to the present invention of encoding a binary source message u, by calculating x:=Au, calculating y:=B′x, resolving the equation Dp=y for p, and incorporating u and p to produce an encoded binary message v, where A is a matrix formed only of permutation sub matrices, B′ is a matrix formed only of circulant permutation sub matrices, and D is a matrix of the form
where T is a two-diagonal, circulant sub matrix, and I is an identity sub matrix.
According to another aspect of the invention, the entire parity-check matrix is constructed of permutation sub matrices. In prior art methods, only part of the parity-check matrix is constructed of permutation sub matrices. That condition leads to irregularity and complication of the decoding process. From an implementation point of view, it is simpler to support operations with a parity-check matrix that is constructed of permutation cells of a size that is a power of two. Prior art methods cannot be used with this kind of parity-check matrix. The present method supports such matrices without any problems, which tends to simplify the encoding and decoding processes.
The current method also supports a more variable structure for the parity-check matrix: sub matrix B doesn't have to be a non-singular matrix. By way of explanation, if sub matrix B is non-singular, then the parity-check matrix cannot have an even weight (or in other words, the number of ones in a column must be odd). This is a big disadvantage. For example, sometimes a weight of four is sufficient to achieve good error-correcting properties, but a weight of three is not enough. Prior art methods are then forced to use a matrix with a weight of five or more (or use irregular LDPC codes instead). This causes a complication during encoding and decoding (more resources are required to process the matrix as the number of ones increases). However, the present method supports matrices with an even weight.
Further advantages of the invention are apparent by reference to the detailed description when considered in conjunction with the figures, which are not to scale so as to more clearly show the details, wherein like reference numbers indicate like elements throughout the several views, and wherein:
The present invention provides a method for encoding low-density parity-check (LDPC) codes, and defines a subclass of LDPC codes that is appropriate for this method. The method uses a parity-check matrix based on permutation sub matrices. The matrix has a regular structure that allows simplification of the corresponding encoder and decoder circuits. The method uses uniform cell-based parity check matrices (both A and B have the same cell-based structure) and allows an efficient computation of the encoding steps. One embodiment of a method according to the present invention is present below.
Circulant matrix M_{c }is a square t×t matrix, where the i^{th }row (where 0<i<t) is a cyclical shift of the first row (called the 0^{th }row) by i positions to the right, given as:
It follows from the definition above that the circulant matrix is completely determined by its first row. Let's represent the circulant matrix as a polynomial expression P_{c }that has coefficients equal to the matrix coefficients from the first row:
P _{c}=α_{0}+α_{1} x+α _{2} x ^{2}+ . . . +α_{t−1} x ^{t−1 }
The addition and multiplication of circulant matrices is thus equivalent to the addition and multiplication of the polynomials in a ring of polynomials with a maximum degree of t−1.
A circulant permutation matrix is a special case of a circulant matrix. The first line of a circulant permutation matrix contains the value “one” in the i^{th }position. The j^{th }line contains a “one” in the (i+j)(mod t)^{th }position. Therefore the j^{th }line is a cyclical shift of the (j−1)^{th }line. The corresponding polynomial for a circulant permutation matrix contains exactly one non-zero coefficient.
Let's consider a square m×m matrix M_{p }of polynomials of degree t−1:
M_{p }is defined to be regularizable if such a matrix M′_{p }exists such that M′_{p}M_{p}=G_{p}, where G_{p }has a special fixed format of:
Let's now take a cell-based matrix M_{0}, where each cell is a circulant sub matrix. M_{0 }is regularizable if the corresponding matrix based on the polynomials is regularizable. Thus, if M_{0 }is regularizable, then such a matrix M′_{0 }exists such that M′_{0 }M_{0}=D, where M′_{0 }is a cell-based matrix with circulant cells and D has a special fixed format of:
An example of matrix D is given in
Now we are ready to define the target subclass of LDPC codes according to this embodiment of the present invention. We consider the parity-check matrix H, based on permutation square cells, as given below:
Every square block H_{i,j }is a permutation matrix. An example of this is depicted in
Matrix A can be composed of different types of permutation sub matrices. One possible sub matrix type is a circulant permutation sub matrix. Another possible type is a so-called bitwise permutation matrix. These matrices are based on bitwise exclusive OR operations. The first line of a bitwise permutation matrix contains a value of “one” in the i^{th }position. The j^{th }line contains a value of “one” in the (i⊕j)^{th }position. It is also possible to use other types of permutation sub matrices.
Matrix B is a regularizable cell-based matrix that is composed of circulant permutation sub matrices only. If H_{0 }is an arbitrary circulant permutation-cell-based parity-check matrix that is not specially designed to have a regularizable sub matrix B, then it is almost always possible to rearrange the columns of H_{0 }in such a way that it will have the required structure. Therefore, almost every circulant permutation-cell-based parity-check matrix can be converted into the target format according to the present invention.
Encoding Method for the Described Class of Codes
For a given binary source message u={u_{0}, . . . , u_{k−1}} of length k, the LDPC encoder builds a binary codeword v={v_{0}, . . . , v_{n−1}} of length n where (n>k), such that Hv=0. The last equation can be rewritten as Au+Bp=0, or Bp=x, where x=Au. Note that B is singular, so B^{−1 }doesn't exist. B is regularizable, so a circulant-cell-based matrix B′ exists such that B′B=D (as depicted in
The encoder stores matrices A and B′. Matrix A (an example of which is depicted in
The encoding algorithm consists of three steps, as depicted in
1. Calculate x: =Au;
2. Calculate y: =B′x; and
3. Resolve the equation Dp=y.
The first and the second steps can be efficiently implemented because of the cell-based structure of the matrices A and B′. The last step is especially fast and computationally simple, because of the fixed, simple structure of the matrix D. On the last step, the parity-check bits can be computed using the formulas below:
The foregoing description of preferred embodiments for this invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Obvious modifications or variations are possible in light of the above teachings. The embodiments are chosen and described in an effort to provide the best illustrations of the principles of the invention and its practical application, and to thereby enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the invention as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly, legally, and equitably entitled.
Cited Patent | Filing date | Publication date | Applicant | Title |
---|---|---|---|---|
US6633856 * | Oct 10, 2001 | Oct 14, 2003 | Flarion Technologies, Inc. | Methods and apparatus for decoding LDPC codes |
US6757122 * | May 30, 2002 | Jun 29, 2004 | Seagate Technology Llc | Method and decoding apparatus using linear code with parity check matrices composed from circulants |
US6785863 * | Sep 18, 2002 | Aug 31, 2004 | Motorola, Inc. | Method and apparatus for generating parity-check bits from a symbol set |
US6957375 * | Feb 26, 2004 | Oct 18, 2005 | Flarion Technologies, Inc. | Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation |
US6961888 * | Jul 11, 2003 | Nov 1, 2005 | Flarion Technologies, Inc. | Methods and apparatus for encoding LDPC codes |
US7000168 * | Mar 8, 2002 | Feb 14, 2006 | Seagate Technology Llc | Method and coding apparatus using low density parity check codes for data storage or data transmission |
US7072417 * | Dec 7, 2000 | Jul 4, 2006 | Marvell International Ltd. | LDPC encoder and method thereof |
US7120856 * | Sep 24, 2003 | Oct 10, 2006 | Leanics Corporation | LDPC code and encoder/decoder regarding same |
US7162684 * | Nov 28, 2003 | Jan 9, 2007 | Texas Instruments Incorporated | Efficient encoder for low-density-parity-check codes |
US7171603 * | May 6, 2004 | Jan 30, 2007 | Motorola, Inc. | Method and apparatus for encoding and decoding data |
US7178082 * | Apr 29, 2004 | Feb 13, 2007 | Samsung Electronics Co., Ltd. | Apparatus and method for encoding a low density parity check code |
US7178085 * | Nov 21, 2003 | Feb 13, 2007 | Electronics And Telecommunications Research Institute | Encoder using low density parity check codes and encoding method thereof |
US7237171 * | Jul 5, 2005 | Jun 26, 2007 | Qualcomm Incorporated | Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation |
US7243286 * | Dec 18, 2003 | Jul 10, 2007 | Samsung Electronics Co., Ltd. | Method and apparatus for generating parity information for error correction |
US7260763 * | Mar 11, 2004 | Aug 21, 2007 | Nortel Networks Limited | Algebraic low-density parity check code design for variable block sizes and code rates |
US7278082 * | Jan 28, 2004 | Oct 2, 2007 | Samsung Electronics Co., Ltd. | Method of generating parity data based on low-density parity check matrix and apparatus therefor |
US7302629 * | Dec 10, 2004 | Nov 27, 2007 | Samsung Electronics Co., Ltd. | Apparatus and method for coding and decoding irregular repeat accumulate codes |
US7313752 * | Aug 26, 2004 | Dec 25, 2007 | Samsung Electronics Co., Ltd. | Apparatus and method for coding/decoding block low density parity check code in a mobile communication system |
US7343548 * | Apr 19, 2005 | Mar 11, 2008 | Motorola, Inc. | Method and apparatus for encoding and decoding data |
US7353444 * | May 6, 2005 | Apr 1, 2008 | Comtech Aha Corporation | LDPC architecture |
US7395494 * | Oct 12, 2004 | Jul 1, 2008 | Electronics And Telecommunications Research Institute | Apparatus for encoding and decoding of low-density parity-check codes, and method thereof |
US7451374 * | Jul 27, 2005 | Nov 11, 2008 | Samsung Electronics Co., Ltd | Apparatus and method for channel coding in mobile communication system |
US7480845 * | Dec 12, 2005 | Jan 20, 2009 | Samsung Electronics Co., Ltd. | Method and apparatus for generating block-based low-density parity check matrix and recording medium having recorded thereon code for implementing the method |
US7493547 * | Jun 15, 2005 | Feb 17, 2009 | Electronics And Telecommunications Research Institute | Apparatus for coding low density parity check code and method thereof |
US7502987 * | May 12, 2005 | Mar 10, 2009 | Samsung Electronics Co., Ltd | Apparatus and method for encoding and decoding block low density parity check codes with a variable coding rate |
US7506238 * | Aug 10, 2005 | Mar 17, 2009 | Texas Instruments Incorporated | Simplified LDPC encoding for digital communications |
US7516390 * | Nov 2, 2005 | Apr 7, 2009 | Broadcom Corporation | LDPC (Low Density Parity Check) coding and interleaving implemented in MIMO communication systems |
US7516391 * | Apr 28, 2005 | Apr 7, 2009 | Samsung Electronics Co., Ltd | Apparatus and method for coding/decoding block low density parity check code with variable block length |
US7523375 * | Sep 21, 2005 | Apr 21, 2009 | Distribution Control Systems | Set of irregular LDPC codes with random structure and low encoding complexity |
US7526717 * | Jun 16, 2005 | Apr 28, 2009 | Samsung Electronics Co., Ltd. | Apparatus and method for coding and decoding semi-systematic block low density parity check codes |
US7536623 * | Nov 30, 2005 | May 19, 2009 | Samsung Electronics Co., Ltd. | Method and apparatus for generating a low-density parity check code |
US7581157 * | Jun 23, 2005 | Aug 25, 2009 | Lg Electronics Inc. | Method and apparatus of encoding and decoding data using low density parity check code in a wireless communication system |
US7600173 * | Apr 28, 2004 | Oct 6, 2009 | Mitsubishi Electric Corporation | Retransmission control method and communications device |
US7600174 * | Aug 10, 2005 | Oct 6, 2009 | Samsung Electronics Co., Ltd | Apparatus and method for encoding and decoding a block low density parity check code |
US7617439 * | Dec 1, 2005 | Nov 10, 2009 | Broadcom Corporation | Algebraic construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices |
US7617441 * | Jun 21, 2006 | Nov 10, 2009 | Broadcom Corporation | Efficient construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices |
US7657816 * | Jul 13, 2006 | Feb 2, 2010 | Leanics Corporation | Low-complexity hybrid LDPC code encoder |
US20060053359 | Nov 21, 2003 | Mar 9, 2006 | Su-Chang Chae | Encoder using low density parity check codes and encoding method thereof |
WO2006031092A2 | Sep 16, 2005 | Mar 23, 2006 | Lg Electronics Inc. | Method of encoding and decoding using ldpc code |
Reference | ||
---|---|---|
1 | D.J.C. MacKay and R.M. Neal, "Near Shannon limit performance of low density parity check codes," Electron. Lett., vol. 32, No. 18, pp. 1645-1646, 1996. | |
2 | R.G. Gallager, "Low density parity check codes," IRE Trans. Inform. Theory, vol. IT-8, pp. 21-28, Jan. 1962. | |
3 | * | Tong Zhang; Parhi, K.K.; , "A class of efficient-encoding generalized low-density parity-check codes," Proceedings IEEE International Conference on Acoustics, Speech, and Signal Processing, May 11, 2001, vol. 4, pp. 2477-2480,URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=940503&isnumber=20357. |
Citing Patent | Filing date | Publication date | Applicant | Title |
---|---|---|---|---|
US8605383 | May 21, 2012 | Dec 10, 2013 | Western Digital Technologies, Inc. | Methods, devices and systems for characterizing polarities of piezoelectric (PZT) elements of a two PZT element microactuator |
US8775898 * | May 17, 2012 | Jul 8, 2014 | Lsi Corporation | Systems and methods for hardware flexible low density parity check conversion |
US8797664 | Dec 22, 2012 | Aug 5, 2014 | Western Digital Technologies, Inc. | Polarity detection of piezoelectric actuator in disk drive |
US8966339 | Jan 15, 2013 | Feb 24, 2015 | Western Digital Technologies, Inc. | Decoder supporting multiple code rates and code lengths for data storage systems |
US8972826 | Oct 24, 2012 | Mar 3, 2015 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9021339 | Nov 29, 2012 | Apr 28, 2015 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736 | Jan 31, 2013 | Jun 16, 2015 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9122625 | Dec 18, 2012 | Sep 1, 2015 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
US9153283 | Sep 30, 2014 | Oct 6, 2015 | Western Digital Technologies, Inc. | Data storage device compensating for hysteretic response of microactuator |
US9203434 | Mar 9, 2012 | Dec 1, 2015 | Western Digital Technologies, Inc. | Systems and methods for improved encoding of data in data storage devices |
US9214963 | Dec 21, 2012 | Dec 15, 2015 | Western Digital Technologies, Inc. | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
US9331716 | Aug 27, 2014 | May 3, 2016 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for area efficient data encoding |
US9495243 | Aug 31, 2015 | Nov 15, 2016 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
US9619317 | Jan 15, 2013 | Apr 11, 2017 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US20130311846 * | May 17, 2012 | Nov 21, 2013 | Lsi Corporation | Systems and Methods for Hardware Flexible Low Density Parity Check Conversion |
U.S. Classification | 714/781, 714/755 |
International Classification | H03M13/00 |
Cooperative Classification | H03M13/116, H03M13/1185 |
European Classification | H03M13/11L3E, H03M13/11L3T3 |
Date | Code | Event | Description |
---|---|---|---|
Dec 20, 2006 | AS | Assignment | Owner name: LSI LOGIC CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GRIBOK, SERGEY;ANDREEV, ALEXANDER;VIKHLIANTSEV, IGOR;REEL/FRAME:018658/0016 Effective date: 20061219 |
May 8, 2014 | AS | Assignment | Owner name: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AG Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:LSI CORPORATION;AGERE SYSTEMS LLC;REEL/FRAME:032856/0031 Effective date: 20140506 |
Jun 6, 2014 | AS | Assignment | Owner name: LSI CORPORATION, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:LSI LOGIC CORPORATION;REEL/FRAME:033102/0270 Effective date: 20070406 |
Aug 27, 2014 | FPAY | Fee payment | Year of fee payment: 4 |
Apr 3, 2015 | AS | Assignment | Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LSI CORPORATION;REEL/FRAME:035390/0388 Effective date: 20140814 |
Feb 2, 2016 | AS | Assignment | Owner name: AGERE SYSTEMS LLC, PENNSYLVANIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 Owner name: LSI CORPORATION, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 |
Feb 11, 2016 | AS | Assignment | Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001 Effective date: 20160201 |
Feb 3, 2017 | AS | Assignment | Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001 Effective date: 20170119 |