笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码。

谈论到随机接入流程中的Msg1,即在PRACH信道上发送random access preamble。这就涉及到两个问题,一个是如何产生preamble?另一个是如何选择正确的PRACH时频资源发送所选的preamble? 由于涉及内容较多,本文最主要针对第一个问题进行讨论。下一篇文章讨论第二个问题

PRACH Preamble是什么?

PRACH Preamble从数学上来讲是一个长度为L_RA(839或者139)的ZaddOff Chu (ZC)序列 {x(0),x(1),….x(LRA-1)}, 其中x(i)的定义如下。在下面的公式里注意x(i)是用x_u(i)表示的,多了一个下标u,这个u是用来表示这个ZC序列是根据root sequence number u 生成的。

我们知道终端要根据配置参数生成64个preamble,也就是64个序列。产生不同的序列有两种方法,一种是根据不同的root sequence number生成,即在上面的公式中采用不同的u,另外一种是基于同一个root sequence number做cyclic shift循环移位生成,即对下面的公式采用不同的Cv。

对于生成64个preamble的方式协议38211有明确的规定,先在一个root sequence上进行循环移位,如果不足以生成64个,在换root sequence,直到64个premable全部产生为止。

There are 64 preambles defined in each time-frequency PRACH occasion, enumerated in increasing order of first increasing cyclic shift Cv of a logical root sequence, and then in increasing order of the logical root sequence index, starting with the index obtained from the higher-layer parameter prach-RootSequenceIndex. Additional preamble sequences, in case 64 preambles cannot be generated from a single root Zadoff-Chu sequence, are obtained from the root sequences with the consecutive logical indexes until all the 64 sequences are found. --摘自38.211

上面介绍了preamble的时域信号,再看看频域信号,即对时域信号x_{u,v}(n)做离散傅里叶变换DFT,公式如下:

经过DFT后也是长度为L_RA点的序列,即频域上占有L_RA个子载波

PRACH Preamble的分类?

Preamble总体上分为两大类,long preamble和short preamble。其中long preamble分为四种format,分别为format0/1/2/3,short preamble分为九种A1/A2/A3/B1/B2/B3/B4/C0/C2。
Preamble结构一般由三部分组成:Cyclic Prefix(CP) + Preamble Sequence (重复) + Guard Period(GP),其中核心部分preamble sequence可能重复多次,取决于不同的format。


从下图可以看出不同format的preamble长度不同,包括不同长度的CP,不同preamble seq的重复次数,不同长度的GP。这些preamble可以应用于不同的覆盖场景。


下面两张表格来自于38211,分别描述了long preamble和short preamble各种format的子载波间隔,preamble sequence的长度以及CP的长度,还有是否可以用于限制集restricted sets。限制集会对preamble的循环移位有影响。一些特殊的覆盖场景可能会定义限制级,这时会对循环移位有特殊的要求,防止发生preamble检测错误



对于long preamble,以format 2为例:

  • 子载波间隔为1.25kHz
  • preamble sequence重复4次,长度为:
  • CP长度为

Note:上述计算公式中的

其中Ts是LTE的基本时间单位,Tc是NR的基本时间单位。38211协议中所有时间长度单位在没有特殊明确指定时,单位为

Throughout this specification, unless otherwise noted, the size of various fields in the time domain is expressed in time units Tc -- 摘自38211

上面介绍了时域长度,下面看看频域占多少RB。下面这个摘自38211的table总结了NR支持的PRACH和PUSCH的子载波间隔SCS的不同组合,以及每种组合下的频域占多少个RB。


PRACH Preamble是如何产生的?

在第一部分“PRACH Preamble是什么?”中其实已经讨论了preamble是如何生成的。下面以一组PRACH参数配置来看看这64个preamble生成过程中用到了哪些参数并且如何使用的。

rach-ConfigCommon setup : {    rach-ConfigGeneric     {       prach-ConfigurationIndex 2,       msg1-FDM one,       msg1-FrequencyStart 2,       zeroCorrelationZoneConfig 6,       preambleReceivedTargetPower -100,       preambleTransMax n10,       powerRampingStep dB4,       ra-ResponseWindow sl20     },    ssb-perRACH-OccasionAndCB-PreamblesPerSSB four : 13,    ra-ContentionResolutionTimer sf64,    rsrp-ThresholdSSB 0,    prach-RootSequenceIndex l839 : 439,    restrictedSetConfig unrestrictedSet },

我们已经知道生成preamble离不开两个基本元素,root sequence number和cyclic shift。

  • sequence number u 是根据logical root sequence index i 查下表得到的, logical root sequence index i 是根据参数prach-RootSequenceIndex l839 :439得到的。

  • cyclic shift Cv 根据下面公式得到。对于我们给的参数配置,可以看到restrictedSetConfig = unrestrictedSet,对于unrestricted sets公式会用到Ncs

  • Ncs由参数zeroCorrelationZoneConfig = 6查表所得。根据参数prach-ConfigurationIndex = 2可以查表得到preamble format是format 0。 format 0的子载波间隔是1.25kHz。因此通过下表可以得到Ncs=32。根据上面的公式知道v的取值如下

    进而可以求出Cv


经过上面这些准备工作,我们可以通过下面伪代码的形式给出这64个preamble的产生过程:

