ding algorithm that is suitable for application at very high speed, but are far from the optimality since the capacity of a channel using BCH codes is far from the Shannon limit [94], even if very long code words are selected. Telecommunication Networks Syndrome Errors Errors evaluation location evaluation -e(x) -c(x) = t(x)-e(x) FIGURE 5.66 Principle scheme of a BCH decoder. k Columns Message Redundancy Redundancy code A redundancy FIGURE 5.67 Composition of the code word of a systematic turbo block code. This indicates that much better codes must exist, guaranteeing a higher number of cor- rected errors for a certain redundancy and code word length. A class of better codes that is also suitable for application at high speed is constituted by the so-called turbo codes [99,100]. Turbo codes are a class of codes that construct the code word by concatenating two codes separated by an interleaver (see Figure 5.66). The turbo code word, when the component codes are systematic, can be arranged in a matrix, whose rows are transmitted in a determined order, as shown in Figure 5.67, where it is clear that redundancy is added not only to check errors in the message, but also to check errors in the redundancy introduced by the composing codes. As a result of the aforementioned definition, the encoder can be built from the encoders of the constituting codes SO that the encoder of a systematic turbo code will appear as in Figure 5.68. Starting from its very general definition, there are several classes of turbo codes: with and without memory (convolution or block codes), systematic or not (i.e., such that the redundancy is separated by the original message at the output or not). Technology for Telecommunications: Integrated Optics and Microelectronics Input symbols stream Encoder code 1 Interleaver Encoder code 2 FIGURE 5.68 Output symbols Encoder for a systematic turbo stream block code. Since we target codes that can be applied in optical systems at a very high speed, we limit our attention to block turbo codes based on tw