5G-LENA nr-v3.0-32-g83aee33
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
ns3::NrPmSearch Class Referenceabstract

Base class for searching optimal precoding matrices and creating full CQI/PMI feedback This is a mostly abstract base class that provides configuration for common parameters. More...

#include "nr-pm-search.h"

+ Inheritance diagram for ns3::NrPmSearch:
+ Collaboration diagram for ns3::NrPmSearch:

Classes

struct  PmiUpdate
 Parameters that define if PMI should be updated or if previous PMI values are used. More...
 
struct  PrecMatParams
 

Public Member Functions

 NrPmSearch ()=default
 Default constructor.
 
virtual PmCqiInfo CreateCqiFeedbackMimo (const NrMimoSignal &rxSignalRb, PmiUpdate pmiUpdate)=0
 Create CQI feedback with optimal rank, optimal PMI, and corresponding CQI values. Optimal rank is considered as the rank that maximizes the achievable TB size when using the optimal PMI. The optimal WB/SB PMI values are updated based on pmiUpdate. If there is no update to the PMI values, the previously found PMI values can be ysed used.
 
size_t GetSubbandSize () const
 
virtual void InitCodebooks ()=0
 Create and initialize the codebook for each rank.
 
void SetAmc (Ptr< const NrAmc > amc)
 Set the AMC object to be used for MCS and TB size calculation.
 
void SetGnbParams (bool isDualPol, size_t numHPorts, size_t numVPorts)
 Set the antenna parameters of the gNB antenna.
 
void SetSubbandSize (size_t subbandSize)
 Set the subband size (in number of RBs)
 
void SetUeParams (size_t numTotalPorts)
 Set the antenna parameters of the UE antenna.
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get TypeId.
 

Protected Attributes

Ptr< const NrAmcm_amc {nullptr}
 The NrAmc to be used for computing TB size and MCS.
 
bool m_isGnbDualPol {false}
 True when gNB has a dual-polarized antenna array.
 
size_t m_nGnbHPorts {0}
 Number of horizontal ports in the gNB antenna array.
 
size_t m_nGnbPorts {0}
 Total number of ports in the gNB antenna array.
 
size_t m_nGnbVPorts {0}
 Number of vertical ports in the gNB antenna array.
 
size_t m_nRxPorts {0}
 Number of receive ports at this UE.
 
uint8_t m_rankLimit {UINT8_MAX}
 Limit the UE's maximum supported rank.
 
std::vector< uint8_t > m_ranks {}
 The set of ranks for which to compute precoding matrices.
 
size_t m_subbandSize {1}
 Size of each subband (in number of RBs)
 

Detailed Description

Base class for searching optimal precoding matrices and creating full CQI/PMI feedback This is a mostly abstract base class that provides configuration for common parameters.

Definition at line 21 of file nr-pm-search.h.

Member Function Documentation

◆ CreateCqiFeedbackMimo()

virtual PmCqiInfo ns3::NrPmSearch::CreateCqiFeedbackMimo ( const NrMimoSignal rxSignalRb,
PmiUpdate  pmiUpdate 
)
pure virtual

Create CQI feedback with optimal rank, optimal PMI, and corresponding CQI values. Optimal rank is considered as the rank that maximizes the achievable TB size when using the optimal PMI. The optimal WB/SB PMI values are updated based on pmiUpdate. If there is no update to the PMI values, the previously found PMI values can be ysed used.

Parameters
rxSignalRbthe receive signal parameters (channel and interference matrices)
pmiUpdatestruct that defines if WB/SB PMIs need to be updated
Returns
the CQI feedback message that contains the optimum RI, PMI, CQI, and full precoding matrix (dimensions: nGnbPorts * rank * nRbs)

Implemented in ns3::NrPmSearchFull.

◆ GetSubbandSize()

size_t ns3::NrPmSearch::GetSubbandSize ( ) const
Returns
The subband size in number of RBs

Definition at line 57 of file nr-pm-search.cc.

References m_subbandSize.

◆ GetTypeId()

TypeId ns3::NrPmSearch::GetTypeId ( )
static

Get TypeId.

Returns
the TypeId

Definition at line 16 of file nr-pm-search.cc.

References m_rankLimit.

◆ InitCodebooks()

virtual void ns3::NrPmSearch::InitCodebooks ( )
pure virtual

Create and initialize the codebook for each rank.

Implemented in ns3::NrPmSearchFull.

◆ SetAmc()

void ns3::NrPmSearch::SetAmc ( Ptr< const NrAmc amc)

Set the AMC object to be used for MCS and TB size calculation.

Parameters
amcthe NrAmc object

Definition at line 30 of file nr-pm-search.cc.

References m_amc.

◆ SetGnbParams()

void ns3::NrPmSearch::SetGnbParams ( bool  isDualPol,
size_t  numHPorts,
size_t  numVPorts 
)

Set the antenna parameters of the gNB antenna.

Parameters
numTotalPortsTotal number of ports in the gNB antenna array
isDualPolTrue when gNB has a dual-polarized antenna array
numHPortsNumber of horizontal ports in the gNB antenna array
numVPortsNumber of vertical ports in the gNB antenna array

Definition at line 36 of file nr-pm-search.cc.

References m_isGnbDualPol, m_nGnbHPorts, m_nGnbPorts, and m_nGnbVPorts.

Referenced by ns3::NrHelper::AttachToEnb().

+ Here is the caller graph for this function:

◆ SetSubbandSize()

void ns3::NrPmSearch::SetSubbandSize ( size_t  subbandSize)

Set the subband size (in number of RBs)

Parameters
subbandSizethe subband size (in number of RBs)

Definition at line 51 of file nr-pm-search.cc.

References m_subbandSize.

◆ SetUeParams()

void ns3::NrPmSearch::SetUeParams ( size_t  numTotalPorts)

Set the antenna parameters of the UE antenna.

Parameters
numTotalPortsTotal number of ports in the UE antenna array

Definition at line 45 of file nr-pm-search.cc.

References m_nRxPorts.

Member Data Documentation

◆ m_amc

Ptr<const NrAmc> ns3::NrPmSearch::m_amc {nullptr}
protected

The NrAmc to be used for computing TB size and MCS.

Definition at line 92 of file nr-pm-search.h.

Referenced by ns3::NrPmSearchFull::CreateCqiForRank(), and SetAmc().

◆ m_isGnbDualPol

bool ns3::NrPmSearch::m_isGnbDualPol {false}
protected

True when gNB has a dual-polarized antenna array.

Definition at line 86 of file nr-pm-search.h.

Referenced by ns3::NrPmSearchFull::InitCodebooks(), and SetGnbParams().

◆ m_nGnbHPorts

size_t ns3::NrPmSearch::m_nGnbHPorts {0}
protected

Number of horizontal ports in the gNB antenna array.

Definition at line 87 of file nr-pm-search.h.

Referenced by ns3::NrPmSearchFull::InitCodebooks(), and SetGnbParams().

◆ m_nGnbPorts

size_t ns3::NrPmSearch::m_nGnbPorts {0}
protected

Total number of ports in the gNB antenna array.

Definition at line 89 of file nr-pm-search.h.

Referenced by ns3::NrPmSearchFull::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::InitCodebooks(), and SetGnbParams().

◆ m_nGnbVPorts

size_t ns3::NrPmSearch::m_nGnbVPorts {0}
protected

Number of vertical ports in the gNB antenna array.

Definition at line 88 of file nr-pm-search.h.

Referenced by ns3::NrPmSearchFull::InitCodebooks(), and SetGnbParams().

◆ m_nRxPorts

size_t ns3::NrPmSearch::m_nRxPorts {0}
protected

Number of receive ports at this UE.

Definition at line 90 of file nr-pm-search.h.

Referenced by ns3::NrPmSearchFull::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::InitCodebooks(), and SetUeParams().

◆ m_rankLimit

uint8_t ns3::NrPmSearch::m_rankLimit {UINT8_MAX}
protected

Limit the UE's maximum supported rank.

Definition at line 94 of file nr-pm-search.h.

Referenced by GetTypeId(), and ns3::NrPmSearchFull::InitCodebooks().

◆ m_ranks

std::vector<uint8_t> ns3::NrPmSearch::m_ranks {}
protected

◆ m_subbandSize

size_t ns3::NrPmSearch::m_subbandSize {1}
protected

The documentation for this class was generated from the following files: