2.NR中小区搜索(下行同步)

本文详细解析了5G NR系统中UE的同步和初始接入过程,包括PSS/SSS检测、PBCH-DMRS检测、PBCH解码、Coreset0定位及SIB1接收步骤,阐述了SSB、PCI、SFN等关键参数的获取方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Step1.检测PSS/SSS

PSS的生成--->>

SSS序列生成:

根据上述序列生成公式,检测到PSS和SSS后,可确定PCI、SSB的时频相对同步。

Step2:检测PBCH-DMRS

DMRS在SSB中(l,k)位置及SSB结构、即SSB Burst协议有描述,DMRS序列的生成如下图。

此刻UE已经获得PCI(DMRS位置固定),即可能性只有决定,基于8种可能性进行盲检。检测即可得Issb和半帧指示(Lmax=4)。

换句话说,通过检测PBCH-DMRS,可得到:

如果 Lmax=4,得到SSB(定格在5ms内)在无线帧前半帧或者后半帧,及SSB Index的低2位;即子帧0位置;

如果 Lmax=8,得到SSB Index的低3位;半帧指示还需要解码PBCH;

如果 Lmax=64,得到SSB Index的低3位,另外还需解码PBCH得到额外高3位;半帧指示还需要解码PBCH;

Step3:解码PBCH

PBCH的载荷(payload)承载RRC层的master information block(MIB)信息。除了MIB外,PBCH承载了8 bits额外的payload。同时如果获得完整Timing,需要这8位额外的编码辅助,如下:

SFN:低4位+MIB的SFN高6位组成SFN;

如果Lmax=4,指示Kssb的MSB(同时后两位保留),半帧指示在Issb已经获得;

如果Lmax=8,指示Kssb的MSB(同时后两位保留);指示半帧;

如果Lmax=64,后三位作为SSB Index的MSB(低三位在上图Issb中获得);指示半帧;

NOTE:FR1中Kssb取值0到23,而FR2中取值是0到11,故FR1中除了MIB ssb-SubcarrierOffset 4位外,需要额外解码Kssb MSB信息。

那此时可得到完整的下行Timing。

 

接收MIB,MIB内容如下:

MIB ::= SEQUENCE {

    systemFrameNumber                   BIT STRING (SIZE (6)),--MSB 6bit of SFN

    subCarrierSpacingCommon             ENUMERATED {scs15or60, scs30or120},---Subcarrier spacing for SIB1, Msg.2/4 for initial access and SI-messages。

    ssb-SubcarrierOffset                INTEGER (0..15),--Kssb

    dmrs-TypeA-Position                 ENUMERATED {pos2, pos3},---Indicates Position of (first) DL DM-RS.

    pdcch-ConfigSIB1                   INTEGER (0..255),---CORESET0的时频域位置(step4用到)

    cellBarred                          ENUMERATED {barred, notBarred},

    intraFreqReselection                ENUMERATED {allowed, notAllowed},

    spare                               BIT STRING (SIZE (1))

}

Step4:收SIB1之Coreset0 Location

通过MIB中pdcch-ConfigSIB1字段高四位(controlResourceSetZero 频域信息Index1)+低四位(searchSpaceZero时域信息Index2),再通过36.213 13节index值、SSB SCS、RMSI SCS、Minimum BW(38.101 Table 5.3.5-1 Channel bandwidths for each NR band)等查询对应表格即可获得Corrset0时频域位置。

1)输入信息:SSB SCS(同步step1即知)、RMSI SCS(MIB)、Minimum BW(38.101 Table 5.3.5-1)、Index1&2(MIB)

2)参照TS 38.213 Setion13

3)输出信息:

      频域信息:复用类型、RBs、RB偏移(有偏移意味着计算考虑Kssb)占用符号数量----------Table 13-1到13-10

      时域信息:SFN、Slot(i)、first symbol index----------Table 13-11到13-15

参照说明:

1. SSB和Coreset 0频偏RBs计算为:SSB 起始位置 - Kssb*参考SCS - RB offset。

其中参考SCS(FR1 15KHz,FR2 RMSI SCS);RB offset(单位是RMSI SCS),正数表示 Coreset 0位置在SSB下方,负数表示在上方。

比如复用类型1中,RB offset小于76,总是频域重叠(时分);

比如复用类型2中(仅用于FR2),SSB SCS=120KHz,RMSI SCS=60KHz或者SSB SCS=240KHz,RMSI SCS=120KHz,如果Coreset 0在SSB上方时候,RB offset为-40,但考虑子载波不同干扰留一个RB保护,所以当Kssb=0即为-41,Kssb≠0时即为-42(频分,时域前一个时隙或同一时隙提前符号).

