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.

Help on Viterbi decoding implementation in DSP

Status
Not open for further replies.

ruwan2

Member level 5
Member level 5
Joined
Nov 29, 2011
Messages
90
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Visit site
Activity points
2,141
Hi,
I once simulated Viterbi decoder (I programmed the code, not Matlab function or block) with Matlab without any problem. Now I implement Viterbi decoder in TI DSP with fixed point short date type. I have puzzled with the integer wrapped problem. I think I have some incorrect understanding on the implementation. TI has a DSP pdf application note talking about Viterbi decoder (There are some other open sources with similar ideas). The initial path metrics are 0 for state 0 and 8000h (-32768) for all other states. I use (133,171) convolutional code. The first butterfly is:

old states 00 new states
state 0 -------------- state 0
(0) \ /
11\ 11/
\
/ \
/ \
state 1 ---------------state 32
(-32768) 00

The above is described in TI application note: spra776a.pdf.

I assume 4 bits soft decision with range -8......7. For simplicity, I assume antipodal code: 0=====>7, 1=====>-7
In this case, SUM=14 for 00, then -SUM=-14 for 11.


old states 00 new states
state 0 -------------- state 0
(0) /
11/
/
/
/
state 1
(-32768)

If I discard the '-' sign in the original metric calculation, then it looks for the maximum metric. This seems that for the above butterfly works. That is, metric 14 is selected for 00.

The problem is for other metrics which have default metrics to '8000h'. If one of the metric (for add) is '800Eh', the other metric will be wrapped to '7FF2H' which is a very large positive number. This is a disaster to the implementation. In matlab, there is a similar default for the metrics. I.e. state 0 is '0' while other metrics are the lowest negative numbers. But there is no such overflow problem as in the fixed point case (16 bit integer in above). I do think that '0' and '8000H' are correct, but I do not know what else I am wrong with it. Could you explain it to me?


Thanks a lot.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top