ty of input payload cases. The rationale in this approach is to ensure that one of these two sub-blocks has a high Hamming weight, or more ones than zeros, which (as it can be shown) makes the codeword identification and decoding easier than in the low-weight case. Thus, hav- ing two parallel encoders with substantially different or virtually uncorrelated outputs, corresponds to a "divide-and-conquer" ECC strategy. Here, we will not venture into the advanced principles of turbo decoding, but it is worth providing a high-level description 11.4 Error-correction code types of the corresponding strategy. The main task of the convolutional decoder is to compute an integer number I for each received bit. This number, called a soft bit, which is output in the interval [-127, 127], measures the likelihood for the received bit to be a 0 or a 1. The likelihood is measured as follows: I = - 127 means certainly 0, I = - 100 means very probably 0, I = 0 means equally likely to be either 0 or 1, I = + 100 means very likely to be 1, and I = +127 means certainly likely to be 1. In the implementation, two parallel convolutional decoders are used to generate such likelihood measures for each of the m/2 bit parity sub-blocks and for the k-bit payload sub-block. Using their likelihood data, the two decoders can then construct two hypotheses for the k-bit payload pattern. These bit-pattern hypotheses are then compared. If they do match exactly, the bit pattern is output as representing the final decision. In the opposite case, the decoders exchange their likelihood measures. Each decoder includes the likelihood measure from the other decoder, which makes it possible for each of them to generate, once again, a new payload hypothesis. If the hypothesis comparison is not successful, the process is continued; it may take typically up to 15 to 18 iterations to converge! For turbo code designers, the matter and mission is to optimize the convolutional codes for efficient error correction, with maximal code rates (or minimal redundancy) and