赞
踩
基于xilinx vivado的XADC IP设置使用详解
Xilinx 7系列FPGA全系内置了一个ADC,称呼为XADC。
这个XADC,内部是两个1mbps的ADC,可以采集模拟信号转为数字信号送给FPGA内部使用。
XADC内部可以直接获取芯片结温和FPGA的若干供电电压(7系列不包括VCCO),用于监控FPGA内部状况。同时提供了17对差分管脚,其中一对专用的模拟差分输入,16对复用的模拟差分输入,不使用的时候可以作为普通的User I/O。
《pg091》
《ug480》
XADC的端口如下图所示,其每个端口的具体含义请参考ug480的p19~p20.
IP的详细设置,大家可参考pg091。
本例主要是拿XADC来采集FPGA的温度以及电压,不做外部采集,但设置同理,后面会说外部采集时的注意事项。
图 1 XADC第一页基础设置
第一页如上图主要是设置:
Interface option,常规情况下纯逻辑时一般选DRP,有软核参与时选AXI4Lite;
Startup channel selection ,开始通道选择,一般选通道顺序即可;
DRP timing options,设置的是XADC的时钟,一版默认就行了,最大250MHZ。
图 2 XADC第2页设置
第2页默认设置即可。
图 3 XADC第3页
XADC第3页主要是设置警报阈值,可要可不要,当设置阈值后,FPGA内部参数达到阈值后会产生警告输出,通过alarm_out信号引脚。
警告对应的寄存器以及含义如下表所示。
图 4 XADC设置第4页
第4页设置是选择通道需要输出的采样种类,这里主要是采集温度和电压,就勾选了以上内容。
按第三章创建好IP后,打开例程代码,如下图所示:
图 5 例程代码的打开方式
之后看到代码的顶层只是同步了一个复位信号,如下所示:
光只是打开顶层只有复位信息以及这个ip的调用,现在还不知道怎么用,则下一步打开仿真文件顶层(xadc_wiz_0_tb)。
然后则看到将CHANNEL补位后赋值给地址ADDR,然后就能通过判断CHANNEL的值来确定现在输出的DO_TB是什么类型的值。如下所示:
至于取值为啥是DO_TB[15:4]是因为XADC是12bit的,且高位有效,根据ug480可知,如下所示。
另外需要注意,从DO读出来的值需要经过公式换算才是实际的值,换算规则如下所示:
Channel输出的值为各个采集信息对应的寄存器的地址,其含义如下所示。
即状态寄存器的值,如下表所示:
当采集外部信号时,需要注意外部输入的模拟信号对接的时vp/vn引脚,此外输入的信号电平范围是0v-1v。如下所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。