.0AXI GPIO

第一部分
PS 和 PL之间的通讯有一个接口称为AXI。AXI总线具体的内容这边不去深究,可以理解为一种特殊协议的通讯方式。
AXI GPIO是什么意思?
PL是FPGA它可以做成任何你想要的东西,做一个GPIO外设当然是可以的。

如上图所示,假设我们用FPGA 设计了一个GPIO外设,它可以通过引脚进行电平的输入和输出。
这个时候PS端的APU需要使用GPIO,通常就是GPIO的读写操作。这个事件这个需要数据通信,上图所示有个connect的模块横跨PS,PL,用于数据的传输,没错AXI就是这个connect。这里我们把AXI单纯的看做一个有特殊协议的通信线路,暂时不去关系实现方式。

第二部分
什么是GPIO,这个问题好像非常简单,但是好像也不简单。为了寻求这个答案,可以看一下MCU的GPIO结构
打开STM32F407(Cortex M4)手册的GPIO章节

上图所示,最右边是最后芯片引出的物理引脚。最左边是GPIO模块对外的接口。提供读写操作。
那么我们如果要做一个GPIO外设就需要物理引脚和读写接口。
那么物理引脚可以想到FPGA开发中的引脚分配。这里会问不是有EMIO了吗为啥还要AXI GPIO
1.EMIO本质上是硬核
2.AXI GPIO是真正的软核FPGA开发

那么读写接口就是第一部分所说的AXI接口。
那么GPIO具体什么实现呢,xilinx 官方把GPIO如何实现已经做好了,封装成AXI GPIO IP。我们直接调用即可。
Create Block design->添加IP ->AXI GPIO

在AXI IP官方手册中

AXI GPIO de 构成如上图所示,
1.AXI Interface 用于AXI中线的通讯
2.interrupt Module 检测GPIO模块的Read信号,判断是否发生中断,送入专用的信号线IP2INTC.
3.GPIO Core 就是GPIO 外设了

GPIO 具体的结构

1.GPIO 三态门的控制TRI
2.Write
3.read
还可以通过多路选择器构建两个GPIO外设。

第三部分
知道AXI GPIO是什么东西后,那么要怎么去配置


可以配置默认的输出电平和门控状态(输入还是输出)。
添加zynq PS 后,点击自动连接,vivado自己生成了axi interconnect和PS reset


PS的FCLK_CLK0 ,给AXI Interconnect 和AXI GPIO提供了时钟。peripheral aReastn提供了复位信号。
PS的M_AXI_GP0 和AXI Interconnect连接,PS也提供AXI时钟。

FCLK_CLK0 是PS端提供给PL端的时钟信号,供给了所有AXI 相关的所有IP。
FCLK_RESET0_N 这个信号给到processor System Reast IP ,然后通过peripheral aReastn 对AXI 互联和AXI GPIO提供复位信号。

AXI Interconnect 是一个AXI总线的连接矩阵,有点像路由器的意思


这样通过xilinx AXI GPIO IP核构建了一个 AXI 接口的GPIO模块。

clock Configuration 设置时钟,提供给AXI和AXI GPIO
打开AXI GPIO的中断,它的中断信号属于PL中断信号,相关设置在GIC中。
如下图所示,双击GIC



打开PL -PS的中断信号,其中断号是84~91。
最后进行引脚分配
.
配置AXI GPIO的端口,生成比特流。

第四部分
AXI GPIO编程,导入官方例程。见下章

