# Concatenated Coding for GNSS Signals in Urban Environments
## 3 Concatenated Coding Scheme for GNSS Messages
### Proposed RS-LDPC Code  
In the following, we used the payload information of BDS-3 B-CNAV1 messages as an example, of which each frame was divided into three subframes [26]. Subframe 1 contains 14-bit pseudo-random noise (PRN) code number and time data, which have to be encoded with a low code rate, i.e., BCH codes in this case, in order to obtain a low error rate. Therefore, only the contents of subframes 2 and 3 were considered for a concatenated coding scheme in the following. In B-CNAV1, subframe 2--which contains 569 information bits, 7 reserved bits, and a 24-bit cyclic redundancy check (CRC)--is encoded by a 64-ary LDPC(200,100); subframe 3 contains 213/210/226/193 information bits corresponding to different page types, 27/30/14/47 reserved bits accordingly, and a 24-bit CRC, all of which are encoded by a 64-ary LDPC(88,44). Then, the encoded 1728 symbols from subframes 2 and 3 are interleaved to combat burst errors. The coding scheme of subframes 2 and 3 is shown in Figure 2.  
In our approach, the message structure is modified and some reserved bits are deleted. Specifically, the information bits of subframes 2 and 3 are combined into one subframe, and the overall bits are encoded by the proposed concatenated code; thus, one 24-bit CRC set can be deleted. Moreover, the reserved bits in subframe 2 and the 14 reserved bits in subframe 3 can also be discarded. Therefore, the information bits are reduced from 864 to 819 bits. The modified structure and proposedconcatenated code, which consists of an RS(127,117) outer code and an LDPC(1778,889) inner code, are shown in Figure 3.  
For the outer code, a systematic RS(127,117) code based on Galois fields GF(2\({}^{7}\)) of a similar length to the input bits of the B-CNAV1 messages was chosen. Each RS symbol is made up of 7 bits, and this code can correct up to \(t=5\) RS symbol errors in an RS codeword regardless of how many error bits appear in each error symbol, which render the code able of overcome burst errors. The input 819 information bits are divided into 117 RS symbols, which are encoded to 127 RS symbols. Then, the randomly interleaved 127 RS symbols are converted to \(127\times 7=889\) bits; therefore, a 1/2-rate LDPC(1778,889) is constructed as the inner code. In this work, the LDPC code was designed based on the progressive edge-growth (PEG) algorithm with symbol-node-degree distribution optimized by the density evolution technique [27]. Furthermore, the parity-check matrix of this irregular PEG LDPC code was transformed into a lower triangular format by the Richardson-Urbanke (RU) method to obtain linear-time encoding [28]. It should be noted that the modified frame structure is only an example for providing a similar code length to that of B-CNAV1 messages for a fair bit error rate (BER) comparison. However, the message structure should be further improved by the optimization of data parameters. This extension is obviously of great interest and will be considered in future work. Decoding is performed in the reverse order of encoding. For the inner LDPC code, the log-likelihood ratio belief propagation (LLR-BP) algorithm is used to iteratively estimate the bit probabilities. The LLR  
Figure 3: Proposed concatenated coding scheme of subframes 2 and 3 for B-CNAV1. RS, Reed–Solomon. Figure 2: Coding scheme of subframes 2 and 3 in B-CNAV1. LDPC, low-density parity-check. of the binary symbols \(s_{i}\) from the LMS channel is used as the soft input to the LDPC decoder, and is given by:  
\[L(s_{i})=\log\frac{\Pr(y_{i}|s_{i}=+1,h_{i})}{\Pr(y_{i}|s_{i}=-1,h_{i})} \tag{5}\]  
where:  
\[\Pr(y_{i}|s_{i},h_{i})\,=\,\frac{1}{\sqrt{2\pi}\sigma_{n}}\exp\!\left(-\frac{(y _{i}-h_{i}\cdot s_{i})}{2\sigma_{n}^{2}}\right) \tag{6}\]  
Assuming that all of the symbols are equally likely, the LLR can be calculated as:  
\[L(s_{i})=\log\frac{\Pr(y_{i}|s_{i}=+1,h_{i})}{\Pr(y_{i}|s_{i}=-1,h_{i})}=\frac {2}{\sigma_{n}^{2}}y_{i}\cdot h_{i} \tag{7}\]  
where \(\sigma_{n}\) is the standard deviation of the additive Gaussian noise.