5G-LENA nr-v4.0-29-g6d8085cd
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 Types

enum  DownsamplingTechnique { FirstPRB , RandomPRB , AveragePRB }
 
enum  RankTechnique { SVD , WaterFilling , Sasaoka }
 

Public Member Functions

 NrPmSearch ()
 Default constructor.
 
int64_t AssignStreams (int64_t stream)
 
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.
 
virtual uint8_t SelectRank (NrIntfNormChanMat &channelMatrix) const
 Select the MIMO rank for a given channel matrix.
 
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.
 
virtual NrIntfNormChanMat SubbandDownsampling (const NrIntfNormChanMat &channelMatrix)
 Downsample the input channel matrix into bins of at most m_subbandSize PRBs.
 
virtual NrIntfNormChanMat SubbandUpsampling (const NrIntfNormChanMat &precMat, size_t numPrbs) const
 Upsample the input per-subband precoding matrix into a per-PRB precoding matrix.
 

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.
 
enum DownsamplingTechnique m_downsamplingTechnique
 Technique used to downsample PRBs.
 
Ptr< UniformRandomVariable > m_downsamplingUniRand
 Uniform variable stream used to downsample PRBs.
 
bool m_enforceSubbandSize
 Enforce sub-band sizes according to 3GPP.
 
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.
 
bool m_subbandCqiClamping
 
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.

Introspection did not find any typical Config paths.

Attributes

  • RankLimit: Max MIMO rank is minimum of num UE ports, num gNB ports, and RankLimit
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:255
    • Initial value: 255
    • Flags: construct write read
  • RankTechnique: Technique used to determine the MIMO Rank
    • Set with class: ns3::EnumValue<ns3::NrPmSearch::RankTechnique>
    • Underlying type: SVD|WaterFilling|Sasaoka
    • Initial value: SVD
    • Flags: construct write read
  • RankThreshold: Rank threshold for SVD selection
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 2.22045e-16
    • Flags: construct write read
  • SubbandSize: Size of subband in PRBs for downsampling
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:32
    • Initial value: 1
    • Flags: construct write read
  • EnforceSubbandSize: Enforce 3GPP standardized sub-band size
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • DownsamplingTechnique: Algorithm used to downsample PRBs into SBs
    • Set with class: ns3::EnumValue<ns3::NrPmSearch::DownsamplingTechnique>
    • Underlying type: FirstPRB|RandomPRB|AveragePRB
    • Initial value: FirstPRB
    • Flags: construct write read
  • SubbandCqiClamping: Clamp sub-band CQI range to wideband CQI [-1,+2], according to 3GPP 2-bit information overhead limit
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read

No TraceSources are defined for this type.
Size of this type is 176 bytes (on a 64-bit architecture).

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

Member Enumeration Documentation

◆ DownsamplingTechnique

Enumerator
FirstPRB 

Downsample m_subbandSize samples to bands based on the first PRB.

RandomPRB 

Downsample m_subbandSize samples to bands based on a random PRB.

AveragePRB 

Downsample m_subbandSize samples to bands based on the average of PRBs.

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

◆ RankTechnique

Enumerator
SVD 

Select MIMO rank via SVD decomposition.

WaterFilling 

Select MIMO rank via water-filling technique,.

Sasaoka 

Select MIMO rank via rank increment capacity technique.

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

Constructor & Destructor Documentation

◆ NrPmSearch()

ns3::NrPmSearch::NrPmSearch ( )

Default constructor.

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

Member Function Documentation

◆ AssignStreams()

int64_t ns3::NrPmSearch::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

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

References m_downsamplingUniRand.

◆ 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::NrPmSearchFast, ns3::NrPmSearchFull, ns3::NrPmSearchIdeal, ns3::NrPmSearchMaleki, and ns3::NrPmSearchSasaoka.

◆ GetSubbandSize()

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

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

References m_subbandSize.

◆ GetTypeId()

TypeId ns3::NrPmSearch::GetTypeId ( )
static

