LTE-TDD随机接入过程(4)-RIV的解析和Preamble资源的选择

2024-04-28 21:32

本文主要是介绍LTE-TDD随机接入过程(4)-RIV的解析和Preamble资源的选择,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



转载  原文链接(http://blog.csdn.net/m_052148)

本文涉及到的内容有:

(1)怎么解析RIV中的RB资源

(2)前导码Preamble区分A、B两个组

(3)UE选择前导码资源的过程

1.解析RIV获取RB资源

上一篇文章《LTE-TDD随机接入过程(3)-RAR(MSG2)》中提到了RAR的信元结构,其中20bits的UL_GRANT包含了MSG3所占资源的RB、调制方式、功控等参数,这里具体介绍编码和解析RIVResource Indication Value)。

UL_GRANT包含的内容如下表所示,RIV占其中的10bits。

Hopping flag – 1 bit,指示PUSCH是否执行跳频。(本文不考虑跳频)
Fixed size resource block assignment – 10 bits,指示MSG3的RB资源分配,有时候也称RIV参数。
Truncated modulation and coding scheme – 4 bits,指示MSG3使用的MCS。 
TPC command for scheduled PUSCH – 3 bits,指示PUSCH的TPC参数。
UL delay – 1 bit。指示MSG3发送时刻。 《LTE-TDD HARQ(1)-上行HARQ时序》已经详细介绍了这个参数的具体含义。
CQI request – 1 bit。指示UE是否上报CQI。

协议36213-8.1给出了RIV的计算公式,如下图所示。其中N_UL_RB是上行带宽的RB个数,该参数由SIB2中的ul_Bandwidth配置到UE,比如20M带宽,N_UL_RB=100。eNB侧根据调度生成的RB位置(RBstart)和长度(Lcrbs),代入该公式,就可以得到RIV值,然后填入UL_GRANT中的“Fixed size resource block assignment”字段即可。


UE侧根据上述公式,就可以反推出MSG3所要使用的RB位置和长度(参考《LTE -UL_grant中RIV的编码和解码》)。除了MSG3,后续eNB通过DCI0(以后再单独介绍DCI内容)调度的PUSCH资源,都是通过这个方法进行编码和解析的。

需要注意的是,填写码流的时候,左侧(或低字节)的bit位是MSB,右侧(或高字节)的bit位属于LSB。

A MAC PDU is a bit string that is byte aligned (i.e. multiple of 8 bits) in length. In the figures in subclause 6.1, bit strings are represented by tables in which the most significant bit is the leftmost bit of the first line of the table, the least significant bit is the rightmost bit on the last line of the table, and more generally the bit string is to be read from left to right and then in the reading order of the lines. The bit order of each parameter field within a MAC PDU is represented with the first and most significant bit in the leftmost bit and the last and least significant bit in the rightmost bit.

另外,协议只给RIV定义了10bits的空间,一方面是考虑节省RAR的信令开销,另一方面也说明了传输MSG3的过程中,并不需要eNB分配太多的RB个数。

2.前导码区分GroupA和GroupB两个组

因为eNB在收到Preamble之后就通过RAR消息配置MSG3的PUSCH资源,在给UE分配RB资源和MCS调制方式的时候,并不知道接下来UE发送的MSG3的数据量大小。如果分配的太多,则浪费资源,分配的太少,可能又不够。因此协议在这里对竞争中使用的前导码做了分组处理,不同的Group可以采用不同的RB+MCS调度组合,从而为eNB侧的调度提供了参考。

跟分配前导码相关的参数出现在SIB2中的RACH-ConfigCommon信元中。其中,

numberOfRA-Preambles参数表示该小区竞争接入过程中可以使用的前导码总个数,范围是4-64。

sizeOfRA-PreamblesGroupA参数表示GroupA的前导码个数,范围是4-60。


sizeOfRA-PreamblesGroupA参数的范围是4-60可以知道,GroupA是一定存在的,至少有4个前导码属于A组。一旦sizeOfRA-PreamblesGroupA参数确定,那么GroupA的前导码集合就是【0,sizeOfRA-PreamblesGroupA-1】。GroupB是可选的,它的前导码范围是【sizeOfRA-PreamblesGroupA,numberOfRA-Preambles-1】。如果eNB配置的参数numberOfRA-Preambles=sizeOfRA-PreamblesGroupA,那么该小区就不存在Group B,竞争接入的前导码全部属于GroupA。

举个例子说明组A和组B的相互关系。当numberOfRA-Preambles=36,sizeOfRA-PreamblesGroupA=16时,组A和组B的划分如下所示。需要注意的是,eNB在配置参数的时候,应该要预留出非竞争接入的前导码集合,不应该全部配置给竞争前导码。另外,考虑到eNB侧盲检测的处理时延,配置的前导码个数可能有一定的限制。


3.UE选择前导码资源的过程

