Convolution code which generates parity bits to the data is a powerful technique for correcting the random error. Moreover, in the convolution process, the shift register is used, so the output is a function of current and previous data. Constraint length K can be defined as the degree of memory a code includes. The rate =1/2 in WSPR means two output bits are generated for each input bit. Fig. 2 shows a simple convolution encoder example.

In the beginning, the shift register was initially loaded with 111 and the input bit stream is 11011. Input bits from the left put into the shift register and the output bits O1 and O2 are calculated by modulo-2 adders. From the Table I, the output is 10 01 00 01 10 10 10 for input bits 11011. Till now, the process of encoding convolution code is discussed. In order to understand how memory helps it to correct the random error, the state diagram of this example is shown in Fig. 3. There are four states of R1 and R2. R0 is the input bit and the number adjacent to the arrow is code output. According to Fig. 3, some transitions are not allowed because of the memory of the system, for example, state 10 to 00. The output data stream corresponds to a set of allowed transitions between the states. If an error is introduced during the transmission then the decoding process would result in non-permitted transitions, which means an error has been introduced. Next, the convolution decoder uses soft decision to determine the correct message. After this process, the random error would be corrected.