hi ,
puncturing is done for increasing the bit rate.
convolutional encoder introduces redundancy of 2-3x bits per each bit.. puncturing removes some redundancy to increase the TX bit rate. Depuncuring introduces just dummy bits, 1 or 0 doesnt matter. viterbi decoder shud recover the the data from the depunctured data
Puncting coudl be for meeting a special requirement for physical layer. For example, if a frame is fixed at 192 bits, the source rate is 144 bits, a punctured covolutional coder could be used to the requirement.
Puncturing increases the code rate. So you can reduce further the redundant information.
Depuncturing block always inserts 0s. Decoder has the ability to decode to decode with those many reduced bits. Refer to Viterbi decoder for more info.
Puncturing uses a puncturing vector which is a sequence of 0's and 1's.
For 0, the corresponding bit shall be taken out and shall not be transmitted;
For 1, the corresponding bit shall be retained in the sub-block and shall be transmitted.