Exercise 3.8: Rate Compatible Punctured Convolutional Codes

From LNTwww

RCPC Puncturing Matrices

An important application for  "punctured convolutional codes"  are the  Rate Compatible Punctured Convolutional Codes  (or RCPC–Codes for short)proposed by  "Joachim Hagenauer"  in [Hag88]. Starting from a mother code  $\mathcal{C}_0$  with rate  $R_0 = 1/n$  other codes  $\mathcal{C}_l$  with higher code rate  $(R_l > R_0)$ are determined by different puncturing matrices  $\mathbf{P}_l$ .

On the right are the puncturing matrices to be analyzed  $\mathbf{P}_0, \hspace{0.05cm}\text{ ...} \hspace{0.05cm} , \ \mathbf{P}_4$  shown.

  • If for the matrix  $\mathbf{P}_l$  the matrix element  $P_{ij} = 1$, the corresponding codebit is transmitted, while  $P_{ij} = 0$  indicates puncturing.
  • In the questionnaire, we also use the shorter notation  $P_{ij}^{(l)}$ for the element  $P_{ij}$  of the matrix  $\mathbf{P}_l$ .

In the graph all the zeros in the matrix  $\mathbf{P}_l$  that were still ones in the matrix  $\mathbf{P}_{l–1}$  are marked in red. This measure increases the code rate  $R_{l}$  compared to  $R_{l-1}$ .

The RCPC–codes are well suited for the realization of

  • unequal error protection  for hybrid ARQ procedures,
  • systems with  incremental redundancy.

Incremental redundancy systems" means that after conventional convolutional coding, bits corresponding to the puncturing matrix  $\mathbf{P}_l$  are omitted from the codeword  $\underline{x}^{(0)}$  and the shortened codeword  $\underline{x}^{(l)}$  is transmitted:

  • If the punctured codeword cannot be correctly decoded in the receiver, the receiver requests further redundancy from the transmitter in the form of the previously punctured bits.
  • This prevents the transmission of redundancy that is not required and adapts the throughput to the channel conditions.

Joachim Hagenauer


  • The reference [Hag88] refers to the paper "Hagenauer, J.: Rate Compatible Punctured Convolutional Codes (RCPC codes) and their Applications. In: IEEE Transactions on Communications, vol COM-36, pp 389 - 400, 1988."
  • Professor  Joachim Hagenauer  was head of the Department of Communications Engineering (LNT) at the Technical University of Munich from 1993 to 2006.
  • The initiators of the learning tutorial you just used – Günter Söder and Klaus Eichin – thank their long-time boss for supporting and promoting our  $\rm LNTwww$ project during the first six years.



What statements do the given puncturing matrices provide?

The rate of the RCPC mother code is  $R_0 = 1/3$.
The puncturing period is  $p = 8$.
The memory of the RCPC code class is  $M = 4$.


Which code rates do the codes  $\mathcal{C}_1$, ... , $\mathcal{C}_4$  have?

${\rm Matrix \ P_1} \Rightarrow {\rm Code \ \mathcal{C}_1} \text{:} \hspace{0.4cm} R_1 \ = \ $

${\rm Matrix \ P_2} \Rightarrow {\rm Code \ \mathcal{C}_2} \text{:} \hspace{0.4cm}R_2 \ = \ $

${\rm Matrix \ P_3} \Rightarrow {\rm Code \ \mathcal{C}_3} \text{:} \hspace{0.4cm} R_3 \ = \ $

${\rm Matrix \ P_4} \Rightarrow {\rm Code \ \mathcal{C}_4} \text{:} \hspace{0.4cm} R_4 \ = \ $


Which statements are valid for the matrix elements $P_{ij}^{(l)}$?

From  $P_{ij}^{(l)} = 1$  follows  $P_{ij}^{(\lambda)} = 1$  for all  $\lambda < l$.
From  $P_{ij}^{(l)} = 1$  follows  $P_{ij}^{(\lambda)} = 1$  for all  $\lambda > l$.
From  $P_{ij}^{(l)} = 0$  follows  $P_{ij}^{(\lambda)} = 0$  for all  $\lambda < l$.
From  $P_{ij}^{(l)} = 0$  follows  $P_{ij}^{(\lambda)} = 0$  for all  $\lambda > l$.


(1)  Correct are solutions 1 and 2:

  • The number of rows of the puncturing matrices gives the parameter $n$ of the $(n, \ k = 1)$–RCPC mother code.
  • From this, its rate is $R_0 = 1/3$. The column number is equal to the puncturing period $p$. For the class of codes under consideration, $p = 8$.
  • In contrast, the puncturing matrices do not provide any information about the memory of the code  ⇒ 

(2)  For the rate of the code $\mathcal{C}_l = p/N_l$, where $N_l$ denotes the number of all ones in the puncturing matrix $\mathbf{P}_l$ and $p$ denotes the puncturing period. Starting from the rate $R_0 = 1/3$ of the mother code $\mathcal{C}_0$, we obtain:

  • $R_1 = 8/20 = 2/5 = \underline{0.400}$,
  • $R_2 = 8/16 = 1/2 = \underline{0.500}$,
  • $R_3 = 8/12 = 2/3 = \underline{0.667}$,
  • $R_4 = 8/9 = \underline{0.889}$.

(3)  Correct are the solutions 1 and 4:

  • All ones in the matrix $\mathbf{P}_4$ are also in the matrices $\mathbf{P}_3, \hspace{0.05cm}\text{ ...} above it. \hspace{0.05cm}, \ \mathbf{P}_0$.
  • In the matrix $\mathbf{P}_3$ three ones are added compared to $\mathbf{P}_4$, in the matrix $\mathbf{P}_2$ compared to $\mathbf{P}_3$ again four, etc.