1. 项目背景与需求解析
2022年全国大学生电子设计竞赛F题"信号调制度测量"是一个典型的数字信号处理实战项目,要求参赛队伍设计并实现能够准确测量调幅(AM)和调频(FM)信号调制度的系统。这个题目考察的核心能力包括:射频信号采集、数字下变频处理、调制参数解算算法以及实时系统实现。
在实际工程领域,调制度测量是通信设备测试、广播信号监测等领域的基础需求。例如在广播发射台,需要持续监测发射信号的调制深度是否符合行业标准(AM通常要求调制度在30%-90%之间);在无线电监测站,需要快速识别异常调制信号。传统测量仪器如频谱分析仪虽然能实现这些功能,但成本高昂且灵活性不足。
FPGA因其并行处理能力和可重构特性,成为实现实时信号处理的理想平台。与通用处理器相比,FPGA可以在纳秒级完成多通道信号处理,这对需要实时反馈的调制度测量场景至关重要。我们团队采用Xilinx Artix-7系列FPGA(具体型号XC7A35T)作为主控平台,其DSP Slice资源足够实现完整的数字下变频链路。
2. 系统架构设计
2.1 硬件平台选型
信号链路由以下关键模块组成:
- 射频前端:AD9361捷变收发器(70MHz-6GHz)
- 时钟系统:Si570可编程时钟发生器
- 数据处理:XC7A35T FPGA(215个DSP48E1单元)
- 数据接口:FT600 USB3.0桥接芯片
选择AD9361而非传统ADC+混频器方案,主要考虑其集成数字正交下变频(DDC)功能,可显著降低FPGA资源消耗。实测表明,在20MHz带宽下,AD9361的输出数据率可配置为30.72MSPS,满足题目要求的信号带宽(AM广播频段典型为9kHz,FM为200kHz)。
2.2 FPGA处理流水线设计
数字信号处理链路采用三级流水结构:
-
数字下变频(DDC)级
- 32位NCO(Numerically Controlled Oscillator)
- CIC补偿滤波器(补偿因子0.95)
- 半带滤波器(过渡带0.4π)
-
解调算法级
- AM解调:包络检波(希尔伯特变换实现)
- FM解调:正交鉴频(微分器系数[1,0,-1])
-
参数计算级
- AM调制度:m=(A_max-A_min)/(A_max+A_min)
- FM频偏:Δf=mean(abs(dφ/dt))/(2π)
关键设计决策:
- 采用定点运算(Q15格式)而非浮点,节省65%的DSP资源
- 使用Xilinx的DDS Compiler IP核生成本振,相位抖动<0.01°
- 解调算法选择基于实测对比:希尔伯特法比平方律检波信噪比高8dB
3. 核心算法实现细节
3.1 AM信号处理链
verilog复制// AM包络检测模块
module am_demod (
input clk, rst,
input signed [15:0] i_data, q_data,
output reg [15:0] envelope
);
// 希尔伯特变换实现
wire signed [31:0] mag_sq = i_data*i_data + q_data*q_data;
always @(posedge clk) begin
envelope <= $sqrt(mag_sq[30:15]); // 16位开平方
end
endmodule
调制度计算采用滑动窗口极值检测法:
- 设置10ms时间窗(对应307个采样点@30.72MSPS)
- 窗内最大值A_max通过比较树逻辑实现
- 窗内最小值A_min通过双端口BRAM缓存实现
- 最终调制度m=(A_max-A_min)/(A_max+A_min)
3.2 FM信号处理链
FM解调采用相位差分法,关键方程为:
Δφ[n] = arctan(Q[n]I[n-1] - I[n]Q[n-1]) / (I[n]I[n-1] + Q[n]Q[n-1])
Verilog实现时采用CORDIC算法计算相位差,资源占用情况:
- 每个CORDIC核消耗3个DSP48E1
- 流水线级数设为10级时,相位误差<0.1°
- 频偏计算采用滑动平均滤波器(窗长1ms)
4. 系统校准与测试
4.1 校准流程
-
幅度校准:
- 输入-30dBm标准信号
- 调整ADC前端PGA增益,使数字域幅度达到满量程的70%
- 记录校准系数到EEPROM
-
频率响应校准:
- 扫频测试(100kHz-30MHz)
- 生成幅度补偿LUT(12bit地址,16bit数据)
4.2 实测性能
测试信号源:Rigol DG4062函数发生器
| 指标 | AM模式 | FM模式 |
|---|---|---|
| 测量范围 | 10%-120% | ±75kHz |
| 测量误差 | <1% | <2% |
| 更新速率 | 100Hz | 200Hz |
| 动态范围 | 50dB | 60dB |
特殊场景处理:
- 过调制AM信号(m>100%):启用clipping检测算法
- 多频点FM信号:采用FFT辅助的峰值检测
5. 关键问题与解决方案
5.1 频谱泄漏抑制
初期测试发现AM测量时存在±5%的波动,原因是:
- 有限长FFT导致的频谱泄漏
- 本振相位噪声影响
改进措施:
- 采用Blackman-Harris窗函数(旁瓣衰减92dB)
- 增加NCO相位抖动补偿模块
- 调整CIC滤波器补偿因子至0.98
5.2 实时性优化
原始设计存在200ms延迟,通过以下优化降至10ms:
- 将滑动窗改为环形缓冲区
- 极值检测采用并行比较结构
- 关键路径寄存器重定时(retiming)
资源消耗对比:
| 模块 | 优化前(LUT) | 优化后(LUT) |
|---|---|---|
| AM解调 | 1243 | 876 |
| FM解调 | 2156 | 1589 |
| 参数计算 | 987 | 642 |
6. 工程实现建议
-
调试技巧:
- 使用ChipScope抓取I/Q数据时,设置触发条件为信号过零点
- 通过AXI-Lite接口动态调整滤波器系数
- 在Vivado中启用power_opt_design优化功耗
-
扩展方向:
- 增加自动调制识别功能(AM/FM/PM)
- 支持多通道并行测量(利用FPGA并行性)
- 添加以太网远程监控接口
-
量产考虑:
- 替换AD9361为低成本方案(如ADRV9009)
- 采用Zynq SoC整合控制处理器
- 增加温度补偿算法(-40℃~85℃)
实际部署中发现,当环境温度变化超过30℃时,AD9361的增益漂移会导致约3%的测量误差。我们在FPGA中实现了基于查找表的温度补偿算法,通过读取板载温度传感器(精度±0.5℃)实时调整前端增益,最终将温漂误差控制在0.5%以内。
