Main Content

nrULSCHInfo

Get uplink shared channel (UL-SCH) information

Description

example

info = nrULSCHInfo(pusch,tcr,tbs,oack,ocsi1,ocsi2) returns a structure, which contains the uplink shared transmission (UL-SCH) information related to the encoding process and uplink control information (UCI) multiplexing, for physical uplink shared channel (PUSCH) configuration pusch, target code rate tcr, and transport block size tbs. The oack input is the hybrid automatic repeat request acknowledgment (HARQ-ACK) payload length. The ocsi1 input is the channel state information (CSI) part 1 payload length. The ocsi2 input is the CSI part 2 payload length.

The function performs the multiplexing process on one of these options.

  • UL-SCH data and UCI data (HARQ-ACK, CSI part 1, and CSI part 2)

  • UCI data (HARQ-ACK, CSI part 1, and CSI part 2) only

example

info = nrULSCHInfo(tbs,tcr) returns a structure containing UL-SCH information for an input transport block size tbs and target code rate tcr. The UL-SCH information includes the cyclic redundancy check (CRC) attachment, code block segmentation (CBS), and channel coding. When you use this syntax, the function provides the UL-SCH coding information and does not handle UCI multiplexing on PUSCH, because the information of PUSCH resources is not known.

Examples

collapse all

Create a PUSCH object with a default configuration.

pusch = nrPUSCHConfig;

Set the beta offsets of the UCI types in the PUSCH configuration. Set the UCI scaling factor.

pusch.BetaOffsetACK = 10;  % Beta offset factor for HARQ-ACK
pusch.BetaOffsetCSI1 = 10; % Beta offset factor for CSI part 1
pusch.BetaOffsetCSI2 = 10; % Beta offset factor for CSI part 2
pusch.UCIScaling = 1;      % Scaling factor

Set the target code rate for the shared channel transmission.

tcr = 517/1024; % Target code rate

Set the payload lengths of the data, HARQ-ACK, CSI part 1, and CSI part 2.

tbs = 8456; % Payload length of UL-SCH data (transport block size)
oack = 6;   % Payload length of HARQ-ACK
ocsi1 = 40; % Payload length of CSI part 1
ocsi2 = 10; % Payload length of CSI part 2

Obtain the bit capacity information of the data and UCI.

info = nrULSCHInfo(pusch,tcr,tbs,ocsi1,ocsi2,oack)
info = struct with fields:
        CRC: '24A'
          L: 24
        BGN: 1
          C: 2
        Lcb: 24
          F: 312
         Zc: 208
          K: 4576
          N: 13728
     GULSCH: 15032
       GACK: 906
      GCSI1: 178
      GCSI2: 108
    GACKRvd: 0
      QdACK: 453
     QdCSI1: 89
     QdCSI2: 54

Show UL-SCH information before rate matching for an input transport block of length 8456 and target code rate 517/1024. The displayed UL-SCH information shows:

  • The transport block has 312 <NULL> filler bits per code block.

  • The number of bits per code block, after CBS, is 4576.

  • The number of bits per code block, after low-density parity-check (LDPC) coding, is 13,728.

tBlkLen = 8456;
targetCodeRate = 517/1024;
nrULSCHInfo(tBlkLen,targetCodeRate)
ans = struct with fields:
        CRC: '24A'
          L: 24
        BGN: 1
          C: 2
        Lcb: 24
          F: 312
         Zc: 208
          K: 4576
          N: 13728
     GULSCH: []
       GACK: 0
      GCSI1: 0
      GCSI2: 0
    GACKRvd: 0
      QdACK: 0
     QdCSI1: 0
     QdCSI2: 0

Input Arguments

collapse all

PUSCH configuration parameters, specified as an nrPUSCHConfig object. This function uses only these nrPUSCHConfig object properties.

Modulation scheme, specified as 'QPSK', 'pi/2-BPSK', '16QAM', '64QAM', or '256QAM', a string scalar, or a character array.

Modulation SchemeNumber of Bits Per Symbol
'pi/2-BPSK'1
'QPSK'2
'16QAM'4
'64QAM'6
'256QAM'8

Data Types: char | string

Number of transmission layers, specified as 1, 2, 3, or 4.

Data Types: double

Mapping type of the physical shared channel, specified as 'A' or 'B'.

Data Types: char | string

OFDM symbol allocation of the physical shared channel, specified as a two-element vector of nonnegative integers. The first element of this property represents the start of symbol allocation (0-based). The second element represents the number of allocated OFDM symbols.

When this property is set to [] or second element in this two-element vector of nonnegative integers is 0, the symbol allocation is empty.

