0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

XADC內(nèi)嵌在PS端的使用

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-04-12 19:37 ? 次閱讀

XADC內(nèi)嵌在PS端的使用

XADC內(nèi)嵌在PS端,允許CPU或其他主機(jī)連接XADC,而不用使用PL端。XADC最大采樣率為1MSPS,精度為12bits,內(nèi)置電壓和溫度傳感器,可監(jiān)測芯片的電壓及溫度信息。如圖所示電壓傳感器可監(jiān)測芯片的VCCINT,VCCAUX,VCCBRAM等,VP_0和VN_0為一對專用的ADC模擬輸入口。VAUXP[*]和VAUXN[*]也是ADC輸入口,但是不用作ADC輸入口時(shí),可用作普通IO使用。

XADC內(nèi)嵌在PS端的使用

int XAdcPolledPrintfExample(u16 XAdcDeviceId)

{

int Status;

XAdcPs_Config *ConfigPtr;

u32 TempRawData;

u32 VccPintRawData;

u32 VccPauxRawData;

u32 VccPdroRawData;

float TempData;

float VccPintData;

float VccPauxData;

float MaxData;

float MinData;

XAdcPs *XAdcInstPtr = &XAdcInst;

printf(" Entering the XAdc PolledExample. ");

/*

* Initialize the XAdc driver.

*/

ConfigPtr= XAdcPs_LookupConfig(XAdcDeviceId);

if (ConfigPtr == NULL) {

return XST_FAILURE;

}

XAdcPs_CfgInitialize(XAdcInstPtr,ConfigPtr,

ConfigPtr->BaseAddress);

/*

* Self Test the XADC/ADC device

*/

Status= XAdcPs_SelfTest(XAdcInstPtr);

if (Status != XST_SUCCESS) {

return XST_FAILURE;

}

/*

* Disable the Channel Sequencer beforeconfiguring the Sequence

* registers.

*/

XAdcPs_SetSequencerMode(XAdcInstPtr,XADCPS_SEQ_MODE_SAFE);

/*

* Read the on-chip Temperature Data(Current/Maximum/Minimum)

* from the ADC data registers.

*/

TempRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_TEMP);

TempData= XAdcPs_RawToTemperature(TempRawData);

printf(" The Current Temperature is%0d.%03d Centigrades. ",

(int)(TempData), XAdcFractionToInt(TempData));

TempRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr, XADCPS_MAX_TEMP);

MaxData= XAdcPs_RawToTemperature(TempRawData);

printf("The Maximum Temperature is%0d.%03d Centigrades. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

TempRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr, XADCPS_MIN_TEMP);

MinData= XAdcPs_RawToTemperature(TempRawData & 0xFFF0);

printf("The Minimum Temperature is%0d.%03d Centigrades. ",

(int)(MinData), XAdcFractionToInt(MinData));

/*

* Read the VccPint Votage Data(Current/Maximum/Minimum) from the

* ADC data registers.

*/

VccPintRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_VCCPINT);

VccPintData= XAdcPs_RawToVoltage(VccPintRawData);

printf(" The Current VCCPINT is%0d.%03d Volts. ",

(int)(VccPintData),XAdcFractionToInt(VccPintData));

VccPintRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MAX_VCCPINT);

MaxData= XAdcPs_RawToVoltage(VccPintRawData);

printf("The Maximum VCCPINT is %0d.%03dVolts. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

VccPintRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MIN_VCCPINT);

MinData= XAdcPs_RawToVoltage(VccPintRawData);

printf("The Minimum VCCPINT is %0d.%03dVolts. ",

(int)(MinData), XAdcFractionToInt(MinData));

/*

* Read the VccPaux Votage Data(Current/Maximum/Minimum) from the

* ADC data registers.

*/

VccPauxRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_VCCPAUX);

VccPauxData= XAdcPs_RawToVoltage(VccPauxRawData);

printf(" The Current VCCPAUX is%0d.%03d Volts. ",

(int)(VccPauxData),XAdcFractionToInt(VccPauxData));

VccPauxRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MAX_VCCPAUX);

MaxData= XAdcPs_RawToVoltage(VccPauxRawData);

printf("The Maximum VCCPAUX is %0d.%03dVolts. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

VccPauxRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MIN_VCCPAUX);

