By adding m1, m2, m3, and/or m4 rows from the M/Z rows of submatrices of the partitioned parity check matrix H to generate a new row of submatrices, at least one of the submatrices of the new row contains m1 m2, m3, or m4 diagonals of “1”, if the at least one submatrix are generated by all of the m1 m2, m3, or m4 non-null submatrices. When m1 m2, m3, or m4 rows are added, the variable node degree distribution of the code remains unchanged, while the degree of the check nodes is m1 m2, m3, or m4, namely, there are m1 m2, m3, or m4 “1”s in each row.
Juxtaposition
The LDPC codes may be constrained to an enhanced irregular repeat accumulate (eIRA) code structure, characterized by an (n?k, n) parity-check matrix obtained by juxtaposing of two matrices H=[H1H2], where H1 is a (n?k)×(k) systematic part, which is a block-structured matrix whose constituent submatrices are Z×Z null or cyclically shifted identity matrices, and H2 is a full-rank (n?k)×(n?k) matrix whose column are weigh 2 except for the last one, as shown in FIG. 12.
To increase the largest variable-node degree, a fact that can improve the error-floor performance, the design algorithm allows, when necessary, constituent submatrices with two or more diagonals with different cyclic shifts. For example, in