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.
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
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 |
|---|---|---|
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 |
|---|---|---|
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);
}