MinData= XAdcPs_RawToVoltage(VccPauxRawData);

printf("The Minimum VCCPAUX is %0d.%03dVolts. ",

(int)(MinData), XAdcFractionToInt(MinData));

/*

* Read the VccPdro Votage Data(Current/Maximum/Minimum) from the

* ADC data registers.

*/

VccPdroRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_VCCPDRO);

VccPintData= XAdcPs_RawToVoltage(VccPdroRawData);

printf(" The Current VCCPDDRO is%0d.%03d Volts. ",

(int)(VccPintData), XAdcFractionToInt(VccPintData));

VccPdroRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MAX_VCCPDRO);

MaxData= XAdcPs_RawToVoltage(VccPdroRawData);

printf("The Maximum VCCPDDRO is %0d.%03dVolts. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

VccPdroRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MIN_VCCPDRO);

MinData= XAdcPs_RawToVoltage(VccPdroRawData);

printf("The Minimum VCCPDDRO is %0d.%03dVolts. ",

(int)(MinData), XAdcFractionToInt(MinData));

printf("Exiting the XAdc Polled Example. ");

return XST_SUCCESS;

}

/****************************************************************************/

/**

*

* This function converts the fractionpart of the given floating point number

* (after the decimal point)to aninteger.

*

* @param FloatNum is the floating point number.

*

* @return Integer number to a precision of 3 digits.

*

* @note

* This function is used in the printingof floating point data to a STDIO device

* using the xil_printf function. Thexil_printf is a very small foot-print

* printf function and does notsupport the printing of floating point numbers.

*

*****************************************************************************/

int XAdcFractionToInt(float FloatNum)

{

float Temp;

Temp= FloatNum;

if (FloatNum < 0) {

Temp= -(FloatNum);

}

return( ((int)((Temp -(float)((int)Temp)) * (1000.0f))));

}

XADC內(nèi)嵌在PS端的使用

原文標(biāo)題:Zynq中PS端XADC

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50241

    瀏覽量

    750106
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    604

    瀏覽量

    47072
  • XADC
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    3389

