17-09-2014, 02:38 PM
A channel code is a broadly used term mostly referring to the forward error correction code and bit interleaving in communication and storage where the communication media or storage media is viewed as a channel. The channel code is used to protect data sent over it for storage or retrieval even in the presence of noise (errors). Channel coding is distinguished from source coding, i.e., digitalization of analog message signals and data compression.
In this report we will be looking at an overview of the various coding techniques adopted for digital communication, starting from the class of linear block codes, cyclic codes – a sub-class of linear block codes, BCH codes, convolutional codes and Turbo codes. Linear block codes are useful, instructive and simple. Encoding and decoding strategies are discussed in brief for this class of codes. Then, we deal with cyclic codes, a sub-class of linear block codes. Cyclic codes are particularly useful for burst error correction. Firecodes, Golay codes and Cyclic Redundancy Check (CRC) codes are discussed as specific examples of cyclic codes. Then, we move over to the world of Bose–Chaudhuri Hocquenghem (BCH) codes, a very powerful class of multiple error correcting codes. The Reed-Solomon codes, a sub-class of BCH codes, are also discussed in brief.Then, we take a look at convolutional codes, which are essentially codes with memory. The concept of Trellis codes is introduced to the reader and the Viterbi decoding technique is also discussed. Finally, the reader is given a flavor of the not-so-old Turbo codes.