story · 2020年11月17日

海思手撕代码之_RR_arbiter

背景
优先级仲裁器的关键缺点是,在非常繁忙的系统中,对于较低优先级的请求在收到授权之前需要等待的时间没有限制。另一方面,循环仲裁器允许每个请求者按顺序进行一轮。维护一个指针寄存器,它指向下一个请求者。如果该请求程序是活动的,它将获得授权。如果没有,下一个活动请求者将获得授权。然后,该指针被移动到下一个请求者。通过这种方式,请求者等待的最大时间量受到请求者数量的限制。

Round Robin arbiter(循环优先级仲裁器),使用Round Robin的逻辑实现优先级。RR优先级的含义,包括两个层次:

1)基于次序的优先级 :小号输入口的优先级高于大号输入口;

2)最高优先级是循环的:与严格优先级不同的是,RR逻辑中,最高优先级并不总是0,而是根据上一次选择的输入口而变化的。上一次选择的输入口的下一个输入口具有最高的优先级。

不多说,直接上代码,代码写的比较粗暴,case逻辑可以采用多级else if实现优先级,不用像我一样只是看清转移,多级else if实现优先级如下所示:

image1.png

注释:

signal为请求信号,[3:0] signal 可以看作注释里的{D,C,B,A};

grant是优先级逻辑的结果,grant [1:0]=2’b00 A获得响应

image2.png
image3.png

image4.png

Testbench 如下:

image5.png

仿真图如下所示,实现如下跳转:

复位后 A获得响应,输入signal=4’b0001,根据转态转移,仍然是A获得响应;

输入signal=4’b0010,B获得响应;

输入signal=4’b0100,C获得响应;

输入signal=4’b1001,D获得响应;

输入signal=4’b0011, 回到A响应。

image6.png

作者:芯芯HU
原文链接:https://mp.weixin.qq.com/s/Hm...
授权转自数字芯片实验室公众号,请勿二次转载。



推荐阅读

更多数字IC设计技术干货等请关注数字芯片实验室专栏。
推荐阅读
关注数
12275
内容数
199
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息