学习内容
本文首先介绍了ZYNQ的XADC的相关内容,并学习使用ZYNQ芯片中的XADC测量芯片内部的温度电压等参数,然后进行串口打印输出。
开发环境
vivado 18.3&SDK,PYNQ-Z2开发板。
XADC介绍
简介
Xilinx模拟信号转换模块,称为XADC,是一个硬核。它具有JTAG和DRP接口用于访问7系列FPGA中的XADC状态和控制寄存器。Zynq-7000 SoC器件添加了第三个接口,即PS-XADC接口,用于PS软件进行控制XADC。ZYNQ器件将XADC与可编程逻辑融合,解决了对模拟数据采集和监视要求。
XADC具有两个12位的ADC,具有独立的跟踪和保持放大器,模拟多路复用器(最多17个外部模拟输入通道)以及片上散热和片上电压传感器。可以将两个ADC配置为同时采样两个外部输入模拟通道。采样保持放大器支持一系列模拟输入信号类型,包括单端输入,双端输入和差分输入。模拟输入可以支持信号带宽在1M SPS的采样率下为500 KHz。可以使用外部模拟多路复用器来增加支持的外部通道数量,无需额外的封装引脚。XADC可选地使用片上参考电路,从而无需外部有源元件,用于温度和电源轨的基本片上监控。实现12位的ADC的全部性能,建议使用外部1.25V作为参考电压。最新的测量结果(连同最大和最小读数)存储在专用寄存器。用户可以根据自己的需要进行自定义的警报阈值(例如80°C),可以自动指示温度过高事件和不可接受的电源变化,并启动软件控制的系统掉电。
控制方式
PS端可以通过以下两种方式之一与XADC通信:
-
PS-XADC接口:PS互连上的32位APB从接口,该接口使用FIFO,并进行了串行化。
-
通过PS to PL AXI的主接口,此时要使用AXI XADC Logic IP核来控制XADC。
需要注意的是,对PS端控制ADC对性能要求较高的程序,要使用相关连接的逻辑IP连接到M_AXI_GP接口(并行数据路径)。使用PS_XADC接口时,FIFO用于命令和读取数据,以允许软件快速排队命令,而不必等待序列化,但是对于PS to PL AXI主接口访问,数据像PL-JTAG一样被序列化到XADC 中(串行数据路径),相对来说速度慢得多。
系统框图
PL-JTAG接口和内部PS-XADC接口不能同时使用。这些接口之间的选择由devcfg.XADCIF_CFG [ENABLE]位控制。XADC可以进行接口选择,即对(PL-JTAG或PS-XADC)和DRP接口之间进行仲裁选择。下图为XADC的系统框图。
由上图可知,XADC是通过硬逻辑实现的,并且位于PL电源域中。PS-XADC接口是PS的一部分,所以无需编程PL就可以由PS APU访问。但是必须打开PL的电源以配置PS-XADC接口,使用PL-JTAG或DRP接口以及操作XADC。同时由图上可以清楚看出对于PL-JTAG或PS-XADC这两个接口经过了一个二选一选择器,所以这两个不能同时进行驱动。
接口说明
XADC在DRP接口与PS-XADC或PL-JTAG接口之间进行仲裁。
PS-XADC Interface: PS-XADC接