名称XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado软件Vivado语言Verilog功能介绍本设计实现基于 XADC 的模拟量采集与 DA 数据输出控制顶层模块为 AD_top。系统以 50MHz 时钟作为工作时钟低电平复位输入 reset_n 经过反相后作为 XADC IP 的高电平复位信号外部模拟输入通过 vauxp1、vauxn1 接入 XADC 辅助通道。 XADC 转换完成后设计利用 eoc_out 触发下一次动态重读并在 drdy_out 有效且通道号为 5b1_0001 时锁存转换数据。输出数据取 XADC 转换结果 do_out[15:2]形成 14 位 AD_data用于驱动后级 DA 数据端口。 DA 接口部分将 drdy_out 直接作为 da1_clk 与 da1_wrt 输出使采样数据更新节拍与数据就绪信号保持同步da1_data 输出当前锁存的 14 位采样值。整体结构适合学习 XADC IP 调用、模拟通道采样、采样数据位宽截取以及 FPGA 与外部 DA 接口的数据连接方式。运行环境开发语言Verilog 开发软件Vivado 顶层模块AD_top 主要 IPxadc_wiz_0 仿真文件test.v 约束文件xdac_pins.xdc设计思路设计核心是通过 Vivado 的 XADC Wizard IP 完成片上 ADC 采样再由顶层逻辑对采样通道和数据有效信号进行判断。XADC IP 的 dclk_in 连接系统时钟 clkreset_in 由外部低电平复位信号取反得到vauxp1/vauxn1 作为实际采样输入端vp_in/vn_in 在顶层中固定为 0。 在 XADC 读通道控制上daddr_in 由 {2b00, channel_out} 组成den_in 连接 eoc_out表示每次转换结束后发起下一次读操作dwe_in 固定为 0仅进行读取不写入配置寄存器。channel_out 用于指示当前转换通道drdy_out 用于指示 do_out 数据有效。 数据处理逻辑保持简洁当 drdy_out 为 1 且 channel_out 等于 5b1_0001 时说明目标辅助通道数据有效此时将 do_out 高 14 位写入 AD_data。非目标通道或数据未就绪时AD_data 保持原值避免输出端出现无效更新。 输出侧没有增加复杂缓存或协议转换而是将数据就绪信号直接映射到 DA 时钟和写信号14 位采样值同步输出到 da1_data。这种结构便于观察 XADC 采样到 DA 输出之间的完整数据路径也方便在实际工程中继续扩展滤波、缩放、缓存或显示模块。模块结构AD_top顶层模块完成时钟复位、XADC IP 例化、通道判断、采样数据锁存以及 DA 接口输出。 xadc_wiz_0Vivado XADC Wizard 生成的采样 IP负责模拟辅助通道采样、通道号输出、转换完成指示和数据有效输出。 test仿真测试模块用于工程行为仿真参考。 glblVivado 仿真全局模块。开发板验证工程包含实际管脚约束文件 xdac_pins.xdc可用于开发板工程实现和引脚分配参考。实现结果中包含 AD_top.bit、布局布线、时序、功耗、IO、DRC 等 Vivado 实现报告说明该设计已经按约束完成综合、实现与比特流生成流程。演示视频包含演示视频可用于查看工程运行和实验现象参考。演示视频请关注公众号后获取对应资料查看。仿真图/仿真说明/设计文档图片包含工程文件、程序文件、程序编译、RTL 图、管脚分配等设计文档图片内容并包含 Vivado 仿真相关文件与 test.v 测试文件可作为理解工程结构、编译流程、RTL 连接关系和引脚分配的参考。部分代码以下展示顶层模块AD_top的部分代码完整代码可关注下方公众号卡片获取。module AD_top( input clk,//50M input reset_n,//低电平复位--key1 input vauxp1, input vauxn1, output da1_clk,//DA时钟 output da1_wrt,//DA数据写信号 output [13:0] da1_data//输出的数据 ); wire vp_in;//AD接口P端 wire vn_in;//AD接口N端 wire eoc_out; wire [4 : 0] channel_out; wire drdy_out; wire [15 : 0] do_out; reg [13:0] AD_data;//输出的采样值962kps wire reset_in;//高电平复位 assign reset_in ~reset_n; assign vp_in 0; assign vn_in 0; xadc_wiz_0 i_xadc_wiz_0 ( .di_in(16b0), // input wire [15 : 0] di_in-- .daddr_in({2b00,channel_out}), // input wire [6 : 0] daddr_in-- .den_in(eoc_out), // input wire den_in-- .dwe_in(1b0), // input wire dwe_in-- .drdy_out(drdy_out), // output wire drdy_out-- .do_out(do_out), // output wire [15 : 0] do_out-- .dclk_in(clk), // input wire dclk_in-- .reset_in(reset_in), // input wire reset_in-- .vp_in(vp_in), // input wire vp_in-- .vn_in(vn_in), // input wire vn_in-- .vauxp1(vauxp1), // input wire vauxp1-- .vauxn1(vauxn1), // input wire vauxn1-- .channel_out(channel_out), // output wire [4 : 0] channel_out-- .eoc_out(eoc_out), // output wire eoc_out-- .alarm_out(), // output wire alarm_out-- .eos_out(), // output wire eos_out-- .busy_out() // output wire busy_out-- ); //输出的采样值962kps always(posedge clk) begin if(drdy_out1b1 channel_out5b1_0001) //1ADC地址为h11 AD_datado_out[15:2];//取高14位输出 else AD_dataAD_data; end assign da1_clkdrdy_out;//DA时钟 assign da1_wrtdrdy_out;//DA数据写信号 assign da1_dataAD_data;//输出的数据 endmodule代码获取点击下方公众号卡片
XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado
发布时间:2026/6/12 1:33:29
名称XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado软件Vivado语言Verilog功能介绍本设计实现基于 XADC 的模拟量采集与 DA 数据输出控制顶层模块为 AD_top。系统以 50MHz 时钟作为工作时钟低电平复位输入 reset_n 经过反相后作为 XADC IP 的高电平复位信号外部模拟输入通过 vauxp1、vauxn1 接入 XADC 辅助通道。 XADC 转换完成后设计利用 eoc_out 触发下一次动态重读并在 drdy_out 有效且通道号为 5b1_0001 时锁存转换数据。输出数据取 XADC 转换结果 do_out[15:2]形成 14 位 AD_data用于驱动后级 DA 数据端口。 DA 接口部分将 drdy_out 直接作为 da1_clk 与 da1_wrt 输出使采样数据更新节拍与数据就绪信号保持同步da1_data 输出当前锁存的 14 位采样值。整体结构适合学习 XADC IP 调用、模拟通道采样、采样数据位宽截取以及 FPGA 与外部 DA 接口的数据连接方式。运行环境开发语言Verilog 开发软件Vivado 顶层模块AD_top 主要 IPxadc_wiz_0 仿真文件test.v 约束文件xdac_pins.xdc设计思路设计核心是通过 Vivado 的 XADC Wizard IP 完成片上 ADC 采样再由顶层逻辑对采样通道和数据有效信号进行判断。XADC IP 的 dclk_in 连接系统时钟 clkreset_in 由外部低电平复位信号取反得到vauxp1/vauxn1 作为实际采样输入端vp_in/vn_in 在顶层中固定为 0。 在 XADC 读通道控制上daddr_in 由 {2b00, channel_out} 组成den_in 连接 eoc_out表示每次转换结束后发起下一次读操作dwe_in 固定为 0仅进行读取不写入配置寄存器。channel_out 用于指示当前转换通道drdy_out 用于指示 do_out 数据有效。 数据处理逻辑保持简洁当 drdy_out 为 1 且 channel_out 等于 5b1_0001 时说明目标辅助通道数据有效此时将 do_out 高 14 位写入 AD_data。非目标通道或数据未就绪时AD_data 保持原值避免输出端出现无效更新。 输出侧没有增加复杂缓存或协议转换而是将数据就绪信号直接映射到 DA 时钟和写信号14 位采样值同步输出到 da1_data。这种结构便于观察 XADC 采样到 DA 输出之间的完整数据路径也方便在实际工程中继续扩展滤波、缩放、缓存或显示模块。模块结构AD_top顶层模块完成时钟复位、XADC IP 例化、通道判断、采样数据锁存以及 DA 接口输出。 xadc_wiz_0Vivado XADC Wizard 生成的采样 IP负责模拟辅助通道采样、通道号输出、转换完成指示和数据有效输出。 test仿真测试模块用于工程行为仿真参考。 glblVivado 仿真全局模块。开发板验证工程包含实际管脚约束文件 xdac_pins.xdc可用于开发板工程实现和引脚分配参考。实现结果中包含 AD_top.bit、布局布线、时序、功耗、IO、DRC 等 Vivado 实现报告说明该设计已经按约束完成综合、实现与比特流生成流程。演示视频包含演示视频可用于查看工程运行和实验现象参考。演示视频请关注公众号后获取对应资料查看。仿真图/仿真说明/设计文档图片包含工程文件、程序文件、程序编译、RTL 图、管脚分配等设计文档图片内容并包含 Vivado 仿真相关文件与 test.v 测试文件可作为理解工程结构、编译流程、RTL 连接关系和引脚分配的参考。部分代码以下展示顶层模块AD_top的部分代码完整代码可关注下方公众号卡片获取。module AD_top( input clk,//50M input reset_n,//低电平复位--key1 input vauxp1, input vauxn1, output da1_clk,//DA时钟 output da1_wrt,//DA数据写信号 output [13:0] da1_data//输出的数据 ); wire vp_in;//AD接口P端 wire vn_in;//AD接口N端 wire eoc_out; wire [4 : 0] channel_out; wire drdy_out; wire [15 : 0] do_out; reg [13:0] AD_data;//输出的采样值962kps wire reset_in;//高电平复位 assign reset_in ~reset_n; assign vp_in 0; assign vn_in 0; xadc_wiz_0 i_xadc_wiz_0 ( .di_in(16b0), // input wire [15 : 0] di_in-- .daddr_in({2b00,channel_out}), // input wire [6 : 0] daddr_in-- .den_in(eoc_out), // input wire den_in-- .dwe_in(1b0), // input wire dwe_in-- .drdy_out(drdy_out), // output wire drdy_out-- .do_out(do_out), // output wire [15 : 0] do_out-- .dclk_in(clk), // input wire dclk_in-- .reset_in(reset_in), // input wire reset_in-- .vp_in(vp_in), // input wire vp_in-- .vn_in(vn_in), // input wire vn_in-- .vauxp1(vauxp1), // input wire vauxp1-- .vauxn1(vauxn1), // input wire vauxn1-- .channel_out(channel_out), // output wire [4 : 0] channel_out-- .eoc_out(eoc_out), // output wire eoc_out-- .alarm_out(), // output wire alarm_out-- .eos_out(), // output wire eos_out-- .busy_out() // output wire busy_out-- ); //输出的采样值962kps always(posedge clk) begin if(drdy_out1b1 channel_out5b1_0001) //1ADC地址为h11 AD_datado_out[15:2];//取高14位输出 else AD_dataAD_data; end assign da1_clkdrdy_out;//DA时钟 assign da1_wrtdrdy_out;//DA数据写信号 assign da1_dataAD_data;//输出的数据 endmodule代码获取点击下方公众号卡片