赛灵思
登录
直播中
李波波
8年用户
206经验值
私信
关注
[问答]
MIO/EMIO/AXI_GPIO接口详解
开启该帖子的消息推送
Zynq-7000
gpio接口
ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
回帖
(1)
孟薇
2021-2-2 15:14:53
传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。
灌电流方式:LED正极接VCC,负极接IO口。IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,LED点亮。但是当你吧LED正极接在IO接口,负极接GND时,将IO接口置于高电平,LED会亮,但因为IO接口上拉能力不足而使亮度不理想,可以用下面介绍的方式解决这个问题。
PS部分框图如上图所示,PS 和外部接口之间的通信主要是通过复用的输入 / 输出( Multiplexed Input/Output,MIO)实现的,它提供了可以做灵活配置的 54 个引脚,这表明外部设备和引脚之间的映射是可以按需定义的。这样的连接也可以通过扩展 MIO (ExtendedMIO,EMIO)来实现,EMIO 并不是 PS 和外部连接之间的直接通路,而是通过共用了PL 的 I/O 资源来实现的 。这些都出现在上图的左侧。当需要扩展超过 54 个引脚的时候可以用 EMIO,而当 PL 中实现了一个 IP 包的时候,这也是 PS 和 PL 中的IP 包接口的一种方法。
可用的 I/O 包括标准通信接口和通用输入 / 输出 (General Purpose Input/Output,GPIO),GPIO 可以用做各种用途,包括简单的按钮、开关和 LED。
在ZYNQ7000系列PS中除了上面提到的MIO和EMIO之外,还包括AXI_GPIO。
这三者关系如下:
其中MIO和EMIO是直接挂在PS上的GPIO。而AXI_GPIO是通过AXI总线挂在PS上的GPIO上。
我们先看一下MIO和EMIO:下图EMIO和MIO的结构。其中MIO分布在BANK0,BANK1,而EMIO则分布在BANK2、BANK3。
注意一下几项:
首先、MIO在zynq上的管脚是固定的,而EMIO,是通过PL部分扩展的,所以使用EMIO时候需要在约束文件中分配管脚,所以设计EMIO的程序时,需要生成PL部分的bit文件,烧写到FPGA中。
其次、由下图可以看出MIO共占54bit,而EMIO占64bit。其中MIO占用IO号为0-53。而EMIO占用IO号为54-117。
再者、无论是EMIO还是MIO都属于PS上的IO,直接由PS操作。在调用头文件,只调用#include “xgpiops.h”即可,而在调用AXI_GPIO时,则需要#include “xgpio.h”。
关于EMIO:
从 PS 出来,有几种连接可以经由 PL 到外部接口上,这被称作扩展的 MIO (Extended MIO) ,即 EMIO。
EMIO 涉及到两个域之间的信号传输,是由一组简单的导线连接实现的,因此,EMIO 并不支持所有的 MIO 接口,而支持的那些中,也有些的能力受到了限制 。这些连接被安排成两个 32 位的组。
很多情况下,经由 EMIO 的接口是直接连接到所需的 PL 的外部引脚上的,这个连接是由一个约束(描述)文件中的条目所指定的。在这个模式下,EMIO 可以实现额外的 64 个输入线和 64 个带有输出始能的输出线。另一个选择是用 EMIO 来连接PS 和 PL 里的外设模块。下图描绘了这两种使用模式 :
最后看一下,AXI_GPIO相当于GPIO的IP核,我们调用时是占用相应AXI总线地址空间,如下图,占用地址为0x41200000和0x41210000
传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。
灌电流方式:LED正极接VCC,负极接IO口。IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,LED点亮。但是当你吧LED正极接在IO接口,负极接GND时,将IO接口置于高电平,LED会亮,但因为IO接口上拉能力不足而使亮度不理想,可以用下面介绍的方式解决这个问题。
PS部分框图如上图所示,PS 和外部接口之间的通信主要是通过复用的输入 / 输出( Multiplexed Input/Output,MIO)实现的,它提供了可以做灵活配置的 54 个引脚,这表明外部设备和引脚之间的映射是可以按需定义的。这样的连接也可以通过扩展 MIO (ExtendedMIO,EMIO)来实现,EMIO 并不是 PS 和外部连接之间的直接通路,而是通过共用了PL 的 I/O 资源来实现的 。这些都出现在上图的左侧。当需要扩展超过 54 个引脚的时候可以用 EMIO,而当 PL 中实现了一个 IP 包的时候,这也是 PS 和 PL 中的IP 包接口的一种方法。
可用的 I/O 包括标准通信接口和通用输入 / 输出 (General Purpose Input/Output,GPIO),GPIO 可以用做各种用途,包括简单的按钮、开关和 LED。
在ZYNQ7000系列PS中除了上面提到的MIO和EMIO之外,还包括AXI_GPIO。
这三者关系如下:
其中MIO和EMIO是直接挂在PS上的GPIO。而AXI_GPIO是通过AXI总线挂在PS上的GPIO上。
我们先看一下MIO和EMIO:下图EMIO和MIO的结构。其中MIO分布在BANK0,BANK1,而EMIO则分布在BANK2、BANK3。
注意一下几项:
首先、MIO在zynq上的管脚是固定的,而EMIO,是通过PL部分扩展的,所以使用EMIO时候需要在约束文件中分配管脚,所以设计EMIO的程序时,需要生成PL部分的bit文件,烧写到FPGA中。
其次、由下图可以看出MIO共占54bit,而EMIO占64bit。其中MIO占用IO号为0-53。而EMIO占用IO号为54-117。
再者、无论是EMIO还是MIO都属于PS上的IO,直接由PS操作。在调用头文件,只调用#include “xgpiops.h”即可,而在调用AXI_GPIO时,则需要#include “xgpio.h”。
关于EMIO:
从 PS 出来,有几种连接可以经由 PL 到外部接口上,这被称作扩展的 MIO (Extended MIO) ,即 EMIO。
EMIO 涉及到两个域之间的信号传输,是由一组简单的导线连接实现的,因此,EMIO 并不支持所有的 MIO 接口,而支持的那些中,也有些的能力受到了限制 。这些连接被安排成两个 32 位的组。
很多情况下,经由 EMIO 的接口是直接连接到所需的 PL 的外部引脚上的,这个连接是由一个约束(描述)文件中的条目所指定的。在这个模式下,EMIO 可以实现额外的 64 个输入线和 64 个带有输出始能的输出线。另一个选择是用 EMIO 来连接PS 和 PL 里的外设模块。下图描绘了这两种使用模式 :
最后看一下,AXI_GPIO相当于GPIO的IP核,我们调用时是占用相应AXI总线地址空间,如下图,占用地址为0x41200000和0x41210000
举报
更多回帖
rotate(-90deg);
回复
相关问答
Zynq-7000
gpio接口
将板连接到IP
接口
的面板找不到该怎么办?
2019-09-29
991
在
GPIO
2
接口
上添加三态
GPIO
端口时会导致错误
2019-04-19
1646
如何将UART信号路由到可编程逻辑?
2019-09-24
2304
如何在我的C代码中编写写入
GPIO
的代码?
2019-10-25
2079
【Z-turn Board试用体验】XC7Z010
GPIO
原理
2015-07-17
8358
ZC702 Eval Kit设置USB无法连接到打击垫
2019-09-16
1563
无法将其中一个
GPIO
引脚配置为Zynq中的输入是为什么?
2020-05-21
3443
请问如何使用SPI
接口
进行ARM和FPGA之间的通信?
2020-04-29
1644
如何使用Pmod Zybo Board的
MIO
Pmod JF
2020-04-21
2064
请问zynq 怎么实现PS与PL数据交互,然后通过UART串口打印出来?
2020-08-03
4699
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分