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

Allowed values

CCSDS COL_ROW DVB-RCS1 DVB-RCS2 GOLDEN LTE NO RANDOM RAND_COL ROW_COL USER

Default

RANDOM

Examples

--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 [Itl-MN98]) (Fig. 3.11).

RAND_COL

Generate multiple random sequences decomposed in independent columns (based on the MT 19937 PRNG [Itl-MN98]) (Fig. 3.12).

GOLDEN

Select the interleaver described in [Itl-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).

../../../../_images/itl_no.svg

Fig. 3.8 Interleaver NO.

../../../../_images/itl_col_row.svg

Fig. 3.9 Interleaver COL_ROW.

../../../../_images/itl_row_col.svg

Fig. 3.10 Interleaver ROW_COL.

../../../../_images/itl_random.svg

Fig. 3.11 Interleaver RANDOM.

../../../../_images/itl_rand_col.svg

Fig. 3.12 Interleaver RAND_COL.

../../../../_images/itl_user.svg

Fig. 3.13 Interleaver USER.

3.2.5.2. --itl-cols

Type

integer

Default

4

Examples

--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

Rights

read only

Examples

--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

Allowed values

BOTTOM_LEFT BOTTOM_RIGHT TOP_LEFT TOP_RIGHT

Examples

--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.

Description of the allowed values (see also the figures just bellow):

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.

../../../../_images/itl_col_row_order.svg

Fig. 3.14 Interleaver COL_ROW read orders.

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

../../../../_images/itl_row_col_order.svg

Fig. 3.15 Interleaver ROW_COL read orders.

3.2.5.5. --itl-seed

Type

integer

Default

0

Examples

--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

Itl-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/.

Itl-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.