I am trying to find out what the arbitration looks like when there are several masters accessing a single slave on an Avalon MM bus. I found some old information online (AN184) that describes this for SOPC builder and that there are arbitration assignments that can be set for each master slave pair. However I do not find any information about how this works or where I would set arbitration assignments in platform designer.
The only reference I found in the current Avalon Interface Specification is about a lock signal that is optional that will keep bus access to one master as long as it is not done with a burst access.
My specific platform designer example looks like this:
- emif interface to a DDR4 memory that has one Avalon MM slave interface
- 3 Avalon-MM Pipeline bridges that each have a master and a slave port
- all 3 pipeline master ports are connected to the one emif Avalon-MM slave port
- all 3 pipeline slave ports are exported so that they can be connected to custom Avalon-MM masters outside of the platform designer module
My specific questions are:
- If all 3 masters try to access the bus, who will be granted access first?
- If the master is starting a burst access indicated by the burstcount signal of more than 1, does the master keep access until the burst is done before the next master gets access? From the Avalon Interface Specification it sounds like this would require a lock signal but neither the emif avalon slave interface nor any of the pipeline bridges contain such a signal.
- Once one master is done with it's access who gets access to the bus next?
- Are there any settings that control the arbitration, and if yes, where are those located?
Any pointers to where this is documented or existing training or examples are greatly appreciated.
For question 1,3,4, you can refer to
For question 2,
If the master is starting a burst access indicated by the burstcount signal of more than 1, does the master keep access until the burst is done before the next master gets access?
Yes, basically, they should be waitrequest/valid when u assert the burst. you can refer to the link above page 101.