文章目录
1.时钟与复位
- 时钟
- 每一个AXI组件使用一个单独的时钟aclk,上升沿采样;
- 在主接口和从接口上,输入和输出信号之间不能有组合逻辑路径;
- 复位
- 低电平有效
- 支持异步复位,但是必须同步释放
- 复位期间主端必须驱动ARVALID, AWVALID, WVALID 为低;从端必须驱动RVALID 、BVALID 为低;其他值不做要求
- 如下图所示,上述标志位最早的拉高时刻必须在复位信号为高后的首个上升沿之后(因为必须等待复位信号的同步释放)。
2.握手机制
- 所有五个通道都使用相同的valid/ready握手过程来传输地址、数据和控制 信号。源生成valid信号以指示何时地址、数据或控制信号可用。 目的地生成ready信号以指示它可以 接受这些信息。 只有当valid/ready都为高时,才会发生传输, 这种双向握手控制机制意味着主从机都可以控制主从间的交互速率。
- VALID 和 READY 信号提供了 AXI 总线中的握手机制,如下图所示:
- 图中,ACLK 为时钟信号, 在 AXI 协议中,所有的输入信号都在是 ACLK 的上升沿采样,所有的输出信号必须在 ACLK 的上升沿之后才能改变。在 T1 之后, 源端将 VALID 拉高,表明 INFORMATION信号线上传输的是有效的地址、数据或者控制信息。目的端在 T2 之后将 READY 拉高, 表明它已经准备好接收数据,此时源端必须保持 INFORMATION 数据稳定不变, 直到 T3 时刻进行数据传输。
- 注意:
- 源端不允许等目的端的 READY 信号拉高之后, 才将 VALID 信号置为有效状态。
- 一旦 VALID 拉高,源端必须保持其处于有效状态, 直至成功握手(在时钟上升沿检测到 VALID 和 READY同时为有效状态)。
- 一旦valid信号拉高,那就必须保持,直到握手完毕(在一个上升沿采样到了dest的ready,数据被成功采样后)。
- 除了上图所示的情况,下图这种握手也是可以的。不同之处在于,若dest的ready拉高后,在valid没有拉高之前,ready可以被再次拉低。
- 源和目的同时拉高握手信号也是可以的。
3.握手信号的图形化描述
- AXI 协议的五个通道都有各自的 VALID/READY 握手信号对,每个通道握手信号对的名称如下图所示:(其中,W写,R读,A代表address,B代表response)
约定:- 1、单箭头源端,本端valid信号拉高与否,不能去检测指向端的ready。换句话说,不能依据指向端ready信号的电平去决定是否拉高源的valid,源端valid的置位是和目的端解耦的。
- 2、单箭头指向端可以在ready信号拉高之前,检测源端的valid,也可以在源信号之前或之后拉高。换句话说,指向端的ready可以决定自己是在源端valid拉高之后才拉高自己的ready,也可以在自己准备好接受数据时就拉高ready,而不关系源端valid的情况。1、2两条避免了源和目的端握手信号的互锁,即源在等目的给ready的高,目的在等源给valid的高,最后谁也等不到。因此直接规定了源端valid自主置位。
- 3、双箭头表示所指向的信号必须在源信号之后拉高。
3.1 读交互时的握手信号依赖关系
以读操作握手为例进行详细说明:
- master不能在拉高ARVALID之前等待slave的ARREADY。即slave的ARREADY的高低电平与master拉高ARVALID是解耦的,master拉高ARVALID不看slave的ARREADY。
- slave可以在拉高自己ARREADY之前等待master的ARVALID给高后再拉高,也可以不等直接在自己准备好后直接拉高ARREADY。
- slave必须在master给出ARVALID高,和自己给出ARREADY高之后,才能给出RVALID高,表示数据有效。
- 同样的,slave不能死等master给RREDAY才拉高自己的RVALID,不然就会互锁。
- master可以在slave拉高RVALID之前或之后,拉高RREADY。
3.2 写交互时的握手信号依赖关系
- ready和valid的机制和读是相同的
- 写操作时,被写入的slave必须等待master的WVALID和自己的WREADY为高后可能可以拉高响应有效BVALID。因为slave必须等待WLAST,即最后一个数据写入完毕后再给出响应BRESP。
3.3 响应信号的依赖关系
- 响应信号的依赖关系和写操作的依赖关系很类似。
- 如下图,写操作时,当master发出写地址有效AWVALID高和slave的准备好接受写地址标志位AWREADY拉高后,slave的BVALID才能拉高。
4.突发读写时序
4.1 突发读时序
- T2时刻,master的ARVALID和slave的ARREADY都为高,master的ARADDR被读取。
- T6/T9/T10时刻,slave的RVALID拉高,与此同时master的RREADY也是高,因此master成功读取3个数据。
- T13时刻,检测到mater将RLAST拉高,意味着读出最后一个数据。
4.2 突发写时序
- T2时刻,master的AWVALID为高,与此同时,slave的AWREADY也为高,因此写地址AWADDR被slave读取。
- T4/T6/T8/T9时刻,mater的WVALID和slave的WREADY同时为高,数据被写入slave。
- T9时刻,slave检测到WLAST为高,意味着写入最后一个数据。该时刻slave给出反馈,BRESP被设置为OKAY,BVALID拉高。
- T10时刻,master接收到写完毕的响应。
参考:AMBA® AXI™ and ACE™ Protocol Specification (IHI0022D)