Decoding algorithm with enhanced parity check matrix and re-encoding scheme for LDPC code
09973212 ยท 2018-05-15
Assignee
Inventors
Cpc classification
H03M13/1108
ELECTRICITY
H03M13/116
ELECTRICITY
H03M13/3776
ELECTRICITY
H03M13/1185
ELECTRICITY
International classification
H03M13/00
ELECTRICITY
H03M13/37
ELECTRICITY
Abstract
A decoding algorithm with an enhanced parity check matrix and a re-encoding scheme for LDPC codes is disclosed. The decoding algorithm includes the steps of: providing the enhanced parity check matrix; receiving a message part of an original codeword encoded by a generator matrix from the enhanced parity check matrix; setting a LLR for each bit node of the enhanced parity check matrix; processing hard decision on the message part of the original codeword; encoding the message part of the original codeword by the generator matrix to generate a new codeword having a generated parity part; comparing the original parity part with the generated parity part to find out bits of difference; voting candidate error bits to choose the most probably erratic bits; modifying LLR of the chosen bits to have a modified codeword; and processing a conventional iterative decoding procedure on the modified codeword to have a processed codeword.
Claims
1. A computer-implemented method of decoding a Low Density Parity Check (LDPC) code with an enhanced parity check matrix and a re-encoding scheme to decrease decoding iteration of the LDPC code and shorten decoding latency, comprising the steps of: A. providing the enhanced parity check matrix which is formed by a plurality of sub-matrixes, wherein a first identity matrix in a specific location; B. receiving a message part of an original codeword encoded by a generator matrix from the enhanced parity check matrix with at least one bit is corrupted; C. setting a Log-Likelihood Ratio (LLR) for each bit node of the enhanced parity check matrix while keeping receiving an original parity part of the original codeword; D. processing hard decision on the message part of the original codeword; E. encoding the message part of the original codeword by the generator matrix to generate a new codeword having a generated parity part; F. comparing the original parity part with the generated parity part to find out bits of difference; G. voting candidate error bits to choose the most probably erratic bits; H. modifying LLR of the chosen bits to have a modified codeword; and I. processing a conventional iterative decoding procedure on the modified codeword to have a processed codeword, wherein the enhanced parity check matrix, H.sub.enhanced, has a form of
H.sub.enhanced=[H.sub.1|H.sub.2], wherein each sub-matrix is a zero matrix, an identity matrix or a shifted matrix which has all 1s in an identity matrix shifted to the right side a certain times; arrangement of identity matrixes in H.sub.2 is a dual-diagonal structure; a first column of sub-matrixes in H.sub.2 is close to H.sub.1; a first sub-matrix located first from the top of the first column and a last sub-matrix located last from the top of the first column are both identity matrixes or shifted matrixes; sub-matrixes between the first sub-matrix and the last sub-matrix are zero matrixes and the first identity matrix; the first identity matrix is located closer to the last sub-matrix than the first sub-matrix.
2. The computer-implemented method according to claim 1, further comprising the steps of, after step I: J. judging if a preset number of iteration is reached or a product of the enhanced parity check matrix and the processed codeword equals zero; and K. if a result of step J is no, repeating the procedure from step D with the processed codeword; if the result of step J is yes, outputting a message part of the processed codeword.
3. The computer-implemented method according to claim 1, wherein the first identity matrix is located next to the last sub-matrix.
4. The computer-implemented method according to claim 1, wherein the LLR for each bit node is available by
5. The computer-implemented method according to claim 1, wherein a voting means works for voting candidate error bits.
6. The computer-implemented method according to claim 1, wherein the LLR is modified by changing magnitude thereof or sign.
7. The computer-implemented method according to claim 1, wherein the conventional iterative decoding procedure is Sun-Product Algorithm (SPA).
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
(7) The present invention will now be described more specifically with reference to the following embodiments.
(8) Please refer to
(9) According to the present invention, the first step is to provide the enhanced parity check matrix (H.sub.enhanced will be used to illustrate the enhanced parity check matrix in any equation hereinafter) mentioned above which is formed by a number of sub-matrixes. Among these sub-matrixes, a first identity matrix is in a specific location (S01). In order to have better understanding about the enhanced parity check matrix, please refer to
(10) Arrangement of identity matrixes in H.sub.2 is a dual-diagonal structure. As marked in a darker background color, the identity matrixes forms two diagonals from top left to bottom right. A first column of sub-matrixes (enclosed by a dashed frame) is close to H.sub.1. A first sub-matrix is located first from the top of the first column. In
(11) Next, receive a message part of an original codeword which was encoded by a generator matrix from the enhanced parity check matrix. (S02). In step S02, the received original codeword has at least one bit is corrupted due to noise in the channel it was transmitted. It should noticed that for the original codeword, the corrupted bits (or error bits) may in the message part, in an original parity part (original used here is to distinguish from other parity part illustrated later) received later or both in the message part and the original parity part. The decoding algorithm takes all situations into consideration, not only the error bits in the message part.
(12) Then, set a Log-Likelihood Ratio (LLR) for each bit node of the enhanced parity check matrix while keeping receiving the original parity part of the original codeword (S03). The LLR for each bit node is available by
(13)
where y.sub.k is received signal of any one bit in the message part of the original codeword and is variance of all received signals. Numeral k can be any positive integer. In the example of original codeword, k is 480 since there is 480 message bits in the original codeword. Next, process hard decision on the message part of the original codeword (S04). It means the message bits are confirmed now although they might be wrong after transmitting.
(14) In a step S05, encode the message part of the original codeword by the generator matrix to generate a new codeword which has a generated parity part. Now, there are two parity parts available, the original parity part and the generated parity part. Then, compare the original parity part with the generated parity part to find out bits of difference (S06).
(15) In a next step, vote candidate error bits to choose the most probably erratic bits (S07). A voting means works for voting candidate error bits. Before the voting means is introduced, a grouping operation should be done to the H.sub.enhanced. Take
(16) For grouping the parity bits, first, group the (1+nb).sup.th column of parity bits of the H.sub.enhanced as a first parity bit group G.sub.1.sup.p. Secondly, group the (2+nb).sup.th column of parity bits of the H.sub.enhanced as a second parity bit group. Keep grouping until all columns are grouped in one of the parity bit group. There are 40 parity bit groups of parity bits, G.sub.i.sup.p, obtained where i=1, 2, . . . 40. The i.sup.th parity bit group, G.sub.i.sup.p, contains the (1+nb).sup.th parity bits, where n is an integer from 0 to 11. The i.sup.th parity bit in one row is the first bit in the row of the i.sup.th parity bit group, the (40+i).sup.th parity bit in one row is the second bit in the row of the i.sup.th parity bit group, and so on. The (i+jb).sup.th parity bit in one row is the j.sup.th bit in the row of the i.sup.th parity bit group.
(17) Come back to step S07. After the bits in the enhanced parity check matrix are grouped according to what have been discussed above, based on computing and simulating, the voting means can be found that can recognize which bits are probable errors and votes are done. As receiving the original parity part of the original codeword, the generated parity bits and the received original parity bits can be compared. Potential error bits can be located according to
(18) In
(19) Although it is able to tell that the errors might be in which row, it is not known that the errors exactly locate in which bit. For example, if it is known that there is an error in the first row of the first row group, it means the 80.sup.th, 111.sup.st, 183.sup.th, 254.sup.th message bits might be errors. But if it is also known that there is an error in the second row of the 29th row group, that means the 80.sup.th, 239.sup.st, 262.sup.th, 413.sup.th message bits might be errors. Concluding all the information above, we can know that the 80.sup.th bit is most likely being erratic. So the voting means applies voting scheme to the candidate error bits and pick the most likely error bits. If there is a message bit error in the m.sup.th row, it is voted one to a count of the bits which are on the position of 1 in the row. If there is no message bit error in the m.sup.th row, one is deducted from the voting count to the bits which are on the position of 1 in the row. After voting, since it is assumed that every row has at most one 1 corresponding to the bit error, a bit has the most votes in the row is chosen as the most likely error bit. Collect all most likely error bits in the row group. Because the row weight of the parity matrix is 4 or 5, the average number of error bits in a row is less than 0.5 if SNR is above 2.
(20) The next step is to modify LLR of the chosen bits to have a modified codeword (S08). The LLR may be modified by changing its magnitude or sign. It is not limited by the present invention. Now, some bits in the modified codeword are flipped. Then, process a conventional iterative decoding procedure on the modified codeword to have a processed codeword (S09). In the present embodiment, the conventional iterative decoding procedure is Sun-Product Algorithm (SPA). From step S01 to step S08, the modified codeword is more correct with some bits changed for SPA. Therefore, the number of iteration of the SPA can be reduced.
(21) According to the spirit of the present invention, further steps can be applied after S09. First, judge if a preset number of iteration is reached or a product of the enhanced parity check matrix and the processed codeword equals zero (S10). It is to make sure if the iteration can be stopped. If a result of step S10 is no, repeat the procedure from step S04 with the processed codeword (S11-1); if the result of step S10 is yes, output a message part of the processed codeword (S11-2).
(22) While the invention has been described in terms of what is presently considered to be the most practical and preferred embodiments, it is to be understood that the invention needs not be limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims, which are to be accorded with the broadest interpretation so as to encompass all such modifications and similar structures.