金华做网站建设公司,高端企业站,wordpress网站 华为,软件开发培训机构怎么样#x1f4a1;Note#xff1a;本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf#xff08;issue F#xff09;整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出#xff0c;有补充或者疑问也可以发在评论区#xff0c;互相学习#x1f64…Note本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdfissue F整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出有补充或者疑问也可以发在评论区互相学习Burst 传输跟burst相关的信号有AxSIZE, AxLEN, AxBURST编码如下 AXI对burst传输方式的要求AXI3.0中incr burst的burst length最大为8AxLEN为4bit信号在AXI4.0中incr burst的burst length为256AxLEN为8bit信号。对于其他类型的burst传输fixedwrapburst length最大16.AXI4.0(H suite)中说对于非INCR burst支持1-16 burst length但后面又说wrap传输只支持2、4、8、16 burst length。Burst length不能超过4KB边界。Burst 传输不能被提前终止即使发生了传输错误。在写中发生错误也还要将写传输周期完成master可以将wtrb拉低。在读的时候传输周期也要完成但是master可以discard data。对于device设备读操作发生错误会怎么样呢Device memory一般是read-sensitive的读了之后device中的设备就被移除了如果我们把数据discard这些数据就丢失了。所以spec中建议a Manager must use a burst length that exactly matches the size of the required data transfer.在AXI4.0中对于一个non-modifible的INCR burst并且她的长度大于16也可以把它转换成多个小的burst。虽然是non-modifiable也可以改变但只能改变Axlen和响应的地址其他的控制信号不能改变。要注意AxBURST, AxLEN, AxSIZE这些信号在Axvalid, Axready同时为高的那一个周期内被采样一次而不是每次transfer都采样。RDATA/RRESP是每个transfer都会返回而BRESP是一个burst只返回一次。对于exclusive access 还有一些特殊的要求见exclusive 部分。Wrap 操作wrap的burst length为2、4、8、16没有1.如果是1的话那么就是fixed address了Wrap的地址要跟transfer size对齐比如地址位宽是64bittransfer size是32bit那么地址要跟0x4对齐不能是0x1,0x2,0x3这种。要知道Wrap boundary address是什么Wrap boundary是小于等于传输的起始地址它跟burst的byte sizeburst length*transfer size对齐。比如AxSIZE为2也就是4个byte的transfer sizeburst length为4所以这个burst的transfer size 为0x10如果传输是从0x14开始的那么每次transfer的起始地址是0x14-0x18-0x1c-0x10会返回到0x10这个0x10就是wrap boundary address。始终要记住地址是跟transfer size对齐也就是跟0x4对齐Wrap传输一般用在cache access中。AxBURST[1:0]0b10表示wrap传输在非对齐写访问中比如transfer szie是4byte数据位宽是8byte那么地址也要跟transfer size对齐。INCR读写example上图是读操作ARVALID和ARREADY同时有效的时候采样相关的控制信号下一个周期ARVALID和ARREAD拉低在一次burst传输中控制信号只采样一次。上图读操作的burst length是44次transfer从图中可以看出每次transfer 都要回一个rresp这跟写不同写只回一次bresp最后一次transfer的时候RLAST拉高一个cycle。 写跟读的不同是写的bresp只回一次。在所有数据都传输结束之后会resp。问题如果slave那边在burst传输过程中buffer满了发生slave errorslave会提前发送resp告诉master吗猜测应该不会因为即使发生错误也要把burst传输完成。但也有可能会提前返回resp这样可以告诉master后面的数据可以只发0就行了把wstrb都拉低。