# Design of A Parallel Decoding Method for LDPC Code Generated via Primitive Polynomial
## 1 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.