MATLAB 有一个参考设计,叫做 Image Transmission and Reception Using 802.11 Waveform and SDR。它给了一整套 802.11a 的发送和接收链路:把一张图片切成数据包,调制成 Wi-Fi 波形发出去,接收端再同步、纠错,把原图一字不差地拼回来。
真要把这台接收机搬到 FPGA 上,对照 MATLAB 代码一行行写成 RTL 或 HLS C,繁琐到这个项目 可以一拖好几年。于是我们换了一条路:让算法到硅的自动化流程读懂这套参考设计,直接生成接收机。 大概几天时间,整条 802.11a 接收链路就从数学模型自动生成了 Verilog,目标平台是 ADALM-Pluto 软件无线电上那块很小的 Zynq-7010 FPGA。
这就带出一个合理的问题:既然没有工程师手写过这套硬件,凭什么相信它是对的?这正是值得讲清楚的地方。
分层生成,逐层核对
这套流程不是一步到位地写硬件。它把接收机分成三层来构建,并让机器逐层对照上一层核对:
- 黄金数学模型:一份浮点参考,它生成的波形跟 MATLAB 标准工具箱完全吻合, 把"算法就是标准"这件事钉死。
- 周期级模型:把浮点参考转成低位宽定点,并补上逐拍的硬件时序, 机器核对它跟数学模型逐比特一致。
- Verilog RTL:从周期级模型翻译而来,并与之逐比特核对。
关键不在于"软件生成了代码",而在于每相邻两层之间都由机器逐比特自动核对,而不是嘴上保证。 定点硬件本来就不可能去比浮点的小数末位,它也不需要。它的硬指标只有一个:把发送的比特精确收回。
接收机做了哪些事
输入是射频前端(Pluto 上的 AD9363)下变频之后送出的一串基带 I/Q 采样,并不是天线信号。 接收机把这串采样变成干净的数据比特,每一步都对应 802.11a 标准:它检测每一个包并校正载波频偏, 用 64 点 FFT 解调每个 OFDM 符号并对每个子载波做均衡,把符号软解调成似然值并解交织, 再用维特比译码卷积码、解扰,恢复出净荷。
信号本身长什么样
有两张图刻画链路本身。发射频谱显示了 OFDM 的特征:64 个子载波填满 20 MHz 信道里 约 16.6 MHz 的带宽。误码率曲线则显示每种调制随信道变差时的表现:星座越密,承载的比特越多, 但要保持干净所需的信噪比也越高。
证据:一张图进去,同一张图出来
最有说服力的是端到端测试。我们把 MATLAB WLAN 工具箱生成的波形,经过 12 比特 ADC 模型, 再交给定点硬件译码。在 24 个包、共 38,400 比特上,接收机把发送的比特一个不差地收了回来。 发送的图片被精确地拼回原样。
在真实采集的信号上看它运行
同样的"一张图进、同一张图出"测试,在两根天线上做了空口实测,并把采集到的采样直接从射频 设备上保存了下来。下面的链路分析器在浏览器中回放这段真实的片上采集数据,不连接任何硬件。 随着数据速率从 BPSK 提升到 64-QAM,星座图逐步收敛,信道响应与频谱同步更新,图像也随着每个 数据包被译码而逐步重建。
分到三层处理器上,才塞进 Pluto
这台接收机又小又便于移植。作为完整设计在 Zynq-7010 上做一次完整布局布线,它以 162.7 MHz 的接收时钟收敛,占用 8,514 个 LUT、8,233 个触发器、5.5 块 BRAM 和 43 个 DSP;在 Zynq UltraScale+ RFSoC 上表征时,同一套设计达到 309.6 MHz,为更高速的标准留出了时钟余量。
但 ADALM-Pluto 的芯片太小。完整的接收机(约 8,500 个逻辑单元)加上无线电自己的接口逻辑 (又约 8,500 个),一起放不进这颗器件总共的 17,600 个。于是部署被拆到三层:对速率最敏感的 同步前端和 FFT 留在 FPGA 逻辑(PL)里;嵌入式 ARM 处理器(PS)用它的 DMA 引擎、射频驱动和 USB 桥负责搬运数据;更重的后端(信道估计、均衡、软解映射、Viterbi 译码)放到主机上跑。 FPGA 经 DMA 把频域符号交给处理器,处理器再经 USB 流给主机,两端跑同一个基准模型,所以这一拆 从头到尾都逐比特一致。
这样在空中两根天线上跑,交付的图像在每一种数据率下都逐比特恢复。有线连续 90 秒的运行里, 每个包都译出来了(1390 个里 1390 个);空口的原始单包成功率是 99.88%(832 里 831),差的那一个 是真实信道抖动、不是主机丢数据,协议会重发补回,所以图像照样完整。
为什么这件事可以复用
这里没有任何东西是针对某一张图片或某一个包的。同一套流程可以接过一份信号处理参考, 比如另一个标准、一条发射链路、一个自定义 OFDM 链路,用同样的方式、在每一层做同样的逐比特核对, 生成一台经过验证的接收机或发射机。这台接收机以无线 PHY IP 核的形式提供;它背后的方法, 也以设计服务的形式提供。






