news 2026/6/12 1:33:13

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado

名称:XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计实现基于 XADC 的模拟量采集与 DA 数据输出控制,顶层模块为 AD_top。系统以 50MHz 时钟作为工作时钟,低电平复位输入 reset_n 经过反相后作为 XADC IP 的高电平复位信号,外部模拟输入通过 vauxp1、vauxn1 接入 XADC 辅助通道。 XADC 转换完成后,设计利用 eoc_out 触发下一次动态重读,并在 drdy_out 有效且通道号为 5'b1_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 主要 IP:xadc_wiz_0 仿真文件:test.v 约束文件:xdac_pins.xdc

设计思路

设计核心是通过 Vivado 的 XADC Wizard IP 完成片上 ADC 采样,再由顶层逻辑对采样通道和数据有效信号进行判断。XADC IP 的 dclk_in 连接系统时钟 clk,reset_in 由外部低电平复位信号取反得到,vauxp1/vauxn1 作为实际采样输入端,vp_in/vn_in 在顶层中固定为 0。 在 XADC 读通道控制上,daddr_in 由 {2'b00, channel_out} 组成,den_in 连接 eoc_out,表示每次转换结束后发起下一次读操作;dwe_in 固定为 0,仅进行读取,不写入配置寄存器。channel_out 用于指示当前转换通道,drdy_out 用于指示 do_out 数据有效。 数据处理逻辑保持简洁:当 drdy_out 为 1 且 channel_out 等于 5'b1_0001 时,说明目标辅助通道数据有效,此时将 do_out 高 14 位写入 AD_data。非目标通道或数据未就绪时,AD_data 保持原值,避免输出端出现无效更新。 输出侧没有增加复杂缓存或协议转换,而是将数据就绪信号直接映射到 DA 时钟和写信号,14 位采样值同步输出到 da1_data。这种结构便于观察 XADC 采样到 DA 输出之间的完整数据路径,也方便在实际工程中继续扩展滤波、缩放、缓存或显示模块。

模块结构

AD_top:顶层模块,完成时钟复位、XADC IP 例化、通道判断、采样数据锁存以及 DA 接口输出。 xadc_wiz_0:Vivado XADC Wizard 生成的采样 IP,负责模拟辅助通道采样、通道号输出、转换完成指示和数据有效输出。 test:仿真测试模块,用于工程行为仿真参考。 glbl:Vivado 仿真全局模块。

开发板验证

工程包含实际管脚约束文件 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(16'b0), // input wire [15 : 0] di_in-- .daddr_in({2'b00,channel_out}), // input wire [6 : 0] daddr_in-- .den_in(eoc_out), // input wire den_in-- .dwe_in(1'b0), // 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_out==1'b1 && channel_out==5'b1_0001) //1ADC地址为h11 AD_data<=do_out[15:2];//取高14位输出 else AD_data<=AD_data; end assign da1_clk=drdy_out;//DA时钟 assign da1_wrt=drdy_out;//DA数据写信号 assign da1_data=AD_data;//输出的数据 endmodule

代码获取:点击下方公众号卡片

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 1:24:53

AI Agent正在改变软件开发方式:从代码执行到自主协作

随着人工智能技术的发展&#xff0c;软件开发领域正在迎来新的变革。从最初的代码补全工具&#xff0c;到如今能够独立完成任务规划、执行和反馈的AI Agent&#xff0c;开发模式正在悄然发生变化。 什么是AI Agent 传统AI工具更多是“问答模式”&#xff0c;用户提出问题&…

作者头像 李华
网站建设 2026/6/12 1:19:53

告别黑盒:手把手教你用VTK和C++从零搭建一个医学DICOM三维可视化系统

告别黑盒&#xff1a;手把手教你用VTK和C从零搭建一个医学DICOM三维可视化系统在医学影像领域&#xff0c;商业软件虽然功能强大&#xff0c;但其封闭的"黑盒"特性常常让开发者感到束手无策。当你需要定制特殊功能、优化性能或仅仅是理解底层原理时&#xff0c;这些商…

作者头像 李华
网站建设 2026/6/12 1:17:57

AIGEO AI|国内GEO优化公司全链路优化

AI优化企业&#xff1a;智能时代下的增长新引擎 AI优化企业排行榜与技术革新&#xff0c;解码2025年企业增长密码 AI优化企业如何重构商业生态&#xff1f;第一部分&#xff1a;AI优化企业排行榜——技术驱动的头部玩家 在生成式AI重构商业规则的2025年&#xff0c;企业竞争已从…

作者头像 李华
网站建设 2026/6/12 1:17:28

开关电源设计避坑指南:为什么你的电感老是发烫甚至烧毁?

开关电源设计避坑指南&#xff1a;为什么你的电感老是发烫甚至烧毁&#xff1f;在Buck电路调试现场&#xff0c;一位工程师盯着示波器上畸变的电感电流波形&#xff0c;散热片温度已突破90℃——这个场景你是否熟悉&#xff1f;电感作为开关电源的"能量调度中心"&…

作者头像 李华