xilinx ZYNQ 7000 AXI GPIO相关推荐

  1. Xilinx Zynq 7000 安装Linux 系统

    Xilinx Zynq 7000 安装Linux 系统 介绍 1 准备工作 2 工具的安装 2.1 支持库的安装 2.2 PetaLinux的安装 3 搭建硬件系统 3.1 建立工程 3.2 添加IP ...

  2. Xilinx ZYNQ 7000学习笔记三(qspi flash读写操作)

    参考文献:Zynq-7000 SoC Technical Reference Manual (UG585)-ch12 Quad-SPI Flash Controller 一.nor Flash介绍 z ...

  3. xilinx ZYNQ 7000 XADC 片上模拟转数字模块

    上图所示,XADC 属于 PL部分的资源 XADC是一种硬逻辑实现,位于PL功率域.PS- xadc接口是PS的一部分,可以被PS APU访问,而不需要对PL进行编程.PL必须上电才能配置PS-XAD ...

  4. Xilinx zynq 7010/7020 GPIO - MIO

    有条件的可以买一块xilinx zc702官方开发板,能够从中受益匪浅. GPIO外围设备提供软件可控的54个IO的MIO模块.也可以提供PL端64个IO的输入和128个输出的EMIO. GPIO作为 ...

  5. Xilinx ZYNQ 7000入门

    ZYNQ是Xilinx推出的新一代全可编程片上系统,将处理器的软件可编程性与FPGA的硬件可编程性完美整合. ZYNQ7020:xc7z020clg400-2        ZYNQ7010:xc7z ...

  6. Xilinx ZYNQ 7000+Vivado2015.2系列(五)之ZYNQ的三种启动方式-JTAG、SD card、Flash

    前言: 前面我们都是使用JTAG方式下载比特流文件,然后下载elf文件,最后点击Run as或者Debug as来运行程序.JTAG方式是通过tcl脚本来初始化PS,然后用JTAG收发信息,优点是可以 ...

  7. Xilinx zynq 7010/7020 GPIO - EMIO,MIO

    有条件的可以买一块xilinx zc702官方开发板,能够从中受益匪浅. EMIO 是Exrended IO 如上图所示,当PS端的通过MIO分配物理引脚不够用的时候,EMIO也是属于PS端的,但是它 ...

  8. Xilinx ZYNQ 7000学习笔记一(复位和启动)

    一.复位系统 参考文献:Zynq-7000 SoC Technical Reference Manual (UG585)-ch26 Reset System zynq7000复位信号源包括硬件复位.看 ...

  9. Xilinx ZYNQ 7000 HDMI

    High-Definition Multimedia Interface (HDMI) 参考xilinx application note XAPP460 HDMI来自High-Definition ...

最新文章

  1. 你正在使用GPU进行CNN类模型训练,突然发生了内存溢出的错误,你可以通过哪些方式来进行解决?
  2. libuv 高性能 事件驱动 跨平台 i/o库 简介
  3. 图的基本操作实现(数据结构实验)
  4. Eureka修改实例名称
  5. Flink从入门到放弃之源码解析系列-第1章 Flink组件和逻辑计划
  6. C++中placement new操作符(经典)
  7. python语句中对象未被定义_python 形参没有被定义???感觉遇到鬼了。。。
  8. java invocationtarget,启动工程报java.lang.reflect.InvocationTargetException的解决详解
  9. 使用值类型LazyString分析字符串
  10. 不愿做「奴隶」的程序员们组建了一个王国
  11. 计算机导航医学应用,【2016年】计算机导航在全膝关节置换中的应用技术及进展【临床医学论文】.doc...
  12. Quartus II 13.1 安装步骤详解
  13. android开发学习计划
  14. ZigBee的应用场景
  15. 通用发票在线OCR识别,报销场景适用,支持近20种票据
  16. python模拟火车订票系统_Python-模拟火车票12306网站登陆
  17. iText操作word
  18. ZZULIOJ:1008美元和人民币
  19. Android Gradle进阶配置指南 1
  20. A Linux Environment Zero Overhead

热门文章

  1. 什么是SVN,Docker环境如何安装Svn服务(http协议)
  2. 独立同分布 independently identical distribution (iid)
  3. 合并两个List并去掉重复项
  4. php红包互换免公众号,红包互换H5免公众号对接支付最新完美修复版源码
  5. 如果有天你看到我疯了,其实就是你疯了
  6. JAVA中的char和boolean到底占几个字节?
  7. 华为怎么清除Android,华为手机内存不足怎么清理?华为手机内存不足解决方法...
  8. 去除PDF的水印和广告的方法
  9. java画table_画表格 - javawebsoa - 博客园
  10. Excel如何批量从中英文混合文本中提取出汉字