Lattice Semiconductor Turbo Decoder User’s Guide
4
Block Diagram
Figure 2 shows a block diagram of the Turbo Decoder detailing the key components and the data paths between
these blocks.
Figure 2. Turbo Decoder Functional Block Diagram
Functional Description
The Turbo Decoder consists of four main components: control module, decoder, interleaver and memory buffers.
Control Module
The control module takes care of the interface, pipelining and handshake communication between various blocks
and I/O pins. Data and parity are read serially into the memory and it is assumed that the data is received in the
same order as it was transmitted from the encoder. Signal
blocksizeset(ipcfgset)
initializes the
blocksize
by specifying the size of the block to be input to the decoder. Input data can be given only when
rfi
is asserted.
Input data has to be qualified with
inpvalid
to be accepted by the core.
Decoder and Interleaver
Once the data is entered into the decoder, the decoder starts computing the LLR of each data symbol. The LLR is
computed for the block sequence twice, once using the non-interleaved data and the corresponding parity and then
using the interleaved data and the corresponding parity. One round of this computation is called an iteration. Each
iteration is divided into two sections, an ODD window and an EVEN window. The LLR for systematic parity is com-
puted during the ODD window and the LLR for interleaved data is computed during the EVEN window. When both
ODD and EVEN window computations are done, one iteration is complete. The user can set the number of itera-
tions for each block on the iterations pin. During the second half of the iteration, EVEN window, the LLR computed
in the first half is improved upon by using previous computations. Every window makes use of LLR information
computed in the previous window and tries to improve on the estimate of LLR. The interleaver is used in the second
half of iteration to generate the interleaved address. This address is used to address the data and parity memory to
read the interleaved data for the second half of the iteration. It is also used to address the LLR memory unit and get
the previously computed LLR information. At the end of one iteration, the decoder has a set of LLR for each input
data. The second iteration starts with again using the non-interleaved parity bits and data and the previously com-
puted LLR to get a new estimate of the LLR for the data. Once the decoder completes the number of iterations
required to be done, the LLR memory buffer has the final LLR values. The sign of the LLR values determines
whether the data is a ‘1’ or a ‘0’. A positive sign means the data value is a ‘1’, otherwise it is a ‘0’.
Memory
Data/Parity
Memory
Map
Decoder
LLR
Buffer
Data
Parity
write address
read address
Hard
Decision
Storage
(optional)
din
dout
write enable
write address
write enable
write address
write enable
Map
Decoder
Control Interleaver
LLR
Buffer
Hard
Decision
Storage
(optional)
Lattice Semiconductor Turbo Decoder User’s Guide
5
Output Data Handshaking
When the decoder is ready to output data, signal
rfo
is asserted high after the decoder has completed the speci-
fied number of iterations. The user can then assert signal
rfno
to read the decoded data, which then allows data
to be output on
dout
.
A synchronous reset signal,
sr
is available to reinitialize the Turbo Decoder in the middle of a block processing.
The current block being processed will be completely discarded during this reset. This can be done at any point of
time during the operation
Memory Buffer
The memory buffering for this IP splits into four sections. These sections are described in detail below.
Input Data/Parity Memory
The Turbo Decoder core requires a large amount of memory to store the input data block. Since data memory
requirements are large, an external memory is recommended so that on-chip memory can be used for other pur-
poses. An external memory interface is provided in the IP. A single or double buffer memory mode may be selected
depending on the available external memory at hand. Double buffer memory allows one block of data to be pro-
cessed while another block is written and read. Double buffer memory delivers better performance than the single
buffer selection by minimizing delay between the processing of each block.
Internal Memory
Some internal memory is required to implement the interleaver and other necessary functions of the Turbo
Decoder. Lattice’s Turbo Decoder requires a small amount of memory for internal purposes. For example, the
3GPP configuration uses 4.6Kb spread over four memory blocks.
LLR Memory
After the Turbo Decoder completes the required number of iterations, the LLR memory buffer stores the final LLR
values. The size of the LLR memory buffer is dependant on configuration and block size.
Hard Decision Storage Memory
The Turbo Decoder IP core offers optional hard decision storage. When LLR memory is used as an output buffer,
the decoder cannot go onto process the next block of data until current LLR values of the previous block are com-
pletely read out. This results in an extra processing delay of B cycles (B =
blocksize
). To minimize delay, output
data after hard decision can be stored in separate memory to allow the decoder to operate on a new data block if
memory can be spared.
Operational Data Flow
The following flow diagram describes the sequence for every block introduced into the Turbo Decoder core.
Lattice Semiconductor Turbo Decoder User’s Guide
6
Figure 3. Turbo Decoder Data Flow
Figure 4 shows the loading of block size and iterations for the current input block with assertion of input signal
blocksizeset(ipcfgset)
after asynchronous reset
rstn
has been de-asserted. After the reset assertion, the
Turbo Decoder asserts
rfi
to indicate that it can receive a data block. At the same time the decoder de-asserts
rfo
signal to show that there is no data available to give any hard decisions at the output.
Figure 4. Initialization and Data Input to Decoder
MAP Decoder begins operating on the data block.
Computation of LLR for each data symbol begins.
After the iterations are computed, the results of
final LLR values are available in LLR memory.
The rfo pin is asserted so the user can
read the hard decision using handshake signal.
Hard decision is available on output pin dout.
Data and parity values are placed on input bus
din and are written to input buffer.
Block size and number of iterations is specified.
Asynchronous reset initializes the core.

TURBO-DECO-E2-U3

Mfr. #:
Manufacturer:
Lattice
Description:
Development Software Turbo Decoder
Lifecycle:
New from this manufacturer.
Delivery:
DHL FedEx Ups TNT EMS
Payment:
T/T Paypal Visa MoneyGram Western Union