• 方案介绍
  • 相关推荐
申请入驻 产业图谱

AM 调制信号发生 FPGA 设计 Verilog Vivado VHDL

06/15 14:44
130
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称: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

代码文件(付费下载)

相关推荐