使用Vivado配置XDC文件以配置EMIO接口

硬件平台:黑金AXU3EG
软件平台:vivado2020.1 vitis2020.1


完成配置 选OK 在Diagram窗口中可以看到已经多了一个GPIO
选中端口 点击鼠标右键 选择Make External
在External Interface Properties 可以更改GPIO名称


Ctrl+S 保存设计
生成顶层HDL

生成Bitstream文件


对话框有OK点OK YES 点YES


完成后Ctrl+S保存管脚约束 在弹出的对话框中输入XDC文件名之后OK


生成bitstream文件 生成后弹出对话框选择如下图

可以选择查看资源使用报告

导出硬件

至此vivado部分结束

通过生成的XSA文件创建VITIS工程

使用PL端扩展的EMIO引脚 引脚号 查看使用手册推断 Pin78

MIO到77 第一个EMIO为78
代码实现PL端按键控制PS端LED
PL扩展的EMIO与MIO用法一致

#include "xparameters.h"	 //器件参数信息
#include "xgpiops.h"		 //包含PS GPIO的函数声明
#include "xstatus.h"		 //包含XST_FAILURE和XST_SUCCESS的宏定义
#include <xil_printf.h>  	 //包含print()函数
#include "sleep.h"			 //sleep()函数

#define GPIO_DEVICE_ID		XPAR_XGPIOPS_0_DEVICE_ID //定义器件ID号
#define PS_LED1             40        //PS端LED宏定义
#define PL_KEY              78		  //PL端按键宏定义
XGpioPs PS_Gpio;           			  //GPIO设备的驱动程序实例

int main(void)
{
	int Status;
	
	XGpioPs_Config *ConfigPtr;        //设备配置信息结构体指针

	print("EMIO test \r\n");

	//查询设备器件ID号
	ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);

	//XGpioPs_CfgInitialize 为PS端GPIO初始化函数 返回值为XST_FAILURE 和 XST_SUCCESS
	Status = XGpioPs_CfgInitialize(&PS_Gpio, ConfigPtr,
						ConfigPtr->BaseAddr);

	if(Status != XST_SUCCESS)
	{
		return XST_FAILURE;
	}

	//设置LED引脚方向 LED为输出
	XGpioPs_SetDirectionPin(&PS_Gpio, PS_LED1, 1);
	//设置指定引脚的输出使能
	XGpioPs_SetOutputEnablePin(&PS_Gpio, PS_LED1, 1);
	
	//设置PL_KEY引脚为输入
	XGpioPs_SetDirectionPin(&PS_Gpio, PL_KEY, 0);

	while(1)
	{
		if(XGpioPs_ReadPin(&PS_Gpio,PL_KEY) == 0)
		{
			usleep(10000);					 //消抖
			XGpioPs_WritePin(&PS_Gpio, PS_LED1,1);
		}
		else
		{
			usleep(10000);
			XGpioPs_WritePin(&PS_Gpio, PS_LED1, 0);
		}
	}
	//返回值为XGpioPs 实例/驱动程序初始化状态值
	return XST_SUCCESS;
}
物联沃分享整理
物联沃-IOTWORD物联网 » 使用Vivado配置XDC文件以配置EMIO接口

发表评论