o equal BCH components, which results naturally as systematic codes. The choice of the interleaver is a crucial part in the turbo code design. The task of the interleaver is to scramble the symbols in a predetermined way. The presence of the inter- leaver has two beneficial effects on the code. The presence of code words with a high number of null symbols (in case of the BCH codes the zero of the Galois field) weakens the code, since in general they are separated by a smaller distance. From this it derives the general property that a good code has the high- est possible average weight, where the code weight is defined as the average of the weight of the code words, that is, the average of nonzero symbols in the code words. Now, in a turbo code, if the first encoder produces a low-weight word, it is improbable that the second also will do the same after scrambling. Generally it can be seen that scrambling increases the average weight of the code word, while decreasing at the same time its variability. A second advantage of scrambling is constituted by the fact that decreasing the correla- tion between the two coded words that are transmitted increases the information that is sent to the decoder, thus allowing more effective decoders to be designed. Ideally both these advantages are maximized by using a random scrambler, but it is dif- ficult to realize at the high speeds typical of optical systems. In Figure 5.69 the workings of a few possible interleaver designs are shown for the cases in which the sequences to be interleaved are binary [101]. Row-column interleaver: In this type of interleaver the data are written row-wise and read column-wise. This is a very simple design, adapted for use at very high speed, but it also provides little randomness. Helical interleaver: In this type of interleaver, data are written row-wise and read diagonally. Odd-even interleaver: In this encoder architecture, encoding happens before interleav- ing, and after encoding only the odd-positioned coded bits are stored. Then, the bit