赞
踩
AXI4 总线是 ARM 公司开发的一种总线,广泛应用于 Xilinx 的 IP 核中,比如笔者近期涉及 DDR 的读写控制,需要用到 MIG IP 核,这个 IP 核就通过 AXI4 总线进行控制。
AXI4 共有 5 种通道:读地址通道 ARC,读数据通道 DRC,写数据通道 AWC,写数据通道 DWC,写回复通道 RC。以上 5 种通道都是单向通道,通过 Valid/Ready 握手机制实现读写控制。
AXI 通过两个信号(valid、ready)实现握手,发送方(主)通过置高 vaild 信号表示地址/数据/控制信息已准备好,并保持在消息总线上;接收方(从)通过置高 ready 信号表示接收方已做好接收的准备。在 ACLK 上升沿,若 vaild、ready 同时为高,则进行数据传输。
需要注意,valid 信号必须是独立的,而 ready 信号可以是独立的也可以依赖于 valid 信号。否则若 valid 依赖于 slave 给出的 ready 信号,而 ready 又依赖于 master 给出的 valid 信号,将出现死锁。上述谈及的依赖不止组合逻辑,时序逻辑乃至 FIFO 也是。(所以其实 ready 信号独立,而 valid 依赖于 ready 信号也是可行的),然而强烈建议 ready、valid 完全独立,这样主从端将均具有中止通信的能力,从而可以从主从双向控制通信速度。若想要从机接收全部的来自主机的数据,可径设 ready = H 。
根据 valid、ready 到达时间,可以分为 3 种情况,分别如下图
应当注意到,在 valid 置高的同时,发送方就应该给出有效数据,并将有效数据保持在总线,而在之后的 ACLK 上升沿,若 valid、ready 均有效,则应更新有效数据。
写流程如上图,涉及写地址通道 AWC、写数据通道 DWC、写回复通道 RC 三个通道。首先 master 在 AWC 上给出写地址和控制信息,然后在 DWC 上传输数据,AXI 的数据传输是突发性的,一次可传输多个数据,在传输最后一个数据时,须同步给出 last 信号以表示数据传输即将终止,之后 slave 将在 RC 上给出写回复消息,对本次数据传输表示确认。
读流程如上图,涉及读地址通道 ARC、读数据通道 DRC 两个通道。首先 master 在 ARC 上给出读地址和控制消息,slave 将在 DRC 上给出数据。值得注意的是,DRC 集成了读回复功能,且是从 slave 发送给 master 的,在 slave 完成数据传输后,会在 DRC 上给出回复消息,标志一次读取结束。
AXI 可以连接成多对多的拓扑,这可以借助 AXI Interconnect IP 来实现。
注意,AXI 读写地址是与数据位宽对齐的,如下图所示的窄传输(单次 transfer 的位宽小于用户数据位宽)例子,用户数据 size 为 8 Byte,而起始地址设为了 4,则会先将高 4 字节写入,而低 4 字节将在地址 8 进行写入。
有时候会遇到起始地址与突发传输的数据位宽不对齐的情况,这时可以通过填充无效数据并将对应字节的 WSTRB 置零来对齐数据,读操作时遇到非对齐情况也做同样处理。如下图所示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。