revision after Giuseppe's comments http://codereview.appspot.com/4626069/#msg1
authorNicola Baldo <nbaldo@cttc.es>
Mon, 05 Mar 2012 15:52:14 +0100
changeset 8664 ab4c821fc251
parent 8663 5e7f07723483
child 8665 2881062d84dd
revision after Giuseppe's comments http://codereview.appspot.com/4626069/#msg1
src/lte/doc/source/lte-design.rst
src/lte/model/ideal-control-messages.h
src/lte/model/lte-enb-phy.cc
src/lte/model/lte-enb-phy.h
src/lte/model/lte-phy.h
src/lte/model/lte-sinr-chunk-processor.cc
src/lte/model/lte-ue-phy.cc
src/lte/model/lte-ue-phy.h
src/lte/test/lte-test-ue-phy.cc
src/lte/test/lte-test-ue-phy.h
--- a/src/lte/doc/source/lte-design.rst	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/doc/source/lte-design.rst	Mon Mar 05 15:52:14 2012 +0100
@@ -1092,12 +1092,19 @@
 the one described in [Piro2011]_, with the following modifications.  The model now includes the 
 inter cell intereference calculation and the simulation of uplink traffic, including both packet transmission and CQI generation. 
 
+
+MAC to Channel delay
+^^^^^^^^^^^^^^^^^^^^
+
+To model the latency of real MAC and PHY implementations, the PHY model simulates a MAC-to-channel delay in multiples of TTIs (1ms). The transmission of both data and control packets are delayed by this amount.
+
+
 CQI feedback
 ^^^^^^^^^^^^
 
 The generation of CQI feedback is done accordingly to what specified in [FFAPI]_. In detail, we considered the generation 
 of periodic wideband CQI (i.e., a single value of channel state that is deemed representative of all RBs 
-in use) and inband CQIs (i.e., a set of value representing the channel state for each RB). 
+in use) and inband CQIs (i.e., a set of value representing the channel state for each RB).
 
 Interference Model
 ^^^^^^^^^^^^^^^^^^
@@ -1174,8 +1181,8 @@
 where :math:`x` is the MI of the TB, :math:`b_{ECR}` represents the "transition center" and :math:`c_{ECR}` is related to the "transition width" of the Gaussian cumulative distribution for each Effective Code Rate (ECR) which is the actual transmission rate according to the channel coding and MCS. For limiting the computational complexity of the model we considered only a subset of the possible ECRs in fact we would have potentially 5076 possible ECRs (i.e., 27 MCSs and 188 CB sizes). On this respect, we will limit the CB sizes to some representative values (i.e., 40, 140, 160, 256, 512, 1024, 2048, 4032, 6144), while for the others the worst one approximating the real one will be used (i.e., the smaller CB size value available respect to the real one). This choice is aligned to the typical performance of turbo codes, where the CB size is not strongly impacting on the BLER. However, it is to be notes that for CB sizes lower than 1000 bits the effect might be relevant (i.e., till 2 dB); therefore, we adopt this unbalanced sampling interval for having more precision where it is necessary. This behaviour is confirmed by the figures presented in the Annes Section.
 
 
-Link Layer Performance
-^^^^^^^^^^^^^^^^^^^^^^
+BLER Curves
+^^^^^^^^^^^
 
 On this respect, we reused part of the curves obtained within [PaduaPEM]_. In detail, we introduced the CB size dependency to the CB BLER curves with the support of the developers of [PaduaPEM]_ and of the LTE Vienna Simulator. In fact, the module released provides the link layer performance only for what concerns the MCSs (i.e, with a given fixed ECR). In detail the new error rate curves for each has been evaluated with a simulation campaign with the link layer simulator for a single link with AWGN noise and for CB size of 104, 140, 256, 512, 1024, 2048, 4032 and 6144. These curves has been mapped with the Gaussian cumulative model formula presented above for obtaining the correspondents :math:`b_{ECR}` and :math:`c_{ECR}` parameters.
 
