Main Content

lteULSCHInfo

UL-SCH coding information

Description

info = lteULSCHInfo(ue,chs,blklen) provides information related to the entire UL-SCH coding process, for UL-SCH data without UCI. It returns a structure array with fields covering the transport channel (TrCH) encoding and UCI multiplexing. When UCI is present, it includes the coded symbol capacities given UCI sizes, PUSCH resource allocations, and Beta offset values, which can be useful in a number of UL-SCH- and PUSCH-related functions. These symbol capacities are calculated from the Q' formulae in TS 36.212, Sections 5.2.2.6 and 5.2.4.1 [1]. The one- or two-element vector, blklen, defines the length of the transmitted transport blocks.

By default, in the case of multiple transport blocks or codewords, each structure in the array corresponds to one of the blocks. Note that the NLayers, Modulation, and RV fields at the output contain only the value for the associated codeword and therefore have a different form to those given in the input. In the case of NLayers the output returns the number of layers per codeword where the input field represents the total number of transmission layers across all codewords.

If the UL-SCH encoding is for a retransmission of a previously sent transport block, use the three “Init” fields, 'InitPRBSet', 'InitCyclicPrefixUL', and 'InitShortened'. If any of these fields are absent, their values are assumed to be the same as the values for the associated current subframe fields, 'PRBSet', 'CyclicPrefixUL', and 'Shortened'.

example

info = lteULSCHInfo(ue,chs,blklen,opts) formats the output through options specified by opts. The optional parameter opts allows for the merging of the input chs structure fields into info at the output.

info = lteULSCHInfo(ue,chs,blklen,ocqi,ori,oack) supports the multiplexing of both transport and UCI data, CQI, RI, and HARQ-ACK, or UCI only. The number of uncoded UCI bits is given by ocqi, ori and oack respectively. Any of the data length parameters can be zero if the associated data is not present. The coding of the UCI can be controlled through the additional BetaACK, BetaCQI, and BetaRI fields in the chs input structure.

example

info = lteULSCHInfo(ue,chs,blklen,ocqi,ori,oack,opts) supports the multiplexing of both transport and UCI data (CQI, RI, HARQ-ACK) or UCI only.

example

Examples

collapse all

Obtain information for UL-SCH coding of a single transport block of length 6712 bits.

Create a PUSCH configuration structure. Initialize the optional fields for a ue-specific setting structure. Default settings are used if you don't initial optional fields. View the UL-SCH information.

pusch.Modulation = 'QPSK';
pusch.NLayers = 1;
pusch.PRBSet = [0:74].';
ue.CyclicPrefixUL = 'Normal';
ue.Shortened = 0;
blkLen = 6712;
info = lteULSCHInfo(ue,pusch,blkLen)
info = struct with fields:
             C: 2
            Km: 3328
            Cm: 0
            Kp: 3392
            Cp: 2
             F: 0
             L: 24
          Bout: 6784
             G: 21600
            Qm: 2
            Gd: 10800
          OCQI: 0
           ORI: 0
          OACK: 0
         QdCQI: 0
          QdRI: 0
         QdACK: 0
           NRE: 10800
       NLayers: 1
    Modulation: 'QPSK'

Obtain information for UL-SCH coding of two transport blocks (codewords) with UCI (3 bit RI, 2 bit HARQ-ACK). Each element in the output array corresponds to a codeword.

Create a PUSCH configuration structure and an empty UE structure.

pusch.Modulation = {'QPSK' '16QAM'};
pusch.NLayers = 3;
pusch.PRBSet = [0:74].';
ue = struct();

Specify the number of CQI, RI, and HARQ-ACK bits

OCQI = 0;
ORI = 3;
OACK = 2;
blkLen = [6712 6712];

View the UL-SCH information

