Main Content

lteRIEncode

Rank indication channel encoding

Description

out = lteRIEncode(chs,in) returns the coded rank indication (RI) bits after performing block coding, as defined for RI in TS 36.212 [1], Section 5.2.2.6. in is a vector or cell array containing the RI bits to be encoded. out contains the encoded bits in 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 further details.

Since the RI bits are carried on all defined codewords, a single input will result in a cell array of encoded outputs if multiple codewords are parameterized. This allows for easy integration with the other functions.

The RI coder performs different types of block coding depending upon the number of RI bits in vector in. If in consists of one element, it uses TS 36.212 [1], Table 5.2.2.6-3. If in consists of two elements, it uses TS 36.212 [1], Table 5.2.2.6-4 for encoding. The placeholder bits, x and y in the tables, are represented by –1 and –2, respectively.

Similarly, for 3 to 11 bits, the RI encoding is performed as per TS 36.212 [1], Section 5.2.2.6.4. For between 12 and 22 bits, the encoding is performed as described in TS 36.212, Section 5.2.2.6.5. For more than 22 bits, the RI coder performs the procedure described in Section 5.2.2.6, which consists of 8-bit CRC attachment, tail-biting convolutional coding, and rate matching to the output length deduced from the QdRI and Modulation parameters in chs.

example

Examples

collapse all

Generate the coded rank indication (RI) bits for a single codeword.

riBit = 0;
chs.Modulation = '64QAM';
chs.QdRI = 1;
chs.NLayers = 1;
codedRi = lteRIEncode(chs,riBit)
codedRi = 6x1 int8 column vector

    0
   -2
   -1
   -1
   -1
   -1

Generate the coded rank indication (RI) bits for a two codewords on 3 layers.

riBit = 0;
chs.Modulation = {'64QAM' '64QAM'};
chs.QdRI = 1;
chs.NLayers = 3;
codedRi = lteRIEncode(chs,riBit)
codedRi=1×2 cell array
    {6x1 int8}    {12x1 int8}

codedRi{:}
ans = 6x1 int8 column vector

    0
   -2
   -1
   -1
   -1
   -1

ans = 12x1 int8 column vector

    0
   -2
   -1
   -1
   -1
   -1
    0
   -2
   -1
   -1
      ⋮

Input Arguments

collapse all

PUSCH-specific parameter structure, specified as a scalar structure or a structure array. chs contains the following fields.

Number of coded RI symbols, specified as a nonnegative numeric scalar or vector (Q'_RI).

Data Types: double

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

Number of transmission layers, specified as a positive numeric scalar. Optional.

Data Types: double

Data Types: struct

RI input bits, specified as a logical vector or a cell array of logical vectors.

Data Types: cell | double

Output Arguments

collapse all

Encoded output bits, returned as an integer column vector or a cell array of integer column vectors, in the same form as in. If the PUSCH-specific parameter structure chs defines multiple codewords, out is a cell array.

Data Types: int8 | 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

expand all