The quantity k/n called the code rate, is a measure of the efficiency of the code. Commonly k and n parameters range from 1 to 8, m from 2 to 10 and the code rate from 1/8 to 7/8 except for deep space applications where code rates as low as 1/100 or even longer have been employed. Often the manufacturers of convolutional code chips specify the code by parameters (n,k,L), The quantity L is called the constraint length of the code and is defined by
Constraint Length, L = k (m-1)
The constraint length L represents the number of bits in the encoder memory that affect the generation of the n output bits (Lin & Costello, 1982). The constraint length L is also referred to by the capital letter K, which can be confusing with the lower case k, which represents the number of input bits. In some books K is defined as equal to product the of k and m. Often in commercial spec, the codes are specified by (r, K), where r = the code rate k/n and K is the constraint length. The constraint length K however is equal to L - 1, as defined in this paper. I will be referring to convolutional codes as (n,k,m) and not as (r,K).
Code Parameters and the Structure of the Convolutional Code
The convolutional code structure is easy to draw from its parameters. First draw m boxes representing the m memory registers. Then draw n modulo-2 adders to represent the n output bits. Now connect the memory registers to the adders using the generator polynomial as shown in the Fig. 1.
This is a rate 1/3 code. Each input bit is coded into 3 output bits. The constraint length of the code is 2. The 3 output bits are produced by the 3 modulo-2 adders by adding up certain bits in the memory registers. The selection of which bits are to be added to produce the output bit is called the generator polynomial (g) for that output bit. For example, the first output bit has a generator polynomial of (1,1,1). The output bit 2 has a generator polynomial of (0,1,1) and the third output bit has a polynomial of (1,0,1). The output bits just the sum of these bits.
v1 = mod2 (u1 + u0 + u-1)
v2 = mod2 ( u0 + u-1)
v3 = mod2 (u1 + u-1)
The polynomials give the code its unique error protection quality. One (3,1,4) code can have completely different properties from an another one depending on the polynomials chosen.
How polynomials are selected
There are many choices for polynomials for any m order code. They do not all result in output sequences that have good error protection properties. Petersen and Weldon's book contains a complete list of these polynomials. Good polynomials are found from this list usually by computer simulation. A list of good polynomials for rate ½ codes is given below.
Punctured Codes
For the special case of k = 1, the codes of rates ½, 1/3, ...