@@ -1259,8 +1266,8 @@
 
 
 
-Simulator Design
-^^^^^^^^^^^^^^^^
+Integration of the BLER curves in the ns-3 LTE module
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 The model implemented uses the curves for the LSM of the recently LTE PHY Error Model released in the ns3 community by the Signet Group [PaduaPEM]_ and the new ones generated for different CB sizes. The ``LteSpectrumPhy`` class is in charge of evaluating the TB BLER thanks to the methods provided by the ``LteMiErrorModel`` class, which is in charge of evaluating the TB BLER according to the vector of the perceived SINR per RB, the MCS and the size in order to proper model the segmentation of the TB in CBs. In order to obtain the vector of the perceived SINR two instances of ``LtePemSinrChunkProcessor`` (child of ``LteSinrChunkProcessor`` dedicated to evaluate the SINR for obtaining physical error performance) have been attached to UE downlink and eNB uplink ``LteSpectrumPhy`` modules for evaluating the error model distribution respectively of PDSCH (UE side) and ULSCH (eNB side).
 
--- a/src/lte/model/ideal-control-messages.h	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/ideal-control-messages.h	Mon Mar 05 15:52:14 2012 +0100
@@ -289,7 +289,7 @@
 class LteNetDevice;
 
 /**
-* The Fempto forum downlink CqiIdealControlMessage defines an ideal list of
+* The downlink CqiIdealControlMessage defines an ideal list of
 * feedback about the channel quality sent by the UE to the eNodeB.
 */
 class DlCqiIdealControlMessage : public IdealControlMessage
@@ -332,7 +332,7 @@
 class LteNetDevice;
 
 /**
-* The Fempto forum uplink BsrIdealControlMessage defines the specific
+* The uplink BsrIdealControlMessage defines the specific
 * extension of the CE element for reporting the buffer status report
 */
 class BsrIdealControlMessage : public IdealControlMessage
--- a/src/lte/model/lte-enb-phy.cc	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/lte-enb-phy.cc	Mon Mar 05 15:52:14 2012 +0100
@@ -140,6 +140,11 @@
                    MakeDoubleAccessor (&LteEnbPhy::SetNoiseFigure, 
                                        &LteEnbPhy::GetNoiseFigure),
                    MakeDoubleChecker<double> ())
+    .AddAttribute ("MacToChannelDelay",
+                   "The delay in TTI units that occurs between a scheduling decision in the MAC and the actual start of the transmission by the PHY. This is intended to be used to model the latency of real PHY and MAC implementations.",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteEnbPhy::m_macChTtiDelay),
+                   MakeUintegerChecker<uint8_t> (1,255))
   ;
   return tid;
 }
@@ -447,14 +452,10 @@
 
 
 void 
-LteEnbPhy::GenerateCqiFeedback (const SpectrumValue& sinr)
+LteEnbPhy::GenerateCqiReport (const SpectrumValue& sinr)
 {
   NS_LOG_FUNCTION (this << sinr);
-  Ptr<LteEnbNetDevice> thisDevice = GetDevice ()->GetObject<LteEnbNetDevice> ();
-
   m_enbPhySapUser->UlCqiReport (CreateUlCqiReport (sinr));
-
-
 }
 
 
--- a/src/lte/model/lte-enb-phy.h	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/lte-enb-phy.h	Mon Mar 05 15:52:14 2012 +0100
@@ -165,7 +165,7 @@
   void PhyPduReceived (Ptr<Packet> p);
 
   // inherited from LtePhy
-  virtual void GenerateCqiFeedback (const SpectrumValue& sinr);
+  virtual void GenerateCqiReport (const SpectrumValue& sinr);
 
 
 private:
--- a/src/lte/model/lte-phy.h	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/lte-phy.h	Mon Mar 05 15:52:14 2012 +0100
@@ -214,7 +214,7 @@
   Ptr<PacketBurst> GetPacketBurst (void);
 
   /**
-  * \param p queue control message to be sent
+  * \param m the control message to be sent
   */
   void SetControlMessages (Ptr<IdealControlMessage> m);
 
@@ -225,11 +225,11 @@
 
 
   /** 
-   * generate CQI feedback based on the given SINR
+   * generate a CQI report based on the given SINR
    * 
    * \param sinr the SINR vs frequency measured by the device
    */
-  virtual void  GenerateCqiFeedback (const SpectrumValue& sinr) = 0;
+  virtual void  GenerateCqiReport (const SpectrumValue& sinr) = 0;
 
 
 
--- a/src/lte/model/lte-sinr-chunk-processor.cc	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/lte-sinr-chunk-processor.cc	Mon Mar 05 15:52:14 2012 +0100
@@ -74,7 +74,7 @@
   NS_LOG_FUNCTION (this);
   if (m_totDuration.GetSeconds () > 0)
     {
-      m_phy->GenerateCqiFeedback ((*m_sumSinr) / m_totDuration.GetSeconds ());
+      m_phy->GenerateCqiReport ((*m_sumSinr) / m_totDuration.GetSeconds ());
     }
   else
     {
--- a/src/lte/model/lte-ue-phy.cc	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/lte-ue-phy.cc	Mon Mar 05 15:52:14 2012 +0100
@@ -152,6 +152,11 @@
                    MakeDoubleAccessor (&LteUePhy::SetNoiseFigure, 
                                        &LteUePhy::GetNoiseFigure),
                    MakeDoubleChecker<double> ())
+    .AddAttribute ("MacToChannelDelay",
+                   "The delay in TTI units that occurs between a scheduling decision in the MAC and the actual start of the transmission by the PHY. This is intended to be used to model the latency of real PHY and MAC implementations.",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteUePhy::m_macChTtiDelay),
+                   MakeUintegerChecker<uint8_t> (1,255))
   ;
   return tid;
 }
@@ -282,7 +287,7 @@
 }
 
 void
-LteUePhy::GenerateCqiFeedback (const SpectrumValue& sinr)
+LteUePhy::GenerateCqiReport (const SpectrumValue& sinr)
 {
   NS_LOG_FUNCTION (this);
   // check periodic wideband CQI
--- a/src/lte/model/lte-ue-phy.h	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/model/lte-ue-phy.h	Mon Mar 05 15:52:14 2012 +0100
@@ -151,7 +151,7 @@
 
 
   // inherited from LtePhy
-  virtual void GenerateCqiFeedback (const SpectrumValue& sinr);
+  virtual void GenerateCqiReport (const SpectrumValue& sinr);
 
   virtual void DoSendIdealControlMessage (Ptr<IdealControlMessage> msg);
   virtual void ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg);
--- a/src/lte/test/lte-test-ue-phy.cc	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/test/lte-test-ue-phy.cc	Mon Mar 05 15:52:14 2012 +0100
@@ -78,7 +78,7 @@
 }
 
 void
-LteTestUePhy::GenerateCqiFeedback (const SpectrumValue& sinr)
+LteTestUePhy::GenerateCqiReport (const SpectrumValue& sinr)
 {
   NS_LOG_FUNCTION (this);
 
--- a/src/lte/test/lte-test-ue-phy.h	Mon Mar 05 13:27:44 2012 +0100
+++ b/src/lte/test/lte-test-ue-phy.h	Mon Mar 05 15:52:14 2012 +0100
@@ -58,7 +58,7 @@
    */
   virtual Ptr<SpectrumValue> CreateTxPowerSpectralDensity ();
 
-  virtual void GenerateCqiFeedback (const SpectrumValue& sinr);
+  virtual void GenerateCqiReport (const SpectrumValue& sinr);
 
   virtual void ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg);