在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_start、n_RA_shift、n_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_start、n_RA_shift、n_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/