## 4 Comparative Analysis Convolutional Codes with LDPC Codes, BCH Codes, and Turbo Codes
### Convolutional Codes vs. LDPC Codes
For example, if the matrix is stored as a binary array of 0 s and 1 s, then each element would take 1 bit of memory. The total size of the matrix would be 2 \(\times\) 7 = 14 bits. Conversely, the memory required to store the parity matrix **H** of the LDPC code is proportional to (N-K) \(\times\) N = 2,097,152 bits. Clearly, the LDPC code demands significantly more memory to store the code matrix compared to the Convolutional code. The block length is the same for LDCP and Convolutional code in this example, but in encoding operation in Convolutional code the memory required to store the generator matrix **G** of the convolutional code depends only on the number of memory elements \(m\) and not on the block length. The memory requirements for decoding also depend on the decoding algorithm employed. For the Viterbi decoding of Convolutional codes, the memory needed is proportional to s \(\cdot\) N = 131,072. The result s \(\cdot\) N = 131,072 comes from multiplying the number of states s = 64 by the block length N = 2048. This is the memory required to store the survivor paths in the Viterbi decoding algorithm. Each survivor path is a sequence of N bits that represents a possible input to the Convolutional encoder. The Viterbi decoder keeps track of s survivor paths at each decoding step and chooses the one with the minimum path metric as the most likely input. So, as we mentioned before, the block length is important in the en coding operation and it is not in the encoding operation. In the message-passing decoding of LDPC codes, the memory required [26] is proportional to (N-K) \(\times\) N - I = 209,715,200. The result (N-K) \(\times\) N - I = 209,715,200 comes from multiplying the number of parity bits (N-K) = 1024 by the block length N = 2048 by the number of iterations I = 100. This is the memory required to store the messages in the message-passing decoding algorithm. Each message is a vector of N real numbers that represents the likelihood ratio of a bit being 0 or 1. The message-passing decoder exchanges messages between the variable nodes and the check nodes in each iteration and updates the posterior probabilities of the bits. The number of iterations I = 100 is an arbitrary choice. It depends on the desired decoding performance and complexity. The more iterations, the better the performance, but also the higher the complexity. There is no fixed rule for choosing the number of iterations, but some common values are 10, 50, or 100. Through this comparison, it becomes evident that the memory necessary for decoding LDPC codes is considerably higher than that required for Convolutional codes. Thus, the limited memory, in addition to other factors such as the processing power available in the GPS receivers, makes it difficult to use LDPC codes. On the other hand, the Viterbi algorithm used with Convolutional codes provides less memory requirment and a low complexity alternative [27] and good balance of error correction performance and computational efficiency for GPS receivers Compared with LDPC codes. These are a number of the advantages of using Convolutional codes over LDPC codes in GPS systems, while there are many more advantages to consider.