|
发表于 2022-9-26 11:33:28
|
显示全部楼层
本帖最后由 Topiler 于 2022-9-27 09:05 编辑
我最近看AXI也是有这样的问题。发现AW和W通道分别有一个AWSIZE和WSTRB信号,参照我已经熟悉的AHB/APB协议,我一开始以为AWSIZE和WSTRB信号两者只需要一个就行了。后面我在ARM社区发现有AXI能够实现稀疏(sparse)写入,我才开始理解到AWSIE和WSTB信号各自的作用。
我目前认为:- WSTRB确实仅表示当前数据总线的有效字节通道,与AWSIZE没有什么关系。
- AWSIZE是用来决定一个写操作burst后续的每拍(beat)的地址的信号。
我说的稀疏写入例子:
使用一个burst在0x0, 0x4, 0x8, 0xC地址分别写入1个字节:
- AWBURST[1:0] = INCR
- AWLAN[7:0] = 8'h3
- AWSIZE[1:0] = 2'b10
- WSTRB[3:0] 恒为 4'b0001
————————
*另外通过控制每拍的WSTRB[3:0]值可以实现更加奇怪的地址写入。
如SWTRB[3:0]依次为0001, 0010, 0100, 1000可以实现在0x0, 0x5, 0xA, 0xF地址的写入。
另外我有一个疑问,若AWSIZE和WSTRB的结合支持稀疏写入,那反过来是否支持密集/交叠写入?(名称随便取的)
就是AWSIZE较小而WSTRB较大(如4'b1111),那么这样前后每拍的写入地址会产生交叠。
(我知道这种burst写入应该没有应用需求,但协议是否允许?)
请有了解的大佬前来详细解释一下,谢谢啦
|
|