Communications Blockset | ![]() ![]() |
Puncturing
The Puncture block, in the Sequence Operations sublibrary of the Basic Comm Functions library, carries out the puncturing. The Puncture block periodically removes bits from the encoded bit stream, thereby increasing the code rate.
The puncture pattern is specified by the Puncture vector parameter in the mask. The puncture vector is a binary column vector. A one indicates that the bit in the corresponding position of the input vector is sent to the output vector, while a zero indicates that the bit is removed.
For example, to create a rate 3/4 code from the rate 1/2, constraint length 7 convolutional code, the optimal puncture vector is [1 1 0 1 1 0].'
(where the .'
after the vector indicates the transpose). Bits in positions 1, 2, 4 and 5 will be transmitted, while bits in positions 3 and 6 will be removed. Now, for every 3 bits of input, the punctured code will generate 4 bits of output (as opposed to the 6 bits produced before punturing). This makes the rate 3/4.
You can enter the Puncture vector parameter into the mask as shown below.
Note In frame-based processing, the length of the puncture vector must divide the length of the input frame. |
In this example, the output from the Bernoulli Random Binary Generator is a column vector of length 3. Since the rate 1/2 Convolutional Encoder doubles the length of each vector, the input to the Puncture block is a vector of length 6. Therefore the length of the puncture vector must divide 6.
To keep track of the lengths of the output vectors from each block, you can select Signal dimensions from the Format menu in the model window. This will display the lengths of the vectors above the arrows in the model window.
Modulation
Binary phase shift keying (BPSK) modulation is simulated using the BPSK Modulator Baseband block. See Modulating the Encoded Messages for details.
![]() | Convolutional Encoding | Signal Transmission | ![]() |