Xilinx 7系列 XADC功能介绍和应用指南(UG480 )
一、XADC功能介绍
XADC是内嵌在Xilinx7系列FPGA芯片和Zynq7000可编程SOC芯片中的的高速AD转换器模块。该模块内有两个12位AD转换器(确保10位可靠精度),采样速率达到每秒1兆次。XADC可测量多达17个外部模拟通道的输入信号,同时还能对芯片的温度和供电电压进行监测和报警。XADC能自动循环扫描所有的模拟输入通道,大大地减轻了主机的负担。特别是Zynq7000芯片内部集成了2个ARM9处理机芯片、FPGA逻辑和AD转换器,丰富的资源构成完整的信号采集和处理系统,特别适合对精度要求不是太高但对成本又较敏感的测控仪器仪表等方面的应用,既可简化设备又可提高性价比,因此很受业界欢迎。
有关XADC的官方资料主要包含在Xilinx的“7Series FPGAs XADC Guide(UG480)”和“XADC Wizard v3.3LogicCORE IP Product Guide(PG091)”等技术文档中。这些资料内容丰富,但也比较庞杂,用户需要耗费大量时间才能消化理解。同时已有资料对应用实例的介绍又不太详尽。笔者主要对这两份资料的内容进行了梳理和精简,省略了仿真和JTAG方面的内容,重点放在介绍和理解XADC控制寄存器的操作方式。最后展示了在Vivado和SDK开发环境下的一个简单XADC应用实例。希望此文能帮助有兴趣的读者能在较短时间内能掌握和应用XADC。
UG480图1-1XADC原理框图
本文的参考资料主要来自Xilinx的UG480和PG091等技术文档,为便于读者对照原文查阅更详细的信息,本文引用的表格或插图仍采用原文的编序。
1.XADC的属性介绍
●内含两个12位、每秒1兆采样(1MSPS)的AD转换器ADC A和ADC B。
●XADC含片上温度传感器,可测试和监控芯片的温度,实现超温报警(OT)。默认的超温报警温
度是125°C,用户可以在发生过热报警时及时切断芯片供电以避免损失。用户还可以设定自己定义芯片工作温度范围,当芯片温度超出用户设定的界限时予以报警。
●XADC内含6个芯片供电电压传感器,可对芯片供电电源监测和报警。(PL是FPGA逻辑电路,
PS是CPU系统)被监测的电源电压如下:
VCCINT:PL内核电压(1.0V)
VCCAU:PL辅助电压(1.8V)
VCCBRAM:PL BRAM电压(1.0V)
VCCPINT:PS内核电压(1.0V)
VCCPAUX:PS辅助电压(1.8V)
VCCO_DDR:DDR RAM电压(1.5V)
用户可以为这些电压设定上、下限,当电压超出用户设定的界限时报警。
●XADC有一路专用的差分模拟输入通道Vp/Vn,如果不使用Vp/Vn时,应该将Vp/Vn连接到GNDADC
引脚。
●XADC另有16路辅助模拟输入通道。这些输入通道与Vp/Vn不同之处是,他们的引脚是模拟/数
字复用引脚。如果其中某个引脚被用做模拟输入,该引脚的数字I/O功能就不可再用。如果辅助模拟输入通道所在的BANK中混合有模拟和数字I/O,该I/O BANK必须由满足所用数字I/O 标准所需的电压供电。
●辅助模拟输入通道既可以设置成单极性输入,也可以设置成双极性输入。但所有片上传感器(温
度和电压)都采用单极性工作模式。
●XADC可对ADC转换结果自动计算和输出平均值,以抑制信号和PCB板上的噪音。用户可从无平
均值计算、16个样本平均,64个样本平均或256个样本平均等四个选项中选取。
●XADC允许延长采样充电时间,将采样充电时间从4个ADCCLK延长至10个ADCCLK。当信号源内
阻或模拟通道多路器内阻过大影响采样电容获得的信号精度时,加长采样时间可以提高精度。
●XADC内部含有1.25V的参考电压源。将VREF_P0接模拟地GNDADC就能启用片上参考电压。如果
希望得到更高的精度,可以将VREF_P0连接外部精密电压参考IC。
●XADC可基于已知的参考电压源对传感器、ADC A和ADC B的偏移和增益偏差进行校准计算,得
到的校准系数存储在XADC的只读状态寄存器中。随后可以利用这些系数对ADC转换结果进行补偿。
●XADC有128个16位寄存器(见图1-1),其中前64个(DADDR[6:0]=00h~3Fh)为只读寄存器。
用来存放片上传感器、专用模拟通道和辅助模拟通道的当前模数转换结果,同时存储芯片自本次上电以来测量到的最高和最低电压值,分别用ADC A和ADC B测量的电源传感器偏差、以及ADC A和ADC B的自身偏移和增益的校准系数。最后一个地址(3Fh)Flag寄存器存储当前报警状态。
●地址40h至7Fh是可读/写寄存器。其中前3个是XADC配置和控制寄存器、接着的8个是辅助
模拟通道选择寄存器、再后面是16个报警阈值预设寄存器。用户通过配置这些寄存器来控制XADC的行为。剩下的其他寄存器用于工厂测试或未定义,用户不必关注。
●为了减轻PS处理器或FPGA中其他控制系统的负担,XADC提供了一个叫作Sequencer的模拟通
道自动扫描器。Sequencer按预定的顺序自动地逐个接通用户选择的模拟输入通道,执行ADC 转换并把结果存进XADC的只读状态寄存器。
●FPGA或Synq7000中的PL逻辑可以通过16位宽的动态重配置接口(DRP)访问XADC的状态和控
制寄存器,通过JTAG口也可以访问这些寄存器。但Zynq7000的PS是通过AXI4-Lite或AXI4 Stream接口访问XADC寄存器的。在Vivado开发环境中用户不需要关心PS和XADC互联的细节,只需在运行XADC Wizard时选择AXI4-Lite或AXI4Stream就可以了,系统将自动建立两者的互连关系。
2.XADC的引脚
所有XADC的专用引脚都在BANK0中,引脚名都以_0后缀。UG480图1-2展示了XADC的2种基本连接方法。XADC由V CCAUX(1.8V)供电,V CCAUX上的低通滤波器用来滤除高频干扰以提高ADC性能。
图中左边的电路采用外部1.25V精密参考IC做参考电压,外部参考能提供更好的精度和热漂移性能。铁氧体磁珠用于隔离GNDADC和系统地GND。UG480图1-2右边电路采用片上自带的参考电压源。将VREFP引脚接到GNDADC引脚就能激活片上参考源。如果只需进行基本的片上温度和电源监测,片上参考已能提供良好性能。100nF退耦电容器应尽可能靠近芯片的BGA引脚,以减小寄生电感。
UG480图1-2XADC引脚
UG480表1-1XADC引脚
引脚用途说明
V CCADC_0供电电压这是XADC中ADC和其他模拟电路的模拟电源引脚。它可以连接到1.8V VCCAUX电源;但是,在混合信号系统中,电源最好应连接到独立的1.8V模拟电源(如果可用)。此引脚不应连接到GND。即使XADC不用,也应将该管脚连接到VCCAUX上。
GNDADC_0
供电电压这是XADC中ADC和其他模拟电路的接地参考引脚。如图1-2所示,它应通过隔离铁氧体磁珠与系统接地GND连接。在一个混合信号系统中,如果可能的话,此引脚应该连到在一个模拟的接地平面上,在这种情况下就可以不需要铁氧体磁珠。即使XADC不用,也应始终将此引脚连接到GND。
V REFP_0参考电压输入此引脚可连接到外部1.25V精确参考IC(±0.2%或12位的±9LSB),以获得ADC的最佳性能。应将其视为模拟信号,与V REFN信号一起提供1.25V差分电压。
如果将此引脚连接到GNDADC(见图1-2),芯片内参考源(12位时为±1%或±41LSB)被激活。如果没有提供外部引用,这个引脚应该应始终连接到GNDADC。
V REFN_0参考电压输入该引脚应与外部1.25V精确参考IC(±0.2%)的地引脚相连,以获得最佳的ADC性能。应将其视为模拟信号,与V REFP信号一起提供差分1.25V电压。即使没有提供外部参考,此引脚也应始终连接到GNDADC。
V P_0专用模拟输入这是专用差分模拟输入通道(V P/V N)的正输入端。如果不使用,该引脚应连接到GNDADC。
V N_0专用模拟输入这是专用差分模拟输入通道(V P/V N)的负输入端。如果不使用,该引脚应连接到GNDADC。
_AD0P_to _AD15P_辅助模拟输入
/数字IO
这些是多功能引脚,可以支持16个模拟的正输入端,也
可以用作常规数字I/O(见图1-1)。当不被用作模拟输
入时,这些引脚可以像其他任何数字I/O一样使用。
_AD0N_to _AD15N_辅助模拟输入
/数字IO
这些是多功能引脚,可以支持16个模拟的负输入端,也可
以用作常规数字I/O(见图1-1)。当不被用作模拟输入时,
这些管脚可以像其他任何数字I/O一样使用。
二、XADC的状态和控制寄存器
XADC的所有功能都是通过状态和控制寄存器实现的。了解这些寄存器的位定义功能可以帮助用户理解Vivado的XADC Wizard中的设计界面和掌握应用XADC IP的API函数。下面做详细介绍。
1.XADC的状态寄存器
XADC的前64个地址位置(DADDR[6:0]=00h到3Fh)是只读状态寄存器。用来存储片上传感器和外部模拟通道的模数转换结果。每个传感器和外部模拟输入通道都有一个唯一的通道地址,每个模拟通道的测量结果存储在通道选择寄存器(48h和49h)中指定地址的状态寄存器中(见UG480表4-1)。
例如,ADC多路复用器通道0(温度传感器)的测量结果存储在通道地址00h的状态寄存器中。来自ADC多路复用器信道1(V CCINT)的结果存储在地址01h。
状态寄存器还存储从设备加电或XADC的最后一次用户重置开始记录的芯片上传感器的最大和最小测量值。表3-1定义了状态寄存器。
UG480表3-1状态寄存器(只读)
名地址说明
温度00h 温度传感器测量结果存储在此位置。数据放在在16位寄存器的最高12位。
V CCINT01h V CCINT测量结果存储在该位置。数据放在在16位寄存器的高12位。
V CCAUX02h V CCAUX测量结果存储在该位置。数据放在在16位寄存器的高12位。
V P/V N03h 专用模拟输入通道上的转换结果存储在此寄存器中。数据在16位寄存器中与最高位对齐的。
V REFP04h 参考输入V REFP上的转换结果存储在此寄存器中。数据在16位寄存器中与最高位对齐的。
V REFN05h 参考输入V REFN上的转换结果存储在此寄存器中。该通道在双极模式下进行测量。通过
双极模式下的测量,可以测量到0V(V REFN)左右的微小正负偏移。电源传感器也用于测量VREFN,因此1LSB=3V/4096。数据在16位寄存器中是最高位对齐的。
V CCBRAM06h VCCBRAM电源监视器测量结果存储在该位置。数据在16位寄存器中是最高位对齐的。
中文翻译英文转换器未定义07h这些位置未使用,并且包含无效数据。
Supply A offset08h用ADC A计算的传感器偏移校准系数存储在此位置。ADC A offset09h ADC A的偏移校准系数存储在此位置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论