Strict Round Robin Arbiter
Shared resources like memory controllers and system buses rely on fair arbitration to prevent starvation. The strict round-robin arbiter dynamically rotates priority based on the most recently serviced agent.
Design the combinational grant logic for a 3-requester strict round-robin arbiter. The circuit receives three request lines (req2, req1, req0) and the one-hot state of the previous grant (last2, last1, last0). It must output the new one-hot grant (gnt2, gnt1, gnt0) based on rotating priority.
Priority rules: * If last0 is 1: priority is req1 > req2 > req0. * If last1 is 1: priority is req2 > req0 > req1. * If last2 is 1, or all last bits are 0: priority is req0 > req1 > req2. * If no active requests exist, all grant outputs remain 0.
| last2 | last1 | last0 | req2 | req1 | req0 | gnt2 | gnt1 | gnt0 | |---------|---------|---------|--------|--------|--------|--------|--------|--------| | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
Constraints
- Implement purely combinational logic.
- Do not use sequential elements.
- Drive exactly one active grant bit when at least one request is active.
- Drive all grant bits to 0 when no requests are active.
Topics
Solve this problem
Place the gates, wire them up and watch the signals settle. Every submission runs on the same simulation engine that grades it.
This problem is part of Codiode Pro. The statement above is free to read.
The circuit builder and code editor need a desktop screen. On a phone, read the problem here and open it on a laptop to solve.