5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
ns3::LenaErrorModel Class Reference

LENA error model. More...

#include "lena-error-model.h"

+ Inheritance diagram for ns3::LenaErrorModel:
+ Collaboration diagram for ns3::LenaErrorModel:

Public Member Functions

 LenaErrorModel ()
 NrLteMiErrorModel constructor.
 
 ~LenaErrorModel () override
 ~NrLteMiErrorModel
 
uint32_t GetPayloadSize (uint32_t usefulSC, uint8_t mcs, uint8_t rank, uint32_t rbNum, Mode mode) const override
 Get the payload size, following the MCSs in LTE.
 
- Public Member Functions inherited from ns3::NrLteMiErrorModel
 NrLteMiErrorModel ()
 NrLteMiErrorModel constructor.
 
 ~NrLteMiErrorModel () override
 ~NrLteMiErrorModel
 
uint32_t GetMaxCbSize (uint32_t tbSize, uint8_t mcs) const override
 Get the maximum code block size, as per LTE.
 
uint8_t GetMaxMcs () const override
 Get the maximum MCS.
 
uint32_t GetPayloadSize (uint32_t usefulSC, uint8_t mcs, uint8_t rank, uint32_t rbNum, Mode mode) const override
 Get the payload size, following the MCSs in LTE.
 
double GetSpectralEfficiencyForCqi (uint8_t cqi) override
 Get the SE for a given CQI, following the CQIs in LTE.
 
double GetSpectralEfficiencyForMcs (uint8_t mcs) const override
 Get the SE for a given MCS, following the MCSs in LTE.
 
Ptr< NrErrorModelOutputGetTbDecodificationStats (const SpectrumValue &sinr, const std::vector< int > &map, uint32_t size, uint8_t mcs, const NrErrorModelHistory &history) override
 Get an output for the decodification error probability of a given transport block, assuming the MIESM method, NR TC coding and block segmentation, MCSs in LTE, and HARQ based on IR.
 
- Public Member Functions inherited from ns3::NrErrorModel
 NrErrorModel ()
 NrErrorModel default constructor.
 
 ~NrErrorModel () override
 deconstructor
 
virtual NrSinrMatrix ComputeAvgSinrMimo (const std::vector< MimoSinrChunk > &sinrChunks)
 Compute an average SINR matrix.
 
std::vector< int > CreateVectorizedRbMap (std::vector< int > map, uint8_t rank)
 Create an equivalent RB index map for vectorized SINR values Matches layer-to-codeword mapping in TR 38.211, Table 7.3.1.3-1 If map contains index "j", the output vectorized map contains {j * rank, j * rank + 1, ..., j * rank + rank - 1}. Example: input RB map = {0, 1, 7, 11}, rank = 2 vectorizedMap = {0, 1, 2, 3, 14, 15, 22, 23}.
 
virtual Ptr< NrErrorModelOutputGetTbDecodificationStatsMimo (const std::vector< MimoSinrChunk > &mimoChunks, const std::vector< int > &map, uint32_t size, uint8_t mcs, uint8_t rank, const NrErrorModelHistory &history)
 Get an output for the decoding error probability of a given transport block. This method is not purely virtual. If derived ErrorModel does not override, the MIMO matrix is converted to a linear SpectrumValue, and the non-MIMO method is called.
 

Static Public Member Functions

static TypeId GetTypeId ()
 GetTypeId.
 
- Static Public Member Functions inherited from ns3::NrLteMiErrorModel
static TypeId GetTypeId ()
 GetTypeId.
 
- Static Public Member Functions inherited from ns3::NrErrorModel
static TypeId GetTypeId ()
 GetTypeId.
 

Additional Inherited Members

- Public Types inherited from ns3::NrErrorModel
enum  Mode { DL , UL }
 Indicate the mode (UL or DL) More...
 
typedef std::vector< Ptr< NrErrorModelOutput > > NrErrorModelHistory
 Vector of previous output.
 

Detailed Description

LENA error model.

LENA is calculating the transport block sizes in a different way than we employ in our module. In particular, it uses tables that come from the standard. This error model is created to have the same values as used in LENA.

Please note that, since LENA always assigns all the available symbols to the UE, the transport block calculation is way more limited than in NR. To account for symbol granularity, in NR we are calling the function GetPayloadSize() by passing the number of RB in frequency, multiplied by the number of symbols assigned. To avoid a costly API rewrite through the NR module, we assume that the code that will be calling this function (hopefully, and OFDMA scheduler) will assign all the symbols except the single DL or UL CTRL symbol.

For matching the two RB values, we divide by 13 (hence, assuming 1 CTRL symbol) the value of RB that is coming as input. As example, imagine that the scheduler is assigning 2 RB over 13 symbols. In LENA, the function GetPayloadSize() would have been called with the input parameter RB set to 2; in NR, we call it with the same input parameter set to 26. To be able to retrieve the same value from the table, we have to adapt it, and here is explained why we divide by 13 the RB number.

Please note that we assume 1 symbol for CTRL. If you use more than one, then the calculation will be wrong.

Introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 56 bytes (on a 64-bit architecture).

Definition at line 40 of file lena-error-model.h.

Constructor & Destructor Documentation

◆ LenaErrorModel()

ns3::LenaErrorModel::LenaErrorModel ( )

NrLteMiErrorModel constructor.

Definition at line 17 of file lena-error-model.cc.

◆ ~LenaErrorModel()

ns3::LenaErrorModel::~LenaErrorModel ( )
override

~NrLteMiErrorModel

Definition at line 23 of file lena-error-model.cc.

Member Function Documentation

◆ GetPayloadSize()

uint32_t ns3::LenaErrorModel::GetPayloadSize ( uint32_t  usefulSC,
uint8_t  mcs,
uint8_t  rank,
uint32_t  rbNum,
NrErrorModel::Mode  mode 
) const
overridevirtual

Get the payload size, following the MCSs in LTE.

Parameters
usefulSCUseful Subcarriers (ignored)
mcsMCS
rankMIMO rank
rbNumResource Block number (please pay attention)
modeUL or DL

The RB value will be divided by 13.

Implements ns3::NrErrorModel.

Definition at line 29 of file lena-error-model.cc.

References ns3::NrErrorModel::DL, ns3::NrLteAmc::GetDlTbSizeFromMcs(), and ns3::NrLteAmc::GetUlTbSizeFromMcs().

+ Here is the call graph for this function:

◆ GetTypeId()

TypeId ns3::LenaErrorModel::GetTypeId ( )
static

GetTypeId.

Returns
the object type id

Definition at line 84 of file lena-error-model.cc.

Referenced by ns3::NrAmc::CalculateTbSize().

+ Here is the caller graph for this function:

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