AXI协议(总结连载一)

本人是FPGA助理攻城狮一枚~工作快两个月了,近期在学习AXI协议。为了记录自己的学习历程,方便今后拿起来复习。因此手动翻译了AXI协议原文。等连载结束了会贴上英文版协议。

分享出来是想与大家共同讨论,一起进步。

经过一遍又一遍地rua,慢慢地有点感觉了。刚开始看确实不好顶。请大家一定加油😕

小小新人,请大家多多关照~


AMBA AXI协议规范

我们知道,AMBA协议是ARM公司推出的一种片上总线协议。AMBA,Advanced Microcontroller Bus Architecture,高级微控制器总线架构。它不是芯片与外设之间的接口,而是芯片上ARM内核与芯片上其他元件进行通信的接口。今天,我们讨论的是AMBA的成员之一:AXI协议。

A1 Introduction

AXI,Advanced Extensible interface bus,高级可扩展接口总线。

A1.1 AXI协议简介

AMBA协议支持用于主从模块间通信的高性能、高频率系统设计。

其特征是:

·适用于高带宽、低时延设计

·不需要复杂的桥便可实现高频时钟要求

·满足大多数模块的接口需求

·适用于初始延迟较高的存储器控制

·在总线互联架构上提供更大的灵活性

·向下兼容AHB和APB

它的几个关键特征:

·将address/control和data传输过程分开

·利用byte strobes(字节选通)支持非对齐数据传输

·使用burst(突发)传输时只需要发送首地址,便可发送一段数据

·读数据与写数据通道独立,从而支持low-cost(低成本)DMA

·支持outstanding功能,可以发送多个地址进行读写

·支持out-of-order传输

·可以比较容易地添加寄存器级,以此来实现时序收敛

A1.2 AXI协议架构

AXI协议基本传输模式为burst传输,定义了5个独立的传输通道:

·read address,信号名以AR开头

·read data,信号名以R开头

·write address,信号名以AW开头

·write data,信号名以W开头

·write response,信号名以B开头

address channel携带着描述所需传输数据属性相关的控制信息。

主从机之间的数据传输可以通过以下两种方式:

·write data channel:将数据从主机传到从机。

·在一次写传输过程中,从机使用write response channel来告诉主机传输已经完成。

·数据总线宽度可使用:8,16,32,64,128,256,512,or1024bits

·每8个数据位(一个字节)有一个strobe选通信号,用来表示该字节数据有效

写数据通道的信息通常是被缓存的,以便master在没有得到slave对上一次写传输确认的情况下,仍可以执行写传输。

·read data channel:将数据从从机传到主机。

·数据总线宽度可使用:8,16,32,64,128,256,512,or1024bits

·read response channel表明读传输已经完成   

ps:这两个数据通道在协议原文中其他地方也有提及,索性我便把特性都总结在这儿了。

AXI协议:

·允许地址信息先于数据传输

·支持多个outstanding传输

·支持out-of-order传输

Figure A1-1使用write address,write data,write response channels描述一次写传输

Figure A1-2使用read address,read data描述一次读传输

A1.2 .1 信道定义

5个独立通道,每个信道都由一组信息信号和一对握手信号VALID、READY组成。

信源VALID(由information source发出):表明信道上的address、data或control information是有效的

信宿READY(由destination发出):表明能接收到信息。

read data channel和write data channel:都包含一个LAST信号,用来标识所传输的最后一个transfer。(此处关于总线宽度等的说明已提至前文叙述)

read and write address channels:  

readwrite transaction都有自己的地址通道,用于传输所需要的address和control信息。

根据提供的address和control information,AXI协议支持以下机制:

·可变长度的burst,一个burst中可以包含1-16个transfer

·burst中transfer的size可以为8-1024bits

·支持increment(增量)、wrapping(回环)和non-incrementing(固定长度) burst

·使用独占和锁定访问的原子操作(atomic operation)(即operation要么不发生,要么完整发生,中间不允许中断)

·系统级caching(高速缓存)和buffering control(缓存控制)(通过ARCACHE和AWCACHE signals来确认)

