MATLAB: How to compute the delay applied to the Delay block inside the viterbi decoder subsystem in the demo “dvbt_sim.mdl” in Communications Blockset 3.3 (R2006a)

alignalign-signalsboundarycommunications blocksetdelayfind-delayframeinterleavelatencyviterbi

In "dvbt_sim.mdl", there is viterbi decoder subsystem. Inside this subsystem there is a Delay block which is set to "584+69". How is this delay value determined?

Best Answer

The total delay being introduced in the Inner Interleaver and the Inner Deinterleaver subsystems due to the Buffer blocks is :-
2176-to-756 = 756 (in single-tasking mode)
756-to-9072 = 9072
9072-to-756 = 0 (as 756*12=9072)
756-to-2176 = 2176
which totals 12004.
We then take mod(12004,2176) where 2176 is the input to the Viterbi Decoder, this gives us 1124. For 4/3 decoding, this is a total delay of 1124*3/4 = 843 samples.
With a traceback depth of 136, the Viterbi decoder also adds a further delay of 136, bringing the total delay to 843+136 = 979.
Now to align the actual codewords before feeding into the Convolutional Deinterleaver we have to add in an extra delay of 1632-979 = 653 samples.
Note that the “584+69” is an artifact of an earlier version of the demo.
Related Question