Skip to main content

Convolutional codes and their uses

Short answer

Convolutional codes are forward error-correcting codes used in satellite, mobile, Wi-Fi, and deep-space links. They encode data continuously using a shift register; example: a rate 1/2, K=3 code with generators g1=111, g2=101 produces two output bits per input bit based on the current and previous two bits. The state diagram has four states (00,10,01,11) with transitions labeled input/output.

Where are convolutional codes used? Explain the concept of convolutional codes (e.g. 1/2 rate) with the help of a state-transition diagram.

Uses

Convolutional codes are forward error-correcting (FEC) codes used where retransmission is not possible or costly: deep-space and satellite links, GSM and 3G mobile (channel coding), Wi-Fi (802.11a/g), digital TV broadcasting (DVB), and as the inner code with Reed-Solomon. They are decoded with the Viterbi algorithm.

Concept

Unlike a block code, a convolutional code encodes the data continuously: each output depends on the present input bit and the previous K−1 bits stored in a shift register (memory). A code of rate k/n produces n output bits for every k input bits. Constraint length K = number of register stages + 1.

Example: rate 1/2, K = 3, with generators g1 = 111 and g2 = 101:

  • Output 1 = b ⊕ s1 ⊕ s2
  • Output 2 = b ⊕ s2

where b is the current bit and s1 s2 are the previous two bits.

 input b --+--->[s1]--->[s2]
           |     |       |
           +--(+)<-------+---> out1 = b+s1+s2
           +-------(+)<-+---> out2 = b+s2

State transition table

State = (s1 s2). Input b moves to state (b s1). Label: input / output.

Current stateInput 0Input 1
a = 00a, out 00b, out 11
b = 10c, out 10d, out 01
c = 01a, out 11b, out 00
d = 11c, out 01d, out 10

State diagram (transitions, input/output)

 a --0/00--> a      a --1/11--> b
 b --0/10--> c      b --1/01--> d
 c --0/11--> a      c --1/00--> b
 d --0/01--> c      d --1/10--> d

Every state has exactly two outgoing arrows (one per input bit), and the number of states is 2^(K−1) = 4.

Example encoding

Input 1 0 1 1 followed by two flushing zeros (start 00):

InputStateOutput
10011
01010
10100
11001
01101
00111

Coded output: 11 10 00 01 01 11. The free distance of this code is 5, so Viterbi decoding can correct up to 2 errors in a short span of the stream.

✓ Answer checked by Claude Sonnet 5.5

All Data Communication chapter 8 questions →