一、项目简介
本项目基于FPGA实现标准2ASK幅度键控调制与双方案解调,完整复现通信原理中的ASK调制技术。
工程包含两套解调体系,适合初学者对比学习:
-
方案一:非相干解调(包络检波):整流+滑动平均滤波+阈值判决,结构简单、无需载波同步
-
方案二:相干解调(Costas锁相环):I/Q正交混频+锁相环+PI环路滤波,抗干扰强、工业标准高精度解调
工程核心参数:
-
系统主时钟:26MHz
-
载波频率:100KHz
-
基带码元速率:25kbps
-
基带数据源:6阶M序列伪随机码
二、2ASK原理通俗讲解
2ASK(二进制幅度键控)是最基础的数字调制方式,原理极简:
-
基带码元为 1:输出高频载波
-
基带码元为0:关闭载波输出
数学本质:高频载波 × 基带0/1序列。
调制后信号携带基带信息,可通过信道传输,接收端通过解调还原原始数据。
三、整体工程模块架构
1、发射端(调制链路)
M序列生成(m_wave) → 载波ROM存储(rom_carry) → 载波生成(carry_wave) → 乘法调制(modulator)
2、接收端(双解调链路)
非相干解调:全波整流(ask_demod) → 滑动平均滤波(fir) → 阈值判决
相干解调:Costas锁相解调(coherent_dem) + PI环路滤波(loop_filter) 闭环锁相同步解调
四、发射端模块逐代码解析
1、基带数据源模块:m_wave(M序列生成)
功能
基于6阶LFSR线性反馈移位寄存器,生成周期63位伪随机二进制序列,模拟真实通信随机数据流。
核心代码
module m_wave( input CLK_25K, output m_seq ); reg [5:0] m_reg=6'b111111; always @(posedge CLK_25K) begin m_reg <= {m_reg[4:0], m_reg[5] ^ m_reg[4]}; end assign m_seq = m_reg[5]; endmodule
核心原理
-
本原多项式:x\^6+x\^5+1
-
序列周期:2\^6-1=63
-
25KHz时钟驱动,码元速率25kbps
-
禁止全0初始化,防止寄存器锁死无输出
2、载波存储模块:rom_carry
功能
基于Block ROM固化260点8位余弦波量化数据,配合26MHz时钟,输出100KHz标准载波。
核心参数
载波频率计算:26M/260=100KHz
使用 (* rom_style="block" *) 约束,强制占用块存储器,节省寄存器资源、波形更稳定。
3、调制器模块:modulator
功能
2ASK调制核心,基带码元与载波相乘。
assign ask_out = carry_in*m_seq;
-
m_seq=1:输出完整余弦载波
-
m_seq=0:输出归零,无载波
纯组合逻辑、零资源消耗,是标准OOK通断键控调制。
五、接收端一:非相干解调(包络检波)
适用场景:信噪比高、简易解调场景,无需载波同步。
1、全波整流模块:ask_demod
核心作用(重难点)
调制后的ASK波形是正负交变交流波形,如果直接滤波,正负半周会相互抵消,包络彻底消失,无法解调。
全波整流 = 负数取补码绝对值,全部转为正向单极性波形,保留幅度包络,为滤波做准备。
assign abs_value = (ask_signal_in[7] == 1'b1) ? (~ask_signal_in + 8'd1) : ask_signal_in;
2、滑动平均滤波模块:fir
功能
128点滑动平均FIR滤波,抹平整流后的100KHz高频载波波纹,还原平滑基带包络。
核心优化
-
采用递推求和:新和 = 旧和 + 新数据 - 最老数据,无需多次累加
-
除以128采用右移7位实现,FPGA无除法器资源消耗
-
彻底滤除高频载波,保留低速基带码元轮廓
六、接收端二:相干解调(Costas锁相环解调)
优势:自动同步发射端载波频率与相位,抗干扰强、低信噪比下仍可正常解调,是工程主流方案。
1、顶层解调模块:coherent_dem
整体流程
DDS正交载波生成 → I/Q双路相干混频 → 双路滑动滤波 → Costas鉴相 → PI环路滤波闭环 → 码元判决输出
核心原理
-
I路(同相):承载基带数据,用于最终码元解调
-
Q路(正交):承载相位误差,用于锁相闭环修正
通过鉴相得到相位偏差,经过环路滤波后修正DDS频率,实现载波自动同步。
2、PI环路滤波模块:loop_filter(锁相心脏)
功能
鉴相输出的误差信号抖动大、噪声多,无法直接调频。本模块通过比例+积分PI滤波,平滑误差、消除稳态偏差,输出稳定频率调节字。
核心公式
pi_out_full = (error_in * Kp) + (integral * Ki);
-
比例Kp:快速纠偏,提升锁相速度
-
积分Ki:累积微小误差,消除稳态相位差,实现无静差锁相
工程关键设计
-
算术右移>>>4:保留负数符号,防止负频率修正错误,阻尼环路震荡
-
code_en使能保护:无有效信号时冻结频率,防止噪声漂移
-
超宽积分寄存器:杜绝长期积分溢出
七、非相干解调 VS 相干解调(核心对比)
| 对比项 | 非相干解调(包络检波) | 相干解调(Costas锁相) |
|---|---|---|
| 载波同步 | 不需要 | 自动锁相同步 |
| 抗干扰能力 | 弱,易受噪声影响 | 强,低信噪比可用 |
| 资源消耗 | 极低,结构简单 | 较高,包含锁相闭环 |
| 解调精度 | 一般,存在包络失真 | 高,无稳态相位误差 |
| 适用场景 | 教学、简易通信系统 | 工程实际通信、抗干扰场景 |
八、工程重难点总结(面试/考试必背)
-
为什么ASK解调必须整流? ASK为正负交变交流波形,直接滤波会正负抵消、包络消失;全波整流转为单极性正向波形,才能保留幅度包络完成解调。
-
滑动平均滤波优势 无需复杂FIR IP核、无乘法器、资源极小,专门适配载波波纹滤除,完美匹配2ASK参数。
-
Costas环I/Q两路作用 I路传数据、Q路传相位误差,缺一不可,构成正交锁相闭环。
-
PI滤波器参数设计逻辑 Kp控速度、Ki控精度,参数过大会震荡跑飞,过小锁相速度慢,工程需折中配置。
-
相干解调核心优势 依靠锁相实现载波同步,利用相位信息解调,彻底甩开噪声干扰,是现代数字通信主流方案。
九、项目总结
本工程完整实现了FPGA 2ASK调制+双方案解调,从最基础的M序列数据源、载波存储、乘法调制,到传统包络检波解调、进阶Costas锁相相干解调,层层递进、逻辑闭环。
非常适合通信原理、FPGA数字调制解调初学者入门,既能理解基础调制解调思想,又能掌握锁相环、PI滤波、正交混频等进阶工程技术。