ENCODING AND DECODING TECHNIQUES USING LOW-DENSITY PARITY CHECK CODES
Some embodiments include apparatus and methods for encoding message information. Such apparatus and methods can include using a parity check matrix of a low-density parity check (LDPC) code to generate a first matrix having an upper triangular sub-matrix. Parity information to encode the message information can be generated based on the first matrix if a total number of rows of the upper triangular sub-matrix is equal to the rank of the parity check matrix. If the total number of rows of the upper triangular sub-matrix is less than the rank of the parity check matrix, then a triangularization operation can be performed on a second sub-matrix of the first matrix to generate a second matrix. Parity information to encode the message information can be generated based on the second matrix. Other embodiments including additional apparatus and methods are described.
This application is a continuation of U.S. application Ser. No. 13/083,341, filed Apr. 8, 2011, which is incorporated herein by reference in its entirety.
BACKGROUNDMany electrical devices and systems exchange information with each other via transmission media, such as metal conductors, fiber optic cables, and air. An inferior or defective transmission medium may cause errors in such information. Exceeding transmission capability (e.g., transmission rate) of the medium can also induce errors. In some situations, the errors can be corrected. Many conventional techniques use codes to check the validity of information after it is received. Some codes may also assist in correcting the errors. For example, a low-density parity check (LDPC) code can be used for error corrections. In some conventional techniques, however, using an LDPC code may involve complex coding operations or may demand a large number of circuit components to operate. Thus, an LDPC code can be unsuitable for some devices or systems.
Encoder 101 can be realized in the form of an LDPC encoder that generates codewords Vm from message information u with respect to an H-matrix 130. H-matrix 130 can be stored internally in apparatus 100 or external to apparatus 100. H-matrix 130 can include parity check matrix H of a LDPC code. As is understood by those skilled in the art, an H-matrix, such as H-matrix 130, of a code used in transmitting information can be generated (e.g., constructed) using various code constructions, such as a progressive edge-growth LDPC code construction, a Reed Solomon LDPC code construction, LDPC code constructions based on Euclidian geometries, LDPC code constructions based on Vandermondematrix and cyclic permutation blocks, and various other LDPC constructions. An H-matrix, such as H-matrix 130, can be generated by a computer.
In apparatus 100, since message information u is known, with a given H-matrix of a code, such as H-matrix 130, encoding operations performed by encoder 101 involves generating parity information p based on received message information u and the given H-matrix. Then, encoder 101 can combine received message information u with the generated parity information p to form codewords Vm=[p u]. Decoding codewords Vm to retrieve the original message information u can be done in a reversed order. For example, encoding processes (e.g., steps) performed during encoding to generate parity information p can be performed on codewords Vm in a reversed order to generate decoded information. Then, the same H-matrix used for encoding can be used during decoding to generate the original message information u based on the decoded information. The description herein focuses on encoding to generate codewords Vm=[p u] based on received message information u and a given H-matrix of an LDPC code, as described in detail with reference to
As shown in
In
If the total number of rows of the upper triangular sub-matrix is equal to the rank of the parity check matrix H, method 300 can include activity 320 to generate parity information to encode message information based at least in part on the first matrix. Method 300 may stop after performing activity 320.
If the total number of rows of the first upper triangular sub-matrix is less than the rank of the parity check matrix H, method 300 may continue with activity 330 to perform an upper triangularization operation on a second sub-matrix of the first matrix to generate (e.g., form) a second matrix (e.g., Hm2). Activity of 340 of method 300 can generate parity information to encode message information based at least in part on the second matrix.
Some or all of activities 310, 320, 330, and 340 of method 300 can be performed by a processor of an electronic unit, such as a computer. For example, activities 310, 320, and 330 can be performed by a computer. Some or all of activities 310, 320, 330, and 340 of method 300 can also be performed by an encoder, such as encoder 101 of
Traditionally, a generator matrix Gm is used to encode message information. For example, a matrix H=[In-k|P] can be generated from a matrix-H, where In-k is an identity sub-matrix, P is a sub-matrix of the matrix G. Then, a matrix Gm can be generated from the matrix G, such that Gm=[PT|Ik] where PT denotes a transpose of sub-matrix P. The codewords=u*Gm can be generated, the symbol “*” in this equation denotes multiplication. Thus, in a traditional encoding, generator matrix Gm is used to encode message information. The traditional way, however, can be complex and unsuitable for some systems or devices. For example, a large number of circuit components, e.g., exclusive-OR (XOR) gates, may be needed to process and store information associated with generator matrix Gm or both generator matrix Gm and matrix-H.
The encoder described herein can generate the codewords directly from matrix Hm, without generating a matrix such as the traditional generator matrix Gm. The encoder that generates the codewords based on matrix Hm as described herein may be less complex and may have a reduced the number of components, e.g., exclusive-OR gates.
As shown in
T: (n−k−g)×(n−k−g).
A: (n−k−g)×g.
B: (n−k−g)×k.
C: g×g.
D: g×k.
E: g×(n−k−g).
Matrix Hm can be generated by performing a process known as greedy upper triangularization operation. This operation generates an upper triangular matrix, which is sub-matrix T, in the top-left corner of matrix Hm. This operation involves exchanging only rows, exchanging only columns, or exchanging only rows and columns of the parity check matrix H. No arithmetic operations (e.g., no Gaussian elimination operations) on the rows of the parity check matrix H are performed in this operation.
Sub-matrix T is a square upper triangular matrix having (n−k−g) rows and (n−k−g) columns. Sub-matrix T has all ones in its diagonal entries and all zeros below its diagonal entries. If the number of rows of sub-matrix T is equal to the rank R of parity check matrix H, then parameter g=0 in matrix Hm, such that (n−k−g)=R where g=0. Also, if g=0, then sub-matrices A is eliminated and become part of sub-matrix B, and sub-matrices E, C, and D are eliminated and become parts of sub-matrix T and sub-matrix B. In this case (n−k=R), matrix Hm=[T|B], in which sub-matrix T has a size (n−k=R)×(n−k=R) and sub-matrix B has a size (n−k=R)×k.
When an encoder, such as encoder 101 in
Solving the above equation yields Equation (1) below:
Tp=Bu, thus
p=T−1Bu. (Equation 1)
An encoder, such as encoder 101 of
If the total number of rows of sub-matrix T of matrix Hm is less than the rank R of the parity check matrix H, additional operations can be performed on matrix Hm of
As described above with reference to
The tracking record can be used during decoding of codewords Vm to obtain the original message information u. For example, during decoding, operations such as a deinterleaving operation can be performed. Such operations can exchange the columns of codewords Vm based on the tracking record, but in a reversed order, to generate codewords V, which are not in systematic form. A decoder can be used to decode codewords V using the parity check matrix H to generate the original message information u.
During the upper triangularization operation to generate sub-matrix T of matrix Hm, the columns of the parity check matrix H can be randomly selected to generate the columns of sub-matrix T. This random selection may increase a probability of sub-matrix T having a size R×R, where R is the rank of the parity check matrix H. The total number of rows of sub-matrix T is equal to R when sub-matrix T has a size R×R. If the size of sub-matrix T is R×R, then matrix Hm can have a full triangular structure, e.g., Hm=[T|B], where parameter g in
In some case, depending on the value of the entries of the parity check matrix H, the upper triangularization operation may unsuccessfully generate sub-matrix T having a size R×R (e.g., the total number of rows of sub-matrix T is less than R). In such case, matrix Hm does not have full triangular structure but it has an approximate triangular structure, as shown in
As shown in
As described above with reference to
These r rows, having entries with all zeros, correspond to dependent rows in the parity check matrix H. Thus, the r rows can be removed from matrix Hm2. Therefore, after the r rows are removed, matrix Hm2 can have fewer rows (fewer by r rows) than matrix Hm1.
The additional upper triangularization operation performed on sub-matrix Cm1 can include any combination of exchanging rows, exchanging columns, and arithmetic operations (e.g., Gaussian elimination operations). As a comparison, the upper triangularization operation performed on parity check matrix H to generate triangular sub-matrix T (
The additional upper triangularization operation performed on sub-matrix Cm1 can also modify the rows and columns of sub-matrices A, B, Cm1, and Dm1. Thus, after the additional upper triangularization operation, sub-matrices A, B, Cm1, and Dm1 of matrix Hm1 (
When an encoder, such as encoder 101 in
As described above with reference to
For matrix Hm2, a syndrome of valid codewords Vm is an all-zero vector of a size n−k, such that equation Hm2*VmT=0 is satisfied. Since Vm=[p1 p2 u], VmT=[p1 p2 u]T. As shown in
by replacing VmT=[p1 p2 u]T into equation Hm2*VmT=0, the following equation can be obtained.
Solving the above equation yields Equation (2) and Equation (3) below.
Cm2 p2=Dm2 u. Thus,
p2=(Cm2−1Dm2) (Equation 2)
Tp1=(Am2 p2+Bm2 u). Thus,
p1=T−1(Am2 p2+Bm2 u). Substituting p2=(Cm2−1 Dm2) from Equation (2) into equation p1=T−1(Am2 p2+Bm2 u) yields Equation (3).
p1=T−1(A(Cm2−1Dm2)+Bm2u) (Equation 3)
Based on Equation (2) and Equation (3), an encoder, such as encoder 101 of
The process used to generate matrices Hm1 and Hm2, as described above, may also include generating (e.g., creating) a tracking record (e.g., a map). This tracking record can track position numbers of rows or columns of the parity check matrix H that have been exchanged during the generation of matrices Hm1 and Hm2. For example, this tracking record can track the position numbers of rows or columns of the parity check matrix H that have been exchanged during both the operations to make all entries of sub-matrix E zeros and the triangularization operations performed on sub-matrix matrix Cm1. This tracking record can also link (e.g., map) position numbers of rows or columns of the parity check matrix H that have been exchanged during the generation of matrices Hm1 and Hm2. Thus, this tracking record also contains a link between the position numbers of the columns of matrix Hm2 and the position numbers of the columns of parity check matrix H.
The combination of the tracking record generated during the generation of matrices Hm1 and Hm2 (
As described above, an encoder described herein can generate codewords Vm based on Equations (2) and (3). Multiplications in the parameters in Equations (2) and (3) can be obtained by operations such as exclusive-OR additions. Thus, the encoder may store only matrix Hm2 (and not the parity check matrix H) and the product Cm2−1 Dm2 because other values, e.g., A, B, and u, are available from matrix Hm2 and from message information u. Further calculations may provide Dm=ET−1 B. Since Dm can be available from matrix Hm1, Dm2 can also be available and Dm2 is a modified version of Dm, Dm2 is may not need to be stored for encoding operations. Thus, alternatively, the encoder may store (e.g., store in a memory) only matrix Hm2 and Cm2−1 and T−1 (without storing Dm2). During encoding, the encoder may access a memory to retrieve entries of matrix Hm2 and Cm2−1 and T−1 to generate parity p1 and p2 based on Equations (2) and (3) and generate codewords Vm=[p1 p2 u].
As a comparison, a traditional encoding may store sub-matrix P of generator matrix Gm. Sub-matrix P has a size k×(n−k). In the encoding described herein, each of sub-matrices Cm2−1 and Dm2 and T−1 of a matrix Hm2 has a size smaller than the size of sub-matrix P.
System 700 can be a memory system having memory devices to store information. For example, system 700 can include a device 710, which can include a memory controller, to control a transfer of information to and from a device 720, which can include a memory device.
As shown in
System 700 can store parameters associated with encoding operations in one or both of memory 725 of device 710 and memory cells 721 of device 720. These parameters can include tracking records, such as the tracking records described above with reference to
System 700 can also include a device 740, which can include a processor, such as general purpose processor, or an application specific integrated circuit (ASIC). In an operation, e.g., a write operation of device 720, device 710 may receive message information u at its input, which is coupled to interface 751. Device 710 may generate codewords Vm having message information u and provide codewords Vm to its output, which is coupled to interface 752. In another operation, e.g., a read operation of device 720, device 710 may receive codewords Vm output from device 720 via interface 752, decode codewords Vm to obtain message information u, and then send message information u to device 740 via interface 751. Interfaces 751 can include a wired interface or a wireless interface or a combination of both. Interfaces 752 can include a wired interface or a wireless interface or a combination of both. Each of interfaces 751 and 752 can include a bi-directional interface. For example, interface 752 can include bi-directional conductors (e.g., a serial bus or a parallel bus) to transfer codewords Vm to and from device 720 on the same bi-directional conductors.
System 700 can also include a storage device 760. A portion of storage device 760 or entire memory 725 can be external to system 700. Storage device 760 can include any form of computer-readable storage medium comprising instructions, which when implemented by one or more processors (e.g., a processor in a computer or in a wireless communication device) or by device 710 or 740, can perform all operations or a part of operations associated with generation of codewords Vm described herein. For example, storage device 760 can include instructions to generate matrices, such as matrices Hm, Hm1, and Hm2, to calculate equations, such as Equations (1), (2), and (3), and to generate tracking records (e.g., rows and columns exchange) described above with reference to
Alternatively or in addition to storage device 760, an electronic unit 770 can operate to generate matrices, such as matrices Hm, Hm1, and Hm2, to calculate equations, such as Equations (1), (2), and (3), and to generate tracking records (e.g., rows and columns exchange) described above with reference to
A portion of system 700 (e.g., devices 710 and 720) or all of system 700 can be included in the same semiconductor chip, in the same integrated circuit package, or in the same circuit board.
The illustrations of apparatus (e.g., apparatus 100) and systems (e.g., system 700) are intended to provide a general understanding of the structure of various embodiments and are not intended to provide a complete description of all the elements and features of apparatus and systems that might make use of the structures described herein.
Any of the components described above with reference to
The apparatus and systems of various embodiments may include or be included in electronic circuitry used in high-speed computers, communication and signal processing circuitry, single or multi-processor modules, single or multiple embedded processors, multi-core processors, message information switches, and application-specific modules including multilayer, multi-chip modules. Such apparatus and systems may further be included as sub-components within a variety of electronic systems, such as televisions, cellular telephones, personal computers (e.g., laptop computers, desktop computers, handheld computers, tablet computers, etc.), workstations, radios, video players, audio players (e.g., MP3 (Motion Picture Experts Group, Audio Layer 3) players), vehicles, medical devices (e.g., heart monitor, blood pressure monitor, etc.), set top boxes, and others.
The embodiments described above with reference to
The above description and the drawings illustrate some embodiments of the invention to enable those skilled in the art to practice the embodiments of the invention. Other embodiments may incorporate structural, logical, electrical, process, and other changes. Examples merely typify possible variations. Portions and features of some embodiments may be included in, or substituted for, those of others. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description.
Claims
1. An apparatus comprising:
- an input to receive message information;
- an encoder to generate codewords having the message information and parity information, and to generate the parity information based on an equation calculated from a combination of at least an inverse of a triangular sub-matrix generated from a first portion of a parity check matrix of a low-density parity check code and a sub-matrix generated from a second portion of the parity check matrix; and
- an output to provide the codewords.
2. The apparatus of claim 1, wherein the equation includes p=T−1(Bu), wherein p denotes the parity information, T−1 denotes the inverse of the triangular sub-matrix, B denotes the sub-matrix generated from the second portion of the parity check matrix, and u denotes the message information.
3. The apparatus of claim 1, wherein the encoder is configured to store entries of the inverse of the triangular sub-matrix.
4. The apparatus of claim 1, wherein the encoder is included in a memory device coupled to receive the codewords, the memory device including memory cells to store the codewords.
5. The apparatus of claim 4, wherein the memory device is configured to output the codewords in a read operation of the memory device.
6. The apparatus of claim 5, wherein the input and the output comprise a bi-directional interface of the memory device.
7. The apparatus of claim 1, wherein the apparatus is configured to store a record linking a position number of at least one column of the triangular sub-matrix with a position number of at least one column of the parity check matrix.
8. An apparatus comprising:
- an input to receive message information; and
- a module to generate codewords having the message information and parity information, the module configured to generate a portion of the parity information based on a first equation calculated from at least an inverse of a first sub-matrix in a first portion of a matrix, the first sub-matrix including a diagonal entry having a value of one, the module also configured to generate an additional portion of the parity information based on a second equation calculated from at least a triangular sub-matrix in a second portion of the matrix; and
- an output to provide the codewords.
9. The apparatus of claim 8, wherein the first equation includes p2=(Cm2−1 Dm2)u, the second equation includes p1=T−1 (Am2 p2+Bm2 u), wherein p1 and P2 denote the portions of the parity information, Cm2 denotes the first sub-matrix in the first portion of a matrix, T−1 denotes an inverse of the triangular sub-matrix, and Am2, Bm2, and Dm2 denote other sub-matrices of the matrix, the matrix having a block structure [ T A m 2 B m 2 0 C m 2 D m 2 ].
10. The apparatus of claim 8, wherein the module is configured to store entries of the inverse of the triangular sub-matrix, and entries of the inverse of the first sub-matrix in the first portion of a matrix.
11. The apparatus of claim 8, wherein the module is configured to store entries of a parity check matrix of a low-density parity check code, and wherein the matrix is generated from the parity check matrix.
12. The apparatus of claim 11, wherein the module is configured to store a record linking at least a portion of column numbers of the matrix with at least a portion of column numbers the parity check matrix.
13. The apparatus of claim 8, wherein the module comprises a memory device having memory cells to store the codewords.
14. A method comprising:
- receiving message information;
- generating parity information based on an equation calculated from at least an inverse of a triangular sub-matrix and a second sub-matrix, the triangular sub-matrix generated from a first portion of a parity check matrix of a low-density parity check code, the second sub-matrix generated from a second portion of the parity check matrix; and
- generating a codeword based at least in part on the parity information.
15. The method of claim 14, wherein the equation includes p=T−1(Bu), wherein p denotes the parity information, T−1 denotes the inverse of the triangular sub-matrix, B denotes the second sub-matrix, and u denotes the message information.
16. The method of claim 14, further comprising:
- accessing a memory to retrieve entries of the inverse of the triangular sub-matrix.
17. The method of claim 14, wherein the codewords include a combination of the message information and the parity information.
18. The method of claim 14, further comprising:
- decoding the codeword to retrieve the message information.
19. The method of claim 14, further comprising:
- generating an additional portion of the parity information based on a second equation calculated from at least a triangular sub-matrix in a second portion of the matrix.
20. The method claim 19, wherein the first equation includes p2=(Cm2 Dm2)u, the second equation includes p1=T−1(Am2 p2+Bm2 u), wherein p1 and p2 denote the portion and the additional portion of the parity information, Cm2 denotes the first sub-matrix, T denotes the triangular sub-matrix, and Am2, Bm2, and Dm2 denote other sub-matrices of the matrix, the matrix having a block structure [ T A m 2 B m 2 0 C m 2 D m 2 ].
Type: Application
Filed: Sep 15, 2014
Publication Date: Feb 5, 2015
Inventors: Chandra C. Varanasi (Broomfield, CO), Guiqiang Dong (Troy, NY)
Application Number: 14/486,825
International Classification: H03M 13/11 (20060101); G06F 11/10 (20060101);