ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus
名称:ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus
软件:Quartus
语言:Verilog
开发板/平台:Cyclone IV FPGA开发板
功能介绍
本设计实现了基于 FPGA ROM 的波形读取与 DA 输出控制功能,使用 Verilog 编写,在 Quartus 工程中完成综合、编译与管脚分配。系统通过触摸按键触发输出流程,从片内 ROM 中读取预存波形数据,并将 8 位数据送至 DA 接口,同时输出 DA 驱动时钟与控制方波信号。 工程适合用于学习 FPGA 波形发生、ROM IP 调用、并行 DA 芯片驱动、按键触发控制以及顶层模块集成。顶层模块 ROM_wave_da 将触摸控制、ROM 读数据和 DA 波形发送三个部分连接起来,结构直观,便于二次修改波形表、调整输出节奏或扩展更多控制方式。 该设计面向 Cyclone IV FPGA 开发板验证场景,外部 DA 接口代码注释中标注为 AD9708 驱动时钟与 8 位数据输出,适合作为 FPGA 控制 DA 输出激励信号、测试信号或基础波形发生实验的参考工程。运行环境
开发语言:Verilog。 开发软件:Quartus。 目标验证平台:Cyclone IV FPGA 开发板。 顶层模块:ROM_wave_da。 主要工程文件包含 Quartus 工程配置、管脚分配、时序约束、Verilog RTL 源码以及 ROM IP 相关文件。设计思路
系统以 ROM_wave_da 为顶层模块,围绕“触摸触发、ROM 存储波形、DA 并行输出”的流程组织逻辑。50MHz 系统时钟作为主时钟输入,复位信号用于初始化各功能模块,触摸按键经过控制模块处理后产生开始信号 start_en,使后级波形发送模块进入数据输出过程。 波形数据预先存放在 ROM 中,顶层通过 rd_addr 访问 ROM 地址,通过 rd_data 获得对应的 8 位波形采样值。这样可以把波形数据与发送时序分离,后续需要更换波形时,主要调整 ROM 初始化数据或 ROM IP 配置即可,整体控制结构保持清晰。 激励信号模块 da_wave_send 根据开始信号读取 ROM 数据,并输出 DA 驱动时钟 da_clk 与 8 位 stimulate 数据,面向 AD9708 类并行 DA 接口。touch_ctrl 模块同时输出 ctrl 控制信号,代码注释中标明该控制信号为 250kHz 方波、2us 高电平,可作为外部电路同步或控制用途。模块结构
顶层模块:ROM_wave_da,负责连接系统时钟、复位、触摸按键、ROM 读端口、DA 输出端口和控制信号输出。 控制模块:touch_ctrl,用于处理触摸按键输入,产生 start_en 开始信号,并输出 ctrl 控制方波。 波形发送模块:da_wave_send,根据 start_en 读取 ROM 数据,产生 ROM 地址 rd_addr,并输出 da_clk 与 8 位 DA 数据 stimulate。 采集相关模块:ad_wave_rec,用于工程中的 AD 波形接收相关逻辑参考。 存储模块:rom_32、rom_256x8b,用于存放波形采样数据,工程当前顶层例化 rom_32,保留了 rom_256x8b 的替换接口示例。开发板验证
工程已结合 Cyclone IV FPGA 开发板进行验证,配套管脚分配用于完成系统时钟、复位、触摸按键、DA 时钟、8 位 DA 数据输出以及控制信号等端口映射。开发板运行时可通过触摸按键触发波形输出流程,控制信号端输出固定节奏方波,DA 数据端按照 ROM 读出的波形数据进行输出,适合用于 FPGA 驱动外部 DA 芯片产生激励波形的实验验证。


演示视频
演示视频展示了工程在开发板上的运行效果,可用于查看触摸按键触发、控制信号输出以及 DA 波形数据输出的整体工作过程。仿真图/仿真说明/设计文档图片
设计文档内容覆盖工程文件、程序文件、程序编译、RTL 图、管脚分配、Testbench、整体仿真图、控制信号模块、ROM 模块和激励信号模块等部分。仿真说明可用于理解顶层连接关系、各子模块职责以及 ROM 读数到 DA 输出的时序流程。












部分代码
以下展示顶层模块 ROM_wave_da 的部分代码,完整源码请下载压缩包查看。
module ROM_wave_da(
input sys_clk , //系统时钟50MHz
input sys_rst_n , //系统复位,低电平有效
input touch_key , //触摸按键
//DA芯片接口
output da_clk , //DA(AD9708)驱动时钟,最大支持125Mhz时钟
output [7:0] stimulate , //输出给DA的数据
output ctrl //控制信号输出--250kHz的方波(2us高电平)
);
wire start_en;
//wire define
wire [4:0] rd_addr; //ROM读地址
wire [7:0] rd_data; //ROM读出的数据
//*****************************************************
//** main code
//*****************************************************
//控制信号模块
touch_ctrl i_touch_ctrl(
. sys_clk (sys_clk ), //时钟信号50Mhz
. sys_rst_n(sys_rst_n), //复位信号
. touch_key(touch_key), //触摸按键
. ctrl (ctrl) , //输出控制信号(方波)
. start_en (start_en) //开始信号
);
//ROM存储波形
rom_32 rom_32_inst (
.address ( rd_addr ),
.clock ( sys_clk ),
.q ( rd_data )
);
//rom_256x8b u_rom(
// .address (rd_addr),
// .clock (sys_clk),
// .q (rd_data)
// );
//激励信号模块
da_wave_send u_da_wave_send(
.clk (sys_clk),
.rst_n (sys_rst_n),
.start_en (start_en),
.rd_data (rd_data),
.rd_address (rd_addr),
.da_clk (da_clk),
.da_data (stimulate)
);
endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus