axi总线进阶内容
参考链接:
有关cache
axlock详细解析
锁访问
主要使用LOCK信号,锁住一笔传输,拒绝其它传输的干扰,只有这笔传输完成之后释放Lock信号,才可以进行其它笔传输。
- 在M0想要发起一笔锁定传输前,需要确保是否还有在进行的传输,必须要确保之前进行的传输都已完成。
- M0使用AxLOCK发起locked transaction,interconnect通过内部仲裁器确保只有M0能够访问S0,其它主机的访问都会被阻塞掉,直到锁定传输完成。
- AXI3支持锁定访问,但AXI4已经不支持了
独占访问
- AXI4取消锁定访问的原因是新增了独占访问,比锁定访问效率更高,还是使用AxLOCK信号。
- 锁定访问是不允许其它主机访问正在锁定访问的从机,而独占访问允许访问该从机,只是不允许其它主机访问相同的内存范围(memory range)。
- 这样既不会出现两个主机对同一块内存空间进行更改,导致数据错误;还可以一定程度保证了总线的最大带宽和总线延迟。
- 从机内部需要实现一个独占访问的monitor,用于记录独占事务序列的信息确定哪段地址区间被独占访问,以及识别正在执行独占访问的主机ID。
- RRESP[1:0]和BRESP[1:0]可以表示独占访问的成功或失败
| RRESP/BRESP | 响应 | 含义 |
|---|---|---|
| 00 | OKAY | 表示独占访问失败/正常访问成功 |
| 01 | EXOKAY | 独占访问成功 |
独占访问的过程
- (1)主机对slave的一个地址进行独占读操作,从机monitor记录下该master的ARID以及访问的地址位置
- (2)一段时间之后,主机对相同地址进行独占写操作,此时从机monitor同样记录下该操作主机的AWID和要访问的地址位置
- (3)将AWID与之前记录的ARID进行比对,如果一致,说明该地址之前并没有被其它主机访问,返回EXOKAY;否则返回OKAY,独占访问失败
另一个例子

- 对于在独占写之前有多笔独占读,那么monitor所记录下来的ID都将存入一张表内,之后当开始独占写时,查找这张表,如果有ID相同的,则独占写传输成功。
- 由于该地址的数据已被更改,前面记录的ID会全部被清除,如果连着独占写,那么一定会失败,返回OKAY
axi总线死锁分析
两种死锁场景分别是乱序读和写交织,那就是out of order和interleaving。下面我们分析原因
乱序读:我们知道AXI协议支持乱序读,那么为什么能实现呢?这也是常见面试题目,那就是因为AXI(现在单指AXI3)每个通路都有相应的ID,通过请求和响应ID的一致来将打乱的顺序恢复
AXI-Stream反压机制
在现代数字系统设计中,无论是 FPGA 还是 ASIC,数据流的处理效率往往决定了整个系统的性能上限。AXI4-Stream 协议凭借其简洁、高效的特性,成为了数据流传输的事实标准。然而,许多工程师在使用 AXI-Stream 时,往往只关注数据的“流动”,而忽视了“堵塞”的处理——即反压(Backpressure)机制。
反压不仅仅是一个信号的拉低,它是一门关于时序收敛、吞吐量平衡与死锁避免的平衡艺术。本文将从设计哲学的角度,深入剖析 AXI-Stream 反压机制的底层逻辑与工程实现。
反压的时序表现
反压的本质,是接收端(Slave)通过拉低
TREADY告诉发送端(Master):“我处理不过来了,请暂停发送”。
下面是一个典型的反压时序图。

在 cycle 2,握手成功,传输 D0。在 cycle 3,Master 准备好了 D1(TVALID=1),但 Slave 忙碌(TREADY=0),产生反压。Master 必须保持 D1 和 TVALID 不变,直到 cycle 5 握手成功
$ y=x \oplus b $
H20
x2
高亮
note
测试
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhzhuang的博客!
