Zynq 7000的3种IO
概念
MIO
MIO:多功能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软件进行编程。
EMIO
EMIO:Extend multiuse I/O,分布在BANK2、BANK3,依然属于Zynq的PS部分,只是连接到了PL上,再从PL的引脚连到芯片外面实现数据输入输出。当我们想通过PS来访问PL又不想浪费AXI总线时,就通过EMIO接口来访问。在54个I/O中,有一些只能用于MIO,大部分可以用于MIO与EMIO,一些接口信号线只能通过EMIO访问。
下图为Vivado工程里ZYNQ CPU核配置,确保EMIO勾选,设置了多少位位宽,即为其分配了多少个管脚,再添加管脚约束文件,指向相应的PL部分管脚。


EMIO依然属于PS,只是连接到了PL,再从PL输出信号。
Q:如何理解这句话?
A:相当于说,点亮PS的对应的控制器,但是此时的外部引脚是不确定的;必须通过PL端进行管脚约束,才能知道这个控制器的外部引脚连到了哪里。
换句话说,PS控制了时序,PL端提供了引脚。
AXI_GPIO
AXI(Advanced eXtensible Interface)是一种总线。
AXI_GPIO相当于GPIO的IP核,是通过AXI总线挂在PS上的GPIO上。

EMIO的使用例程
以双串口为例:
实现功能:
① 实现数据直接从PS的MIO口接收与发送
② 通过PL口实现数据的接收与发送
③ 实现数据的双串口接收与发送(即PS可同时从两个UART口接收或发送数据)
新建工程——创建block design——添加Zynq ps IP——预设为Zedboard板
可以看到UART1 的48、49 MIO接口被选中(如下图)

回到Peripheral I/OPins选项,勾选UART0,可以看到EMIO框框变亮

点击ok,此时的Zynq ps IP中,UART0已经添加,其中一个接收(UART0_RX),一个发送(UART0_TX)

接下来对UART0_RX、UART0_TX作约束
约束到Zedboard板的Pmod口上(本例中使用JA口进行扩展)约束文件如下:
set_propertyPACKAGE_PIN Y11 [get_ports UART0_RX]
set_propertyPACKAGE_PIN AA11 [get_ports UART0_TX]
set_propertyIOSTANDARD LVCMOS33 [get_ports UART0_TX]
set_propertyIOSTANDARD LVCMOS33 [get_ports UART0_RX]
生成比特流,进行SDK开发
此时便可从Pmod的JA1口和JA2口进行串口数据的接收与发送,实现从PL读取接收数据。
读取接收到的数据通过SDK编程实现在PS中处理数据,之后我们可以添加其它外设IP,用PS中处理后的数据控制外设IP。
参考
ZYNQ 的三种GPIO :MIO、EMIO、AXI_GPIO
ZYNQ笔记(3):GPIO的使用(MIO、EMIO)——led灯
Zynq 7000的3种IO的更多相关文章
- ZYNQ入门实例——三种GPIO应用、中断系统及软硬件交叉触发调试
一.前言 Xlinx的ZYNQ系列SOC集成了APU.各种专用外设资源和传统的FPGA逻辑,为ARM+FPGA的应用提供助力,降低功耗和硬件设计难度的同时极大提高两者间传输的带宽.之前在研究生课题中使 ...
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
- Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I 1.1. .3 进程的阻塞1 1.2. 网络 ...
- 聊聊 Linux 中的五种 IO 模型
本文转载自: http://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666538919&idx=1&sn=6013c451 ...
- Linux 下的五种 IO 模型
概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的 ...
- [转载] Linux五种IO模型
转载:http://blog.csdn.net/jay900323/article/details/18141217 Linux五种IO模型性能分析 目录(?)[-] 概念理解 Lin ...
- 网络通信 --> Linux 五种IO模型
Linux 五种IO模型 聊聊Linux 五种IO模型
- 从同步阻塞聊到Java三种IO方式
本文总结自 https://zhuanlan.zhihu.com/p/34408883, https://www.zhihu.com/question/19732473中愚抄的回答, http://b ...
- (四)五种IO模型
基本概念 我们之前编写的套接字程序都是阻塞式的,其实这也是默认的形式.现在我们需要明确一些概念: 用户空间和内核空间 首先要明确,用户启动的应用程序在系统中以一个进程的形式存在,而无论对于网络数据还是 ...
- 2018.5.4 Unix的五种IO模型
阻塞非阻塞和异步同步 同步和异步关注的是消息通信机制,关注两个对象之间的调用关系. 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态,关注单一程序. Unix的五种IO模型 以下基于Li ...
随机推荐
- C#的基于.net framework的Dll模块编程(四) - 编程手把手系列文章
这次继续这个系列的介绍: 一.命名空间的起名: 对于C#来说,一般命名空间的建议是:公司名(或个人名称).产品名.分类名,比如我这边是用的这个:Lzhdim.LPF.Helper,意思是个人名Lzhd ...
- thinkphp5 关于跨域的一些坑,附上解决办法(比较全面了)
项目背景:前端是uniapp开发的h5,后端是tp5,其他语言我觉得应该大同小异,主要是思路,本文就以这俩为例吧 1.首先在tp5的入口文件:public/index.php 在里面添加三行: // ...
- 解决:Failed to get D-Bus connection: Operation not permitted
docker中安装完httpd服务后,使用命令systemctl start httpd.service,发现报错,错误信息:Failed to get D-Bus connection: Opera ...
- 应急响应web1
应急响应的过程 目的:分析攻击时间.攻击操作.攻击结果.安全修复等并给出合理的解决方案. 保护阶段:直接断网,保护现场,看是否能够恢复数据: 分析阶段:对入侵过程进行分析,常见的方法为指纹库搜索.日志 ...
- 【漏洞分析】HPAY 攻击事件分析
背景 造成本次攻击的原因是关键函数的鉴权不当,使得任意用户可以设置关键的变量值,从而导致攻击的发生. 被攻击合约:https://www.bscscan.com/address/0xe9bc03ef0 ...
- NODEJS通过发送json数据查询目标服务,实现服务器状态监控,发现异常发送到微信群提醒
root@aea87fa6e6a2:/home/node# cat login2.js const request = require('request-promise'); const moment ...
- 解决“在windows里的记事本里编辑的汉字文本文件,上传到linux服务器上出现乱码“问题
目录 一.前期准备 二.编码转换 一.前期准备 1.首先在windows环境下打开记事本,然后创建一个包含汉字和英文的文本文件,输入内容"测试在windows里的记事本里编辑的文本文 件,上 ...
- Linux系统中如何查看磁盘情况
Linux不像windows系统那样方便的图形界面,特别是作为服务器使用的时候,只有命令行可以使用. 我有个云服务器平时用来做一些数据分享用的,最近想看看磁盘和其中文件的占用情况,于是搜索并学习了一些 ...
- 分享一个Byte KB MB GB 单位转换方法 从《C#本质论第三版》
static public string FormatBytes(long bytes) { string[] magnitudes = new string[] { "GB", ...
- 记录一次 对应用程序日志排查,老是刷出有本地ip登录Sqlserver数据库失败的日志
在我电脑-计算机管理-事件查看器-windows日志-应用程序里 1秒中就刷很多条 用户sa登录某个数据库失败,客户端ip:192....; 我查看ip发现是本机的ip地址.也就是说有本地的应用程序在 ...