前面的文章中我们已经系统性的讲完了AXI3协议,同时穿插了部分AXI4的讲解。但是AXI4的部分信号和AXI4-lite还没有讲解,本篇文章系统性的给大家讲解一下剩余的信号(水一篇文章)。
1、AXI4新增的信号
AXI4相比于AXI3扩展了一些信号,前面的文章中我们已经讲过了其中的AxQoS信号,这里不重复讲解。我们讲解一下之前没有讲过的信号。
1.1、Region Signal
AxRegion信号,该信号为4bit。分为AWRegion和ARRegion两个信号。顾名思义,它的用途是用来指定相应的Region,由于它有4bit,相应的最多可以指定16个Region。
该信号用来干什么呢?举个例子,我在同一个Slave之间有不同的数据类型,如果你用AXI对其进行访问,那么就需要对地址进行译码,从而选择需要的Region。但是如果有Region信号,可以直接根据Region信号去选择需要的Region,从而简化了译码逻辑。再比如你去访问一个MUX,你如果有该信号,可以大大简化MUX的设计逻辑。
此外之前有讲到过Secure Region和Non Secure Region,这种情况下可以根据Region来判断它是只读的还是读写的或者是别的。比如只读的规定Region为0,否则为1。
总而言之,该信号可以传递额外的信息。用于区分不同的Region,对于不同的Region你可以定义不同的行为。该信号相对比较灵活,但是实际上该信号用的并不太多。至少我接触过一些AXI相关的IP,都没有实际使用该信号。
1.2、User Signal
AxUSER信号,该信号相比于Region信号而言,用途可以说多得多。AXI官方没有指定该信号的具体用途,因此该信号可以说非常的灵活。你可以用它来做不同的指示信号。
以下是一些使用建议:
- 该信号用来传递额外的控制信号。比如本人之前设计的一款原子操作模块,用该信号来说明是否是原子操作指令,如果是的话是哪一种原子操作指令。使用其中的2bit;
- 不是所有的Channel都需要支持该信号;
- 位宽没有严格的限制,不同Channel的User信号位宽可以不一样;
- 两个模块连接的时候要注意User用法是否一样;
1.3、AXI4和AXI3的主要区别
主要区别如下:
- AXI4支持更长的突发传输(AxLEN从4bit扩展为8bit,相应的突发长度最大可以到256);
- 增加了QoS信号,以提供服务质量。减少延迟,便于仲裁;
- 多Slave Region(即AxRegion信号);
- 移除了WID信号,因此不支持写数据interleave;
- AxLOCK从2bit变为1bit,不再支持Lock Transfer;
- 写响应必须在写数据和写地址全部给了以后才允许返回(之前可以在给了写数据以后就返回写响应);
- 将Cacheable改为Modifyable
2、AXI4-lite
顾名思义,AXI4-lite是在AXI4的基础上做了相应的简化,为什么要做简化呢?因为很多时候我们用不到那么多AXI 的特性,使用简化版本可以省面积省功耗。AXI4-lite一般用在寄存器配置或者是其它的一些简单外设上,该协议基本上是用来替代APB协议的。
AXI4-lite的特性如下:
- 所有的Transaction的Burst length为1,即不支持突发传输,只支持Single Transfer;
- 没有突发传输自然没有Last信号;
- 没有Strobe信号,因此会使用完整的data bus作为传输;
- 由于AXI4-lite主要是用来配置寄存器,配置寄存器基本都希望立即生效,因此其是Non-bufferable和Non-modifiable的;
- 不支持原子操作;