zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

【数字IC/FPGA】仲裁器进阶--Round Robin Arbiter

IC -- 数字 进阶 FPGA round 仲裁
2023-09-14 09:16:18 时间

Round Robin Arbiter

固定优先级的缺点是:每个模块的优先级自始至终是固定不变的,这在某种程度上来说是不公平的,Round Robin就是考虑到公平性的一种仲裁算法。其基本思路是,当一个requestor 得到了grant许可之后,它的优先级在接下来的仲裁中就变成了最低,也就是说每个requestor的优先级不是固定的,而是会在最高(获得了grant)之后变为最低,并且根据其他requestor的许可情况进行相应的调整。这样当有多个requestor的时候,grant可以依次给每个requestor,即使之前高优先级的requestor再次有新的request,也会等前面的requestor都grant之后再轮到它。
举个例子:第一次请求信号为1101,则按照优先级(初始时刻,低位最高),grant应该为0001,这次请求之后,最低位的优先级变为最低,整个优先级顺序调整为req[1]>req[2]>req[3]>req[0],因此当下一个请求0101来临时,grant应该为0100,而不是0001,同理,这次请求之后,优先级顺序调整为req[3]>req[0]>req[1]>req[2]。

仲裁器设计

方法一

我们首先定义一个base信号,它是一个onehot的信号,它为1的那一位表示这一位的优先级最高,然后其次是它的高位即左边的位,直到最高位后回到第0位绕回来,优先级依次降低,直到为1那一位右边的这位为最低,举一个例子,当