4. 小区搜索与同步:UE开机流程、PSS/SSS检测、MIB/SIB读取、小区选择准则

UE开机后第一件事是什么?不是上网,不是打电话,而是先找到网络。这个过程,我们叫它「小区搜索与同步」。说白了,就是手机得先知道周围有没有基站,基站在哪个频点,然后才能谈后续的事情。

我刚开始做LTE协议栈的时候,觉得这步挺简单的,不就是扫个频点嘛。后来在实验室里被一个弱信号场景折腾了两天,才明白这里面门道有多深。今天咱们就把这层窗户纸捅破。

4.1 UE开机流程:从按下电源键到驻留小区

整个开机流程,我习惯把它拆成四个阶段:

  1. 频点扫描:UE在支持的频段内盲扫,找可用的载波
  2. 同步检测:检测PSS/SSS,获取物理小区ID和帧同步
  3. 系统信息读取:解MIB和SIB,拿到网络配置参数
  4. 小区选择:根据准则判断是否驻留

你想想看,这四步缺一不可。哪一步卡住了,手机就只能在屏幕上显示「无服务」。

核心要点:UE开机后,会先读取存储的频点列表(比如上次驻留的频点),优先在这些频点上尝试。如果失败,才会启动全频段盲扫。这个策略能大幅缩短搜网时间。

4.2 PSS/SSS检测:找到小区的「身份证」

PSS(主同步信号)和SSS(辅同步信号)是LTE物理层的两个关键信号。它们的位置固定,周期固定,UE只要找到它们,就能拿到两样东西:物理小区ID(PCI)和帧同步。

PCI的计算公式很简单:

PCI = 3 × N_ID1 + N_ID2

其中:
N_ID1 ∈ {0, 1, ..., 167}  (由SSS携带,共168组)
N_ID2 ∈ {0, 1, 2}         (由PSS携带,共3种)

所以LTE一共有504个唯一的PCI。这个数字怎么来的?168 × 3 = 504。嗯,这里要注意,PCI规划在组网时是个大坑,我后面会专门讲。

PSS和SSS在时域上的位置是这样的:

信号 时域位置(FDD) 频域位置 周期
PSS 子帧0和子帧5的最后一个OFDM符号 中心6个RB(72个子载波) 5ms
SSS 子帧0和子帧5的倒数第二个OFDM符号 中心6个RB(72个子载波) 5ms

为什么PSS和SSS要放在中心6个RB?因为不管系统带宽是1.4MHz还是20MHz,中心6个RB始终存在。UE在不知道带宽的情况下,只要在中心频点附近搜,就一定能找到。

实战技巧:我在项目中遇到过一种情况——UE在高速移动时,PSS检测的频偏估计会不准。这时候可以先用PSS做粗频偏估计,再用SSS做细频偏校正。两步走,效果比单次估计好很多。

4.3 MIB/SIB读取:拿到网络的「使用说明书」

同步完成后,UE需要读取系统信息。系统信息分两种:MIB和SIB。

4.3.1 MIB(主信息块)

MIB在PBCH上传输,周期40ms,每10ms重复一次。内容不多,但都是关键信息:

  • 系统带宽:6种带宽(1.4/3/5/10/15/20 MHz)
  • PHICH配置:PHICH持续时间和资源大小
  • 系统帧号(SFN):高8位,低2位由UE盲检得到

MIB的传输块大小固定为24比特。我刚开始看协议时觉得这太小了,后来才明白——MIB要在最恶劣的信道条件下也能解出来,信息越少,编码增益越高。

4.3.2 SIB(系统信息块)

MIB读完后,UE就知道了带宽和PHICH配置。接下来就可以读SIB1了。SIB1在PDSCH上传输,周期80ms,它告诉UE:

  • 小区接入相关信息(PLMN列表、TAI等)
  • SIB2~SIB13的调度信息(周期、起始位置等)

然后UE根据SIB1的调度信息,依次读取其他SIB。其中最重要的几个:

