Xilinx 7series XADC使用

在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的值。

抓取的数据如下:

Xilinx 7series XADC使用_第1张图片
根据上图,计算方式有3种:

  • 温度计算:
    Xilinx 7series XADC使用_第2张图片
    根据我们采集的码值,温度的数据为a382,取高12位,即a38,对应的十进制为2616,根据手册公式计算为48.7度。

  • 电源电压计算:
    Xilinx 7series XADC使用_第3张图片
    这部分不包括采集的电压,只包括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.注意事项:

  • 一个FPGA内部只有一个ADC模块。使用MIG控制器的时候,在生成MIG控制器的过程中有一个选项提示是否使能XADC,如果使能了,就不能再在其他模块用这个XADC模块,否则会产生冲突。
  • XADC还可以通过IP核实现。
  • 在第一张图我们也看到了,XADC可以通过DRP接口与JTAG进行通信,所以我们在连着JTAG的时候,也是可以直接看到XADC的数据的。如下图:

以上,本人对XADC简单应用的部分心得,详细使用及标准以UG480官方文档为准。

你可能感兴趣的:(笔记,fpga开发)