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端口时,请确保不要同时将其配置为输入和输出,这可能会导致未定义的行为。
  • 当启用中断时,请确保系统(例如处理器或微控制器)可以正确地处理这些中断,并有一个有效的中断服务程序来清除中断状态位并处理中断事件。
  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值