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相关推荐

  1. 【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  2. 仲裁器设计(1)固定优先级仲裁器

    仲裁器Arbiter是数字设计中非常常见的模块,应用也非常广泛.定义就是当有两个或两个以上的模块需要占用同一个资源的时候,我们需要由仲裁器arbiter来决定哪一个模块来占有这个资源.类比一下,老师上 ...

  3. Verilog轮询仲裁器设计——Round Robin Arbiter

    上篇讲了固定优先级仲裁器的设计,并给出了指定最高优先级的实现方法 Verilog固定优先级仲裁器--Fixed Priority Arbiter_weixin_42330305的博客-CSDN博客 轮 ...

  4. Verilog——一个简单仲裁器的实现

    Verilog--一个简单仲裁器的实现 仲裁器基本功能 仲裁器(arbiter) 的主要功能是,多个source源同时发出请求时,根据当前的优先级来判断应响应哪一个source. 仲裁器分为轮询优先级 ...

  5. arbiter circuit(以Verilog FSM实现仲裁器)

    有限状态机实现仲裁器 状态图如下: 题目要求: 这个FSM作为一个仲裁器电路,控制着三个请求设备对某种类型资源的访问.每个设备通过设置一个信号r[i]=1来提出对资源的请求,其中r[i]是r[1].r ...

  6. Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter

    前两篇讲了固定优先级仲裁器的设计.轮询仲裁器的设计 Verilog固定优先级仲裁器--Fixed Priority Arbiter_weixin_42330305的博客-CSDN博客 Verilog轮 ...

  7. 仲裁器设计(二)-- Round Robin Arbiter 轮询调度算法

    作者:李虹江 原文:https://mp.weixin.qq.com/s/r-nckE5nGz9mc5KqjPXKYg 本文授权转自IC加油站微信号,未经作者授权,严禁二次转载. 上一篇老李讲了固定优 ...

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

    Round Robin Arbiter 固定优先级的缺点是:每个模块的优先级自始至终是固定不变的,这在某种程度上来说是不公平的,Round Robin就是考虑到公平性的一种仲裁算法.其基本思路是,当一 ...

  9. 【数集项目之 MCDF】(三) 仲裁器 arbiter

      接下来进行仲裁器 arbiter的设计.根据设计文档,我们知道从输入总共有3个通道,而这三个通道很有可能都接收到数据可以进行发送.而arbiter就是综合优先级.是否有包可以发送等因素,选择一个通 ...

最新文章

  1. 新版CCNP中文版教材--ISCW
  2. jquery dataTable的学习
  3. <文本,场景图>解析实践
  4. 带排序动画的横向条形图
  5. shiro如何保证session不失效_请问在不加锁的情况下如何保证线程安全?
  6. Ajax 的乱码问题(2)
  7. Python字符串怎样实现contains效果
  8. Cocos2dx------touch事件
  9. java 获取当前时分_java实现获取当前年、月、日 、小时 、分钟、 秒、 毫秒
  10. 蓝桥杯 算法提高 一元三次方程求解
  11. php正则表达式替换ubb,自定义ubb代码,preg_replace()函数的一些代码
  12. Java基础语法——Java语言介绍
  13. 每个极客都应该知道的Linux技巧(区分开普通的Linux用户和超级极客)
  14. Baxter 机器人仿真软件安装及演示
  15. cs61A homework4
  16. 中级软件设计师知识点总结
  17. 挑战华为社招:2021Java高级面试题汇总解答
  18. android 远程控制 盒子,真正远程控制你的盒子(局域网和互联网)
  19. 获取了职业资格证书二级/技师
  20. 维峰电子深交所上市:市值64亿 李文化家族色彩浓厚

热门文章

  1. 草料二维码生成器怎么连接打通其他应用?
  2. (二)Redis——持久化详细解析
  3. Python:利用Pillow库创建字符画
  4. 887-三维形体投影面积
  5. 《悟透JavaScript》之 甘露模型二
  6. linux rcs 应用程序,Linux下的rcS文件的一些分析
  7. 水货iPad 2价格骤降数千元
  8. 做电商的必须知道的事,线上、线下、海外聚合支付第三方及背景牌照!
  9. 《uCOS51移植心得》---七年前之《快快乐乐跟我学51单片机操作系统和IP栈》
  10. 使用github-profile-readme-generator美化你的README