ZYNQ学习之旅--PS_XADC

简介

在ZYNQ的PL端有一个数模混合模块——XADC,它是一个硬核。XADC包含两个模数转换器(ADC),
一个模拟多路复用器,片上温度和片上电压传感器等。我们可以利用这个模块监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号。
ZYNQ SoC 的 XADC 模块包括两个 12 位的模数转换器,转换速率可以达到 1MSPS(每秒一百万次采
样)。它带有片上温度和电压传感器,可以测量芯片工作时的温度和供电电压。用户可以设置报警阈值,用来检测温度过高或者供电电压异常等事件。除此之外,通过 XADC 内部的模拟多路复用器,它还支持最多17 路外部模拟输入信号的测量,且支持单极、双极和差分等信号类型。在 7 系列的 FPGA 中,XADC 提供了 JTAG 和 DRP(dynamic reconfiguration port)接口,用于访问其内部的状态和控制寄存器。在 ZYNQ-7000 SoC 器件中,XADC 增加了一个 PS-XADC 接口,用于 PS 中的软
件控制 XADC 模块。
XADC 模块的系统框图如下所示:
在这里插入图片描述
在图 中 PL-JTAG 接口可以用于开发工具(Vivado)控制 XADC 模块,包括读取芯片温度信息等。而运行在 PS 中的软件则可以通过两种方式与 XADC 进行通信:
1、 通过 PS-XADC 接口,此时不需要对 PL 进行编程配置;
2、 通过 PS 到 PL 的 AXI Master 接口(M_AXI_GP),此时需要在 PL 中调用 AXI XADC IP 核。
在使用 PS 控制 XADC 时,如果对应用的性能要求较高,则推荐第二种方式,它使用的是一个并行的数
据路径(DRP 接口)。而 PS-XADC 接口同 PL-JTAG 接口一样,使用的是串行的数据路径,相对较慢。不过使用 PS-XADC 接口不占用 PL 的资源,也不需要对 PL 进行编程,只需要对 PL 部分供电即可。需要注意的是,PL-JTAG 接口与 PS-XADC 接口不能同时使用。而 XADC 可以在 PL-JTAG 接口(或 PS-XADC 接口)与 DRP 接口之间进行仲裁。

BD设计

在这里插入图片描述
配置ZYNQ核即可。

软件设计

/*
 * main.c
 */
#include <xparameters.h>
#include <xadcps.h>
#include <stdio.h>
#include <xil_types.h>
#include <xil_printf.h>
#include <sleep.h>
#define		XADC_ID		XPAR_PS7_XADC_0_DEVICE_ID

XAdcPs xadc_InstancePtr;
XAdcPs_Config *xadc_config;
u16 temp;
float temprature;
u16 vcc;
float vcc_;

int main()
{
	int status;
	xadc_config = XAdcPs_LookupConfig(XADC_ID);
	status = XAdcPs_CfgInitialize(&xadc_InstancePtr,xadc_config,xadc_config->BaseAddress);
	if(status!=XST_SUCCESS){
		print("failed\n");
		return XST_FAILURE;
	}
	status = XAdcPs_SelfTest(&xadc_InstancePtr);
	if(status!=XST_SUCCESS){
		print("failed\n");
		return XST_FAILURE;
	}
	print("selftest success\n");
	//设置为安全模式
	XAdcPs_SetSequencerMode(&xadc_InstancePtr, XADCPS_SEQ_MODE_SAFE);
	while(1){
		//获取温度
		temp = XAdcPs_GetAdcData(&xadc_InstancePtr, XADCPS_CH_TEMP);
		temprature = XAdcPs_RawToTemperature(temp);
		printf("temperature is %.04f c\n",temprature);
		vcc = XAdcPs_GetAdcData(&xadc_InstancePtr, XADCPS_CH_VCCINT);
		vcc_ = XAdcPs_RawToVoltage(vcc);
		printf("vcc is %.04f v\n",vcc_);
		sleep(2);
	}
	return 0;
}

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值