1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Print Print

Convolutional code

by Krishna Sankar on January 4, 2009

Coding is a technique where redundancy is added to original bit sequence to increase the reliability of the communication. In this article, lets discuss a simple binary convolutional coding scheme at the transmitter and the associated Viterbi (maximum likelihood) decoding scheme at the receiver.

Update: For some reason, the blog is unable to display the article which discuss both Convolutional coding and Viterbi decoding. As a work around, the article was broken upto into two posts. This post descrbes a simple Binary Convolutional Coding scheme. For details on the Viterbi decoding algorithm, please refer to the post – Viterbi decoder.

Chapter 8, Table 8.2-1 of Digital Communications by John Proakis lists the various rate 1/2 convolutional coding schemes. The simplest among them has constraint length with generator polynomial . There are three parameters which define the convolotional code:


(a) Rate : Ratio of the number of input bits to the number of output bits. In this example, rate is 1/2 which means there are two output bits for each input bit.

(b) Constraint length : The number of delay elements in the convolutional coding. In this example, with there are two delay elements.

(c) Generator polynomial : Wiring of the input sequence with the delay elements to form the output. In this example, generator polynomial is . The output from the arm uses the XOR of the current input, previous input and the previous to previous input. The output from the uses the XOR of the current input and the previous to previous input.

Rate 1/2 Convolutional code

Figure 1: Convolutional code with Rate 1/2, K=3, Generator Polynomial [7,5] octal

From the Figure 1, it can be seen that the operation on each arm is like a FIR filtering (aka convolution) with modulo-2 sum at the end (instead of a normal sum). Hence the name Convolutional code. :)

State transition

For understanding the Viterbi way of decoding the convolutional coded sequence, lets understand the relation between the input and output bits and the state transition.

if ip = 0 if ip = 1
current state next state (op) next state (op)
00 00 (00) 10 (11)
01 00 (11) 10 (00)
10 01 (10) 11 (01)
11 01 (01) 11 (10)

Table 1: State transition table and the output values

State transition for K=3, rate = 1/2 convolutional code

State transition for K=3, rate = 1/2 convolutional code

Figure 2: State transition for K=3, rate = 1/2 convolutional code

For details on the Viterbi decoding algorithm, please refer to the post – Viterbi decoder.

References

Tutorial on Convolutional Coding with Viterbi Decoding – Mr. Chip Fleming

Digital Communications by John Proakis

Related posts

  1. Viterbi decoder
  2. Viterbi with finite survivor state memory
  3. Soft Input Viterbi decoder
  4. Hamming (7,4) code with hard decision decoding
  5. Matlab or C for Viterbi Decoder?

D id you like this article? Make sure that you do not miss a new article by subscribing to RSS feed OR subscribing to e-mail newsletter. Note: Subscribing via e-mail entitles you to download the free e-Book on BER of BPSK/QPSK/16QAM/16PSK in AWGN.

{ 2 trackbacks }

Viterbi
January 4, 2009 at 11:50 am
Hamming (7,4) code with hard decision decoding
September 29, 2009 at 5:52 am

{ 6 comments… read them below or add one }

1 kavya January 24, 2009 at 10:50 am

We want vhdl code for convolutional encoder in RTL implementation of Viterbi decoder

Reply

2 Communication February 4, 2009 at 7:51 pm

Hey Krishna, its me again. You have given simple and concise description of the convolutional code, that easy to understand.

However, can you talk about how to “BUILD” our code so that it can correct a specified number of errors.

Reply

3 Krishna Pillai February 10, 2009 at 7:45 pm

@communication: Thanks. I think its a block coding scheme which can be tuned to correct a maximum number of errors. I will try to discuss block coding in a future post.

Reply

4 gana November 24, 2009 at 10:38 pm

I am doing a project on fpga implementataion of convolutional encoder and viterbi decoder.i am new to vhdl.can you give the the code for encoder.

Reply

5 Krishna Sankar December 7, 2009 at 4:21 am

@gana: Sorry, I do not have the vhdl code

Reply

6 hina January 29, 2010 at 2:59 am

how to solve this
A convolutional code is described by the generator polynomials g1, g2, g3 givenas
g1 = 1
g2 = 1+z inverse-2
g3 = 1+z inverse-1+z inverse-2

a)What is the code rate of this code?
b)Draw the encoder corresponding to this code
c)Draw the state diagram corresponding to this code
d)Find the minimum distance dmin of this code

Reply

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous post: Books

Next post: Viterbi decoder