当logical root sequence index = 439 => sequence number = 662,通过循环移位产生26个preamblepreamble_index[0]: sequence number = 662, Cv=0preamble_index[1]: sequence number = 662, Cv=32preamble_index[2]: sequence number = 662, Cv=64preamble_index[3]: sequence number = 662, Cv=96                   ............preamble_index[24]: sequence number = 662, Cv=768preamble_index[25]: sequence number = 662, Cv=800通过当前的root sequence number并且循环移位只能产生26个,不够64个,需要使用下一个logical root seq index当logical root sequence index = 440 => sequence number = 196,通过循环移位产生26个preamblepreamble_index[26]: sequence number = 196, Cv=0preamble_index[27]: sequence number = 196, Cv=32                   ............preamble_index[50]: sequence number = 196, Cv=768preamble_index[51]: sequence number = 196, Cv=800通过两个root sequence number仍然未能产生够64个,继续使用下一个logical root seq index当logical root sequence index = 441 => sequence number = 643,通过循环移位产生12个即可preamble_index[52]: sequence number = 643, Cv=0preamble_index[53]: sequence number = 643, Cv=32                   ............preamble_index[62]: sequence number = 643, Cv=320preamble_index[63]: sequence number = 643, Cv=352至此,64个preamble全部产生!!!

笔者在微信公众号GiveMe5G定期发布学习文章,发布周期原则为一周,欢迎订阅和分享
文章主要用于记叙和讨论对3GPP协议的学习和理解,欢迎留言讨论,谢谢!



5G NR 随机接入RACH流程(2)-- Msg1之生成PRACH Preamble相关推荐

  1. 5G NR 随机接入RACH流程(1)-- 概述

    本人微信公众号GiveMe5G,欢迎订阅交流讨论! 终端成功解出SSB后便获得了NR系统的下行同步,要想完成上行同步以并与NR网络建立RRC连接,那么随机接入RACH流程必不可少. 随机接入的触发原因 ...

  2. 5G NR 随机接入RACH流程(3)-- Msg1之选择正确的PRACH时频资源

    上一篇文章讨论了如何生成64个PRACH preamble,本文接着回答上一篇文章中的另一个问题"如何选择正确的PRACH时频资源去发送所选的preamble". PRACH的时域 ...

  3. 5G NR 随机接入RACH流程(4)-- Msg1发送时RA-RNTI的计算及功率控制

    笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码. 前面两篇文章介绍了Msg1的两个重要问题,如何产生PRACH preamble和如何选择合适的时频资 ...

  4. 5G NR 随机接入RACH流程(7)--分类和重要RACH流程总结

    笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码. 前面几篇文章逐一讨论了随机接入流程中的Msg1/2/3/4,那么这些消息是如何组合起来应用到实际当中 ...

  5. 5G NR 随机接入RACH流程(6)-- Msg3/4与Contention Resolution

    笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码. Msg3和Msg4主要用于竞争解决(Contention Resolution).随机接入过程的前两 ...

  6. 5G NR 随机接入RACH流程(5)-- Msg2

    笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码. 终端向基站发送了Msg1,很自然期望得到基站的Msg2(RAR)响应.本文主要针对Msg2讲两个重要 ...

  7. 5G NR学习理解系列——MATLAB5G信源的生成之SSB参数配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--MATLAB5G信源的生成之SSB参数配置 前言 SSB参数的位置 SSB参数详细解释 信号时频图 总结 前 ...

  8. 5G NR学习理解系列——利用matlab工具生成5G NR信源

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--利用matlab工具生成5G NR信源 前言 NR工具箱的使用 直接使用代码 前言 既然发现了4G LTE ...

  9. LTE随机接入RACH流程preamble发送

    首先对于TDD与FDD模式,随机接入处理流程一致.参考36.300 10.1.5触发随机接入的场景有如下六种: 1.ue由RRC_IDLE态发起初始接入流程 2.RRC Connection Re-e ...

最新文章

  1. Mythic推出“万能”芯片,任何设备都能一秒变身智能产品
  2. HanLP-最短路径分词
  3. LinkedList 使用巩固及图解
  4. c++ string类 用法简介
  5. 计算机硬件结构中负责识别,计算机硬件基本结构树状图
  6. 放置游戏如何成爆款?我们在《最强蜗牛》中找到了答案
  7. ubuntu设置静态ip地址
  8. 计算机窗口跳转列表,别小看它!Windows跳转列表效率高
  9. SQL server 数据库基础知识之数据类型
  10. Redis在Java项目中的依赖
  11. 冬季打针后忌用手按摩
  12. 专访易建科技钟忻:基于开源,但不认同强于开源
  13. CNN可视化!从CVPR 2022出发,聊聊CAM是如何激活我们文章的热度!
  14. kindeditor默认粘贴为无文本格式怎么实现配置
  15. 矩形内方形与长方形的个数
  16. 【Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转】
  17. linux入门指南(基础教程)
  18. Alan Watt - Dream of life(生命之梦)
  19. CentOS8 安装epel 使用阿里云镜像、更换国内源(阿里源)[转]
  20. “量子XX”,是怎么被玩坏的?

热门文章

  1. asp身份证号与姓名验证,asp身份证真伪查询,asp身份证核查代码
  2. C语言基于socket的网络群聊室
  3. 我的世界是一款自由度非常高的游戏,你玩过吗?
  4. 抽象代数----轨道G(x)是等价关系
  5. jeesite实战(二)——jeesite工具生成基本的页面
  6. element-ui时间组件使用
  7. 苏宁易购:商品详情系统架构设计读后感
  8. 信息学奥赛之初赛 第1轮 讲解(01-08课)
  9. java poi 读取Excel中的手机号或电话号码,手机号变成1.8312345678E10格式数据的解决方法
  10. AlphaFold2源码解析(1)--安装使用