Main Content

lteULSCHInterleave

UL-SCH interleaving

Description

out = lteULSCHInterleave(ue,chs,cdata) performs the UL-SCH channel interleaving on input cdata containing encoded transport channel (TrCH) data without UCI. It performs the UL-SCH data and UCI multiplexing and interleaving as defined in TS 36.212 Sections 5.2.2.7 and 5.2.2.8 [1]. This input can be a vector or a cell array of vectors, interleaved separately, and the output is of the same form.

Multiple codewords can be parameterized by two different forms of the chs structure. Each codeword can be defined by separate elements of a 1-by-2 structure array, or the codeword parameters can be combined together in the fields of a single scalar, or 1-by-1, structure. Any scalar field values apply to both codewords and a scalar NLayers is the total number. See UL-SCH Parameterization for more details.

example

out = lteULSCHInterleave(ue,chs,cdata,ccqi,cri,cack) is as above except it also supports UL-SCH channel interleaving on both cdata and encoded UCI in ccqi, cri and cack. If any of these inputs are cell arrays, the output has the same form and any vector inputs are interleaved into the first cell of the output only. Any of the input cells or arrays can be empty if the associated input is not transmitted on one or more codewords.

Examples

collapse all

Interleave two PUSCH RBs worth of bits for QPSK modulation. Considering the REs reserved for PUSCH DM-RS, there are 144 REs available for PUSCH data per RB. Therefore, two RBs contain 288 PUSCH symbols. This results in 2*288 bits to QPSK modulate after interleaving.

Initialize UE specific and UL-SCH related parameter structures. Generate data for QPSK modulation of PUSCH symbols in two RBs. For QPSK, there are two bits per symbol. Perform interleaving and symbol modulation.

ue.CyclicPrefixUL = 'Normal';
ue.Shortened = 0;
chs.Modulation = 'QPSK';
chs.NLayers = 1;
numRB = 2;
numREperRB = 144;
bitsPerSymbol = 2;
numBits = numRB * numREperRB * bitsPerSymbol;
cdata = randi([0 1], numBits, 1);
interleaved = lteULSCHInterleave(ue, chs, cdata);
symbols = lteSymbolModulate(interleaved, 'QPSK');

Input Arguments

collapse all

UE-specific settings, specified as a structure with the following fields.

Cyclic prefix length, specified as 'Normal' or 'Extended'.

Data Types: char | string

Shorten subframe, specified as 0 or 1. If 1, the last symbol of the subframe is not used. It should be set if the current subframe contains a possible SRS transmission.

Data Types: logical

Data Types: struct

UL-SCH related parameters, specified as a scalar structure with the following fields.

Modulation format, specified as 'QPSK', '16QAM', '64QAM', or '256QAM'. Use double quotes for string. It there are two blocks, use a cell array of character vectors or a string array. Each element of the arrays is associated with a transport block.

Data Types: char | string

Number of transmission layers (total or per codeword), specified as 1, 2, 3, or 4.

Data Types: double

Data Types: struct

Encoded TrCH data, specified as a column vector or a cell array of column vectors.

Data Types: double | cell

Encoded CQI, specified as a vector.

Data Types: double

Encoded RI, specified as a vector.

Data Types: double

Encoded ACK, specified as a vector.

Data Types: double

Output Arguments

collapse all

Interleaved UL-SCH output, returned as a numeric column vector or a cell array of numeric column vectors.

Data Types: double | cell

References

[1] 3GPP TS 36.212. “Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.

Version History

Introduced in R2014a