Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Convolutional Decoder using Viterbi Algorithm (help please)

Status
Not open for further replies.

Ahmed Zaki

Newbie level 4
Newbie level 4
Joined
Feb 27, 2011
Messages
6
Helped
0
Reputation
4
Reaction score
0
Trophy points
1,281
Location
Egypt
Activity points
1,319
Hi all,

I understand how the Convolutional Encoder works, and I implement it using MATLAB and ADS.

When I get to design the decoder, I get more problems.

I understand its concept and the viterbi algorithm and the Trellis diagram.

My rate is 3/4 by Convolutional encoder with rate 1/2 and then using puncture to get the rate 3/4.

In the depuncture I insert dummy bit "zero bit" regardless the sent bit as 1 or 0.

How I can overcome on this problem and correct the bits?

And how I can implement it?

Thanks,

Regards,

Ahmed Zaki
 

Hi

I guess you should use another symbol for depuncturing code. I many texts, the symbol 'X' with the meaning of "Don't Care" uses in depuncturing the code. I means that you should not count this symbols in the metric of each branch of viterbi decoding.

Best regards
 
Hi

I guess you should use another symbol for depuncturing code. I many texts, the symbol 'X' with the meaning of "Don't Care" uses in depuncturing the code. I means that you should not count this symbols in the metric of each branch of viterbi decoding.

Best regards

Hi,

1st: Thanks for replying

2nd: In my standard I wok on (IEEE 802.11n), it says that I should insert '0' in the decoding process.

And If I put don't care as you said, how can I ignore this bit in the decoding. The viterbi algorithm takes two bits for the decoding process.

Regards,

Ahmed Zaki
 

Hi Ahmed
There are two ways to decode the punctured codes i-e

1) Insert a dummy bit like '0' for the removed bits
2) Increase the number of states accounting for puncturing like if puncturing pattern in [1 1 0 1] i-e every 3rd bit is removed then the decoder should treat the odd and even message bits differently.

Method 1 is simple as it does not increase number of states but has performance inferior to the second method that decodes the original bits by increasing the number of states. As far as method 1 is concerned the convolutional codes have error correcting capability depending on free distance. If free distance is greater than 3 then this bit can be corrected i-e if you removed the coded bit having value 1 and you insert '0' instead of it then due to error correction capability of convolutional codes this bit can be decoded correctly provided other bits are correct. For codes having large free distances, even other bits are incorrect this dummy bit can also be decoded correctly!
 

Hi Ahmed
There are two ways to decode the punctured codes i-e

1) Insert a dummy bit like '0' for the removed bits
2) Increase the number of states accounting for puncturing like if puncturing pattern in [1 1 0 1] i-e every 3rd bit is removed then the decoder should treat the odd and even message bits differently.

Method 1 is simple as it does not increase number of states but has performance inferior to the second method that decodes the original bits by increasing the number of states. As far as method 1 is concerned the convolutional codes have error correcting capability depending on free distance. If free distance is greater than 3 then this bit can be corrected i-e if you removed the coded bit having value 1 and you insert '0' instead of it then due to error correction capability of convolutional codes this bit can be decoded correctly provided other bits are correct. For codes having large free distances, even other bits are incorrect this dummy bit can also be decoded correctly!


I am making 2/3 rate from basic 1/2 rate convolution encoder.
eNCODER IS WORKING CORRECT BUT AS AT THE RECEIVER END I USE DEPUNCTURING FOR THE BIT I REMOVED AT THE TRANSMITTER and i am not getting output from the viterbi decoder.

I have already done the depuncturing outside of the viterbi decoder but i am not getting the output as the bit corressponding to erase bit i am giving 1 to erase

Thanks .
 

The punctured bits must NOT affect the branch metric calculation. Inserting dummy zeros in the place of punctured bits and decoding with the standard decoder is WRONG.
In the calculation of branch metrics we find the distance between received symbol and possible outputs. Now for punctured codewords the output bits of each branch corresponding to the punctured bits must also be forced to zero, in this way punctured bits won't affect the branch metric calculations. :D

This figure should clarify what I mean. Look at those eliminated output bits.
https://www.easy-share.com/1916538657/Untitled.png
 

The punctured bits must NOT affect the branch metric calculation. Inserting dummy zeros in the place of punctured bits and decoding with the standard decoder is WRONG.
In the calculation of branch metrics we find the distance between received symbol and possible outputs. Now for punctured codewords the output bits of each branch corresponding to the punctured bits must also be forced to zero, in this way punctured bits won't affect the branch metric calculations. :D

This figure should clarify what I mean. Look at those eliminated output bits.
Download Untitled png, fast and secure downloading from easy-share.com
The method you are referring to is in fact the same as highlighted by me in my previous post as
2. Increase the number of states accounting for puncturing like if puncturing pattern in [1 1 0 1] i-e every 3rd bit is removed then the decoder should treat the odd and even message bits differently.
But method 1 is also used. For soft input Viterbi Algorithm, instead of inserting '0' bit, mean of signal levels is used i-e if -1 and +1 are transmitted then 0 level is used instead of increasing states in the Viterbi Decoder as in method 2.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top