[FPGA] 玩转Zynq连载3——AXI总线协议介绍1

[复制链接]
127|5
 楼主 | 2019-11-29 19:07 | 显示全部楼层 |阅读模式
00.jpg
1 AXI协议简介
         AMBA AXI(Advanced eXtensibleInterface)协议是一种面向高性能、高带宽系统设计的总线协议,能够满足各种高速系统的总线互联。
         AXI协议的主要特点有:
         ●独立的地址、控制和数据接口
         ●支持使用字节选通的不对齐数据的传输
         ● 基于特定地址进行的突发传输
         ●通过独立的读和写通道实现低成本直接内存访问(DMA)
         ●支持无序数据传输
         ●提供多级寄存器锁存的支持,实现更好的时序收敛
1.1 AXI版本介绍
         AXI协议是Xilinx从6系列的FPGA开始引入的一个接口协议(AXI3)。在ZYNQ中继续使用,版本是AXI4,ZYNQ内部设备都有AXI接口。AXI4-Lite则是AXI4的一个简化版本,实现AXI4运行起来的最少接口信号,对于传输控制要求不高的应用,方便实用。
1.2 基本结构
         AXI协议是基于突发传输的。每一次传输,地址通道上有地址和控制信息,描述了被传输数据的特性。数据将在主机和从机之间传输,数据传输的方向则是从写数据通道到从机或从读数据通道到主机。在写传输中,主机到从机发送数据流。额外的写响应通道,反馈从机信号的状态,完成写传输。
         AXI协议可以实现以下功能:
    ●在有效数据传输前提供地址信息
    ●支持多个数据的传输
    ●支持无序传输
         如图所示,显示了一个读传输如何使用读地址和读数据通道。
3-1.png
         如图所示,显示了一个写传输如何使用写地址、写数据和写响应通道。
3-2.png
1.2.1 通道定义
         AXI协议一共定义了5个独立的通道,每一个通道都是由一组控制和响应信号组成的,使用双向的有效(VALID)信号和准备好(READY)信号实现握手机制。
         发送端使用有效信号来指示何时有效数据或者控制信息在通道中是有效的。接收端使用准备好信号来指示何时可以接收数据。读数据通道和写数据通道都包含一个结束(LAST)信号来指示何时一个传输中的最后一个数据出现。
读和写地址通道
         每一个读和写传输都有独立的地址通道。地址通道上有一个传输所需要的全部的地址和控制信息。AXI协议支持以下地址传输机制:
    ●1~16个可变数据个数的突发传输
    ●8~1024bits可变数据位宽的突发传输
    ●跳变、递增和非递增的突发传输
    ●专用的或锁定的传输控制
    ●系统级的缓存、缓冲控制
    ●安全的、专有的传输控制
读数据通道
         读数据通道包含读数据和从从机返回给主机的全部读响应信息。读数据通道包含:
    ● 读数据总线,总线宽度可以是8、16、32、64、128、256、512或者1024bits
    ● 用于指示读传输完成状态的一个读响应信号
写数据通道
         写数据通道实现从主机到从机的写数据。写数据通道包含:
    ● 写数据总线,总线宽度可以是8、16、32、64、128、256、512或者1024bits
    ●为每8bits数据提供一个有效标识位,标示数据总线的每个byte是否有效
         写数据通道信息会被接收端缓存,因此主机在进行写传输时,无需确认上一次写传输的状态。
写响应通道
         写响应通道提供了一种让从机对写传输作出响应的机制。所有的写传输都必须基于完成信号的状态确认传输是否成功。每次突发传输都有一次传输完成的信号响应,注意完成信号只在一次突发传输完成后才产生,而不是为一次突发传输中的每个独立的数据产生。
1.2.2 接口和互联
         一个典型的系统包含数个主机和从机设备,这些设备通过互联总线的形式连接在一起,如图所示。