info = lteULSCHInfo(ue,pusch,blkLen ,OCQI,ORI,OACK)
info=1×2 struct array with fields:
    C
    Km
    Cm
    Kp
    Cp
    F
    L
    Bout
    G
    Qm
    Gd
    OCQI
    ORI
    OACK
    QdCQI
    QdRI
    QdACK
    NRE
    NLayers
    Modulation
      ⋮

Obtain information in a single scalar structure for the UL-SCH coding of two transport blocks with UCI, specifying 3-bit RI and 2-bit HARQ-ACK.

Create a PUSCH configuration structure and an empty UE structure.

pusch.Modulation={'QPSK' '16QAM'};
pusch.NLayers = 3;
pusch.PRBSet = [0:74].';
ue = struct();

Specify the number of CQI, RI, and HARQ-ACK bits.

OCQI = 0;
ORI = 3;
OACK = 2;
blkLen = [6712 6712];

View the UL-SCH information. Most fields in the structure contain two elements corresponding to each codeword.

info = lteULSCHInfo(ue,pusch,blkLen,OCQI,ORI,OACK,'cwcombined')
info = struct with fields:
             C: [2 2]
            Km: [3328 3328]
            Cm: [0 0]
            Kp: [3392 3392]
            Cp: [2 2]
             F: [0 0]
             L: [24 24]
          Bout: [6784 6784]
             G: [21590 86360]
            Qm: [2 4]
            Gd: [10795 21590]
          OCQI: 0
           ORI: 3
          OACK: 2
         QdCQI: [0 0]
          QdRI: [5 5]
         QdACK: [4 4]
           NRE: [10800 21600]
       NLayers: [1 2]
    Modulation: {'QPSK'  '16QAM'}

Input Arguments

collapse all

UE-specific configuration settings, specified as a structure that can contain the following fields.

Parameter FieldRequired or OptionalValuesDescription
CyclicPrefixULOptional

'Normal' (default), 'Extended'

Current cyclic prefix length

ShortenedOptional

0 (default), 1

Option to shorten the subframe by omitting the last symbol, specified as 0 or 1. If 1, the last symbol of the subframe is not used. For subframes with possible SRS transmission, set Shortened to 1 to maintain a standard compliant configuration.

Channel-specific transmission configuration, specified as a structure that can contain the following parameter fields.

Parameter FieldRequired or OptionalValuesDescription
ModulationRequired'QPSK', '16QAM', '64QAM', or '256QAM'

Modulation type, specified as a character vector, cell array of character vectors, or string array. If blocks, each cell is associated with a transport block.

NLayersOptional

1 (default), 2, 3, 4

Total number of transmission layers associated with the transport block or blocks.

PRBSetRequired

Integer column vector or two-column matrix

0-based physical resource block indices (PRBs) for the slots of the current PUSCH resource allocation. As a column vector, the resource allocation is the same in both slots of the subframe. As a two-column matrix, it specifies different PRBs for each slot in a subframe.

RVRequired

Integer vector (0,1,2,3). A one or two column matrix (for one or two codewords).

Specifies the redundancy version for one or two codewords used in the initial subframe number, NSubframe. This parameter field is only for informational purposes and is read-only.

The following three 'Init' fields should be used if the UL-SCH encoding is for a retransmission of a previously sent transport block. If any of these fields are absent, its value is assumed to be the same as the value for its associated current subframe field.
  InitPRBSetOptional

1- or 2-column integer matrix, PRBSet (default)

PRB indices used in the initial transmission PUSCH allocation. If this field is absent, its value is assumed to be the same as the value for the associated current subframe field, PRBSet.

  InitCyclicPrefixULOptional

'Normal', 'Extended', CyclicPrefixUL (default)

Cyclic prefix length of initial transmit subframe. This is the length used during the first transmission of this transport block. If this field is absent, its value is assumed to be the same as the value for the associated current subframe field, CyclicPrefixUL.

  InitShortenedOptional

0, 1, Shortened (default)

