Main Content

nrScheduler Class

Implement PUSCH and PDSCH resource scheduling

Since R2024b

Description

Use the nrScheduler base class to customize and implement physical uplink shared channel (PUSCH) and physical downlink shared channel (PDSCH) resource scheduling strategies in a subclass.

This class handles uplink (UL) and downlink (DL) scheduling in both frequency division duplex (FDD) and time division duplex (TDD) modes. It incorporates these built-in scheduling strategies: the round-robin scheduler, the best Channel Quality Indicator (CQI) scheduler, and the proportional-fair scheduler. You can select one of these strategies by using the Scheduler name-value argument of the configureScheduler function.

When the scheduler executes UL and DL scheduling, it prioritizes meeting the retransmission needs of the user equipment (UE) nodes for each scheduled slot. After addressing retransmissions, it schedules new transmissions with the remaining frequency resources within the bandwidth. You have the option to customize this new transmission scheduling. To write a custom scheduler, override the protected methods of the nrScheduler base class. You can use the information provided by the class properties to write your scheduling logic.

For more information on how to use the nrScheduler base class, see the More About section.

The nrScheduler class is a handle class.

Properties

expand all

Cell configuration, specified as a cell configuration object. The specified object has these properties:

  • DuplexMode — Duplex mode of the cell. The value of this property is the same as the value of the DuplexMode property specified during nrGNB object creation.

  • SubcarrierSpacing — Subcarrier spacing (SCS) used across the cell. The value of this property is the same as the value of the SubcarrierSpacing property specified during nrGNB object creation.

  • NumResourceBlocks — Number of resource blocks in the channel bandwidth. The value of this property is the same as the value of the NumResourceBlocks property specified during nrGNB object creation.

  • DLULConfigTDD — Downlink (DL) and uplink (UL) time division configuration for TDD model. The value of this property is the same as the value of the DLULConfigTDD property specified during nrGNB object creation.

Attributes:

GetAccess
public
SetAccess
protected

UE context information, specified as an array of UE context objects. The size of the array equals the number of the connected UE nodes. The object at index i in the array contains information about the UE node with the RNTI i. This table shows the UE context object properties.

Properties of UE Context Object

PropertyValueDescription
RNTIpositive integerRNTI of the UE node.
Namestring scalar or character vectorName of the UE node. The value of this property is the same as the value of the Name property specified during nrUE object creation.
IDpositive integerID of the UE node.
NumTransmitAntennaspositive integerNumber of transmit antennas at the UE node. The value of this property is the same as the value of the NumTransmitAntennas property specified during nrUE object creation.
NumReceiveAntennaspositive integerNumber of receive antennas at the UE node. The value of this property is the same as the value of the NumReceiveAntennas property specified during nrUE object creation.
RadioBearerConfigDLcell array

Radio Link Control (RLC) bearer configuration for DL logical channels, specified as a 1-by-32 cell array. The maximum allowed number of logical channels is 32. This property contains the bearer configuration information for the DL logical channels with IDs 1 to 32. Each element of this property can be [] or an object of type nrRLCBearerConfig. The [] value indicates the absence of a configured bearer for the specified logical channel ID.

The nrScheduler class sets the value of RadioBearerConfigDL using the value of the RLCBearerConfig name-value argument of the connectUE object function. When the value of the RLCEntityType of thenrRLCBearerConfig object is "UMDL", "UM", or "AM", the class populates the RadioBearerConfigDL property with the bearer configuration of a logical channel . When you set the RLCEntityType property of the nrRLCBearerConfig object to a bidirectional RLC bearer while specifying the RLCBearerConfig name-value argument, the UE context object adds one RLC entity to both RLCBearerConfigDL and RLCBearerConfigUL. You can specify a bidirectional RLC bearer by setting RLCEntityType to "UM" or "AM".

RadioBearerConfigULcell array

RLC bearer configuration for UL logical channels, specified as a 1-by-32 cell array. The maximum allowed number of logical channels is 32. This property contains the bearer configuration information for the UL logical channels with IDs 1 to 32. The value of this property can be [] or an object of type nrRLCBearerConfig.

The nrScheduler class sets the value of the RadioBearerConfigUL using the value of the RLCBearerConfig name-value argument of the connectUE object function. When the value of the RLCEntityType of thenrRLCBearerConfig object is "UMUL", "UM", or "AM", the class populates the RadioBearerConfigUL property with the bearer configuration of a logical channel . When you set the value of the RLCEntityType property to a bidirectional RLC bearer while specifying the RLCBearerConfig name-value argument, the UE context object adds one RLC entity to both RLCBearerConfigDL and RLCBearerConfigUL. You can specify a bidirectional RLC bearer by setting RLCEntityType to "UM" or "AM".

BufferStatusDLinteger

BufferStatusDL — Total pending DL buffer amount for the UE node. The nrScheduler class overwrites this value when the RLC layer of the gNB reports the pending buffer amount information of the UE node to the medium access control (MAC) layer. The RLC layer reports this information in one of these circumstances.

  • When the RLC layer receives application traffic for a logical channel.

  • When the MAC layer retrieves one or more packets from the RLC buffer of a logical channel to construct a MAC protocol data unit (PDU).

The scheduler adjusts this value after generating a DL assignment for the UE node, subtracting the amount corresponding to the transport block size (TBS) of the grant.

BufferStatusDLPerLCHinteger vector

Current pending buffer amount in the DL logical channels of a UE node, specified as a 1-by-32 integer vector. The maximum allowed number of logical channels is 32. This property contains the buffer information for the DL logical channels 1 to 32. Each element of this property can be one of these options.

  • 0 — Indicates the absence of the DL logical channel between the gNB node and the UE node, or the DL logical channel has no data queued.

  • Positive integer — Indicates the amount of queued data, in bytes, for the DL logical channel.

