PhyUe

Package: simu5g.stack.phy

simple module PhyUe

Extends the PhyBase module by providing specific PHY functions on the User Equipment (UE) side. It ensures that frames received on the air interface are sourced from the serving eNodeB (eNB) and provides functions to manage the handover procedure, including periodic measurement of channel conditions to determine when a handover should occur. If enabled, the selection of the serving eNB at initialization is done dynamically based on radio conditions.

simu5g.stack.phy.PhyUePhyUesimple

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

NrNicUe

compound module

Defines a User Equipment (UE) network interface card that supports both LTE and NR (New Radio) technologies. It extends the LteNicUe module by adding additional submodules and parameters to support NR-specific functionalities. D2D support is added by the NrNicUeD2D subtype.

Known subclasses

Name

Type

Description

PhyUeD2D

simple module

Extends the PHY functionalities at the User Equipment side to support device-to-device (D2D) communications. Specifically, it customizes the PhyUe functionalities to support the transmission and reception of frames to another UE directly, without going through the serving eNodeB. It also supports one-to-many D2D transmission to UEs belonging to a multicast group. It is assumed that one-to-one D2D communication is only possible when both endpoints are served by the same eNodeB. When a handover is triggered, this module is responsible for initiating a mode switch from direct (D2D) mode to infrastructure mode.

Extends

Name

Type

Description

PhyBase

simple module

Base module for the Physical (PHY) layer of the LTE/NR protocol stack.

Parameters

Name

Type

Default value

Description

isNr

bool

false

True for the NR leg (set by NrNicUe/NrNicEnb on their PHY submodule)

macNodeId

int

MacNodeId of the stack leg this PHY belongs to (set by the NIC)

ueTxPower

double

26dBm

eNodeBTxPower

double

46dBm

microTxPower

double

30dBm

txDirection

string

“OMNI”

txAngle

double

0deg

binderModule

string

“binder”

channelModelModule

string

“^.channelModel[0]”

Set to “^.nrChannelModel[0]” on an NR leg, see NrNicUe

connectionControlModule

string

“^.rrc.connectionControl”

Properties

Name

Value

Description

class

PhyUe

display

i=block/wrxtx

Gates

Name

Direction

Size

Description

upperGateIn

input

From upper layer

upperGateOut

output

To upper layer

radioIn

input

Gate to receive message via sendDirect

Signals

Name

Type

Unit

Description

averageCqiDl

averageCqiUl

distance

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

averageCqiDl

Average Cqi reported in DL

averageCqiDl

mean,count,vector

cqi

averageCqiUl

Average Cqi reported in UL

averageCqiUl

mean,count,vector

cqi

distance

distance between UE and serving base station

distance

mean,vector

meters

Source code

//
// Extends the ~PhyBase module by providing specific PHY functions
// on the User Equipment (UE) side. It ensures that frames received on the air interface
// are sourced from the serving eNodeB (eNB) and provides functions to manage the handover procedure,
// including periodic measurement of channel conditions to determine when a handover should
// occur. If enabled, the selection of the serving eNB at initialization is done dynamically
// based on radio conditions.
//
simple PhyUe extends PhyBase
{
    parameters:
        @class("PhyUe");

        string connectionControlModule = default("^.rrc.connectionControl");

        @signal[distance];
        @statistic[distance](title="distance between UE and serving base station"; unit="meters"; source="distance"; record=mean,vector);

        //# CQI statistics
        @signal[averageCqiDl];
        @statistic[averageCqiDl](title="Average Cqi reported in DL"; unit="cqi"; source="averageCqiDl"; record=mean,count,vector);
        @signal[averageCqiUl];
        @statistic[averageCqiUl](title="Average Cqi reported in UL"; unit="cqi"; source="averageCqiUl"; record=mean,count,vector);
}

File: src/simu5g/stack/phy/PhyUe.ned