4. 小区搜索与同步:UE开机流程、PSS/SSS检测、MIB/SIB读取、小区选择准则
UE开机后第一件事是什么?不是上网,不是打电话,而是先找到网络。这个过程,我们叫它「小区搜索与同步」。说白了,就是手机得先知道周围有没有基站,基站在哪个频点,然后才能谈后续的事情。
我刚开始做LTE协议栈的时候,觉得这步挺简单的,不就是扫个频点嘛。后来在实验室里被一个弱信号场景折腾了两天,才明白这里面门道有多深。今天咱们就把这层窗户纸捅破。
4.1 UE开机流程:从按下电源键到驻留小区
整个开机流程,我习惯把它拆成四个阶段:
- 频点扫描:UE在支持的频段内盲扫,找可用的载波
- 同步检测:检测PSS/SSS,获取物理小区ID和帧同步
- 系统信息读取:解MIB和SIB,拿到网络配置参数
- 小区选择:根据准则判断是否驻留
你想想看,这四步缺一不可。哪一步卡住了,手机就只能在屏幕上显示「无服务」。
核心要点: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检测成功但SSS失败,那大概率是频偏太大或者信号太弱。
4.6 常见问题与排查思路
最后,我整理了几个我在项目中遇到过的典型问题,供你参考:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| UE搜不到任何小区 | 频点扫描失败 | 检查频段支持、射频前端、天线 |
| PSS检测成功,SSS失败 | 频偏过大或信噪比太低 | 检查本振精度、AGC设置 |
| MIB解调成功,SIB1读不到 | PBCH配置错误或PDCCH盲检失败 | 检查MIB中的PHICH配置、带宽一致性 |
| SIB1读到但SIB2超时 | SIB调度信息配置错误 | 核对SIB1中的调度列表 |
| S准则通过但无法驻留 | 小区被禁止或PLMN不匹配 | 检查SIB1中的cellBarred和PLMN列表 |
嗯,小区搜索与同步这部分内容,说难不难,说简单也不简单。关键是把每一步的原理搞清楚,再结合信令日志和物理层测量数据去定位问题。下次遇到UE搜网慢或者驻留失败的情况,你应该知道从哪里下手了。