UE将按照下面的过程来选择前导码资源:

(1)如果ra-PreambleIndexra-PRACH-MaskIndex参数被显式指示,且ra-PreambleIndex不等于0,则选择显式指示的前导码和PRACH Mask Index参数

说明:eNB通过DCI1A下发非竞争随机接入过程使用的前导码资源(协议36212),这些资源信息通过ra-PreambleIndexra-PRACH-MaskIndex参数来表示。


ra-PreambleIndex表示UE需要使用的前导码ID值,ra-PRACH-MaskIndex参数表示UE使用的PRACH位置,如下表所示,最多可有6个位置可选。在文章《LTE-TDD随机接入过程(2)-前导码Preamble的格式与时频位置》中提到了PRACH四元素组的概念,这个ra-PRACH-MaskIndex参数就是用来指示UE具体在第几个四元素组所指示的PRACH资源中发送前导码

如果eNB侧配置给UE的ra-PreambleIndex等于0,那么表示当前不能进行非竞争接入,UE需要执行竞争随机接入。


(2)如果不满足条件(1),则按照下面的要求选择前导码资源:

    (2.1)如果当前还没有发送过MSG3,那么如果存在前导码组B,而且将要传输的MSG3的数据大小(含必要的MAC头、控制信息)大于messageSizeGroupA参数,并且路损小于等于(PCMAX – preambleInitialReceivedTargetPower – deltaPreambleMsg3 – messagePowerOffsetGroupB),那么选择前导码组B;否则选择前导码组A。

其中,

messageSizeGroupA参数表示组A的数据大小,单位是bit,范围从56bits到256bits不等,参考前文截图。

PCMAX表示UE配置的最大输出功率。

preambleInitialReceivedTargetPower表示初始发送功率,范围从-120dBm到-90dBm不等,参考前文截图。

deltaPreambleMsg3参数由SIB2下发,值的范围是-1到+6。在带入公式计算路损的时候,需要将该值*2[dB]。比如空口中的参数值=2,那么实际公式中的值=4dB。

messagePowerOffsetGroupB参数是选择前导码的门限参数,单位是dB,与preambleInitialReceivedTargetPower参数一起,由SIB2下发,见前文截图。

从上文分析可以看到,如果要选择前导码组B,除了待传数据量超过组A的要求外,还要满足条件:路损<=(最大输出功率-初始功率-门限功率-偏移功率)


    (2.2)否则,如果已经发出过MSG3(即本次选择前导码资源的时候发现是在重传MSG1),那么本次选择的前导码组必须和第一次发送前导码时候选择的组相同。
    (2.3)在所选择的组A或组B中,随机选择一个前导码。之所以随机选择一个,一方面是因为同组内的前导码选哪个都可以,eNB一视同仁,不影响MSG3的资源分配,另外一个原因是为了增加随机性,降低与同小区其他UE形成竞争冲突的可能性。
    (2.4)设置PRACH Mask Index=0。

至此,UE侧完成了前导码组的选择过程,下面UE将继续选择PRACH的时频资源。时频资源的计算过程已经在LTE-TDD随机接入过程(2)-前导码Preamble的格式与时频位置》中有详细描述,这里不再详说

(3)根据prach-ConfigIndex(该参数影响前导码格式和PRACH位置)和PRACH-MaskIndex参数(决定如何从多个PRACH资源中选择其中的一个),以及物理层的时序要求,确定下一个可用的PRACH子帧。为方便后文描述,这里将该PRACH子帧记作子帧U
(4)如果当前是LTE-TDD制式,并且PRACH-MaskIndex参数=0,那么:
    (4.1)如果ra-PreambleIndex被显式指示,且值不等于0(即执行非竞争随机接入过程),那么UE在PRACH子帧中随机选择一个PRACH资源。前文截图Table 7.3-1中的All的含义就表示UE可以随机选择任意一个四元素组所在的PRACH资源。
    (4.2)否则,在已选择的PRACH子帧U以及接下来的两个连续子帧中的所有可用的PRACH资源中,等概率随机选择一个PRACH资源。



(5)否则,根据PRACH-MaskIndex参数选择指定的PRACH资源。参考前文截图Table 7.3-1。            
(6)执行随机接入前导码传输过程。  
         

4.参考文献

(1)3GPP TS 36.321 V9.6.0 (2012-03) Medium Access Control (MAC) protocol specification

(2)3GPP TS 36.213 V9.3.0 (2010-09) Physical layer procedures

(3)3GPP TS 36.331 V9.18.0 (2014-06) Radio Resource Control (RRC)

(4)3GPP TS 36.101 V9.14.0 (2012-12) User Equipment (UE) radio transmission and reception

(5)3GPP TS 36.212 V9.4.0 (2011-09) Multiplexing and channel coding

这篇关于LTE-TDD随机接入过程(4)-RIV的解析和Preamble资源的选择的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944311

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析