Initial transmit subframe shortened flag. If 1, the initial transmit subframe was shortened for possible SRS. If this field is absent, its value is assumed to be the same as the value for the associated current subframe field, Shortened.

The coding of the UCI can be controlled through the following additional fields.
  BetaCQIOptional

numeric scalar, 2.0 (default)

Modulation and coding scheme (MCS) offset for CQI and PMI bits

  BetaRIOptional

numeric scalar, 2.0 (default)

Modulation and coding scheme (MCS) offset for RI bits

  BetaACKOptional

numeric scalar, 2.0 (default)

Modulation and coding scheme (MCS) offset for HARQ-ACK bits. This field was previously named BetaHI; if this field is absent but BetaHI is present, it is used as before.

Length of the transmitted transport blocks, specified as a one or two element numeric vector.

Data Types: double

Output formatting options, specified as a character vector, cell array of character vectors, or string array. For convenience, you can specify several options as a single character vector or string scalar by a space-separated list of values placed inside the quotes. Values for opts when specified as a character vector include (use double quotes for string):

OptionValuesDescription
Channel parameter merging 'nochsconcat' (default)Do not concatenate chs input structure into info.
'chsconcat' Concatenate chs input structure into info.
Output structure format 'cwseparate' (default) Information values for each codeword are output in separate elements of the 1-by-ncodewords structure array info.
'cwcombined' Information values for each codeword are combined into the fields of a single scalar, or 1-by-1, structure.

Example: 'chsconcat cwcombined', "chsconcat cwcombined", {'chsconcat','cwcombined'}, or ["chsconcat","cwcombined"] specify the same formatting options.

Data Types: char | string | cell

Number of uncoded CQI bits, specified as a numeric scalar.

Data Types: double

Number of uncoded RI bits, specified as a numeric scalar.

Data Types: double

Number of uncoded HARQ-ACK bits, specified as a numeric scalar.

Data Types: double

Output Arguments

collapse all

UL-SCH information, returned as a structure or a structure array. If two transport blocks are encoded, info is a structure array of two elements, one for each block. , It contains the following parameter fields.

Parameter FieldDescriptionValuesData Type
C

Total number of code blocks

nonnegative scalar integerint32
Km

Lower code block size (K–)

nonnegative scalar integerint32
Cm

Number of code blocks of size Km (C–)

nonnegative scalar integerint32
Kp

Upper code block size (K+)

nonnegative scalar integerint32
Cp

Number of code blocks of size Kp (C+)

nonnegative scalar integerint32
F

Number of filler bits in first block

nonnegative scalar integerint32
L

Number of segment cyclic redundancy check (CRC) bits

nonnegative scalar integerint32
Bout

Total number of bits in all segments

nonnegative scalar integerint32
G

Number of coded and rate matched UL-SCH data bits

nonnegative scalar integerint32
Qm

Number of bits per symbol

nonnegative scalar integerint32
Gd

Number of coded and rate matched UL-SCH data symbols (G′)

nonnegative scalar integerint32
OCQI

Number of uncoded channel quality information (CQI) bits

nonnegative scalar integerint32
ORI

Number of uncoded symbols for RI

nonnegative scalar integerint32
OACK

Number of uncoded symbols for ACK/NACK

nonnegative scalar integerint32
QdCQI

Number of coded symbols for CQI (Q’_CQI)

nonnegative scalar integerint32
QdRI

Number of coded symbols for RI (Q’_RI)

nonnegative scalar integerint32
QdACK

Number of coded symbols for ACK/NACK (Q’_ACK)

nonnegative scalar integerint32
NRE

Number of resource elements (REs) used for PUSCH transmission

nonnegative scalar integerint32
NLayers

Number of layers associated with one codeword

nonnegative scalar integerint32
Modulation

Modulation scheme associated with one codeword

'QPSK', '16QAM', '64QAM'char
RV

RV value associated with one codeword

scalar integerint32

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