 redundancy. However this is generally too complex represented as 0 and 1. (The actual values of the physical signal used and too dependent on the uncontrolled redundancy of the source to transmit the digits, for example +12V and -12V, are irrelevant signal to be attractive. The functions of error control coding and here). We shall assume that the input message digits use the same source coding are therefore usually separated. value of M as the transmitted digits; if not, the message digits can The functional blocks used for error control coding are a coder simply be converted to M-ary before coding. preceding the modulator in the transmitter, and a decoder following The analytical design of coders and decoders for M-ary digits the demodulator in the receiver. The decoder may be designed to requires the use of Galois field arithmetic, denoted GF(M). If M is detect digit errors, or it may be designed to correct them. These a prime number (including the important case of binary digits, functions are known as error detection and error correction respec- where M = 2), Galois field arithmetic is equivalent to arithmetic tively. modulo-M. GF(M) arithmetic also exists when M is equal to a power of a prime, SO coders using the principles described below can be designed for quaternary (4-valued) and octal (8-valued) digit 14.2.1 Types of ECC systems, for example, but in these cases GF(M) arithmetic is not equivalent to modulo-M arithmetic. There are two main types of ECC: block coding and convolutional In the case of binary systems (M = 2), the addition and multipli- coding. In block coding, the input is divided into blocks of k digits. cation operations in GF(2) (i.e. modulo-2) arithmetic are as follows: The coder then produces a block of n digits for transmission, and the code is described as 'an (n,k) code'. Each block is coded and (0+0)=(1+1)=( decoded entirely separately from all other blocks. In convolutional (0+1)=(1+0)=1 coding, the coder input and output are continuous streams of digits. The coder outputs n outpu