Channel Interleaver

The channel interleaver is used by rate matcher of Polar codec after bit Selection. Its a triangular interleaver which creates a isosceles triangular buffer and insert data into this buffer row-wise and reads it column wise. This interleaver is include in 5G only for uplink channels to improve the performance of Polar codes for higher order QAM constellations.

Important

Channel Interleaver improves the coding performance of Polar codec for higher order QAM constellation in uplink..

Note

In 5G, Channel Interleaver is used in uplink (PUSCH and PUCCH) only.

Channel Interleaver

The details about the implementation, usage and application interface is provided in following sections.

class toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver[source]

This module implements the channel interleaver used by rate matcher of Polar codec detailed in section 5.4.1.3 of [3GPPTS38212Polar]. This module is enabled in 5G by setting \(\text{I}_\text{BIL}\) flag.

Parameters:

None

Input:

input_bits ([…,E], np.number) – Input bits to be interleaved.

Output:

[…,E], np.number – Interleaver bits.

Attributes:

interleavePattern ([E, 1], int where E is the number of bits passed as inputs for interleaving.) – Defines the Interleaving pattern as defined in section 5.4.1.3 of [3GPPTS38212Polar].

Raises:

ValueError – “[Error-ChannelInterleaver]: ‘input_bits’ should be NumPy array of numbers!”

Channel De-interleaver

The details about the implementation, usage and application interface is provided in following sections.

class toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver[source]

This module implements the channel De-interleaver which is used to undo the effect of channel interleaver defined in section 5.4.1.3 of [3GPPTS38212Polar]. This module is enabled in 5G by setting \(\text{I}_\text{BIL}\) flag.

Parameters:

None

Input:

input_bits ([…,E], np.number) – Input bits to be de-interleaved.

Output:

[…,E], np.number – De-interleaver bits.

Attributes:

interleavePattern ([E, 1], int where E is the number of bits passed as inputs for de-interleaving.) – Defines the Interleaving pattern as defined in section 5.4.1.3 of [3GPPTS38212Polar].

Raises:

ValueError – “[Error-ChannelDeInterleaver]: ‘input_bits’ should be NumPy array of numbers!”