The nrScheduler class overwrites this value for a logical channel when the RLC layer of the gNB node reports the pending buffer amount information of that logical channel of the UE node to the MAC layer. Note that the scheduler does not adjust this value after generating DL scheduling assignments for the UE node.

BufferStatusULintegerTotal pending UL buffer amount for the UE node. The nrScheduler class overwrites this value when the UE node reports the pending buffer amount using a MAC buffer status report (BSR). The scheduler adjusts this value after generating a UL grant for the UE node, subtracting the amount corresponding to the TBS of the grant.
BufferStatusULPerLCGinteger vector

Current pending buffer amount in the UL direction for the logical channel groups (LCGs) of a UE node, specified as a 1-by-8 integer vector. The maximum allowed number of logical channel groups is 8. This property contains the buffer information for the logical groups 0 to 7. Each element of this property can be one of these options.

  • 0 — Indicates,the absence of all logical channels grouped within this LCG, or none of the UL logical channels grouped within the LCG have any data queued.

  • Positive integer — Indicates the amount of queued data in bytes across all the UL logical channels grouped within this LCG.

The nrScheduler class overwrites the value for each logical channel group when the UE node reports the pending buffer amount using a MAC BSR. Note that the scheduler does not adjust this value after generating the UL scheduling grant for the UE node.

You can map a logical channel to a logical group using the RLCBearerConfig name-value argument of the connectUE object function. The LogicalChannelGroup property of the nrRLCBearerConfig object defines logical channel group identifier for the corresponding logical channel.

CSIRSConfigurationnrCSIRSConfig objectChannel state information reference signal (CSI-RS) configuration for the UE node. For more information about the CSI-RS configuration, see nrCSIRSConfig.
SRSConfigurationnrSRSConfig objectSounding reference signal (SRS) configuration for the UE node. For more information about the SRS configuration, see nrSRSConfig.
CSIMeasurementDLstructure

Wideband DL channel measurement, as reported by the UE node based on CSI-RS reception (as per CSIRSConfiguration), and the wideband DL channel measurement extracted by the gNB from the SRS (as per SRSConfiguration), specified as a structure with these fields.

CSIMeasurementDL Fields

FieldDescription
CSIRS

Specified as a structure with these fields.

CSIMeasurementDL Fields

FieldDescription
RI

Rank indicator, specified as an integer in the range [1, 4].

PMISet

PMISet— Precoder matrix indicator (PMI) set, specified as a structure representing type 1 or type 2 report. This structure contains a field i1, whose value depends on the report type. The default report is Type 1. The report switches to type 2 when you configure the DL multiuser multiple-input and multiple-output (MU-MIMO) using the MUMIMOConfigDL name-value argument of the configureScheduler object function.

  • i1 for Type 1 — A three-element vector of the form [i11 i12 i13]. This vector represents the wideband PMI, where i13 remains unused if the number of transmission layers is 1, 5, 6, 7, or 8, and the class sets this value to 1 in these cases.

  • i1 for Type 2 — An vector of the form [q1 q2 i12 i131 AmplitudeSet1 i132 AmplitudeSet2]. q1 and q2 represent the indices of oversampled beams in the horizontal and vertical directions, respectively. i12 represents the orthogonal beam group index. AmplitudeSet1 and AmplitudeSet2 are vectors containing amplitude values for each polarization on each layer, and i131 and i132 indicate the strongest beam indices for each layer.

For more information about PMISet, see TS 38.214 Section 5.2.2.2 [1].

W

W — Precoding matrix, specified as a matrix of size Pcsirs-by-RI, where Pcsirs is the number of CSI-RS ports as per the configured CSI-RS. The indices specified in the PMISet field define this matrix.

CQIChannel quality indicator, specified as an integer in the range [0, 15]. For more information about the channel quality indicator values, see TS 38.214, Table 5.2.2.1-3 [1]
SRS

Specified as a structure with these fields.

SRS Fields

FieldsDescription
RIRank indicator, specified as an integer in the range [1, 4].
WPrecoding matrix, specified as a matrix of size Ngnbtx-by-RI, where Ngnbtx is the number of gNB transmit antennas. The computation of this matrix is based on the channel measurements performed on SRS signals at the gNB node.
MCSIndex Modulation and coding scheme index, as defined by TS 38.214, Table 5.1.3.1-2 [1].

Note

By default, the nrScheduler class populates the CSIRS field and leaves the SRS field empty. However, when you specify the CSIMeasurementSignalDL argument of the configureScheduler function as "SRS", the nrScheduler class also populates the SRS field.

CSIMeasurementULstructure

Wideband UL CSI measurements based on SRS, specified as a structure with these fields.

CSIMeasurementUL Fields

FieldDescription
RIRank indicator, an integer in the range [1, 4].
TPMITransmit precoding matrix indicator, specified as an integer in the range [0, 304]. For more information about TPMI, see the nrPUSCHConfig object.
MCSIndexModulation and coding scheme index, as defined by TS 38.214, Table 5.1.3.1-2 [1]
CustomContextstructureCustom context information provided for a UE node, specified as a structure. You can specify the value of this structure using the CustomContext name-value argument of the connectUE object function. You can use this UE-specific information to customize your scheduler. If you do not specify the CustomContext name-value argument of the connectUE object function, the class specifies the CustomContext property as {}.

Attributes:

GetAccess
public
SetAccess
protected

Methods

expand all

More About

expand all

References

[1] 3GPP TS 38.214. “NR; Physical layer procedures for data.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.321. “NR; Medium Access Control (MAC) protocol specification.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Version History

Introduced in R2024b