SIB类型 主要内容 典型周期
SIB1 小区接入参数、SIB调度 80ms
SIB2 小区重选参数、随机接入配置 160ms
SIB3 同频/异频小区重选公共参数 320ms
SIB4 同频邻区列表 320ms
SIB5 异频邻区列表 640ms

避坑指南:我曾经在现网遇到过一个问题——UE读SIB2时一直失败,导致无法发起随机接入。排查后发现是SIB1里调度信息配置错了,SIB2的周期和起始位置对不上。所以,SIB1的调度信息一定要和实际发送的SIB保持一致,否则UE永远读不到。

4.4 小区选择准则:凭什么选这个小区?

系统信息读完了,UE手里有了一堆参数。接下来要决定:这个小区能不能驻留?

小区选择的核心准则是S准则:

Srxlev > 0 且 Squal > 0

其中:
Srxlev = Qrxlevmeas - (Qrxlevmin + Qrxlevminoffset) - Pcompensation
Squal  = Qqualmeas - (Qqualmin + Qqualminoffset)

参数含义:

  • Qrxlevmeas:UE测量的RSRP值
  • Qrxlevmin:SIB1中广播的最低接收功率(单位dBm)
  • Qrxlevminoffset:针对高优先级PLMN的偏移量
  • Pcompensation:最大发射功率补偿(max(UE_TXPWR_MAX - P_MAX, 0))
  • Qqualmeas:UE测量的RSRQ值
  • Qqualmin:SIB1中广播的最低接收质量(单位dB)

说白了,就是信号强度和信号质量都要达标。我见过不少刚入行的同事只关注RSRP,忽略了RSRQ,结果在干扰严重的场景下UE频繁掉网。

实战经验:S准则只是「能不能驻留」的门槛。实际UE还会考虑PLMN优先级、小区禁止状态、漫游限制等因素。比如,UE会优先选择HPLM(归属PLMN)的小区,即使信号弱一点。

4.5 知识体系总览

下面这张图把整个小区搜索与同步的流程串起来了。我建议你把它存下来,以后排查问题时对着看。

小区搜索与同步流程总览 频点扫描 同步检测 系统信息读取 优先扫描上次驻留频点 失败后全频段盲扫 PSS检测:获取N_ID2 + 5ms同步 SSS检测:获取N_ID1 + 帧同步 计算PCI = 3×N_ID1 + N_ID2 读取MIB:带宽 + PHICH + SFN 读取SIB1:PLMN + SIB调度 读取SIB2~SIB13 小区选择(S准则判定) Srxlev = Qrxlevmeas - Qrxlevmin - ... Squal = Qqualmeas - Qqualmin - ... Srxlev > 0 且 Squal > 0 驻留小区 / 继续搜索

这张图把整个流程分成了四个阶段。每个阶段都有明确的输入和输出。我建议你在排查搜网问题时,按这个流程逐段检查,不要跳步。很多时候问题就出在某个子步骤上,比如PSS检测成功但SSS失败,那大概率是频偏太大或者信号太弱。

4.6 常见问题与排查思路

最后,我整理了几个我在项目中遇到过的典型问题,供你参考:

现象 可能原因 排查方向
UE搜不到任何小区 频点扫描失败 检查频段支持、射频前端、天线
PSS检测成功,SSS失败 频偏过大或信噪比太低 检查本振精度、AGC设置
MIB解调成功,SIB1读不到 PBCH配置错误或PDCCH盲检失败 检查MIB中的PHICH配置、带宽一致性
SIB1读到但SIB2超时 SIB调度信息配置错误 核对SIB1中的调度列表
S准则通过但无法驻留 小区被禁止或PLMN不匹配 检查SIB1中的cellBarred和PLMN列表

嗯,小区搜索与同步这部分内容,说难不难,说简单也不简单。关键是把每一步的原理搞清楚,再结合信令日志和物理层测量数据去定位问题。下次遇到UE搜网慢或者驻留失败的情况,你应该知道从哪里下手了。