比如复用类型3中(仅用于FR2),SSB SCS=120KHz,RMSI SCS=120KHz,如果Coreset 0在SSB上方时候,当Kssb=0即为-20,Kssb≠0时即为-21(频分,时域同时刻).
                    

 

2. 时域的计算相对复杂些,如上1表中FR1/FR2、复用类型可分成如下五种情况,分别对应table11—15:

对于Pattern1,通过OM 结合公式结算给出n_0索引

                                                              

并且如果

                                                            

那么n_0在20ms的第一个无线帧帧,否则n _0在第二个无线帧。其中i 是SSB索引,O及第一个符号索引表中给出(M表示相邻两个SSB的n_0间隔,1/2表示重叠;O表示SSB Index0的n_0起始位置)。

                                

 

对于Pattern2:

 

对于Pattern3:

Step5:收SIB1之PDSCH Location

Step4之后,UE用SI-RNTI解码PDCCH,获取的DCI Format1_0信息,得到PDSCH位置信息,并接收SIB1.

RMSI PDSCH频域分配信息有两种Type0(位图呈现,基于BWP长度和RBG大小)和Type1(RIV形式呈现)。

RMSI PDSCH时域调度支持符号级别的,映射类型分成TypeA(S靠前且L较长,EMBB)和TypeB(L较短,URLLC)两种:

RMSI PDSCH时域资源分配有三种类型(k0表示与PDCCH时隙间隔,0表示同一时隙,1表示下一时隙;S为符号开始符号,L符号长度):

Step5:接收SIB1

 

 

 

 

### NR 下行同步 MATLAB 实现 #### 使用 MATLAB 进行 NR 下行同步的概述 为了实现 NR(新无线电)下行同步,通常涉及两个主要阶段:初级同步信号 (PSS) 和次级同步信号 (SSS) 的检测。这些信号帮助终端设备获取定时和小区 ID。 #### 初级同步信号 (PSS) 检测 PSS 是 NR 中最基础的同步信号之一,用于初始时间和频率同步以及部分物理层小区组识别。下面是一个简单的 PSS 检测过程: ```matlab % 定义参数 n_id_2 = 0; % 物理层小区组 ID 值范围是从 0 至 335 N_ID_2 = nchoosek(0:335, 1); % 获取 PSS 序列 pssRef = lteNRSSS(n_id_2); % 接收信号处理 rxWaveform = ... ; % 输入接收到的波形数据 grid = nrResourceGrid(nrCarrier); [~, pssCorr] = helperPSSDetection(rxWaveform, grid.NRFFTBW, 'Normal'); [maxVal, maxIdx] = max(abs(pssCorr)); if maxVal > threshold fprintf('Detected PSS at index %d\n', maxIdx); else disp('No PSS detected'); end ``` 此代码片段展示了如何定义必要的变量并调用 `lteNRSSS` 函数来生成 PSS 参考序列[^1]。接着对接收到的数据执行相关运算以寻找峰值位置作为可能存在的 PSS 符号索引。 #### 次级同步信号 (SSS) 检测 一旦完成了初步的时间对齐,就可以继续进行 SSS 解码以便完全确定子边界及完整的物理层小区标识符 NID_cell: ```matlab sssRef = lteNRSSS(N_ID_2(maxIdx)); % 根据找到的最大值对应的索引来计算 SSS 参考序列 [~, sssCorr] = helperSSSDetection(rxWaveform, grid.NRFFTBW, 'Normal'); [maxValSSS, maxIdxSSS] = max(abs(sssCorr)); if maxValSSS > thresholdSSS fprintf('Detected SSS at index %d with cell id %d\n',... maxIdxSSS,... mod((maxIdx*3 + floor(maxIdx/3)), 1008)); else disp('No SSS detected'); end ``` 上述脚本说明了怎样利用先前得到的信息进一步解析 SSS 并最终确认整个 NR 小区的身份编号。 #### 同步网格配置 对于更复杂的场景,在完成基本同步之后还需要设置相应的资源网格来进行后续操作,比如解调参考信号(DMRS),控制信道估计(CCE)等。 ```matlab nrCarrier = nrCarrierConfig; nrCarrier.SubcarrierSpacing = 30e3; % 设置子载波间隔为 30kHz nrCarrier.CyclicPrefix = 'Normal'; nrCarrier.NSizeGrid = 52 * 6; % 配置带宽大小 nrCarrier.NStartGrid = 0; % 创建空资源网格 grid = nrResourceGrid(nrCarrier); ``` 这段代码初始化了一个适用于 NR 系统的资源配置实例,并创建了一个空白的资源网格供以后填充实际传输内容使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值