Throughput calculation

Asked by Rex

Hi,

I have a question regarding the throughput calculation you use: For a specific MCS scheme and number of RBs, it looks like you first calculate the size of the transport block (from the table in ModulationAndCodingSchemes.cpp) and then find the effective coding rate. The BLER corresponding to this coding rate is then retrieved (looks like interpolation is used if the SINR curve corresponding to the coding rate is not found). Is this correct?

Where do you use the coding rate from the CQI table in LteCQIs.hpp?

It would be helpful if you could point me to the code where the throughput calculation is done as well.

Thanks you so much.

Regards,
Rex.

Question information

Language:
English Edit question
Status:
Solved
For:
IMTAphy Edit question
Assignee:
No assignee Edit question
Solved by:
Maciej Muehleisen
Solved:
Last query:
Last reply:
Revision history for this message
Maciej Muehleisen (mue-comnets) said :
#1

The details are in Chapter 13 of this book, which was written by the author of the code: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1119976707.html

The most important function is getSuitableDownlinkMCSindexForEffSINR in ModulationAndCodingSchemes. It loops over all MCSs and chooses the one maximizing (1 - BLER(MCS)) * BitsInTB(MCS).

But of course it's more complicated than that, because the Effective SINR was already calculated assuming a certain modulation, so one should not loop through all MCS. This is all visible in SINRThresholdLA.cpp from linkAdaptation/downlink. It demonstrates the iterative process to decide on an MCS.

It is important to understand what the CQI coding rate is for: The UE tells the eNB: "If you transmit with this modulation and this coding, I can receive with BLER <= 10%". From this you can do a reverse mapping from CQI index to the minimum required SINR for this:

blerModel->getSINRthreshold(cqis->at(prb));

With this you can calculate the effective SINR for the TB, but you must provide which modulation should be used. First 64QAM is used. Then the process is done backward: The CQI index for the effective SINR is determined and checked if it is a 64QAM CQI. If not, effective SINR is calculated with 16QAM and if it still does not match the modulation of the according CQI index, QPSK is assumed.

This all results from the fact, that for the effective SINR calculation the modulation must be provided and then the effective SINR is mapped to an MCS. If this MCS has a different modulation, the process must be repeated assuming a different modulation. Luckily there is currently just 3 modulations we can just check sequentially.

Revision history for this message
Rex (rekha-menon) said :
#2

Hi Maciej,

Thanks for the quick response.

The book definitely sounds informative and I look forward to reading it. From the description you provide, I think I now understand how the MCS scheme for a transmission is chosen.

Regarding throughput calculation, do you calculate an effective code rate (based on the MCS scheme and number of resource blocks using the TBS table) and then find the SINR for this effective code-rate using interpolation (from some finite set of throughput curves you have for different coding rates)?

Thanks,
Rekha.

Revision history for this message
Best Maciej Muehleisen (mue-comnets) said :
#3

You have to check link2System/BlockErrorModel.cpp fot that. Interpolations are performed from line 343 on. Mostly code after 362 is used.

The curved are from the TU Vienna link level simulator. The effective code rate is calculated in ModulationAndCoding.cpp and also includes all overhead due to beacon channels on the six center PRBs and number of pilot symbols depending on antenna port count.

Decoding is performed on 6144 code block basis. TB can only be received if all code blocks are received correctly (line 321).

Revision history for this message
Rex (rekha-menon) said :
#4

Thanks Maciej Muehleisen, that solved my question.