zynq的emio和axi_ZYNQ 的三种GPIO :MIO、EMIO、AXI_GPIO小节

本文详细介绍了ZYNQ芯片的三种GPIO类型:MIO、EMIO和AXI_GPIO。MIO是多功能IO,直接与PS相连,无需额外配置;EMIO扩展了MIO,通过PL连接外部;AXI_GPIO是通过AXI总线的GPIOIP核。对于MIO和EMIO的使用,主要涉及PS的内存地址操作,而AXI_GPIO则涉及到AXI总线交互。
摘要由CSDN通过智能技术生成

ZYNQ 共有三种GPIO:MIO、EMIO、AXI_GPIO。

Ug585 MIO & EMIO

1、MIO

multiuse I/O,多功能IO接口,分配在 GPIO 的 Bank0 和Bank1,属于Zynq的PS部分。在芯片外部有54个引脚,这些引脚可以用在GPIO、SPI、UART、TIMER、Ethernet、USB等功能上,每个引脚都同时具有多种功能,故叫多功能。这些 IO 与 PS 直接相连。不需要添加引脚约束,MIO 信号对 PL部分是透明的,不可见。所以对 MIO 的操作可以看作是纯 PS 的操作。

xparameters.h

#define XPAR_PS7_GPIO_0_DEVICE_ID 0

#define XPAR_PS7_GPIO_0_BASEADDR 0xE000A000

#define XPAR_PS7_GPIO_0_HIGHADDR 0xE000AFFF

GPIO 的控制和状态寄存器基地址为:0xE000_A000,我们 SDK 下软件操作底层都是对于内存地址空间的操作。

一个GPIO端口至少需要两个寄存器,一个控制用的通用IO口控制寄存器和一个存放数据的通用IO端口数据寄存器。

GPxCON寄存器为控制寄存器,它的每一位对应一个引脚,其某位设为0,相应的引脚为输出引脚,为1时为输入引脚。

GPxDAT为数据寄存器,当引脚设为输入时,读此寄存器可以知道相应的引脚的电平状态为高还是低,当引脚设为输出时,写此寄存器可令此引脚输出为高电平或者低电平。

Bank0有32个MIO引脚,Bank1有22个MIO引脚,54个引脚直接通过MIO连接到PS上,不需硬件配置,直接使用SDK软件进行编程。

2、EMIO

扩展MIO,分布在BANK2、BANK3,依然属于Zynq的PS部分,只是连接到了PL上,再从PL的引脚连到芯片外面实现数据输入输出。当 MIO 不够用时, PS 可以通过驱动 EMIO 控制 PL 部分的引脚 。EMIO 有 64 个引脚可供我们使用。下图为Vivado工程里ZYNQ CPU核配置,确保EMIO勾选,设置了多少位位宽,即为其分配了多少个管脚,再添加管脚约束文件,指向相应的PL部分管脚。

EMIO设置

设置好以后以GPIO的形式呈现在ZYNQ IP 核上

3、AXI_GPIO

AXI_GPIO相当于GPIO的IP核,是通过AXI总线挂在PS上的GPIO上。

AXI_GPIO IP核

4.总结

1.对MIO或EMIO gpio进行操作,都属于PS,引用xgpiops.h文件,对AXI_gpio引用xgpio.h

2.PL输出信号绑定引脚。

3.参考自己板子的电路图

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值