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 连接关系和引脚分配的参考。

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image1.png

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image2.png

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image3.png

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image4.png

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image5.png

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image6.png

XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado 设计文档图片 image7.png

部分代码

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

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » XADC 数据采集 DA 输出 FPGA 设计 Verilog Vivado

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

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