0% found this document useful (0 votes)
169 views

Convolution Encoder

Lattice's convolutional encoder core is a parameterizable core for Convolutional Encoding of a continuous input data stream. The core supports variable code rates, constraint lengths and generator polynomials. Puncturing enables a large range of transmission rates and reduces the bandwidth requirement on the channel.

Uploaded by

Jeevith Paul
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
169 views

Convolution Encoder

Lattice's convolutional encoder core is a parameterizable core for Convolutional Encoding of a continuous input data stream. The core supports variable code rates, constraint lengths and generator polynomials. Puncturing enables a large range of transmission rates and reduces the bandwidth requirement on the channel.

Uploaded by

Jeevith Paul
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Convolution encoder 2011

Introduction
Lattices Convolutional Encoder core is a parameterizable core for convolutional encoding of a continuous input data stream. The core allows variable code rates, constraint lengths and generator polynomials. The core also supports puncturing. Puncturing enables a large range of transmission rates and reduces the bandwidth requirement on the channel. The architectural details of the core are given in the Convolutional Encoder Core Description section.

Convolutional Encoder Basics


Figure 1 shows a digital transmit-receive system using the convolutional encoder. The digital data stream (such as voice, image or any packetized data) is first convolutionally encoded, then modulated and finally transmitted through a channel. The noise block in Figure 1 represents channel noise added to the channel. The data received from the channel at the receiver side is first demodulated and then decoded using a Viterbi decoder. The decoded output is equivalent to the original transmitted data stream. Figure 1. Digital Transmit-Receive System

Convolutional Coding
Convolutional encoding is a process of adding redundancy to a signal stream. Figure 2 shows an example of 1/2 rate convolutional encoding. Figure 2. Convolutional Encoding

Convolution encoder 2011


In this example, each input symbol has two corresponding output symbols, hence the encoding is called 1/2 rate convolutional encoding. To generate the output, the encoder uses three values of the input signal, one present and two past. The set of past values of input data is called a state. The number of input data values used to generate the code is called the constraint length. In this case, the constraint length is three. Each set of outputs is generated by XORing a pattern of current and shifted values of input data. The patterns used to generate the coded output value can be expressed as binary strings called generator polynomials (GP). In this example, the generator polynomials are 111 and 101. The MSB of the GP corresponds to the input; the LSBs of the generator polynomial correspond to the state as shown in Figure 2. A bit value of 1 in the generator polynomial represents a used XOR bit and a value of 0 signifies an unused bit.

Punctured Codes and Depuncturing


After convolutional encoding, some of the encoded symbols can be selectively removed before transmission. This process, called puncturing, is a data compression method used to reduce the number of bits transmitted. Figure 3 shows an example of puncturing. Figure 3. Puncturing Process

If puncturing is employed in the encoder, the decoder will have to de puncture the data before decoding. De puncturing is done by inserting NULL symbols for the punctured symbols. NULL symbols are equidistant from either 0 or 1.

Convolutional Encoder Core Description


Internal Architecture
Figure 4 shows the modules of the Convolutional Encoder and their interconnectivity. A brief description of the modules follows.

Convolution encoder 2011


Figure 4. Convolutional Encoder Internal Architecture

Encoder This module takes input data and performs convolutional encoding. The encoder uses generator polynomials configured by the user. When punctured encoding is enabled, the encoder performs 1/2 rate encoding irrespective of the encoder rate. The puncture unit will use the 1/2 rate code to generate the appropriate user-programmed rate. Puncture Unit This unit performs data puncturing, as previously explained. The input is a two channel data stream and the output is always a one channel output. The unit is capable of performing puncturing of any block size and any rate. Control Unit The control unit generates the handshake signals dout_valid, rfi and pd_start using din_valid and the status of the decoder. It also generates various control signals required by the encoder and puncture unit. Signal Descriptions The top-level representation of the Convolutional Encoder is shown in Figure 5. Table 1 contains the signal descriptions.Timing diagrams for the signals are shown in the Timing Diagrams section.

Convolution encoder 2011


Figure 5. Convolutional Encoder Top Level Block Diagram

Interfacing the Convolutional Encoder Core


The puncturing-enabled convolutional encoder is a multi-rate system, with the output rate greater than the input rate. The actual output data rate is dependent on the puncturing rate. The data rate mismatch between input and output is addressed by the output signal rfi (ready for input). The driving system should not apply an input to the encoder if the rfi output is low (if this is done, the data will be ignored until rfi is high). When valid data is applied at the input din, input din_valid must be asserted high. Even if the rfi output is high, the driving system can black-out the input by pulling din_valid low. The core will optimize throughput by utilizing any user asserted black-out cycles as wait cycles used for data-rate matching. The output signal pd_start is asserted high to coincide with the start of a punctured block. This signal can be used to synchronize the Viterbi decoder when decoding the encoded stream. The output control signal dout_valid is high whenever the output is valid. This can be used as an enable signal to latch the output to a memory.

Convolution encoder 2011


Convolutional Encoder Configuration Options
Configurable Parameters The following core parameters give the user the capability to tailor the core to realize different Convolutional Encoder configurations. These parameters can be configured through the GUI dialog box in IPexpress. Constraint Length: This defines the constraint register length. The value can be any integer from 3 to 12. Input Rate: This defines the input symbol rate for the encoder. The input rate for non-punctured codes is always 1. For punctured codes, the input rate can be any value from 2 to 12. Output Rate: This defines the output symbol rate for the encoder. The output rate for non-punctured codes can be any value between from 2 to 8. For punctured codes, the output rate can be any value from 3 to 23 (k +1 to 2 k -1, where k is the input rate). Generator Polynomials: GP0, GP1, GP2, GP3, GP4, GP5, GP6 and GP7 are generator polynomials. For non punctured encoders, the number of generator polynomials is always equal to the output rate. For punctured encoders, the number of generator polynomials is 2. Punctured Data Support: The encoder supports punctured or non-punctured data. For punctured data, the block size (punctured block size) is equal to the input rate. The two puncture patterns PP0 and PP1 can be defined by the user. The total number of 1s in both puncture patterns must equal the output rate.

Convolution encoder 2011

Generic Core Configurations

Table 2 shows the description of core configurations available in the standard evaluation package. Table 2. Core Configurations

Timing Diagrams

Convolution encoder 2011


The top-level timing diagrams for various configurations are shown in Figure 6

You might also like