·secure和privileged access(安全和特权访问)(通过AWPORT和ARPORT signals 来确认)

write response channel:从机使用写响应通道来响应写传输。所有写传输都需要在该通道发出完成的响应信号。

注意:对于每个burst,完成信号只响应一次(a complete transaction之后)。而不是每完成一个transfer都产生一次完成信号。

A1.2 .2 接口和互联

多个连接在一起的master和slave构成的典型系统如图Figure A1-3所示:

AXI协议提供了一个单一的接口定义,用于描述

·一个主机和interconnect

·一个从机和interconnect

·一个主机和一个从机

之间的接口。

该接口定义支持多个不同的interconnect开发。

设备之间的interconnect等效于另一个设备,它有着对称的主从机接口,可以用来连接真实的主从机设备。

典型系统拓扑结构:

大多数系统使用以下三种互联拓扑中的一种:

·共享地址和数据总线

·共享地址总线和多个数据总线

·具有多个地址和数据总线的多层结构

在大多数系统中,地址信道的宽度要求小于数据信道。因此,通过多个数据总线共享一个地址总线来实现并行数据传输,从而在系统性能和互联复杂性之间实现良好的平衡。

A1.2 .3 寄存器片(Register slices)

每个AXI通道的信息传输都是单向的(只在一个方向上传输信息),对各个通道间的关系也没有固定的要求。这意味着可以在任何通道几乎所有位置插入一个寄存器片,代价是增加一个延时周期。但可以将一些性能不那么好的外设隔离在CPU直连结构外,从而提升CPU的整体运行频率。

A1.3 术语

Components:一种具有至少一个AMBA接口的独特功能部件。组件可以用作主组件、从组件、外设组件和互连组件的通用术语。

Master component:发起传输的组件。一个组件既可以是master,也可以是slave,比如DMA组件在发起数据传输时为master,当被编程时为slave。

Slave component:接收传输请求,并作出响应。分为Memory slave component和Peripheral slave component。

Interconnect component:一个具有多个AMBA接口的组件,该接口将一个或多个主组件连接到一个或多个从组件。

对于一个特殊的AXI传输,上游和下游指的是AXI组件在AXI拓扑中的相对位置。

时序图:

A1.3.1  write burst例子

write burst

·当主机在AW通道上发送了一个地址和控制信息时,突发过程开始。随后,主机通过W通道发送RDATA,当主机发送完最后一次transfer时,WLAST拉高。当从机接收完所有数据之后,会驱动一个写响应给主机表示写操作完成。

A1.3.2  read burst例子

read burst

·主机驱动地址,从机在一个周期后接收地址;主机也会驱动一组控制信号来标识突发长度和类型。但为了简化,图中省略了这些信号

·在地址出现在地址总线上之后,读数据通道上发生数据传输。

A1.3.3  outstanding例子

outstanding

 

·展示了在从机接收完第一个地址之后,主机怎样驱动另外一个地址。这可以使主机在完成第一个突发的同时,并行地处理第二个突发中的数据。

A1.3.4  out-of-order

AXI协议允许乱序完成transaction,它会给每个transaction一个ID tag。要求不同ID tag的transaction可以乱序完成,相同ID tag的transaction顺序传输。

out-of-order传输可以在以下两个方面提升系统性能:

·可以让响应比较快的Slave优先完成transaction,之后再让比较慢的Slave来完成

·比较复杂的从机也可以乱序返回read data。例如,在先访问的数据准备好之前,一个后访问的数据项可能已经在一个内部缓存中得到了

如果master要让所有的transaction按照其发送的顺序来完成,则这些transaction必须具有相同的ID tag。但是,如果master不要求按顺序完成transaction,则主机可以使用不同的ID tags来发送transaction,并允许transaction按任何顺序完成。

在多个master的系统中,interconnect负责扩展原本的ID tag(将额外信息附加到ID tag),即在原本的ID tag上增加扩展位,以确保来自不同Master的ID tags都是独一无二的。


请大家放心~本姑娘一定连载直至结束。哼!😕

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学数理化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值