一、axlen
axi3中len[3:0],len为0-15,burst length为1-16。
axi4中len[7:0],len为0-255,burst length为1-256。
注意:
1.1、axi4中len>16只有burst type为INCR自增式猝发才支持。
1.2、axi3协议规定len为0-15,实际芯片设计中根据需求来自行设置不同位宽的len,len大于16,对协议的完整性没有影响。一般根据自己的系统需求来定,通常取2的n次方。
1.3、在较大的芯片设计中,axi4和axi3通常混用。此时,如果总线从axi4转为axi3,如果len直接截掉高位从7:0]到[3:0],则需要控制源头激励,len不能大于15,否则会无响应进而挂死。较优的解决方案是通过协议桥来进行axi4转axi3。
二、axi4取消wid
axi4取消wid,则写通道没有out of order乱序和interleave间插功能,所有写数据都是order有序的,减少pin-count,减少设计复杂度。
三、写响应的相关性
axi3协议中规定b 通道必须在w 通道结束之后即wlast拉起才能回响应。
axi4协议中规定b 通道必须在w 和aw 通道都结束之后才能回响应,进一步避免deadlock。
在axi3中,由于w通道和aw通道之间是相互独立的,存在w通道先完成,b通道回响应,aw在完成,从而造成deadlock的场景。在设计中,为规避deadlock,即使w先到,slave一般会把wready拉低,等待aw通道完成后再完成w通道。其次,在系统互联矩阵上的设计上,也会对通路上的aw和w命令个数做限制,来规避deadlock。
四、cache信号
axi3中cache[3:0]中第1bit为0时,表示对读或写数据不做处理。第1bit为1时,对于写数据,意味着可以对它进行拆分或者合并,一般是矩阵的downsize/upsize对数据进行处理。对于读数据,这意味着对多个读处理一个区域能够仅仅一次被预取或者取出来。取决定是否一个传输应该被cache这一位应该与Read Allocate和Write Allocate位联系起来使用。
axi3中cache=0,对数据不做处理。cache=1,矩阵会对读写数据进行合并或拆分处理。
cache[0],Bufferable,一般针对写操作,表示interconnect,或者其他类似component,可以先返回resp,之后再写向final distination。
cache[1],1)与RA,WA配合,控制cache。2)表示transaction的属性,可以在中间被更改。对写操作,表示数据可以被merge。对于读操作,表示地址可以被prefetch。
五、user信号
AxUser是axi4增加的用户自定义信号。一般不建议使用,互联设备两边可能对信号定义不一样,从而导致在互联时不兼容。
六、Qos信号
AxQos是axi4增加的用户服务质量信号。主要针对不同写/读事务的优先级,如果不使用,建议设置为default value 4‘b0000。
协议中希望互联组件中有可配置寄存器,在传输中可以修改Qos信号值。一般尽量在系统级统一规划Qos,并且设置为可编程Qos。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