Rules | Recent posts | topic RSS | Search | Register  | Log in

soft viterbi decoding?

 
Post new topic  Reply to topic    EDAboard.com Forum Index -> Digital communication
Author Message
bee



Joined: 29 Nov 2003
Posts: 126
Helped: 2


Post06 Dec 2007 21:11   soft viterbi decoding?

i have an idea of implementing the hard viterbi decoder. can anyone plz tell me the concept behind the soft viterbi decoding and what is the diff b/w hard viterbi and soft viterbi decoding?
Back to top
samuraign



Joined: 18 May 2006
Posts: 111
Helped: 6


Post07 Dec 2007 6:18   soft viterbi decoding?

Demapper will send hard decision(1/0) or soft decision(3/4/6bits as per ur design).

In Viterbi Branch metric calculation Hamming distance is used for Hard decision and Euclidean( or Manhattan) distance is used for Soft decision.
Back to top
bee



Joined: 29 Nov 2003
Posts: 126
Helped: 2


Post07 Dec 2007 15:54   soft viterbi decoding?

can u plz explain me the how do we assign 3/6/8 biits in soft decoding ?
Back to top
spweda



Joined: 28 Jun 2001
Posts: 195
Helped: 4


Post09 Dec 2007 5:39   Re: soft viterbi decoding?

You need design a quantizer table to represent the symbol by 3 bits, then use Euclean distance as a metric to do the soft decoder.
Back to top
samuraign



Joined: 18 May 2006
Posts: 111
Helped: 6


Post11 Dec 2007 4:02   Re: soft viterbi decoding?

look at modulation(QPSK,QAM) used for your design.
Do demodulation and then use quanization with channel estimation relaibility information to get your soft bits.
Back to top
bee



Joined: 29 Nov 2003
Posts: 126
Helped: 2


Post11 Dec 2007 22:37   soft viterbi decoding?

i couldnt get the answers yet, will be grateful if u guys plz explain it a bit more with some example.
thanks
Back to top
alzomor



Joined: 09 Jun 2005
Posts: 551
Helped: 31
Location: Cairo


Post16 Dec 2007 4:05   Re: soft viterbi decoding?

Hi

You can check the tutorial about convolution encoding on complextoreal.com

Salam
Hossam Alzomor
www(.)i-g(.)org
Back to top
rag_perfect



Joined: 01 Sep 2005
Posts: 150
Helped: 7
Location: India


Post18 Dec 2007 8:29   Re: soft viterbi decoding?

Basically 3/6/8 are code rate...
means 3 bit i/p and you u get o/p in punctured form like if code rate is 3/4 then insead of getting 6 bits o/p..u get only 4 bits...two bits will be removd...

check out 802.16d pdf...Viterbi punctured conding is explaind there.....
Back to top
bee



Joined: 29 Nov 2003
Posts: 126
Helped: 2


Post21 Dec 2007 23:32   soft viterbi decoding?

can i have any solved example of viterbi soft decoding?

tx
Back to top
babyeric



Joined: 21 Dec 2007
Posts: 11


Post02 Jan 2008 10:48   Re: soft viterbi decoding?

I had done in this way, dunno is it correct or not.

1) QPSK mod the signal (o/p==[1+j, -1+j, 1-j, -1-j])

2) Pass thru AWGN noise (o/p==unknown)

3) Quantize the real part of the noisy signal (o/p==[1 2 3 4 5 6 7])

4) Quantize the imaginary part of the noisy signal (o/p==[1 2 3 4 5 6 7])

5) Combined both the quantized real and imaginary o/p together. (Im, Re, Im, Re...)

6) Viterbi soft decode.

7) Ans

Hope it helps..
Back to top
bee



Joined: 29 Nov 2003
Posts: 126
Helped: 2


Post06 Jan 2008 13:33   soft viterbi decoding?

can u plz explain how did u quantize the real and imaginary part then combined them together?

Thanks
Back to top
babyeric



Joined: 21 Dec 2007
Posts: 11


Post08 Jan 2008 8:53   Re: soft viterbi decoding?

How should i put it?I am not good in explaining, so if I didn't explain well, pardon me ok?

As you know, QPSK is in such a format:
01(-1+j) | 00(1+j)
------------|--------------
11(-1-j) | 10(1-j)

