Verilog固定优先级仲裁器——Fixed Priority Arbiter
1.原理
仲裁器主要用于当多个source发出请求时,根据一定的规则,来选择响应哪一个source。
固定优先级,就是每个source的优先级是提前分配好的,是固定的。
比如说source有6个,编号分别为0、1、2、3、4、5,优先级依次减小。那么当3号发出请求时,就无视4号、5号,响应3号的请求。同样的,当0号发出请求时,就响应0号,无视1-5号是否发出了请求。
2.实现方法
我们用rtl实现一下,interface如下:
port name | bit width | I/O type | description |
req | 6 | input | 每bit代表每个source发出的请求 |
grant | 6 | output | 每bit代表给每个source的请求的响应 |
实现代码如下:
module fixed_arb
(
input [5:0] req,
output [5:0] grant
);
wire [5:0] req_sub_one;
assign req_sub_one = req - 1'b1;assign grant = req & (~req_sub_one);
endmodule
假设我们有2个source同时发出请求,req = 6'b001100
那么req_sub_one = 6'b001011 最低bit(优先级最高)取反
~req_sub_one = 6'110100 除最高优先级外,其余bit为0
grant = 6'b000100
以上是基于bit位最低的优先级最高,随bit位升高,优先级依次降低。若想要灵活配置最高优先级要如何实现?
module appoint_first_priority_arb
(
input [5:0] req,
input [5:0] first_priority,
output [5:0] grant
);
wire [6*2-1:0] double_req = {req,req};
wire [6*2-1:0] req_sub_first_priority = double_req - first_priority;
wire [6*2-1:0] double_grant = double_req & (~req_sub_first_priority);assign grant = double_grant[5:0] | double_grant[11:6];endmodule
first_priority为独热码,为1的位置表示该模块的优先级最高,其左侧为次高,向左优先级依次下降。当到最左侧bit时,转到最右侧bit,再依次向左优先级下降,直到bit为1的位置的相邻右边bit,其优先级最低。
举例:
first_priority = 6‘b000100;
那么优先级req[2]>req[3]>req[4]>req[5]>req[0]>req[1]
double_req是对req的扩展,因为first_priority的值有可能大于req。
固定优先级的种类有很多,可以根据需求进行编码。
仲裁器进阶:
Verilog轮询仲裁器设计——Round Robin Arbiter_weixin_42330305的博客-CSDN博客
Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter_weixin_42330305的博客-CSDN博客
verilog多因素影响仲裁器设计_weixin_42330305的博客-CSDN博客
Verilog固定优先级仲裁器——Fixed Priority Arbiter相关推荐
- 【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...
- 仲裁器设计(1)固定优先级仲裁器
仲裁器Arbiter是数字设计中非常常见的模块,应用也非常广泛.定义就是当有两个或两个以上的模块需要占用同一个资源的时候,我们需要由仲裁器arbiter来决定哪一个模块来占有这个资源.类比一下,老师上 ...
- Verilog轮询仲裁器设计——Round Robin Arbiter
上篇讲了固定优先级仲裁器的设计,并给出了指定最高优先级的实现方法 Verilog固定优先级仲裁器--Fixed Priority Arbiter_weixin_42330305的博客-CSDN博客 轮 ...
- Verilog——一个简单仲裁器的实现
Verilog--一个简单仲裁器的实现 仲裁器基本功能 仲裁器(arbiter) 的主要功能是,多个source源同时发出请求时,根据当前的优先级来判断应响应哪一个source. 仲裁器分为轮询优先级 ...
- arbiter circuit(以Verilog FSM实现仲裁器)
有限状态机实现仲裁器 状态图如下: 题目要求: 这个FSM作为一个仲裁器电路,控制着三个请求设备对某种类型资源的访问.每个设备通过设置一个信号r[i]=1来提出对资源的请求,其中r[i]是r[1].r ...
- Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter
前两篇讲了固定优先级仲裁器的设计.轮询仲裁器的设计 Verilog固定优先级仲裁器--Fixed Priority Arbiter_weixin_42330305的博客-CSDN博客 Verilog轮 ...
- 仲裁器设计(二)-- Round Robin Arbiter 轮询调度算法
作者:李虹江 原文:https://mp.weixin.qq.com/s/r-nckE5nGz9mc5KqjPXKYg 本文授权转自IC加油站微信号,未经作者授权,严禁二次转载. 上一篇老李讲了固定优 ...
- 【数字IC/FPGA】仲裁器进阶--Round Robin Arbiter
Round Robin Arbiter 固定优先级的缺点是:每个模块的优先级自始至终是固定不变的,这在某种程度上来说是不公平的,Round Robin就是考虑到公平性的一种仲裁算法.其基本思路是,当一 ...
- 【数集项目之 MCDF】(三) 仲裁器 arbiter
接下来进行仲裁器 arbiter的设计.根据设计文档,我们知道从输入总共有3个通道,而这三个通道很有可能都接收到数据可以进行发送.而arbiter就是综合优先级.是否有包可以发送等因素,选择一个通 ...
最新文章
- 新版CCNP中文版教材--ISCW
- jquery dataTable的学习
- <文本,场景图>解析实践
- 带排序动画的横向条形图
- shiro如何保证session不失效_请问在不加锁的情况下如何保证线程安全?
- Ajax 的乱码问题(2)
- Python字符串怎样实现contains效果
- Cocos2dx------touch事件
- java 获取当前时分_java实现获取当前年、月、日 、小时 、分钟、 秒、 毫秒
- 蓝桥杯 算法提高 一元三次方程求解
- php正则表达式替换ubb,自定义ubb代码,preg_replace()函数的一些代码
- Java基础语法——Java语言介绍
- 每个极客都应该知道的Linux技巧(区分开普通的Linux用户和超级极客)
- Baxter 机器人仿真软件安装及演示
- cs61A homework4
- 中级软件设计师知识点总结
- 挑战华为社招:2021Java高级面试题汇总解答
- android 远程控制 盒子,真正远程控制你的盒子(局域网和互联网)
- 获取了职业资格证书二级/技师
- 维峰电子深交所上市:市值64亿 李文化家族色彩浓厚