Round-Robin Arbiter(轮询调度仲裁器)

Round-Robin Arbiter思路
思路源于网络,细致计算下来发现,这真的是一个万能公式。

假设上一次的Arbiter结果为0000 0001,则下一次的结果应该为1~7位中的最低请求位。
比如:
在这里插入图片描述

以表格最后一行为例:请求A = 0000 0110,上一次的Round-Robin结果为 B = 0000 0001,需要求本次的Round-Robin结果C。

计算过程
解:
A = 0000 0110 , B = 0000 0001
AA = 0000 0110 0000 0110
AA& ~(AA-B)
=(0000 0110 0000 0110)& ~(0000 0110 0000 0110 - 0000 0001)
=(0000 0110 0000 0110)& ~(0000 0110 0000 0101)
=(0000 0110 0000 0110)& (1111 1001 1111 1010)
= 0000 0000 0000 0010
= DE
D = 0000 0000 , E = 0000 0010
C = D|E = 0000 0010
综上所述,本次Round-Robin Arbiter 的计算结果为C = 0000 0010,与预期结果一致,符合要求。

注意事项:

请求输入不可以为全零,否则通用计算公式无效。
请求输入不能包含上一次结果位。比如上一次Round-Robin 结果为0001,如果本次请求为0111,那么应先进行 0111 - 0001 = 0110计算,然后再将0110 当做请求套入公式中。

猜你喜欢

转载自blog.csdn.net/weixin_43727437/article/details/107159672