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.

matlab code for hard versus soft decision decoding?

Status
Not open for further replies.

bee

Full Member level 2
Full Member level 2
Joined
Nov 29, 2003
Messages
135
Helped
7
Reputation
14
Reaction score
5
Trophy points
1,298
Activity points
883
soft viterbi

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?
 

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.
 

soft viterbi decoder

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

soft modulation demapping

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.
 

viterbi soft 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.
 

soft decoding viterbi

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

manhattan distance for soft decision

Hi

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

Salam
Hossam Alzomor
www(.)i-g(.)org
 

soft modulation qam

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.....
 

algoritmo de viterbi soft decoding

can i have any solved example of viterbi soft decoding?

tx
 

matlab code viterbi soft 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..
 

viberti viterbi

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

Thanks
 

soft input viterbi decoder vhdl

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.
 

viterbi soft and hard

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.
 

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.
 

5/6 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
 

viterbi decoder(5/6)

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
 
phil karn viterbi decoder

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..
 

soft decision viterbi 8 bit

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.
 

soft viterbi with complex signals

does anyone have a matlab code for viterbi decoder
thanks
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top