This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AXI write strobes

Note: This was originally posted on 21st February 2007 at http://forums.arm.com

the AXI spec says:

10.1 About unaligned transfers
[...]
For any burst that is made up of data transfers wider than one byte, it is possible that the first bytes that have to be accessed do not align with the natural data width boundary. For example, a 32-bit (four-byte) data packet that starts at a byte address of 0x1002 is not aligned to a 32-bit boundary.


and then shows some examples of bursts with unaligned first bytes.

i also see references to disabling all strobes on any beat of a burst write.

but, what about unaligned ending bytes?  for example, a burst of 1kB starting at address 0x1 would have both an unaligned starting and ending byte.  is this allowed?

do the bytes of a burst have to be contiguous?  could the writes strobes have holes in them, for example, 0x5, 0xa, 0x9, etc.?

also, i was wondering what AXI masters ARM has that makes use of this feature?  do ARM processors ever generate unaligned bursts for instruction or data accesses, or is it only the DMA controller that issues unaligned bursts?  and in what scenario would a master disable all the strobes after starting a burst write (something like interrupting a dirty line castout?)?

thanks!
james
Parents
  • Note: This was originally posted on 26th March 2007 at http://forums.arm.com

    The important word here is CAN. The AWADDR and AWSIZE signals tell you the range of byte lanes that CAN be used, but the WSTRB bits would say which specific possible byte lanes ARE being used in each beat of the FIXED burst.


    thanks for all the responses.

    one more question, it seems that the strobes can start with a byte somewhere after the byte address specified in AWADDR.  can i assume that it would be a violation for the strobe to enable a byte before AWADDR?

    for example, if the address is 0x1, can i assume that a strobe of 0xff would be illegal on the first beat of a burst (assuming 64-bit bus)?



    Hi James,

    Yes.

    A start address of 0x1 means that you can use any of the byte lanes WSTRB[7:1] on the 64 bit data bus (assuming AWSIZE indicated a 64 bit transfer), but not WSTRB[0].

    Obviously if AWSIZE indicated a 32 bit transfer, even with a bus width of 64 bits we could only use WSTRB[3:1] for this transfer to AWADDR=0x1.

    Regards,

    Colin
Reply
  • Note: This was originally posted on 26th March 2007 at http://forums.arm.com

    The important word here is CAN. The AWADDR and AWSIZE signals tell you the range of byte lanes that CAN be used, but the WSTRB bits would say which specific possible byte lanes ARE being used in each beat of the FIXED burst.


    thanks for all the responses.

    one more question, it seems that the strobes can start with a byte somewhere after the byte address specified in AWADDR.  can i assume that it would be a violation for the strobe to enable a byte before AWADDR?

    for example, if the address is 0x1, can i assume that a strobe of 0xff would be illegal on the first beat of a burst (assuming 64-bit bus)?



    Hi James,

    Yes.

    A start address of 0x1 means that you can use any of the byte lanes WSTRB[7:1] on the 64 bit data bus (assuming AWSIZE indicated a 64 bit transfer), but not WSTRB[0].

    Obviously if AWSIZE indicated a 32 bit transfer, even with a bus width of 64 bits we could only use WSTRB[3:1] for this transfer to AWADDR=0x1.

    Regards,

    Colin
Children
No data