Well your jumping ahead - I've figured out the priority part and once it's in the queue I'm good.
For my design, priority is set by id number, since when looking at the dedicated request lines I will loop through the client lines. And yes I am using a queue to serve the requests. However, my questions starts before we even get to this stage.
Here I will break it down:
1) If I have a shared bus in which clients can req permission by putting their address on the line and setting the req bit high. How do I ensure multiple clients don't req at the same time? I could use a daisy chain, but I want to maintain fairness (first come first serve).
2) At this point I decided to use dedicated request lines. However the issue is, to handle the requests on one clock cycle I have to iterate through 'n' clients (in this case 256). I want to reduce that time. It would be great if rather than polling each of the 256 lines, I could have the hardware trigger when a line goes high so I don't have to loop through.
Kind of like this (PSEUDO CODE):
@(posedge of any of the 256 lines) begin
tell me which bit(s) went high
handle only those bits
end
3) If there is a better way to perform arbitration please make suggestions.