zynq文档阅读pg144-axi-gpio之AXI GPIO IP核

  • 在pg144-axi-gpio(LogiCORE IP Product Guide)中可以看见AXI GPIO提供通用输入输出接口到AXI接口,32位软核,设计与AXI4-Lite接口进行连接。IOP中GPIO是硬核,芯片中已经实现的硬件电路,AXI GPIO是在PL端用逻辑实现的软核。在ug585的1.4.2 PS-PL interfaces中介绍了两种接口,功能接口和配置接口。AXI互联属于功能接口,功能接口又分AXI_ACP,AXI_HP和AXI_GP。在框图中均可以看见,实现了PL和PS间数据传输。
    在这里插入图片描述
  • 特性
    • 支持AXI4-Lite接口
    • 支持配置成单通道或双通道(配置界面两个通道选择)
    • 配置通道位宽从1位到32位
    • 针对GPIO每一位支持动态编程为输入或输出
    • 支持每个通道的独立配置
    • 复位信号
    • 可选中断请求信号的生成(在Vivado下勾选Enable Interrupt)

在这里插入图片描述


  • 功能描述
    • AXI GPIO提供了一个通用的输入输出接口到AXI4-Lite接口。可以配置成单通道或双通道。每个通道可以独立进行配置。
    • GPIO端口可以动态配置输入或输出通过使能或者关闭使能三态的缓冲器。每个通道可以配置成当一个转化(电平状态改变从0到1或从1到0)在输入引脚发生时产生中断信号。

The AXI GPIO design provides a general purpose input/output interface to an AXI4-Lite interface. The AXI GPIO can be configured as either a single or a dual-channel device. The width of each channel is independently configurable.
The ports are configured dynamically for input or output by enabling or disabling the 3-state buffer. The channels can be configured to generate an interrupt when a transition on any of their inputs occurs.

  • AXI GPIO内核的顶层框图如图所示。(The top-level block diagram of AXI GPIO core is shown in Figure 1-1.)
    • S_AXI中S代表slave是从端口,处理器作为Master可以控制AXI GPIO这个从器件。AXI4-Lite作为轻量级的接口可以实现简单寄存器的配置和少量的数据传输。READ_REG是读寄存器,Interrupt Registers是中断寄存器,AXI4-Lite可以实现对这两个寄存器的配置。三态缓冲器不包含在AXI GPIO里,是工具在顶层文件里自动添加的。GPIO分为两个独立的通道GPIO_T和GPIO_T。通过控制GPIO_T可以动态配置输入和输出,GPIO_T是三态的使能信号。GPIO_T=1配置为输入(in),GPIO_T=0配置为输出(out)。GPIO_WIDTH是用户指定的位宽,可以配置在1位到32位之间。
    • 输入数据一方面进入READ_REG,一方面进入中断检测模块Interrupt Detection。只要输入端口数据发生改变就可以生成中断,中断检测实现该功能并通过ip2intc_irpt输出一个中断。

在这里插入图片描述

  • AXI4-Lite接口
    • AXI4-Lite接口模块实现32位AXI4-Lite从接口,用于访问GPIO通道寄存器。(AXI4-Lite是一种简单协议用来读写模块内的寄存器)
  • 中断控制
    • 从GPIO通道获取中断状态,并向主机生成中断。通过选择使能中断选项时,将启用该选项。
  • GPIO核心
    • GPIO内核包含寄存器(输入输出和中断)和多路复用器(选择两个GPIO的通道),用于读取和写入AXI GPIO通道寄存器。当通道输入数据改变时可以检测中断事件。
    • 图中3态缓冲区实际上不是GPIO核心的一部分。在Vivado中生成输出结果时,3状态缓冲区会自动添加到顶层模块中。

在这里插入图片描述

  • 端口描述(Port Descriptions)
    在这里插入图片描述
  • 寄存器空间(Register Space)
    • GPIO_DATA是数据寄存器(Data Register),读数据和写数据都是通过这个寄存器。
    • GPIO_TRI是三态控制寄存器,控制GPIO引脚作为输入还是输出
    • GIER是全局使能中断寄存器(Global Interrupt Enable Register)的缩写。(总开关控制全局使能信号,总开关打开以后内部两个通道的中断信号才有肯可能使能,具体通道的使能通过子开关IP IER实现)
    • IP IER,打开某一个通道的中断功能
    • IP ISR,通道状态寄存器

在这里插入图片描述

  • GPIO_DATA可以读和写端口即读用作输入,写用作输出
  • GPIO_TRI被置为1时,用作输入;被清除为0时用作输出
    • set 1 in
    • clear 0 out
  • GIER打开全局中断
  • IP IER打开各通道独立的中断
  • IP ISR状态寄存器可以读取当前中断状态
    在这里插入图片描述

  • 编程指导(ch3 Programming Sequence)
    • 作为输入打开中断(大概意思没有逐字翻译)
    1. 把三态控制寄存器GPIO_TRI写1配置成输入
    2. 打开通道的中断,同时打开全局中断
    3. 当接受到中断时(说明输入引脚电平发生变化),从GPIO_DATA读取输入数据,对应位写1清除中断状态寄存器IP ISR(清除中断状态方便检测下次中断的产生)
    • 不使用中断作为输入
    1. 配置成输入
    2. 从GPIO_DATA读数据
    • 输出
    1. 把端口配置成输出
    2. 往端口写数据

在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值