= Solution
Use four request <bits> $r_0,r_1,r_2,r_3$ and four grant bits $g_0,g_1,g_2,g_3$. A high $r_i$ requests service for the coming allocation period, and a high $g_i$ identifies the requester granted the resource during the current period. At most one grant may be high. An all-zero grant vector means idle. The <synchronous sequential circuit> also has a <clock> and an initialization signal.
Requests are sampled at a <clock edge>; the resulting allocation appears during the following cycle. This fixes the <Moore machine> timing convention: current grants depend on the stored state, rather than combinationally on requests that can change within the cycle.
Back to article page