Interleaving is a tool that is used to enhance existing error correcting codes so that they can be used to perform burst error corrections as well.
Most error correcting codes (ECCs) are designed to correct random errors, i.e. error caused by additive noise that is independent of each other. Burst error are the errors that occur in a sequence or as groups. They are caused due to defects in storage media or disruption in communication signals due to external factors like lightning etc. Interleaving modifies the ECC or does some processing on the data after they are encoded by ECCs.
During interleaving, the message symbols are arranged over multiple code blocks by the interleaver before sending over network channels. Due to this, long burst noise sequences are spread out among multiple blocks. When the decoder rearranges the blocks, the errors appear as independent random errors or burst errors with short lengths. The decoder is able to correct the errors using the error correcting algorithm.
The depth of interleaving required depends upon the length of the noise bursts that the ECC can recover from.
There are two types of interleaving
Periodic Interleaving, In this case, the message is ordered in a repeating sequence of bytes. The interleaver accepts data symbols in blocks and performs identical permutations on the blocks before transmitting them. For example, the sequential blocks of code may be written to a matrix in a row-wise manner and then read out from the matrix in a column-wise manner. Block interleaving is a type of periodic interleaving.
Pseudo-random Interleaving Pseudo-random interleaving involves rearrangement of the message blocks in a pseudo-random sequence generated by specific algorithms.
Suppose that a certain error detection code has generated the four codewords 10011101, 00101100, 10100101 and 11110000. The following diagram illustrates an interleaving procedure