FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6365 Discussions

Viterbi Megacore 8.0: functionality questions

Altera_Forum
Honored Contributor II
936 Views

Hello Alteraforum, 

 

We are planning to use the Altera Viterbi Megacore 8.0 in one of our designs, which will be made with DSP Builder 8.0 / Matlab 2008a.  

In order to learn how the Altera VA works, I have created a VA (hybrid mode, no BER option) with two codes, namely (171, 133) and (5, 7) in octal notation. Hence, the (maximum) constraint length is L=7. 

Here are some things that I am still unsure about after reading the Viterbi Compiler User Guide: 

 

- From the User Guide, I understand that I have to use the inputs bm_init_state and bm_init_value to determine the initial state of the trellis, and that I also have to set the final trellis state with tr_init_state. Is this correct? 

 

- About bm_init_value, the user guide says that it initializes the metric of the state given by bm_init_state, while all other states metrics are initialized with zero. As far as I can see, that enables me to add an offset to the metric of all paths originating from the desired initial state, so that they will always 'survive', while paths from any other initial state will 'die'. However, in order to use the decoder like that, I would just need to set bm_init_value to a constant value. So what's the use of providing an input signal for bm_init_value? 

In other words: why would I ever want to set bm_init_value to something else than the 'appropriate value' of 2^(bmgwide-2) as given in the user guide? And why exactly is this value 'appropriate'? 

 

- According to the user guide, the bestadd output gives me the state that currently has the best metric. How does the numbering of states work? My assumption would be as follows (from the encoders point of view): My largest constraint length is L, so there are 2^(L-1) states. State zero is the all-zero state of the encoder shift register. Assuming that I start in state 0 and feed a '1' into the encoder, the next state will be 2^(L-2), as new bits are shifted into the register at the MSB. Right or wrong? 

 

I would appreciate any hints from somebody who has experience with the Viterbi Megacore. 

 

Best regards, 

Nico.
0 Kudos
0 Replies
Reply