I have been able to successfully decode CCSDS punctured convolutional codes in GNU Radio. However, the decoding process has involved some peculiar characteristics that I would like to understand more.
First of all, the CCSDS puncture matrices are shown in the figure below.
The puncture/depuncture blocks in GNU Radio expects a puncture pattern and a puncture size, shown in the table below for the different rates.
At the beginning, the flowgraph was not able to decode the convolutionally encoded bitstream, until I delay the bitstream (circled in RED). The delay values that work for the respective puncture rates are shown on the right-most column of the table above. The delay values show some periodicity, which for some reason turns out to be the denominator of the puncture rate e.g. for rate 2/3, the delay values; 2,5,8,11,14; have a period of 3, which is denom(2/3). The same conclusion can be followed for all the other rates.
I would like to understand why does this happen. Why dont the depuncturer/cc_decoder just work without the delay?
Regards,
M.