赞
踩
在Xilinx 系列的FPGA中,Artix-7,Kintex-7,Virtex-7,包括ZYNQ7000,都包含一个内置的XADC,我们可以通过这个内置的XADC,来进行一些精度不高的电压采集。
1.XADC的简介
XADC为一个12bit ,1MSPS采样速率的内置ADC。共包含16个采集通道和一个差分采集通道。它的基准源可以通过外部基准和内部基准来实现,它对外的DRP( dynamic reconfiguration port )接口,可以通过JTAG或者内部读取来通信。
框图如下所示:
2.硬件电路使用
XADC需要一个基准,如果使用内部基准,直接将VREFP和VREFN连接到AGND即可,如果需要外部基准,则需要外接基准源来实现。
电路链接的话,直接通过分压来输入,因为模拟通道输入是一个高阻抗输入,可以分压后再通过滤波,分压后输入模拟通道的电压不能超过1V。如下图所示:
3.代码实现
其实通过图1XADC的结构可以看到,它内部是由2个ADC结构的,每个ADC是16路输入。第一个ADC主要是采集一些FPGA的内部信息,包括核心电压、辅助电压、温度,VPVN的差分输入、参考源等,第二个ADC才是接出来供用户使用的16路模拟输入。
原语中定义了一个5bit的channel,来选择通道,通道分配如下图所示:
代码的话,参考ug480的例程代码,通过XADC的原语来实现,简单的读了几个通道的值,包括核压、辅助电压、温度、通道1和通道2的值。
抓取的数据如下:
根据上图,计算方式有3种:
温度计算:
根据我们采集的码值,温度的数据为a382,取高12位,即a38,对应的十进制为2616,根据手册公式计算为48.7度。
电源电压计算:
这部分不包括采集的电压,只包括FPGA的内部电源。根据我们采集的核心电压为54d9,取高12位54d,转化为10进制后计算为0.993V。核心电压97cb,取高12位,97c,转化为10进制计算为1.778V.
采集电压计算:
采集电压的话,我们也说过了,最大输入FPGA的电压为1V,1V对应12位ADC,即1 LSB = 1V / 4096 = 244 μV,所以直接用采集的码值乘以244uV即可。
比如上图通道1采集的是dae4,取高12位dae,转化为10进制乘以244uV是0.854V。根据下图我的分压,0.854X14=11.9V.
4.注意事项:
以上,本人对XADC简单应用的部分心得,详细使用及标准以UG480官方文档为准。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。