ZYNQ 的三种GPIO :MIO EMIO AXI_GPIO
学了zynq一段时间,一上来的时候就被zynq的GPIO唬住了,实在没搞清楚zynq的GPIO怎么回事,一会这样,一会那样,最后才慢慢发现zynq至少有3种GPIO可以调用。难怪我觉得每篇介绍GPIO的博客说的有一些不一样呢。
我们先看有哪三种GPIO: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"。
最后、在设计好bd文件后、系统会自动在路径:..\standalone_bsp_0\ps7_cortexa9_0\include生成 xparameters.h文件.我们可以在
- #define XPAR_PS7_GPIO_0_DEVICE_ID 0
- #define XPAR_PS7_GPIO_0_BASEADDR 0xE000A000
- #define XPAR_PS7_GPIO_0_HIGHADDR 0xE000AFFF
再举例添加了两个AXI_GPIO,例化为BTNS_4BIT和SW_4BIT
- /* Definitions for driver GPIO */
- #define XPAR_XGPIO_NUM_INSTANCES 2
- /* Definitions for peripheral BTNS_4BIT */
- #define XPAR_BTNS_4BIT_BASEADDR 0x41210000
- #define XPAR_BTNS_4BIT_HIGHADDR 0x4121FFFF
- #define XPAR_BTNS_4BIT_DEVICE_ID 0
- #define XPAR_BTNS_4BIT_INTERRUPT_PRESENT 0
- #define XPAR_BTNS_4BIT_IS_DUAL 0
- /* Definitions for peripheral SW_4BIT */
- #define XPAR_SW_4BIT_BASEADDR 0x41200000
- #define XPAR_SW_4BIT_HIGHADDR 0x4120FFFF
- #define XPAR_SW_4BIT_DEVICE_ID 1
- #define XPAR_SW_4BIT_INTERRUPT_PRESENT 0
- #define XPAR_SW_4BIT_IS_DUAL 0
再来看一下,AXI_GPIO相当于GPIO的IP核,我们调用时是占用相应AXI总线地址空间,如下图,占用地址为0x41200000和0x41210000
ZYNQ 的三种GPIO :MIO EMIO AXI_GPIO相关推荐
- zynq学习03 zynq中三种实现GPIO的方式
http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...
- Zynq(2):MIO,EMIO点灯之路
由于个人原因,最近一直在对基础知识的复习,所以ZYNQ的后续学习记录,一直没有更新. FLAG:新年新气象,争取2022年春节之前将所有关于ZYNQ中ARM裸机部分内容更新完毕,主要是ARM外设. Z ...
- Xilinx ZYNQ 7000+Vivado2015.2系列(五)之ZYNQ的三种启动方式-JTAG、SD card、Flash
前言: 前面我们都是使用JTAG方式下载比特流文件,然后下载elf文件,最后点击Run as或者Debug as来运行程序.JTAG方式是通过tcl脚本来初始化PS,然后用JTAG收发信息,优点是可以 ...
- 学会Zynq(5)GPIO中EMIO的使用方法
之前的Hello World和MIO使用都算是纯PS部分,也就是把Zynq单纯地当作ARM使用.很多人都是因为FPGA+ARM架构才使用的Zynq,有两个关键问题容易引起初学者的兴趣:(1).如何用P ...
- 深度学习的三种硬件方案:ASIC,FPGA,GPU;你更看好?
原文链接:http://www.sohu.com/a/123574005_465947 深度学习的三种硬件方案:ASIC,FPGA,GPU:你更看好? 2017-01-06 10:59 硬件十万个为什 ...
- STM32芯片烧录的三种方式介绍,串口、STM32 ST-LINK Utility以及STM32CubeProgrammer
STM32芯片烧录的三种方式介绍,串口.STM32 ST-LINK Utility以及STM32CubeProgrammer 1 概述 1.1资源概述 1.2 STM32串口烧录方式 2.KEIL软件 ...
- EFR32BG22 的三种电源设计
EFR32xG22有多个电源轨:DC-DC稳压器输入(VREGVDD).IO电源(IOVDD).模拟(AVDD).RF模拟电源(RFVDD).RF功率放大器电源(PAVDD).数字LDO和闪存(DVD ...
- GD32三种低功耗例程
GD32F303ZET6三种低功耗例程 睡眠模式例程:MCU的UART3接收到数据 ,进入UART3接收中断 即唤醒睡眠模式. int main(void) { /******** 本实验测试单片机 ...
- 直接进入TIVA系列MCU存在ROM中的bootloader的三种方法(转载)
网上查到的直接进入TIVA系列MCU存在ROM中的bootloader的三种方法,记录一下. 使用 TM4C ROM bootloader 的三種方式: Flash Empty 當 MCU Flash ...
最新文章
- 耦合式是什么意思_什么是微服务?一篇文章让你彻底搞明白
- docker(三) 制作自己的镜像
- img 加载 svg占位符_如何使用SVG作为占位符以及其他图像加载技术
- 搜狗AI,正在抢滩智能手机
- Presenter层如何高度的复用
- Rstudio如何让显示界面的字体更大一些
- 用PHP写APP后台
- TeXLive2021+TeXStudio安装及配置,亲测有效!
- Flutter 鼠标右键
- 仿ios相机apk_仿苹果相机APP下载
- Xamarin iOS 切换开发者账号之后的签名标识和预配配置文件更新方法
- 为什么建议将成员属性设置为私有
- Django - Celery使用及介绍
- 计算机校准颜色,直观:如何在Win7计算机中校准显示器|计算机显示器颜色校准...
- 三星android智能手图片机,掌中投影智能机 三星GALAXY Beam2图赏
- 微型计算机的硬件结构采用,微型计算机硬件结构内部结构
- pyqt-工具栏图标大小设置
- 局域网共享工具_局域网共享精灵,一款助力于局域网环境下文件共享和打印机共享的系统工具软件...
- LTE入门-孙宇彤-专题视频课程
- 第二节:配置django环境!
热门文章
- 为什么整数集合使用Z来表示?
- 一种带有柔顺控制算法四自由度自动上样机械臂
- 第十六届全国大学生智能车竞赛创意组别-航天智慧物流
- 第十五届全国大学生智能车竞赛安徽赛区比赛报名信息
- IDEA背景颜色设置护眼色
- java 字符串写入word,JAVA 将字符串hollow 替换成word肿么实现?
- swift 组件化_京东商城订单模块基于 Swift 的改造方案与实践
- 三星android功能怎么用,三星GALAXY S II升级Android 4.0新功能介绍及使用技巧
- php yii没有数据库吗,php – YII活动记录未插入数据库但未给出错误
- 百融金服榕树_百融金服榕树成为拉动新金融行业增长的主力军