# 3.2.5. Interleaver parameters¶

The interleaving process is frequent in coding schemes. It can be found directly in the code definition (for instance in Turbo or Turbo Product codes) or in larger schemes like for the turbo demodulation in the receiver (see the iterative BER/FER chain in Fig. 3.5).

## 3.2.5.1. --itl-type¶

Type: text CCSDS COL_ROW DVB-RCS1 DVB-RCS2 GOLDEN LTE NO RANDOM RAND_COL ROW_COL USER RANDOM --itl-type RANDOM

Select the interleaver type.

Description of the allowed values:

Value Description
NO Disable the interleaving process: the output is the input (Fig. 3.8).
COL_ROW Fill the interleaver by column, read it by row (can be customized with the --itl-read-order parameter) (Fig. 3.9).
ROW_COL Fill the interleaver by row, read it by column (can be customized with the --itl-read-order parameter) (Fig. 3.10).
RANDOM Generate a random sequence for the entire frame (based on the MT 19937 PRNG [MN98]) (Fig. 3.11).
RAND_COL Generate multiple random sequences decomposed in independent columns (based on the MT 19937 PRNG [MN98]) (Fig. 3.12).
GOLDEN Select the interleaver described in [CLGH99].
CCSDS Select the interleaver defined in the CCSDS standard.
LTE Select the interleaver defined in the LTE standard.
DVB-RCS1 Select the interleaver defined in the DVB-RCS1 standard.
DVB-RCS2 Select the interleaver defined in the DVB-RCS2 standard.
USER Select the interleaver sequence (LUT) from an external file (to use with the --itl-path parameter) (Fig. 3.13).

Fig. 3.8 Interleaver NO.

Fig. 3.9 Interleaver COL_ROW.

Fig. 3.10 Interleaver ROW_COL.

Fig. 3.11 Interleaver RANDOM.

Fig. 3.12 Interleaver RAND_COL.

Fig. 3.13 Interleaver USER.

## 3.2.5.2. --itl-cols¶

Type: integer 4 --itl-cols 1

Specify the number of columns used for the RAND_COL, ROW_COL or COL_ROW interleavers.

## 3.2.5.3. --itl-path¶

Type: file read only --itl-path conf/itl/GSM-LDPC_4224.itl

Set the file path to the interleaver LUT (to use with the USER interleaver).

An ASCII file is expected:

# the number of LUTs contained in the file (only one LUT here)
1

# the frame size 'N'
16

# the LUT definition (here the frame is reversed, 0 becomes 15, 1 becomes 14, etc.)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


If there is more than one interleaved sequence then for each new frame a new LUT is used in the natural order given by the file. Here is an example with two LUTs:

# the number of LUTs contained in this file
2

# the frame size 'N'
16

# first and second LUTs definition
15 14 13 12 11 10 9 8  7  6  5  4  3  2 1 0
7  6  5  4  3  2 1 0 15 14 13 12 11 10 9 8


Note

When the number of simulated frames exceeds the number of LUT contained in the files, the LUTs from the beginning of the file are reused and this is repeated until the end of the simulation.

## 3.2.5.4. --itl-read-order¶

Type: text BOTTOM_LEFT BOTTOM_RIGHT TOP_LEFT TOP_RIGHT --itl-read-order BOTTOM_LEFT

Change the read order of the COL_ROW and ROW_COL interleavers.

The read starts from the given corner of the array to the diagonally opposite one. The read is made row by row for the COL_ROW interleaver and column by column for the ROW_COL one.

Value Description
TOP_LEFT Read is down from the top left corner to the bottom right corner.
TOP_RIGHT Read is down from the top right corner to the bottom left corner.
BOTTOM_LEFT Read is down from the bottom left corner to the top right corner.
BOTTOM_RIGHT Read is down from the bottom right corner to the top left corner.

Fig. 3.14 depicts the read order options on the COL_ROW interleaver.

Fig. 3.14 Interleaver COL_ROW read orders.

Fig. 3.15 depicts the read order options on the ROW_COL interleaver.

Fig. 3.15 Interleaver ROW_COL read orders.

## 3.2.5.5. --itl-seed¶

Type: integer 0 --itl-seed 48

Select the seed used to initialize the PRNG.

All the threads/nodes have the same seed (except if a uniform interleaver is used, see the --itl-uni parameter).

Note

This parameter has no effect if the selected interleaver is not randomly generated.

## 3.2.5.6. --itl-uni¶

Enable to generate a new LUT for each new frame (i.e. uniform interleaver).

By default, if this parameter is not used, the random interleavers generate the LUT only once for the whole simulation.

Note

This parameter has no effect if the selected interleaver is not randomly generated.

## 3.2.5.7. References¶

 [CLGH99] S. Crozier, J. Lodge, P. Guinand, and A. Hunt. Performance of turbo codes with relative prime and golden interleaving strategies. In International Mobile Satellite Conference (IMSC), 268–275. 1999. URL: https://www.tib.eu/en/search/id/BLCP%3ACN033129464/Performance-of-Turbo-Codes-with-Relative-Prime/.
 [MN98] (1, 2) M. Matsumoto and T. Nishimura. Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Transactions on Modeling and Computer Simulation (TOMACS), 8(1):3–30, 1998. doi:10.1145/272991.272995.