AXI GPIO IP核配置详解

AXI GPIO(AXI General-Purpose Input/Output)设计提供了一个通用的输入/输出接口,该接口连接到一个AXI4-Lite接口。AXI GPIO可以被配置为单通道或双通道设备,每个通道的位宽可以独立配置。

端口(即GPIO引脚)可以通过启用或禁用三态缓冲器来动态配置为输入或输出。这些通道还可以配置为当它们的任何一个输入发生转变时生成中断。

1  功能

AXI GPIO IP核的顶层框图(如下图所示)通常包含几个关键模块,这些模块协同工作以实现其通用输入/输出功能。

以下是根据通常的AXI GPIO设计对顶层框图的简要描述:

AXI4-Lite接口

AXI4-Lite是AXI协议的一个子集,特别适用于需要简单、轻量级通信的场景。在这个设计中,AXI4-Lite接口模块作为一个从设备(slave)实现,提供32位的数据通道,允许主设备(如处理器或控制器)通过AXI4-Lite协议访问GPIO通道寄存器。这些寄存器用于控制GPIO通道的配置、输入/输出状态等。

中断控制

负责从GPIO通道获取中断状态,并在满足条件时向主机生成中断信号。当中断使能选项在Vivado集成设计环境(IDE)中设置时,中断控制模块将被启用。这样,当GPIO通道的输入发生变化时,中断控制模块可以检测到这种变化,并生成一个中断信号通知主机。主机可以响应这个中断信号,执行相应的中断处理程序。

GPIO 核

GPIO核包含用于读写AXI GPIO通道寄存器的寄存器和多路复用器。这些寄存器用于存储GPIO通道的配置信息、输入/输出状态等。多路复用器用于在读取或写入操作时选择正确的寄存器。此外,GPIO核还包括必要的逻辑来识别当通道输入发生变化时的中断事件。

上图中的三态缓冲器(3-state buffers)并不是GPIO核的一部分。这些三态缓冲器是在使用Vivado设计套件生成输出产品时自动添加到顶层设计包装文件中的。它们用于控制GPIO引脚的输入/输出状态,并提供与外部电路的接口。

2 配置

(1)打开一个工程或生成一个新的工程;

(2)如下图所示,找到AXI GPIO IP核;

(3) 双击IP,或从工具栏或右键菜单中选择“Customize IP”命令,打开该IP核的配置页。

GPIO

All Inputs

  • 功能:将所有GPIO通道位设置为输入模式。当选中此选项时,所有相关的GPIO引脚都将被配置为接收外部信号,而不是发送信号。
  • 默认状态:此选项是未选中的(unchecked),意味着GPIO通道位不会默认被配置为输入模式。

All Outputs

  • 功能:将所有GPIO通道位设置为输出模式。当选中此选项时,所有相关的GPIO引脚都将被配置为发送信号到外部设备,而不是接收信号。
  • 默认状态:此选项是未选中的(unchecked),意味着GPIO通道位不会默认被配置为输出模式。

GPIO Width

  • 功能:定义了GPIO通道的位宽,决定了GPIO IP核可以管理的GPIO引脚数量。例如,如果GPIO Width设置为8,那么GPIO IP核就可以控制8个GPIO引脚。
  • 默认状态:其值可以从1到32,默认值是32。

Default Output Value

  • 功能:设置此通道所有启用位的默认值。当GPIO引脚被配置为输出模式时,这个值决定了它们在上电或复位后的初始状态。例如,如果Default Output Value设置为0xFF(8位模式),那么所有GPIO引脚在上电后都将输出高电平。
  • 默认状态:此参数设置为0x0(即所有位都是0)。

Default Tri State Value

  • 功能:配置了GPIO通道每个位的输入或输出模式。这里的“Tri State”可能指的是GPIO引脚的初始状态或默认模式,其中“0”代表输出模式,“1”代表输入模式。但具体实现可能因不同的IP核而异。
  • 默认状态:这个字段的值为0xFFFFFFFF,将所有GPIO位配置为输入模式。

Enable Dual Channel

  • 功能:启用第二个GPIO通道(GPIO2),当此参数被启用时,GPIO2选项被激活,并配置Channel-2 (GPIO2)寄存器。允许使用同一个AXI GPIO IP核来控制两个独立的GPIO通道。这在需要管理大量GPIO引脚时特别有用。
  • 默认状态:此参数是未选中的,将AXI GPIO配置为单通道模式。

GPIO2

仅在“Enable Dual Channel”被选中时激活。此参数组中的所有字段都与GPIO选项组相似。

当启用双通道模式时,可以为第二个GPIO通道(GPIO2)配置与第一个通道相同的参数,如GPIO Width、Default Output Value等。

Enable Interrupt

启用了GPIO模块中的中断控制逻辑和中断寄存器。默认情况下,此选项是未选中的,即中断未被启用。

当希望GPIO引脚能够产生中断信号以通知处理器或控制器外部事件时,需要启用此选项。一旦启用,可以配置GPIO引脚在特定条件下产生中断,例如输入电平变化或超时等。

3 编程序列

当启用中断时的输入端口

(1)配置端口为输入

         将GPIOx_TRI寄存器中对应的位写入1,以将端口配置为输入模式。

(2)启用通道中断

        通过设置IP中断使能寄存器中对应的位来启用该通道的中断,同时,也需要通过设置全局中断寄存器(通常是某个处理器或微控制器的寄存器)的第31位为1来启用全局中断。

