Documentation

lteULSCHDeinterleave

UL-SCH deinterleaving

Syntax

  • [cdata,ccqi,cri,cack] = lteULSCHDeinterleave(ue,chs,in)
    example

Description

example

[cdata,ccqi,cri,cack] = lteULSCHDeinterleave(ue,chs,in) returns the deinterleaved data vector cdata, encoded UCI vectors, ccqi,cri, and cack, or cell array of vectors, after performing the demultiplexing and UL-SCH channel deinterleaving to undo the processing described in TS 36.212, Sections 5.2.2.7 and 5.2.2.8 [1] for UE-specific settings, ue, and UL-SCH channel specific configuration, chs.

The function expects the input in to be multiplexed and interleaved as per 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, deinterleaved and demultiplexed separately, and the outputs are of the same form. The size of the coded CQI symbols and codeword number with it is multiplexed, to correctly perform the demultiplexing, are deduced using the channel specific structure chs via the Modulation and QdCQI parameters. The presence or absence of ccqi in the transmission is signaled via QdCQI parameter with nonzero (number of coded CQI symbols) or zero value, respectively.

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.

Examples

collapse all

Interleave and Deinterleave UL-SCH

Perform back-to-back interleaving and deinterleaving of a vector of interleaver input bit indices.

Create UE-specific and propagation channel configuration structures.

ue.CyclicPrefixUL = 'Normal';
ue.Shortened = 0;
chs.Modulation = 'QPSK';
chs.NLayers = 1;
chs.QdCQI = 0;
chs.QdRI = 0;
chs.QdACK = 0;

There are 288 PUSCH QPSK symbols in two RBs and two bits per symbol for QPSK.

cdata = randi([0 1],2*288,1);
size(cdata)
interleaved = lteULSCHInterleave(ue,chs,cdata);
deinterleaved = lteULSCHDeinterleave(ue,chs,interleaved);
size(deinterleaved)
ans =

   576     1


ans =

   576     1

The deinterleaved output is the same size as the data prior to interleaving.

Input Arguments

collapse all

ue — UE-specific settingsstructure

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

CyclicPrefixUL — Cyclic prefix length'Normal' (default) | optional | 'Extended'

Cyclic prefix length, specified as a string. Optional.

Data Types: char

Shortened — Shorten subframe flag0 (default) | optional | 1

Shorten subframe flag, specified as 0 or 1. Optional. 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 | double

Data Types: struct

chs — UL-SCH related parametersstructure

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

Modulation — Modulation format'QPSK' | '16QAM' | '64QAM' | string | cell array of strings

Modulation format. Specified as a string or cell array of strings.

Data Types: char

NLayers — Number of transmission layers1 (default) | optional | 2 | 3 | 4

Number of transmission layers, total or per codeword, specified as a positive scalar integer. Optional.

Data Types: double

QdCQI — Number of coded symbols for CQI0 (default) | optional | nonnegative scalar integer

Number of coded symbols for CQI, specified as a nonnegative scalar integer. Optional. (Q'_CQI)

Data Types: double

QdRI — Number of coded symbols for RI0 (default) | optional | nonnegative scalar integer

Number of coded symbols for RI, specified as a nonnegative scalar integer. Optional. (Q'_RI)

Data Types: double

QdACK — Number of coded symbols for ACK/NACK0 (default) | optional | nonnegative scalar integer

Number of coded symbols for ACK/NACK, specified as a nonnegative scalar integer. Optional. (Q'_ACK)

Data Types: double

Data Types: struct

in — Input datacolumn vector | cell array of column vectors

Input data specified as a column vector or a cell array of column vectors.

Data Types: double | cell

Output Arguments

collapse all

cdata — Deinterleaved datacolumn vector | cell array of column vectors

Deinterleaved data, returned as a column vector or cell array of column vectors.

Data Types: double | cell

ccqi — Encoded UCIvector | cell array of vectors

Encoded UCI, returned as a vector or cell array of vectors.

Data Types: double | cell

cri — Encoded UCIvector | cell array of vectors

Encoded UCI, returned as a vector or cell array of vectors.

Data Types: double | cell

cack — Encoded UCIvector | cell array of vectors

Encoded UCI, returned as a vector or cell array of vectors.

Data Types: double | cell

References

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

Introduced in R2014a

Was this topic helpful?