where by 00, 01, 11, 10 is in binary input form and after QPSK, the output become the complex domain.

However if you observe it, you will notice that we can represent the MSB as the imaginary term, while the LSB as the real term. Eg: QPSK (01)= -1+j, so it mean MSB is 0 and LSB is 1 and 0 represent a +value in complex domain and 1 represent a -value in complex domain.

So after added noise, the value in the complex domain will change, for eg (10)(1-j) it become 0.51-j0.81

so in the quantizing part, I do it in the real and imaginary part separately. I quantized it in 3 bits. For real 0.51=5 after quantized and imaginary -0.81=0 after quantized.

So after that i combine both of them by making the quantized imaginary as the MSB and quantized real as the LSB, the output become 05. Then I fed into my soft viterbi decoder to get my output. However u must notice here is that soft viterbi decoder treat quantized 0 as confirmed bit 0 and quantized 7 as bit 1. However here, you will notice that the for the imaginary part to be confirm bit 0 is wrong as it should be 1 as explained above. So you must do a inverse operation after the viterbi decoder to get the correct QPSK output. Hope it explained well..

PS: this method can only work for QPSK, and not other modulation.

Added after 44 seconds:

How should i put it?I am not good in explaining, so if I didn't explain well, pardon me ok?

As you know, QPSK is in such a format:
01(-1+j) | 00(1+j)
------------|--------------
11(-1-j) | 10(1-j)

where by 00, 01, 11, 10 is in binary input form and after QPSK, the output become the complex domain.

However if you observe it, you will notice that we can represent the MSB as the imaginary term, while the LSB as the real term. Eg: QPSK (01)= -1+j, so it mean MSB is 0 and LSB is 1 and 0 represent a +value in complex domain and 1 represent a -value in complex domain.

So after added noise, the value in the complex domain will change, for eg (10)(1-j) it become 0.51-j0.81

so in the quantizing part, I do it in the real and imaginary part separately. I quantized it in 3 bits. For real 0.51=5 after quantized and imaginary -0.81=0 after quantized.

So after that i combine both of them by making the quantized imaginary as the MSB and quantized real as the LSB, the output become 05. Then I fed into my soft viterbi decoder to get my output. However u must notice here is that soft viterbi decoder treat quantized 0 as confirmed bit 0 and quantized 7 as bit 1. However here, you will notice that the for the imaginary part to be confirm bit 0 is wrong as it should be 1 as explained above. So you must do a inverse operation after the viterbi decoder to get the correct QPSK output. Hope it explained well..

PS: this method can only work for QPSK, and not other modulation.
Back to top
bee



Joined: 29 Nov 2003
Posts: 126
Helped: 2


Post17 Jan 2008 6:37   soft viterbi decoding?

ur way may be correct but the thing is that i want to implement it in MATLAB and for that i dont think if i need quantization. the problem i m facing is that my soft viterbi decoder works fine in AWGN channle but when I apply my soft viterbi deocoder in Rayleigh fading channel with white Gaussian noise the BER vs SNR graph is same as if there is no coding used (i.e. Coded and uncoded BER curves are same). Can anyone plz tell me if there are some special steps to be followed in presence of Rayleigh fading.

Tx.
Back to top
samuraign



Joined: 18 May 2006
Posts: 111
Helped: 6


Post24 Jan 2008 2:11   soft viterbi decoding?

if your model is
Encoder--->Interleaver--->Mapper--->IFFT---->Channel---->FFT----->De-Mapper(sfot bits)--->De-Interleaver---->Viterbi

then checking for AWGN is enough.

Rayleigh fading u need equalizer and pll stuff.
Back to top
haneet



Joined: 07 Nov 2006
Posts: 77
Helped: 2


Post26 Jan 2008 15:18   Re: soft viterbi decoding?

@ babyeric

i have just just seen this thread.
i am srry but i couldnt understand how did u do this:- (10)(1-j) it become 0.51-j0.81
i mean how did u get the integer numbers 0.51 and 0.81
Back to top
Dmitrij



Joined: 14 Jul 2007
Posts: 103
Helped: 12


Post27 Jan 2008 14:55   Re: soft viterbi decoding?

Viterbi decoding is the maximum-likelihgood decoding algorithm, mainly used in systems with Convolution(al) codes. The latter means, that it's absolutely exact, but not numerical algorithms. Due to its existense convolutional codes are very spread now. Of course, Viterbi decoding may be applied to any other type of codes, however it will be inefficient and time-consuming.

