# How can we calculate the transport block size given the MCS index?

+1 vote
491 views

How can we calculate the transport block size given the MCS index and the number of used PRBs as defined in the 3GPP table 36.213.

posted Sep 12, 2014

The way to do it is to take the MCS value denoted as I_MCS in table 7.1.7.1-1 and this gives you I_TBS.

You next have to know whether you're using spatial multiplexing or not. This is learned from DCI format, if is format 0 (uplink grant), or format 1 (1, 1a, 1b, ...) then it's only single layer, and Table 7.1.7.2.1-1 should be consulted. Merely use I_TBS and NPRB as indices into the table.

Of course excepting Format 1C, which uses Table 7.1.7.2.3-1. The TBS is only a function of I_MCS.

If the DCI is of the format 2 variety (2, 2a), then consult Table 7.1.7.2.2-1. This is a little trickier. The important thing to remember is that the goal of spatial multiplexing is to exploit the multipath in the RF environment by transmitting 2 signals on the same resource blocks at the same time, which essentially means that you need 2 different TBS for each spatial "layer" employed. TBS is then obtained as per Section 7.1.7.2.2 of 36.213:

For 1 <= NPRB <= 55, the TBS is given by the ( TBS I , PRB 2

Similar Questions

In unicast mode, MCS is very dynamic in nature and depends on feedback from UE while in multicast or broadcast there is no feedback from UE then how a particular MCS index is chosen ? And is there any possibility when MCS for an already configured MBSFN can be updated ?

+1 vote

I would like to understand the relation between the TB size calculation in the TS36.213 document and in the Vienna Simulator https://www.nt.tuwien.ac.at/research/mobile-communications/vienna-lte-a-simulators . I’m going to make an example so maybe you can help me to see this relation:

Method 1 (from the TS36.213)

Calculation Procedure for downlink(PDSCH) is as follows :
i) refer to TS36.213 Table 7.1.7.1-1
ii) get I_TBS for using MCS value (Let’s assume MCS is 1. in this case, I_TBS is 1 )
iii) refer to TS36.213 Table7.1.7.2.1
iv) go to column header indicating the number of RB (Let’s assume that RB is 50)
v) go to row header ‘1’ which is I_TBS
vi) we would get 1800 (if the number of RB is 50 and I_TBS is 9)
vii) (This is Transport Block Size per 1 ms for one Antenna)

And this is method 2 (in the simulator):
i) This is the formula:
TB_size_bits = max(8*round(1/8*(the_RB_grid.sym_per_RB_nosync .* num_assigned_RB .* modulation_order .* coding_rate * 2))-24,0);
ii) if the_RB_grid.sym_per_RB_nosyn= 80
iii) num_assigned_RB=50
iv) modulation_order = 2
v) coding_rate=0.0762
vi) That gives TB_size_bits = 11952 bits

Do you know how I can go from one method to another or if there is any relation?