◆ InitCodebooks()

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

Create and initialize the codebook for each rank.

Implemented in ns3::NrPmSearchFull.

◆ SelectRank()

uint8_t ns3::NrPmSearch::SelectRank ( NrIntfNormChanMat channelMatrix) const
virtual

Select the MIMO rank for a given channel matrix.

Parameters
channelMatrixmatrix to extract the rank
Returns
maximum supported rank

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

References ns3::NrIntfNormChanMat::GetEigenWidebandRank(), ns3::NrIntfNormChanMat::GetSasaokaWidebandRank(), ns3::NrIntfNormChanMat::GetWaterfillingWidebandRank(), m_ranks, Sasaoka, SVD, and WaterFilling.

Referenced by ns3::NrPmSearchFast::CreateCqiFeedbackMimo(), and ns3::NrPmSearchSasaoka::CreateCqiFeedbackMimo().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ 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 79 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 85 of file nr-pm-search.cc.

References m_isGnbDualPol, m_nGnbHPorts, m_nGnbPorts, and m_nGnbVPorts.

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

+ 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 100 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 94 of file nr-pm-search.cc.

References m_nRxPorts.

◆ SubbandDownsampling()

NrIntfNormChanMat ns3::NrPmSearch::SubbandDownsampling ( const NrIntfNormChanMat channelMatrix)
virtual

Downsample the input channel matrix into bins of at most m_subbandSize PRBs.

Parameters
channelMatrixmatrix to downsample
Returns
downsampled matrix

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

References AveragePRB, FirstPRB, m_downsamplingTechnique, m_enforceSubbandSize, m_subbandSize, and RandomPRB.

Referenced by ns3::NrPmSearchFast::CreateCqiFeedbackMimo(), ns3::NrPmSearchIdeal::CreateCqiFeedbackMimo(), ns3::NrPmSearchMaleki::CreateCqiFeedbackMimo(), ns3::NrPmSearchSasaoka::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::UpdateAllPrecoding(), and ns3::NrPmSearchFull::UpdateSubbandPrecoding().

+ Here is the caller graph for this function:

◆ SubbandUpsampling()

NrIntfNormChanMat ns3::NrPmSearch::SubbandUpsampling ( const NrIntfNormChanMat precMat,
size_t  numPrbs 
) const
virtual

Upsample the input per-subband precoding matrix into a per-PRB precoding matrix.

Parameters
precMatmatrix to upsample
Returns
upsampled matrix

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

References m_subbandSize.

Referenced by ns3::NrPmSearchFull::CreateCqiForRank().

+ Here is the caller graph for this function:

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 145 of file nr-pm-search.h.

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

◆ m_downsamplingTechnique

enum DownsamplingTechnique ns3::NrPmSearch::m_downsamplingTechnique
protected

Technique used to downsample PRBs.

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

Referenced by GetTypeId(), and SubbandDownsampling().

◆ m_downsamplingUniRand

Ptr<UniformRandomVariable> ns3::NrPmSearch::m_downsamplingUniRand
protected

Uniform variable stream used to downsample PRBs.

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

Referenced by AssignStreams().

◆ m_enforceSubbandSize

bool ns3::NrPmSearch::m_enforceSubbandSize
protected

Enforce sub-band sizes according to 3GPP.

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

Referenced by GetTypeId(), and SubbandDownsampling().

◆ m_isGnbDualPol

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

True when gNB has a dual-polarized antenna array.

Definition at line 139 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 140 of file nr-pm-search.h.

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

◆ m_nGnbPorts

◆ m_nGnbVPorts

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

Number of vertical ports in the gNB antenna array.

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

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

◆ m_nRxPorts

◆ m_rankLimit

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

Limit the UE's maximum supported rank.

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

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

◆ m_ranks

◆ m_subbandCqiClamping

bool ns3::NrPmSearch::m_subbandCqiClamping
protected

Clamp sub-band CQI range to wideband CQI [-1,+2], according to 3GPP

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

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

◆ m_subbandSize

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

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