# Optimized Design for NB-LDPC-Coded High-Order CPM: Power and Iterative Efficiencies
## 4 Code Design and Advantages
### NB-LDPC Code Design  
A three-step method is used in this paper to design the following NB-LDPC codes. 1. Optimization of degree distribution based on binary parity-matrix using the EXIT technique. The NB-LDPC code has the same Tanner graph and degree distribution property as its corresponding binary representation, except for non-zero values; thus, the EXIT chart was used to explore a binary sparse matrix with acceptable degree distribution. Figure 5 provides the EXIT characteristics of different variable node (VN) and check node (CN) degrees. To design a suitable degree profile consisting of VN and CN degree distributions, a general approach described in [36] was used by fixing the CN degree distribution, and then changing the VN degree distribution to search the lowest convergence threshold. The area between the VN EXIT curve and the inverse CN EXIT curve is the smallest without intersections. The degree distribution corresponding to the lowest convergence threshold is optimal. This systematic search procedure can be performed as follows:  
\[I_{E}^{VN}=\sum\limits_{i=2}^{d_{v}}\lambda_{i}j\left(\sqrt{(i-1)\left[J^{-1}( I_{A}^{VN})\right]^{2}+8R\frac{E_{\text{b}}}{N_{0}}}\right) \tag{16}\]  
\[I_{E}^{CN}=1-\sum\limits_{i=2}^{d_{v}}\rho_{i}j(\sqrt{i-1}\times J^{-1}(1-I_{A }^{CN})) \tag{17}\]  
where \(d_{v}\) and \(d_{c}\) are the maximum VN and CN degrees, respectively; \(\lambda_{i}\) and \(\rho_{i}\) express the fractions of edges connecting to VNs and CNs of degree \(i\) while satisfying \(\sum\limits_{i=2}^{d_{v}}\lambda_{i}=1\) and \(\sum\limits_{i=2}^{d_{v}}\rho_{i}=1\), respectively. The function \(J(\cdot)\) and its inverse function \(J^{-1}(\cdot)\) are defined in [33]. Equations (16) and (17) are linear weighted sums of VN and CN EXIT curves of the given \(R\) and \(E_{\text{b}}/N_{0}\), respectively. The entire process of searching for a suitable degree distribution must be subjected to the constraint, that is:  
\[R=1-\frac{\sum\limits_{i=2}^{d_{v}}\frac{\rho_{i}}{t}}{\sum\limits_{i=2}^{d_{v }}\frac{\lambda_{i}}{t}}=1-\frac{\int_{0}^{1}\rho(x)dx}{\int_{0}^{1}\lambda(x )dx} \tag{18}\]  
with \(\rho(x)=\sum\limits_{i=2}^{d_{v}}\rho_{i}x^{i-1}\) and \(\lambda(x)=\sum\limits_{i=2}^{d_{v}}\lambda_{i}x^{i-1}\). Figure 5: Variable node (VN) and check node (CN) extrinsic information transfer (EXIT) curves with various degrees under \(R\) = 2/3 and \(E_{\text{b}}/N_{0}=1\text{dB}\). 2. Construction of a parity-check matrix with a large girth. After determining the degree distribution, the positions of non-zero elements in binary parity-check matrix \(\mathbf{H}_{b}\) must be ascertained. A girth optimization tool, called progressive edge growth [37], is adopted to avoid small circles and achieve good girth properties when using the BP-like algorithm on the Tanner graph. 3. Choice of non-zero elements over GF(\(Q\)). Generally, this step can be performed by substituting the \"1\" elements of \(\mathbf{H}_{b}\) with random non-zero elements over GF(\(Q\)), which can provide acceptable performance in most cases. Entropy theory, which is the appropriate measure for uncertainty, is introduced to improve the uncertainty or randomness of cycles located at the Tanner graph, which helps obtain a low error rate. First, the cycle-searching algorithm proposed in [38] is applied to search all small circles of \(\mathbf{H}_{b}\) with lengths \(l=4\), \(6\), and even \(8\) if necessary, and record the corresponding positions of non-zero elements in each circle. Next, a general method for constructing the NB-LDPC code is employed to randomly replace all the \"1\" elements of \(\mathbf{H}_{b}\) with non-zero elements of GF(\(Q\)). Eventually, the entropy of each previously recorded circle is calculated and maximized when each element takes various non-zero values over GF(\(Q\)), that is: \[E_{n}=-\sum_{i=1}^{Q-1}Pr_{i}\log_{2}Pr_{i}\] (19) where \(Pr_{i}=n_{i}/l\) and \(n_{i}\) denote the appearance times of \(i\) in each circle with \(i\in[1,2,\cdots,Q-1]\).