3-3.png
         AXI协议提供单一接口定义的形式来描述这种互联:
    ●在主机与互联总线之间
    ●在从机与互联总线之间
    ●在主机与从机之间
         大多数系统使用以下三种互联方式中的一种:
    ●地址和数据总线共享
    ●地址共享,有多个数据总线
    ● 多层互联,即有多个地址和数据总线
         在大多数系统中,对地址通道的带宽的需求是明显低于数据通道的带宽的。此类系统能够在系统性能与互联复杂性之间达成很好的平衡,通过共享的地址总线与多个数据总线来达成平行数据传输。
1.2.3 插入寄存器
         每个AXI通道只会单向传输信息,无需在不同通道间固定关系。这一点很重要,因为这确保了在任意通道间插入寄存器成为可能,虽然这样可能会产生一拍或多拍的时钟延时,但这可以确保在时钟延时和更高的时钟频率实现间做一些灵活的调整,以最大程度的实现系统的优化。
         也可以在互联中的任何必要的地方插入寄存器,使用简单的寄存器隔离关键的时序路径,以实现处理器和高性能存储器间的直接、快速的连接。
1.3 基本传输
         下面我们要对AXI协议的每个基本传输做一一介绍。每个传输实例都有VALID和READY信号的握手机制。不论是地址或者数据的传输都在VALID和READY信号为高电平的时候发生。
1.3.1 读突发脉冲的例程
         如图所示,这是一个4个数据的突发读操作。在这个实例中,主机发送地址信息,然后从机在一个时钟周期之后接收到地址信息。地址信号出现在地址总线后,数据传输则在读数据通道实现。从机保持RVALID信号为低电平,一直到读数据总线RDATA是有效的,则拉高RVALID信号。对于突发传输的最后一个读数据,从机通过RLAST信号的拉高,指示此时数据总线RDATA上传输的是最后一个读数据。
3-4.png
         主机可以通过拉低RREADY信号来减慢从机送数据的速度。在RVALID为高电平时,从机会判断此时RREADY信号是否也为高,若为高,表明此次传输的RDATA数据已经被接收;若为低,则继续保持RVALID为高,并且保持当前的读数据RDATA不变,直到RREADY拉高为止,接着才会送下一个有效数据。
1.3.2 重叠读突发传输实例
         如图所示,在从机接收第一个地址后(ARVALID和ARREADY都为高电平),主机可以接着发起第二个地址。读数据通道送出的数据会遵循突发传输地址写入的先后,即“先来后到”的原则。
3-5.png
1.3.3 写突发脉冲实例
         如图所示,这是一次突发写传输的例子。写操作开始于主机在写地址通道发送一个地址和控制信息。然后主机在写数据通道上发送所有的有效写数据。在主机发送最后一个写入数据时,WLAST信号变成高电平。当从机接收好所有的数据后,从机通过写响应通道将信息反馈给主机,指示写数据已经被接收,写传输完成。
3-6.png

使用特权

评论回复
| 2019-11-29 23:37 | 显示全部楼层
想知道研究这个总线有必要吗   好像应用中没怎么关注它的具体操作

使用特权

评论回复
| 2019-12-3 09:41 | 显示全部楼层
zhangmangui 发表于 2019-11-29 23:37
想知道研究这个总线有必要吗   好像应用中没怎么关注它的具体操作

看你要求性能多高,因为总线性能好,随便用都可以. 如果你实时或者大数据量突发这种状态,就有研究的必要了. 因为总线支持多种传输模式,一般pl对接就用慢的那种.....

使用特权

评论回复
| 2019-12-3 22:19 | 显示全部楼层
icecut 发表于 2019-12-3 09:41
看你要求性能多高,因为总线性能好,随便用都可以. 如果你实时或者大数据量突发这种状态,就有研究的必要了. ...

感谢感谢  

使用特权

评论回复
| 2019-12-4 16:16 | 显示全部楼层

不过要看官方文档才能看明白......哈哈哈

使用特权

评论回复
| 2019-12-4 16:17 | 显示全部楼层

不过要看官方文档才能看明白......哈哈哈

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