The present invention relates to a method for constructing forward error correction code in digital information transmission technology, and more particularly, to a method for constructing Low Density Parity Check (LDPC) code, and encoding and decoding devices using the same.
In 1948, Claude Shannon initially proposed his famous “noisy channel encoding theory” which firstly gives the maximum transmission rate of the noisy channel information, i.e., channel capacity. Meanwhile, Shannon also derived the maximum transmission capability of the noisy channel, i.e., the minimum Signal-to-Noise Ratio required by errorless information transmission, which is also called as Shannon's limit. The Shannon's limit is the most important feature for evaluating the capability of channel error correction. Closer the error correction performance curve to the Shannon's limit, the more excellent is the error correction performance. Otherwise, farther to the Shannon's limit, the worse is the performance. Although the encoding theory of Shannon gives the channel capacity which can be obtained by the optimal encoding scheme, detailed encoding scheme is not provided, and the complexity degree is not described either.
The Low Density Parity Check (LDPC) is a kind of excellent channel error correction encoding scheme which may approach the Shannon's limit. The LDPC code is a special linear parity block code, whose parity matrix is “sparse”, i.e. there is only very few non-zero elements (for the binary code, non-zero element is 1), and the remaining elements are all zero. In 1960, Robert Gallager firstly proposed the concept of LDPC code in his Ph.D. dissertation and also suggested two iterated decoding algorithms, thus the LDPC code is also called as Gallager code. Gallager indicated theoretically that the LDPC code may approach the channel capacity with lower complexity by using iterated decoding algorithms (or message delivering algorithms). This is a great invention. However, in the following 30 years, researchers did not pay enough attention to the invention.
From the current viewpoint, one reasons why the LDPC code was ignored might consist in that the software and hardware levels of the computers were very inferior at that time, and thus the researches could not know the excellent performance of the LDPC code from results of computer simulations; as another reason, the LDPC code needs a larger storage space which could not be born at that time. Additionally, at that time, other codes such as Reed-Solomon code and Hamming code were available, which might be considered as temporarily usable channel encoding schemes, and thus the researchers did not intently forward their researches onto the LDPC code.
Even today, if it is intended to apply the LDPC code to actual communication systems, the LDPC code still needs to be carefully studied and designed. Because the actual communication systems put some special requirements on the LDPC code, such as hardware schemes of codec with lower complexity, excellent error correction performance, and the like, thus, besides the deep studies on the encoding/decoding method, it is also required to specially limit the construction of the parity matrix of the LDPC code. Generally, there are two methods of constructing the parity matrix of the LDPC code: one is to firstly set some limitations on the attribute of parity matrix such as minimum girth or junction degree distribution etc., and then randomly or pseudo-randomly generate the parity matrix by using the computer searching methods, the searching method takes a long period of time and it can not ensure the convergence of search procedure. Since the generated check matrices have high randomicity level and low regularity level, the check matrices have to be stored during the process of encoding and decoding, thus it increases the memory demand. The other method is to construct the parity matrix of the LDPC code by using the mathematical formulae to make it have regular structure. The method solves the problem of storing the check matrices. However, each row and column of a single check matrix lacks of rule, which is hard for parallel processing.
To solve the above problem, the present invention provides a method for constructing a LPDC code check matrix. With the method thereof, a LPDC code check matrix with stable performance can be constructed, and any code rate can be obtained. And the check matrix generated by the method is preferable for encoding and decoding.
According to an aspect of the invention, a method for constructing a LDPC check matrix is provided, which constructs a fundamental matrix firstly, then extends the fundamental matrix by extending columns firstly and then extending rows to obtain the objective check matrix.
The method for constructing the check matrix H with dimensions of M×N, comprises the following steps:
a step of obtaining a common factor set Fc of M and N;
a step of selecting proper extending ratio KεFc and generating a fundamental matrix MB×NB with dimensions MB×NB using any manner, in which MB=M/K, NB=N/K;
a step of extending by columns and constructing a matrix HR with dimensions of MB×N based on the fundamental matrix, which comprises the following steps: for non-zero elements with row-column coordinate (m, n) in the fundamental matrix, selecting a set of column extending coefficients {ki, 0≦ki≦K−1, iεZ+} which are different from each other, with “1” on positions (m, ki×NB+n) of the matrix HR; a step of extending by rows, and extending K rows based on each row of HR, and the method comprising: the t row (0≦t≦K−1) extended by a certain row of HR is obtained by cyclic shifting t×NB positions rightward.
To facilitate encoding, the HR generated according to the above constructing method can be stored in code table form. Each row of the code table records the positions of “1” in each row of HR.
According to another aspect of the invention, a method for constructing LDPC code check matrix is provided, which constructs a fundamental matrix firstly, then extends the fundamental matrix by extending rows firstly and then extending columns to obtain the objective check matrix.
The method for constructing the check matrix H with dimensions of M×N, comprises the following steps:
a step of obtaining a common factor set Fc of M and N;
a step of selecting proper extending ratio KεFc and generating a fundamental matrix MB×NB with dimensions of using any manner, in which MB=M/K, NB=N/K, as shown in
a step of extending by rows and constructing a matrix HC with dimensions of M×NB based on the fundamental matrix, which comprises the following steps: for non-zero elements with row-column coordinate (m, n) in the fundamental matrix, selecting a set of row extending coefficients {ki, 0≦ki≦K−1, iεZ′} which are different from each other, with “1” on positions (ki×MB+m, n) of the matrix HC;
a step of extending by columns, and extending out K columns by each column of HC, and the step thereof comprises: the tth column (0≦t≦K−1) extended by a certain column of HC is obtained by cyclic shifting t×NB positions downward.
To facilitate encoding, the HC generated according to the above constructing method can be stored in code table form. Each row of the code table records the positions of “1” in each column of Hc.
According to still another aspect of the invention, a method of encoding a check matrix with dimensions of M×N constructed by the method for constructing a LDPC check matrix of the invention is provided, comprising the following steps:
a step of constructing a sort table IDX with a length of N, in which IDX={Ik}, 0≦k<N, 0≦Ik<N;
a step of re-sorting the column of the check matrix with the dimensions of M×N according to the sort table IDX to generate a matrix H′ with dimensions of M×N. The kth column of the matrix H′ is the Ikth column of the original M×N matrix. The obtained matrix can be further separated into two sub matrices H′=[HP HI], in which HI is a matrix with a dimension of M×(N−M) and HP is a matrix with a dimension of M×M;
a step of inputting sequence, constructing a column vector m with a dimension of (N−M)×1, and calculating the column vector with a dimension of M×1 pT=mT(HP−1HI)T; a step of outputting the sorting result based on the sorting table IDX in which
According to a still further aspect of the invention, an encoding device is provided which encodes inputted binary information using the above encoding method and outputs system code sequence which is encoded and position transformed. The encoding device comprises: a matrix multiply module outputting a check sequence p which is obtained by multiplying the binary information sequence with a matrix (HP−1HI)T, i.e., pT=mT(HP−1HI)T; a sorting index module having N memory units which store index values of a sorting table IDX in turn; and a sorting output module which sorts m and p based on the index values stored in the sorting index table and outputs a code word c.
According to a still another aspect of the invention, a method of decoding the system code sequence formed by the above encoding method is provided comprising the following steps: a step of decoding the system code sequence outputted by the encoding device based on the M×N check matrix using any decoding algorithm; and a step of extracting information sequence after decoding using the same sorting table IDX as that for encoding.
According to a still further aspect of the invention, a decoding device is provided, which decodes the input encoded system code sequence using the above decoding method and outputs the decoded information sequence, the decoding device comprises: a LDPC decoding module which decodes an inputted system code sequence LLR using any LDPC decoding algorithm and outputs a hard-decision sequence ĉ; a sorting index module having N memory units which stores index values of a sorting table IDX; and a sorting output module which extracts an information sequence {circumflex over (m)} from the hard-decision sequence ĉ, i.e., {circumflex over (m)}k=ĉI
The present invention constructs the LDPC code check matrix using an algebraic structure, obtaining the LDPC code with stable performance. In addition, the LDPC code can be obtained using any code rate. Further, the encoding and decoding devices of the invention occupy less memory, which is preferable for optimization of the devices.
The present invention is described but not limited in conjunction with the embodiments shown in the drawings throughout which the similar reference signs represent the similar elements, in which:
The preferred embodiment of the invention will be described in detail with reference to accompanying figures.
The preferred embodiment of the invention adopts the same configuration as the conventional communication system, i.e., the mobile multimedia broadcasting system constructed according to the LDPC code check matrix of the invention comprises an encoder, a modulator, a de-modulator, and a decoder. The data are transmitted through channels.
The encoder performs forward error correction encoding to the information sequence including encoding by computer software, encoding by embedded hardware and encoding by special hardware.
The modulator transforms the output of the encoder into signals which are suitable for physical channel transmission.
The de-modulator transforms the signals received from the channels into the information sequence to be inputted into the decoder.
The decoder restores the information sequence outputted from the de-modulator into information sequence which may have errors.
The channel can be any possible data transmission physical channel, including wired communication and wireless communication channels. And the channel includes any possible storage media, including magnetic storage medium, optical storage medium and electronic storage medium.
Mobile multimedia digital broadcasting system STiMi achieves broadcasting coverage in large area and transmits multicasting services through satellites. And users can realize mobile receiving with a terminal.
Now an illustrational LDPC code with a code length of 9216 will be described.
A 4608×9126 check matrix is constructed according to the first method of the invention.
Firstly, a common factor set of 4608 and 9216 is obtained, which is denoted as Fc.
Secondly, a proper extending ratio K is selected, wherein KεFc. In the present embodiment, the extending ratio is selected to be a common factor 256. Thus, the dimensions of the fundamental matrix are 18×36. The fundamental matrix can be generated in any manner known in the art, as shown in
For each non-zero element in the fundamental matrix with dimensions of 18×36, a set of column extending coefficients {ki, 0≦ki≦255, iεZ+} which are different from each other are selected for extension, to be specific:
If the non-zero element has a row-column coordinate (m, n), there will be “1” in the positions (m, ki×36+n), thus after extension, a 18×9216 matrix will be generated as shown in
After column extension, the generated 18×9216 matrix is extended per row, and each row of the matrix is extended to 256 rows. Specifically, for the first row of the 18×9216 matrix, it is cyclic shift rightward by t×36 to obtain the tth row of the extended first row, where 0≦t≦255. For the second row, the above extending method is repeated, and according to this rule, all rows thereof are traversed as shown in
The code table of the 18×9216 matrix generated according to the above method is as follows:
The encoder encodes based on the above constructed LDPC code check matrix. The encoder comprises: a matrix multiply module 402 outputting a check sequence p which is obtained by multiplying the binary information sequence m with a matrix (HP−1HI)T, i.e., pT=mT(HP−1HI)T; a sorting index module 403 having 9216 memory units which store index values of a sorting table IDX in turn; and a sorting output module 404 which sorts m and p based on the index values stored in the sorting index table and outputs a code word c, as shown in
constructing a sorting table IDX with a length of 9216, in which IDX={Ik}, 0≦k<N, 0≦Ik<N, in which N=9216;
re-sorting the column of the 4608×9216 check matrix according to the sorting table IDX to generate a matrix H′=[HP HI] in which HI is a 4608×(9216−4608) matrix, and HP is a 4608×4608 matrix. The object of constructing the sorting table IDX is to ensure that the HP−1 is also a sparse matrix;
inputting a (9216−4608)×1 column vector as sequence construction column to calculate a 4608×1 column vector pT=mT(HP−1HI)T
outputting sorting results based on the sort table IDX, in which
The system code sequence which is position-transformed after encoding is transferred to a decoder through channels and decodes therein.
As shown in
The flows of the process conducted by the decoder are as follows:
In light of the 4608×9216 check matrix, the inputted system code sequence is decoded using any kind of decoding algorithm, and the decoded hard-decision sequence {ĉi, 0≦i≦9216} is outputted;
The decoded binary information sequence {{circumflex over (m)}k, 0≦k≦4607} is extracted using the same sort table IDX as that stored in the encoder, in which {circumflex over (m)}l
For the 4608×9216 check matrix, the sorting table IDX in the encoding device is as follows:
A 2304×9216 check matrix is constructed according to a first method of the invention.
Firstly, a common factor set of 2304 and 9216 is obtained, which is denoted as Fc.
Secondly, a proper extending ratio K is selected, KεFc. In the present embodiment, the extending ratio is selected to be a common factor 256. The dimensions of the fundamental matrix are 9×36. The fundamental matrix can be generated in any way known in the art.
For each non-zero element in the fundamental matrix with dimensions of 18×36, a set of column extending coefficients {ki, 0≦ki≦255, iεZ+} which are different from each other, are selected for extension, specifically:
If the non-zero element has a row-column coordinate (m, n), there will be “1” in the positions (m, ki×36+n), thus after the extension, to be a 9×9216 matrix will be generated.
After column extension, the generated 9×9216 matrix is extended by rows, and each row of the matrix is extended to 256 rows. Specifically, for the first row of the 9×9216 matrix, it is cyclic shift rightward by t×36 to obtain the tth row of the extended first row, where 0≦t≦255. For the second row, the above extending method is repeated, and according to this rule, all rows thereof are traversed.
The code table of the 9×9216 matrix generated according to the above method is as follows:
The encoder encodes based on the above constructed LDPC code check matrix. The encoder comprises: a matrix multiply module outputting a check sequence p which is obtained by multiplying the binary information sequence m with a matrix (HP−1HI)T, i.e., pT=mT(HP−1HI)T; a sorting index module having 9216 memory units which store index values of a sorting table IDX in turn; and a sorting output module which sorts m and p based on the index values stored in the sorting index table and outputs a code word c. The detailed encoding steps are as follows:
constructing a sorting table IDX with a length of 9216, in which IDX={Ik}, 0≦k<N, 0≦Ik<N, i.e., N=9216;
re-sorting the column of the 2304×9216 check matrix according to the sorting table IDX to generate a matrix H′=[HP HI] in which HI is a 2304×(9216−2304) matrix, and HP is a 2304×2304 matrix. The object of constructing the sorting table IDX is to ensure that the HP−1 is also a sparse matrix;
inputting sequence to construct (9216−2304)×1 column vector m, calculating 2304×1 column vector pT=mT(HP−1HI)T;
outputting sorting results based on the sorting table IDX, in which
The system code sequence which is position-transformed after encoding is transferred to a decoder through channels and decodes therein, specifically:
In light of the 2304×9216 check matrix, the inputted system code sequence is decoded using any kind of decoding algorithm, and the decoded hard-decision sequence {ĉi, 0≦i≦9216} is outputted;
The decoded binary information sequence {{circumflex over (m)}k, 0≦k≦6911} is extracted using the same sorting table IDX as that stored in the encoder, in which {circumflex over (m)}k=ĉI
Since the decoder has the same configuration as the decoder in the above embodiment, the detailed description is omitted.
For the 2304×9216 check matrix, the sorting table IDX in the encoder is as follows:
Performances of the LDPC code constructed based on above two embodiments are shown in
A 2304×9216 check matrix is constructed according to another method of the invention.
Firstly, a common factor set of 2304 and 9216 is obtained, which is denoted as Fc.
Secondly, a proper extending ratio K is selected, wherein KεFc. In the present embodiment, the extending ratio is selected to be a common factor 256. Thus, the fundamental matrix with dimensions of 9×36 is obtained. The fundamental matrix can be generated in any manner known in the art.
For each non-zero element in the fundamental matrix with dimensions of 18×36, a set of row extending coefficients {ki, 0≦ki≦255, iεZ+} which are different from each other are selected for extension, in which 0≦ki≦255. Specifically:
If the non-zero element has a row-column coordinate (m, n), there will be “1” in the positions (ki×9+m, n), thus after the extension, a 2304×36 matrix will be generated.
After row extension, the generated 2304×36 matrix is extended by columns, and each column of the matrix is extended to 256 columns. Specifically, for the first column of the 2304×36 matrix, it is cyclic shift rightward by t×9 to obtain the tth column of the extended first column, where 0≦t≦255. For the second column, the above extending method is repeated, and according to this rule, all columns thereof are traversed, thus generating a 2304×9216 check matrix.
Although the present invention is described in conjunction with the examples and embodiments, the present invention is not intended to be limited thereto. On the contrary, the present invention obviously covers the various modifications and may equivalences, which are all enclosed in the scope of the following claims.
Number | Date | Country | Kind |
---|---|---|---|
2006 1 0113914 | Oct 2006 | CN | national |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/CN2006/003091 | 11/16/2006 | WO | 00 | 11/8/2010 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2008/049285 | 5/2/2008 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
7525375 | Bucher et al. | Apr 2009 | B2 |
7536623 | Kim et al. | May 2009 | B2 |
7627805 | Mittelsteadt et al. | Dec 2009 | B2 |
7882418 | Lee et al. | Feb 2011 | B2 |
20090070652 | Myung et al. | Mar 2009 | A1 |
20090106625 | Jun et al. | Apr 2009 | A1 |
20090249159 | Lee et al. | Oct 2009 | A1 |
Number | Date | Country |
---|---|---|
1558556 | Dec 2004 | CN |
1564465 | Jan 2005 | CN |
1770640 | May 2006 | CN |
1783730 | Jun 2006 | CN |
WO 2006031062 | Mar 2006 | WO |
Number | Date | Country | |
---|---|---|---|
20110239077 A1 | Sep 2011 | US |