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 芯片产生激励波形的实验验证。

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 开发板验证图片 开发板3.jpg

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 开发板验证图片 开发板.jpg

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 开发板验证图片 开发板_2.jpg

演示视频

演示视频展示了工程在开发板上的运行效果,可用于查看触摸按键触发、控制信号输出以及 DA 波形数据输出的整体工作过程。

仿真图/仿真说明/设计文档图片

设计文档内容覆盖工程文件、程序文件、程序编译、RTL 图、管脚分配、Testbench、整体仿真图、控制信号模块、ROM 模块和激励信号模块等部分。仿真说明可用于理解顶层连接关系、各子模块职责以及 ROM 读数到 DA 输出的时序流程。

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image1.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image10.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image11.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image12.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image13.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image2.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image3.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image4.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image5.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image6.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image7.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image8.png

ROM 波形 DA 输出控制 FPGA 设计 Verilog Quartus 设计文档图片 image9.png

部分代码

以下展示顶层模块 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

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员