100% found this document useful (1 vote)
966 views9 pages

Sequential Decoding by Stack Algorithm

The document discusses sequential decoding of convolutional codes using the stack algorithm. It begins by introducing convolutional codes and their advantages over block codes for serial data transmission. It then describes the stack algorithm for sequentially decoding convolutional codes. The key steps of the stack algorithm involve maintaining a stack of paths ordered by metric and recursively computing successor paths. The algorithm terminates when the best path reaches the end of the code tree. Compared to the Viterbi algorithm, the stack algorithm generally requires fewer computations but may experience issues like buffer overflow if searches become too long.

Uploaded by

Ram Chandram
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
Download as doc, pdf, or txt
100% found this document useful (1 vote)
966 views9 pages

Sequential Decoding by Stack Algorithm

The document discusses sequential decoding of convolutional codes using the stack algorithm. It begins by introducing convolutional codes and their advantages over block codes for serial data transmission. It then describes the stack algorithm for sequentially decoding convolutional codes. The key steps of the stack algorithm involve maintaining a stack of paths ordered by metric and recursively computing successor paths. The algorithm terminates when the best path reaches the end of the code tree. Compared to the Viterbi algorithm, the stack algorithm generally requires fewer computations but may experience issues like buffer overflow if searches become too long.

Uploaded by

Ram Chandram
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1/ 9

A Seminar on SEQUENTIAL DECODING by STACK ALGORITHM

1.

INTRODUCTION

During the transmission process when the transmitted signal passes through some noisy channel, due to noise interference errors are introduced in the received data. These errors can be detected and corrected using Coding Technique. Types of Coding Technique: 1) Block codes 2) Convolutional codes In block coding, the encoder accepts a k-bit message block and generates an n-bit codeword. Thus, code words are produced on a block-by-block basis. So, provision must be made in encoder to buffer an entire message block before generating the associated codeword. However, there are applications where the message bits come in serially rather than in large blocks, in which case the use of a buffer may be undesirable. In such situations, the use of convolution coding is preferred. 2. CONVOLUTIONAL CODE Convolutional codes were first introduced by Elias in 1955 as an alternative to block codes. Wozencratf proposed sequential decoding as an efficient decoding scheme for convolutional codes. The convolutional coding technique is designed to reduce the probability of erroneous transmission over noisy communication channels. A binary convolutional code is denoted by a three-tuple (n; k; m), which corresponds to an encoder for which n output bits are generated whenever k input bits are received, and for which the current n outputs are linear combinations of the present k input bits and the previous m x k input bits.
8

Because m designates the number of previous k-bit input blocks that must be memorized in the encoder, m is called the memory order of the convolutional code. A convolutional encoder generates n encoded bits for each k information bits, and R=k/n is called the code rate. For an information sequence of finite length k. L, the corresponding code word has length n(L+m), where the final n.m outputs are generated after the last nonzero information block has entered the encoder.

3. APPLICATION

OF CONVOLUTIONAL CODES

Convolutional codes are commonly used in applications that require relatively good performance with low implementation cost. They are used extensively in order to achieve reliable data transfer, including digital video, radio, mobile communication, and satellite communication.
4. DECODING

OF CONVOLUTIONAL CODES

Convolutional codes decoded by several methods. These are: 1) Viterbi Decoding. 2) Sequential decoding 3) Feedback decoding Viterbi Algorithm is the most popular decoding algorithm for convolutional codes. But suffers from a high decoding complexity for convolutional codes with long constraint lengths.

Sequential decoding is essentially independent of K, so that long constraint length can be used, and hence arbitrarily low error probabilities can be achieved.

5. SEQUENTIAL

DECODING by STACK ALGORITHM

Sequential decoding was introduced by Wozencraft as the first practical decoding method for convolutional codes. Fano and Stack algorithms are the version of the Sequential decoding. The Stack Algorithm was discovered by Zigangirov and later independently by Jelinek to search a code tree for the optimal codeword. Because a stack is involved in searching for the optimal codeword, the algorithm is called the stack algorithm. It is exactly the Algorithm A with g-function equal to the Fano metric and zero hfunction. In the stack or ZJ algorithm, an ordered list or stack of previously examined paths of different lengths is kept in storage. Each stack entry contains a path along with its metric, the path with the largest metric is placed on top, and the others are listed in order of decreasing metric. Each decoding step consists of the top path in the stack by computing the branch metrics of its 2k succeeding branches, and then adding these to the metric of the top path to form 2k new paths, called the successor of the top path.

The top path is then deleted from the stack, its 2k successors are inserted and the stack is re arranged in order of decreasing metric values. When the top path in the stack is at the end of the tree, the algorithm terminates.

The Stack Algorithm Step 1. Load the stack with the origin in the tree, whose metric is taken to be zero. Step2. Compute the metric of the successors of the top path in the stack. Step 3. Delete the top path from the stack. Step 4. Insert the new path in the stack, and rearrange the stack in order of decreasing metric values. Step 5. If the top path in the stack ends at a terminal node in the tree, Stop. Otherwise, Return to Step 2. When the algorithm terminates, the top path in stack is taken as the decoded path. In step1, 2k new metrices are computed and in tail of the tree only one new metric is computed. For (n,1,m) codes, the size of the stack increases by one foe each decoding step in the dividing part of the tree but does not increase at all when the decoder is in the tail of the tree. Since the dividing part of the tree is typically much longer than the tail (L>>m), the size of the stack is roughly equal to the no. of decoding steps when the algorithm terminates. Fig.1 shows the Flow Chart for the Stack Algorithm.

Figure 1: Flow Chart

Example: For the (3,1,2) convolutional code, suppose that the generator sequence is given by g1=110 g2=101, g3=111. 1. Construct state table for this code
2.

For a BSC with p=0.1, find an integer metric table for fano metric

3. Draw the tree diagram for information sequence of length L=5 4. Decode the received sequence r= (010,010,001,110,100,101,011) using stack algorithm Given: n=3; k=1; m=2; rate, R=k/n=1/3; here encoder has two memory elements 2k=2m=22 =4 state. Impulse responses are g1=110; g2=101; g3=111; crossover probability p= 0.1, therefore 1-p= 0.9 , Encoder Diagram is shown below:

Y1= i R1,
Initial state Input

Y2= i R2,
Next State R1

Y3= i R1 R2,
R2 Y1 Y2 Y3

00 (a) 01 (c) 10 (b) 11 (d)

0 1 0 1 0 1 0

00 10 00 10 01 11 01

0 0 0 0 1 1 1

0 0 1 1 0 0 1

0 1 0 1 1 0 1

0 1 1 0 0 1 1

0 1 1 0 1 0 0

11

Bit Matrix Calculation In general for a BSC with transition probability p , the bit matrics are given by M(ri/ vi)= { log2 2p - R { log2 2(1-p) - R if ri vi if ri = vi\

Therefore M(ri/ vi)= { log2 2*0.1 - 1/3= 0.52 if ri vi and M(ri/ vi)= { log2 2(1-0.1) - 1/3=-2.65 if ri = vi\

hence the bit metrics is shown below: M(ri/ vi) ri=0 ri=1 vi= 0 0.52 -2.65 vi=1 -2.65 0.52
After scaling the metrics by a positive constant

M(ri/ vi) ri=0 ri=1 TREE DIAGRAM

vi= 0 1 -5

vi=1 -5 1

Fig shows the tree diagram for a (3, 1, 2) code with L=5

Received code Using the integral metric, the contents of this stack after each stage of this algorithm is shown in the fig 4. The algorithm terminates after 10 decoding steps, and the final decoded path is corresp onding to the information sequence

6. DISADVANTAGES OF STACK ALGORITHM Several problems associated with the implementation of the stack sequential decoding algorithm are: a. Buffer overflow Since the decoder traces a random path back and forth through the code tree, the decoder must have an input buffer to store incoming blocks of the received sequence while they are waiting to be processed. Otherwise the long searches can cause the input buffer to overflow, resulting in the loss of data, or an Erasure. An erasure probability of 10-3 are common in sequential decoding which means that a particular frame has a probability of 10 -3 of not being decoded due to an overflow of the input buffer.

b.

Stack Size: The size of the stack algorithm shall be finite. There is always some probability that the stack will fill up before decoding is completed on a given frame. To handle this problem, the path at the bottom of the stack is pushed to the next decoding step and then this path is lost and never returns to the stack.

c.

Reordering of Stack: The reordering of the stack after each decoding step becomes time consuming as the number of entries in the stack becomes large. This places severe limitations on the decoding speed that can be achieved with the basic algorithm.

7. COMPARISON BETWEEN STACK ALGORITHM AND VITERBI ALGORITHM


a.

Satck algorithm requires less decoding step than required by Viterbi algorithm. Computational advantage of sequential decoding over the Viterbi algorithm is more when the received sequence is not too noisy. The no. of computation performed by a sequential decoder is a random variable, where as the computational load of the Viterbi algorithm is fixed.

b.

c.

You might also like