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

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St