PART 1

The full application of Convolutional Encoder and Viterbi Decoder using

TigerSHARC Digital Signal Processor

Suggested 4G Hardware Architecture

 

 

 

In Digital Communication Systems, the information that is transmitted over a channel is represented by a sequence of binary bits. These binary bits are then mapped or modulated into an analogue signal and hence transmitted through a communication channel. The communication channel then introduces noise and distortion that corrupts the signal where at the receiver the corrupted transmitted signal is then mapped back into binary bits. Here, the received binary information is an estimate of the transmitted binary information. Bit errors that will be introduced here is due to the transmission and the number of bit errors depends on the amount of noise and distortion that are found in the communication channel. The following block diagram depicts a Digital Communication System.

Communication System

Channel coding is one of the most commonly used methods in digital communication systems to protect the digital information from noise and interference and hence reduces the number of bit errors in the digital information. This coding process can be accomplished by adding redundant bits into the transmitted information bit stream where these additional redundant bits will allow detection and correction of bit errors in the receiver's information data stream. This way, it will provide a more reliable information transmission. The advantages of using channel coding are protecting the information, a reduction in data rate and an expansion in the bandwidth.

 

Types of Channel Coding

The main two types of channel coding are Block codes and Convolutional codes:


a) Block codes
They are based on finite field arithmetic and abstract algebra where data are compiled into blocks prior to encoding and transmission and must be subsequently recompiled into blocks for decoding and error correction.

b) Convolutional codes
They are normally referred to as (n, k) block codes that accept a block of k information bits and produces a block of n coded bits. Besides that block codes have no memory and strongly depends only upon the corresponding message block. Some of the commonly used block codes are Hamming codes, Golay codes, BCH codes and Reed Solomon codes.

 

Types of Channel Codes

 

Convolutional codes or also known as trellis codes are widely used to encode digital data before transmission through noisy or error-prone channels. These codes are developed with a strong mathematical model structure that is primarily used for real time error correction. Convolutional codes convert the entire data stream into one single codeword. The encoded bits are not only depending on the current k input bits but also on past input bits. In convolutional coding, the main decoding strategy is based on the widely used Viterbi algorithm.

Due to the great amount of attention and acceptance that had been given to convolutional coding throughout the past years, there had been an extensive growth and advances to extend and improve this basic coding scheme hence resulted in two new coding schemes that is trellis coded modulation (TCM) and turbo codes. Both coding schemes are the extension of convolutional coding. Therefore in order to understand both these schemes knowledge of convolutional coding is required.

 

 

 

Convolutional Code System

The convolutional code system consists of a convolutional encoder, a channel and a Viterbi decoder:

a) Convolutional Encoder

The convolutional encoder is a linear time-invariant system therefore it may be described as a discrete-time finite-field convolution of the message sequence with a time-invariant generator sequence that is the impulse response of the encoder. Encoding the data using convolutional coding technique is accomplished by using a shift register that consists of a chain of flip-flops where in the output of the nth flip-flop is tied to the input of the (n+1) flip-flop.

 

 

 

The encoder could be represented in several different format but equivalent ways. They are:

(i) Generator Representation
(ii) Tree Diagram Representation
(iii) State Diagram Representation
(iv) Trellis Diagram Representation

 

 

b) Communication Channel

In a digital communications system the goal is to transmit data or information at as high rate as possible while keeping the probability of error as low as possible through the communication channel e.g. copper wires, space, optical fibres etc and separate the input source and the output source. Ideally, we would like to transmit data symbols one after the other from the transmitter and receive and estimate them in the receiver. However there would be presence of noise e.g. the Additive White Gaussian Noise (AWGN) that is present in the wireless environment of the communication channel without any reflection paths. Unfortunately, in a real wireless environment this is not what exactly happens because there is no such line of sight path which the signal propagates from transmitter to receiver, but many paths caused by reflections of the signal that will cause another noise phenomenon in wireless communication channel called the inter-symbol interference.

 

c) Viterbi Decoder

The Viterbi decoder algorithm determines the most likely path of bits of the transmitted sequence based on the received sequence. The decoder requires a memory of roughly five to ten times that of the encoder, and assigns "metric" values to each possible path taken, with the lowest metric at any given point in time corresponding to the bit value at that position in the sequence. Essentially, the decoder reconstructs all of the possible valid sequences and subtracts each from the received sequence. The lowest valued result indicates the correct, or maximally likely, sequence.

 

 

In PART 2, we will illustrate the full application of Convolutional Encoder and Viterbi Decoder using TigerSHARC Digital Signal Processor from AD Inc.