Project Title: Generation of Efficient Convolutional Codecs
Project Date: on 23 April 2003

Convolutonal coding and viterbi decoding are widely used in modern digital communication
systems, such as space communication, satellite communication, and mobile
communication. In almost all cases, the Viterbi decoding algorithm is applied.
Sometimes it is necessary to have routines for encoding and decoding to
carry out simulations. However, there are not many suitable basic codes
and are so many variants. It is desirable to write general-purpose routines
to generate the encoder and decoder. Concatenation of several conventional
convolutional encoders is a both powerful and practical method to obtain
encoding schemes that are attractive for use in communication systems where
very low error probabilities are needed. Essentially, the convolutional
codes simulator is well established for long. However, for the general-purpose
source code generator is not well established as the difficulties created
by the number of variants.
2. OBJECTIVE
The main objective of this project is to write a program that will generate
the source code for any selected convolutional encoder or decoder. The user
will run the program and answer various questions (rate of code, constraint
length, polynomials, puncturing patterns, decoder delay, number of soft
decision demodulator levels per bit, etc.). The program will then select
appropriate routines to make up a source file (C or C++) for the encoder
and for the decoder. These source files are then compiled for use in simulation.
The encoders and decoders produced should be completely dumb, taking demodulated
input from standard input and sending decoded bits to standard output, with
no user interaction. Additional routines to be developed, if there is time,
could include interleavers and soft output decoders, where some confidence
value is attached to each bit of the decoded output.
The main objective can be divided into the following small parts;
A. Analyse convolutional coding system.
B. Find the best convolutional cedes for Viterbi coding system.
C. Implement different modules of the convolutional coding system.
The 7
basic modules are;
1. Random sequence generator
2. Convolutional encoder
3. BPSK modulator
4. AWGN channel simulator
5. Quantiser
6. Viterbi decoder
7. Statistical calculator
D. Implement user interface and trellis table calculation.
E. Implement the source codes generator to create the modules.
F. Find the good punctured codes and modify the system to support punctured
codes.
The extended objective is divided into the following
small parts;
G. Add interleaver and soft output to the system.
3. INTRODUCTION
In the telecommunication systems, convolution coding is the most reliable technique
for the error-correction-coding to overcome transmission distortion or channel
noise. Although, this error correction process is widely used, Viterbi specifically
used the viterbi algorithm (VA) for decoding convolutional codes. The encoding
method is known as convolutional coding or trellis-coded modulation. The
output signal is generated convolving with the input signal itself, which
adds some redundancy on input signal. The state diagram (figure 2.2) illustrates
the sequence of possible codes creates a constrained structures called trellis.
The coded data is usually modulated before transmitting through the channel
and hence called trellis-coded modulation. Today we use digital communication
systems without taking much notice about it, e.g., when we listen to music
on a CD, mini disc, memory card, make a call using a mobile phone, or send
an e-mail and watch movies on VCD (Video Compact Disc) and DVD (digital
video disc or digital versatile dis). We are also watching television programs
that are broadcasted digitally. Unfortunately, contrary to the impression
in the media, digital signals are affected by noise as much as analogue
signals. We still have disturbances in the transmission and we still have
errors in the received signals. It can be due to scratches on the surface
of the CD or background noise for a satellite link, just to mention some
sources of noise. This motivates the use of error correcting codes. In a
digital system it is quite easy, compared to analogue systems, to add redundant
data to the transmitted information that makes it possible to detect and
correct some of the occurred errors. There will always be patterns of errors
that we cannot correct and the codes can be more or less effective in its
work, which often result in more or less complex encoders and decoders.
One way to construct good codes is to combine several simpler ones, i.e.,
to concatenate codes.
Supervised by: Dr Peter Sweeney
Center for Communication Systems Research (CCSR)
Surrey Space Centre
University of Surrey
Reference: Project Report, June 2003