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

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码