Transport Block Size, Throughput and Code rate

 
Since the size of transport block is not fixed, often a question comes to mind as to how transport block size is calculated in LTE.

BackGround
If we only consider "Uplink direction" and we assume that the UE is already attached to the network, then data is first received by PDCP (Packet data compression protocol) layer. This layer performs compression and ciphering / integrity if applicable. This layer will pass on the data to the next layer i.e. RLC Layer which will concatenate it to one RLC PDU.

RLC layer will concatenate or segment the data coming from PDCP layer into correct block size and forward it to the MAC layer with its own header. Now MAC layer selects the modulation and coding scheme configures the physical layer. The data is now in the shape of transport block size and needed to be transmitted in 1ms subframe.

 
 
 
 

Transport Block size

Now how much bits are transferred in this 1ms transport block size? 
It depends on the MCS (modulation and coding scheme) and the number of resource blocks assigned to the UE. We have to refer to the Table 7.1.7.1-1 and Table 7.1.7.2.1-1 from 3GPP 36.213
 
Lets assume that eNB assigns MCS index 20 and 2 resource blocks (RBs) on the basis of CQI and other information for downlink transmission on PDSCH. Now the value of TBS index is 18 as seen in Table 7.1.7.1-1
 
 
After knowing the value of TBS index we need to refer to the Table 7.1.7.2.1-1 to find the accurate size of transport block (Only portion of the table is shown here while for the complete range of values refer to 3gpp document 36.213 http://www.quintillion.co.jp/3GPP/Specs/36213-920.pdf)
 
 
 
 

Now from the Table 7.1.7.2.1-1 the value of Transport block size is 776 bits for ITBS = 18 and NPRB=2

Throughput

Throughput is simply = Transport block size*(1000) = 776 *1000 = 776000 bits / seconds = 0.77 mbps (Assuming MIMO not used)

Please check this Throughput Calculator which takes MCS values and number of resource blocks as input to calculate the downlink throughput

Code Rate

In simple words, code rate can be defined as how effectively data can be transmitted in 1ms transport block or in other words, it is the ratio of actual amount of bits transmitted to the maximum amount of bits that could be transmitted in one transport block

code rate = (TBS + CRC) / (RE x Bits per RE)

where
TBS = Transport block size as we calculated from Table 7.1.7.2.1-1
CRC = Cyclic redundancy check i.e. Number of bits appended for error detection
RE = Resource elements assigned to PDSCH or PUSCH
Bits per RE = Modulation scheme used

While we know the values of TBS, CRC and bits per RE (modulation order), it is not easy to calculate the exact amount of RE used for PDSCH or PUSCH since some of the REs are also used by control channels like PDCCH, PHICH etc

In our case, lets assume that 10% of RE's are assigned for control channels then

TBS = 776
CRC = 24
RE = 2 (RB) x 12 (subcarriers) x 7 (assuming 7 ofdm symbols) x 2 (slots per subframe) x 0.9 (10% assumption as above) = 302 REs
Bits per RE = 6 (Modulation order from table 7.1.7.1-1)

So

code rate = (776 + 24) / (302 * 6 ) = 0.4

Transport Block Size, Throughput and Code rate-----http://www.simpletechpost.com/2012/12/transport-block-size-code-rate-protocol.html的更多相关文章

  1. 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署

    用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ...

  2. Code First is a bad name,这些年我们对Code First的理解都错了 !很震惊吧?

    当看到这个时,我也很震惊.估计绝大多数的人和我一样,这些年来,一直不知道Code Fisrt的真实意义.下面是一篇讲述此情况的译文,欢迎围观,若有翻译不当的地方,请指正,谢谢.如果被惊到了,请点赞!, ...

  3. block的简单使用:点击按钮在另一个控制器内调用block内的代码

    1.自定义一个继承于UIButton的按钮 2.声明block: 返回值类型   函数名  参数列表 typedef void (^ButtonBlock)(UIButton *); @interfa ...

  4. VS Code 1.40 发布!可自行搭建 Web 版 VS Code!

    今天(北京时间 2019 年 11 月 8 日),微软发布了 Visual Studio Code 1.40 版本.让我们来看看有哪些主要的更新. 自建 Web 版 VS Code 前不久,微软正式发 ...

  5. 【http code】HTTP协议状态码详解(HTTP Status Code)

    参考资料: http://www.cnblogs.com/shanyou/archive/2012/05/06/2486134.html 1xx:请求收到,这些状态代码表示临时的响应. 2xx:操作成 ...

  6. OC语言-06-OC语言-block与protocol

    一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> ...

  7. 同一环境下新建Standby RAC库

    需求:在同一个环境下新建Standby RAC库,即和Primary RAC在相同的磁盘组. 说明:生产环境一般不建议这样配置DG,因为存储层面是相同磁盘组,灾备的实际意义不大.我这里是用作读写分离. ...

  8. SQL Server Database Backup and Restore in C#

    SQL Server Database Backup and Restore in C# Syed Noman Ali Shah,                          7 Feb 201 ...

  9. Linux--内核Uevent事件机制 与 Input子系统【转】

    转自:http://blog.csdn.net/lxl584685501/article/details/46379453 [-] 一Uevent机制 Uevent在kernel中的位置 Uevent ...

随机推荐

  1. 。net 文件依赖缓存

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. [ASM C/C++] C语言函数的可选性自变量

        函数的可选性自变量  C语言允许定义自变量数量可变的函数,称为variadic函数.variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量. 也就是说必须至少有一个强制性 ...

  3. 【前端】require函数实现原理

    // require函数实现原理: function require(modulePath) { var regExp = /\w+$/g; var moduleName = regExp.exec( ...

  4. mysql 存储过程和事件调度

    存储过程(procedure): 建立一个存储过程需要知道的基础知识 1.确定输入/输出的参数和类型: IN tname varchar(20) 其中 IN 表示输入参数,tname  是参数名 va ...

  5. CFNetwork的错误代码参考

    所有的错误代码是在对“CFNetwork的错误代码参考” 小提取CFURL和CFURLConnection错误: kCFURLErrorUnknown = -998, kCFURLErrorCance ...

  6. JVM 内存管理机制

    1. 内存分配图:  两栈一区一堆一计数 方法区里面 包含了运行时常量 2. 对象创建过程: new A() 首先加载A的字节码. 分配内存,内存分配方式分两种,如果采用带压缩的垃圾回收策略,则采用“ ...

  7. 如何离线创建Ionic/cordova项目

    在创建ionic项目的时候,需要联网下载许多东西,由于墙的缘故,我们在创建.添加android平台.编译过程中,失败的可能性非常高,为解决这个问题,我创建了一个空的Ionic1 tab项目,并完成了上 ...

  8. 使用VC++ ATL实现iStylePDF的COM插件

    本文介绍了一种使用VC++ ATL(Active Template Library),利用ISPExtensibility接口,为 iStylePDF 加入功能简单的COM插件(addin),加入工具 ...

  9. Android BadgeView使用

    BadgeView是第三方的插件,用来显示组件上面的标记,起到提醒的作用,下载地址如下:http://files.cnblogs.com/files/hyyweb/android-viewbadger ...

  10. mysql mybatis-generator plugin 有page实体类的分页

    page实体类 package cn.zsmy.tmp; import java.io.Serializable; /** * 分页对象. * */public final class Page im ...