我正在通过AMBA AXI规范,但是我对WSTRB信号的使用有疑问。在突发过程中,WSTRB的某些位可以低吗?同样,在突发的最后一次传输中,WSTRB的某些位可以低吗?例如,假设数据总线为32位宽并且在突发过程中,我可以传输数据0x11xx22xx(x表示无关)并将WSTRB设置为0b1010吗?
我正在通过AMBA AXI规范,但是我对WSTRB信号的使用有疑问。在突发过程中,WSTRB的某些位可以低吗?同样,在突发的最后一次传输中,WSTRB的某些位可以低吗?例如,假设数据总线为32位宽并且在突发过程中,我可以传输数据0x11xx22xx(x表示无关)并将WSTRB设置为0b1010吗?
AWSIZE仅在突发开始时传输,因此它将对突发中的所有传输均有效(您不能为每次传输更改它)。
在此突发的第二次传输中,是的,您可以驱动WSTRB = 4'b1010以仅将有效字节发送到0x7和0x5。
此突发中的每个WVALID指示都告诉从设备应将原始地址增加原始AWSIZE值,因此在此示例中为4个字节。
WSTRB仅在第二次传输中将2个字节表示为有效这一事实无关紧要,本地地址仍会增加4个字节。
Only if the burst type AWBURST is signalling INCR or WRAP. If the burst is FIXED type, the address would not increment.
But assuming you were looking at INCR bursts, yes, in this example the address would increment by 2 bytes (because AWSIZE was 3'b001).
If you are transferring data to both 0x1 and 0x3 in this transfer, AWSIZE must indicate at least a word wide transfer (3'b010).
Unfortunately I cannot say here because your AWSIZE value was wrong for the first part of this question.
If AWSIZE was correctly driven to 3'b010 for the first transfer, then yes, the local address would increment by 4.
Hope that gives you a more detailed response.