In this section, we will introduce the method of constructing the LDPC codes based on shortened RS codes with two information symbols [9], which has been adopted to be used in the standard IEEE 802.3an (10GBASE-T). For convenience, we use the simplified name, the RS-based LDPC code, in this thesis.
The construction of this code is built by an algebraic method, which is based on shortened Reed-Solomon code with two symbols, being indicated by the name. First, like the RS code, we have a primitive element α of the Galois field GF (ps), where p is a prime.
With a positive integer ρ, where 2 ≤ ρ < ps, we can construct a generator polynomial of the RS code over GF (ps),
g(X) = (X − α)(X − α2)...(X − αρ−2)
= g0 + g1X + g2X2+ ... + Xρ−2, (2.33) where gi ∈ ps. Note that it is a cyclic RS code of length ps − 1, dimension ps− ρ + 1, and minimum distance ρ − 1, represented as (ps− 1, ps− ρ + 1, ρ − 1). The generator polynomial g(X) is a minimum-weight code polynomial, so that all gi are nonzero factors.
The original generator matrix should be a (ps− ρ + 1) × (ps− 1) matrix. We shorten it by deleting the first ps− ρ − 1 information symbols, and then we obtained this shortened RS code with only two information symbols. The generator matrix becomes
Gb =
g0 g1 g2 ... 1 0 0 g0 g1 g2 ... 1
, (2.34)
and it is a (ρ, 2, ρ − 1) shortened RS code. The linear combinations of these two rows of Gb over GF (ps) generates (ps)2 codewords. We define the codeword set to be Cb. The nonzero codewords of Cb have only two different weights, ρ − 1 and ρ, hence the minimum distance of Cb is ρ − 1. Therefore, two codewords in Cb have at most one location with the same code symbol.
Then we separate the codeword set Cb into ps subset Cb(1) ∼ Cb(ps). To complete the partition, we define R1 as the first information symbol and R2 to be the second one, so that we have R1 = (g0 g1 ... 1 0) and R2 = (0 g0 g1 ... 1). Adding R1 and R2, we will have a codeword in Cb with weight ρ. Then we construct
Cb(1) = {c(R1 + R2) : c ∈ GF (ps)}. (2.35)
Since (R1 + R2) is a codeword with weight ρ, each codeword in the set Cb(1) differs from others at every locations, hence the minimum distance is ρ. Continuing the process, we construct the ith subset as
Cb(i) = {αi−2R1+ c(R1+ R2) : c ∈ GF (ps)} for 2 ≤ i ≤ ps. (2.36) Note that each subset has ps codeword, and each code word has ρ codeword symbols. We denote a codeword as c = (c1, c2, ..., cρ). Observing the subsets, the two codewords in the same subset must differ in all ρ locations, and two codewords in different subsets differ in ρ − 1 locations.
Another ps-tuple vector z is defined as location vector over GF (2), where it can be represented as z = (z∞, z0, z1, ..., zps−2). each zi corresponds to αi, which is an element of GF (ps), and α∞= 0. We represent this location factor z(αi) as
z(αi) position
= (
z∞ z0 ... zi−1 zi zi+ 1 ... zps−2
0 0 ... 0 1 0 ... 0
1 2 ... i + 1 i + 2 ... ... ps
). (2.37)
That is, the component of ziis equal to 1 and others to be 0. Then we expend the location factor z to a ρps-tuple symbol location vector Z over GF (2),
Z(c) = (z(c1), z(c2), ..., z(cρ)). (2.38) Because the weight of each z(cj) is 1, the weight of Z(c) is ρ.
We construct a ps× ρps matrix Ai as following,
Ai =
Z(ci1) Z(ci2)
...
Z(cips)
f or cij ∈ Cb(i), (2.39)
and note that each cij is non-identical to others. Since two cij in the same set Cb(i) differs from every position, two symbol location vectors in Ai must have no 1-component in common. So that each row of Ai will have ρ 1-components and each column has only one 1-component. Z(cij) from two different Ai will have only one 1-component in common since the distance between two cij is ρ − 1. And the matrix Ai could be considered as a structured matrix with ρ permutation matrices of ps× ps.
Choose the factor γ, which is a positive integer and 1 ≤ γ < ps. We form the following
This matrix will have ρ 1-components in each row and γ 1-components in each column, as a (γ, ρ)-regular matrix. The property that only one 1-component in common between rows also tells us that the girth of this matrix is absolutely larger than 4. This matrix H(γ) has been complete as the parity check matrix of a RS-based LDPC code by above steps.
We use a RS-based (3, 3)-regular LDPC code as an example. Considering GF (22) with primitive polynomial p(X) = 1 + X + X2, the four elements of this field are 0 = α∞, 1 = α0, α and α2 = 1 + α. Choosing ρ = 3, the generator polynomial will be
g(X) = α + X, (2.41)
and the shortened generator matrix is
Gb =
Construct the subsets Cb(1) ∼ Cb(4) of the codeword set according to the rule described in (2.35) and (2.36),
The location vectors are
Combine (2.43) and (2.44), the 4 × 12 matrix constructed from Cb(1) is
Then, choose γ = 3, the parity matrix H(3) is formed as Fig. 2.8. The null space gives a (12, 4) LDPC code of length = 12, rate = 1/3. The rate is related with the rank of H.
That is, since the dimension of this H is 8, the number of parity bits of a codeword is 8, and the number of information bit is 12 − 8 = 4.
Figure 2.8: Parity-check matrix of RS-based (3, 3)-regular LDPC code
Moreover, apply the method to construct a (6, 32)-regular LDPC code which is relative to the adopted code in IEEE 802.3an. It is constructed in GF (26), so the primitive polynomial is p(X) = 1 + X + X6. ρ and γ is chosen as 32 and 6 respectively. As a result, we will have a parity check matrix H384×2048. The construct of H can be roughly shown as Fig. 2.9.
It is reminded that each row of H is constructed by one codeword of the shortened RS code, which has 32 elements, and every element can be expanded to 64 bits by location
6
Figure 2.9: The roughly view of H of (6, 32)-regular LDPC code
vector z. So the code length is 2048. Besides, every 64 rows are based on one subset of shortened RS code, in which two codewords differ from other at every location. Then every submatrix Hi,j is a permutation matrix of size 64 × 64, that means, each row and each column will have only one 1-component in Hi,j. Although there are 384 rows in H, the number of parity bits is less than 384, because H is not full rank. In other words, not every row is independent, and the dimension of H is only 325. Therefore, this parity matrix correspond to a (2048, 1723) LDPC code, and the rate is about 0.84. Fig. 2.10 shows the parity check matrix of (6, 32)-regular LDPC code, each spot represents a 1-component in H.
Figure 2.10: Parity check matrix of (2048, 1723) RS-based LDPC code