有限状态机实现仲裁器

状态图如下:

题目要求:

这个FSM作为一个仲裁器电路,控制着三个请求设备对某种类型资源的访问。每个设备通过设置一个信号r[i]=1来提出对资源的请求,其中r[i]是r[1]、r[2]或r[3]。每个r[i]是FSM的一个输入信号,代表三个设备中的一个。只要没有请求,FSM就会保持在状态A。当一个或多个请求发生时,FSM决定哪个设备收到使用资源的授权,并改变到一个状态,将该设备的g[i]信号设置为1。每个g[i]是FSM的一个输出。有一个优先级系统,即设备1比设备2的优先级高,设备3的优先级最低。因此,举例来说,当FSM处于状态A时,设备3只有在它是唯一提出请求的设备时才会收到授予。一旦设备i被FSM授予授予,只要它的请求r[i]=1,该设备就会继续收到授予。
编写完整的Verilog代码来表示这个FSM。

module top_module (input clk,input resetn,    // active-low synchronous resetinput [3:1] r,   // requestoutput [3:1] g   // grant
); reg [2:0]state,next_state ;
parameter A=3'b000,B=3'b001,C=3'b010,D=3'b100;//FF
always@(posedge clk)beginif(!resetn)state<=A;elsestate<=next_state;
end//Transitionalways @(*) begincase (state)A:  casez(r)  //优先级判断,也可以用if-else3'b000:next_state=A;3'bzz1:next_state=B;3'bz1z:next_state=C;3'b1zz:next_state=D;default:next_state=A;endcaseB:  //被授权后只用考虑r1变化next_state=r[1]?B:A;C:next_state=r[2]?C:A;D:next_state=r[3]?D:A;default:next_state=A;endcase
end//output
always@(*)beging=3'b000; //default_statecase(state)B:g[1]=1'b1;C:g[2]=1'b1;D:g[3]=1'b1;
endcase
end
endmodule

if-else判断A状态的优先级:

       A:  if(r == 3'b000)next_state = A;else if(r[1]) next_state = B;else if(r[2:1] == 2'b10) next_state = C;else if(r == 3'b100) next_state = D;elsenext_state=A;

arbiter circuit(以Verilog FSM实现仲裁器)相关推荐

  1. Verilog固定优先级仲裁器——Fixed Priority Arbiter

    1.原理 仲裁器主要用于当多个source发出请求时,根据一定的规则,来选择响应哪一个source. 固定优先级,就是每个source的优先级是提前分配好的,是固定的. 比如说source有6个,编号 ...

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

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

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

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

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

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

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

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

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

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

  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. round robin arbiter 轮询仲裁器设计

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

最新文章

  1. sqlserver字段类型详解
  2. 安卓程序添加指纹解锁功能
  3. Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 04
  4. .net hbase client--终于浮出水面的轮子
  5. MyBatis 二级缓存
  6. 【重磅推出】推荐系统系列教程之九:解密“看了又看”和“买了又买”(Item-Based)...
  7. NUC1014 排版题.输出排列成菱形的字母【打印图案】
  8. 2020-11-30 OpenCV人工智能图像处理学习笔记 第4章 计算机视觉加强之图像特效
  9. java创建实体 内存_加载Java实体时内存不足
  10. 面试必掌握之计算机网络
  11. 教务管理系统数据字典mysql_数据库课程设计报告--教务管理系统设计
  12. 计算机打印机墨水更换方法,怎么看打印机有没有墨?老司机教你查看打印机墨水量方法 (全文)...
  13. 「POJ2826」An Easy Problem?!【计算几何】
  14. Heaven of Imaginary(PKUSC2018)
  15. 嵌入式实验考试后的辛酸苦楚
  16. 堡垒主机在信息安全等级保护制度中的探究与应用
  17. Go Flag包使用及解析
  18. 【业务理解】指标异动分析
  19. 我的软设、系分考试经验(书)
  20. 基于java jsp的大学教室管理系统

热门文章

  1. 【Leetcode】883. 三维形体投影面积
  2. TCP/IP详解:TCP——超时和重传
  3. iOS开发,一个使用AVPlayer实现的播放在线音乐的Demo
  4. 如何在Typora中以可视化或源码的方式使用markdown
  5. 线下支付场景的争夺成为巨头争战的主题
  6. 解决Ubuntu16.04软件商店无法加载
  7. blog微服务架构代码_DDD+微服务大型案例:Uber如何从复杂的RPC微服务转向面向业务领域的微服务架构DOMA? -优步工程博客...
  8. 安全集群访问非安全集群问题记录
  9. 奥比中光深度相机使用笔记一
  10. 一文详解IT运维大会精华 网络安全等保2.0时代掌控万物互联