i have a question about AXI BUS.

Um,,,,

I send 32-bit data to slave.

0 to 3 bits are meaningless data.

If so, I should send the original strobe signal to 4'b1110.

If I send a strobe signal to 4'b1111, is this a violation of the specification? Or is it just the wrong transmission?

Parents
  • Each bit of WSTRB covers 8 bits of WDATA, so sending WSTRB=4'b1110 would signal that WDATA[7:0] is invalid. There wouldn't be any simple way of signalling WDATA[3:0] as being invalid.

    Sending WSTRB=4'b1111 is legal protocol as long as AWSIZE=3'b010 (32-bit transfer). But as with the WSTRB=4'b1110 case, it isn't going to correctly signal the valid data you want.

    Unfortunately the AXI protocol's smallest data quantity supported is an 8-bit byte (AWSIZE=3'b000), so you would need to encode additional logic in the slave's address map so that you could have addresses you write to that will be treated as signalling 4-bit transfers, but none of this would be standard AXI, so a slave implementation feature rather than anything covered by the protocol.  

Reply
  • Each bit of WSTRB covers 8 bits of WDATA, so sending WSTRB=4'b1110 would signal that WDATA[7:0] is invalid. There wouldn't be any simple way of signalling WDATA[3:0] as being invalid.

    Sending WSTRB=4'b1111 is legal protocol as long as AWSIZE=3'b010 (32-bit transfer). But as with the WSTRB=4'b1110 case, it isn't going to correctly signal the valid data you want.

    Unfortunately the AXI protocol's smallest data quantity supported is an 8-bit byte (AWSIZE=3'b000), so you would need to encode additional logic in the slave's address map so that you could have addresses you write to that will be treated as signalling 4-bit transfers, but none of this would be standard AXI, so a slave implementation feature rather than anything covered by the protocol.  

Children