zedboard第十一课(XADC)

官方文档
[1].Xilinx UG480: 7 Series FPGAs and Zynq-7000 AllProgrammable SoC XADC Dual 12-Bit 1 MSPS Analog-to-Digital Converter User Guide
[2].Xilinx UG772: LogiCORE IP XADC Wizard User Guide
[3].Xilinx PG019: LogiCORE IP AXI XADC (v1.00.a) Product Guide
[4]. Xilinx UG585:Zynq-7000 All ProgrammableSoC Technical Reference Manual
[5].Xilinx XAPP554: XADC Layout Guidelines
[6].Xilinx XAPP795:前端模拟驱动电路设计
[7].Xilinx XAPP1172:Linux驱动和Webserver GUI
[8].Xilinx XAPP1182:Linux驱动和Webserver GUI
[9].Xilinx XAPP1183:Linux驱动和Webserver GUI

ZYNQ的XADC模块包括2个12bit 1MSPS的模数转换器ADCA和ADCB。
MUX可以切换的AIN,共十七组信号,VPVN,VAUXP0N0~VAUXP15N15。

FPGA内部动态配置端口(DRP ----Dynamic Reconfiguration Port)的16位同步读/写端口访问。如果是JTAG访问,当使用这种方式时,并不需要直接去例化XADC模块,因为这是一个已经存在与FPGA JTAG结构的专用接口,此时因为没有在设计中直接例化XADC模块,故XADC模块工作在一种预先定义好的模式即缺省模式,此模式下XADC模块专用于监视芯片上的供电电压和芯片温度。

通过AXI-GP Master访问
通过AXI接口访问Xilinx官方提供了两种模型,一种是数据和命令都通过同一个AXI_GP接口读出;一个是控制命令通过AXI接口下发,数据通过AXI Stream接口直接DMA到DDR中。

使用XADC还具有高温自动关机保护功能,能有效的保护器件高温烧毁。

set_property  BITSTREAM.CONFIG.OVERTEMPPOWERDOWN Enable  [current_design]

自动关机保护的原理是:当温度超过高温门限时,等待10ms后进入关机序列,并将GHIGH(参见UG470)信号置高,当温度低于OT lower时,GHIGH置低,同时进入启动重配状态,系统重新加载重启。
当进入高温保护状态后,XADC自动使用内部晶振产生时钟,但其他的状态不变。为提升INL和SNR性能,可以使用约束语句来实现:

set_property  BITSTREAM.GENERAL.XADCENHANCEDLINEARITY  On  [current_design]

在blockdesign中,首先例化PS7,然后例化XADC这个IP。
通常配置成AXI_LITE接口,这样就可以在PS中,利用程序来读取XADC的reg。
如果配置成DRP接口,就是打算让PL侧的逻辑模块来读取XADC的reg。
默认情况下,VP和VN引脚是XADC的专属应用引脚。如果需要更多的AIN引脚,就要启用external multiplexer。使PL侧的引脚能够被连接到XADC的AIN。
PL侧的引脚,默认情况下,都是DIN,他们经过IBUF连接到Fabric。但是,我们也可以启用external multiplexer,这个mux连接到VAUXP0N0~ VAUXP15N15,并选择其中的一对引脚,连接到XADC的内部VAUX_AIN上。

PS端控制XADC的,主要是几个重要函数。

XAdcPs_LookupConfig()
XAdcPs_CfgInitialize()
XAdcPs_SelfTest()
XAdcPs_SetSequencerMode()
XAdcPs_SetAlarmEnables()
XAdcPs_SetSeqInputMode()
XAdcPs_SetSeqChEnables()
XAdcPs_GetAdcData()
XAdcPs_RawToTemperature()
XAdcPs_RawToVoltage()

你可能感兴趣的:(vivado)