Now I face a problem about the traceback depth of viterbi decoder.
For an example, the convolutional code with coding rate 5/8(the mother
rate is 1/3, puncture vector is [1 0 1 1 0 0 1 0 1 0 0 1 1 0 1]),
constraint length K=7. I use the Bernoulli Binary Generator as the signal
source to generate a column vector with the size 125*1(frame_based), after
the 5/8 encoder, the output vector is 200*1(frame based). Then I use matrix
interleaver(a component in simulink), first it is a 100*3 matrix
interleaver, the following matrix interleaver is 10*10. After the data
pass through the matrix deinterleaver(first is 10*10 matrix deinterleaver,
the second is 100*3 matrix deinterleaver), the data will go into the
viterbi decoder(actually in the front of the viterbi decoder, there is a
component to insert bits versus the puncture using the same puncture
vector), the traceback depth of the viterbi decoder is 34 with the trellis
structure [133 145 175](actually I don't know why it chooses the number 34
as the traceback depth). If I simulate this system, the result is good,
the bit error rate is 0 (the signal from Bernoulli Binary Generator versus
the signal from the viterbi decoder).
But when I change the puncture vector as [1 0 0 1 0 1 0 0 1], the
coding rate is also changed into 3/4, the output of Bernoulli Binary
Generator becomes 150*1 vector too. The signal from the Bernoulli Binary
Generator through the 3/4 encoder is also 200*1 vector. Then the data will
go through the matrix interleaver and matrix deinterleaver. Here the first
matrix interleaver is 200*3, the second one is 20*10, then the first
matrix deinterleaver is 20*3, the second is 200*3. the signal from the
matrix deinterleaver will pass the viterbi decoder with the same traceback
depth 34. But the problem is coming, the bit error rate is around 50%, it
is the random error rate. I don't know why.
Is the problem from the viterbi decoder or other part? But I think the
problem is from the viterbi decoder, because when I delete the encoder and
viterbi decoder, just leave the matrix interleaver and deinterleaver, the
bit error rate is 0. Do I need to change the traceback depth or other
parameters? I am very good at using simulink.
Please help me! Thank you very much!