Design of A Parallel Decoding Method for LDPC Code Generated via Primitive Polynomial

: An effective way of improving decoding performance of an LDPC code is to extend the single-decoder decoding method to a parallel decoding method with multiple sub-decoders. To this end, this paper proposes a parallel decoding method for the LDPC codes constructed by m-sequence. In this method, the sub-decoders have two types. The ﬁrst one contains only one decoding module using the original parity-check constraints to implement a belief propagation (BP) algorithm. The second one consists of a pre-decode module and a decoding module. The parity-check matrices for pre-decode modules are generated by the parity-check constraints of the sub-sequences sampled from an m-sequence. Then, the number of iterations of the BP process in each pre-decode module is set as half of the girth of the parity-check matrix, resulting in the elimination of the impact of short cycles. Using maximum a posterior (MAP), the least metric selector (LMS) ﬁnally picks out a codeword from the outputs of sub-decoders. Our simulation results show that the performance gain of the proposed parallel decoding method with ﬁve sub-decoders is about 0.4 dB, compared to the single-decoder decoding method at the bit error rate (BER) of 10 − 5 .


Introduction
The m-sequence code, which generates via primitive polynomial, is an LDPC code [1]. The generator of the code is a linear feedback shift register (LFSR), which is suitable for scenarios with limited resources for encoders. Moreover, the m-sequence code is designed with extremely low code rate because it is supposed to work in scenarios with extremely low signal to noise ratio (SNR), such as deep-space communication [2] and wireless sensor network [3]. And It has been proven [1] that the m-sequence code with moderate code length has a better BER performance than the LDPC code constructed by progressive edge growth (PEG) algorithm [4]. Therefore, in such scenarios, improving the bit error ratio (BER) performance of m-sequence code is valuable. And developing decoding method is an effective approach to improve the BER performance, as decoding processes can be done at resource-rich nodes.
The Parallel decoding methods, such as multiple-based belief propagation (MBBP) algorithm [5][6][7] and modified random redundant decoding (mRRD) algorithm [8,9], have been proven that they can achieve better performance than the single-decoder system for decoding block codes. In this paper, we then apply the parallel decoding method to m-sequence codes.
In MBBP algorithm, candidate codewords are outputted by BP decoding module of multiple sub-decoders with different parity-check matrices. Then, they are selected by a least metric selector (LMS) through maximum a posterior (MAP) rule. Therefore, the construction of parity-check matrices is essential for MBBP. Literature [7] had proposed a method that combining the cycles of parity-check matrix of LDPC codes constructed by progressive edge-growth [4] to generate new parity-check matrices. But for m-sequence code, there is no discussion about the construction of parity-check matrices for sub-decoders.
In mRRD, an automorphic group of code is employed to construct parity-check matrix of sub-decoder. Each sub-decoder uses RRD algorithm to output the candidate codeword. Therefore, the essential point of applying mRRD is finding the automorphic group of an LDPC code. Literature [10] proposed an LDPC code constructed by a cyclic code and the automorphic group of this code is easy to be found. This code had achieved great performance improvement by employing mRRD algorithm. However, it is hard to find automorphic group for m-sequence code. The existing parallel decoding methods cannot be employed by m-sequence code.
To solve this problem, we first propose a method to construct parity-check matrix for m-sequence code. Then, we design a new parallel decoding method for m-sequence code. To construct parity-check matrices, the first step is to generate an m-sequence by an order-k primitive polynomial . Then, the sampling sequences are obtained by sampling the m-sequence with multiple sampling intervals which are relatively prime with . The second step is to find new primitive polynomials which can generate the sampling sequences. The final step is to use the parity-check constraints of these new primitive polynomials to construct parity-check matrix by cyclic shift. The constructed parity-check matrices have many short cycles due to the cyclic shift procedure. Therefore, they cannot be employed by the sub-decoders of MBBP algorithm.
To tackle this problem, we propose a new parallel decoding method which can eliminate the affection of short cycles in parity-check matrices. In our method, the sub-decoders are designed to two types. The first type contains only one decoding module, which uses the basic parity-check matrix constructed in [1] to perform BP algorithm and output candidate codeword. The second type is constructed by a pre-decode module and a decoding module. The pre-decode module use a parity-check matrix to perform the BP process and outputs extrinsic information to the decoding module. At this point, the number of iterations in pre-decode module is set as half of girth of parity-check matrix. Therefore, the outputted extrinsic information will not be affected by short cycles. Then the cascaded decoding module output candidate codeword with the help of extrinsic information. At last, all outputted codewords of sub-decoders are sent into the same LMS and the final codeword is selected by MAP rule.
In this paper, the m sequence codes with code length 3000, 1100 are constructed by primitive polynomial f (x) = x 89 + x 38 + 1 and f (x) = x 33 + x 13 + 1 , respectively. Then the bit error rate simulation experiments of these codes are carried out. In the experiment, 6 and 4 parity-check matrices are constructed by the proposed construction method, respectively. In addition, when the numbers of sub-decoders are 5 and 4, the bit error rate (BER) curves have converged. Simulation results show that the proposed parallel decoding method is about 0.4dB better than the single decoder method in [1]. This paper is organized as follows. Section 2 gives a brief introduction of LDPC code generated via primitive polynomial and presents the problem statement. The construction method of parity-check matrices and new parallel decoding method are specified in Section 3. Section 4 shows and analyzes the numerical results. Finally, some conclusions are drawn in Section 5.

