案例研究 · 5G NR SSB 接收机

用 AI 自动生成一台读得懂真实小区的 5G 接收机

一台 5G NR 小区搜索接收机,从参考设计变成了没人手写的 FPGA 硬件。最有说服力的检验:拿一段 真实录下来的空口信号喂给它,它把三个小区都读到了同一份广播消息。

AlgoSilicon 工程团队 · 2026

手机一开机,最先做的一件事就是找基站。它并不知道附近有哪些小区、每个小区的编号是 多少,于是扫过整段频谱,去捕捉每个小区每隔一小段时间发出来的一小块同步信号。在 5G 里这块信号 叫 SSB,它把主同步、辅同步和广播信道打包在一起,占 4 个 OFDM 符号、240 个子载波。

把这台小区搜索接收机手写到 FPGA 上,繁琐到项目一直搁着。我们换了个做法:让算法到硅的自动 流程直接对着参考设计生成整台接收机,目标是 Kria KV260。然后拿一段真实录下来的 5G 下行喂给它, 这段信号是 30 kHz 子载波间隔,里面含着三个小区。

分层生成,每一层都对照

这套流程不是一步写出硬件的。它把接收机分成三层,每一层都让机器去跟上一层对照:一份浮点 基准模型,输出跟 3GPP 的定义和 MATLAB 5G 工具箱吻合;一份周期级定点模型,逐比特对照基准模型; 以及最后的 Verilog RTL,逐比特对照周期级模型。相邻两层之间的等价,都是机器核对的,不是嘴上 保证的。

接收机做了哪些事

输入是一段基带 I/Q 采样。把它变成一个小区编号和译好的广播消息,要走四步。开机时接收机并不 知道小区属于哪一组,于是同时拿三个候选的主同步序列做相关。每一个都是复数匹配滤波,而复数匹配 滤波又拆成三路实数子相关,所以前端并行跑着九个折叠相关器去找同步峰。之后能量测量加峰值定位把 这块信号切出来,256 点 FFT 恢复出 240 个子载波,广播译码再把消息读出来。

接收机信号链切分到两个算力层:检测、提取和 256 点 FFT 在 KV260 逻辑;均衡、极化码译码、MIB 解析在主机;切分点在频谱这个前馈接口
接收机信号链,切在最窄的接口。同步与解调前端在 KV260 逻辑里满速运行,控制密集的 广播译码放在主机,定点频谱是两边的交接点。

切成两层,才能实时跑

这条链子不是整块塞进 FPGA 的。检测和解调是定速的流式运算,每一拍都在动,适合 fabric。广播 译码是控制密集的活:要在 336 个辅同步候选里搜,还要跑极化码列表译码,这类东西在 CPU 上更省。 所以设计切在整条链路最窄的接口,也就是恢复出来的频谱,两半各自跑在合适的地方。前端送出的是 16 位定点频谱,但主机这一侧照样能把广播消息 CRC 校验通过地译出来,因为导频均衡和极化码的编码增益 足够把量化噪声吃掉。

KV260 上的部署数据通路,按 Vivado 里的实际集成关系重画:主机处理器和 DDR,经 DMA 搬运和 AXIS 交换,接到接收机前端,样本进、频谱出
部署数据通路,按 Vivado 里的实际集成关系重画,手机上也看得清:主机处理器和 DDR, 经 DMA 搬运和 AXIS 交换,接到生成的接收机前端。

从三个真实小区里读出来

验证分两头。一头是拿 MATLAB 5G 工具箱当独立裁判,上千个符合标准的同步块,每个都带着已知的 小区编号和广播消息,译出来逐比特核对。另一头是拿真实录下来的信号:接收机把这段信号里的三个小区 全都读到了同一份广播消息,系统帧号都是 788、子载波间隔都是 30 kHz。这一致性本身就是检验,因为 同一片区域里同步的几个小区,广播消息本就该一致。

这次还纠正了参考脚本里的一个错误。它把加扰域的净荷没解扰就拿去解析,得出来的帧号是错的、 而且每个小区还各不相同。补上标准规定的解扰和解交织之后,三个小区才对上。

弱到什么程度还能解

真实信号只是一个工作点。要测稳健性,用 MATLAB 工具箱生成 1460 个多样化向量,覆盖全部 1008 个小区编号、所有 SSB 位置、任意广播消息、两种子载波间隔,再加白噪声扫频、载波频偏、频率选择性 衰落。干净信道下 300 个随机配置全部逐比特正确。白噪声扫频下,误块率在每资源单元 -2 dB 以上为 零,到 -6 dB 附近才开始明显掉,这正是低码率广播信道该有的抗噪门限。

误块率对每资源单元信噪比:-2 dB 以上为零,-6 dB 附近开始爬升
广播消息译码的抗噪门限,在向量扫频上实测。一路到抗噪极限之前都保持零误块。

比商用参考更省

九个相关器是盲检必需的算力,资源也主要花在这上面。每一个都以框架里最高效的折叠 FIR 生成, 所以在同一颗芯片上,检测器比商用高层次综合参考实现少用 38% 查找表、少用 75% 触发器,块存储 1 比 7。整机,检测器加解调,在 KV260 上布局布线收敛于 256 MHz,部署 overlay 在 200 MHz 链路速率 下时序收敛。

检测器资源,同一颗芯片:本设计对比商用 HLS 参考,查找表少 38%、触发器少 75%、块存储 1 比 7
检测器资源,同一颗芯片,来自布局布线后的报告:生成的相关器比商用 HLS 参考更省。

在真实硅片上,参考信号通过 DMA 灌进 KV260 前端,算出来的频谱读回来跟参考模型比对:2540 拍, 零误差。

在真实采集的信号上看它跑

下面的分析器回放一串多样化的同步块,走的是 KV260 前端频谱在主机上的同一条译码链路,没有 服务器、不接电台。随着信道变差,星座点从紧凑的 QPSK 一圈圈散开成噪声云,信号质量的历史曲线跟着 爬高,广播译码一路逐比特正确,直到抗噪极限才失败。

实时信号质量分析器回放信噪比扫频:PBCH 星座图从紧凑的 QPSK 一圈圈散开成噪声云,EVM 与 SNR 读数,以及译出的主信息块
实时分析器:信号质量与信噪比、随噪声散开的 PBCH 星座图、译出的主信息块,以及译码 流水。打开交互式演示

为什么这件事可以复用

这次做的是一台 5G 接收机,但整个方法里没有一处是 5G 专属的。从标准定义,到带时序的定点 模型,再到生成的电路,每一层都跟上一层逐位等价,而且这个等价是机器核对的。前端跑在 fabric、 译码放在主机,是切在整条链路最窄的接口上,这个按算力分工的思路对任何一条又长又不均匀的信号 处理链都成立。更省的资源也不是手工抠出来的:流程把每个相关器映射到最高效的硬件结构,所以才能 比商用工具综出来的还小。能带走的是这套方法,不是这一台接收机。

查看蜂窝 PHY 产品 索取数据手册