(3)接收并处理中断

       ① 当接收到中断时,读取GPIOx_DATA寄存器中对应的位,以获取输入值。

      ②清除IP中断状态寄存器中对应的中断状态位,通过将对应位写入1来实现。这通常是中断服务程序(ISR)的一部分。

当未启用中断时的输入端口

(1)配置端口为输入

       将GPIOx_TRI寄存器中对应的位写入1,以将端口配置为输入模式。

(2)读取输入值

       直接读取GPIOx_DATA寄存器中对应的位,以获取输入值。

输出端口

(1)配置端口为输出

       将GPIOx_TRI寄存器中对应的位写入0,以将端口配置为输出模式。

(2)写入输出值

       将要输出的值写入GPIOx_DATA寄存器中对应的位。这会将该值输出到对应的GPIO引脚上。

注意事项

  • 确保在尝试访问GPIOx_TRI或GPIOx_DATA寄存器之前,AXI GPIO IP核已经正确配置并初始化。
  • 当配置GPIO端口时,请确保不要同时将其配置为输入和输出,这可能会导致未定义的行为。
  • 当启用中断时,请确保系统(例如处理器或微控制器)可以正确地处理这些中断,并有一个有效的中断服务程序来清除中断状态位并处理中断事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/702039.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue实战技巧 —— 企业开发实战中的常见疑难问题

Vue企业开发实战中的常见疑难问题 1. 解决Vue动态路由参数变化,页面数据不更新2. vue组件里定时器销毁问题3. vue实现按需加载组件的两种方式4. 组件之间,父子组件之间的通信方案5. Vue中获取当前父元素,子元素,兄弟元素6. 开发环…

Docker 使用 CentOS 镜像

使用 docker run 直接运行 CentOS 7 镜像,并登录 bash。 C:\Users\yhu>docker run -it centos:centos7 bash Unable to find image centos:centos7 locally centos7: Pulling from library/centos 2d473b07cdd5: Pull complete Digest: sha256:be65f488b7764ad36…

风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码) 完整代码 clc; clear close allX = xlsread(风电场预测.xlsx)

web学习记录--(5.14)

1.Sublime安装与汉化 直接点击windows即可下载,安装即可 Thank You - Sublime Text 汉化 Install Package ChineseLocalzation 2.PHPstorm下载以及激活,汉化 直接下载,然后找激活码激活即可 汉化 plugins(插件)/chinese&…

Kotlin协程实战指南:解锁Android开发高效能新时代

前言 在移动互联网的狂飙突进之中,Android开发领域如同站在风口的勇士,不断接受技术迭代与创新的双重洗礼。在这个快速变化的市场里,用户对应用性能和体验的期待水涨船高,开发者们面临的挑战也越来越大:如何在功能的丰…

【Redis7】10大数据类型之Bitfield类型

文章目录 1. Bitfield简介2. BITFIELD key [GET type offset]3. BITFIELD key [SET type offset value]4. BITFIELD key [INCRBY type offset increment] 1. Bitfield简介 Bitfield(位域)命令可以将一个 Redis 字符串看作是一个由二进制位组成的数组, 并对这个数组…

React 状态管理库深度对比:在做技术选型的时候如何选择合适的状态库,nolan出品

掘金链接:https://juejin.cn/post/7368288987642232872 1,简介 在状态共享这方面,不像 Vuex,React 的官方并没有强力推荐某种封装方案,所以 React 的状态管理工具五花八门,百花齐放, react-redux、dva、C…

全像宇宙投影第三部时间与空间(全文)下载

当这个人向空中凝视时,他所在的房间渐渐变得透明而朦胧,空中渐渐浮现一个久远前景像。突然他觉得自己在皇宫中庭内,他面前站著一位年轻女士非常美丽,有著橄榄色的皮肤。他可以见到她的颈项、手腕、脚踝上都挂著金饰,还…

基于HTTP GET方式获取网络时间的实现

上一节,我们介绍了基于NTP服务器获取网络时间的例子,但在有些情况下,比如我最近在使用RNDIS协议通过4G模块上网,这个协议不支持UDP协议,所以就用不了NTP服务器。或者有时候我们需要有更多的网络时间获取方式&#xff0…

Dart 3.4 发布:Wasm Native Macros(宏)

Google I/O 的结束,除了 Flutter 3.22 的发布 ,Dart 3.4 也迎来了它是「史诗级」的更新,之所以这么说,就是因为 Wasm Native 的落地和 Macros 的实验性展示。 在此之前,其实我也提前整理过一些对应的内容,…

平安养老险深圳分公司携手福海街道开展5.12防灾减灾活动

在构建和谐社会、倡导人文关怀的当下,平安养老险深圳分公司以高度的社会责任感和深厚的人文情怀,持续关注老年人的健康与安全。在今年“5.12防灾减灾日”来临之际,公司积极响应倡议,于5月10日携手福海街道举办了一场别开生面的消防…

校园电话机对于校园信息化管理非常重要

任何一部校园电话机都有信息办理渠道,并且发挥着重要的效果,能够满意整个机器的更快速运作。然后使学生能够取得一个更好的运用条件,学生在运用产品的过程中,要经过正确的操作环节才能够发挥产品的优胜功能,然后到达一…