I have been trying to create a basic BCJR decoder for a rate (1/2) punctured turbo code. The puncturing is simple, the encoder alternatively selects between the parity bits generated by the two constituent parallel encoders.
So the transmitted signal looks something like this:
[x1 z1, x2 z2', x3 z3, x4 z4',....]
Where [x] are the systematic bits, [z] are the parity bits generated by the first encoder and [z'] are the parity bits generated by the second encoder.
At the decoding end I am "depuncturing" the received soft data by adding zeros for the unknown LLR values, like this:
[x1 z1 0, x2 0 z2', ....]
And then, feeding x and z to the first decoder and interleaved(x) and z' to the second decoder.
This setup is unfortunately not converging. The LLRs keep oscillating around zero. Is there something that I am doing wrong?