名称:AM 调制信号发生 FPGA 设计 Verilog Vivado VHDL
软件:Vivado
语言:VHDL
功能介绍
本设计实现 AM(Amplitude Modulation,幅度调制)信号的 FPGA 数字生成,适合用于通信原理实验、数字调制算法学习以及 Vivado FPGA 工程练习。设计输出为 16 位有符号 AM 调制结果 AM_mod,可在仿真中观察调制波形随时钟运行后的变化。
系统以时钟和低有效复位作为主要控制信号,通过内部正弦波产生与调制运算形成 AM 调制数据。工程中包含正弦查表相关初始化文件,便于在 FPGA 逻辑中以 ROM 方式输出周期采样数据,再结合乘法运算完成调制处理。
该设计重点展示了数字 AM 调制在 FPGA 中的实现方式,包括波形采样表、相位/地址递进、载波或基带波形生成、调制计算以及 testbench 激励结构。对于需要学习 DDS、查表法波形产生、数字乘法器 IP 使用和 Vivado 仿真的用户具有直接参考价值。
运行环境
开发软件:Vivado。
设计语言:Verilog。
工程包含 Vivado XPR 工程文件、Verilog 用户源码、ROM 初始化文件以及 Vivado IP 相关文件。仿真环境可使用 Vivado 自带仿真流程,并可参考工程中的 testbench 对 AM_mod 输出信号进行观察。
设计思路
AM 调制的核心思想是利用低频调制信号改变高频载波的幅度,从而得到幅度随调制信号变化的已调波。在 FPGA 实现中,连续信号被离散化为数字采样点,正弦波形可通过 ROM 查表方式产生,再在时钟驱动下按地址顺序输出采样值。
本设计采用数字逻辑生成调制所需波形,并通过乘法运算完成调制幅度计算。ROM 初始化文件提供正弦采样数据,逻辑模块按时钟节拍读取波形点,乘法器 IP 用于完成调制相关的乘法处理,最终形成 16 位有符号 AM_mod 输出。
这种结构适合 FPGA 实现:ROM 查表方式资源结构清晰,波形频率可通过地址步进或采样控制进行扩展;乘法器 IP 便于利用 FPGA 内部 DSP 资源完成高速计算;模块化设计也方便后续加入 DAC 输出接口、按键频率控制、VGA/ILA 波形观察或更复杂的通信调制功能。
模块结构
主要模块包括:
1. tb_AM:仿真测试模块,产生 100 MHz 时钟和复位信号,例化 modulate 模块并观察 AM_mod 输出。
2. modulate:AM 调制核心模块,接收 clk、rst_n,输出 signed [15:0] AM_mod,完成调制数据生成。
3. cos_make:正弦/余弦波形生成相关模块,用于产生调制计算所需的周期波形数据。
4. ROM IP:用于存储正弦采样表,配合 sin_1024x8_signed.coe、ROM.mif 等初始化数据进行查表输出。
5. MULT IP:乘法器 IP,用于完成调制过程中的乘法运算。
仿真图/仿真说明/设计文档图片
仿真测试模块 tb_AM 产生 100 MHz 时钟,复位信号 rst_n 初始拉低,延时后释放复位,随后驱动 modulate 模块连续运行。仿真时可重点观察 AM_mod 输出端口,检查 AM 调制数据是否按预期产生周期性变化。
工程包含 Vivado 仿真相关脚本和 IP 仿真文件,可用于在 Vivado/xsim 环境下搭建仿真流程。ROM 初始化文件提供 1024 点、8 位正弦采样数据,可作为查表波形产生的基础。
部分代码
以下展示顶层模块 tb_AM 的部分代码,完整源码请下载压缩包查看。
module tb_AM();
//---------接口设置----------//
reg sclk;
reg rst_n;
wire signed [15:0] AM_mod;
//--------------------------//
initial sclk = 1;
always #5 sclk = ~sclk; //100M时钟
initial begin
rst_n = 0;
#500
rst_n = 1;
end
//--------------------------//
modulate modulate_inst0(
.clk (sclk),
.rst_n (rst_n),
.AM_mod (AM_mod)
);
endmodule
130