赞
踩
前言:关于xadc官方给出了 关于ps端读取数据的例程
本篇文章主要写pl端读取数据
这是ip设置
顶层
module XADC_top(
input clk_in,
input vp_in,
input vn_in,
input vauxp7,
input vauxn7,
input vauxp15,
input vauxn15
);
wire [4:0] channel_out;
wire eoc_out;
wire drdy_out;
wire [15:0] do_out;
xadc_wiz_0 xadc (
.di_in(16'b0), // input wire [15 : 0] di_in
.daddr_in({2'b0,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_in), // input wire dclk_in
.reset_in(), // input wire reset_in
.vp_in (vp_in), // input wire vp_in
.vn_in (vn_in), // input wire vn_in
.vauxp7 (vauxp7), // input wire vauxp7
.vauxn7 (vauxn7), // input wire vauxn7
.vauxp15(vauxp15), // input wire vauxp15
.vauxn15(vauxn15), // input wire vauxn15
.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
);
data_cap data_cap(
.clk_in (clk_in),
.drdy_out (drdy_out),
.channel_out (channel_out),
.do_out (do_out)
);
ila_0 ila_0 (
.clk(clk_in), // input wire clk
.probe0(channel_out), // input wire [4:0] probe0
.probe1(do_out) // input wire [15:0] probe1
);
数据捕获:
module data_cap(
input clk_in,
input drdy_out,
input [4:0] channel_out,
input [15:0] do_out
);
reg [11:0] Temperature;
reg [11:0] Vcc_int;
reg [11:0] v_in;
reg [11:0] v_in7;
reg [11:0] v_in15;
always@(posedge clk_in)
begin
if(drdy_out == 1'b1 && channel_out ==5'd0)begin
Temperature <= do_out[15:3] ;
end
else if ( drdy_out == 1'b1 && channel_out ==5'd1) begin
Vcc_int <= do_out[15:3] ;
end
else if ( drdy_out == 1'b1 && channel_out ==5'h10) begin
v_in <= do_out[15:3] ;
end else if ( drdy_out == 1'b1 && channel_out ==5'h17) begin
v_in7 <= do_out[15:3] ;
end else if ( drdy_out == 1'b1 && channel_out ==5'h1F) begin
v_in15 <= do_out[15:3] ;
end
else begin
Vcc_int <= Vcc_int ;
Temperature <= Temperature ;
end
end
endmodule
读取address 就是根据channel输出通道 补两个0,但drdy输出高电平 表明数据有效 那么就可以进行读取 根据通道知道 是哪路采集的数据 然后要对数据进行相应的运算,比如:1v对应12bit的 FFFH即为:4095
那么实际电压就是:v_real = 1/4095*v_in(单端输入模式)
关于如何运算:
XADC基础知识
下面是结果:
通道的具体地址:
两份官方文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。