<font color="#FF8000">作者:ALINX</font>
<span id="profileBt"><a href="https://zhuanlan.zhihu.com/p/345036094">* 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。</a></span>
<strong>适用于板卡型号:</strong>
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG
<strong>vivado工程目录为“ps_hello/vivado”</strong>
<strong>vitis工程目录为“ps_sysmon/vitis”</strong>
本章介绍system monitors的使用,用于监测芯片的电压、温度值等,也可以通过PL端的ADC引脚作为外部信号的采集。PL端可以做17路ADC的采集,但开发板并没有在这些管脚上接设备,因此本章不做讲解。如图所示电压传感器可监测芯片的VCCINT,VCCAUX,VCCBRAM等,PL_SYSMON的VP_0和VN_0为一对专用的ADC模拟输入口。VAUXP[*]和VAUXN[*]也是ADC输入口,但是不用作ADC输入口时,可用作普通IO使用。本实验主要测量温度以及电压的值。
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121978-01…; alt=""></center>
Vivado工程,同样以“ps_hello”工程为基础。
<strong>FPGA工程师工作内容</strong>
下面介绍FPGA工程师负责内容。
<strong>1. Hardware读取System Monitor</strong>
1)打开工程,连接好开发板电源,JTAG下载器,并将开发板调整为JTAG模式,开发板上电,点击Open Hardware Manager,再点击Auto Connect,发现硬件。
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121979-02…; alt=""></center>
2)右键选中SysMon,新建Dashboard
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121980-03…; alt=""></center>
3)PS端和PL端都选择,点击OK
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121981-04…; alt=""></center>
4)默认会有温度信息
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121982-05…; alt=""></center>
5)点击+将电压值添加到窗口
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121983-06…; alt=""></center>
6)显示如下
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121985-07…; alt=""></center>
此方法优点是图形化显示,较为直观,但缺点是无法得到数据值。下面介绍PS读取XADC信息。
软件工程师工作内容
以下为软件工程师负责内容。
<strong>2. PS读取System Monitor信息</strong>
1)打开Vitis软件,新建Vitis工程
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121987-08…; alt=""></center>
2)可以在BSP中看到system monitor,可以导入Example学习
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121988-09…; alt=""></center>
3)此实验现象为读取温度和电压的数据,并每隔1S通过串口打印出来。通过XSysMonPsu_GetAdcData函数读取原始值,用XSysMonPsu_RawToTemperature_OnChip宏将ADC值转换为温度值。用XSysMonPsu_RawToVoltage转换为电压值。
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121989-10…; alt=""></center>
4)下载后在串口工具中可看到打印信息如下,读到温度,VCCINT,VCCAUX的值
<center><img src="http://xilinx.eetrend.com/files/2021-02/wen_zhang_/100061671-121990-11…; alt=""></center>