Data Types: double

Physical resource block (PRB) allocation of PUSCH within the BWP, specified as a vector of nonnegative integers from 0 to 274.

Data Types: double

Transform precoding flag, specified as one of these values.

  • 0 — The transform precoding is disabled and waveform type is cyclic-prefix orthogonal frequency division multiplexing (CP-OFDM).

  • 1 — The transform precoding is enabled and waveform type is discrete fourier transform spread orthogonal frequency division multiplexing (DFT-s-OFDM).

Data Types: double | logical

Frequency hopping for the physical uplink shared channel, specified as 'neither', 'intraSlot', or 'interSlot'.

Data Types: char | string

Beta offset factor of the hybrid automatic repeat request acknowledgment (HARQ-ACK), specified as a positive integer. This property is used to determine the number of resources for multiplexing HARQ-ACK. The nominal value is one of the entry from the Table 9.3-1 of TS 38.213.

Data Types: double

Beta offset factor of the channel state information (CSI) part 1, specified as a positive integer. This property is used to determine the number of resources for multiplexing CSI part 1. The nominal value is one of the entry from the Table 9.3-2 of TS 38.213.

Data Types: double

Beta offset factor of the CSI part 2, specified as a positive integer. This property is used to determine the number of resources for multiplexing CSI part 2. The nominal value is one of the entry from the Table 9.3-2 of TS 38.213.

Data Types: double

Scaling factor to limit the number of the resource elements allocated for the uplink channel information (UCI) on the PUSCH, specified as a scalar in the range (0, 1). The nominal value is 0.5, 0.65, 0.8, or 1.

Data Types: double

Radio network temporary identifier of the user equipment (UE), specified as an integer from 0 to 65,535.

Data Types: double

PUSCH demodulation reference signal (DM-RS) configuration parameters, specified as a nrPUSCHDMRSConfig configuration object. This property relates to the demodulation reference signal configuration and contains all properties of the specified nrPUSCHDMRSConfig object.

Enable PT-RS, specified as one of these values.

  • 0 — Disable PT-RS configuration.

  • 1 — Enable PT-RS configuration.

Data Types: double | logical

PUSCH phase tracking reference signal (PT-RS) configuration, specified as a nrPUSCHPTRSConfig configuration object. This property relates to the phase tracking reference signal configuration and contains all properties of the specified nrPUSCHPTRSConfig object.

Target code rate for the codeword in the UL-SCH transmission, specified as a scalar in the range (0, 1).

Data Types: double

Transport block size associated with the codeword in the UL-SCH transmission, specified as a nonnegative integer. A value of 0 indicates no transport block or no UL-SCH transmission on the PUSCH.

Data Types: double

Payload length of the HARQ-ACK bits, specified as a nonnegative integer. A value of 0 indicates no HARQ-ACK transmission.

Data Types: double

Payload length of the CSI part 1 bits, specified as a nonnegative integer. A value of 0 indicates no CSI part 1 transmission.

Data Types: double

Payload length of the CSI part 2 bits, specified as a nonnegative integer. A value of 0 indicates no CSI part 2 transmission. Nominally, the CSI part 2 is present only when CSI part 1 is present.

Data Types: double

Output Arguments

collapse all

UL-SCH information, returned as a structure containing these fields.

FieldsValuesDescription
CRC

'16', '24A'

CRC polynomial selection

L

0, 16, 24

Number of CRC bits

BGN

1, 2

LDPC base graph selection

C

Positive integer

Number of code blocks

Lcb

0, 24

Number of parity bits per code block

F

Nonnegative integer

Number of <NULL> filler bits per code block

Zc

Positive integer

Lifting size selection

K

Nonnegative integer

Number of bits per code block after CBS

N

Nonnegative integer

Number of bits per code block after LDPC coding

GULSCH

Nonnegative integer

Number of coded and rate matched UL-SCH data bits

GACK

Nonnegative integer

Number of coded and rate matched HARQ-ACK bits

GCSI1

Nonnegative integer

Number of coded and rate matched CSI part 1 bits

GCSI2

Nonnegative integer

Number of coded and rate matched CSI part 2 bits

GACKRvd

Nonnegative integer

Number of reserved bits for HARQ-ACK

QdACK

Nonnegative integer

Number of coded HARQ-ACK symbols per layer (Q'ACK)

QdCSI1

Nonnegative integer

Number of coded CSI part 1 symbols per layer (Q'CSI1)

QdCSI2

Nonnegative integer

Number of coded CSI part 2 symbols per layer (Q'CSI2)

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2019a