the UL-SCH channel interleaving on input
out = lteULSCHInterleave(
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 126.96.36.199 and 188.8.131.52 . 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
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
as above except it also supports UL-SCH channel interleaving on both
out = lteULSCHInterleave(
encoded UCI in
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.
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');
ue — UE-specific settings
UE-specific settings, specified as a structure with the following fields.
CyclicPrefixUL — Cyclic prefix length
'Normal' (default) | optional |
Cyclic prefix length, specified as
Shortened — Shorten subframe
0 (default) | optional | 1
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.
chs — UL-SCH related parameters
UL-SCH related parameters, specified as a scalar structure with the following fields.
Modulation — Modulation format
'256QAM' | cell array of these character vectors. | string array
Modulation format, specified as
'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.
NLayers — Number of transmission layers (total or per codeword)
1 (default) | optional | 2 | 3 | 4
Number of transmission layers (total or per codeword), specified as 1, 2, 3, or 4.
cdata — Encoded TrCH data
column vector | cell array of column vectors
Encoded TrCH data, specified as a column vector or a cell array of column vectors.
ccqi — Encoded CQI
Encoded CQI, specified as a vector.
cri — Encoded RI
Encoded RI, specified as a vector.
cack — Encoded ACK
Encoded ACK, specified as a vector.
out — Interleaved UL-SCH output
numeric column vector | cell array of numeric column vectors
Interleaved UL-SCH output, returned as a numeric column vector or a cell array of numeric column vectors.
 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.