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.mfbz.cn/a/627351.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux系统介绍和安装教程(含安装链接放在最下面了)

一、linux系统简介 在Linux和C语言的发展历程中,有几位关键人物为它们的诞生和推广做出了重要贡献。 首先,肯汤姆森(Ken Thompson)是一位在AT&T公司工作的员工,他不仅发明了B语言,还创造了Unix系统。…

【已解决】力扣打不开

表现: 1.访问国内其他网站都没有问题 2.访问github也能成功 3.wifi没有问题 4.连接同网络的其他主机能打开 唯独力扣打不开,可能是DNS解析错误 》自己网络配置问题 解决办法【亲测可行】 找可用的hosts 打开站长之家,进行DNS查询&#xff…

高中数学:平面向量-加减运算

一、向量的加法运算 三角形法则(推荐) 两个或多个向量收尾相连的加法运算,用三角形法则 简便算法 首尾相连的多个向量,去掉中间点,就是最终的和。 也可以用三角形法则证明 向量加法交换律 向量加法结合律 平行四…

HTML静态网页成品作业(HTML+CSS)——自动化专业介绍设计制作(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

未授权访问:ZooKeeper 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好的文章: 这里附上大…

在k8s中部署单机版Elasticsearch,并进行数据持久化

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Elasticsearch简介 2、k8s简介 二、存储准备 …

IP代理如何帮助SEO进行优化?

IP代理在SEO优化中扮演着重要的角色,它通过多种方式帮助提升网站的搜索排名和可见性。以下是IP代理如何帮助SEO进行优化的详细阐述: 第一点,数据采集与分析:在SEO过程中,大量的数据是必不可少的。通过使用IP代理&…

随笔:贝特弹琴

半年前,我买了一架朗朗代言的智能电子琴。所谓智能是指,它配套的手机软件知道你在按哪个键,它还能让任意按键发光。用专业术语说,它的键盘具有输入和输出功能,和软件组合起来是一个完整的计算机系统。 随着软件练习曲…

Kubernetes学习-深入Pod篇(二) 探针技术详解与应用

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Kubernetes渐进式学习-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 探针是什么 3. 探针的分类 3.1. StartupProbe(启动…

Ubuntu安装k8s集群

文章目录 Ubuntu安装k8s3台主机前置操作:3台主机k8s前置安装命令:k8s安装命令: 节点加入 Ubuntu安装k8s 官方文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 默认3台机子 注…

Java | Leetcode Java题解之第90题子集II

题目&#xff1a; 题解&#xff1a; class Solution {List<Integer> t new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arra…

Postgresql中JIT函数能否inline的依据function_inlinable

相关 《Postgresql源码&#xff08;128&#xff09;深入分析JIT中的函数内联llvm_inline》 《LLVM的ThinLTO编译优化技术在Postgresql中的应用》 前置阅读&#xff1a;《Postgresql源码&#xff08;128&#xff09;深入分析JIT中的函数内联llvm_inline》 在JIT inline函数的过…

【C#】学习获取程序执行路径,Gemini 帮助分析

一、前言&#xff1a; 在Delphi中&#xff0c;如果想要获取当前执行程序的目录&#xff0c;程序代码如下&#xff1a; ExtractFilePath(ParamStr(0)); 今天在分析一个别人做的C#程序时看到了一段C#代码&#xff0c;意思是获取执行程序所在的文件目录&#xff1a; public stat…

Spring Boot集成dubbo快速入门Demo

1.什么是dubbo&#xff1f; Apache Dubbo 是一款微服务开发框架&#xff0c;它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着&#xff0c;使用 Dubbo 开发的微服务&#xff0c;将具备相互之间的远程发现与通信能力&#xff0c; 同时利用 Dubbo 提供的丰富服务治理能力…

(教程)gpt-4o如何使用,怎么体验?gpt-4o和gpt-4-turbo的区别

今天OpenAI发布了gpt-4o&#xff0c;我体验之后&#xff0c;gpt-4o简直逆天了。中文能力也挺别强。速度比现在的gpt4还要快。 早在 5 月 11 日&#xff0c;Sam 就在推文中表示&#xff1a;OpenAI 并没有推出 GPT-5&#xff0c;或搜索引擎&#xff0c;但团队一直在努力研发一些…

halo博客--解决恶意刷评论的问题

原文网址&#xff1a;halo博客--解决恶意刷评论的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍halo博客如何通过设置评论次数来解决恶意刷评论的问题。 评论功能要设置频率的限制&#xff0c;否则可能被人一直刷评论&#xff0c;然后数据库存的垃圾评论越来越多&#xff0…

51 单片机[2-2]:LED闪烁

摘要&#xff1a; 本文使用STC89C52RC单片机实现单个LED闪烁 新建一个项目&#xff0c;具体步骤见[2-1] 分析&#xff1a; 要使 LED 闪烁&#xff08;以D1为例&#xff09;&#xff0c;就要先让 P2 0xfe; 再让 P2 0xff; 先在keil5中把程序写成这样&#xff1a; #include &…

答辩PPT框架如何搭建?文心一言AI辅助构建

很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路&#xff0c;一窍不通。但这并不是你们的错&#xff0c;对于平时没接触过相关方面&#xff0c;第一次搞答辩PPT的人来说&#xff0c;这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…

#自学习# 记一次py脚本打开浏览器页面

在项目总结中&#xff0c;遇到系统后台利用浏览器拉起一个已知路径页面的需求&#xff0c;趁着机会整理下。实现起来比较简单&#xff0c;浏览器默认谷歌。 一、技术原理 Selenium&#xff1a;Selenium 是一个用于自动化 Web 浏览器的工具&#xff0c;可模拟用户在浏览器中的各…

pnpm:无法加载文件 C:\Users\PC\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。

使用pnpm命令启动vue时报了个错&#xff1a; 解决起来也简单&#xff0c;右击开始菜单&#xff0c;用管理员身份打开终端。win11的如下图&#xff1a; win10我记得应该是PowerShell&#xff08;管理员&#xff09;&#xff0c;这样的。 打开之后执行命令&#xff1a; set-…