1. Field of the Invention
The present invention is related to improving error indication performance in systems employing low-density parity check codes.
2. Background
Low-density parity check codes (LDPC) are becoming increasingly popular in communications systems due to their capacity-approaching performance and parallel-decoding structure that allows reduced complexity implementation. LDPC codes with a dual-diagonal structured parity check matrix offer the additional advantage of encoding with linear complexity.
An important requirement in many communications systems is a reliable indication whether demodulated and decoded information is correct or in error. For instance, data communications systems often use this indication to determine whether, a particular packet requires retransmission. Further, knowledge of the position of errors can be exploited to perform error concealment on received information. For example, audio and video systems can use information bits marked as good to estimate those that are labeled as being in error.
Typically, the effectiveness of an error indication approach can be characterized by the false alarm and miss probabilities (PFA and PM, respectively) for a frame of information bits in a codeword. A false alarm occurs when the error indicator is true when in reality the frame was correct. A miss occurs when the error indicator is false when in reality the frame was in error. A related measure, the detection probability, PD, is simply equal to 1-PM. False alarms and misses are both undesirable events, but in general miss events are more damaging. For example, in data communications, false alarms could trigger unnecessary retransmissions, reducing throughput. In contrast, a miss would result in the passage of erroneous data to higher layers, potentially causing major disruptions such as link loss. Some applications require PM to be lower than 10−7.
It is desirable to provide effective error indication for LDPC codes. LDPC codes can often be represented in systematic form with each codeword separated into information bits and parity check bits as shown in
Current methods to provide error indication for a systematic LDPC codeword include the use of LDPC parity checks, a cyclic redundancy code (CRC) inserted in the information bits, and/or an outer code such as a Reed Solomon (RS) or Bose, Ray-Chaudhuri, Hocquenghem (BCH) code that provides error correction and detection capability. However, error indication based on LDPC parity checks results in large PFA. Error indication based on short CRCs results in unacceptable PM whereas, long CRCs, which can provide acceptable error indication performance, introduce overhead that significantly reduces the supported data rate. Also, RS and BCH codes introduce substantial extra complexity for encoding and decoding.
What is needed therefore, given the current lack of practical and effective error indication solutions for LDPC codes, is an improved error indication approach for LDPC codes which exhibits low PFA and PM and introduces little overhead while adding minimal additional complexity.
The present invention is directed to methods and apparatus for improving error indication performance in systems employing low-density parity check codes.
In one aspect, a method and apparatus for providing error indication based on full LDPC parity check re-encoding are provided. In an embodiment, an encoder is employed at the receiver to re-encode the LDPC parity bits. In another embodiment, the parity bits are re-encoded recursively based on information readily available at the decoder of the receiver.
In another aspect, a method and apparatus for providing error indication based on partial LDPC parity check re-encoding are provided. In an embodiment, partial checksum information is determined based on the decoder output and used to provide error indication.
In a further aspect, a hybrid CRC checking and LDPC parity check re-encoding approach is provided. This approach further enhances error indication performance by reducing the miss probability compared to pure LDPC parity check re-encoding.
Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art(s) to make and use the invention.
The features and advantages of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
In the following, conventional error indication approaches for LDPC codes are described followed by alternative approaches according to embodiments of the present invention. In section I, error indication approaches using LDPC parity checking and using CRC checking and LDPC parity checking are described. In section II, alternative error indication for LDPC codes with dual-diagonal parity check matrix is presented. As will be described, this approach significantly improves PFA and PM, and several methods based thereon will be provided.
A. Error Indication Using LDPC Parity Checking
Theoretically, any codeword c satisfying the parity check constraints of matrix H satisfies the product HcT=0, where cT denotes the transpose of vector c.
Accordingly, error indication using LDPC parity checking, as illustrated in process 200, works by evaluating in step 220 the matrix product HdT to determine if errors occurred in the decoder output d. If decoder output d satisfies HdT=0, the transmitted codeword is assumed to have been correctly decoded. Otherwise, information bit errors are presumed to exist in the decoder output vector d.
Note that error indication using LDPC parity checking only checks if the decoder output vector represents a valid codeword to decide whether or not errors exist in the decoder output. As a result, in the case that, due to transmission and/or decoding errors, a transmitted codeword a is decoded as another valid codeword b (i.e., HbT=0), error indication based on this method results in a miss. In other words, the decoder output is in error but is ruled to be correct.
In addition, oftentimes in cases where HdT≠0, the erroneous bits happen to be only in parity check bits of the transmitted codeword. This method will thus determine that information bit errors exist in the decoder output, thereby generating a false alarm.
Consider, for example, the dual-diagonal structured matrix H associated with a rate ⅔ LDPC code illustrated in equation (1) below, where I denotes a (P×P) identity matrix and X and Xi,j are (P×P) shifted identity matrices or zero matrices.
In matrix H, the first 16P columns correspond to the codeword information bits and the last 8P columns correspond to parity check bits, yielding a code of length 24P.
As such, a codeword c satisfying H is split into a message vector m and 8 parity vectors p1, p2, p3, p4, p5, p6, p7, and p8. In vector notation, c=[m p1 p2 p3 p4 p5 p6 p7 p8]. Also, as noted above, HcT=0.
Note that the LDPC code characterized by H as given by equation (1) is “irregular” in that the column degree Di (the number of ones in a column i) varies from column-to-column. In particular, the last 7P columns have lower degree than the first 17P columns. Typically, the likelihood that the ith bit in an LDPC codeword is in error is directly related to Di. Accordingly, the parity check bit error rate is higher than the information bit error rate. As a result, in many cases when HdT≠0, there are no errors in the information bits; rather, errors are confined to parity checks.
Performance of error indication using LDPC parity checking is summarized in Table 1 below, which illustrates simulation results based on an LDPC codeword of length 1728. The results of Table 1 are calculated over at least 50 million codeword errors, and PM is assigned a rough range if no miss occurs in simulation over at least 50 million codewords. The frame error rate (FER) is determined offline by directly comparing transmitted and received information bits. A frame is in error if information bits are in error in the received frame.
Table 1 shows a high PFA for a wide range of FER for this approach. For example, for FER approximately 1% (1.3%), over half the codewords for which HdT≠0 result in false alarms (0.66%).
B. Error Indication Using CRC Checking and LDPC Parity Checking
Another approach to provide error indication inserts a cyclic redundancy code (CRC) into the information bits and uses CRC checking to reduce the probability of false alarm. An LDPC codeword 300 having CRC bits inserted therein is illustrated in
Note that augmenting the LDPC parity check test with a CRC check as done in process 400 eliminates false alarms due to errors that are restricted to parity check bits. However, the method illustrated in process 400 can still result in misses due to the LDPC decoder erroneously decoding (due to transmission and/or decoding errors) a transmitted codeword as another valid codeword, or if errors in the CRC bits line up with errors in the information bits in such a way as to result in a successful CRC check despite errors in the information bits. Accordingly, the miss probability achievable using a combined CRC checking and LDPC parity checking approach is not superior to that achieved by solely using LDPC parity checking. In addition, in the strict sense, false alarms can still occur when errors occur only in the CRC check bits and parity bits but not the information bits. However, the probability of this is very small and the results presented herein do not include these events as false alarms. Rather, these events are counted as detections.
Tables 2 and 3 below illustrate the performance of the combined CRC checking and LDPC parity checking approach for CRC codes of length 16 and 24, respectively.
Note, as defined herein, PFA is always equal to zero as the combined approach eliminates false alarms. The miss probability performance is directly related to the CRC code length. Note for example, from tables 2 and 3 below, that for a frame error rate of approximately 7.6%, the miss probability using a CRC code of length 24 is approximately one order of magnitude lower than that obtained using a CRC code of length 16. Additional simulations (not illustrated herein) show that a CRC code of length 32 reduces to negligible the miss probability due to the CRC bit errors lining up with errors in the information bits. Nonetheless, the miss probability of the combined CRC checking and parity checking approach remains high due to the fact that misses still occur when the LDPC decoder erroneously yields valid codewords.
Note that in the simulations leading to the results in Tables 2 and 3, the length 16 CRC is used with a codeword of length 2016 whereas the length 24 CRC is used with a codeword of length 1728. For each codeword, H is defined as provided in equation (1) with P=84 and P=72, respectively.
As discussed above, error detection based solely on using LDPC parity checking (i.e., evaluating HdT=0) results in a high PFA as errors are often confined to the parity bits. On the other hand, augmenting LDPC parity checking with CRC checking reduces PFA but introduces a higher PM and increased overhead.
In the following, alternative approaches for error indication will be provided, wherein given that H is dual-diagonal structured, an encoder or functionally equivalent modules can be used at the receiver to significantly reduce PFA while only introducing a small increase in PM. Specifically, the encoder (or functionally equivalent modules) generates all or a subset of the LDPC parity check bits by re-encoding hard decisions on the LDPC decoded information bits. Error indication is then based on the comparison between the re-encoded parity check bits and the decoded parity check bits. In implementation, this comparison may be performed in a variety of ways as will be further described below.
Codeword c is transmitted over a noisy channel 504 and received as codeword c′ at the receiver. Codeword c′ may or may not be a valid codeword with respect to the LDPC code used by encoder 502 at the transmitter.
Codeword c′ is decoded at the receiver using an LDPC decoder 506 to generate the decoder output vector d. Decoder output vector d contains an information part and a parity part, shown in
Accordingly, in
Based on the result of the parity bit comparison, various rules can be used to decide whether or not errors have occurred in the information bits for the purpose of providing error indication. Note that parity bit vectors z and q will only be equal if both s and q are correctly decoded (i.e., s identical to m, and q identical to p), or in the unique case when both s and q are incorrectly decoded (due to transmission and/or decoding errors) and errors in s and q line up with each others such that the encoding of s results in q as a parity bit vector. For any other cases (i.e., either s or q is incorrectly decoded, or both are incorrectly decoded excepting that unique case), z and q will not be equal.
In the following, methods and apparatus for implementing the error indication approach based on LDPC parity check re-encoding are provided. In particular, these methods and apparatus provide different ways for implementing the parity bit comparison described above and therefore may vary both in performance and in cost of implementation.
At a high level, these methods include receiving an LDPC-encoded codeword; decoding the LDPC-encoded codeword to generate decoded information bits and parity check bits; generating at least a portion of a checksum bit vector based on at least the decoded information bits and parity check bits; and generating an error indicator for the received LDPC-encoded codeword based on the generated portion of the checksum bit vector. In an embodiment, the generation of the checksum bit vector includes LDPC re-encoding the decoded information bits to generate re-encoded parity check bits and summing the generated re-encoded parity check bits and respective ones of the decoded parity check bits to generate the portion of the checksum bit vector. In another embodiment, the generation of the checksum bit vector is performed recursively. Alternatively, only a first component vector of the checksum bit vector is generated. The error indicator provides an indication as to whether the received codeword contains errors in the information bits or not. In an embodiment, generating the error indicator includes determining a Hamming weight of the generated portion of the checksum bit vector and comparing the Hamming weight to a threshold. In an embodiment, the LDPC-encoded codeword is declared error-free if the Hamming weight is lower than the threshold.
Checksum computing module 808 is configured to receive decoded codeword 806 and generate at least a portion of a checksum vector y 820. In an embodiment, checksum computing module 808 includes an LDPC encoder 810 and a summing module 812. LDPC encoder 810 is configured to receive and re-encode decoded information bit vector s 814 to generate re-encoded parity check bit vector z 818. Summing module 812 is configured to sum re-encoded parity check bit vector z 818 and decoded parity check bit vector q 816 to generate vector y 820.
LDPC error indication module 822 is configured to generate an error indicator 832 for the received LDPC encoded codeword 802 based on checksum vector y 820. In an embodiment, LDPC error indication module 822 includes a Hamming weight determination module 824, which receives checksum vector y 820 and outputs a Hamming weight value 828. Hamming weight value 828 is then input into a comparator module 826, which also receives a threshold value 830, compares Hamming weight value 828 and threshold value 830, and outputs an error indicator value 832 based on the comparison.
Accordingly, in either embodiment, apparatus 900 does not require a LDPC encoder 810 or a summing module 812. Instead, checksum computing module 904 acts on information readily available in LDPC decoder 902 (or decoder 804 in the alternative embodiment) to generate a checksum vector y 906. LDPC error indication module 822, as in apparatus 800, acts on vector y 906 to generate error indicator 832.
In an embodiment, checksum computing module 904 is a recursive checksum computing module, which recursively generates vector y 906 or a portion thereof. In an embodiment, checksum computing module 904 generates only a first component vector of the checksum vector.
As noted above, checksum computing module 904 may be embedded in or located externally to the LDPC decoder. In an embodiment, checksum computing module 904 is implemented using a logic circuit. Alternatively, checksum computing module 904 is implemented in software.
A. Full LDPC Parity Check Re-Encoding Method
As described above in section I, a parity check bit vector may include a plurality of component parity vectors. For example, the rate ⅔ LDPC codeword associated with H as given in Equation (1) includes 8 parity bit vectors p1, p2, p3, p4, p5, p6, p7, and p8.
The full LDPC parity check re-encoding method works by fully re-encoding the parity check bit vector z (as illustrated in
In an embodiment, error indication is made based on the Hamming distance between vectors z and q. This includes determining a count of the number of bits that differ between vectors z and q and using a pre-defined threshold to make error indication decisions. For example, if the calculated Hamming distance between vectors z and q is less than the pre-defined threshold, the frame is declared to be correctly decoded. Otherwise, the decoded frame is decided to have been in error.
In an embodiment, the Hamming distance between vectors z and q is calculated by finding the Hamming weight (number of ones) of a checksum vector y=[y1 y2 . . . yn], where yi=zi+qi for i=1, . . . , n and the addition is performed over a Galois Field of 2 elements (GF(2)).
As would be appreciated by a person skilled in the art based on the teachings herein, other variations for making error indication decisions may also exist based on this full LDPC parity check re-encoding approach.
In implementation, full LDPC parity check re-encoding requires an additional encoder at the receiver. However, only about 4% of the number of gates used by the LDPC decoder are needed for the re-encoding due to the assumed dual-diagonal structure of the LDPC code parity check matrix.
B. Partial LDPC Parity Check Re-Encoding Method
As with the above described full LDPC parity check re-encoding method, partial LDPC parity check re-encoding also operates on hard decisions made after LDPC decoding. The decoder output, d, can be written as:
d=[sq
1
q
2
q
3
q
4
q
5
q
6
q
7
q
8] (2)
where s corresponds to the decoded systematic bits and qi represents the Pth group of decoded parity bits.
The method then relies on the P×8 P matrix B=[I I I I I I I I], which is a horizontal concatenation of eight P×P identity matrices. From equation (1), it follows that:
BHcT=0. (3)
where c=[m p1 p2 p3 p4 p5 p6 p7 p8].
Note, however that BH=[Y1 Y2 . . . Y15 Y16 I 0 0 0 0 0 0 0], where Yi=X1,i+X2,i+ . . . +X8,i. Thus, expanding equation (3):
[Y1 Y2 . . . Y15 Y16 I 0 0 0 0 0 0 0][m p1 p2 p3 p4 p5 p6 p7 p8]T=0, which implies:
[Y1Y2 . . . Y15Y16]mT+p1=0, (4)
or
[Y1Y2 . . . Y15Y16]mT=p1, (5)
since operations are performed over GF(2).
Similarly, BHdT=[Y1 Y2 . . . Y15 Y16] sT+q1, and from equation (5), z1=[Y1 Y2 . . . Y15 Y16]sT, where z1 is the first vector of re-encoded parities using the vector s as a message vector. Accordingly, it follows that:
BHd
T
=z
1
+q
1, (6)
or y1=z1+q1=BHdT. (7)
Note that y1 represents the first component vector of the checksum vector y, which according to equation (7) can be calculated as the XOR of the re-encoded parities z1, and the decoded parities q1. However, also according to equation (7), actual re-encoding (using an encoder as in the full re-encoding method) to calculate the parities z1, can be avoided, as y1 can be readily determined from BHdT, which can be determined at the decoder as a by-product of LDPC decoding.
In an embodiment, partial LDPC parity check re-encoding operates by checking whether y1=0 to make error indication decisions. In other words, partial LDPC parity check re-encoding only determines whether the first component vector of re-encoded parities z1, agrees with the first component vector of decoded parities q1, for error determination. As will be further described below, this approach is inferior in terms of performance to the full re-encoding method, but requires minimal implementation cost, consuming only about 0.1% of the number of logic gates used by an LDPC decoder.
C. Alternative Full LDPC Parity Check Re-Encoding Method
An alternative full LDPC parity check method recursively generates the component vectors of the checksum vector y=[y1 y2 . . . yn]. For ease of illustration, the method is illustrated below with respect to a rate ⅔ LDPC code having 8 parity component vectors.
Assuming that d=[s q1 q2 q3 q4 q5 q6 q7 q8] is the decoded codeword at the decoder output and z=[z1 z2 z3 z4 z5 z6 z7 z8] is the vector of re-encoded parity bits, the first component vector y1 of the checksum vector y can be efficiently computed using y1=BHdT, as shown above in equation (7). This eliminates the need to perform a full re-encoding of vector s.
Note that
Hd
T
=[w
1
w
2
w
3
w
4
w
5
w
6
w
7
w
8]T (8)
where each wi represents the bits (i−1)P+1 through iP of the final parities HdT. Also, note that
w
1
T
=[X
1,1
X
1,2
. . . X
1,16
]s
T
+X(q1)T+(q2)T (9)
where equation (9) is the first row of the result obtained from a brute force multiplication of matrix H shown in equation (1) and dT=[s q1 q2 q3 q4 q5 q6 q7 q8]T.
Also, by definition, since z=[z1 z2 z3 z4 z5 z6 z7 z8] is the vector of re-encoded parity bits that result from re-encoding the vector s, then it follows that:
0=[X1,1X1,2 . . . X1,16]sT+X(z1)T+(z2)T. (10)
Adding equations (9) and (10) over GF(2) and noting that yi=zi+qi, it follows that:
(w1)T=X(y1)T+(y2)T, (11)
which can be re-arranged in a more convenient form as:
y
2
=w
1
+X
T
y
1. (12)
The remaining component vectors of y=[y1 y2 . . . yn] are then calculated recursively extending the approach above. Then, once the Hamming weight of each of the component vectors yi is calculated, the Hamming weight of vector y can be determined and compared against the pre-determined threshold to make error indication decisions. Alternative methods for making error indication decisions can also be obtained by using the weight of the vector [y1 . . . yj] for j=1, . . . , n to compare to the pre-determined threshold. For example, for j=1, only the weight of y1 is used, and with a threshold of zero, the partial re-encoding method of section II.A is obtained. On the other hand, j=8 and a finite threshold yield the full re-encoding method of section I.A.
In implementation, w1, can be obtained from the output of the first block of P parities (check nodes block) in the circuitry of
D. Simulation Results
Tables 4 and 5 below compare the performance of the full LDPC parity check re-encoding method (section II.A) and the partial LDPC parity check re-encoding method (section II.B), with respect to two exemplary length 2016 and length 1728 LDPC codewords. An error indication threshold of value 6 is used for the full LDPC parity check re-encoding method in the performance results below. This value was shown in simulation to provide the best PFA and PM tradeoff. As would be understood by a person skilled in the art, the larger is the threshold, the higher is PM and the lower is PFA, and inversely.
Tables 4 and 5 indicate that the full LDPC parity check re-encoding method significantly outperforms the partial LDPC parity check re-encoding method in all respects, for both exemplary LDPC codes. Yet, both methods may have unacceptable PFA and PM for certain frame error rates.
E. Hybrid CRC Checking and LDPC Parity Check Re-Encoding Method
As noted in the previous section, both the full LDPC parity check re-encoding and the partial LDPC parity check re-encoding methods, when used alone, may result in unacceptable PFA or PM under certain frame error rate conditions. In this section, a hybrid CRC checking and LDPC parity check re-encoding method is described, which may be used to enhance the performance of re-encoding methods.
If both the LDPC parity check re-encoding method, step 720, and the CRC checking method, step 730, result in no error determination, then the information bits are declared error-free. Otherwise, if either results in an error determination, then the information bits are declared to contain errors, and an error indication is generated. For example, using the full LDPC parity check re-encoding method in step 720, the codeword is declared error-free if and only if both the Hamming distance between vectors z (re-encoded parities) and q (decoded parities) is less than a given threshold and the CRC check is satisfied. Similarly, using the partial LDPC parity check re-encoding method in step 720, the codeword is declared error-free if and only if the first component vector y1 of the checksum vector is equal to zero and the CRC check is satisfied.
Tables 6 and 7 below illustrate the performance of the above described hybrid approach (with both the full re-encoding and the partial re-encoding methods) for two exemplary sets of CRC and LDPC code lengths. Note that the miss probability PM is reduced to less than one in 50 million codewords across all FER scenarios. Further, note that the addition of CRC checking does not affect the probability of false alarms PFA compared with solely using full re-encoding or partial re-encoding.
Accordingly, an error indication approach based on the use of a short CRC coupled with fully or partially re-encoding the output of the LDPC decoder achieves the performance required in applications requiring very low false alarm and miss probabilities. These results directly apply to LDPC codes with dual-diagonal structured parity check matrix, though it is expected that other LDPC codes will allow similar techniques.
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.