US 20080016433 A1 Abstract A method of constructing a puncture sequence includes providing a seed puncture sequence including a plurality of elements. The elements of the seed puncture sequence are based upon non-zero elements of a plurality of columns of a parity-check matrix having a column dimension and a row dimension. In this regard, the parity-check matrix defines an error correction code, and has been constructed based upon a seed parity-check matrix derived from an edge ensemble. After providing the seed puncture sequence, a variable node-puncture sequence can be constructed based thereupon. The variable node-puncture sequence, then, corresponds to a puncture sequence configured for processing an error correction code.
Claims(32) 1. A network entity comprising:
a memory capable of storing a seed puncture sequence, the seed puncture sequence including a plurality of elements based upon non-zero elements of a plurality of columns of a parity-check matrix having a column dimension and a row dimension, the parity-check matrix defining an error correction code and having been constructed based upon a seed parity-check matrix derived from an edge ensemble; and a component capable of constructing a variable node-puncture sequence based upon the seed puncture sequence, the variable node-puncture sequence corresponding to a puncture sequence configured for processing an error correction code. 2. A network entity according to 3. A network entity according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-degree sequence d_{SEED,m }including a plurality of elements that each indicate a number of non-zero elements of the column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 4. A network entity according to constructing an expanded puncture-degree sequence p _{DEGREE }of dimension ((L_{m}N/mN_{SEED})×1) based upon the at least one seed puncture-degree sequence d_{SEED,m}, the expanded puncture-degree sequence including a plurality of elements that each indicate a number of non-zero elements of the column of an expanded parity-check matrix H of dimension ((N−K)×N), N/mN_{SEED }comprising a positive integer; and mapping the expanded puncture-degree sequence to a variable node-puncture sequence, the variable node-puncture sequence including a plurality of elements that each indicate a location of a column of the expanded parity-check matrix H. 5. A network entity according to 6. A network entity according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-node sequence n_{SEED,m }including a plurality of elements that each indicate a location of a column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 7. A network entity according to v
_{NODE} ^{T}=[v_{1} ^{T }v_{2} ^{T }. . . v_{L} _{ m } ^{T}] based upon at least one seed puncture-node sequence the variable node-puncture sequence v
_{NODE} ^{T }including a plurality of elements: for i=1, 2, . . . , L
_{m}, superscript T notationally representing a matrix transpose, and N representing a length of an expanded parity-check matrix H. 8. A network entity according to providing the seed parity-check matrix, the seed parity check matrix having a column dimension and a row dimension; constructing a structured array exponent matrix using modulo arithmetic of a number equal to or greater than the seed parity-check matrix column dimension; constructing a final exponential matrix based upon the seed parity-check matrix and the structured array exponent matrix; and
expanding the final exponential matrix to form an expanded parity-check matrix corresponding to the error correction code.
9. A network entity comprising:
a first means for providing a seed puncture sequence, the seed puncture sequence including a plurality of elements based upon non-zero elements of a plurality of columns of a parity-check matrix having a column dimension and a row dimension, the parity-check matrix defining an error correction code and having been constructed based upon a seed parity-check matrix derived from an edge ensemble; and a second means for constructing a variable node-puncture sequence based upon the seed puncture sequence, the variable node-puncture sequence corresponding to a puncture sequence configured for processing an error correction code. 10. A network entity according to 11. A network entity according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-degree sequence d_{SEED,m }including a plurality of elements that each indicate a number of non-zero elements of the column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 12. A network entity according to constructing an expanded puncture-degree sequence p _{DEGREE }of dimension ((L_{m}N/mN_{SEED})×1) based upon the at least one seed puncture-degree sequence d_{SEED,m}, the expanded puncture-degree sequence including a plurality of elements that each indicate a number of non-zero elements of the column of an expanded parity-check matrix H of dimension ((N−K)×N), N/mN_{SEED }comprising a positive integer; and mapping the expanded puncture-degree sequence to a variable node-puncture sequence, the variable node-puncture sequence including a plurality of elements that each indicate a location of a column of the expanded parity-check matrix H. 13. A network entity according to 14. A network entity according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-node sequence n_{SEED,m }including a plurality of elements that each indicate a location of a column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 15. A network entity according to v
_{NODE} ^{T}=[v_{1} ^{T }v_{2} ^{T }. . . v_{L} _{ m } ^{T}] based upon at least one seed puncture-node sequence the variable node-puncture sequence v
_{NODE} ^{T }including a plurality of elements: for i=1, 2, . . . , L
_{m}, superscript T notationally representing a matrix transpose, and N representing a length of an expanded parity-check matrix H. 16. A network entity according to a third means for processing an error correction code based upon the puncture sequence, the error correction code having been generated by:
providing the seed parity-check matrix, the seed parity check matrix having a column dimension and a row dimension;
constructing a structured array exponent matrix using modulo arithmetic of a number equal to or greater than the seed parity-check matrix column dimension;
constructing a final exponential matrix based upon the seed parity-check matrix and the structured array exponent matrix; and
expanding the final exponential matrix to form an expanded parity-check matrix corresponding to the error correction code.
17. A method comprising:
providing a seed puncture sequence, the seed puncture sequence including a plurality of elements based upon non-zero elements of a plurality of columns of a parity-check matrix having a column dimension and a row dimension, the parity-check matrix defining an error correction code and having been constructed based upon a seed parity-check matrix derived from an edge ensemble; and constructing a variable node-puncture sequence based upon the seed puncture sequence, the variable node-puncture sequence corresponding to a puncture sequence configured for processing an error correction code. 18. A method according to 19. A method according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-degree sequence d_{SEED,m }including a plurality of elements that each indicate a number of non-zero elements of the column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 20. A method according to constructing an expanded puncture-degree sequence p _{DEGREE }of dimension ((L_{m}N/mN_{SEED})×1) based upon the at least one seed puncture-degree sequence d_{SEED,m}, the expanded puncture-degree sequence including a plurality of elements that each indicate a number of non-zero elements of the column of an expanded parity-check matrix H of dimension ((N−K)×N), N/mN_{SEED }comprising a positive integer; and mapping the expanded puncture-degree sequence to a variable node-puncture sequence, the variable node-puncture sequence including a plurality of elements that each indicate a location of a column of the expanded parity-check matrix H. 21. A method according to 22. A method according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-node sequence n_{SEED,m }including a plurality of elements that each indicate a location of a column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 23. A method according to v
_{NODE} ^{T}=[v_{1} ^{T }v_{2} ^{T }. . . v_{L} _{ m } ^{T}] based upon at least one seed puncture-node sequence the variable node-puncture sequence v
_{NODE} ^{T }including a plurality of elements: for i=1, 2, . . . , L
_{m}, superscript T notationally representing a matrix transpose, and N representing a length of an expanded parity-check matrix H. 24. A method according to processing an error correction code based upon the puncture sequence, the error correction code having been generated by:
providing the seed parity-check matrix, the seed parity check matrix having a column dimension and a row dimension;
constructing a structured array exponent matrix using modulo arithmetic of a number equal to or greater than the seed parity-check matrix column dimension;
constructing a final exponential matrix based upon the seed parity-check matrix and the structured array exponent matrix; and
expanding the final exponential matrix to form an expanded parity-check matrix corresponding to the error correction code.
25. A computer program product comprising at least one computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising:
a first executable portion for providing a seed puncture sequence, the seed puncture sequence including a plurality of elements based upon non-zero elements of a plurality of columns of a parity-check matrix having a column dimension and a row dimension, the parity-check matrix defining an error correction code and having been constructed based upon a seed parity-check matrix derived from an edge ensemble; and a second executable portion for constructing a variable node-puncture sequence based upon the seed puncture sequence, the variable node-puncture sequence corresponding to a puncture sequence configured for processing an error correction code. 26. A computer program product according to 27. A computer program product according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-degree sequence d_{SEED,m }including a plurality of elements that each indicate a number of non-zero elements of the column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 28. A computer program product according to _{DEGREE }of dimension ((L_{m}N/mN_{SEED})×1) based upon the at least one seed puncture-degree sequence d_{SEED,m}, the expanded puncture-degree sequence including a plurality of elements that each indicate a number of non-zero elements of the column of an expanded parity-check matrix H of dimension ((N−K)×N), N/mN_{SEED }comprising a positive integer; and 29. A computer program product according to 30. A computer program product according to _{SEED,m }of dimension (L_{m}×1) for m=1, 2, . . . M, the seed puncture-node sequence n_{SEED,m }including a plurality of elements that each indicate a location of a column of parity-check matrix H_{m }of dimension (m(N_{SEED}−K_{SEED})×mN_{SEED}), N_{SEED }and K_{SEED }representing a length and a number of information bits, respectively, of the error correction code defined by the seed parity-check matrix. 31. A computer program product according to _{NODE} ^{T}=[v_{1} ^{T }v_{2} ^{T }. . . v_{L} _{ m } ^{T}] based upon at least one seed puncture-node sequence the variable node-puncture sequence v
_{NODE} ^{T }including a plurality of elements: _{m}, superscript T notationally representing a matrix transpose, and N representing a length of an expanded parity-check matrix H. 32. A computer program product according to a third executable portion for processing an error correction code based upon the puncture sequence, the error correction code having been generated by:
constructing a final exponential matrix based upon the seed parity-check matrix and the structured array exponent matrix; and
Description The present invention generally relates to parity-check codes for encoding and decoding transmissions, and more particularly relates to block coding techniques such as low-density parity-check (LDPC) coding techniques. BACKGROUND OF THE INVENTION Low-density parity-check (LDPC) codes have recently been the subject of increased research interest for their enhanced performance on additive white Gaussian noise (AWGN) channels. As described by Shannon's Channel Coding Theorem, the best performance is achieved when using a code consisting off very long codewords. In practice, codeword size is limited in the interest of reducing complexity, buffering, and delays. LDPC codes are block codes, as opposed to trellis codes that are built on convolutional codes. LDPC codes constitute a large family of codes including turbo codes. Block codewords are generated by multiplying (modulo 2) binary information words with a binary matrix generator. LDPC codes use a check parity matrix H, which is used for decoding. The term low density derives from the characteristic that the check parity matrix has a very low density of non-zero values, making it a relatively low complexity decoder while retaining good error protection properties. The parity check matrix H measures (N−K)×N, wherein N represents the number of elements in a codeword and K represents the number of information elements in the codeword. The matrix H is also termed the LDPC mother code. For the specific example of a binary alphabet, N is the number of bits in the codeword and K is the number of information bits contained in the codeword for transmission over a wireless or a wired communication network or system. The number of information elements is therefore less than the number of codeword elements, so K<N. Irregular LDPC codes have been shown to significantly outperform regular LDPC codes, which has generated renewed interest in this coding system since its inception decades ago. The bipartite graph of Irregular codes can be designed for many different symmetric channels via density evolution and genetic hill-climbing algorithms (i.e., Differential Evolution) by adjusting variable edge polynomial λ(x) and check edge polynomial ρ(x), defined as:
In accordance with various conventional systems implementing an LDPC coding architecture including multiple coding rates for its error control, an LDPC encoder encodes a K-dimensional sequence of information bits into an N-dimensional codeword by accessing a stored LDPC mothercode and one of several stored puncture sequences, one puncture sequence corresponding to one code rate. As will be appreciated, however, such conventional systems may require significant non-volatile memory for each coding rate for a single mother code. In this regard, in one conventional system, a different LDPC code is designated for each coding rate and channel (i.e., different code realizations from different λ(x) and ρ(x) corresponding to the desired code rates). Such a conventional system uses one LDPC code for each coding rate, and may increase substantially when the set of code rates is large and/or when code words are long. The memory requirements can render this approach prohibitive for adaptive coding and modulation schemes operating in slowly varying channels. In another conventional system, codeword elements of a single LDPC code are punctured using multiple puncturing sequences chosen at random using puncturing probabilities. This system requires memory for storing multiple puncturing sequences, one for each code rate, which may become prohibitive for a large set of coding rates and/or long codeword lengths. Besides the substantial amount of memory that may be required to store conventional puncturing sequences for various coding rates, the determination of the puncturing sequences may itself be computationally intensive. In this regard, one conventional technique for designing a puncture sequence is based on linear programming to determine puncturing probabilities that maximize the puncturing fraction:
In an effort to at least partially overcome the drawbacks of conventional systems and methods of LDPC coding, a coding system and method has been developed that is more compatible with adaptive coding communication systems, especially by requiring less memory than that required in conventional systems. Such a system and method is disclosed in U.S. patent application Ser. No. 10/608,943, entitled: Low-Density Parity-Check Codes for Multiple Code Rates, filed Jun. 26, 2003 and published Dec. 30, 2004 as U.S. Patent Application Publication No. 2004/0268205, the contents of which are hereby incorporated by reference. In accordance with the system and method of the '943 application, puncture sequences for a number of effective code rates can be determined in a nested manner, the puncture probabilities being adjusted using the integer index of each sequence in a code of finite length. By nesting the puncture sequences, the system and method of the '943 application is better adapted for use in adaptive coding rate communications systems, and significantly reduces the memory requirements for multiple code rates. Whereas systems and methods such as those described above adequately perform LDPC coding, it is generally desirable to improve upon existing systems and methods, including those of the '943 application. Accordingly, exemplary embodiments of the present invention provide an improved network entity, method and computer program product for constructing a variable node-puncture sequence, and using that sequence to process an error correction code. Exemplary embodiments of the present invention address the memory issues associated with puncturing low-density parity-check (LDPC) codes. In this regard, puncturing LDPC codes can include appropriately selecting a variable-degree, and thus a variable-node, to puncture. In randomly constructed LDPC codes, such selection is conventionally accomplished for each code of a particular block length, which typically results in large storage requirements when the system uses a large number of blocks and code rates. For structured LDPC codes based on permutation sub-matrices, multiple block sizes can be made from a “seed” matrix, but conventional techniques did not provide a way to efficiently puncturing these codes in a structured manner. Exemplary embodiments of the present invention therefore provide a structured puncturing approach to LDPC codes, such as irregular LDPC codes. Exemplary embodiments offer a significant reduction in storage requirements and can maintain relatively good performance across a wide range of code rates and permutation sub-matrix sizes. Generally, and as explained further below, the approach of exemplary embodiments of the present invention uses a “seed” puncture sequence comprising of either variable-degrees or variable-nodes designed for a “seed” parity-check matrix to achieve a wide range of code rates. These seed puncture sequences can then be expanded in a structured way so as to deliver the appropriate puncturing pattern for a parity-check matrix expanded from the seed parity-check matrix, thereby maintaining the same asymptotic properties belonging to the edge distributions and puncturing probabilities of the seed components. According to one aspect of the present invention, a method of constructing a puncture sequence includes providing a seed puncture sequence including a plurality of elements. The elements of the seed puncture sequence are based upon non-zero elements of a plurality of columns of a parity-check matrix having a column dimension and a row dimension. In this regard, the parity-check matrix defines an error correction code, and has itself been constructed based upon a seed parity-check matrix derived from an edge ensemble. The seed parity-check matrix may be of dimension (m(N More particularly, the seed puncture sequence can comprise a seed puncture-degree sequence including a plurality of elements each of which indicate a number of non-zero elements of a column of the parity-check matrix. For example, at least one seed puncture-degree sequence d In the alternative of the seed puncture sequence comprising a seed puncture-degree sequence, the seed puncture sequence can comprise a seed puncture-node sequence including a plurality of elements each of which indicate a location of a column of the parity-check matrix. Similar to the seed puncture-degree sequence, for example, at least one seed puncture-node sequence n Irrespective of how the puncture sequence is constructed, the puncture sequence can thereafter be used to process an error correction code. In such instances, the error correction can be generated according to a sub-process including providing a seed parity-check matrix having a column dimension and a row dimension. A structured array exponent matrix can then be constructed using modulo arithmetic of a number equal to or greater than the seed parity-check matrix column dimension. Next, a final exponential matrix can be constructed based upon the seed parity-check matrix and the structured array exponent matrix. Thereafter, the final exponential matrix can be expanded to form an expanded parity-check matrix corresponding to the error correction code. According to other aspects of the present invention a network entity and computer program product are provided for constructing a variable node-puncture sequence, and using that sequence to process an error correction code. Exemplary embodiments of the present invention therefore provide an improved network entity, method and computer program product. And as indicated above and explained in greater detail below, the network entity, method and computer program product of exemplary embodiments of the present invention may solve the problems identified by prior techniques and may provide additional advantages. 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: The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout. Referring to The communication system The base station The terminal It is understood that the controller The terminal In addition, the terminal As described herein, the client application(s) may each comprise software operated by the respective entities. It should be understood, however, that any one or more of the client applications described herein can alternatively comprise firmware or hardware, without departing from the spirit and scope of the present invention. Generally, then, the network entities (e.g., terminal Reference is now made to In the illustrated system, an information source As the vector x is transmitted over the channel(s) A. Irregular Structured LDPC Codes As shown and explained herein, the LDPC code utilized by the LDPC encoder Referring now to One function of the seed matrix H Before, after or as the matrix H After constructing the seed and structured array exponent matrices, H Alternatively, the structured array exponent matrix E As will be appreciated, then, transformation of the structured array exponent matrix E Irrespective of if, and if so how, the structured array exponent matrix E After constructing the final exponent matrix F Irrespective of the type and construction of the LDPC code (parity-check matrix H) utilized by the LDPC encoder 1. Puncture-Degree Sequences Referring Irrespective of how the seed puncture-degree sequences d After constructing the expanded puncture-degree sequence p Generally, the degree-to-node mapping may be summarized as p 2. Puncture-Node Sequences Referring Irrespective of how the seed puncture-node sequences n As explained above, the LDPC encoder It should also be noted that exemplary embodiments of the present invention described above for structured puncturing may also apply for irregular LDPC codes H that have a single integer multiple of variable nodes matching in both degree and count of a smaller LDPC code (e.g., H According to one exemplary aspect of the present invention, the functions performed by one or more of the entities of the system, such as the terminal In this regard, Accordingly, blocks or steps of the flowcharts support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that one or more blocks or steps of the flowcharts, and combinations of blocks or steps in the flowcharts, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions. Many modifications and other embodiments of the invention will come to mind to one skilled in the art to which this invention pertains having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the invention is not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation. Referenced by
Classifications
Legal Events
Rotate |