# Viterbi decoding of Punctured Convolutional Codes

Is Viterbi decoding of Punctured Convolutional Codes the same as that of Convolutional Codes?

I wrote code for viterbi decoding of Convolutional Codes (with rate 1/2) but I want to make a 4/7-rate Punctured Convolutional Codes from this. Encoding is just puncturing unnecessary bits, but how is the decoding?

• Decoding is very easy. Essentially it is the same as the usual Viterbi. You use the trellis of the original convolutional code. You simply treat the punctured bits as unknown (=erased) bits that are at Hamming distance 1/2 from both $0$ and $1$. Or if your channel model is AWGN as opposed to BSC, then you should treat the punctured bits as being at the midpoint between $0=+1$ and $1=-1$ (or whatever signal levels they were mapped to). If you use LLRs, then the log-likelihood ratio of a puunctured bit should be set to zero reflecting complete uncertainty. – Jyrki Lahtonen Dec 29 '13 at 17:14
• So if you were doing hard-decision decoding, then you need to change the data type of path penalties to allow half-integer values. That's all. – Jyrki Lahtonen Dec 29 '13 at 17:15
• @JyrkiLahtonen Thanks. I tried to ignore punctured bits in calculating the metric for the branch. Is it correct? – Mahdi Khosravi Dec 29 '13 at 18:37
• That also works. I just realized that it may be simpler to treat the punctured bits as something that is at Hamming distance zero from both $0$ and $1$. – Jyrki Lahtonen Dec 29 '13 at 19:17