We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 23028

LogiCORE Viterbi Decoder - How do I calculate the latency for the Viterbi Core?


Keywords: forward, error, correction

How do I calculate the latency for the LogiCORE Viterbi Decoder in its various configurations?


You can find the equations to calculate the latency of the Viterbi Decoder in the data sheet provided by CORE Generator. The latencies given are a count of the number of symbol inputs between input data and the decoded data result output.

For the following examples, the parameters are:

Traceback length = 42
Constraint Length = 7
For Non-Punctured Cores: Output Rate = 2
For Punctured Cores:- Puncture Rate = 3/4. Therefore, punc_input_rate = 3 and punc_output_rate = 4.

Viterbi Decoder without Reduced Latency

Parallel Non-Punctured Core

Latency = 4*traceback_length+constraint_length+output_rate + 10

Latency = (4*42) + 7 + 2 + 10 = 187. Add 1 to this value when Speed Optimization is chosen.

Serial Non-Punctured

Latency = 4*traceback_length+constraint_length+4

Latency = 4*42 + 7 + 4 = 179
Please note that for the serial non-punctured core, this value is in terms of valid ND's into the core. In this case, this implies that there will be valid data on the output of the core after 179 valid data inputs.

Serial/Parallel Punctured Core

Latency = 2*punc_input_rate+4+punc_output_rate/punc_input_rate* (non-punctured latency)

Parallel Punctured example:-
Latency = (2*3) +4 + (4/3*187) = 260

External puncturing has no effect on the latency of the core.

Viterbi Decoder with Reduced Latency
Only the Parallel Core supports reduced latency.

Latency = 2*traceback_length+constraint_length+output_rate + 13

Latency = 2*42 + 7 + 2 + 13 = 106

Multi Channel Latency

The Multi Channel core always uses reduced latency.

Latency = 2*traceback_length*channel_count+(constraint_length*channel_count)+output_rate + 13

If we assume 2 channels, this becomes:
Latency = (2*42*2)+ (7*2) + 2 + 13 = 197

Trellis Mode Latency
The latency of the Trellis-Mode decoder is like the above equations but reduced by the output_rate +1 as
the branch metric costing unit is not present in the core.

For the Parallel example the latency was 187. So for trellis mode the latency is 187-(2+1) = 184.

Please see (Xilinx Answer 29448) for a detailed list of LogiCORE Viterbi Decoder Release Notes and Known Issues.

AR# 23028
Date 07/01/2008
Status Archive
Type General Article