Xilinx7系列XADC中文翻译版手册(UG480)_第1页
Xilinx7系列XADC中文翻译版手册(UG480)_第2页
Xilinx7系列XADC中文翻译版手册(UG480)_第3页
Xilinx7系列XADC中文翻译版手册(UG480)_第4页
Xilinx7系列XADC中文翻译版手册(UG480)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Xilinx7系列XADC功能介绍和应用指南(UG480)一、XADC功能介绍XADCXilinx7FPGAZynq7000SOCAD12AD(确保10),采样速率达到每秒1XADC17XADCZynq70002ARM9FPGAAD有关XADCXilinxSeriesFPGAsXADC和“XADCWizardv3.3LogicCOREIPProduct等技术文档中。这些资料内容丰富,但也比较庞杂,用户需要耗费大量时间才能消化理解。同时已有资料对应用实例的介绍又不太详尽。笔者JTAGVivadoSDKXADCXADC。UG480图1-1XADC原理框图XilinxUG480PG091细的信息,本文引用的表格或插图仍采用原文的编序。1PAGEPAGE19XADC的属性介绍121(1MSPS)ADADCAADCB。XADC(OT)125°C,定义芯片工作温度范围,当芯片温度超出用户设定的界限时予以报警。XADC6(PLFPGAPSCPU)被监测的电源电压如下:VCCINT:VCCAU:VCCBRAM:VCCPINT:VCCPAUX:VCCO_DDR:

PL(1.0V)PL(1.8V)PLBRAMPS(1.0V)PS(1.8V)DDRRAM用户可以为这些电压设定上、下限,当电压超出用户设定的界限时报警。XADC有一路专用的差分模拟输入通道Vp/VnVp/VnVp/Vn连接到引脚。XADC16Vp/Vn/I/OBANKI/O,I/OBANKI/O标准所需的电压供电。(度和电压)都采用单极性工作模式。XADCADCPCB均值计算、16,64256XADC4ADCCLK10ADCCLK阻或模拟通道多路器内阻过大影响采样电容获得的信号精度时,加长采样时间可以提高精度。XADC1.25VVREF_P0GNDADCVREF_P0IC。XADCADCAADCBXADCADC偿。XADC12816(64(DADDR[6:0]=00h~3Fh)为只读寄存器。用来存放片上传感器、专用模拟通道和辅助模拟通道的当前模数转换结果,同时存储芯片自本ADCAADCBAADCB(3Fh)Flag40h7Fh/3XADC8模拟通道选择寄存器、再后面是16PSFPGA,XADCSequencer道自动扫描器。SequencerXADCFPGASynq7000PL16XADCJTAGZynq7000PSAXI4-LiteAXI4StreamXADCVivadoPSXADCXADCWizardAXI4-LiteAXI4StreamXADC的引脚XADCBANK0_0UG4801-2XADC2本连接方法。XADCVCCAUX(1.8V)供电,VCCAUXADC能。1.25VICGNDADCGND。UG4801-2VREFPGNDADC片上参考已能提供良好性能。100nFBGAUG480图1-2XADC引脚UG480表1-1 XADC引脚引 脚 用途 说 明XADCADC1.8VVCCAUXVCCADC_0 GNDADC_0供电电压

1.8V(如果可用)GNDXADCVCCAUX这是XADCADCGND在一个混合信号系统中,如果可能的话,此引脚应该连到在一个模拟的接地平面上,在这种情况下就可以不需要铁氧体磁珠。即使XADCGND。1.25VIC(±0.2%12的±9LSB),ADCVREFP_0

信号,与VREFN信号一起提供1.25V差分电压。如果将此引脚连接到GNDADC(见图1-2),芯片内参考源(12位时为±1%或±41LSB)被激活。如果没有提供外部引用,这个引脚应该应始终连接到GNDADC。该引脚应与外部1.25V精确参考IC(±0.2%)的地引脚VREFN_0 VP_0 VN_0 专用模拟输入

ADCVREFP1.25VGNDADC。这是专用差分模拟输入通道(VP/VN)GNDADC。这是专用差分模拟输入通道(VP/VN)GNDADC。_AD0P__AD15P__AD0N__AD15N_

/数字IO/数字IO

16I/O(1-1)I/O16I/O二、XADC的状态和控制寄存器XADCVivadoXADCWizardXADCIPAPIXADC的状态寄存器XADC64(DADDR[6:0]=00h49h)中指定地址的状态寄存器中(见UG4804-1)。例如,ADC0(温度传感器)00h来自ADC1(VCCINT)01h。状态寄存器还存储从设备加电或XADC的最后一次用户重置开始记录的芯片上传感器的最大和最小测量值。表3-1定义了状态寄存器。UG480表3-1状态寄存器(只读)名VCCINTVCCAUXVP/VNVREFP

00h01h02h03h04h

说明温度传感器测量结果存储在此位置。数据放在在16位寄存器的最高12位。VCCINT1612VCCAUX161216VREFP16VREFN 05hVCCBRAM

VREFN上的转换结果存储在此寄存器中。该VREFN,1LSB=3V/4096。数据在16VCCBRAM位寄存器中是最高位对齐的。未定义SupplyAoffsetADCAoffset

09h

这些位置未使用,并且包含无效数据。ADCAADCAADCAgain

ADCA的增益误差校准系数存储在此位置。未定义V(1)CCPINTV

0Bh0Ch0Dh

这些位置未使用,并且包含无效数据。PSVCCPINT上的转换结果存储在此寄存器中。数据16VCCPINT源传感器。PS电源VCCPAUX的转换结果存储在此寄存器中。数据在VVCCPAUXVCCO_DDR(1)

16VCCPAUX源传感器。PSVCCO_DDR16VCCO_DDR源传感器。VAUXP[15:0]/ 10hto1FhVAUXN[15:0] 16Maxtemp

自通电或上次XADC复位后记录的最大温度测量值。MaxVCCINTMaxVCCAUXMaxMintempV MinVCCINTMinVCCAUXMinVV (1)CCPINTmaxV(1)CCPAUXmaxVVCCO_DDR(1)Unassigned

21h22h23h24h25h26h27h28h29h2Ah2Bh

xadcVCCINTxadcVCCAUXXADCVCCBRAMXADC自上电或上次XADC复位后记录的最小VCCINT测量值。XADCVCCAUXXADCVCCBRAM测量值XADCVCCPINT测量值XADCVCCPAUX自上电或上次XADC复位后记录的最大VCCO_DDR测量值未定义VVCCPINT(1)min2ChXADCVCCPINTVCCPAUX(1)min2DhXADCVCCPAUXVCCO_DDR(1)min2EhXADCVCCO_DDR未定义2Fh未定义SupplyBoffset30hADCB置。ADCBoffset31hADCBADCBgain32hADCBUndefined33hto3EhFlag3Fh此寄存器包含常规状态信息(FlagRegister)注1:这些通道仅适用Zynq-7000APSoC器件。3Fh是Flag寄存器,见UG480图3-2和UG480表3-2。UG480图3-2Flag寄存器UG480表3-2状态寄存器(只读)位位名DI7toDI0 ALM6toALM0说明[6:0],这些位反映报警输出ALM的状态DI3OT该位反映过热逻辑输出的状态DI9REF1时,ADC0时,使用外部电压基准。DI10JTGR1JTAG_XADCJTAG访问限制为只读。更多信息请参见DRPJTAG接口。DI11JTGD1JTAG_XADCJTAG访问。更多信息请参见DRPJTAG接口。XADC的控制寄存器⑴配置寄存器(40h至42h)3UG4803-4UG483-4示。GU480图3-4注意:寄存器中显示为0的位应始终保持设置为0。位名说 明DI0toDI3在单通道模式或使用片内辅助多路器模式下工作时,CH0toCH4位名说 明DI0toDI3在单通道模式或使用片内辅助多路器模式下工作时,CH0toCH4ADC3-7。D18ACQ1稳定时间增加6个ADCCLK。DI9EC1ADC0ADC连续采样模式。DI10BU单通道模式下此位选择单极性或双极性操作模式。逻1ADC0DI11MUX10(40h)CH4:CH0FPGA5I/OFPGAI/ODI12,DI13用于设置单通道和自动序列模式下所选通道的样本平AVG0,AVG1均计算取值DI15CAVG(116UG480表3-5 配置寄存器1(41h)的位定义位位名说 明DI0OT1DI1toDI3, VCCINTVCCAUXVCCBRAMALM0toALM3DI8 1DI9toDI11 ALM4toALM6这些位分别用于禁用VCCPINT,VCCPAUX和VCCO_DDR的单个报警输出。逻辑1禁用报警输出。ADCDI4toDI7 CAL0toCAL3 10见表3-10。DI12toDI15 SEQ0toSEQ3 这些位设置自动通道定序器的操作模式。位分配见表3-9。UG480表3-4 配置寄存器2(43h)的位定义位位名DI4,DI5PD0,PD1说 明PD1PD0=1XADCPD11,PDO=0ADCBDI8DI15CD0toCD7 DRP(DCLK)ADC(ADCCLK)之间的分频因子。位分配见表3-12。说明片上温度VCCINTV说明片上温度VCCINTVCCAUXVP,VN(专用模拟通道)VREFP(1.25V)(1)VREFN(0V)(1)VCCBRAM通道CH4CH3CH2CH1CH00000001000012000103000114001005001016001107001118010009–121301101140111015011111610000171000118–31非法通道选择执行一次XADC非法通道选择VCCPINT(3)VCCPAUX(3)VCCO_DDR(3)非法通道选择执行一次XADC非法通道选择VCCPINT(3)VCCPAUX(3)VCCO_DDR(3)VAUXP[0],VAUXN[0]辅助道0VAUXP[1],VAUXN[1]VAUXP[2:15],VAUXN[2:15]辅助通道2to15(2)2.Kintex®76、7、13、1415。某些virtex-7、Artix-7Zynq-7000SOC注3.这些通道仅在Zynq-7000APSOC器件中受支持。UG480表3-8平均值设定AVG1AVG0功能00不计算平均值01计算16个样本平均10计算64个样本平均11256UG480表3-9 自动序列器操作模式设定SEQ3SEQ2SEQ1SEQ0自动定序器操作模式0000Defaultmode0001Singlepasssequence0010Continuoussequencemode0011Singlechannelmode(sequenceroff)01XXSimultaneoussamplingmode10XXIndependentADCmode11XXDefaultmodeUG480表3-10 校准使能名名CAL0CAL1CAL2CAL3说 明ADCs偏移校准使能ADCs偏移和增益校准使能电源传感器偏移校准使能电源传感器偏移和增益校准使能UG480表3-11 电源关闭选择PD1PD0说 明00默认所有XADC功能都加电01无效位10ADCB关电11XADC关电UG480表3-12DCLK分频因子选择CD7CD6CD5CD4CD3CD2CD1CD0分频0000000020000000120000001020000001130000010041111111025411111111255注1:最小分频比为2,例如,ADCCLK=DCLK/2。⑵控制寄存器PSFPGA,XADC(AutomaticChannelSequencer)ADC储结果。定序器有多种操作模式,由XADC1(41h)的SEQ3SEQ08UG4803-9UG480表3-9自动定序器的操作模式8(48h4Fh),分别用来选择要监测的模拟通道,设置采样平均次数,设置模816序器功能。每对寄存器(32)中的单个位用来启用或禁止相关模拟通道的通道选择、平均计算、4ADC(48h49h)ADC(4Ah4BH)ADC(4Ch4Dh)ADC(4Eh4①ADC通道选择寄存器(48h和49h)21624-14-21048hLSB(0)49hMSB(15)结尾。顺序号说 明XADC顺序号说 明XADC无效通道选择BitADC通道Zynq-700010819210-3114122513VCCPINT3614VCCPAUX4715VCCO_DDR580片上温度1013511146-157顺序号Zynq-70001213顺序号Zynq-7000121314151617181920212210231127VAUXP[11],VAUXN[11]11241228VAUXP[12],VAUXN[2]12691VCCINT7102VCCAUX8113VP,VN专用模拟输入通道9124VREFPVREFNVCCBRAM无效通道选择BitADC通道说明016VAUXP[0],VAUXN[0]–辅助通道0117VAUXP[1],VAUXN[1]–辅助通道1218VAUXP[2],VAUXN[2]–辅助通道2319VAUXP[3],VAUXN[3]–辅助通道3420VAUXP[4],VAUXN[4]–辅助通道4521VAUXP[5],VAUXN[5]–辅助通道5622VAUXP[6],VAUXN[6]–辅助通道6723VAUXP[7],VAUXN[7]–辅助通道7824VAUXP[8],VAUXN[8]–辅助通道8925VAUXP[9],VAUXN[9]–辅助通道91026VAUXP[10],VAUXN[10]25251329VAUXP[13],VAUXN[13]13261430VAUXP[14],VAUXN[14]14271531VAUXP[15],VAUXN[15]15②ADC通道平均值寄存器(4Ah和4Bh)平均值寄存器(4Ah4BH)24-14-2XADC0(40h)中的AVG1AVG016、64256UG480表3-8。会更新。如果一个通道已启用平均,其输出状态寄存器仅在平均完成后才更新。③ADC模拟信号输入模式寄存器(4Ch和4Dh)2ADC24-1和表4-2(VP和VN10(默认)启用单极性输入模式。④ADC通道采样稳定时间寄存器(4Eh和4Fh)4ADCCLK24-14-24Eh4Fh10ADCCLK⑤报警寄存器(50h至5Fh)这些寄存器用于为内部监控通道:温度、VCCINT、VCCAUXVCCBRAM设定报警阈值。Zynq-7000PSVCCPINTVCCPAUXVCCO_DDRVivadoWizard三、XADC自动通道定序器的操作模式下面我们对UG480表3-9中所列的自动定序器的操作模式一一介绍。默认模式(DefaultMode)这是最基本的操作模式,能监测温度传感器和所有片内电压传感器,此模式不需要用户对XADC寄存器进行配置。XADC在上电和FPGA下载编程后自动进入默认模式。1(41h)的[SEQ3:SEQ0]0000ADC16XADC8OT(过热)以外的所有报警输出(ALM[7:0])ADCUG480表4-3:默认模式下的采样顺序采样顺序采样顺序(Zynq-7000)1通道地 址说 明校准08hADCAADCB2VCCPINT0DhVCCPINT传感器3VCCPAUX0EhVCCPAUX传感器4VCCO_DDR0FhVCCO_DDR传感器5Temp00h温度传感器6VCCINT01hVCCINT传感器7VCCAUX02hVCCAUX传感器8VCCBRAM06hVCCBRAM传感器单次通过模式(SinglePassMode)1(41h)的[SEQ3:SEQ0]000148h4Fh(48hADC,(48h49h)寄存器中选择的通4-14-2单次扫描完成后,XADC默认进入单通道(SingleChannel)模式。此时XADC将对配置寄存器0(40h)中位CH5CH01(41h)的[SEQ3:SEQ0]0001。连续循环扫描模式(ContinuousSequenceMode)[SEQ3:SEQ0]0010连续循环扫描ADCDRP(48h49h)。但在对这2连续循环扫描模式择寄存器(48h49h)0000(41h)的[SEQ3:SEQ0],XADC在对SEQ3SEQ0,XADC是对SEQ3SEQ0同步采样模式(SimultaneousSamplingMode)2ADC(ADCAADCB),84-407ADCA,A815ADCB,BA、B4-449hB表4-4:同步采样模式下定序器寄存器(49h)的位定义1016,24辅助通道0和82117,25辅助通道1和93218,26辅助通道2和104319,27辅助通道3和115420,28辅助通道4和126521,29辅助通道5和7622,30辅助通道6和8723,31辅助通道7和x8x未定义x9x未定义x10x未定义x11x未定义x12x未定义x13x未定义x14x未定义x15x未定义顺序号Bit顺序号BitADC通道说明13(1)14(1)15(1)2(4Ah和4Bh(4Ch和4Dh因此允许把AB4-1和表4-24Eh00810ADCCLK48hADC(ADCB)ADC同步采样模式下不能执行自动校准,XADC但是XADCADCXADCADCADC状态寄存器是同时更新的。连续和事件驱动转换的定时模式都可以用于此模式。独立ADC模式(IndependentADCMode)ADC,ADCA模式相同。在此模式下,报警输出处于启用状态,所以必须正确配置报警阈值。与默认模式一样,16ADCBADC持对FPGA只有专用模拟通道(VPVN)ADCB。而内部通道(传感器ADCA,ADCAADCBADCABXADC(EOS变高一次)ADC独立ADC48h49h(4-54-6)制寄存器如定义平均次数、模拟输入模式和采样稳定时间等功能都保持不变。1113VP/VN12未定义UG4801113VP/VN12未定义顺序号BitADC通道说 明0未定义1未定义2未定义3未定义4未定义5未定义-6-未定义7未定义8未定义9未定义10未定义--131415未定义注1.不支持Kintex-7器件232345678Bit0123456ADC通道16171819202122说 明辅助通道0辅助通道123459723辅助通道7(1)10824辅助通道811925辅助通道9121026辅助通道10131127辅助通道11141228辅助通道12151329辅助通道13(1)161430辅助通道17153114(1)辅助通道15(1)注1.不支持Kintex-7器件四、Vivado开发环境下使用XADCWizard建立XADC工程项目Vivado和SDK开发工具简介利用VivadoSDKZynq7000VivadoXilinxIPIP好的硬件平台生成顶层文件(wrapper),bit计和bitSDK,SDKSDKVivadoIPIPID、基地址、每个IPAPIVivadoIPAPIIPAPIZynq7000PS(处理器)PL(FPGA)AXIAXIAHBAPBZynq7000AXI4AXI4VivadoPSIPAXI对用户完全透明。用户不必关心细节,只需关注自己的应VivadoXADC项目举例6-1“ZYNQ7ProcessingSystem”IPZYNQ7PeripheralI/OPinsMIO48MIO49UART1(因为笔者使用的ZYNQUART1),波特率选择115200。在DDRConfigurationDDR3“XADCWizard”IPxadc_wiz_0XADC6-16-2。图6-1添加ZYNQ7和XADCIP图6-2XADC的配置页面Basic选项页首先进入XADCWzard的Basic选项页。有以下选项区:⑴InterfaceOption选项区XADCAXI4Lite,DRPNone,DRPDRPFPGAFPGAXADCPSAXI4Lite寄存器。⑵StartupChannelSelection选项区SimultaneousSelection,此模式允许同时监测两路外部模拟输入。IndependentADC,ADCA,ADCBSingleChannel,此模式只能选择一个模拟输入通道。如果选择校准(Calibration)真测试台不支持验证此项选择的仿真激励和数据比较。ChannelSequencer,ChannelSequencer项页面中选择要监测的模拟通道。20图6-3Basi选项页⑶AXI4-StreamOption,此选件用来启用或禁用AXI4-Stream接口。EnableAXI4-StreamAXI4-StreamFIFODepthFIFO71020FIFOALMOSTFULLFIFO⑷TimingMode,XADC可以在两种定时模式下工作:ContinuousMode,此模式下,XADCADEventMode,CONVSTCONVSTCLKADEventMode⑸DRPTimingOptionXADC时钟(ADCCLK)来自动态重组端口(DRP)的DCLKXADC250XADCDCLKDRP7seriesoftheSeriesXADCuserguide(UG480)。ADCCLK4-26MHz,XADCVivadoIDEDCLKAD(1Msps)DCLKWizardDCLKADCADC际的ADCAnalogSimOption,XADCWizardV3.3ADCSetup选项页21图6-4ADCSetup选项页⑴SequencerMode,此选项的下拉菜单有3个选择ContinuousDefaultOnePassBasicChannelSequencerSimultaneousSamplingIndependentADC模式,此选项就会显示出来,用户可以选择所需的定序器模式。⑵ChannelAveraging,下拉菜单允许选择所需的平均值。可用选项包括无、16、64和256。ADCCalibrationSupplySensorCalibrationADC/传感器校准的类型。EnableCALIBRATIONAveragingXADCExternalMultiplexerSetup,XADCFPGAI/OI/OMultiplexer”复选框来启用使用此功能。此外还需要指定用哪个XADCVPVN,VAUX0VAUX15。Enablemuxaddr_outportDRPMUXmuxaddr_outPowerDownOptions,转换器ADCBADCAADCB,只使用ADCAADCBADCA。此选项可用来节省用电,在断电时,ADC22Alarm选项业Alarms限和下限。如果测量值超出这些限制,报警逻辑的输出将激活。当测量值落在在这些限值之内时,报警将被被清除。VivadoIDE±5%。图6-5报警选项页ChannelSequencer选项页⑴在BasicXADC配置成ChannelSequencerSimultaneoussampling或IndependentADCXADCWizard4-9入模式,并增加所选通道的采样时间。在Simultaneoussamplingmodevauxp[0]/vauxn[0]将自动选择通道vauxp[8]/vauxn[8]vauxp[l]/vauxn[l]vauxp[9]/vauxn[9]等。在IndependentADCmode时,则只列出外部通道(不显示内部传感器通道)供用户选择。23图6-6自动定序器的通道选择页面⑵单通道选择BasicSingleChannel,ChannelSequencerSingleChannel6-6。图6-7单通道的选择页面SelectChannelChannelEnable,AverageEnableAcquisitionTime将根据不同的选择被允许或禁止。Summary选项页Summary选项卡列出XADC设计的所有关键参数,如下图所示。24PAGEPAGE33妇宁c ADCS红pIannChllllI的unai-r 可S9mm可InterfaceSeIected戏DCoperatingmodeIrfaceTim|ngModeDCLK「eqf>a心S它quence「ModeChannelA『agingEn灶ernIMu)(

赵14Liteannel_senc「falseContinuous100ContinuouNonefalse图6-8概括页面生成原理框图完成配置后生成的框图如下所示e+}^--xQ。D1agmm xeEdttore+}^--xQ。

._?口匕._QQ尸,QQ·盲

臼 :(J:pring_system7_o

DDR+++FQ心Z'(r,107ingSystemde0'ip2rj叩onnetpaiPm,ystemReset"l+Ill+Vaux7Ill+Vaux15sauadsanInnp_alann_out1wuala,mout叩int_alam1_0d叩扣x_alar1vcoddro•laaJtotl_ou(40].oc_ootwtby11+《ARESETNSOIJ_ACLKSOIJ_ARESETNMOO_ACl!KMIJOMIJ心+屑AXIInterconnectXADCWizardVaW<15

图6-9最终的原理框图XDC(Createproduct)和顶层文件(wrapper)XDC约束文件如下:图6-10约束文件执行综合和实现bitSDK9.在SDKFPGAbit图6-11下载bit流编写C语言测试程序,并调试下面的测试程序测试片内温度和电源传感器、专用模拟输入VpVn、VREFPVREFN、2AUX7AUX15。输出结果从串口打印显示(UART1,115200)。程序如下:#include<stdio.h>#include"xparameters.h"#include"xadcps.h"#include"xil_types.h"#include"xil_printf.h"#include"sleep.h"#defineXADCPS_CH_AUX_7intmain(){

23 //7的地址staticXAdcPs XAdcInst;XAdcPs_Config intStatus;u32VPVN_Adc;floatVPVN_True;u32VREFP_Adc;floatVREFP_True;u32Temp_Adc;floatTemp_True;u32VCCINT_Adc;floatVCCINT_True;u32VCCAUX_Adc;floatVCCAUX_True;u32VCCBRAM_Adc;floatVCCBRAM_True;u32VCCPINT_Adc;floatVCCPINT_True;u32VCCPAUX_Adc;floatVCCPAUX_True;u32VCCODDR_Adc;

//创建一个XADC的实例//声明实例的配置表指针//Vp/Vn//VREFP电压参考//Temp//FPGAVCCINT//FPGAVCCAUX//FPGARAM电压//PSVCCPINT//PSVCCPAUX//DDRVCCODDRfloatVCCODDR_True;u32AuxCH7_Adc;floatAuxCH7_True;u32AuxCH15_Adc;floatAuxCH15_True;

//AuxCH7电压//AuxCH15电压XAdcInst_Cfg=XAdcPs_LookupConfig(XPAR_PS7_XADC_0_DEVICE_ID);if(XAdcInst_Cfg==NULL){

//检查实例配置表returnXST_FAILURE;}//初始化实例Status=XAdcPs_CfgInitialize(&XAdcInst,XAdcInst_Cfg,XAdcInst_Cfg->BaseAddress);if(Status!=XST_SUCCESS){returnXST_FAILURE;}//设置连续转换XAdcPs_SetSequencerMode(&XAdcInst,XADCPS_SEQ_MODE_CONTINPASS);//选择采样通道XAdcPs_SetSeqChEnables(&XAdcInst,XADCPS_CH_TEMP|XADCPS_CH_VPVN|XADCPS_CH_VREFP|XADCPS_CH_VCCINT|XADCPS_CH_VCCAUX|XADCPS_CH_VBRAM|XADCPS_CH_VCCPINT|XADCPS_CH_VCCPAUX|XADCPS_CH_VCCPDRO|XADCPS_CH_AUX_7|XADCPS_CH_AUX_MAX);while(1) //读取并打印测量数据{Temp_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_TEMP);Temp_True=XAdcPs_RawToTemperature(Temp_Adc);printf("ADC_Temp%luTrue_Temp%f\n",Temp_Adc,Temp_True);VPVN_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VPVN);VPVN_True=XAdcPs_RawToVoltage(VPVN_Adc);printf("ADC_VPVN%luTrue_VPVN%f\n",VPVN_Adc,VPVN_True);VREFP_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VREFP);VREFP_True=XAdcPs_RawToVoltage(VREFP_Adc);printf("ADC_VREFP%luTrue_VREFP%f\n",VREFP_Adc,VREFP_True);VCCINT_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VCCINT);VCCINT_True=XAdcPs_RawToVoltage(VCCINT_Adc);printf("ADC_VCCINT%luTrue_VCCINT%f\n",VCCINT_Adc,VCCINT_True);VCCAUX_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VCCAUX);VCCAUX_True=XAdcPs_RawToVoltage(VCCAUX_Adc);printf("ADC_VCCAUX%luTrue_ACCAUX%f\n",VCCAUX_Adc,VCCAUX_True);VCCBRAM_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VBRAM);VCCBRAM_True=XAdcPs_RawToVoltage(VCCBRAM_Adc);printf("ADC_VCCBRAM%luTrue_VCCBRAM%f\n",VCCBRAM_Adc,VCCBRAM_True);VCCPINT_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VCCPINT);VCCPINT_True=XAdcPs_RawToVoltage(VCCPINT_Adc);printf("ADC_VCCPINT%luVccPInt%f\n",VCCPINT_Adc,VCCPINT_True);VCCPAUX_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VCCPAUX);VCCPAUX_True=XAdcPs_RawToVoltage(VCCPAUX_Adc);printf("ADC_VCCPAUX%luTrue_VCCPAUX%f\n",VCCPAUX_Adc,VCCPAUX_True);VCCODDR_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_VCCPDRO);VCCODDR_True=XAdcPs_RawToVoltage(VCCODDR_Adc);printf("ADC_VCCODDR%luTrue_VCCODDR%f\n",VCCODDR_Adc,VCCODDR_True);AuxCH7_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_AUX_7);AuxCH7_True=XAdcPs_RawToVoltage(AuxCH7_Adc);printf("ADC_AuxCH7%luTrue_AuxCH7%f\n",AuxCH7_Adc,AuxCH7_True);AuxCH15_Adc=XAdcPs_GetAdcData(&XAdcInst,XADCPS_CH_AUX_MAX);AuxCH15_True=XAdcPs_RawToVoltage(AuxCH15_Adc);printf("ADC_AuxCH15%luTrue_AuxCH15%f\n",AuxCH15_Adc,AuxCH15_True);usleep(100*100);}return0;}程序详解WivadoIPIPAPIVivadoIPVivadoAPI当用户在Vivado开发环境中已经加进了Xilinx提供的的IP后进入SDK在“xparameters.h”头文件中就已经定义了与该 IP相关的硬件设备的ID、基地址等参数。以本例 XADC为例,在xparameters.h头文件中就能找到以下定义:/*/*DefinitionsfordriverXADCPS*/#defineXPAR_XADCPS_NUM_INSTANCES1/*DefinitionsforperipheralPS7_XADC_0*/#defineXPAR_PS7_XADC_0_DEVICE_ID0#defineXPAR_PS7_XADC_0_BASEADDR0xF8007100#defineXPAR_PS7_XADC_0_HIGHADDR0xF8007120XADCID0SDK中用户想调用这个实例,可按以下流程操作。⑴创建一个XADC结构体的实例staticstaticXAdcPs XAdcInst;//XADC的实例XADC的结构体如下:typedefstruct{XAdcPs_Configu32 IsReady;}XAdcPs;

Config; /**<XAdcPs_Configofcurrentdevice*//**<Deviceisinitializedandready */⑵ XAdcPs_ConfigID。XAdcPs_Config XAdcPs_Config *XAdcInst_Cfg; //声明实例的配置表指针XAdcPs_Config也是一个结构体中,是一张存放与XADC/ADC有关的初始化信息的配置表格。typedefstruct{u16 DeviceId;u32 }XAdcPs_Config;

/**<UniqueIDofdevice*//**<Devicebaseaddress*/⑶查找实例的配置表,为初始化实例做准备工作头文件头文件"xadcps.h"XADCAPIXAdcInst_Cfg=XAdcPs_LookupConfig(XPAR_PS7_XADC_0_DEVICE_ID);XAdcInst_Cfg=XAdcPs_LookupConfig(XPAR_PS7_XADC_0_DEVICE_ID);用户程序执行上面这条语句查找实例的配置信息表时,在 xparameters.h头文件中就找到了XPAR_PS7_XADC_0_DEVICE_ID=0并指向了实例的基地址XPAR_PS7_XADC_0_BASEADDR0xF8007100。⑷执行实例初始化Status=XAdcPs_CfgInitialize(Status=XAdcPs_CfgInitialize(&XAdcInst,XAdcInst_Cfg,XAdcInst_Cfg->BaseAddress);用&XAdcInst指明实例的地址,并指向实例结构体和配置表的基地址就顺利完成初始化了。⑸调用API函数"xadcps.h""xadcps.h"XADCAPIXADCIPAPI函数的方法很简单,直接用&XAdcInst指明实例的地址就可以了。①如下面调用的函数指定XADC定序器的操作模式:XAdcPs_SetSequencerMode(&XAdcInstXAdcPs_SetSequencerMode(&XAdcInst,XADCPS_SEQ_MODE_CONTINPASS);采样模式有以下这些,前面章节已经详细介绍过:Defaultsafemode (XADCPS_SEQ_MODE_SAFE)Onepassthroughsequence Continuouschannelsequencing (XADCPS_SEQ_MODE_CONTINPASS)SingleChannel/Sequenceroff (XADCPS_SEQ_MODE_SINGCHAN)Simulataneoussamplingmode Independentmode (XADCPS_SEQ_MODE_INDEPENDENT)②开通选择的模拟通道下面的函数指定需要开通的模拟通道XAdcPs_SetSeqChEnables(&XAdcInst,XAdcPs_SetSeqChEnables(&XAdcInst,XADCPS_CH_TEMP||XADCPS_CH_VPVN|XADCPS_CH_VREFP|. );模拟通道地址如下:#defineXADCPS_CH_TEMP#defineXADCPS_CH_VCCINT#defineXADCPS_CH_VCCAUX#defineXADCPS_CH_VPVN#defineXADCPS_CH_VREFP#defineXADCPS_CH_VREFN#defineXADCPS_CH_VBRAM0x00x10x20x30x40x50x6/**<OnChipTemperature*//**<VCCINT*//**<VCCAUX*//**<VP/VNDedicatedanaloginputs*//**<VREFP*//**<VREFN*//**<On-chipVBRAMDataReg,7series*/#define#defineXADCPS_CH_SUPPLY_CALIB 0x07#defineXADCPS_CH_ADC_CALIB #defineXADCPS_CH_GAINERR_CALIB0x09#defineXADCPS_CH_VCCPINT 0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论