一文搞懂 ARM AXI(Advanced eXtensible Interface)工作原理和读写流程

From:程序员秘书

由于工作中接触最多的开发平台就是Linux + ARM,因此平时有空也会学习和补充一些ARM相关硬件知识,其中
就包括ARM总线协议相关知识,因为通过工作会发现,有些疑难问题,单从软件层面是解释不了的,或者说有时根因不是软件问题,而是硬件层面(设计或者编码)的问题,所以只有在有具备了一些硬件工作原理知识的情况下,分析此类疑难问题才会有一些思路,想的也会更深入一些。

知识虽然是无穷尽的,但我们可以做到积少成多。今天就学习一下ARM AXI总线相关知识。

ARM的AXI(Advanced eXtensible Interface)是一种高性能、高带宽、低延迟的片上通信协议,是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)总线架构的一部分。AXI协议旨在支持复杂片上系统(SoC : System-on-Chip)中的高速数据传输,能够高效连接CPU、内存控制器、外设和其他高性能组件。AXI协议的核心在于其分层和分离的设计,它将数据传输分解为地址/控制通道和数据通道,从而允许独立地处理地址和数据传输,提高了总线的效率和吞吐量。

AXI 原理和特点

  1. 分层结构
    AXI协议采用了层次化设计,包括AXI4AXI4-LiteAXI4-Stream等多个变种,分别适用于不同应用场景。例如,AXI4适用于高性能地址映射通信,AXI4-Lite用于简单、低吞吐量的控制接口,AXI4-Stream则用于无地址、连续数据流传输(如视频流)。

  2. 独立通道
    AXI采用了独立的地址、控制、读数据、写数据及写响应通道。这种分离的设计使得地址/控制信息与数据传输可以并行进行,极大地提升了数据传输效率。

  3. 异步时钟域支持
    AXI总线允许主设备和从设备使用不同的时钟源,通过握手信号进行跨时钟域同步,确保数据传输的正确性和稳定性。

  4. 分离的读写数据通道
    读写操作使用独立的通道,避免了读写操作间的相互干扰,允许读写操作同时进行,提高了系统的并发性能。

  5. 支持突发传输
    在进行连续的数据访问时,只需发送一次地址信息,随后就可以进行多次数据传输,减少了地址阶段的开销,特别适合于缓存行填充、连续内存区域访问等场景。

  6. 数据对齐与非对齐传输
    AXI支持任意字节对齐的数据传输,无需在硬件设计上严格遵循特定的地址对齐规则,增加了灵活性。

  7. Outstanding传输访问与乱序完成
    主设备可以发出多个未完成的请求(Outstanding Transactions),并允许这些请求按任意顺序完成(Out-of-Order Completion)。这种机制允许从设备根据内部资源情况灵活调度响应,进一步提升带宽利用率和整体性能。

  8. 握手信号与状态报告
    通过一系列握手信号(如READ/WRITE VALID, READY等)实现数据传输的有效控制和确认。同时,从设备可以通过响应信号提供传输状态信息,如传输错误、缓存一致性状态等。

AXI协议定义了如下基本类型的通道:

  1. 读地址通道(Read Address Channel):用于传输读取请求的地址和控制信息。
  2. 读数据通道(Read Data Channel):用于返回从从设备读取的数据。
  3. 写地址通道(Write Address Channel):用于传输写入请求的地址和控制信息。
  4. 写数据通道(Write Data Channel):用于传输实际写入的数据。
  5. 写响应通道(Write Response Channel):用于确认写操作是否成功完成。

AXI协议不仅仅限于基本的读写通道,还包括额外的信号和特性,以支持复杂的系统交互和提高效率。

完整的AXI接口通常包含以下组成部分:

  • 地址通道(AW、AR):分为写地址通道(AW: Address Write)和读地址通道(AR: Address Read)。这两个通道负责传输请求的地址信息以及与之相关的控制信号,如突发长度(Burst Length)、大小(Size)、缓存属性(Cache Attributes)等。

  • 数据通道(W、R):写数据通道(W: Write Data)用于传输写操作的实际数据,而读数据通道(R: Read Data)则用于传输由从设备返回的读取数据。每个数据通道还包含伴随的数据控制信号,如数据有效(Data Valid)和最后一个数据传输标识(Last Beat)。

  • 写响应通道(B):用于从设备主设备发送写操作的完成状态,包括简单的完成确认或错误指示。

  • 握手信号(Handshake Signals):每个通道都有自己的握手信号,如ready(ready信号表明从设备准备好接收或发送数据)和valid(valid信号表明主设备提供的数据或命令有效),这些信号确保了数据传输的同步和可靠性。

  • 控制和标识信号(Control and ID Signals):包括事务标识符(ID)用于区分并发的传输,以及一些控制信号,如排除(Exclude)和锁定(Lock),用于实现特定的传输属性或行为。

AXI传输通常遵循以下步骤:

  • 地址传输:主设备通过读地址或写地址通道发送地址和控制信息。
  • 数据传输:对于读操作,从设备通过读数据通道返回数据;对于写操作,主设备通过写数据通道发送数据。
  • 确认/响应:从设备通过写响应通道确认写操作的成功或失败。

操作流程

  1. 地址阶段:主设备通过AR通道发送读地址和控制信息,包括地址、突发类型、大小等。ARVALID信号被置为高电平,表示地址有效,等待从设备的响应。从设备通过ARREADY信号确认其已准备好接收地址信息。

  2. 数据阶段:当从设备准备好数据后,会在RVALID信号上设置高电平,并通过RDATA传输数据。同时,RRESP信号携带事务的状态(如OK或Error)。主设备通过RREADY信号通知从设备其已准备好接收数据。

  3. 完成:主设备确认数据接收完毕后,可以开始新的传输。这个过程可能涉及多次数据传输(突发传输),直到RLAST信号指示这是当前突发序列的最后一个数据。

操作流程

  1. 地址阶段:类似读操作,主设备通过AW通道发送写地址和控制信息,AWVALID表明地址有效。从设备通过AWREADY响应。

  2. 数据阶段:主设备随后通过W通道发送数据,WVALID表明数据有效。WREADY信号表明从设备准备接收数据。数据传输可能包含多个连续的数据包(突发传输)。

  3. 写响应阶段:数据传输完成后,从设备通过B通道发送写响应,BVALID表示响应有效,BRESP携带响应状态(如OK或Error)。主设备通过BREADY确认收到响应,完成整个写操作。

附:AXI的高级特性

  • 突发传输(Burst Transfers):允许一次性发送多个连续地址的读写请求,减少地址传输的开销。
  • 流水线传输(Pipelining):不同阶段的操作可以重叠进行,进一步提升数据传输速率。
  • 服务质量(QoS):通过优先级和仲裁机制,确保关键数据流得到优先处理。
  • 保护域(Protection Domains):确保不同安全等级或权限的事务正确隔离。

综上所述,ARM AXI接口通过其细致的通道划分、丰富的控制信号和高级特性,为高性能SoC设计提供了强大的数据传输框架,支持高度并行和高效的片上通信。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值