GENERATION OF SPATIALLY-COUPLED QUASI-CYCLIC LDPC CODES
20190273511 ยท 2019-09-05
Inventors
Cpc classification
H03M13/036
ELECTRICITY
H03M13/116
ELECTRICITY
H03M13/1154
ELECTRICITY
International classification
Abstract
The invention relates to an apparatus for providing at least one parity check matrix defining a spatially-coupled low density parity check, LDPC, code on the basis of a set of base matrix parameters defining a plurality of base matrices, each base matrix of the plurality of base matrices being associated with a protograph of a plurality of protographs, wherein the apparatus comprises: a processor configured to: generate on the basis of the plurality of protographs a set of candidate protographs by discarding protographs of the plurality of protographs; lift the protographs of the set of candidate protographs for generating a plurality of codes; and generate on the basis of a plurality of codes a set of candidate codes by discarding codes of the plurality of codes.
Claims
1. An apparatus for providing a parity check matrix defining a spatially-coupled low density parity check, QC-LDPC, code on the basis of a set of base matrix parameters defining a plurality of base matrices, each base matrix of the plurality of base matrices being associated with a protograph of a plurality of protographs, wherein the set of base matrix parameters defines the size WC, a circulant size N, a maximal column weight M and a set of allowed column weights of the plurality of base matrices, wherein the apparatus comprises: a processor configured to: generate on the basis of a plurality of protographs a set of candidate protographs by discarding protographs of the plurality of protographs; lift the protographs of the set of candidate protographs for generating a plurality of codes; and generate on the basis of a plurality of codes a set of candidate codes by discarding codes of the plurality of codes, wherein the processor is configured to lift the protographs of the set of candidate protographs on the basis of a simulated annealing technique.
2. The apparatus of claim 1, wherein the processor is configured to discard those protographs of the plurality of protographs that are associated with a LDPC code having a minimum Hamming distance that is larger than a minimum Hamming distance threshold value.
3. The apparatus of claim 2, wherein the processor is configured to estimate the minimum hamming distance of a LDPC code C on the basis of the upper bound defined by the following equation:
4. The apparatus of claim 2, wherein the minimum Hamming distance threshold value is (C+1)!.
5. The apparatus of claim 3, wherein the minimum Hamming distance threshold value is (C+1)!.
6. The apparatus of claim 2, wherein the processor is further configured to discard protographs of the plurality of protographs on the basis of the balanced girth of the parity check matrix H associated with each protograph.
7. The apparatus of claim 3, wherein the processor is further configured to discard protographs of the plurality of protographs on the basis of the balanced girth of the parity check matrix H associated with each protograph.
8. The apparatus of claim 4, wherein the processor is further configured to discard protographs of the plurality of protographs on the basis of the balanced girth of the parity check matrix H associated with each protograph.
9. The apparatus of claim 6, wherein the processor is configured to discard those protographs from the plurality of protographs that are associated with a parity check matrix H having a balanced girth which is larger than a balanced girth threshold value.
10. The apparatus of claim 7, wherein the processor is configured to discard those protographs from the plurality of protographs that are associated with a parity check matrix H having a balanced girth which is larger than a balanced girth threshold value.
11. The apparatus of claim 2, wherein the processor is further configured to lift a protograph of the plurality of protographs having at least one parallel edge to a protograph having no parallel edges, in particular using a quasi-cyclic technique.
12. The apparatus of claim 3, wherein the processor is further configured to lift a protograph of the plurality of protographs having at least one parallel edge to a protograph having no parallel edges, in particular using a quasi-cyclic technique.
13. The apparatus of claim 4, wherein the processor is further configured to lift a protograph of the plurality of protographs having at least one parallel edge to a protograph having no parallel edges, in particular using a quasi-cyclic technique.
14. The apparatus of claim 2, wherein the processor is further configured to discard those protographs of the plurality of protographs that are associated with an extrinsic message degree (EMD) that is smaller than an EMD threshold value.
15. The apparatus of claim 3, wherein the processor is further configured to discard those protographs of the plurality of protographs that are associated with an extrinsic message degree (EMD) that is smaller than an EMD threshold value.
16. A method for providing a parity check matrix defining a spatially-coupled low density parity check, LDPC, code on the basis of a set of base matrix parameters defining a plurality of base matrices, each base matrix of the plurality of base matrices being associated with a protograph of a plurality of protographs, wherein the set of base matrix parameters defines the size WC, a circulant size N, a maximal column weight M and a set of allowed column weights of the plurality of base matrices, wherein the method comprises: generating on the basis of the plurality of protographs a set of candidate protographs by discarding protographs of the plurality of protographs; lifting the protographs of the set of candidate protographs for generating a plurality of codes; and generating on the basis of the plurality of codes a set of candidate codes by discarding codes of the plurality of codes, wherein the step of lifting the protographs of the set of candidate protographs is based on a simulated annealing technique.
17. The method of claim 16, wherein the method is configured to discard those protographs of the plurality of protographs that are associated with a LDPC code having a minimum Hamming distance that is larger than a minimum Hamming distance threshold value.
18. The method of claim 17, wherein the method is configured to estimate the minimum hamming distance of a LDPC code C on the basis of the upper bound defined by the following equation:
19. The method of claim 17, wherein the minimum Hamming distance threshold value is (C+1)!.
20. A computer program comprising program code for performing the method of claim 16 when executed on a computer.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0025] Further embodiments of the invention will be described with respect to the following figures, wherein:
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041] In the various figures, identical reference signs will be used for identical or at least functionally equivalent features.
DESCRIPTION OF EMBODIMENTS
[0042] In the following description, reference is made to the accompanying drawings, which form part of the disclosure, and in which are shown, by way of illustration, specific aspects in which the present invention may be placed. It is understood that other aspects may be utilized and structural or logical changes may be made without departing from the scope of the present invention. The following detailed description, therefore, is not to be taken in a limiting sense, as the scope of the present invention is defined be the appended claims.
[0043] For instance, it is understood that a disclosure in connection with a described method may also hold true for a corresponding device or system configured to perform the method and vice versa. For example, if a specific method step is described, a corresponding device may include a unit to perform the described method step, even if such unit is not explicitly described or illustrated in the figures. Further, it is understood that the features of the various exemplary aspects described herein may be combined with each other, unless specifically noted otherwise.
[0044]
[0045] The processor 101 is configured to lift the protographs of the set of candidate protographs on the basis of a simulated annealing technique, as will be described in more detail further below.
[0046] Before describing some further details of the apparatus 100 shown in
[0047] A (W, C, N, L) tail-bitten spatially-coupled QC-LDPC code C(H) of length W multiple L multiple N (i.e. if the circulant size is NN with W circulants coupled L times) can be defined by a parity-check base matrix H in the following way:
[0049] For a specific tail-bitten spatially-coupled QC-LDPC code the corresponding CPM-shifts matrix can be defined as the matrix of circulant shifts that defines the QC-LDPC code, i.e.:
[0050] The corresponding shifts can be represented as a vector D of shifts:
is an integer, the vector D can be defined as
For 0iCL1,0jWL1, if
i mod WLi<(i+W)mod WL
then A.sub.i,j=I(b.sub.i mod W,j mod C) else A.sub.i,j=Z.
[0052] The above definitions are further illustrated by
[0053] There is a more general case of parity check matrices, where one circulant permutation matrix can have more than one diagonal.
[0054] A weight matrix (or protograph) wt(H) of a matrix H is a matrix of number of diagonals for each circulant of H.
[0055] A type M of the matrix H is a maximal value of the matrix wt(H).
[0056] Given a protograph matrix H of type M>1, a matrix with circulant size equal to M can be generated. Choosing in each circulant the number of diagonals equal to corresponding weight, the result can be considered as a new protograph matrix H. The type of the new protograph matrix H is 1, and most properties of H will remain the same as for H. Thus, without loss of generality only protograph matrices of type 1 can be considered, when it is necessary.
[0057] There is isomorphism between the ring of circulant permutation matrices over some field F and the ring F-polynomials modulo x.sup.N1, where N is the size of the circulant. For example I(0) can be represented as x.sup.0, I(5) as x.sup.5, and I(0)+I(1)+I(4) as x.sup.0+x.sup.1+x.sup.4.
[0058] A very important characteristic of a parity check matrix is the girth of its Tanner graph, which is defined as the minimal length of a cycle of the Tanner graph of a parity check matrix. A cycle in a Tanner graph can be defined in the following way: . . . .
[0059] Cycle of even length 2K in H defined by 2K positions of ones such that: [0060] 1) Two consecutive positions are obtained by changing alternatively column of row only; [0061] 2) All positions are distinct except first and last one;
[0062] Two consecutive elements of the path belong to different circulant permutation matrices. Thus, a chain of circulant permutation matrices can be defined as follows:
A.sub.i.sub.
where i.sub.ai.sub.a+1,j.sub.aj.sub.a+1, for all 0aK1.
[0063] As each part of a cycle is one, a circulant permutation matrix A.sub.i,j participating in the cycle cannot be empty. In other words, A.sub.i,j=I(p.sub.i,j).
[0064] Using these shifts of the identity matrix the necessary and sufficient conditions for the existence of the cycle can be expressed as follows:
[0065] The Tanner graph T(H) of a parity check matrix H is a bipartite graph with two set of vertices, referred to as variable nodes V={.sub.0, .sub.1, . . . , .sub.n1} and check nodes C={c.sub.0, c.sub.1, . . . , c.sub.n1}. The columns of the matrix H correspond to the variable nodes, and the rows thereof to the check nodes. There is an edge between a variable node .sub.i and a check node c.sub.j, if any only if the cell of H at the i-th column and the j-th row is nonzero.
[0066] A trapping set T of type (T.sub.1, T.sub.2) is a connected subgraph of a Tanner graph, including T.sub.1 variable nodes, where T.sub.2 check nodes are connected with the trapping set T by an odd number of edges.
[0067] Simultaneously altering values of T.sub.1 variable nodes and T.sub.2 check nodes gives correct result. It means that wrong bit in T.sub.2 check nodes gives wrong decoding of T.sub.1 variable nodes. A small value of T.sub.2 gives bad trapping sets, as it more easy to make mistakes in a small number of nodes. Trapping sets with bigger value of T.sub.2 are worse as more informational bits are wrong. Differently put, if wrong bit place to variable nodes incident to odd degree check node, then Belief Propagation decoder most commonly fails due to this error (even if the code distance is greater than this number error). The graph properties are the reason for this error.
[0068]
[0069]
[0070] In an embodiment, the input of the code generation stages shown in
[0071] The code generation stages shown in
[0072] The first stage shown in
[0073] In the following several of the processing blocks shown in
[0074] In the processing step 603, the processor 101 of the apparatus 100 is configured to consider possible protograph matrices for a given length N and rate K/N. If K and N are not too large enough, the processor 101 can enumerate all protographs.
[0075] In an embodiment, the processor 101 is configured to estimate in the next processing step 605 the quality of a QC-LDPC code based on a protograph A by estimating the minimum Hamming distance of the code.
[0076] The permanent of the mm base matrix B is
[0078] According to an embodiment, the processor 101 is configured to further process a code if the upper bound d.sub.min is not less than (C+1)! in the processing block 605. In other words, in the processing block 605 the processor 101 is configured to discard protographs or corresponding codes with an upper bound d.sub.min being smaller than (C+1)!.
[0079] The following example illustrates the use of equation (5), as applied by the processor 101 in embodiments of the invention. Consider two (2,4) regular length-4r QC codes, namely a first code C(H.sub.1) with parity check matrix
and a second code C(H.sub.2) with parity check matrix
[0080] For both codes equation (5) provides:
d.sub.minmin.sup.+{(1+1)+(1+1)+(1+1)}=6
.sub.a=0.sup.K1p.sub.i.sub.
[0081] In above equation (4) each coefficient p.sub.i,j for the CPM A.sub.i,j adds with plus for each even step and with minus for each odd steps. If the number of even steps for the CPM A.sub.i,j equals the number of odd steps, then p.sub.i,j can be eliminated from above equation (4).
[0082] A balanced cycle on the parity check matrix H is the cycle where each cell participates the same number of times in even steps and in odd steps. For a balanced cycle above equation (4) reduces to the trivial equality 00, which holds for any values of coefficients p.sub.i,j.
[0083] In the processing block 607 the processor 101 is configured to estimate the minimal length of the balanced cycle for each protograph candidate.
[0084] The balanced girth is defined as the minimal length of the balanced cycle. The actual girth cannot be larger than the balanced girth of a parity check matrix H for any shifts of circulant permutation matrices. For this reason, the balanced girth is an important upper bound for the girth of a protograph, as implemented in embodiments of the invention.
[0085] In the following, a pseudo code for estimating the balanced girth of the parity check matrix H will be described, as implemented in embodiments of the invention. Here, K denotes a pre-defined constant. This pre-defined constant can be selected as a trade-off. After a certain value of balance cycle, the code distance can become too bad. Thus, the pre-defined constant can be selected as the point, where the cycle is enough to prevent performance degradation by TS and code distance.
[0086] Enumerate all closed cycles with length shorter than given K, going through non-empty protograph cells, with vertical lines on even steps, and horizontal lines on odd steps. [0087] 1. For each cycle from enumeration calculate whether this cycle is balanced or not. [0088] a. For each cell of the cycle calculate difference between the appearance after even and after odd steps. [0089] b. The cycle is balanced, if and only if all differences are zero. [0090] 2. Return minimal length of the balanced cycle.
[0091] In processing block 609, the processor 101 is configured to determine for each candidate protograph, whether the protograph has parallel edges. If this is the case, the processor 101 is configured to lift in processing block 610 a corresponding candidate protograph A having some parallel edges to a bigger protograph without parallel edges using a quasi-cyclic technique. For a protograph of type K, the minimal possible value of the circulant size K is chosen and changed for each.
[0092] In processing block 611, the processor 101 is configured to discard protographs having a small Extrinsic Message Degree (EMD), i.e. an EMD smaller than a predefined threshold. The EMD of a cycle in the Tanner graph is defined as the number of check nodes singly connected to the variable nodes involved in the cycle. The EMD value of a code is an important characteristic, because each cycle C.sub.2n of length 2n is a trapping set (n, EMD(C.sub.2n)).
[0093] The Approximate Cycle EMD (ACE) is defined as the number of incident edges not included in the cycle. For a cycle C.sub.2n of length 2n the following relation holds
.sub.k=1.sup.2nACE(c.sub.2n)=(d.sub..sub.
where d.sub..sub.
[0094]
[0095] The ACE spectrum .sub.ACE=(.sub.2, .sub.4, . . . , .sub.d.sub.
[0096] It has been shown that the ACE and the EMD value(s) can be related in the following ways.
[0097] First, for a code with a girth g the following relation holds for a cycle C.sub.k having a length k<2 g4: ACE (C.sub.k)=EMD(C.sub.k).
[0098] Second, for a code with the girth g and the ACE spectrum .sub.ACE=(.sub.2, .sub.4, . . . , d.sub.ACE), ACE(C.sub.k) of the cycle C.sub.k of length k, k2 g4 is equal to EMD(C.sub.k) if
[0099] These relations between the ACE and the EMD are illustrated by the following examples.
[0100] For a LDPC code of girth 12, all the cycles of length 12, 14, 16 and 18 have equal ACE and EMD.
[0101] For a LDPC code with ACE spectrum (, , 15, 11, 16) all the cycles of length 8 with the ACE value less than 13 will have equal ACE and EMD.
[0102] For all cycles of length 10 and ACE value less than
[0103] In an embodiment, the processor 101 is configured to make use of one or more of the above relations between the ACE and the EMD in the processing block 611 for a fast evaluation of the EMD for cycles in protographs. This, in turn, allows the processor 101 to estimate the number of trapping sets and, thus, the quality of a protograph in the processing block 611.
[0104] In an embodiment, for a given protograph the following assumptions are made: non-existence of cycles and hence a Gaussian distribution for LLR on the belief propagation algorithm. On the basis of these assumptions the decoding threshold of an ensemble of protographs characterized by a given distribution of variable nodes and check nodes can be calculated, as implemented in embodiments of the present invention.
[0105] We plot chart of two EXIT functions I.sub.E,V and I.sub.E,C.
[0106] The step function shows the growth of the information obtained by the belief propagation algorithm. If the EXIT functions are not intersecting, the belief propagation algorithm can be terminated. The decoding threshold can be defined as the value of the noise, when the two EXIT functions touch each other. The two EXIT functions I.sub.E,V and I.sub.E,C can be expressed in the following way:
[0107] In an embodiment, the following approximation can 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)}).
[0108] For irregular LDPC codes I.sub.E,V and I.sub.E,C can be calculated as weighted averages, as implemented in an embodiment of the invention.
[0109] In an embodiment, the weighting is given by the coefficients of the edge degree distribution polynomials (z)=d.sub.d=1.sup.d.sup.
I.sub.E,V=.sub.d=1.sup.d.sup.
I.sub.E,C=.sub.d=1.sup.d.sup.
[0110] In an embodiment, a pre-calculated approximation function J() can be used having an accuracy of, for instance, better than 10.sup.5.
[0111] On the basis of the weighted functions I.sub.E,V(d,I.sub.A,V) and I.sub.E,C(d,I.sub.A,C) the processor 101 can be configured to calculate the following iterations:
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)))
[0112] In an embodiment, the processor 101 is configured to stop the iteration, when I.sub.A,V.sup.(n) is close to 1.
[0113] For each distribution of weights .sub.d,.sub.d the minimal
(based on .sub.A.sup.2) is calculated, when the iteration converges to 1 for a fixed number of steps.
[0114] Using EXIT charts, i.e. graphical representations of the exit functions, good distributions .sub.d,.sub.d can be generated and thereafter protographs with given distributions of ones in rows and columns can be created, as implemented in embodiments of the invention and as will be described in more detail in the following.
[0115] For each value of .sub.d the processor 101 is configured to generate a set of all possible columns, which provides this value .sub.d. In an embodiment, parallel edges in the protograph are allowed, i.e. a cell can not only have the values 0 and 1, but larger values as well.
[0116] In an embodiment, the processor 101 is configured to generate protographs with given weights of rows using a backtracking algorithm. In this way, the processor 101 generates a set of protographs A possibly having a w eight larger than 1. On the basis of this set of protographs A the processor 101 is configured to construct parity check matrices H(x) with wt(H(x))=A (processing block 604 of
[0117] In an embodiment, a frame error rate (FER) threshold can be selected and the processor 101 is configured to perform the iterations of the belief propagation algorithm, until the smallest possible
satisfying the FER threshold has been determined. From different codes we choose that one which provides a lower
[0118] In processing block 615, the processor 101 is configured to perform a base matrix lifting based on simulated annealing. To this end, a parameter K can be selected as the desired girth. In a first stage, a random initial parity check matrix can be generated by taking random values of shifts for non-empty circulant permutation matrices. This matrix usually has very low girth. Also a special parameter temperature is chosen associated with the simulated annealing approach with relatively high value.
[0119] In a second stage, the processor 101 is configured to iteratively improve the initial parity check matrix by repeating the procedure defined by the following pseudo code. [0120] 1. Nstep=0 [0121] 2. Choose one random non-empty cell of the protograph. [0122] 3. Enumerate all possible cycles through this cell of length shorter than K. [0123] 4. Calculate number of existing cycles ShiftCycles for all possible shift values of this cell (using the techniques described above). [0124] 5. Take randomly one of these values with probability depending on the value of cycles and the temperature parameter of the annealing method. The probability weight function should be greater for smaller values of ShiftCycles(m), and the difference increases with a reduction of the temperature. One example of such probability weight function is
[0129] A main feature of embodiments of the invention is the enumeration of the paths going through a given cell and for each cycle the number of cycles for each value of the shift of CPM for the given cell is determined. In an embodiment, this is done on the basis of a modified backtracking algorithm, as defined by the following pseudo code: [0130] 1. Define zero vector ShiftCycles of length N. [0131] 2. Enumerate all closed cycles with length shorter than given K, starting and ending in the given cell going through non-empty protograph cells, with vertical lines on even steps, and horizontal lines on odd steps. [0132] 3. Repeat the following procedure for each cycle: [0133] 4. Consider all horizontal edges (for every 1a<K=j.sub.a1=j.sub.a). Calculate the number of edges of the cycle which intersect the shifted zone of the protograph, and proceed to the left (i.sub.aD(j.sub.a), i.sub.a1>D(j.sub.a1) and to the right (i.sub.a>D(j.sub.a), i.sub.a1D(j.sub.a1). If the number of left intersections is not equal to the number of right intersections, it means that cycle is actually not-closed in the spatially-coupled matrix, and this cycle is discarded. [0134] 5. Calculate signed sum R of appearing shift p.sub.i.sub.
[0137] In an embodiment, the processor 101 is configured to solve the equation a x=b mod c occurring in step 7 of the above pseudo code in the following way: [0138] 1. Take d=GCD (a, c) [0139] 2. If b mod d0, there is no solution for x. [0140] 3. If b mod d=0, take
and solve ax=b(mod c). [0141] 4. If a=0 and b=0, every x is a solution [0142] 5. If a=0 and b0, there is no solution. [0143] 6. If a 0 there is e=a.sup.1 mod c, i.e. ae=1 mod c, then x=be mod c [0144] 7. All solutions of the initial equation are x.sub.k=be mod c+k c, for 0k<d.
[0145]
[0146] The following examples illustrate the performance of the base matrix lifting based on the simulated annealing (SA) algorithm described above in comparison to a conventional base matrix lifting based on a hill-climbing (HC) algorithm.
[0147] In a first example, the value of the circulant for a regular protograph with row number 3 and column number L with girth 8 (less value better) can be taken from the following table for the two different algorithms mentioned above.
TABLE-US-00001 L = 4 L = 5 L = 6 L = 7 L = 8 L = 9 L = 10 L = 11 L = 12 SA 9 13 18 21 25 30 35 40 45 HC 9 13 18 21 25 30 35 41 47
[0148] In a second example, the value of the circulant for a regular protograph with row number 3 and column number L with girth 10 (less value better) can be taken from the following table for the two different algorithms mentioned above.
TABLE-US-00002 L = 4 L = 5 L = 6 L = 7 L = 8 L = 9 L = 10 L = 11 L = 12 SA 39 63 97 144 215 297 409 542 698 HC 39 63 103 160 233 329 439 577 758
[0149] As can be taken from these tables, in both examples the SA algorithm outperforms the HC algorithm, i.e. provides smaller circulant values, for different numbers of columns.
[0150] The processing block 617 shown in
[0151] Let H be a parity check matrix based on a regular (j,k)-code C(H) with length n (with n=WN) and let the corresponding Tanner graph have one component. Let H.sup.T H and let .sub.1,.sub.2 be the largest and the second-largest eigenvalue, respectively, of L. It has been shown that in this case the minimum Hamming weight and the minimum AWGNC pseudo-weight have the following lower bounds:
[0152] This result can be applied not only to regular codes, but to non-regular codes as well in the following way:
where j.sub.avg is the average weight of the code C(H).
[0153] On the basis of the above relations the processor 101 is configured to discard codes having a small lower bound for the pseudo code weights.
[0154] In a block 619 of
[0155] In a processing block 621 of
[0156] Generally, the minimum Hamming distance is an important characteristic of a given parity check matrix. It provides an estimate for the level of undetectable errors as well as an upper bound on the minimum pseudo-weight of a Tanner graph representing a code.
[0157] If the size of the circulant of a spatially coupled code approaches infinity, the spatially coupled code becomes a convolution code. Consequently, a convolution code provides a good approximation for a spatially coupled code. As already mentioned above, [W] denotes the set of numbers from [0 . . . W1]. It has been shown that for a QC code C(H) with a circulant parity check matrix H an upper bound for the minimum Hamming distance of the code is the following:
[0158] In an embodiment, the processor 101 is configured to estimate a tighter upper bound for the minimum Hamming distance on the basis of equation (6). In an embodiment, the processor 101 is configured to keep a code, if the tighter upper bound of the Hamming distance provided by equation (6) is substantially equal to the upper bound provided by equation (5) (which, in turn, implies that the upper bounds are substantially equal to (C+1)!).
[0159] The use of equation (6), as implemented in embodiments of the invention, will be illustrated in the following on the basis of the two examples already mentioned above, i.e. for a first code C(H.sub.1) with parity check matrix
and a second code C(H.sub.2) with parity check matrix
[0160] As described above, equation (5) provides for both of these codes the same upper bound having the value 6.
[0161] Using equation (6) one obtains for the first code:
[0162] Using equation (6) one obtains for the second code:
[0163] Thus, the additional check performed by the processor 101 in block 621 of
[0164] In a processing block 623 of
[0165] In a processing block 625 of
[0166] The rows of a parity check matrix H can be considered as vectors b.sub.i. Let L(b.sub.0, b.sub.1, . . . , b.sub.n1)={.sub.i=0.sup.n1x.sub.ib.sub.i:(x.sub.0, x.sub.1, . . . , x.sub.n1)Z.sup.n} be a lattice over the vectors b.sub.i(n=CL1). The processor 101 is configured to determine the minimum distance between vertices of this lattice and to determine minimum Hamming distance for H on the basis thereof.
[0167] In an embodiment, the processor 101 is configured to generate a lattice based on a code C(H) such that the minimal non-zero lattice vector corresponds to the minimal Hamming distance vector in the code.
[0168] In a first stage, the processor 101 is configured to choose a scaling factor N with
[0170] In a second stage, the processor 101 is configured to construct the lattice (B.sub.c) on the basis of the matrix
[0172] In an embodiment, the processor 101 is configured to use a Gram-Schmidt orthogonalization process. In an embodiment, the processor 101 is configured to generate an orthogonal basis using the following equations:
[0173] Ordered by length basis B={b.sub.0, b.sub.1, . . . , b.sub.n1} of lattice L.sup.m is adducted by block Korkin-Zolotarev method with block size [2, m] and precision
if: [0174] Basis B adducted by length (|b.sub.i||b.sub.j|iff i>j) [0175] .sup.2.Math.b.sub.i.sup..sup.2.sub.1.sup.2(L.sub.i),i{0, . . . , m1}, where .sub.1(L.sub.i)length of shortest vector in the lattice L.sub.i, in the orthogonal space with basis b.sub.i, . . . , b.sub.min(i+1,m1).
[0176] On the basis of the definitions above, the algorithm implemented in the processor 101 for constructing a basis adducted by block Korkin-Zolotarev method can be defined by the following pseudo code:
Input:B={b.sub.0,b.sub.1, . . . , b.sub.n1}[0,1].sup.n,(;1],[2,m]
TABLE-US-00003 1. Start same algorithm with lower values of . 2. Z:=0; j:=0 3. WHILE z<m-1 DO a. j:=j+1; k:=min(j+ 1, m) b. IF j=m THEM j:=0; k:= c. A=|b.sub.j| d. b.sub.j.sup.new = find_minimal_vector(k, {b.sub.j, b.sub.j+1, ..., b.sub.j+k1},A) e. h:=min(k+1,m) f. IF |b.sub.j| >|b.sub.j.sup.new| THEN b.sub.j :=b.sub.j.sup.new; z := 0 ELSE z:=z+1
Output: B
[0177] In an embodiment, the processor 101 is configured determine for given k, B, A the shortest vector of the lattice L.sub.i,k=.sub.i=0.sup.k1x.sub.ib.sub.i+j:(x.sub.0, x.sub.1, . . . , x.sub.k1)Z.sup.k} spanned over the vectors b.sub.j. In an embodiment, the corresponding algorithm implemented in the processor 101 can work in a parallel mode with several nodes up to A (upper bound for minimal distance). The algorithm, which according to an embodiment is implemented in the processor 101 and is defined by the following pseudo code, is basically an n-fold cycle with calculated start and end for each cycle and a reduction of the upper bound A for each recorded distance.
Input:j,k,B={b.sub.0,b.sub.1, . . . , b.sub.k1}[0,1].sup.k,idid of the node.
TABLE-US-00004 1. Calculate B.sup. = {b.sub.0.sup., b.sub.1.sup., . . . b.sub.k1.sup.} and matrix .sub.i,j 2. X = {id,0,0, . . . 0}; l = {0}.sup.m, R = {}; 3. i:=0 4. WHILE i k: a. l.sub.i = (x.sub.i + .sub.j=i+1.sup.mx.sub.j.sub.j,i).sup.2 b.sub.i.sup..sup.2 b. IF (.sub.j=i+1.sup.k1l.sub.j > A) THEN i:=i+1; x.sub.i = x.sub.i +1 c. IF (.sub.j=i+1.sup.k1 l.sub.j A) AND i=0 THEN i. IF .sub.j=0.sup.k1x.sub.jb.sub.j < A THEN A = .sub.j=0.sup.k1x.sub.jb.sub.j, R = R {.sub.j=0.sup.k1x.sub.jb.sub.j} d. IF (.sub.j=i+1.sup.k1 l.sub.j A) AND i>0 THEN i. i:=i1,
[0179] In a processing block 627 of
[0180] In an embodiment, the processor 101 is configured to determine one or more stopping sets on the basis of a branch-and-bound method. There are 2.sup.WL possible values of a coding vector of length WL. In an embodiment, this set of all possible values is split into branches by adding constraints of the kind x.sub.i=k. In an embodiment, the processor 101 is configured to determine all stopping sets of length r or less on the basis of a branch-and-bound method, as defined by the following pseudo code: [0181] 1. Generate initial list of constraints sets L from one element-empty constraint set F={ }. [0182] 2. Split constraint set. Take first constraint F from list L. Most general and simple constraint set F={ }. Every constraint set F can be split into two, by any variable x.sub.i, F.sub.2=F{x.sub.i=0} and F.sub.2=F{x.sub.i=1}. Replace constraint set F in the list L into two new constraints sets F.sub.1 and F.sub.2. [0183] 3. Repeat the following steps 4 to 6 for each constraints set F.sub.1 and F.sub.2. [0184] 4. Extend constraints set. Perform extended iterative decoding with achieve some values of x.sub.i.Math.F.sub.k. Add these values as additional constraints to F.sub.k. In case the extension of the constraints set leads to contradictory results, the constraint set can be eliminated. [0185] 5. Find new stopping sets. If constraint F.sub.k has all fixed variables, i.e. corresponds to a single point, check whether it has number of 1 equal or less than , add (F.sub.k) to list of the stopping sets already found. [0186] 6. Bound part, eliminate branch. Calculate lower bound w(F) of minimal stopping set. If w(F)>, eliminate F.sub.k. [0187] 7. If L is not empty return to step 2.
[0188] In an embodiment, the processor 101 is configured to determine a lower bound of the minimal stopping set for the constraint set F in the following way. Let q denote the number of constraints x.sub.i=1 in the constraint set F. Let T(F) denote the set of columns, whose indices are not empty and are not used in the constraint set F. Let {tilde over (H)} denote a submatrix of H consisting of columns from the set T(F). It has been shown that the following linear lower estimation holds:
[0189] In an embodiment, the processor 101 is configured to compute the above lower bound using linear optimisation.
[0190] In a processing block 629 of
[0193]
[0194] Using a 4VN subgraph specific noise can be constructed for belief propagation algorithm (Sum-product). As the code is linear, without loss of generality it can be assumed that the sent data is all-zeros and decoded 1 corresponds to mistakes, positive LLR corresponds to 1 and negative to 0.
[0195] The noise measured in LLR is constructed by putting k(1.sub.1) into 4 variable nodes for a given 4VN subgraph, and for all other variable nodes k is chosen, where k is the cannel factor, and .sub.1, denote manually chosen parameters.
[0196] Constants are chosen to obtain the situation that an error causes only a small number of unsatisfied parity checks. The channel factor k has the same meaning as in the normal decoding process, i.e. it is a factor used to convert received signal to the log-likelihood values. More precisely, for an AWGN channel with variance .sup.2, the channel factor is 2/.sup.2.
[0197] The constant can be chosen to be less than 1 to weaken the graph not affected by an error impulse. Preferred values for range from 0.3 to 0.8 depending on a graph. The error magnitude E can be chosen empirically large enough to provoke errors in the trapping sets.
[0198] For each described above error impulse the processor 101 is configured to start the decoding process. Denote by x.sub.i the hard decision after i iterations (it is assumed that the processor 101 performs at most i.sub.max iterations). Find the number of stem, when the number of unsatisfied parity checks is minimal:
Let S(x) be a set of variable nodes whose corresponding bits in the vector x are 1.
[0199] Then a subgraph included by S(x.sub.i*) is considered as a trapping set. If S(x.sub.i*) is not a trapping set, the processor 101 tries growing each S(x.sub.i),
into a trapping set. To this end, the processor 101 is configured to determine a minimal set S (x.sub.i)S(x.sub.i) which contains at least one cycle. Thereafter, the processor 101 is configured to find a minimal set S(x.sub.i)S(x.sub.i), which contains the same cycles as the set S (in other words, does not contain any tree like structures). The processor 101 provides S(x.sub.i) as the trapping set for x.sub.i.
[0200] In an embodiment, the apparatus 100 can maintain a list of all trapping sets found, in particular of the recently determined trapping sets. In an embodiment, this list of trapping sets is maintained by the apparatus in a lexicographic order, i.e. T<T if f T.sub.1<T.sub.1 or T.sub.1=T.sub.1 and T.sub.2<T.sub.2. In an embodiment, the apparatus 100 is configured to delete the last trapping set on the list, if the list of trapping sets becomes too large.
[0201]
[0202]
[0203] As can be taken from
[0204]
[0205] Embodiments of the invention provide on the basis of a QC-LDPC protograph a block version of a convolutional code, namely a tail-biting spatially-coupled (SC) LDPC code. Embodiments of the invention allow generating a code with SC-LDPC structures of the graph using a Belief Propagation with the following properties: large Hamming distance (code properties), better structures of cycles (graph properties ACE Spectrum when ACE=EMD) and reasonable complexity (average column weight, size of base matrix, maximal column weight).
[0206] While a particular feature or aspect of the disclosure may have been disclosed with respect to only one of several implementations or embodiments, such feature or aspect may be combined with one or more other features or aspects of the other implementations or embodiments as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms include, have, with, or other variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term comprise. Also, the terms exemplary, for example and e.g. are merely meant as an example, rather than the best or optimal. The terms coupled and connected, along with derivatives may have been used. It should be understood that these terms may have been used to indicate that two elements cooperate or interact with each other regardless whether they are in direct physical or electrical contact, or they are not in direct contact with each other.
[0207] Although specific aspects have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a variety of alternate and/or equivalent implementations may be substituted for the specific aspects shown and described without departing from the scope of the present disclosure. This application is intended to cover any adaptations or variations of the specific aspects discussed herein.
[0208] Although the elements in the following claims are recited in a particular sequence with corresponding labeling, unless the claim recitations otherwise imply a particular sequence for implementing some or all of those elements, those elements are not necessarily intended to be limited to being implemented in that particular sequence.
[0209] Many alternatives, modifications, and variations will be apparent to those skilled in the art in light of the above teachings. Of course, those skilled in the art readily recognize that there are numerous applications of the invention beyond those described herein. While the present invention has been described with reference to one or more particular embodiments, those skilled in the art recognize that many changes may be made thereto without departing from the scope of the present invention. It is therefore to be understood that within the scope of the appended claims and their equivalents, the invention may be practiced otherwise than as specifically described herein.