![]() |
5G-LENA nr-v4.0-29-g6d8085cd
The 5G/NR module for the ns-3 simulator
|
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"
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 NrAmc > | m_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) | |
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.
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.
Definition at line 92 of file nr-pm-search.h.
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.
ns3::NrPmSearch::NrPmSearch | ( | ) |
Default constructor.
Definition at line 73 of file nr-pm-search.cc.
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.
stream | first stream index to use |
Definition at line 287 of file nr-pm-search.cc.
References m_downsamplingUniRand.
|
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.
rxSignalRb | the receive signal parameters (channel and interference matrices) |
pmiUpdate | struct that defines if WB/SB PMIs need to be updated |
Implemented in ns3::NrPmSearchFast, ns3::NrPmSearchFull, ns3::NrPmSearchIdeal, ns3::NrPmSearchMaleki, and ns3::NrPmSearchSasaoka.
size_t ns3::NrPmSearch::GetSubbandSize | ( | ) | const |
Definition at line 106 of file nr-pm-search.cc.
References m_subbandSize.
|
static |
Get TypeId.
Definition at line 18 of file nr-pm-search.cc.
References AveragePRB, FirstPRB, m_downsamplingTechnique, m_enforceSubbandSize, m_rankLimit, m_subbandCqiClamping, m_subbandSize, RandomPRB, Sasaoka, SVD, and WaterFilling.
|
pure virtual |
Create and initialize the codebook for each rank.
Implemented in ns3::NrPmSearchFull.
|
virtual |
Select the MIMO rank for a given channel matrix.
channelMatrix | matrix to extract the 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().
void ns3::NrPmSearch::SetAmc | ( | Ptr< const NrAmc > | amc | ) |
Set the AMC object to be used for MCS and TB size calculation.
amc | the NrAmc object |
Definition at line 79 of file nr-pm-search.cc.
References m_amc.
void ns3::NrPmSearch::SetGnbParams | ( | bool | isDualPol, |
size_t | numHPorts, | ||
size_t | numVPorts | ||
) |
Set the antenna parameters of the gNB antenna.
numTotalPorts | Total number of ports in the gNB antenna array |
isDualPol | True when gNB has a dual-polarized antenna array |
numHPorts | Number of horizontal ports in the gNB antenna array |
numVPorts | Number 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().
void ns3::NrPmSearch::SetSubbandSize | ( | size_t | subbandSize | ) |
Set the subband size (in number of RBs)
subbandSize | the subband size (in number of RBs) |
Definition at line 100 of file nr-pm-search.cc.
References m_subbandSize.
void ns3::NrPmSearch::SetUeParams | ( | size_t | numTotalPorts | ) |
Set the antenna parameters of the UE antenna.
numTotalPorts | Total number of ports in the UE antenna array |
Definition at line 94 of file nr-pm-search.cc.
References m_nRxPorts.
|
virtual |
Downsample the input channel matrix into bins of at most m_subbandSize PRBs.
channelMatrix | matrix to downsample |
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().
|
virtual |
Upsample the input per-subband precoding matrix into a per-PRB precoding matrix.
precMat | matrix to upsample |
Definition at line 265 of file nr-pm-search.cc.
References m_subbandSize.
Referenced by ns3::NrPmSearchFull::CreateCqiForRank().
|
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().
|
protected |
Technique used to downsample PRBs.
Definition at line 135 of file nr-pm-search.h.
Referenced by GetTypeId(), and SubbandDownsampling().
|
protected |
Uniform variable stream used to downsample PRBs.
Definition at line 137 of file nr-pm-search.h.
Referenced by AssignStreams().
|
protected |
Enforce sub-band sizes according to 3GPP.
Definition at line 132 of file nr-pm-search.h.
Referenced by GetTypeId(), and SubbandDownsampling().
|
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().
|
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().
|
protected |
Total number of ports in the gNB antenna array.
Definition at line 142 of file nr-pm-search.h.
Referenced by ns3::NrPmSearchFast::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::CreateCqiFeedbackMimo(), ns3::NrPmSearchIdeal::CreateCqiFeedbackMimo(), ns3::NrPmSearchMaleki::CreateCqiFeedbackMimo(), ns3::NrPmSearchSasaoka::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::InitCodebooks(), and SetGnbParams().
|
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().
|
protected |
Number of receive ports at this UE.
Definition at line 143 of file nr-pm-search.h.
Referenced by ns3::NrPmSearchFast::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::CreateCqiFeedbackMimo(), ns3::NrPmSearchIdeal::CreateCqiFeedbackMimo(), ns3::NrPmSearchMaleki::CreateCqiFeedbackMimo(), ns3::NrPmSearchSasaoka::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::InitCodebooks(), and SetUeParams().
|
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().
|
protected |
The set of ranks for which to compute precoding matrices.
Definition at line 148 of file nr-pm-search.h.
Referenced by ns3::NrPmSearchFull::CreateCqiFeedbackMimo(), ns3::NrPmSearchIdeal::CreateCqiFeedbackMimo(), ns3::NrPmSearchMaleki::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::InitCodebooks(), SelectRank(), ns3::NrPmSearchFull::UpdateAllPrecoding(), and ns3::NrPmSearchFull::UpdateSubbandPrecoding().
|
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().
|
protected |
Size of each subband (in number of RBs)
Definition at line 131 of file nr-pm-search.h.
Referenced by ns3::NrPmSearchIdeal::CreateCqiFeedbackMimo(), ns3::NrPmSearchFull::CreateCqiForRank(), GetSubbandSize(), GetTypeId(), SetSubbandSize(), SubbandDownsampling(), and SubbandUpsampling().