LTE-TDD随机接入过程(5)-怎么生成64个前导码序列

2024-04-28 21:32

本文主要是介绍LTE-TDD随机接入过程(5)-怎么生成64个前导码序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



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

在LTE里,每个小区都有64个前导码,那么这些前导码序列Preamble Sequences是怎么生成的呢?本文就旨在说明生成前导码序列的过程。

前导码序列集合包括根序列和由该根序列生成的循环移位序列,计算过程分为两个大的步骤:

(1)生成一个ZC(Zadoff-Chu)根序列Xu(n),作为一个基准序列

(2)将基准序列Xu(n)进行循环移位,生成63个不同的循环序列Xuv(n)

如果在(2)中根据基准序列得到的移位序列不足63个,则重新进入(1),生成下一个基准序列,以及新的基准序列相应的移位序列,直至满足64个前导码序列为止。

1.选择基准序列Xu(n)

基准序列Xu(n),也就是物理根序列号为u的ZC序列,按照以下公式计算得到。

其中,

Nzc表示ZC序列的长度,前导码格式0-3时,Nzc固定等于839;前导码格式为4时,Nzc固定等于139。前导码的格式由PRACH configuration Index确定,具体参考博客《LTE-TDD随机接入过程(2)-前导码Preamble的格式与时频位置》。

u是物理根序列号(Physical root sequence number),由逻辑根序列号(Logical root sequence number)查协议表Table 5.7.2-4(前导码格式0-3时查该表)和Table 5.7.2-5(前导码格式4时查该表)得到。



逻辑根序列号(Logical root sequence number)由SIB2消息中的PRACH-Config信元的rootSequenceIndex字段配置,范围是0-837,见下面的截图。比如RRC配置的rootSequenceIndex=3,前导码格式=2,那么查表可以得到物理逻辑根序列号u=699。


2.计算循环移位序列Xuv(n)

循环移位序列Xuv(n)根据下面的公式计算得到。其中,循环移位参数Cv根据是否是约束集合,使用不同的公式计算。是否是约束集合由SIB2消息中的PRACH-Config信元的highSpeedFlag字段配置,值为FALSE表示使用Unrestricted,值为TRUE表示使用restricted,见上面的截图。


Ncs可以根据SIB2消息中的PRACH-Config信元的zeroCorrelationZoneConfig字段来获取。zeroCorrelationZoneConfig值范围是0-15,通过查表就可以获取实际的Ncs值。比如,prach-ConfigIndex=1(preamble format 0),highSpeedFlag=FALSE(Unrestricted set),zeroCorrelationZoneConfig=2,则Ncs=15。


d_startn_RA_shiftn_RA_group_n_RA_shift这四个参数与du值相关,du值取决于p值,而p是满足(p*u)modNzc=1的最小非负数。比如,u=1,Nzc=839,那么p=1,du=p=1,如果此时Ncs=0,则du>Ncs,d_startn_RA_shiftn_RA_group_n_RA_shift这四个参数可以依次根据上面的公式计算得到。

3.示例说明

前面说了怎么计算基准序列和移位序列,本节简单举一个例子说明怎么获取64个前导码序列。

SIB2中携带的参数值如下:

a) rootSequenceindex = 22

b) Highspeedflag = false

c) zeroCorrelationZoneConfig = 5      

d) prach-ConfigIndex = 1

(1)根据prach-ConfigIndex=1,可以知道前导码格式=0,Nzc=839。

(2)根据rootSequenceindex=22,可以查表得到u=1。

(3)根据Highspeedflag = false,可以知道计算Cv时选择Unrestricted set。

(4)根据zeroCorrelationZoneConfig = 5  ,可以知道Ncs=26。

(5)因为Ncs不等于0,因此Cv=v*Ncs=26*v,v的范围是:v=0,1,...,31。

(7)根据上述结果,可以依次得到的前导码如下(因博客编辑器原因,Xu的下标部分u就不另外单独特殊编辑,应该不影响理解):

第1个前导码:v=0的移位序列Xu,0(n)=Xu((n+C0)mod839)=Xu((n)mod839)=Xu(n)=X1(n),即基准序列。

第2个前导码:v=1的移位序列Xu,1(n)=Xu((n+C1)mod839)=Xu((n+26)mod839)=X1((n+26)mod839)

第3个前导码:v=2的移位序列Xu,2(n)=Xu((n+C2)mod839)=Xu((n+26*2)mod839)=X1((n+26*2)mod839)

....

第32个前导码:v=31的移位序列Xu,31(n)=Xu((n+C31)mod839)=Xu((n+26*31)mod839)=X1((n+26*31)mod839)

计算到这里,以物理根序列号u=1的移位序列已经全部获取得到,但此时还没有完成全部64个前导码的生成,因此需要继续将u递增,获取新的基准序列。

u=1的下一个是u=838(查前文的Table 5.7.2.-4),因此利用u=838计算后续的32个前导码如下:

第33个前导码:v=0的移位序列Xu,0(n)=Xu((n+C0)mod839)=Xu((n)mod839)=Xu(n)=X838(n),即新的基准序列。

第34个前导码:v=1的移位序列Xu,1(n)=Xu((n+C1)mod839)=Xu((n+26)mod839)=X838((n+26)mod839)

第35个前导码:v=2的移位序列Xu,2(n)=Xu((n+C2)mod839)=Xu((n+26*2)mod839)=X838((n+26*2)mod839)

....

第64个前导码:v=31的移位序列Xu,31(n)=Xu((n+C31)mod839)=Xu((n+26*31)mod839)=X838((n+26*31)mod839)

至此,所有的64个长度为Nzc的前导码序列已经生成完毕,随机接入过程中只选择其中的一个长度为Nzc的序列发送到eNB

4.空口映射示意图

用于PUSCH的RB,每个子载波占15K的带宽,因此6个RB(每个RB占12个子载波)总共占1.08M的带宽。特别的,用于PRACH信道的RB,每个子载波是1.25K,因此总共有864个子载波。当UE选择了一个确定的前导码后,将映射到频域中间的839个子载波中(前导码格式0-3),两边的25个子载波用于保护频带。如下图所示。


5.参考文献

(1)3GPP TS 36.211 V9.1.0 (2010-03) Physical Channels and Modulation

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

(3)http://www.sharetechnote.com/

这篇关于LTE-TDD随机接入过程(5)-怎么生成64个前导码序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

IDEA接入Deepseek的图文教程

《IDEA接入Deepseek的图文教程》在本篇文章中,我们将详细介绍如何在JetBrainsIDEA中使用Continue插件接入DeepSeek,让你的AI编程助手更智能,提高开发效率,感兴趣的小... 目录一、前置准备二、安装 Continue 插件三、配置 Continue 连接 DeepSeek四

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行