Motivation
For an m-sequence generated by an LFSR which employs a primitive polynomial as connected polynomial, the segment of the m-sequence can be an LDPC codeword. This LDPC code is called m-sequence code [1] In this section, we briefly introduce the basis of the code and refer readers to [1] for more details. Then, we discuss the problem of designing parallel decoding method for m-sequence codes.

LDPC Codes Generated via Primitive Polynomial
Consider an LFSR with connected primitive polynomial f (x) = x k + x p + 1, where k, p are positive integers such that k > p. Denote trace function tr k 1 (·) as a mapping from field GF(2 k ) to field GF(2) [11]. Let α be a root of f (x) and β be the initial phase of the LFSR. Then, the m-sequence (a i ) generated by the register can be described as For the m-sequence, f (x) further gives the following parity-check constraints With (2), it has been proven that given integer n(> k), we can construct an LDPC matrix for all segments (a i ) n−1 i=0 truncated from (a i ) [1]. That is, (a i ) n−1 i=0 is a codeword of an LDPC code.
The parity-check matrix of an m-sequence code has two types of check rows. One is obtained from parity-check constraints in (2). The other is derived from the conjugate primitive elements α 2 m , m = 1, 2, · · · , M of α, where M is the maximum integer such that 2 M k < n. Consider the m-sequence (a (m) i ) generated by conjugate primitive element α 2 m , it can be written as a Note that α 2 m is the root of f (x) [11] As a result, sequence (a (m) i ) can be also checked by (2), i.e., Combining (3) and (4), the following parity-check constraints for codeword (a Finally, the parity-check matrix can be 4-cycle free if the factors k, p satisfy the conditions derived in [1], i.e., In this paper, the matrix constructed by (2) and (5) is called the basic parity-check matrix.

Problem Statement
The code rates of the m-sequence codes are extremely low, as they are supposed to work in extremely low SNR cases. In such cases, it is desirable to design a decoding algorithm with better BER performance.
In [5][6][7], authors show that the performance of a parallel decoding method with multiple sub-decoders can overcome the single-decoder decoding method. For instance, Figure 1 shows the structure of MBBP, in which each sub-decoder D i , 0 ≤ i ≤ N uses a different parity-check matrix H i [5].
LLR L ch of channel observation value y is simultaneously entered into the N+1 subdecoders, resulting in N+1 candidate codewordsĉ 0 ,ĉ 1 , · · · ,ĉ N . The value of each element of the codewords is "1" or "−1". The decoding method is BP decoding algorithm. These candidate codewords are then fed into the LMS, in which the final output codeword is selected by means of the MAP rule or the equivalent minimum distance rule, i.e., c = arg max i∈{0,1,··· ,N} Pr{y|c =ĉ i } = arg min i∈{0,1,··· ,N} d(y,ĉ i ) where d(a, b) is the Euclidean distance between vectors a and b. For the parallel decoding architecture shown in Figure 1, it requires for sub-decoders that parity-check matrices contain different parity-check constraints with each other. It is due to the fact that errors cannot be fixed by one parity-check matrix are uncorrectable for other parity-check matrices being of the same parity-check constraints. In order to apply such method on m-sequence codes, we need to construct parity-check matrices through different parity-check constraints. However, the construction methods in [5][6][7] are not design for m-sequence code, while [1] did not give the method to construct different parity-check matrices for m-sequence code.
To solve this problem, we investigate the algebraic properties of sampling sequence of m-sequence to obtain different parity-check constraints. Then, these constraints are utilized to build parity-check matrices for sub-decoders.

Parallel Decoding Method for m-Sequence Codes
In this section, we first construct parity-check matrices by using the parity-check constraints of sampling sequence of m-sequence. Then, we analyze the deterioration mechanism of decoding performance caused by short cycles and present a way to eliminate the affection of short cycles. At the last of the section, we develop a new parallel decoding method with sub-decoder consisting of a pre-decode module and a decoding module.

Construction of Parity-Check Matrices
Finite field GF(2 k ) can be represented by the powers of a primitive element α, i.e., Consequently, α q ∈ GF(2 k ) is the primitive elements of this finite field if and only if gcd(q, 2 k − 1) = 1 [11], where gcd(a, b) is the greatest common divisor of a and b. The new primitive element α q can regenerate GF(2 k ) as follows.
Let f q (x) be the primitive polynomial of which α q is a root, Polynomial f q (x) is then used to generate a new m-sequence (a (q) i ) with the same initial phase β. Thus, sequence (a (q) i ) meets the following constraints In addition, using the trace function, we have Now, it is clearly shown from (12) that the parity-check constraints of f q (x) can be used to check the codeword (a i ) n−1 Based on the above analysis, we design a construction method of parity-check matrices as Algorithm 1 shown, where BM((a i )) is the function that using Berlekamp-Messey (BM) algorithm [12] to get the minimum generating polynomial of (a i ). Matrix( f q (x), n) is the function to use f q (x) to construct a parity-check matrix with code length n by cyclic shift as (13).
In Algorithm 1, we first find all the candidate sampling intervals that are relatively prime with 2 k − 1. Then we generate a segment of m-sequence (a i ) 1000k i=0 with length 1000k to get the sampling segment (a (q) i ) 1000k/q i=0 by the sampling interval q. The BM algorithm can be employed to find the maximum generating polynomial f q (x) of (a . Finally, we use f q (x) to construct a parity-check matrix through the way of (13).
The parity-check matrix generated by this method is the result of cyclic shift of one parity-check constraint. Therefore, it has too many short cycles to be equipped into the sub-decoders of the MBBP algorithm. To take full advantage of the parity-check matrices, we thus design a new parallel decoding method in the next subsection.

Parallel Decoding Method with Multiple Sub-decoders
Now let us discuss the affection of short cycles on decoding first. In BP algorithm, the information of each node is transferred and iterated according to the connection relation of Tanner graph. If there exist short cycles in the Tanner graph, the information of nodes in the cycles cannot receive enough extrinsic information, resulting in overestimation of node information and errors in decoding results. In Figure 2a, information is first passed to variable node v 2 through the check node c 1 . In the second iteration, v 2 passes the information back to v 1 through c 2 . This is an information loop. Similarly, the 6-cycle case in Figure 2b completes a loop through 3 iterations.
It can be seen from Figure 2, if the number of iterations is half of the girth, then the information flowing in a short cycle will not back to the original node. As a consequence, the overestimation problem caused by the short cycle will never happen.
However, if the iteration times of BP algorithm is set as half of the girth of parity-check matrix, the BP decoding algorithm is hardly to output a codeword. To tackle this difficult, this paper proposes a new parallel decoding method whose decoding structure is shown in Figure 3. The sub-decoders of the designed parallel decoding method are of two types. The first type of sub-decoder D 0 only contains the decoding module that directly outputs the codewordĉ 0 . The parity-check matrix employed by decoding module is the basic parity-check matrix H 0 . The second type of sub-decoders D i ,i = 1, 2, · · · , N are composed by a pre-decode module and a decoding module. In these sub-decoders, after receiving LLR L ch of channel received value y, the pre-decode module uses the BP algorithm to output extrinsic information L i ex . The employed parity-check matrix H i is generated by Algorithm 1. The number of iterations in the pre-decode module is set as half of the girth of H i . Therefore, L i ex is not affected by the cycle structure of H i . Then, L i ex plus L ch is sent into the decoding module to get candidate codewordĉ i by BP decoding with H 0 .
The pre-decode modules employ different parity-check matrices, resulting in different outputted extrinsic information. It enables the decoding modules to output different candidate codewords, which are valuable for the LMS to choose the best final codeword.
The parallel decoding method is summarized in Algorithm 2, where BP h (H, L, t) and BP s (H, L, t) represents that using BP algorithm with parity-check matrix H to decode the input LLR L. The maximum iteration number ist. The output is hard decision sequence for BP h (H, L, t) and soft extrinsic information for BP s (H, L, t), respectively.  In Algorithm 2, the LLR value L ch of channel output is simultaneously entered into N + 1 sub-decoders. Then these sub-decoders D i ,i = 0, 1, · · · , N output the candidate codewordsĉ i respectively. Let S be the set of candidates which satisfy H 0ĉ T i = 0. If S = ∅, then let S = {ĉ 0 ,ĉ 1 ,ĉ 2 , · · · ,ĉ N } be the set of all candidates. The decoding resultĉ is selected from S by an LMS with MAP rule.

Numerical Results
In this section, we simulate the BER of m sequence codes generated via primitive polynomials f (x) = x 89 + x 38 + 1 and f (x) = x 33 + x 13 + 1. The code rates of these two codes are the same 0.03 and the code lengths are 3000 and 1100, respectively. There are two decoding methods employed in the simulation, one is the proposed parallel decoding method with multiple sub-decoders, the other one is the single-decoder decoding method which employed in [1]. The channel is additive white Gaussian noise (AWGN) channel.
Firstly, we simulate the BER performance of the proposed decoding method with different number of sub-decoders. According to the construction method of parity-check matrix proposed in section III.A, we have found the sampling intervals q = 3,5,7,9,11,13 to sample the m-sequence generated by f (x) = x 89 + x 38 + 1 and obtain the primitive polynomials of the sampling sequences.
For the m-sequence generated by f (x) = x 33 + x 13 + 1,we also use sampling intervals q = 3, 5, 7, 9 to get the sampling sequences and corresponding primitive polynomials.
Then we have simulated the BER performance of the proposed decoding method with different number of sub-decoders for these two codes, the results are shown in    Figure 4 presents the relation between BER performance and the number of subdecoders. With the increase of employed sub-decoders, the BER performance is better but the computation complexity is increased. In our method, all the sub-decoders have nearly the same computation complexity. Therefore, the parallel decoding method with N sub-decoders is N times complex than the original single-decoder system. To get the tradeoff of BER performance and complexity, we employ 5 sub-decoders for the code with length 3000 as Figure 4a has shown that the BER curve is converged when employing 5 sub-decoders. Similarly, we employ 4 sub-decoders for the code with length 1100.
In the end, we have simulated the BER performance of these two codes with different decoding methods, the results are shown in Figure 5. From Figure 5 we can see that, the proposed decoding method outperforms the singledecoder decoding method in terms of BER when the value of E b /N 0 is fixed. The E b /N 0 range of the simulation is from 1.4 dB to 4.2 dB while the corresponding SNR range is from −13.82 dB to −11.02 dB. In the BER region of 10 −5 , our decoding method has a BER gain of 0.3 dB and 0.4 dB compared to the single-decoder decoding method for these two codes, respectively.

Conclusions
In this paper, we had improved the BER performance of m-sequences code by applying parallel decoding method. Firstly, to construct parity-check matrices for sub-decoders, we investigated the parity-check constraints from sampling sequence of m-sequence and used them to construct the parity-check matrices by cyclic shift. Then, to overcome the influence of short cycles of parity-check matrices, we had proposed a new parallel decoding method with two types of sub-decoders. Simulation results show that the proposed decoding method improved about 0.4 dB compared with the original single-decoder decoding method at a BER of 10 −5 .

Conflicts of Interest:
The authors declare no conflict of interest.