Weighted round robin arbiter allows each requestor a share of the common resource which is relative to its predefined weight. For example, if two requestors have the weight of 3 and 7 respectively, then over a long period of time, assuming both requestors always have their request asserted, the first one will get 30% of the grants and the second will get 70% of the total grants.

A weighted round robin arbiter design with a total of 3 requests, i.e., req[2:0], is shown in the Verilog code below.

The design consists of 2 parts: a credit mask logic and a normal round robin arbiter. The credit mask logic generates the masked version of requests and feeds them into round robin arbiter. The round robin arbiter produces the final grant.

The credit mask logic keeps one credit counter for each request, indicating number of credits used by the request so far, and the initial values of the credit counters are all 0. The corresponding credit counter increments when the arbiter grants the request, and the request will be masked out if it reaches its threshold. All credit counters will be reset to 0 when none of the asserted requests have credits, and the next cycle starts.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.