In this section, we proceed with the procedure of the construction of the high-rate regular (QC-LDPC) codes through the following three steps: (1) Construct an n×n EG code and transform it into a proper form. (2) Utilize the transformed EG code matrix to construct an auxiliary matrix for identifying 6-cycles of it. (3) Eliminate the 6-cycles.
Decomposition of EG code matrix
Following [9], we can construct a n×n Euclidean geometry code W over the field EG(m=2,2s), where n=2ms−1. The constructed matrix W which is cyclic can be expressed by its first row w=(ω0,ω1,…,ωn−1) as:
$$\begin{array}{@{}rcl@{}} \mathbf{W} &=& \left[ \begin{array}{cccc} \omega_{0} & \omega_{1} & \cdots & \omega_{n-1}\\ \omega_{n-1} & \omega_{0} & \cdots & \omega_{n-2}\\ \vdots & \vdots & \ddots & \vdots\\ \omega_{1} & \omega_{2} & \cdots & \omega_{0}\\ \end{array} \right]_{n\times n}\,. \end{array} $$
(4)
For simplicity, we define an operation Ψ to represent:
$$\begin{array}{@{}rcl@{}} \mathbf{W} = \mathrm{\Psi}(\mathbf{w}), \end{array} $$
(5)
which implies that each row of the cyclic matrix W has the identical weight.
We assume that the positive integer n can be factored as n=c×b where b≠1 and c≠1 are positive integers with b being odd throughout the rest of this paper. Define the subset:
$$\begin{array}{@{}rcl@{}} \pi^{(0)} &=& \{0\,,c\,,2c\,,\ldots,(b-1)c\}\,. \end{array} $$
(6)
Thus, the set \(\mathcal {L}=\{0\,,1\,,2\,,\ldots \,,c \cdot b-1 \}\) can be partitioned into:
$$\begin{array}{@{}rcl@{}} \left\{\pi^{(0)}\,,\pi^{(0)}+1\,,\ldots\,,\pi^{(0)}+c-1\right\}, \end{array} $$
(7)
where we define π(0)+i={i,c+i,2c+i,…,(b−1)c+i} for i=0,1,…,c−1. We use π to denote the partition of the indices in \(\mathcal {L}\) defined in (7) for the rest of this paper. Using this partitioning, we obtain a b×n quasi-cyclic matrix Hqc as:
$$\begin{array}{@{}rcl@{}} \mathbf{H}_{\text{qc}}\triangleq[\mathrm{\Psi}(\mathbf{w}_{0})\,,\mathrm{\Psi}(\mathbf{w}_{1})\,,\ldots\,,\mathrm{\Psi}(\mathbf{w}_{c-1})]_{b \times n}\,. \end{array} $$
(8)
Let ri represent the row weight of Ψ(wi) for i=0,1,2,…,c−1 respectively. Choosing a positive integer 1≤λ< maxi=0,1,…,c−1{ri}, we eliminate all the Ψ(wk) (0≤k≤c−1) whose row weights are less than λ from the set:
$$\begin{array}{@{}rcl@{}} \{\mathrm{\Psi}(\mathbf{w}_{0}), \mathrm{\Psi}(\mathbf{w}_{1}), \ldots, \mathrm{\Psi}(\mathbf{w}_{c-1})\}\,. \end{array} $$
(9)
The resulting subset comprised of Ψ(wi)’s in (9) whose row weights are greater than or equal to λ is therefore represented as:
$$\begin{array}{@{}rcl@{}} \left\{\mathrm{\Psi}(\mathbf{w}_{i_{0}}),\mathrm{\Psi}(\mathbf{w}_{i_{1}}),\ldots,\mathrm{\Psi}\left(\mathbf{w}_{i_{k_{1}-1}}\right)\right\}\,. \end{array} $$
(10)
It follows \(r_{i_{k}} \geq \lambda \) for 0≤k≤k1−1. Since the row weight of Hqc defined in (8) is 2s, we choose the parameter λ satisfying c<2s/λ that ensures the subset (10) is not a null set.
We define a b×bk1 matrix Hqc′ as:
$$\begin{array}{@{}rcl@{}} \mathbf{H}_{\text{qc}}'&=&[\mathrm{\Psi}(\mathbf{w}_{i_{0}}), \mathrm{\Psi}(\mathbf{w}_{i_{1}}), \ldots, \mathrm{\Psi}(\mathbf{w}_{i_{k_{1}-1}})]\,. \end{array} $$
(11)
Identifying the 6-cycles
In this section, we develop a procedure to eliminate 6-cycles in (11). For this purpose, without loss generality, we assume that we are given:
$$ \mathbf{H}_{\text{qc}}' = [\mathrm{\Psi}(\mathbf{v}_{0}), \mathrm{\Psi}(\mathbf{v}_{1}), \ldots, \mathrm{\Psi}(\mathbf{v}_{k-1})], $$
(12)
where the row weight ri of Ψ(vi) for each i satisfying 0≤i≤k−1 is at least λ which is described in the previous section. The vector vi with 0≤i≤k−1 is:
$$ \mathbf{v}_{i} = \left(\nu_{0}^{i}, \nu_{1}^{i}, \ldots, \nu_{b-1}^{i}\right)\,. $$
(13)
The first row of (12) is therefore equal to:
$$ \mathbf{h} = [\mathbf{v}_{0}, \mathbf{v}_{1}, \ldots, \mathbf{v}_{k-1}] \,. $$
(14)
In order to eliminate 6-cycles, we transform matrix (12) into a new matrix of form (17). This leads us to introduce the operation φ which is defined as:
$$ \varphi(\mathbf{v}_{i})= \left(\nu_{\frac{b-1}{2}+1}^{i}\,,\ldots, \nu_{b-1}^{i}, \nu_{0}^{i}, \nu_{1}^{i}, \ldots, \nu_{\frac{b-1}{2}}^{i}\right)\,. $$
(15)
Therefore, we transform (14) into:
$$ \hat{\mathbf{h}} = [\varphi(\mathbf{v}_{0})\,,\varphi(\mathbf{v}_{1})\,,\ldots\,,\varphi(\mathbf{v}_{k-1})]\,. $$
(16)
The transformation \(\mathcal {T}\) maps \(\hat {\mathbf {h}}\) in (16) to a b×(kb+b−1) matrix is defined as:
$$ \begin{array}{ll} &\mathcal{T}(\hat{\mathbf{h}}) = \left[ \begin{array}{cccccc} \varphi(\mathbf{v}_{0}) & \varphi(\mathbf{v}_{1}) & \cdots & \varphi(\mathbf{v}_{k-1}) & 0 & \mathbf{0}_{1 \times (b-2)}\\ 0 & \varphi(\mathbf{v}_{0}) & \varphi(\mathbf{v}_{1}) & \cdots & \varphi(\mathbf{v}_{k-1}) & \mathbf{0}_{1 \times (b-2)}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots\\ 0 & \mathbf{0}_{1 \times (b-2)} & \varphi(\mathbf{v}_{0}) & \varphi(\mathbf{v}_{1}) & \cdots & \varphi(\mathbf{v}_{k-1}) \\ \end{array} \right]_{b \times kb}\\ &= \left[ \begin{array}{cccccccccccccc} \nu_{\frac{b-1}{2}+1}^{0} & \cdots & \nu_{0}^{0} & \cdots & \nu_{\frac{b-1}{2}}^{0} & \nu_{\frac{b-1}{2}+1}^{1} & \cdots & \nu_{\frac{b-1}{2}}^{1} & \cdots & \nu_{\frac{b-1}{2}}^{k-1} & 0 & 0 & \cdots & 0 \\ 0 & \nu_{\frac{b-1}{2}+1}^{0} & \cdots & \nu_{0}^{0} & \cdots & \nu_{\frac{b-1}{2}}^{0} & \nu_{\frac{b-1}{2}+1}^{1} & \cdots & \nu_{\frac{b-1}{2}}^{1} & \cdots & \nu_{\frac{b-1}{2}}^{k-1} & 0 &\cdots & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots &\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots\\ 0 & 0 & \cdots & 0 &\nu_{\frac{b-1}{2}+1}^{0} & \cdots & \nu_{0}^{0} & \cdots & \nu_{\frac{b-1}{2}}^{0} & \nu_{\frac{b-1}{2}+1}^{1} & \cdots & \nu_{\frac{b-1}{2}}^{1} & \cdots & \nu_{\frac{b-1}{2}}^{k-1}\\ \end{array} \right] \end{array} $$
(17)
Examing (17), we see that the first row of \(\mathcal {T}(\hat {\mathbf {h}})\) is obtained through adding b−1 zeros to the end of the vector \(\hat {\mathbf {h}}\). Each of the rest rows of \(\mathcal {T}(\hat {\mathbf {h}})\) is the circular shift of the row above it.
The set \(L(\hat {\mathbf {h}})\) comprised of the indices corresponding to the nonzero entries of \(\hat {\mathbf {h}}\) in (16) is defined as:
$$ L(\hat{\mathbf{h}}) = \{p_{0}, p_{1}, \ldots, p_{\rho-1}\}, $$
(18)
where we have \(\rho = \sum \limits _{i=0}^{k-1}r_{i}\) with ri representing the row weight of Ψ(vi). We define an oblique line segment \(l_{p_{i}}\) which starts from pi and forms a descending diagonal from left to right in \(\mathcal {T}(\hat {\mathbf {h}})\),i.e., \(l_{p_{i}}\) constituting of the set of the entries of \(\mathcal {T}(\hat {\mathbf {h}})\) as follows:
$$ l_{p_{i}} = \left\{\mathcal{T}(\hat{\mathbf{h}})_{1,p_{i}}, \mathcal{T}(\hat{\mathbf{h}})_{2,p_{i}+1}, \ldots, \mathcal{T}(\hat{\mathbf{h}})_{b,p_{i}+b-1}\right\}\,. $$
(19)
Clearly, from the definition, the total number of the oblique line segments of the form (19) is ρ. Thus, the set of all the oblique line segments is:
$$ \left\{l_{p_{0}}\,,l_{p_{1}}\,,\ldots\,,l_{p_{\rho-1}}\right\}\,. $$
(20)
We define the distance between two oblique lines as:
$$ |l_{p_{i_{0}}}-l_{p_{i_{1}}}| = |p_{i_{0}}-p_{i_{1}}|\,. $$
(21)
From [15], it follows that the possible of 6-cycles appeared in a parity-check matrix is one of the following forms shown in Fig. 1.
Case 1: Assume that 6-cycle is comprised of three oblique line segments from (20). Therefore, from (20), the total number of subsets comprised of three oblique line segments is \(\dbinom {\rho }{3}\). For each subset comprised of three oblique line segments \(\left \{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}\right \}\) from (20), we employ (21) to compute:
$$\begin{array}{@{}rcl@{}} \left\{ \begin{aligned} d_{0} &=|p_{i_{1}}-p_{i_{0}}| \\ d_{1} &=|p_{i_{2}}-p_{i_{1}}| \,.\\ \end{aligned} \right. \end{array} $$
(22)
If \({d_{0}\over {d_{1}}}\) is not equal to either \(1\over {2}\) or 2, then we delete such a subset comprised of these three oblique line segments. The remaining subsets constitute Ω3 which can be represented as:
$$ \mathrm{\Omega}_{3} = \left\{ \left\{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}\right\}, \left\{l_{p_{i_{3}}}, l_{p_{i_{4}}}, l_{p_{i_{5}}}\right\}, \ldots\right\}\,. $$
(23)
Clearly, each subset of three oblique line segments \(\{l_{p_{i_{j}}}, l_{p_{i_{j+1}}}, l_{p_{i_{j+2}}}\}\) in Ω3 satisfies:
$$ {|l_{p_{i_{j+1}}}-l_{p_{i_{j}}}|\over{|l_{p_{i_{j+2}}}-l_{p_{i_{j+1}}}}|}={|p_{i_{j+1}}-p_{i_{j}}|\over{|p_{i_{j+2}}-p_{i_{j+1}}|}}={1\over{2}}\,\,\,\,\rm{or}\,\,\,2\,. $$
(24)
Figure 2 shows that 6-cycles are constituted by three oblique lines.
Case 2: Assume that 6-cycle is comprised of four oblique line segments from (20). Therefore, from (20), the total number of subsets comprised of four oblique line segments is \(\dbinom {\rho }{4}\). For each subset comprised of four oblique line segments \(\{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}, l_{p_{i_{3}}}\}\) from (20), we employ (21) to compute:
$$\begin{array}{@{}rcl@{}} \left\{ \begin{aligned} d_{0} &=|p_{i_{1}}-p_{i_{0}}| \\ d_{1} &=|p_{i_{2}}-p_{i_{1}}| \\ d_{2} &=|p_{i_{3}}-p_{i_{2}}| \,.\\ \end{aligned} \right. \end{array} $$
(25)
If the computed distance d0,d1, and d2 are not satisfied to any of these equations listed in the following set:
$$\begin{array}{@{}rcl@{}} \begin{array}{cc} &\left\{ \begin{array}{lll} d_{0} = d_{1}+d_{2}, & d_{1} = d_{0}+d_{2}, & d_{2} = d_{0}+d_{1}, \\ d_{0} = 2d_{2}, & d_{2} = 2d_{0}, & d_{0} = d_{1}+2d_{2}, \\ d_{2} = 2d_{0}+d_{1}\,,& d_{0} = d_{1}, & d_{1} = d_{2} \\ \end{array} \right\}, \end{array} \end{array} $$
(26)
then we delete such a subset comprised of these four oblique line segments. The remaining subsets constitute Ω4 which can be represented as:
$$ \mathrm{\Omega}_{4} = \left\{ \left\{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}, l_{p_{i_{3}}}\right\}, \left\{l_{p_{i_{4}}}, l_{p_{i_{5}}}, l_{p_{i_{6}}}, l_{p_{i_{7}}}\right\}, \ldots\right\}\,. $$
(27)
Figure 3 shows that 6-cycles are constituted by four oblique line segments.
Case 3: Assume that 6-cycle is comprised of five oblique line segments from (20). Therefore, from (20), the total number of subsets comprised of five oblique line segments is \(\dbinom {\rho }{5}\). For each subset comprised of five oblique line segments \(\{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}, l_{p_{i_{3}}}, l_{p_{i_{4}}}\}\) from (20), we employ (21) to compute:
$$\begin{array}{@{}rcl@{}} \left\{ \begin{aligned} d_{0} &=|p_{i_{1}}-p_{i_{0}}| \\ d_{1} &=|p_{i_{2}}-p_{i_{1}}| \\ d_{2} &=|p_{i_{3}}-p_{i_{2}}| \\ d_{3} &=|p_{i_{4}}-p_{i_{3}}|\,. \\ \end{aligned} \right. \end{array} $$
(28)
If the computed distance d0,d1,d2, and d3 are not satisfied to any of these equations listed in the following set:
$$\begin{array}{*{20}l} \begin{array}{cc} &\left\{ \begin{array}{lll} d_{0} = d_{1}+d_{3}, & d_{3} = d_{0}+d_{1}, & d_{0} = 2d_{2}+d_{3}, \\ d_{1} = d_{0}+d_{3}, & d_{0} = d_{2}+d_{3}, & d_{0} = d_{2}+2d_{3}, \\ d_{2} = d_{0}+d_{3}, & d_{0} = d_{1}+2d_{2}+d_{3}, & d_{3} = 2d_{0}+d_{1}, \\ d_{3} = d_{0}+d_{2}, & d_{3} = d_{0}+2d_{1}+d_{2}, & d_{3} = d_{0}+2d_{1} \\ \end{array} \right\}, \end{array} \end{array} $$
(29)
then we delete such a subset of these five oblique line segments. The remaining subsets constitute Ω5 which can be represented as:
$$ \mathrm{\Omega}_{5} \,=\, \left\{ \left\{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}, l_{p_{i_{3}}}, l_{p_{i_{4}}}\!\right\},\! \left\{l_{p_{i_{5}}}, l_{p_{i_{6}}}, l_{p_{i_{7}}}, l_{p_{i_{8}}}, l_{p_{i_{9}}}\!\right\}, \ldots\right\}\!. $$
(30)
Figure 4 shows that 6-cycles are constituted by five oblique line segments.
Eliminating 6-cycles
In the following, we proceed with the procedure to eliminate 6-cycles.
Step 1: Construct Γ which is defined as:
$$ \mathrm{\Gamma} = \mathrm{\Omega}_{3} \cup \mathrm{\Omega}_{4} \cup \mathrm{\Omega}_{5}, $$
(31)
where Ω3, Ω4, and Ω5 are defined by (23), (27), and (30), respectively.
Step 2: Find the oblique line segment \(l_{p_{i_{0}}}\) that appears in the maximal number subsets of Γ. Delete all the subsets of Γ containing this oblique line segment \(l_{p_{i_{0}}}\) and collect all the remaining subsets of Γ to form an new subset Γ1. Repeat this process on the subset Γ1 to obtain \(l_{p_{i_{1}}}\) and Γ2. We continue this process till Γk for k being some positive integer becomes a null set. In this process, we also obtain an ordered set of oblique line segments which is:
$$ \mathrm{\Omega}_{\text{order}} = \left\{l_{p_{i_{0}}}, l_{p_{i_{1}}}, l_{p_{i_{2}}}\, \ldots\, l_{p_{i_{k-1}}}\right\}\,. $$
(32)
Step 3: In view of (12), we construct k subsets Q0,Q1,…,Qk−1 with Qj for 0≤j≤k−1 being comprised of the oblique line segments \(l_{p_{i_{j}}}\) in Ωorder satisfying:
$$ \lfloor p_{i_{j}}/b\rfloor =j, $$
(33)
where ⌊·⌋ denotes the rounding down operation. Recall that rj for 0≤j≤k−1 is the row weight of Ψ(vj) in (12) and λ is the pre-chosen positive integer introduced above Eq. (9). If there are more than (rj−λ) oblique line segments of Ωorder satisfy (33), then only the first (rj−λ) oblique line segments appeared in the ordered set Ωorder are chosen to form Qj. If there are less than (rj−λ) oblique line segments of Ωorder satisfy (33), we arbitrarily choose oblique line segments satisfying (33) from (20) that do not belong to Ωorder.
Thus, Qj for 0≤j≤k−1 has the size of (rj−λ). We define 1×b vector sj:
$$\begin{array}{@{}rcl@{}} \mathbf{s}_{j}&=&[s_{j,0}\,,\,\ldots, s_{j,b-1}]\,\, \text{with}\,\, s_{j,i}= \left\{ \begin{aligned} &1\,\,\,\text{if}\ \, l_{(i+jb)} \in Q_{j}\,\,\\ &0\,\,\,\text{otherwise}\, \end{aligned}\right.\,. \end{array} $$
(34)
For each sj, we utilize the inverse of the map φ defined in (15) to yield a b×b matrix Sj as follows:
$$ S_{j} = \mathrm{\Psi}\left(\varphi^{-1}(\mathbf{s}_{j})\right), $$
(35)
where the operation Ψ is defined in (5). Thus, the quasi-cyclic matrix S
$$ \mathbf{S} = [S_{0}, S_{1}, \ldots, S_{k-1}]\,. $$
(36)
In view of Hqc′ and S defined in (12) and (36), respectively, the quasi-cyclic encoding parity-check matrix \(\mathbf {H}_{\text {qc}}^{(1)}\) is therefore equal to:
$$\begin{array}{@{}rcl@{}} \mathbf{H}_{\text{qc}}^{(1)} = \mathbf{H}_{\text{qc}}' \oplus \mathbf{S}\,. \end{array} $$
(37)
The operator ⊕ in (37) is defined as the entry-wise XOR operations of matrices Hqc′ and S. From the construction procedure from (12) to (37), it follows that matrix \(\mathbf {H}_{\text {qc}}^{(1)}\) is regular and quasi-cyclic with its column and row weight being λ and kλ, respectively.
Another regular quasi-cyclic parity-check matrix
Substituting \(\mathbf {H}_{\text {qc}}^{(1)}\) for Hqc′ and proceeding the procedure from (12) to (36) with λ=0, we can get a new S(1) from (36). Then, we can construct another regular quasi-cyclic parity-check matrix \(\mathbf {H}_{\text {qc}}^{(2)}\) as follows:
$$ \mathbf{H}_{\text{qc}}^{(2)}=\left[ \begin{array}{cc} \mathbf{H}_{\text{qc}}^{(1)} \oplus \mathbf{S}^{(1)} & \mathbf{S}^{(1)}\\ \mathbf{S}^{(1)} &{H}_{\text{qc}}^{(1)} \oplus \mathbf{S}^{(1)}\\ \end{array} \right]\,. $$
(38)
\(\mathbf {H}_{\text {qc}}^{(2)}\) and \(\mathbf {H}_{\text {qc}}^{(1)}\) have the same row and column weight.