Communications Blockset | ![]() |
Punctured Convolutional Coding Demo
The complexity of a Viterbi decoder increases rapidly with the code rate. Puncturing is a technique that allows the encoding and decoding of higher rate codes using standard rate 1/2 encoders and decoders. This example demonstrates how to use the new Convolutional Encoder and Viterbi Decoder blocks to simulate a punctured coding system.
The example is quite similar to the one that appears in Fig. 1-1 of Getting Started with the Communications Blockset, which demonstrates convolutional coding without puncturing. You may want to refer to that example to learn about its components in greater depth. The present example, shown below, contains two new blocks related to puncturing: the Puncture block and the Insert Zero block.
To open the demo, type tstconvcod
at the MATLAB prompt (or click here if you are reading this in the MATLAB Help browser).
The Simulink block diagram constructed for this example contains eight blocks from the libraries of the Communications Toolbox.
Communications Blockset Block |
Purpose in Example |
Bernoulli Random Binary Generator |
Create random bits to use as message. |
Convolutional Encoder |
Encode message using the convolutional coding technique. |
Puncture |
Remove bits from the output of the Convolutional Encoder. |
BPSK Modulator Baseband |
Modulate encoded message to prepare for transmission. |
AWGN Channel |
Transmit data, adding random numbers to simulate a noisy channel. |
Insert Zero |
Insert zeros to substitute for bits removed by the Puncture block. |
Viterbi Decoder |
Decode the convolutional code using the Viterbi algorithm. |
Error Rate Calculation |
Compute the proportion of discrepancies between original and recovered messages. |
You can get detailed information on each of these blocks by clicking on the name of the block above.
The model also contains a Stop Simulation subsytem, which ends the simulation once a specified number of errors are observed or when a preset number of bits are processed. This subsystem was constructed for the demo and is not part of any library.
Random Source Generation | ![]() |