In the convolutional codes (also called trellis codes), the redundancy that must be added to allow error correction at the receiver is continuously distributed in the channel bit stream. Therefore, as opposed to the block codes, which operate on finite-length blocks of message bits, a convolutional encoder operates on continuous sequences of message symbols. Let a denotes the message sequence with a = a1a2a3 . (4.45) and c denotes the code sequence of the form c = c1c2c3 . (4.46) At each clock cycle, a (n, k, m) convolutional encoder takes one message symbol of k message bits and produces one code symbol of n code bits. Typically, k and n are small integers (less than 5), with k < n. The parameter m refers to the memory requirement of the encoder. Increasing m improves the performance of the code, but this will also increase the decoder complexity. Therefore, the parameter m is typically less or equal to eight. The basis for generating the convolutional codes is the convolution of the message sequences with a set of generator sequences. Let g denote a generator sequence of length L + 1 bits that can be presented by g = g1g2g3 . gL (4.47) Let the convolution of a and g be b = b1b2b3 ., with each output bit given by Eq. 4.48.