原文標(biāo)題:Zynq中PS端XADC

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【Z-turn Board試用體驗(yàn)】+XADC應(yīng)用

    本帖最后由 yintengfei 于 2015-6-10 09:14 編輯 拿到板子一段時(shí)間 但是實(shí)在太忙,前幾天搞個(gè)helloworld整的我感覺也立馬不好了。今天主要XADCZYNQ
    發(fā)表于 06-09 01:20

    玩轉(zhuǎn)Zynq連載39——[ex58] 基于Zynq的XADC采集控制實(shí)例

    實(shí)現(xiàn)模擬電壓采集方式的設(shè)置,并讀取轉(zhuǎn)換后的模擬電壓數(shù)據(jù)。XADC內(nèi)部寄存器的映射如圖所示。圖 XADC內(nèi)部寄存器映射關(guān)系截圖Zynq中,XADC模塊通過AXI GP總線連接到
    發(fā)表于 12-03 11:17

    請問在哪里連接XADC的外部端口?

    _0_MUXADDR_pin = axi_xadc_0_MUXADDR,DIR = O,VEC = [4:0]我在哪里連接這些外部端口?我的設(shè)計(jì)基地Vivado。XDC文件中,應(yīng)該為哪些引腳分配?謝謝您的幫助!
    發(fā)表于 07-14 16:30

    XADC溫度報(bào)警滯后的原因?

    大家好!我們開始Zynq(XC7Z020)中使用XADC,SW人員想知道溫度報(bào)警中斷是否有滯后現(xiàn)象?特別是有兩個(gè)位似乎很有用,cource的bit 0(OT)和bit 8(OT Deactive
    發(fā)表于 07-15 08:37

    純粹PL上使用XADC能實(shí)現(xiàn)嗎?

    嗨,我想純粹PL上使用XADC(convst + data)我似乎需要使用DRP來獲取轉(zhuǎn)換后的值,對吧?或者他們能以某種方式接受并行格式?如果沒有,是否有一些DRP的VHDL示例?還有一個(gè)問題:我
    發(fā)表于 08-10 06:43

    為什么XADC沒有轉(zhuǎn)換溫度結(jié)果?

    嗨,我正在使用kintex 7設(shè)備并且使用XADC時(shí)遇到了一些麻煩。我附上了從Vivado ILA拍攝的圖像,顯??示了convst_in和busy信號(hào)變高但測量溫度始終為0。開發(fā)板上,x
    發(fā)表于 08-24 09:01

    【正點(diǎn)原子FPGA連載】第十章PS XADC接口實(shí)驗(yàn)--摘自【正點(diǎn)原子】領(lǐng)航者 ZYNQ 之嵌入式開發(fā)指南

    原子公眾號(hào),獲取最新資料第十章PS XADC接口實(shí)驗(yàn)ZYNQ的PL有一個(gè)數(shù)?;旌夏K——XADC,它是一個(gè)硬核。
    發(fā)表于 09-01 17:35

    如何在PS中調(diào)用Zynq內(nèi)部的XADC模塊進(jìn)行片內(nèi)溫度和電源電壓測量

    應(yīng)該是“Xilinx模擬混合信號(hào)模塊”,是FPGA中的一個(gè)硬核。7系列FPGA中,XADC提供了DRP和JTAG接口,用于訪問XADC的狀態(tài)和控制寄存器。Zynq中添加了第三個(gè)接口,稱作PS
    發(fā)表于 12-27 06:18

    Adam Taylor玩轉(zhuǎn)MicroZed系列62:對Zynq XADC問題的回答

    討論,這個(gè)問題解決之后我們將回來繼續(xù)學(xué)習(xí)PicoBlaze。 前面的博客中提到,有多種方式可以實(shí)現(xiàn)XADC與Zynq之間的交互,除了JTAG接口: 1.我們可以借助DevC接口實(shí)現(xiàn)XADCPS(處理器系統(tǒng))之間的直接交互,使用
    發(fā)表于 02-08 10:04 ?284次閱讀

    基于Linux的XADC控制器模塊的兩種形式配置

    1、 簡介 XADC是zynq芯片內(nèi)部進(jìn)行溫度和電壓檢測的模塊,通過(Xilinx Wiki - xadc.html)這篇wiki可以知道,XADC控制器有兩種表現(xiàn)形式,一種是位于PS
    發(fā)表于 06-30 14:24 ?3146次閱讀
    基于Linux的<b class='flag-5'>XADC</b>控制器模塊的兩種形式配置

    ISE和Vivado中XADC的向?qū)а菔?/a>

    該視頻快速概述了ISE和Vivado中可用的XADC向?qū)е械慕缑?,功能和功能? 對于希望實(shí)例化基本設(shè)計(jì)的數(shù)字設(shè)計(jì)人員來說,這是一個(gè)很好的工具。
    的頭像 發(fā)表于 11-20 06:19 ?4584次閱讀

    XADC內(nèi)嵌PS允許CPU或其他主機(jī)連接而不用使用PL

    XADC內(nèi)嵌PS,允許CPU或其他主機(jī)連接XADC,而不用使用PL
    的頭像 發(fā)表于 05-27 11:30 ?2259次閱讀

    Zynq片內(nèi)XADC應(yīng)用筆記

    .pdf?xapp1183:zynq-xadc-axi.pdf?xapp1182:zynq_axi_xadc_mon.pdf??xapp1172:zynq_ps_xadc.pdf?pg019:axi_
    發(fā)表于 09-22 18:36 ?14次下載
    Zynq片內(nèi)<b class='flag-5'>XADC</b>應(yīng)用筆記

    學(xué)會(huì)Zynq(22)XADC測量片內(nèi)溫度與電源電壓

    應(yīng)該是“Xilinx模擬混合信號(hào)模塊”,是FPGA中的一個(gè)硬核。7系列FPGA中,XADC提供了DRP和JTAG接口,用于訪問XADC的狀態(tài)和控制寄存器。Zynq中添加了第三個(gè)接口,稱作PS
    發(fā)表于 01-05 14:26 ?10次下載
    學(xué)會(huì)Zynq(22)<b class='flag-5'>XADC</b>測量片內(nèi)溫度與電源電壓

    ZYNQ7020的PS的基本開發(fā)流程

    這篇文章記錄ZYNQ7020的PS的基本開發(fā)流程,關(guān)于PL的開發(fā)流程,參考之前文章,這里放個(gè)超鏈接。
    的頭像 發(fā)表于 07-24 18:12 ?7241次閱讀