应用笔记简要描述Xilinx Zynq 系列器件XADC的相关资源及若干种应用。参考文档:
(1) ug480:7Series_XADC.pdf;
(2)xapp795:driving-xadc.pdf
(3)xapp554:xadc-layout-guidelines.pdf
(4)xapp1203:post-proc-ip-zynq-xadc.pdf
(5)xapp1183:zynq-xadc-axi.pdf
(6)xapp1182:zynq_axi_xadc_mon.pdf
(7)xapp1172:zynq_ps_xadc.pdf
(8)pg019:axi_xadc.pdf
(9)pg091:xadc-wiz.pdf
(10)ug953:vivado-7series-libraries.pdf
(11)ug585:Zynq-7000-TRM.pdf
(12)ug1085:zynq-ultrascale-trm.pdf
一、概述
(1)ZYNQ-7000有两个12bit 1MSPS的ADC模块,这两个模块是硬件实现的,但是位于PL功率域,既可以通过PS-XADC接口访问,也可以通过PL端例化XADC IP经AXI GP接口转DRP访问。XADC支持监控芯片内部的温度、各路供电的电压,支持16通道的PL ADC差分引脚输入,1通道专用模拟输入,1通道传感器输入。JTAG可以在PS和PL均上电(PL可以不编程)的情况下访问这两个ADC。
(2)ZYNQ Ultrascale+ MPSoC也有两个ADC模块,但是被称为PS SYSMON和PL SYSMON,其中PS SYSMON是10bit 1MSPS的,支持采样PS内部电压和IO电压,但是没有引脚外引;PL SYSMON是10bit 500KSPS的,在PL内部,除了支持采样PL和PS内部电压外,还支持芯片内部温度采集、引出了专用模拟输入通道,支持16通道的PL ADC差分引脚输入。JTAG可以直接访问这两个ADC获得结果。
二、用途
(1)监控各电压,及时发现异常趋势;
(2)监控片上温度,在温度异常时及时采取改变风扇转速,降频等措施减少发热或通过温度循环实验得到第一手片上状态数据改进热设计。比如,ZYNQ-7000的片上ADC就具有过温自动关机功能以确保芯片不会被过热烧坏,如下操作即可:
a)寄存器使能:OT upperalarm register(53H)的低四位设置为:0011b;
b) 设置门限:OT upperalarm register(53H)和OT lower alarm register(57H);
c) 使能信号:设置ConfigurationRegister 1(41H)的OT位为0,或使用约束:
set_property BITSTREAM.CONFIG.OVERTEMPPOWERDOWN Enable [current_design]
自动关机保护的原理是:当温度超过高温门限时,等待10ms后进入关机序列,并将GHIGH(参见UG470)信号置高,当温度低于OT lower时,GHIGH置低,同时进入启动重配状态,系统重新加载重启。
当进入高温保护状态后,XADC自动使用内部晶振产生时钟,但其他的状态不变。为提升INL和SNR性能,可以使用约束语句来实现:
(3)获取外部测量结果,因为总共引出了多达17通道的PL复用接口,可以采样17个通道的外部模拟输入,在一些测量温度、电压(电流)等对采样率和精度要求不是很高的场合,是十分经济实用的。以ZYNQ-7000的12bit ADC为例,片上温度传感器和片外输入模拟信号的采样值转换关系如下:
a) 温度传感器: Temp = (ADC Code * 503.975)/4096 – 273.15
b) 电压对应关系:Vol = (ADC Code / 4096)*3
三、实现
ZYNQ-7000的访问方式很多,这里以Vivado 2015.2和ZYNQ-7000为例,简单描述一下实现,其他版本类推即可。
(1)通过PL-JTAG访问
这种方式为系统默认方式,可以直接在Vivado的Hardware Manager中获得温度电压曲线等,但这种方式仅适用于调试阶段,工程价值不大。
(2)通过PS-XADC访问
通过PS-XADC访问先要将devcfg.XADCIF_CFG[31]置1来选择PS-XADC路径,让后将按照指定的命令格式组织“Command Register”的DRP地址和数据写到“devcfg.XADCIF_CMD_FIFO”中;读数据通过读取“devcfg.XADCIF_RDFIFO”即可,低16bit即为DRP寄存器的值。详细参见gu585第“30.3 PS-XADC InterfaceDescription”的描述。
针对这种访问方式,Xilinx提供了完整的SDK包,Linux驱动和基于Webserver的GUI图形界面。
① SDK包资源(2015.2):在../SDK/2015.2dataembeddedsw
XilinxProcessorIPLibdriversxadcps_v2_2路径下;
② Linux驱动和Webserver GUI参见应用文档XAPP1172。
(3)通过AXI-GP Master访问
这里也提供了两种方式,一种是数据和命令都通过同一个AXI GP接口,另一种是数据和命令分开传输。
a) 数据和命令通过同一个AXI GP接口
这种方式适用于采样速度慢,数据量小的情况,比如温度、电压之类的,实现结构如下图:
该架构通过AXI GP接口下发指令和获取AD转换结果,并通过千兆网将Webserver GUI结果在PC机上显示。
针对这种访问方式,Xilinx提供了完整的SDK包,Linux驱动和基于Webserver的GUI图形界面。
① SDK包资源(2015.2):在../SDK/2015.2dataembeddedsw
XilinxProcessorIPLibdrivers sysmon_v7_1路径下;
② Linux驱动和Webserver GUI参见应用文档XAPP1182,该应用Xilinx 提供完整的工程文件,可直接官网下载。
b) 数据和命令通过不同AXI接口
这种实现方式Xilinx提供了官方参考应用XAPP1183,实现的系统架构下图所示。
该架构通过AXI GP0 Master控制XADC IP核,AXI DMA IP核等,AD转换结果通过一系列算法运算后数据通过DMA写到DDR中。最后计算的结果通过串口发送到“AMS101 evaluator GUI”显示。这种连接方式的好处是可以对AD转换数据进行一些列的处理后再写入到DDR。
针对这种访问方式,Xilinx提供了完整Linux驱动和基于built-in LabView的GUI图形界面。
Linux驱动和GUI应用参见文档XAPP1183。
这种架构适用于数据量较大的连续采集应用场景,通过AXI4 Stream标准总线传输,也可以将采样到的信号做一些类似FIR滤波,FFT变换和反变换等处理。
ZYNQ Ultrascale+ MPSoC与ZYNQ-7000类似,只不过在PL里面将IP改为了System Management,如下图,实际上用法一样,不再赘述。
四、总结
总结XADC的三种访问方式,ZYNQ-7000可通过PL-JTAG接口访问可以在开发工具上直接得到装换结果曲线,调试用着很方便;通过PS-XADC接口访问,无需任何额外的逻辑资源即可直接得到结果,但速度相对较慢,适合系统检测获取温度电压等低速数据;通过AXI接口访问可以获得更高的访问效率,并且可以在AXI接口输出数据端添加一些列的数字信号处理算法后再将最终结果输出,可以得到最优的实现方案。
使用片内XADC还具有高温自动关机保护功能,能有效的保护器件高温烧毁。
没有回复内容