Trellis Encoding and Modulation Mastery
Convolutional Encoder Structures
Building Convolutional Encoders
Convolutional codes add structured redundancy to a data stream, allowing a receiver to detect and correct errors. Unlike block codes, which process data in fixed-size chunks, convolutional encoders operate continuously on a stream of input bits. The core of this process is a simple digital circuit: a shift register.
Imagine a line of memory cells. As each new input bit arrives, it enters the first cell, and all existing bits shift one position down the line. The oldest bit is discarded. The encoder generates multiple output bits by performing modulo-2 addition (an XOR operation) on the input bit and the contents of specific memory cells. These connections are what define the code.
Key Encoder Parameters
Three main parameters define a convolutional encoder's structure and performance:
Code Rate (k/n): This ratio describes how many output bits () are generated for a given number of input bits (). For most common encoders, is 1, meaning one input bit produces output bits. A rate 1/2 encoder, for instance, doubles the number of bits, mapping one input bit to two output bits.
Constraint Length (K): This parameter specifies the number of shifts over which a single input bit can influence the encoder's output. It's defined as one more than the number of memory elements in the shift register. A larger Constraint Length means the encoder has more "memory" of past inputs, which generally leads to a more powerful, error-resilient code, but also increases complexity.
Generator Polynomials (g): These define the exact connections between the shift register cells and the modulo-2 adders. For a rate encoder, there are generator polynomials. Each polynomial can be expressed in binary or octal form. A '1' in a polynomial's binary representation indicates a connection from that register position to the corresponding adder.
Let's consider a popular rate 1/2 encoder with . It has two memory cells. Its generator polynomials are often given in octal as and . Let's convert these to binary to see the connections.
From Circuits to State Machines
While the shift register diagram is intuitive, a more powerful way to represent the encoder is as a (FSM). The "state" of the encoder at any given time is defined by the contents of its memory cells. For an encoder with memory elements, there are possible states.
In a state diagram, each node represents a state. Arrows between nodes show transitions. When a new bit enters the encoder, the machine transitions from its current state to a new one. The label on the arrow indicates the input bit that caused the transition and the corresponding output bits generated. For a rate 1/2 encoder, the label would be input / output1 output2.
| Current State (m1, m2) | Input Bit | Next State (m1, m2) | Output (v1, v2) |
|---|---|---|---|
| a (00) | 0 | a (00) | 00 |
| a (00) | 1 | b (10) | 11 |
| b (10) | 0 | c (01) | 10 |
| b (10) | 1 | d (11) | 01 |
| c (01) | 0 | a (00) | 11 |
| c (01) | 1 | b (10) | 00 |
| d (11) | 0 | c (01) | 01 |
| d (11) | 1 | d (11) | 10 |
This table shows the behavior of a different rate 1/2 encoder. Starting from state 'a' (00), if the input is '0', it stays in state 'a' and outputs '00'. If the input is '1', it transitions to state 'b' (10) and outputs '11'. The sequence of states and outputs depends entirely on the sequence of input bits. This structure forms the basis for (TCM), where these state transitions are combined with signal modulation to achieve highly efficient and robust communication.
One final way to characterize an encoder is by its impulse response. This is the output sequence produced when the input is a single '1' followed by an infinite stream of '0's. Because the encoder is a linear, time-invariant system, its response to any input sequence is simply the superposition of its responses to shifted impulses. The length of the impulse response is directly tied to the constraint length, eventually settling back to the all-zero output state.
Now, let's review the key concepts we've covered.
Ready to test your knowledge?
What is the primary purpose of using a convolutional code in a communication system?
If a convolutional encoder is built with a shift register containing 4 memory cells, what is its Constraint Length (K)?
Understanding these structural building blocks is the first step toward analyzing the performance of convolutional codes and mastering the decoding techniques that make them so powerful.

