GENERALIZED LOW-DENSITY PARITY CHECK CODES IN DIGITAL COMMUNICATION SYSTEM
20200220556 ยท 2020-07-09
Inventors
- Vasily Stanislavovich Usatyuk (Moscow, RU)
- Nikita Andreevich Polianskii (Moscow, RU)
- Ilya Viktorovich Vorobyev (Moscow, RU)
- Vladimir Anatolyevich Gaev (Moscow, RU)
- German Viktorovich Svistunov (Moscow, RU)
- Mikhail Sergeevich Kamenev (Moscow, RU)
- Yulia Borisovna Kameneva (Moscow, RU)
Cpc classification
H03M13/036
ELECTRICITY
H04L1/1819
ELECTRICITY
H04L1/00
ELECTRICITY
H03M13/1174
ELECTRICITY
H03M13/116
ELECTRICITY
H03M13/1154
ELECTRICITY
H03M13/1188
ELECTRICITY
H03M13/1182
ELECTRICITY
International classification
H03M13/25
ELECTRICITY
Abstract
Provided is an encoder, a decoder, a computer-readable medium and methods of forward error correction channel encoding/decoding within a HARQ scheme, based on a generalized quasi-cyclic low-density parity-check code comprising a Cordaro-Wagner component code.
Claims
1. An encoder for forward error correction channel encoding, the encoder comprising: a processor; and a non-transitory computer readable medium coupled to the processor for storing processor-executable program instructions that, when executed by the processor, cause the encoder to: determine a protomatrix of a low-density parity check (LDPC) code for a hybrid automatic repeat request (HARQ) scheme, the protomatrix being representable by a sub-matrix formed by intersecting first rows and first columns, and second rows and second columns, wherein a number of the second columns is two times a number of the second rows; lift the protomatrix to determine a parity check matrix of a quasi-cyclic (QC)-LDPC code; replace rows of the parity check matrix with row pairs of a Cordaro-Wagner component code to derive a generalized QC-LDPC code; provide a codeword having data bits and parity bits, based on data bits and rows and columns of the generalized QC-LDPC code corresponding to the first rows and first columns; and provide additional parity bits, based on the codeword, and at least one of the rows and columns of the generalized QC-LDPC code.
2. The encoder of claim 1, wherein a matrix formed by an intersection of rows and columns of a parity check matrix of the generalized QC-LDPC code, which correspond to the second rows and columns, has a triangular structure.
3. The encoder of claim 1, wherein the lift the protomatrix to determine the parity check matrix of the QC-LDPC code, comprises: determine multiple possible shift values for entries of a base matrix of the QC-LDPC code, wherein the entries correspond to edges of a protograph corresponding to the protomatrix; and iteratively select shift values for the entries, wherein a selection probability of a shift value is based on a measure of girth of the QC-LDPC code.
4. The encoder of claim 3, wherein the selection probability of a shift value that results in a larger girth than another shift value, is iteratively decreased.
5. The encoder of claim 4, wherein a selection probability of a shift value of multiple shift values achieving a same girth is to be larger, when the shift value achieves a higher extrinsic message degree, EMD, or a higher approximated cycle EMD, ACE, of a smallest cycle generated by the shift value.
6. The encoder of claim 1, wherein the encoder is further configured to: repeat the determining and the lifting for multiple protomatrices that differ with respect to the second rows and columns; and lift the protomatrix to determine the parity check matrix of the QC-LDPC code by selecting the protomatrix of the multiple protomatrices based on a performance measure.
7. A decoder for forward error correction channel decoding, the decoder comprising: a processor; and a non-transitory computer readable medium coupled to the processor for storing processor-executable program instructions that, when executed by the processor, cause the decoder to: receive data including reliability values of a bit sequence of data bits and parity bits, wherein the bit sequence represents a codeword of a codebook; decode the data bits by passing messages between Cordaro-Wagner component code decoding units, wherein the messages are based on the reliability values and the passing is governed by subrows and subcolumns of a protomatrix of a low-density parity check (LDPC) code for a hybrid automatic repeat request (HARQ) scheme, the protomatrix being represented by the subrows and subcolumns and second rows and second columns, wherein a number of the second columns is two times a number of the second rows; transmit a HARQ message in relation to the codeword, when the decoder determines that one or more data bits have not been decoded correctly, wherein the HARQ message is to demand a provision of additional parity bits for the data bits; receive further data including further reliability values of a bit sequence comprising the additional parity bits; and decode the one or more data bits that have not been decoded correctly by passing further messages between the Cordaro-Wagner component code decoding units, wherein the further messages are based, at least in part, on the further reliability values, and the passing of the further messages is governed by the subrows and the subcolumns of the protomatrix and one or more of the second rows and/or columns.
8. The decoder of claim 7, wherein a decoding unit is further configured to operate on two parity check equations.
9. A non-transitory machine readable storage medium having stored thereon processor executable instructions which, when executed by a processor, cause the processor facilitate execution of a method of forward error correction channel encoding, the method comprising: determining a protomatrix of a low-density parity check (LDPC) code for a hybrid automatic repeat request (HARQ) scheme, the protomatrix being representable by a sub-matrix formed by intersecting first rows and first columns, and second rows and second columns, wherein a number of the second columns is two times a number of the second rows; lifting the protomatrix to determine a parity check matrix of a quasi-cyclic (QC)-LDPC code; replacing rows of the parity check matrix with row pairs of a Cordaro-Wagner component code to derive a generalized QC-LDPC, code; providing a codeword having data bits and parity bits, based on data bits and rows and columns of the generalized QC-LDPC code corresponding to the first rows and first columns; and providing additional parity bits based on the codeword and at least one of the rows and columns of the generalized QC-LDPC code.
10. The non-transitory machine readable storage medium of claim 9, wherein a matrix formed by an intersection of rows and columns of a parity check matrix of the generalized QC-LDPC code, which correspond to the second rows and columns, has a triangular structure.
11. The non-transitory machine readable storage medium of claim 10, wherein lifting the protomatrix to determine the parity check matrix of the QC-LDPC code comprises: determining multiple possible shift values for entries of a base matrix of the QC-LDPC code, wherein the entries correspond to edges of a protograph corresponding to the protomatrix; and iteratively selecting shift values for the entries, wherein a selection probability of a shift value is calculated based on a measure of girth of the QC-LDPC code.
12. The non-transitory machine readable storage medium of claim 9, wherein: the determining and the lifting are repeated for multiple protomatrices that differ with respect to the second rows and columns; and the lifting the protomatrix to determine the parity check matrix of the QC-LDPC code comprises selecting the protomatrix of the multiple protomatrices based on a performance measure.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
DETAILED DESCRIPTION
[0056] The following provides a non-limiting example of a process of generating a GLDPC parity-check matrix for deriving a family of GLDPC codes to be used in a HARQ scheme. The process may be implemented by hardware, software, or a combination of hardware and software. For example, the process of generating a GLDPC parity-check matrix for deriving a family of GLDPC codes as well as procedures involving the usage of the family of codes such as encoding/decoding a sequence of information bits may be automatically carried-out by the encoder 12, the decoder 14, or a machine comprising a processor which carries out machine-readable instructions persistently stored on a machine-readable medium.
[0057] As shown in
[0058] The parity part B of the core protomatrix may be chosen for the GLDPC code to have an easy-encoding structure that allows an efficient calculation of the parity bits, i.e., the core protomatrix may be chosen for the corresponding GLDPC code to be designed as an IRA/eIRA LDPC code (cf. M. Yang, W. E. Ryan, and Y. Li, Design of efficiently encodable moderate-length high-rate irregular LDPC codes, IEEE TRANS. COMMUN., vol. 52, no. 4, pp. 564-571, April 2004.)
where 1 indicates the zero matrix, 0 indicates the identity matrix, and C indicates another circulant.
[0059] The second columns 38 correspond to additional parity bits and the ratio of the number of second columns 38 and the number of second rows 36 may equal a pre-determined factor (which happens to be two in
where VN is the number of variable nodes, CN is the number of check nodes, and PN is the number of punctured VNs.
[0060] To allow for an easy-encoding structure (e.g., IRA/eIRA) for the additional parity bits, the second rows 36 of the protomatrix 30 may be designed to allow for a triangular form of the GLDPC code to be generated, by having two (i.e. the pre-determined factor) consecutive entries to be labelled (with an entry that does not correspond to a zero matrix), wherein each two consecutive entries do not overlap column-wise (i.e. in the vertical direction) with the two consecutive entries in the preceding and succeeding second row 36.
[0061] The protomatrix 30 may be iteratively generated starting from the core protomatrix in accordance with a maximum number of i IR-HARQ transmissions (TX) such that, as indicated in
[0062]
[0063] For each weight distribution value .sub.d (where .sub.d may, for example, be the fraction of ones in the columns in the protomatrix with d ones in the column) a set of all possible columns which achieves a required rate may be generated. Parallel edges in the protograph may be allowed, i.e. a cell in the protomatrix may not only be 0 or 1, but have a bigger value. For a desired size of a base matrix, an optimal density of parity checks may be chosen.
[0064] Based on these protographs P.sub.i, parity check matrices H(P.sub.i) may be constructed by lifting while observing constrains on the graph properties.
Density Evolution and Multi-Dimensional Density Evolution
[0065] A photograph with minimal threshold may be determined using density evolution. Multi-Dimensional Density Evolution may allow considering weight one nodes and parallel edges in a protograph which may improve performance of the code. Density evolution is based on statistical considerations about the fraction of edges that connect to variable and check nodes. More precisely, there are two polynomials
where is a fraction of edges that connect to variables node of degree i and p.sub.i is a fraction of edges that connect to a check node of degree i with
[0066] The average variable and check node degree may be expressed as
and the code rate may be defined as
[0067] For n.fwdarw., the graph becomes a computational tree. Then, with probability .sub.i, a variable node has exactly i neighbors and consequently the variable node has one parent and i1 child nodes. Each child of the variable node is a check node which in turn with probability p.sub.i has i1 neighbors as its own children. In this case, codes become completely defined from a statistical point of view.
[0068] Consider a check node c of this computational tree. Without constraints, it can be assumed that its degree is at least 2, i2. Thus, a check node c has a variable node v as a parent node and it has i1 variable nodes v.sub.s, si, . . . , i1 as child nodes. Let .sub.s be a log-likelihood ratio which is a bit estimate known to a node v.sub.s in advance. In this case .sub.s are independent estimates. During belief propagation, the check node c may receive estimates .sub.s as message from its child nodes. Due to the fact that the check node c corresponds to a parity-check equation involving the later, the estimations from all bits which participate in this equation except one which corresponds to the parent node are obtained by the check node c. Check node c may process the information from child nodes and may estimate the value of the parent bit as
and the m.sub.cv may then be sent as new estimates to the parent node v.
[0069] Independent random variables .sub.s with a density function may have a probability of .sub.s to be between a and b which is given by
in which case m, may also be a random variable. The density function .sub.cv of m.sub.cv may be equal to
where .sup.(i1).Math. is a D-dimensional convolution.
[0070] A variable node of degree i which belongs to the computational tree may obtain messages from its children check nodes which are log-likelihood estimates generated by a check node and make a decision. This estimate may be denoted by .sub.s. If all messages are statistically independent, a bit estimate 8 generated by this variable node is the sum
where .sub.0 is an initial channel estimate. The density evolution method implies that the .sub.s have the same density function . Thus, for the density function .sub.cv= . . . .sub.0=.sup.(i1).sub.0, with indicating a convolution of density functions.
[0071] The variable node degrees of a computational tree may be random integers associated with degree distribution
If using Cordaro-Wagner check nodes, the density function could be estimated as in: M. Lentmaier, M. B. S. Tavares and G. P. Fettweis, Exact erasure channel density evolution for protograph-based generalized LDPC codes, 2009 IEEE INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, Seoul, 2009, pp. 566-570.
[0072] The probability of erroneous estimate may be
Density Evolution:
[0073] Let .sub.0 be a density function of initial log-likehood estimates, I.sub. be the maximum degree of variable nodes, and I.sub.p be the maximum degree of check nodes:
TABLE-US-00001 1. f.sub.cv = f.sub.0 2. For i
[0074] If, for any value , there exist i such that after i iterations P.sub.e is less than , it may be said that the density evolution method converges.
[0075] A code with a degree distribution (, p) may be regarded as optimal code if it has a decoding (belief propagation) threshold .sub.+:
[0076] Moreover, a differential evolution method may be implemented (cf. Differential Evolution (DE) for Continuous Function Optimization (an algorithm by Kenneth Price and Rainer Stom) http://wwwl.icsi.berkeley.edu/storn/code.html). The method may start with a certain noise level . For the first generation G=0, NP degree distributions (, p), s=1, . . . , NP (called a list of distributions in the following) may be randomly chosen. [0077] 1. Initialization: For each distribution, k steps of the density evolution method may be run and its residual error P.sub.e may be recorded. The distribution with the smallest P.sub.e may be labelled as the best distribution (.sub.best, p.sub.best) [0078] 2. For the generation, G+1 new distributions may be generated according to the following scheme. For each s=1, . . . , NP 4 distributions may be randomly chosen from the list with numbers s.sub.1, s.sub.2, s.sub.3, s.sub.4, 1s.sub.iNP and s.sub.is. New (.sub.s, p.sub.s) may be defined as .sub.s=.sub.best+F(.sub.s.sub.
[0081] Density evolution may be challenging in view of computation complexity and the fact that with large rate code
polynomials have large degrees which may slow down convergence. When using a Multi-Edge approach (involving puncturing of high degree variable nodes, not to be confused with precoding which puncture middle or even low degree nodes) for QC GLDPC, the challenges may be reduced. For improving the threshold estimation, the use of the average value in the density-function may consider the propagation of the message on a decoding tree, specified by the protograph of the ensemble, multidimension Density Evolution (cf. T. Richardson, Multi-Edge Type LDPC Codes, presented at the WORKSHOP HONORING PROF. BOB MCELIECE ON HIS 60TH BIRTHDAY (but not included in the proceedings), California Institute of Technology, Pasadena, Calif., May 24-25, 2002, http://wiiau4.free.fr/pdf/Multi-Edge%20Type%20LDPC%20Codes.pdf) or Covariance evolution (cf. Amraoui, A., Montanari, A. and Urbanke, R. (2007), How to find good finite-length codes: from art towards science, EUR. TRANS. TELECOMM., 18: 491-508). In the case of convolutional GLDPC, threshold estimate may be performed as in M. Lentmaier and G. P. Fettweis, On the thresholds of generalized LDPC convolutional codes based on protographs, 2010 IEEE INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, Austin, Tex., 2010, pp. 709-713. For further details see Richardson, T., Shokrollahi, A., Urbanke, R., Design of provably good low-density parity check codes, INFORMATION THEORY, 2000. PROCEEDINGS. IEEE INTERNATIONAL SYMPOSIUM ON, vol., no., pp. 199, 2000 and Richardson, T. J., Urbanke, R. L., The capacity of low-density parity-check codes under message-passing decoding, INFORMATION THEORY, IEEE TRANSACTIONS ON, vol. 47, no. 2, pp. 599-618, February 2000.
EXIT Chart and PEXIT Chart
[0082] An EXIT chart may be considered to be a special form of a capacity approximation of an iterative soft decoding method under some structural specified infinite length code which allows for a fast evaluation approximation of the density evolution. The infinite length basic assumption is the reason why the method neglects graph properties (which is the same for density evolution). Hence, it may benefit from sieving code candidates derivable from the protomatrix by labeling and simulation, because some protographs may not be liftable with the required length. Moreover, protograph thresholds may be wrong due to the numerical solution in combination with special types of protographs.
[0083] For a given protograph, an assumption of non-existence of cycles and hence a Gaussian distribution for LLR in the belief propagation algorithm may be made. After that, a decoding threshold of an ensemble of protographs characterized by given variable and check nodes distributions may be calculated.
[0084] The growth of information obtained by a belief propagation algorithm may be shown by a step function. If EXIT functions are not intersectingthe belief propagation algorithm can be finished. If the decoding threshold is the value of the noise, then two EXIT functions touch each other.
[0085] The following approximation may be used for I.sub.E,C:
I.sub.E,C=1J({square root over ((d.sub.c1)[J.sup.1(1I.sub.A,C)].sup.2)}
[0086] For irregular LDPC codes, I.sub.E,V and I.sub.E,C may be calculated as weighted averages. The weighting may be given by coefficients of the edge degree distribution polynomials (z)=.sub.d=1.sup.d.sup.
[0087] For irregular LDPC codes, this may result in
I.sub.E,V=.sub.d=1.sup.d.sup.
I.sub.E,C=.sub.d=1.sup.d.sup.
[0088] For example, a pre-calculated approximation function J() with accuracy 1e-5 may be used. After I.sub.E,V(d, I.sub.A,V) and I.sub.E,C(d, I.sub.A,C) are obtained, calculating the iterations may be started
I.sub.A,V.sup.(0)=0
I.sub.A,V.sup.(n+1)=I.sub.E,C(d,I.sub.E,V(d,I.sub.A,V.sup.(n)))
and stopped when I.sub.A,V.sup.(n) is close to 1. For each distribution of weights .sub.d, .sub.d a minimal
(based on .sub.A.sup.2) may be calculated when the iteration converges to 1 for fixed number of steps.
[0089] Using EXIT charts, relatively good distributions .sub.d, .sub.d and protomatrices with given distributions of ones in rows and columns may be generated. For improving the threshold estimation, an average value in the mutual information estimation I.sub.E,V, I.sub.E,C may consider the propagation of the message in a decoding tree specified by the protograph of the ensemble.
[0090] In this case, I.sub.E,C.sup.j.fwdarw.i is the extrinsic mutual information between code bits associated with type i variable nodes (VNs) and the LLRs L.sub.j.fwdarw.i send from type j check nodes (CNs) to these VNs. Then, because I.sub.E,V.sup.j.fwdarw.i, one has (given an edge exists between CN j and VN i, i.e. given b.sub.ji0)
where .sub.cj=1 when c=1 and .sub.cj=0 when cj. .sup.2.sub.ch,i can be set to zero if the code bit i is punctured.
[0091] Similarly, check node processing is
[0092] But instead repetition codes, an internal decoder of the GLDPC component code may be used, which function depends on the type of processing, and for two rows EXIT of turbo code may be used.
[0093] A priori knowledge, mutual information between transmitted systematic bit X, and the L-values A is
which define
J():=I.sub.A(.sub.A=)
as the function of mutual information with
>0.
[0094] Under binary Additive White Gaussian Noise (AWGN) capacity, this may be given by C=J(=2/.sub.n). The function J and the capacity cannot be expressed in closed form. This is why it is usually estimated using some approximation. For example, it may be approximated by a polynomial or look-up table. Because J monotonically increases in =2/.sub.n, J is reversible:
.sub.A=J.sup.1(I.sub.A)
[0095] In the same way, mutual information may be considered as a function of I.sub.A and the E.sub.b/N.sub.0(SNR) value:
[0096] Multidimension EXIT Chart (Protograph EXIT-Chart, PEXIT) Method:
[0097] Input: Protograph P, level of error .
[0098] Output: Protograph threshold, value of E.sub.b/N.sub.0 for which BER (Bit Error Rate) less that . [0099] 1. Initialization. Select E.sub.b/N.sub.0 value. Initialize channel noise (.sub.ch,0, . . . , .sub.ch,N1) such that (cf. S. ten Brink, Convergence behavior of iteratively decoded parallel concatenated codes, in IEEE TRANSACTIONS ON COMMUNICATIONS, vol. 49, no. 10, pp. 1727-1737, page 1732, equation 29):
[0104] 5. If I.sub.CMI.sup.i=1 (up to desire precision) for all i, then stop; otherwise, go to step 2.
[0105] For more details, see G Liva, S Song, L Lan, Y Zhang, S Lin, WE Ryan Design of LDPC codes: A survey and new results JOURNAL OF COMMUNICATION SOFTWARE AND SYSTEMS 2 (3), 191-211.
Labeling Code Candidates to Reach Required Girth and ACE(EMD) Values
[0106] Trapping Set as a Reason of Decoder Fail:
[0107] If considering some short length codes which shall be decoded by maximum likelihood (ML) decoder, only the codeword weigh spectrum may be improved.
[0108] For QC-LDPC codes of medium to long block lengths, the ML decoding may not be suitable because of the large number of codeword's involved. Instead, some sub-optimal iterative decoding algorithms like the sum product algorithm (SPA), min sum algorithm (MSA) may be used.
[0109] One significant assumption for which the SPA and MSA converges to the MAP decoding is that the states of all the check nodes (CN) connected to any specified variable node (VN) are independent given the value of the bit corresponding to the VN. Although this assumption holds asymptotically, it becomes invalid for finite-length codes after a certain number of iterations. The reason for this is the presence of cycles in the Tanner graph. In a Tanner graph of girth g, the independence assumption becomes invalid after m number of iterations where
So, the girth of the Tanner graph should be increased in order to delay the violation of the independence assumption.
[0110] Further research has shown that cycles and their union form a special type of subgraphTrapping set (TS), that become a reason of decoder failure under the AWGN-channel.
[0111] A trapping set, TS(a,b) is a sub-graph with a variable nodes and b odd degree check nodes. Hence, TS(a,0) is a codeword of weight a. Examples of a TS produced by a union of cycles (which include all variable nodes in a trapping set) are shown in
[0112] For instance TS(5,3) is produced by three 8-cycles. TS(4,4) shows the variable nodes involved in the 8-cycles. The existence of cycles of size g (girth g) in a Tanner graph produces TS(g/2, g/2) or they overlap. The overlap of TSs produces TS(a,b) with b/a<1 which is a more harmful. This is why some code design methods strive at maximizing the value of TS(a,b) threshold b/a. Indeed, if there is code with girth g, there is no TS(a, b): a+b<g
[0113] This is provided by knowledge of TS structures where, for example, in girth 8 code, there is no TS(4,2), TS(3,3), or very harmful TS(5,1) and low weight codeword TS(4,0), which means that the minimal code distance is larger than 4 (cf. Vasid, B., Chilappagari, S. K., Nguyen, D. V., Planjery, S. K., Trapping set ontology, COMMUNICATION, CONTROL, AND COMPUTING, 2009. ALLERTON 2009. 47TH ANNUAL ALLERTON CONFERENCE ON, vol., no., pp. 1,7, Sep. 30, 2009-Oct. 2, 2009. But it does not provide any detail about the existence of other types of harmful TS(b/a<1, error in a VNs provide error in b VNs) a+bg.
[0114] For example, considering Margulis code with girth 8 (cf. Tao Tian, Jones, C. R., Villasenor, J. D., Wesel, R. D., Selective avoidance of cycles in irregular LDPC code construction, COMMUNICATIONS, IEEE TRANSACTIONS ON, vol. 52, no. 8, pp. 1242,1247, August 2004), it is known from the girth value that there is no codeword with weight 4, TS(4,0), and TSs with b<4, but that there exists harmful TS(12,4), due to which the error in 4 VNs provides for errors in 12 VNs. As a result, there is an error floor at FER 106, as shown in
[0115] ACE Spectrum as Measure of Graph Connective Properties:
[0116] To measure the quality of QC-LDPC code from TS characteristics, an Extrinsic Message Degree (EMD) metric or its approximation, ACE, or the ACE spectrum may be used. The ACE spectrum is a spectrum of the approximate cycle EMD metric. The EMD of a cycle measures the level of connectively of the cycle with rest of the graph. In this regard, the following basic concepts about subgraph connective properties may be used.
[0117] For a given cycle C in a LDPC code graph V.sub.c may be the set of variable nodes in C and C(V.sub.c) may be the set of check node neighbors of V.sub.c. The set C(V.sub.c) can be divided into three disjoint subsets: [0118] C.sup.cyc(V.sub.c): subset of C(V.sub.c) belonging to cycle C. Each node from C.sup.cyc(V.sub.c) is at least doubly connected to the set V.sub.c; [0119] C.sup.cut (V.sub.c): subset of C(V.sub.c) that are not in the cycle C, but are at least doubly connected to the set V.sub.c; [0120] C.sup.ext(V.sub.c): subset of C(V.sub.c) singly connected to the set V.sub.c.
[0121] For a given cycle C in the code graph and the corresponding set V.sub.c, let E(V.sub.c) be the set of edges incident to V.sub.c. The set E(V.sub.c) can be divided into three disjoint subsets: [0122] E.sup.cyc(V.sub.c): subset of cycle edges in E(V.sub.c) incident to check nodes in C.sup.cyc(V.sub.c); [0123] E.sup.cut(V.sub.c): subset of cut edges in E(V.sub.c) incident to check nodes in C.sup.cut(V.sub.c); [0124] E.sup.ext(V.sub.c): subset of extrinsic edges in E(V.sub.c) incident to check nodes in C.sup.ext(V.sub.c).
[0125] The EMD of a given cycle C in the code graph, denoted EMD(C), is EMD(C)=|E.sup.ext(V.sub.c)|, where |E.sup.ext(V.sub.c)| is the cardinality of E.sup.ext(V.sub.c), the number of extrinsic edges of C.
[0126] If a given cycle in the code graph has low EMD, its communication with the rest of the graph is limited. This limits the amount of new knowledge about values of VNs in the cycle that could be collected from rest of the graph. In the extreme case, when the EMD of the cycle is zero, the VNs in the cycles are isolated from rest of the graph and the cycle becomes a low weight TS.
[0127] Determining the EMD of a cycle in a graph may be challenging, since it may take additional steps to determine if an edge is an extrinsic edge or a cut edge. If this difference is neglected and both, extrinsic and cut edges, are accounted for in the metric, a simplified version of the EMD metric may be used.
[0128] The ACE of a given cycle C in the code graph, denoted ACE(C) is ACE(C)=|E.sup.ext(V.sub.c)|+|E.sup.cut(V.sub.c)|. ACE(C) can be calculated as:
wherein d(v) is the degree of the variable node v.
[0129] G(H) may denote a code graph with n variable nodes and d.sup.max(v) may be its largest left degree with i being an even integer with 4i2d.sub.max. For each i .sub.ACE.sup.i=(.sub.ACE.sup.0(0), . . . , .sub.ACE.sup.i(k.sub.i1)) may be the k.sub.i-tuple of values where .sub.ACE.sup.i(i) is a number of VNs with a property that the smallest ACE value of the cycle of length i they belong to is equal to i with 0i(k.sub.i1)=(0.5)*(d.sub.v.sup.max2). The ACE spectrum of G(H), ACE(G(H))=(n.sub.ACE.sup.4, . . . , n.sub.ACE.sup.2d max) is the (d.sub.v.sup.max2)-tuple of n.sub.ACE.sup.i k.sub.i-tuples with 4i2d.sub.max.
[0130] For example,
[0131] Condition for which the ACE Spectrum becomes a TS enumerator:
[0132] In Deka, Kuntal, Rajesh, A., Bora, P. K., On the equivalence of the ACE and the EMD of a cycle for the ACE spectrum constrained LDPC codes, TURBO CODES AND ITERATIVE INFORMATION PROCESSING (ISTC), 2014 8TH INTERNATIONAL SYMPOSIUM ON, vol., no., pp. 67,71, 18-22 Aug. 2014, a sufficient condition for the equality EMD=ACE is shown: For an LDPC code with girth g, any cycle C.sub.2i of length 2i has equal ACE and EMD if i<g2.
[0133] For example, for a QC-LDPC code of girth 10, all cycles of length<2*(102)=16: 10, 12 and 14 have equal respective ACE and EMD. This leads to two strong consequences, for any cycle with equal ACE and EMD: [0134] 1. CNs connected to the VNs in the cycle but not involved in the cycle will be singly connected to the cycle. The reliability of the messages coming from these CNs can be increased relative to messages coming from the CNs involved in the cycle in order to enhance the benefit of the messages coming from the rest of the Tanner graph. In this way, better connectivity can be ensured for the isolated small cycles and the performance of the iterative decoders can be improved (gain in waterfall region). [0135] 2. TS enumerators can be obtained via the ACE spectrum. This is because a cycle of length l contains l/2 number of VNs. For an ACE value , the subgraph induced by the l/2 number of VNs constrains exactly odd-degree CNs. Hence, the cycle can be treated as TS(l/2, ), (error-floor region improvement).
Lifting the Protomatrix:
[0136] The lifting may be based on a simulated annealing optimization algorithm. The algorithm may take as input a protograph P, a circulant size Z, a value g indicating a desired girth and an ACE or EMD value. The algorithm may output a parity-check matrix H(P) lifted for the circulant size Z.
[0137] An initial parity check matrix may be generated by choosing random shift values, i.e., the choosing is not restricted as to the desired girth (cf. M. P. C. Fossorier, Quasi-cyclic low-density parity-check codes from circulant permutation matrices, IEEE TRANS. INF. THEORY, vol. 50, pp. 1788-1794, August 2004). A set of allowed shift values for the desired girth may then be calculated as follows: A cycle of length 2i in the parity-check matrix H(P)=[h.sub.x,y] may be defined by 2i position h.sub.x,y=1 such that: [0138] 1. Two consecutive positions are obtained by changing alternatively row or column only; and [0139] 2. All positions are distinct, except the first and last ones. It follows that two consecutive positions in any cycle belong to distinct circulant permutation matrices which are either in the same row, or in the same column. Hence, a cycle of length 2i may be associated with an ordered series of circulant permutation matrices (CPM) A.sub.j.sub.
[0143]
[0144] For improving the connective properties, a temperature parameter with relatively high value may be chosen to ensure reaching a global optimum of cycle topology properties (EMD or ACE) and the connective properties of the labelled protomatrix (QC-LDPC matrix) may be iteratively improved by repeating the following procedure: [0145] 1) Nstep=0 [0146] 2) Choosing a random non-empty cell of the protomatrix. [0147] 3) Enumerating all possible cycles through this cell of length shorter than g. [0148] 4) Calculating a number of existing cycles for all possible shift values of this circulant. [0149] 5) Randomly taking one of these values with a probability depending on the value of cycles and the temperature parameter. The probability weight function may be greater for smaller values of ShiftCycles(m) and a difference increase with the decrease of the temperature. An example of such a probability weight function is w(m)=
The exact probability of the choice m may be p(m)=w(m)/.sub.i=0.sup.N1w(i). [0150] 6) Decreasing the value of the temperature. Each step, the temperature should monotonically decrease. An example of a formula for decreasing the temperature is
Simulating Code Candidates and Choosing a Code Candidate
[0153] The simulation may include choosing a frame error rate (FER) level and starting iterations of the belief propagation algorithm to find a smallest possible
satisfying the FER. From different code candidates, the one that achieves the lowest
may be chosen. By continuing with adding rows and columns to the protomatrix and applying this method, a lifted family of nested QC-LDPC codes may be generated.
[0154] An example of the optimization result is shown in
[0155] By replacing the rows in the QC-LDPC matrix with a component code, a family of nested GLDPC codes can be generated. For example, a Cordaro-Wagner component code may be used. A Cordaro-Wagner component code is a 2-dimensional repetition code over GF(2) of length n, having the largest possible minimum weight:
[0156] This may minimize the GLDPC complexity overhead and improve the resulting performance. For constructing the parity-check matrix of the generalized QC-LDPC code, H.sub.GLDPC, from the permutation parity-check matrix H.sub., each row of the matrix
may be replaced with a component code
[0157] Which results in the GLDPC code:
[0158] The GLDPC code parity-check matrix may be used for implementing an IR-HARQ scheme by dividing the parity-check matrix as shown in
[0159] 1. HARQ Protocol
[0160] A HARQ protocol may govern a set of K2 transmissions. If denoting the number of columns of the protomatrix P.sub.i by n.sub.i with n.sub.1=n, n.sub.i+1>n.sub.i, then, for the case of incremental redundancy (IR), n.sub.i=i.Math.n. If z is the circulant size and the information bits with attached CRC are denoted by u, u may be encoded using the GLDPC code H(P.sub.1) to generate the codeword c.sub.1 of length n.sub.1.Math.z. After modulation of the codeword, the codeword may be passed through the channel. After demodulation of the received signal, the soft information L.sub.1 consisting of LLR's corresponding to bits of c.sub.1 is provided. Using the parity-check matrix H(P.sub.1), L.sub.1 may be decoded. After decoding, the CRC may be checked. If the information is confirmed, it may be assumed that the correct information bits have been decoded.
[0161] Otherwise, the transmission with number iter=2 may be requested. Heretofore, the protograph P.sub.iter may be constructed and u may be encoded using the GLDPC code H(P.sub.iter) to get the codeword c.sub.z of length n.sub.iter.Math.z. Since c.sub.iter contains c.sub.iter1 as a subword only the remaining part of c.sub.iter may be transmitted, i.e., only n bits c.sub.iter\c.sub.iter1 may be transmitted. After modulation of the sent bits, passing through the channel, demodulation of the received signal, the soft information L.sub.iter consisting of LLR's corresponding to bits of c.sub.iter\c.sub.iter1 is available at the decoder. The soft information L.sub.iter1 and L.sub.iter may then be combined into L.sub.iter (e.g., by concatenation into a vector of length n.sub.iter.Math.z). Using the parity-check matrix H(P.sub.2) L.sub.iter may be decoded. After decoding, the CRC may be checked. If the information is confirmed, it may be assumed that the correct information bits have been decoded. Otherwise, if iter<K the second step may be repeated with iter=iter+1.