
简介2017年全国大学生电子设计竞赛调幅信号处理实验电路F题完整方案包面向本科电赛参赛者与嵌入式系统学习者尤其适合正在备赛或需要赛题实战参考的同学。资源以该题为主线提供试题原文、解决思路与可运行源码工程基于STM32F10x标准外设库覆盖定时器、LCD显示、ADC采集、I2C、CAN通信等调幅信号处理常用模块兼容Keil开发环境可编译烧录后直接运行便于逐段理解与二次修改。包内共110个文件以43个C源码和43个H头文件为主体并含PDF说明、Hex固件、Keil工程配置uv2/uvprojx、启动汇编文件以及编译清理批处理脚本整体压缩包仅1.16MB目录紧凑适合快速下载学习。目前已有394人学习使用配合串行12864显示和液晶屏驱动示例可帮助读者把赛题方案迁移到自己的硬件平台完成从算法验证到整机联调的完整训练。1. 调幅信号处理实验电路拿分的关键不在解调而在信号链配合2017年全国大学生电子竞赛F题“调幅信号处理实验电路”拿到手现场信号源输出的是标准调幅波你要做的是把这一路信号从输入到输出完整处理好放大、解调、自动增益控制、低频信号恢复每一项都有硬指标。真正拉开分差的不是某一个模块做得多极致而是整条链路的总增益分配、各路接口的电平匹配以及电源和地线上的干扰控制。包络检波人人都能搭但要在输入动态范围几十倍变化、输出幅度还保持稳定这个前提下就不得不考虑同步检波和AGC的配合。这篇博文适合备赛学生和带赛老师也适合想系统过一遍调幅信号处理链路的硬件工程师我会把从头调通这条链路的完整路径、参数计算和容易翻车的地方一次讲清。2. 调幅信号解调方案选型包络检波、同步检波与超外差的取舍2.1 调幅信号的频域结构决定了解调的本质先明确一个基本事实调幅信号在时域是载波幅度随低频调制信号变化在频域则是载波分量加上下两个边带。设载波频率为 fc调制频率为 fm调制度为 mAM 信号可以写成 s(t) A[1 m·cos(2π fm t)]·cos(2π fc t)。展开后得到三个频率分量fc 处的载波、fcf m 处的上边带、fc−f m 处的下边带。解调的本质就是把叠加在 fc 附近的频谱整体搬回基带让低频分量重新出现在输出端。这一频谱结构直接告诉了你硬件实现的边界。包络检波利用的是 AM 信号本身幅度携带信息这一特点二极管加低通就能工作但对输入的信噪比和调制度很敏感而同步检波通过把输入信号与本地再生载波相乘再低通滤除高频分量属于真正的频谱搬移对弱信号和窄带干扰的抑制能力明显更好。2017年F题的竞赛环境下输入信号幅度跨度大、输出信号还要求低失真靠简单包络检波往往把动态范围和失真指标一起丢掉这也是大量参赛队分数不高的直接原因。2.2 三种常见解调结构的原理与性能差异对比常见可选的方案有三种二极管包络检波、模拟乘法器同步检波、超外差加中频检波。二极管包络检波是最早能被想到的方案电路结构是一个检波二极管、一个滤波电容和一个负载电阻时间常数取在载波周期的数十倍、调制信号周期的几分之一之间即可。它的优点是元件少、不用恢复载波缺点是二极管正向压降在小信号时形成死区输入幅度低到几百毫伏级别时失真就很明显另外它无法区分载波幅度变化和调制信号变化对幅度型干扰没有抑制能力。同步检波用模拟乘法器把输入 AM 信号与本地载波相乘经过低通后直接恢复调制信号。乘法器可以用 AD633、AD835 这类四象限模拟乘法器也可以用开关型乘法器如双平衡混频器。同步检波对载波相位很敏感输出幅度正比于 cos φ相位误差 φ 接近 90° 时输出直接归零因此它必须配套载波恢复电路。成本比包络检波高但换来的是更宽的输入动态范围、更低的失真以及更强的抗幅度干扰能力。超外差结构在射频接收机里最常用先与本振混频下变频到固定中频经过中频带通滤波后再检波。优势是中频滤波器可以把邻道干扰滤掉增益分配也更自由射频段不需要太高的增益不容易自激。代价是电路级数多、本振设计麻烦竞赛计时条件下实现完整的超外差链路往往力不从心。三种方案的对比归纳为下表。方案电路复杂度载波恢复小信号能力失真水平适合场景包络检波低不需要差高信号强、指标宽松同步检波中需要锁相或窄带滤波好低动态范围大、低失真要求超外差高本振独立好低频带拥挤、抗干扰要求高2.3 F题的竞赛约束如何影响方案取舍竞赛题和产品设计的最大区别在于时间。你拿到题目后真正能用于硬件调试的时间只有三天两夜如果一开始就做全超外差仅中频滤波器的绕制和本振的频率稳定就要耗掉大量时间。我见过不少队伍第一天就把方案定成外差结构结果最后一天连闭环都没调通。所以一个稳妥的取舍是输入信号频段比较干净、题目没有明确给出邻道干扰时不做超外差直接采用直放式同步检波链路把精力放在 AGC 稳定性和解调失真两个指标上。同步检波需要本地载波最直接的办法是用锁相环从输入信号里恢复。AM 信号功率集中在载波分量上锁相环锁定速度足够快恢复出的载波与输入同频同相再配合 90° 移相网络馈给乘法器使用。锁定环路通常用 CD4046 这类集成锁相环芯片外围加一个二阶环路滤波器就足够稳定。这套方案在历届竞赛中相当常见元件通用、参考资料多、调试经验也容易找到适合大多数队伍作为主力架构。3. 用 Python 仿真调幅信号处理链路乘法器解调与滤波器参数标定3.1 为什么建议先做软件仿真再动手焊板2025 年的备赛节奏下软件仿真已经不是可选项而是前导步骤。F 题这类模拟信号链每一级的增益、带宽、噪声系数相互耦合在面包板上直接搭出了问题很难分清是前级放大增益不够还是后级滤波器把有用信号压掉了。用 Python 做链路级仿真先用行为级模型把每个模块的理想功能验证一遍确认整个系统在指标范围内能够工作再进入硬件设计问题定位会快得多。Python 侧做这类仿真不需要复杂的 EDA 工具。numpy 负责信号生成和数学运算scipy.signal 提供滤波器设计函数matplotlib 用来观察频谱和时域波形。行为级模型里每个模块都是两三行代码替换参数非常方便尤其适合扫描调制度、载波频率、滤波器截止频率这些关键参数。下面给出一个完整的同步检波仿真脚本它直接对输入 AM 信号做乘法器解调并用低通滤波器恢复调制信号。3.2 完整的同步检波行为级仿真代码import numpy as np from scipy import signal import matplotlib.pyplot as plt # 采样率和数据长度 fs 10e6 # 采样率10MHz保证1MHz载波和其谐波都在范围内 N int(100e-3 * fs) # 仿真100ms t np.arange(N) / fs # 信号参数 fc 1e6 # 载波频率1MHz fm 10e3 # 调制信号频率10kHz m 0.5 # 调制度50% # 生成AM信号叠加入背景噪声模拟非理想输入 np.random.seed(7) noise np.random.normal(0, 0.01, N) am (1 m * np.cos(2 * np.pi * fm * t)) * np.cos(2 * np.pi * fc * t) noise # 本地载波与输入同频同相乘2是为了补偿乘法器输出的一半损耗 ref np.cos(2 * np.pi * fc * t) mix 2 * am * ref # 设计4阶巴特沃斯低通滤波器截止频率50kHz b, a signal.butter(4, 50e3, btypelow, fsfs) out signal.lfilter(b, a, mix) # 打印解调输出的统计特征观察信号是否恢复 print(解调输出直流分量: {:.4f}.format(np.mean(out))) print(解调输出峰峰值: {:.4f}.format(np.max(out) - np.min(out))) # 绘制频域对比图观察频谱搬移结果 freq, spec signal.welch(out, fsfs, nperseg4096) plt.semilogy(freq, spec) plt.title(Demodulated Output Spectrum) plt.xlabel(Frequency [Hz]) plt.ylabel(Power Spectral Density) plt.grid(True) plt.show()这段代码我用几个关键参数说明它的行为。采样率 10MHz 是载波频率的十倍留给载波二倍频分量足够的频带余量否则乘法器产生的高频分量会折叠回基带调制度 m0.5 表示调制信号幅度是载波幅度的一半对应 50% 调制度这是竞赛题最常见的测试条件。while 循环里使用的 welch 估计频谱可以直接观察到解调输出在 10kHz 处有明确谱峰而 1MHz 和 2MHz 处的残量被低通滤波器压制到很低的水平。3.3 滤波器参数扫描与截止频率的选取规则同步检波后必须级联低通滤波器它的截止频率选择直接影响解调输出的平坦度和噪声。截止频率越高带内越平坦但噪声和载波泄漏越多截止频率越低带外抑制越好但高频调制分量也被衰减。当调制信号是 10kHz 时低通截止频率一般取 30kHz 到 100kHz 之间。截止 30kHz 对 10kHz 信号的平坦度好但用四阶巴特沃斯时在 10kHz 处已经有约 0.1dB 的衰减截止 100kHz 时平坦度更优但载波泄漏的残余明显增大。对 F 题这类指标要求我一般习惯把低通截至频率取在最高调制频率的 3 到 5 倍然后通过一次参数扫描验证。前面代码里的 butter(4, 50e3) 就是取 5 倍频率。如果需要更陡的滚降特性可以改用椭圆滤波器或者有源多反馈滤波器但要注意高阶有源滤波器在面包板上容易因运放带宽不足产生高频自激阶数不宜超过六级。还有一个容易忽略的参数是滤波器的群延迟特性如果后级要测量相位信息巴特沃斯的群延迟相对平坦这是它比切比雪夫更适合做解调输出的主要原因。硬件实现这套滤波器时常见的做法是 Sallen-Key 结构每一级用一只运放加 RC 网络构成二阶节两级级联得到四阶巴特沃斯。参数查表可得截止频率 50kHz 时第一级 R3.3kΩ、C1nF第二级 R3.3kΩ、C2.2nF再通过前级串联电阻微调实际截止频率。元件容差会导致截止频率偏移因此焊完后要用信号发生器扫频确认实际 -3dB 点在 50kHz ±5% 范围内。4. 调幅信号处理实验电路核心模块锁相环载波提取与 AGC 环路实现4.1 从AM信号中恢复本地载波锁相环电路与参数计算同步检波的前提是先有一路与输入载波同频的本地振荡信号。AM 信号中载波分量始终存在这就给锁相环恢复载波提供了依据把输入 AM 信号通过限幅放大器整形为方波送入锁相环的频率捕获范围VCO 锁定后就能输出与载波同频率的振荡。F 题最常见的载波频率范围在 500kHz 到 1.6MHz 之间我一般用 CD4046 或 74HC4046 来实现这个系列的锁相环芯片工作频率上限足够外围元件少调试也简单。CD4046 的 VCO 中心频率由外部电阻 R1 和电容 C1 决定频率近似为 f_vco 1/(R1·C1)。以 1MHz 载波为例取 C1100pF、R110kΩ实际频率约 1MHz再通过电位器微调。环路滤波器的带宽决定了锁相环的捕获速度和噪声带宽窄带滤波器输出载波更干净但输入信号频率漂移时容易失锁竞赛现场往往没有时间仔细调这个平衡。一个实用的起点是取环路滤波器的电阻 4.7kΩ、电容 10nF实测锁定后用示波器观察 VCO 输出与输入载波的相位关系再微调电容值。4.2 模拟乘法器与90°相位误差的消除方法锁相环恢复出的载波在理想情况下与输入载波同频同相但实际电路里输入链路的放大器、滤波器会引入附加相移导致乘法器两路输入存在相位误差 φ。同步检波输出幅度正比于 cos φφ30° 时已经损失 13% 的幅度φ60° 时损失一半这个误差直接影响最终输出指标的余量。消除相位误差不能靠理论计算因为运放的相移和布线寄生参数无法精确预估只能用实际电路调试来完成。最常用的调相做法是 RC 移相网络。锁相环 VCO 输出经过一级 RC 移相器通过改变电阻值调整相移量移相范围大约 0° 到 90°。调试时不用追求纯理论相位直接把输出接到示波器上看解调后的信号幅度调节移相电位器使幅度最大即可因为幅度最大点必然对应 φ 接近零。如果需要在现场快速确认可以把调制信号截止此时解调输出应为纯直流直流幅度最大点就是最佳移相点。移相网络后接一级射极跟随器做阻抗变换防止后级负载影响移相器特性。4.3 AGC环路的时间常数与增益控制电压边界输入 AM 信号幅度在题目设定的动态范围里变化如果没有自动增益控制解调输出会随输入幅度剧烈波动后级放大器过载产生失真无法满足输出稳定的指标。AGC 环路由可变增益放大器、峰值检波器和比较积分器构成形成一个负反馈闭环。常见做法是用 VCA810 或 AD603 作为可变增益放大器VCA810 的增益控制范围为 -40dB 到 40dB增益与控制电压的关系约为 40dB/V控制电压输入范围是 -2V 到 0V。峰值检波器把解调输出的幅度转换成直流电平与一个基准电压比较误差经过积分器后作为增益控制电压整个 AGC 环路的响应速度由峰值检波器的滤波电容和积分器的时间常数共同决定。时间常数太短控制电压会跟着调制信号本身的包络变化产生“增益泵”现象让输出信号额外失真时间常数太长输入幅度突变时输出恢复得太慢。对于调制频率 10kHz、输入幅度每秒变化数次的典型竞赛场景峰值检波电容取 10μF积分器时间常数取 10ms 左右是经过实践验证的起点。下面给出 VCA810 的典型外围电路连线示意描述其信号流向和参数选择。输入信号 - 前级固定增益放大 - VCA810 信号输入引脚 VCA810 增益控制引脚 - 积分器输出 VCA810 输出 - 乘法器解调 - 低通滤波 | - 峰值检波器 - 基准比较 - 积分器4.4 调试顺序与常见故障定位策略整条链路第一次上电时不要直接接成闭环否则环路参数不合适会在一个点上振荡你却分不清是哪一级引起的。先把 AGC 断开让 VCA810 的控制电压固定在某个中间值比如 -1V 提供 0dB 增益然后用信号发生器送入标准 AM 信号从前往后逐级用示波器观察。前级放大器先看输出波形是否完整、有否自激乘法器输出重点看低频包络是否存在低通滤波器之后看包络是否平整、高频噪声是否被滤除。每一级都正常后再接通 AGC 闭环观察输出幅度是否稳定、有没有周期性波动。如果闭环后出现低频振荡表现为输出幅度周期性起伏先加长峰值检波电容容值把环路带宽压下来如果输出幅度偏大或偏小则调节基准电压和比较器的分压电阻。还有一个经常被忽视的坑是 VCA810 控制电压噪声控制引脚对噪声极其敏感积分器输出端到控制引脚之间需要加一节 RC 低通滤波。调试时用示波器 AC 耦合看控制电压纹波如果纹波超过 10mV就要加大滤波电容或者降低环路响应速度。5. 用频谱仪的谐波测量反推解调失真并快速调整参数频谱仪是判断解调输出质量最直接的仪器比示波器看波形更快也更能反映问题。解调输出的基波是 10kHz 调制信号失真主要表现为 20kHz、30kHz 甚至更高次的谐波分量。设置频谱仪时把中心频率放在 10kHzSPAN 设为 100kHzRBW 设为 300HzVBW 与 RBW 相同或略低均可。观察 10kHz 谱峰的幅度记录 20kHz、30kHz、40kHz 各条谱线的幅度按 THD 公式计算总失真各次谐波幅值的平方和再开方除以基波幅值乘以 100% 得到百分比。如果二次谐波明显偏高说明乘法器输入端存在直流偏置泄漏或者本地载波相位误差造成偶次失真。这时优先检查乘法器的输入隔直电容是否漏电、运放输出是否为零点漂移如果三次谐波偏高多数情况是前级放大过载输入信号幅度过大导致非线性压缩应降低前级固定增益或调整 AGC 闭环的目标电平。如果高频端出现一条宽噪声基底则是低通滤波器截止频率偏高或阶数不足加大滤波电容把截止频率往下压即可。一个完整的快速验证流程是这样输入信号保持载波频率 1MHz、调制频率 10kHz、调制度 50%用频谱仪记录基波与各次谐波的相对电平计算 THD 是否低于目标值再把输入信号幅度提升 10dB确认输出幅度变化在 1dB 以内且 THD 没有明显恶化。整个操作控制在十分钟内相比反复看示波器波形更节省现场时间指标也更容易量化。最后保留这份频谱记录写进测试报告作为 F 题评分的数据支撑。本文还有配套的精品资源点击获取