ZYNQ学习第二章_PS端使用GPIO点亮LED


前言

本文将详细介绍PS端使用GPIO的三种方式


一、VIVADO设计

使用GPIO的三种方式
总体框图:
在这里插入图片描述

MIO:ARM一侧专用引脚
EMIO:扩展MIO口,将FPGA的引脚交由PS端控制,需要在MIO配置中进行选择,并且配置IO口数量,默认64个IO,确定后,框图中PS端就会出现GPIO_0接口,这个引脚是一个三态门形式,在生成顶层的时候,会通过PL端资源将其转化为inout的GPIO接口。
在这里插入图片描述

AXI:PS端通过AXI接口,连接AXI_GPIO可以实现GPIO。
在这里插入图片描述
打开PS端GP AXI主机接口,PS端会添加一个M_AXI_GP0接口,添加AXI GPIO IP核,该IP核即实现了一个通过AXI控制的GPIO
在这里插入图片描述
选择ALL Output,否则是一个三态门接口,宽度设置为1;通过AXI Smartconnect(一从一主)进行连接。
时钟选择:选择通过PS端输出的时钟信号FCLK_CLK0以及相应的复位信号
在这里插入图片描述
在这里插入图片描述
添加复位模块后完成设计,导出BD products,输出顶层模块,约束PL端引脚,可以将俩个GPIO(AXI和EMIO,MIO属于PS端,无需约束)输出接口连接俩个LED灯,生成bit流,导出硬件信息,由于加入了PL端设计,必须勾选include bit流

二、VITIS设计

1.启动VITIS

创建硬件平台

2.导入GPIO示例

在这里插入图片描述

3.GPIO代码设计

注:代码为本人通过学习FPGA奇哥系列网课进行自主编写
main函数,通过示例工程进行学习,主要包括,初始化函数、设置GPIO输入输出方向函数、读取输入数据、输出数据。实现功能为,通过MIO读取PS端按键电平信息,将按键电平信息通过EMIO和AXI_GPIO输出给PL端LED灯,实现PS端按键控制PL端LED灯的功能。

#include "main.h"
#include "gpio.h"


XGpioPs ZYNQ_Gpio;//GPIO控制器结构体
XGpio AXI_Gpio;
int main(){
   
	int key_status = 0;
	xil_printf("start\r\n");							//串口打印Start
	GpioInit(&ZYNQ_Gpio,XPAR_PS7_GPIO_0_DEVICE_ID);		//初始化GPIO
	GpioInputSet(&ZYNQ_Gpio,KEY);						//设置GPIO方向为输入
	GpioOutputSet(&ZYNQ_Gpio,LED);						//设置LED为输出

	AXIgpioInit(&AXI_Gpio, XPAR_AXI_GPIO_0_DEVICE_ID);	//初始化AXI GPIO方向为输入
	AXIgpioOutputSet(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺子学不会FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值