想象你是一个被空投到陌生城市的旅行者——手机关机后再开机,或者刚下飞机打开数据连接的那一瞬间,终端其实和这个旅行者处境一模一样:它不知道自己身处哪个网络、哪个频点、哪个基站,甚至连"时间"都不知道。
这不是夸张。在空口物理层这个维度上,终端面临三个根本性的未知:
解决这三连问的过程,就叫小区搜索(Cell Search)与初始同步。它是终端一切通信活动的"第零步"——没有它,后续的随机接入、注册、寻呼、切换全都无从谈起。
理解这一步的关键,在于一句话:基站必须在"终端完全不懂自己"的前提下,让终端听懂自己。 这就要求基站发出一种特殊设计、终端能"盲搜"识别的信号——5G 称之为 SSB(Synchronization Signal Block,同步信号块)。
在进入 SSB 之前,有必要先把"同步"这件事拆清楚。工程师调试时口中的"同步失败",其实可能对应三个不同层次的问题:
| 同步层次 | 对齐对象 | 失败后果 | 误差容忍度 |
|---|---|---|---|
| 采样同步 | ADC 采样时钟与基站 | 样点错位,星座图旋转、SNR 跌落 | 微秒级 |
| 符号/帧同步 | OFDM 符号边界、帧边界 | FFT 窗口对错,出现严重 ISI/ICI | 循环前缀(CP)长度内 |
| 频率同步 | 载波频率与基站 | 子载波间失去正交,能量泄漏(ICI) | 子载波间隔的 1%~2% |
第三个尤其值得强调。OFDM 的命根子是子载波正交(这点在《OFDM正交原理》里讲过),而正交的前提是收发双方的载波频率严格一致。但终端的本振(晶振)和基站不可能完全一样,总会有几十到几百 Hz 的载波频率偏移(CFO)。这个偏移一旦超过子载波间隔的约 2%,子载波之间的正交性就被破坏,能量互相泄漏,整个 OFDM 系统就崩了。
所以小区搜索不仅要找到时间,还要校准频率,让终端的本振"对准"基站。SSB 正是为这两件事同时设计的。
flowchart TD
A[终端开机<br/>完全不知基站] --> B{盲扫同步栅格 GSCN}
B --> C[在某个频率点<br/>检测到能量]
C --> D[与PSS做相关<br/>锁定符号边界]
D --> E[估计载波频偏CFO<br/>粗校准本振]
E --> F[与SSS做相关<br/>锁定帧边界+得到PCI]
F --> G[用PCI生成DMRS<br/>精校准+解码PBCH]
G --> H[读出MIB<br/>知道系统帧号/SIB1位置]
H --> I[监听SIB1<br/>准备随机接入]
style D fill:#fde68a
style F fill:#bbf7d0
style G fill:#bfdbfe
4G LTE 时代,同步信号(PSS/SSS)和广播信道(PBCH)是分散在整个载波带宽中心 6 个 RB 里的。5G 摒弃了这种设计,把它们打包成一个紧凑的、自包含的块,这就是 SSB。
SSB 的物理尺寸是固定的、精心选择的:
为什么是 240 个子载波、4 个符号?这是一个面积与效率的折中:太小则携带不了足够的相关增益和解码信息;太大则扫频太慢、终端功耗高。20RB×4 符号是 3GPP 反复权衡后的"最小可行灯塔"。
SSB 内部的资源映射非常讲究,三个核心信号各司其职:
flowchart TB
subgraph SSB["SSB 同步信号块 (4符号 × 240子载波)"]
direction TB
S0["符号0: 中间127子载波 = <b>PSS</b> (两侧56/57保护)"]
S1["符号1: 全240子载波 = <b>PBCH + DMRS</b>"]
S2["符号2: 中间127 = <b>SSS</b>,两端各48 = PBCH"]
S3["符号3: 全240子载波 = <b>PBCH + DMRS</b>"]
S0 --> S1 --> S2 --> S3
end
PSS[PSS: 粗同步<br/>确定符号边界+频偏]:::pss
SSS[SSS: 精同步<br/>确定帧边界+PCI组]:::sss
PBCH[PBCH: 基站名片<br/>承载MIB]:::pbch
classDef pss fill:#fde68a,stroke:#92400e
classDef sss fill:#bbf7d0,stroke:#166534
classDef pbch fill:#bfdbfe,stroke:#1e40af
注意一个细节:PSS 和 SSS 都只占中间 127 个子载波,两侧留有保护带。这是因为同步检测靠相关运算,保护带可以减少相邻信道干扰对相关峰的污染。而 PBCH 则充分利用 SSS 两侧那些"空着"的资源(符号2的两端各48子载波),这种"见缝插针"的映射让 SSB 在最小面积里塞下了最多的信息。
终端扫频找到疑似 SSB 的能量后,第一步是检测 PSS(Primary Synchronization Signal,主同步信号)。
PSS 的本质是一段已知的伪随机序列。5G 用的是 m 序列(最长线性反馈移位寄存器序列),长度为 127。注意这里和 LTE 不同——LTE 的 PSS 用的是 Zadoff-Chu 序列,而 5G 改用 m 序列,原因是 m 序列的互相关和自相关特性更适合宽带、低复杂度的硬件实现。
为什么 m 序列适合做同步?关键在于它的自相关特性:把序列和它自身对齐时,相关值是一个巨大的尖峰;而只要有任意一点错位,相关值立刻塌到接近零。用工程的话说,m 序列的"自相关函数像一个 δ 冲激"。
终端检测 PSS 的方法,是把接收到的信号和本地存储的 3 条候选 PSS 序列分别做互相关运算:
$$R_{yx}[d] = \sum_{n=0}^{126} y[n+d] \cdot x^{*}[n]$$
其中 $y[n]$ 是接收信号,$x[n]$ 是本地 PSS 候选序列。哪条候选序列在哪个时移 $d$ 上产生了最大相关峰,终端就认定:这就是 PSS,对齐的时刻 $d$ 就是符号边界。
PSS 总共只有 3 条序列,分别对应小区组内标识 $N_{ID}^{(2)} \in {0,1,2}$。只要 3 次相关,终端就能:
为什么 PSS 只设 3 条? 因为 PSS 是终端要"盲搜"的第一个信号,候选数必须极少,否则相关运算量爆炸。3 条是最小集合——只要能区分出"组内编号"即可,剩下的交给 SSS。这是一种经典的分层设计思想:先用粗粒度、低开销的信号缩小范围,再用细粒度的信号精确定位。
拿到 PSS 后,终端知道了"符号边界"和 $N_{ID}^{(2)}$,但还不知道帧边界(10ms 系统帧从哪开始),也不知道完整的小区身份。这一步交给 SSS(Secondary Synchronization Signal,辅同步信号)。
SSS 同样占 127 个子载波,但它的序列生成方式更复杂——是两条 m 序列交织而成的 Gold 序列。Gold 序列的好处是:可以用两条短 m 序列的组合,生成大量彼此互相关性极好的序列。
SSS 一共有 336 条序列,对应小区组标识 $N_{ID}^{(1)} \in {0,1,\dots,335}$。终端用和 PSS 类似的相关检测,从 336 条里找出本小区的 SSS,从而确定 $N_{ID}^{(1)}$。
为什么 SSS 能锁定"帧边界"而 PSS 不能?因为同一个 SSS 序列在一个 10ms 帧里只出现一次(具体说,在 SSB 所在的那个半帧的特定位置)。一旦终端在某个位置成功检测到 SSS,这个位置就唯一对应了帧结构里的一个时刻——帧边界就此确定。
现在,终端手里有了 $N_{ID}^{(1)}$ 和 $N_{ID}^{(2)}$ 两块拼图,可以计算出完整的 PCI(Physical Cell Identity,物理小区标识):
$$PCI = 3 \times N_{ID}^{(1)} + N_{ID}^{(2)}$$
其中 $N_{ID}^{(1)} \in {0,\dots,335}$,$N_{ID}^{(2)} \in {0,1,2}$,所以 5G 一共支持:
$$336 \times 3 = 1008 \text{ 个 PCI} \quad (0 \sim 1007)$$
对比 LTE 的 504 个 PCI,5G 翻了一倍,这正是为了应对更密集的网络部署和更多的邻区关系。
工程实战提醒:PCI 规划是网优工程师的"入门第一课"。相邻小区必须遵循 PCI 模 3、模 30、模 168 不冲突的原则——因为 PSS 用的是 $N_{ID}^{(2)} = PCI \bmod 3$,两个邻区若 PCI 模 3 相同,就共用同一条 PSS 序列,会产生严重的 PSS 干扰(俗称"模 3 干扰"),导致终端同步抖动甚至接入失败。
锁定 PCI 和帧边界后,终端要做的第三步是解码 PBCH(Physical Broadcast Channel,物理广播信道),获取 MIB(Master Information Block,主信息块)。
PBCH 是 SSB 里"承载内容"的部分,它携带的 MIB 虽然只有约 24 比特,但每一比特都是终端"继续往下走"的关键线索:
| MIB 信息域 | 位数 | 作用 |
|---|---|---|
| systemFrameNumber | 6 | 系统帧号 SFN 的高 6 位(低 4 位藏在别处) |
| subCarrierSpacingCommon | 1 | 该小区"公共"子载波间隔(区别于 SSB 的 SCS) |
| ssb-SubcarrierOffset | 4 | SSB 相对公共资源块的频域偏移 k_SSB |
| pdcch-ConfigSIB1 | 8 | SIB1 的 CORESET/搜索空间配置(最关键) |
| cellBarred | 1 | 本小区是否禁止接入 |
| dmrs-TypeA-Position | 1 | DMRS Type A 的符号位置 |
| 附加 L1 信令 | 8 | 半帧位、SSB index 高位等 |
其中最关键的是 pdcch-ConfigSIB1。因为 MIB 信息太少,不足以让终端接入网络;终端真正需要的是 SIB1(System Information Block 1),里面有完整的接入参数。而 SIB1 在哪找?MIB 通过 pdcch-ConfigSIB1 告诉终端一个 CORESET(控制资源集)的位置,终端去那里监听 PDCCH,拿到调度 SIB1 的 DCI,再从 PDSCH 上读出 SIB1——这就是所谓的 Type0-PDCCH 公共搜索空间机制。
PBCH 的物理层处理链路也很有讲究:MIB(24比特)加上 8 比特 L1 信令 → Polar 编码 → 速率匹配 → 加扰 → QPSK 调制 → 映射到 SSB 里那 432 个数据 RE 上。加扰序列和 DMRS 都依赖刚算出的 PCI,这就是为什么必须先解出 PSS/SSS 得到 PCI,才能解 PBCH——严格的前后依赖。
PBCH 还附带了 DMRS(解调参考信号),每 4 个子载波插一个,共 144 个。DMRS 一方面用于 PBCH 的信道估计(补偿无线信道的衰落),另一方面它的序列循环移位 $v = PCI \bmod 4$ 既避免了邻区 DMRS 碰撞,又额外携带了 SSB index 的低位信息——同一块硬件资源,承载双重信息,这是 5G 物理层一贯的"榨干每一比特"的设计哲学。
到这里,时频同步和身份识别都解决了。但 5G 有一个 LTE 完全没有的难题:波束。
在毫米波(FR2)甚至中频段,5G 基站用大规模天线阵列做波束赋形,把能量集中成窄波束打向特定方向。问题是:终端开机时,基站并不知道终端在哪个方向,一个固定方向的窄波束根本覆盖不到终端。
解决方案是 SSB 波束扫描(Beam Sweeping):基站在一个 5ms 的半帧内,用不同的波束方向轮流发送多个 SSB,像灯塔旋转扫射一样,确保每个方向都被"照亮"一次。这一组 SSB 叫 SSB 突发集(SS Burst Set)。
flowchart LR
subgraph Half["半帧 5ms (SS Burst Set)"]
B0[SSB0<br/>波束方向0]:::b
B1[SSB1<br/>波束方向1]:::b
B2[SSB2<br/>波束方向2]:::b
B3[SSB3<br/>波束方向3]:::b
B4[...]
BN[SSBn<br/>波束方向n]:::b
B0 --> B1 --> B2 --> B3 --> B4 --> BN
end
UE((终端<br/>测量每个SSB<br/>挑最强波束))
BN -.上报.-> UE
classDef b fill:#ddd6fe,stroke:#5b21b6
一个突发集里最多能放多少个 SSB(记为 $L_{max}$)取决于频段:
| 频段 | 子载波间隔 | 最大 SSB 数 $L_{max}$ |
|---|---|---|
| FR1 ≤ 3GHz | 15 或 30 kHz | 4 |
| FR1 > 3GHz | 15 或 30 kHz | 8 |
| FR2(毫米波) | 120 或 240 kHz | 64 |
频段越高、波束越窄,需要的扫描波束越多,所以 FR2 要 64 个。终端在搜索时会测量每个 SSB 的信号强度(L1-RSRP),挑出最强的那个 SSB 对应的波束作为自己初始接入的最佳波束——而它挑的是"第几个"SSB,正是通过 PBCH 的 SSB index 表达的。
为什么 LTE 不需要这一套? 因为 LTE 的同步信号是全向广播的(无波束赋形),一个 SSB 覆盖整个扇区。5G 的波束扫描是为 Massive MIMO 和高频段付出的必然代价,也是"用时间换空间"的典型设计。
还有一个绕不开的问题:终端怎么知道 SSB 在哪个频率?
5G 频谱太宽、频段太多,如果终端在每个 Hz 上都去搜 SSB,开机时间会长到无法忍受。3GPP 的解法是定义一个全局同步栅格(Global Synchronization Raster),用 GSCN(Global Synchronization Channel Number) 把全频段上"SSB 可能出现的中心频率"量化成一组离散的、数量有限的网格点。
终端开机后,只在它支持的频段对应的那些 GSCN 点上逐个搜索,而不是全频段盲扫。这把"无穷多个频率假设"压缩到了"几百到几千个候选点",开机搜索时间从理论上不可行变成了几百毫秒级。
| 频率范围 | GSCN 粒度 | 典型间隔 |
|---|---|---|
| 0–3 GHz | 3N + M(N=1..2499, M∈{1,3,5}) | 约 1.2 MHz |
| 3–24.25 GHz | 离散网格 | 约 1.44 / 17.28 MHz 级 |
值得注意的是,SSB 的频率位置(同步栅格)和它实际承载业务的载波中心(信道栅格)是解耦的。SSB 可以偏在载波的一侧,通过 k_SSB 和 pdcch-ConfigSIB1 告诉终端"业务载波在哪"。这种解耦让运营商能在不改动 SSB 频率的前提下灵活调整载波带宽——又是一个"为部署灵活性而设计"的例子。
把前面几节拼起来,终端从开机到具备接入条件,是一条严格串行的流水线:
sequenceDiagram
participant UE as 终端 UE
participant GNB as gNB 基站
Note over GNB: 持续周期性广播 SSB<br/>(默认20ms周期, 多波束扫描)
UE->>UE: 1. 按支持频段扫描 GSCN 同步栅格
UE->>UE: 2. 某GSCN点检测到能量 → 与3条PSS相关
Note over UE: 得到: 符号边界 + 粗频偏 + N_ID^(2)
UE->>UE: 3. 与336条SSS相关
Note over UE: 得到: 帧边界 + N_ID^(1)<br/>计算 PCI = 3*N1 + N2
UE->>UE: 4. 用PCI生成DMRS, 信道估计
UE->>GNB: (下行接收) 解码 PBCH → 得到 MIB
Note over UE: MIB含: SFN/k_SSB/pdcch-ConfigSIB1
UE->>UE: 5. 按pdcch-ConfigSIB1定位CORESET
UE->>GNB: (下行) 监听Type0-PDCCH → DCI 1_0
UE->>GNB: (下行) PDSCH → 解码 SIB1
Note over UE: 至此: 同步完成, 获得接入参数<br/>可发起随机接入
UE->>GNB: 6. Msg1 PRACH preamble (随机接入)
整条链路的精髓在于依赖关系不可跳过:没有 PSS 就没有符号边界;没有 SSS 就没有 PCI;没有 PCI 就解不了 PBCH 的 DMRS;没有 MIB 就找不到 SIB1;没有 SIB1 就不能随机接入。任何一环出问题,后面全部中断——这正是工程师排查"接入失败"时必须自上而下逐层定位的原因。
| 设计维度 | LTE | 5G NR | 设计动机 |
|---|---|---|---|
| 同步信号分布 | 分散在载波中心 6RB | 紧凑自包含 SSB (20RB×4符号) | 适配灵活带宽与前向兼容 |
| PCI 数量 | 504 | 1008 | 更密部署、更多邻区 |
| PSS 序列类型 | Zadoff-Chu | m 序列 | 低复杂度、宽带友好 |
| SCS 灵活性 | 固定 15kHz | 15/30/120/240kHz 多档 | 适配低频到毫米波 |
| 波束扫描 | 无(全向) | SS Burst Set 多波束 | 支撑 Massive MIMO/高频 |
| SSB 频率位置 | 固定载波中心 | 同步栅格 GSCN 解耦 | 灵活部署、快速搜网 |
可以看出,5G 同步设计的每一条改动都不是为改而改,而是被高频段、波束化、灵活参数集、密集组网这些新需求倒逼出来的。
把这些原理落到现网调试里,有几个高频踩坑点:
1. "UE 死活搜不到 5G"——八成是 SSB 频率/周期配错了。 排查路径:先确认 gNB 实际下发的 SSB 中心频率是否落在终端支持频段的某个 GSCN 上。若 SSB 频率不在 GSCN 网格上,终端根本扫不到——这是最隐蔽的低级错误。同时检查 SSB 周期(默认 20ms,配置成 160ms 会让初始搜网很慢)。
2. PCI 模 3 干扰导致"邻区信号忽强忽弱"。 用扫频仪或路测工具看 PSS 相关峰,如果同一区域两个强小区的 $PCI \bmod 3$ 相同,它们共用 PSS 序列,会互相"打架"。解决方法是重做 PCI 规划,保证邻区模 3 错开。
3. PBCH 解码失败但 PSS/SSS 正常——查 SCS 配置。 SSB 的子载波间隔和"公共 SCS"可能不同(MIB 里有专门一比特区分)。如果 MIB 里声明的公共 SCS 与实际业务载波不符,终端解 SIB1 时 FFT 尺寸算错,表现为"能同步但读不到系统消息"。
4. 毫米波场景下"随机接入前 SINR 很差"——可能是 SSB 波束没对准。 FR2 下终端依赖 SSB 波束扫描挑最佳波束。若基站 $L_{max}$ 配置过小或波束权值校准不准,覆盖会出现"死角"。排查要看每个 SSB index 的 L1-RSRP 分布是否合理。
Q1: PSS 和 SSS 到底有什么区别?为什么非要分两层? A: PSS 候选少(3条)、用于"粗定位"——锁定符号边界和粗频偏;SSS 候选多(336条)、用于"精定位"——锁定帧边界并补全 PCI。分层是为了把"先粗后精"的搜索复杂度压到最低:终端不必一次性在 336×3=1008 种组合里盲搜,而是先用 3 次 PSS 相关缩小到 1 个组内编号,再用 336 次 SSS 相关确定组编号,运算量大幅下降。
Q2: 终端开机后多久才能完成小区搜索? A: 典型情况几百毫秒。受三个因素影响:扫的 GSCN 点数(频段支持越多越久)、SSB 周期(20ms 比 160ms 快得多)、首次 PSS/SSS 检测的信噪比。冷启动+全频段搜索可能 1 秒以上;热启动(已存有频点信息)可压缩到 100ms 内。
Q3: 一个基站发的多个 SSB 是同时发的还是轮流发的? A: 在一个 5ms 半帧内时分轮流发,每个 SSB 占 4 个符号,对应一个不同的波束方向。这就是波束扫描。所以你测到的"SSB RSRP"其实是某一个波束方向打到你的强度,终端会挑最强的那一个。
Q4: SSB 和 SIB1 什么关系?为什么不能合成一个? A: SSB(含 MIB)是"最小灯塔",只够告诉终端"我是谁、SIB1 在哪";SIB1 信息量大得多(接入参数、公共信道配置等),必须用正常的 PDCCH/PDSCH 通道传输。把 SIB1 也塞进 SSB 会让同步信号变得臃肿、扫频变慢,违背了"灯塔要轻"的设计原则。
Q5: 如果两个邻区 PCI 完全相同会怎样? A: 灾难性的后果——终端会把两个小区当成同一个,PSS/SSS/DMRS 序列全部相同,无法区分,同步会在这两个小区信号间反复跳变,表现为频繁掉线、接入失败。所以 PCI 规划不仅要模 3/30/168 错开,更要保证物理相邻的小区PCI 绝不重复。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
