cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Participant
Participant
321 Views
Registered: ‎07-19-2018

I want the burst length to be different in every Burst

Jump to solution

I just started learning to use AXI MM interface.I want the burst length to be different in every Burst,because my data size is not all the same.Is this possible?If so, what should I do?Or should I use AXI LITE?

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Scholar
Scholar
273 Views
Registered: ‎05-21-2015

@arrr,

Go for it!  That's part of the purpose of the protocol, to handle multiple burst lengths--hence why every read address or write address request comes with an AxLEN field--so you can adjust the length on a burst by burst basis.

I discuss in my blog a couple of requirements to doing so, however:

  1. Bursts can be no longer than 256 beats.  AxLEN is set to one less than the burst length.
  2. Bursts from/to constant addresses, such as when AxBURST==2'b00, can be no longer than 16 beats.  This also applies to WRAP bursts, where AxBURST=2'b10.  WRAP bursts also have further length requirements--see the spec for more details.  This similarly applies to busts where AxLOCK is set.
  3. Bursts are not allowed to cross 4kB boundaries.  (This requirement of the protocol is required to support the interconnect, and so not something you can waive.)
  4. For performance reasons with the rest of your system, you don't ever want to stall the bus.  Hence, don't issue a write request for less data than you have available to write, or a read request if you don't have the buffer space to place it into.

Hopefully that will get you started.  You can find more strategies in the blog article for how to handle these criteria, as well as examples of designs that do so.

Dan

View solution in original post

2 Replies
Highlighted
Scholar
Scholar
274 Views
Registered: ‎05-21-2015

@arrr,

Go for it!  That's part of the purpose of the protocol, to handle multiple burst lengths--hence why every read address or write address request comes with an AxLEN field--so you can adjust the length on a burst by burst basis.

I discuss in my blog a couple of requirements to doing so, however:

  1. Bursts can be no longer than 256 beats.  AxLEN is set to one less than the burst length.
  2. Bursts from/to constant addresses, such as when AxBURST==2'b00, can be no longer than 16 beats.  This also applies to WRAP bursts, where AxBURST=2'b10.  WRAP bursts also have further length requirements--see the spec for more details.  This similarly applies to busts where AxLOCK is set.
  3. Bursts are not allowed to cross 4kB boundaries.  (This requirement of the protocol is required to support the interconnect, and so not something you can waive.)
  4. For performance reasons with the rest of your system, you don't ever want to stall the bus.  Hence, don't issue a write request for less data than you have available to write, or a read request if you don't have the buffer space to place it into.

Hopefully that will get you started.  You can find more strategies in the blog article for how to handle these criteria, as well as examples of designs that do so.

Dan

View solution in original post

Highlighted
Participant
Participant
181 Views
Registered: ‎07-19-2018

Thank you very much for your help. I learned a lot from your blog!

0 Kudos