Viterbi decoding is usually performed on code grid. At every step 2 current bits are compared with the corresponding metrics of the branches of this grid. The differences are calculated and memorized. Consequently these metrics are accumulated at every step. When 2 branches are joined in one node only 1 branch remains, which has the minimum total metrics (or the maximum correlation with the received bits. This sequence of steps is repeated until all the bit stream is finally decoded.

In Hard-iterbi decoding we use Hamming metrics (that is, the bits are demodulated first and then estimated according to the minimum Hamming distance). In Soft-Viterbi decoding we avoid demodulation, but immeadiarely try to find the estimate of the transmitted bits according to the minimum of Euclidean distance.

It's also possible to substitute distance calculation for correlation one. It means that we find the correlation coefficient between the current bits (usually 2, as in convolution(al) codes) and the ones, corresponding to a certain branch, whereby we obtain the decoded bits.

Soft decoding is more sensitive, than the hard one, the energy loss is approximately 2-3 dB.

Convolutional codes are referred to a very extensive class of noise combating codes. They are capable of correcting errors in accordance with their code distance d: d>=2*t+1. In fact, Viterbi decoder may correct even more mistakes if they are not grouped (packeted).

Example: Imagine you have got 2 possible unary combinations at the input: 0 and 1. Consequently, there are 4 possible combinations after convolution(al) coding: 00, 01, 10, 11. Then the bit stream is transmitted through AWGN channel. The received bits are, for example, the following:

y = (0.5, -3, 1.5, -0.5, 1, 0, -1.5, -2.5, 6)

a) In hard decoding at first you should replace these components with 0 and 1 (or with +1 and -1). If y(i)>=0, then y(i) = 1. If y(i)<0, then y(i) = -1. Thereby we demodulate the received vector and get:

y = (1 -1 1 -1 1 1 -1 -1 1). After this we decode this observation with the use of Euclidean distance.

b) In soft thresholding we evaluate the correlation between each pair of bits with the branch of code grid, for example:

00 -> +1+1
0.5 -3 -> 0.5, -3

Correlation = 1*0.5 + 1*(-3) = -2.5. We finally choose the way with the maximum correlation.

-----------------------------------------------------------------------------------

See Bernard Sklar "Digital Communications - Fundamentals and Applications"

With respect,

Dmitrij
Back to top
babyeric



Joined: 21 Dec 2007
Posts: 11


Post29 Jan 2008 11:33   Re: soft viterbi decoding?

hi haneet,

(10)(1-j) it become 0.51-j0.81 is just an example. what i mean (10)(1-j) is the point on the constellation. [1-j] is the output after QPSK modulation. (10) mean the original data bits. After adding noise, I put it become 0.51-j0.81 is just an example. It doesn't really mean that after adding noise, you will get this results as noise is random, so we will not know what result it will be getting.

Sorry to mislead you.

Best Regards

BTW Dmitrij had a very detailed explaination abt viterbi.. I didn't go so detail. haha..
Back to top
mmoctar



Joined: 12 Feb 2007
Posts: 84
Helped: 6
Location: France


Post12 Mar 2008 16:19   Re: soft viterbi decoding?

The difference betwenn soft and hard in viberti decoding depend on the kind of channel you use, if it'binary or gaussian. But the most useful I think it is gaussien because it has the best BER.
Back to top
eslama



Joined: 21 Sep 2007
Posts: 9


Post17 Mar 2008 14:57   soft viterbi decoding?

does anyone have a matlab code for viterbi decoder
thanks
Back to top
mmoctar



Joined: 12 Feb 2007
Posts: 84
Helped: 6
Location: France


Post02 Apr 2008 17:45   Re: soft viterbi decoding?

Go on central matlab...
Back to top
fontp



Joined: 19 Nov 2004
Posts: 82
Helped: 13


Post06 May 2008 11:50   soft viterbi decoding?

Phil Karn placed exellent C source code for Viterbi (as well as RS) decoding/encoding
http://www.ka9q.net/code/fec/
Back to top
Post new topic  Reply to topic    EDAboard.com Forum Index -> Digital communication
Page 1 of 1 All times are GMT + 2 Hours


Abuse
Administrator
Moderators
topic RSS 
sitemap