Lattice Semiconductor Turbo Encoder User’s Guide
4
Table 1. Turbo Encoder Signal Definitions
User Configurable Parameters
User configurable parameters for each standard are shown below in Table 2. These parameters are configured
using IPexpress™, included with Lattice’s ispLEVER
®
design tools.
Table 2. User Configurable Parameters
Port Name I/O Type Width Signal Description
clk
Input
1 System Clock
rstn
Input
1 Active Low Asynchronous Reset
sr
Input
1 Synchronous Reset
din
Input
1 Data Input
dout
Output
1 Data Output
cfgset
Input
1 Interleaver initialization.
blocksize
on input pins is accepted when
this signal is asserted.
inpvalid
Input 1 Enables the encoder to read the data at
din
when asserted.
blocksize
Input
13-15 Block size up to 20730 bits can be set depending on the configura-
tion. Block size ranges:
3GPP: 40-5114
3GPP2: 378-20730
CCSDS: 1784, 3568, 7136, 8920
rfi
Output
1 This signal is asserted when the encoder is ready to read from
din
.
It is de-asserted one clock cycle before the last input data is read in.
rfno
Input
1 Asserted to indicate successful reading of encoded data from
dout
.
rfo
Output
1 When asserted encoded data is ready and available at
dout
.
Parameter
3GPP 3GPP2 CCSDS
Encoder Type THREE_GPP THREE_GPP2 CCSDS
Number of States 8 8 16
Forward Polynomial for Encoder 1 N/A Default: 1101 Default: 11011
Reverse Polynomial for Encoder 1 N/A Default: 1011 Default: 10011
Forward Polynomial for Encoder 2 N/A Default: 1101 Default: 11011
Reverse Polynomial for Encoder 2 N/A Default: 1011 Default: 10011
Code Rate 1/3 Range: 1/2, 1/3, 1/4
Default: 1/3
Range: 1/2, 1/3, 1/4, 1/6
Default: 1/3
Maximum Block Size Default: 5114 Range: 4096-20730
Default: 20730
Range: 1784, 3568, 7136, 8920
Default: 8920
Fixed Block Size N/A N/A Values: Yes or No
Default: No
Lattice Semiconductor Turbo Encoder User’s Guide
5
Functional Description
The Turbo Encoder functions as a slave device with respect to the input source, which applies the inputs to the
encoder, as well as the output source, which takes the encoded data from the encoder. Data is fed through two
recursive systematic convolutional (RSC) encoders. Each RSC encoder contains the same structure but operates
on two different versions of data. The first encoder operates on an original copy of data, whereas the second
encoder operates on an “interleaved” version of data. Interleaving is the method in which bits are rearranged
according to a predefined algorithm.
The Lattice Turbo Encoder IP Core consists of four different modules: Control Module, Dual Port RAM, Encoder
Module and Interleaver Module.
Control Module
The control module takes care of the handshake and control signals necessary for communication between the
various blocks and I/O pins. The block size is determined by the user and input into the control module. Signal
cfgset
enables the data on
blocksize
to be latched into the encoder. In order for a change in
blocksize
to be
recognized,
cfgset
must be asserted.
Control signals
rfi
and
rfo
are generated to indicate when the Turbo Encoder is ready to accept new data and
ready to output encoded data.
rfi
is an active high signal and is activated only when the encoder is ready to
accept data. Once
rfi
goes low,
rfo
is asserted after a fixed processing delay to output encoded data. After data
on
din
is valid, signal
inpvalid
can be asserted by the user to allow the encoder to read data.
inpvalid
should
be asserted only when
rfi
is high except for the last data to be input. In the same manner signal
rfno
should be
asserted by the user to read encoded data only when
rfo
is high.
Signal
sr
can be used to reinitialize the Turbo Encoder in the middle of a block processing. This can be done at any
point of time during the operation of the encoder. If
sr
is asserted it should be followed by an initialization of
cfg-
set
to specify the
blocksize
and start the encoding process all over again. Input signal
rstn
is an asynchro-
nous reset. This clears all the flip-flops in the design.
Dual Port RAM and Interleaver Module
The dual port RAM module stores the incoming data block. Each memory size is equal to the data block size. After
the encoder receives all the data in a block, the interleaving process begins.
The interleaver module is required to randomize the bit positions in the block. The interleaver is a mapping between
input and output bit positions and involves a predefined algorithm that changes the position of the bits. This algo-
rithm is implemented in the interleaver module. Interleaving begins once a full block of data is received and stored
into the dual port RAM. All computation needed for interleaving is completed before any data comes in. A copy of
the incoming data goes directly to the first encoder while an interleaved copy goes to the second encoder.
The Lattice Turbo Encoder IP Core has a fixed processing delay which is smaller than most competing solutions.
Once the data is received, the encoder is ready (after the fixed processing delay) to output the encoded data. The
processing delay is not dependent on the block size selected.
Encoder Module
The encoder module consists of two recursive systematic convolutional (RSC) encoders. At the output of the two
encoders is a multiplexer, which selects the output from different paths depending upon the output rate specified. If
non-standard forward and reverse feedback connections are required, they may be implemented in the encoder by
user-defined forward and reverse polynomials.
Lattice Semiconductor Turbo Encoder User’s Guide
6
Code Rate (Puncturing and Termination)
Code rate is defined as the ratio of number of data bits to the total number of bits in the output of the encoder. In
turbo codes, puncturing can increase the code rate. A puncturing pattern defines the position of parity bits to be
omitted from the encoded stream. At the decoder, knowledge of this pattern enables de-puncturing. The Turbo
Encoder IP Core supports programmable puncturing.
In turbo codes Convolutional Code Termination is used so data can be treated in a block-by-block fashion. After the
data block has been encoded special termination bits are inserted in the encoder to initialize its state to an all zero
state. During termination, output bits are appended to the data stream, and thus the “actual” code rate is slightly
less than the nominal rate. Termination bits in the output stream are not punctured in order to enable the decoder
state initialization.
Figures 3, 4 and 5 illustrate the timing specifications of the Turbo Encoder IP Core.
Figure 3 shows the Turbo Encoder signals after an asynchronous reset and a new block size input. The signal
cfgset
is asserted high when the block size information is placed on
blocksize
port. The encoder asserts
rfi
to indicate that it is ready to accept new data. Then the user places data on
din
port and also pulls
inpvalid
high
to indicate the presence of a valid data to the encoder. After the encoder receives all but one data in a block, it de-
asserts
rfi
signal. The user can only place one more new data after the encoder de-asserts
rfi
. After the
rfi
goes low, the encoder takes a fixed number of clock cycles (tagged as “processing delay” in the figure) before it can
output the encoded data. The encoder asserts
rfo
to signify the availability of encoded data at the output. The first
encoded data is then read out by the user. As the
rfno
remains high in the following cycles, the encoder continues
to output successive data.
Figure 3. Turbo Encoder After Reset and First Data Block Input
clk
rstn
sr
cfgset
blocksize
rfi
inpvalid
din
rfo
rfno
dout
processing delay

TURBO-ENCO-P2-UT3

Mfr. #:
Manufacturer:
Lattice
Description:
IP CORE TURBO ENCODER ECP2
Lifecycle:
New from this manufacturer.
Delivery:
DHL FedEx Ups TNT EMS
Payment:
T/T Paypal Visa MoneyGram Western Union