数字IC手撕代码--联发科(总线访问仲裁)
题目描述
当A、B两组的信号请求访问某个模块时,为了保证正确的访问,需要对这些信号进行仲裁。请用Verilog实现一个仲裁器,对两组请求信号进行仲后,要求:
协议如图所示,请求方发送req(request)信号1表示有请求给仲裁器,仲裁器响应grant信号为1表示请求成功:
通过参数定义在冲突情形下,响应A/B的比例
(举例,一段时间内,有若干次A请求和若干次B请求,其中A&B发生冲突的有N次,这N次中先响应A 3次,后响应B 1次,循环反复。举例中的3和1可配置。);
添加必要的注释,增加代码可读性。
解题思路
根据题目描述,很容易想到模块arbiter的端口应该如下:
module arbiter (input wire clk, // 时钟信号input wire rst, // 复位信号input wire reqA, // A组请求信号input wire reqB, // B组请求信号output reg grantA, // A组响应信号output reg grantB // B组响应信号
);
时钟、复位信号。两个请求信号和两个相应响应信号。只有在冲突时,AB冲突响应比为3:1。其他情况下,正常响应。所以可以写一个计数器,仅在冲突时加1。计数器=0,1,2时响应A,计数器=3时响应B,于此同时将计数器置0。
对于仲裁部分,可以将总线的请求信号reqA和reqB拼接成一个2bit信号,这样使用case语句就能避免多级if-else嵌套导致的长组合逻辑链。
在case语句中,把{reqA, reqB}的所有可能2'b00,2'b01,2'b10,2'b11。全都规划到就行,当{reqA, reqB}==2'b11时,判断冲突计数器范围,落在[0,A_ratio-1],则冲突时A获得总线;若counter落在[A_ratio,A_ratio+B_ratio-2]时,冲突时B获得总线。这样模块满足题目要求可自定义冲突分配比例。
代码
module arbiter #(parameter [7:0] A_ratio = 3 , // A grant ratio parameter [7:0] B_ratio = 1 // B grant ratio
)(input wire clk , // 时钟信号input wire rstn , // 复位信号input wire reqA , // A组请求信号input wire reqB , // B组请求信号output grantA , // A组响应信号output grantB // B组响应信号
);// 定义计数器和比例参数
reg [7:0] counter = 0; // belongs to [0, A_ratio + B_ratio - 1]
reg grantA_reg,grantB_reg;assign grantA = grantA_reg;
assign grantB = grantB_reg;always @(posedge clk) beginif (!rstn) begingrantA_reg <= 0;grantB_reg <= 0;end else begincase({reqA,reqB})2'b00:begingrantA_reg <= 1'b0;grantB_reg <= 1'b0;end2'b01:begingrantA_reg <= 1'b0;grantB_reg <= 1'b1;end2'b10:begingrantA_reg <= 1'b1;grantB_reg <= 1'b0;enddefault:beginif(counter <= (A_ratio - 1) )begingrantA_reg <= 1'b1;grantB_reg <= 1'b0;endelse begingrantA_reg <= 1'b0;grantB_reg <= 1'b1;endendendcaseend
endalways @(posedge clk)beginif(!rstn)begincounter <= 8'd0;endif( (reqA&&reqB) && (counter <= (A_ratio + B_ratio - 2)) )begincounter <= counter + 1'b1;endelse counter <= 8'd0;
endendmodule
tb
module arbiter_tb;// 定义时钟和复位信号
reg clk;
reg rstn;// 定义A组和B组请求信号
reg reqA;
reg reqB;// 定义A组和B组响应信号
wire grantA;
wire grantB;// 实例化被测试的模块
arbiter dut (.clk(clk),.rstn(rstn),.reqA(reqA),.reqB(reqB),.grantA(grantA),.grantB(grantB)
);// 时钟信号发生器
always #5 clk = ~clk;// 测试用例1:A组优先
initial begin// 初始化信号rstn = 0;clk = 0;reqA = 0;reqB = 0;// 复位#15 rstn = 1;#1 // 发送A组请求#10 reqA = 1;// 发送B组请求#10 reqA = 0;reqB = 1;// 发送A and B组请求 eight timesrepeat(8) begin#10 reqA = 1;reqB = 1;endrepeat(2) begin#10 reqA = 1;reqB = 0;endrepeat(2) begin#10 reqA = 0;reqB = 1;end#10 reqA = 0;reqB = 0;// 停止测试#100 $finish;
endinitial begin$fsdbDumpfile("arbiter.fsdb");$fsdbDumpvars(0);
endendmodule
波形图
在tb里,先分别让A、B各请求总线一次,然后让他们出现请求冲突8次,最后再让A、B分别请求总线两次,从图中可以看到,在A、B请求冲突的时候,A_grant、B_grant拿到总线的比例是3:1,我们在module定义开头给了两个parameter,定义了A_grant、B_grant拿到总线的比例A_ratio和B_ratio,如果要修改模块代码,修改module传入的parameter的值即可。
更多手撕代码题可以前往 数字IC手撕代码--题库
相关文章:
数字IC手撕代码--联发科(总线访问仲裁)
题目描述当A、B两组的信号请求访问某个模块时,为了保证正确的访问,需要对这些信号进行仲裁。请用Verilog实现一个仲裁器,对两组请求信号进行仲后,要求:协议如图所示,请求方发送req(request&…...
白盒测试复习重点
白盒测试白盒测试之逻辑覆盖法逻辑覆盖用例设计方法1.语句覆盖2.判定覆盖(分支覆盖)3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖白盒测试之基本路径测试法基本路径测试方法的步骤1.根据程序流程图画控制流图2.计算圈复杂度3.导出测试用例4.准备测试用例5.例题白盒测试总…...
学习C++这几个网站足矣
文章目录cppreferencecplusplusquick-bench[C 之父的网站](https://www.stroustrup.com/bs_faq.html)C提案[Cpp Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)[C Super-FAQ](https://isocpp.org/faq)[learn c](https://www.learncpp.com/)[A…...
第十四届蓝桥杯模拟赛(第三期)——C语言版
1.找最小数 问题描述: 请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。 请将这个数的十进制形式作为答案提交。 #include <stdio.h> int main(…...
Flutter Button 实例
大家好,我是 17。 在上篇文章 使用 Flutter Button 介绍了如何修改 button 的样式,本文来具体实践一下。 本文列举一些常用的 button 效果,以便在用到的时候方便使用。因为 ElevatedButton 最常用,所以大多以 ElevatedButton 举…...
好玩的docker项目,盒子刷的海思nas,挂载外接硬盘。qb种子
玩法思路(5条消息) 群晖qb下载,tr辅种_屿兮的博客-CSDN博客_群晖辅种qbittorrent简介及设置_哔哩哔哩_bilibiliqb下载器下载Transmission最好用的BT(PT)下载神器/超简单上手教你在NAS轻松部署/告别简陋三步让你升级全中文最新Web界面(BT下载/PT下载/NAS/…...
RabbitMQ的使用
1.初识MQ1.1.同步和异步通讯微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不…...
Selenium如何隐藏浏览器页面?
Selenium隐藏浏览器页面 背景 在工作,学习中,我们常常会使用selenium来获取网页上的数据,编完完整程序之后,实现真正意义上的自动化获取,此时我们会发现在运行中往往会弹出浏览器页面,在调试过程中&…...
基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离
基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离 本文想基于Ant DesignPro Vue构建的前端SpringBoot实现的后端接口服务,实现前后端分离开发和独立运行,业务场景是登录认证,认证成功后返回该用户相应权限范围内可见的…...
Acwing---843. n-皇后问题
n-皇后问题1.题目2.基本思想3.代码实现1.题目 n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n,请你输出所有的满足条件的棋子摆法。 …...
彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
作为C/C开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C语言的特性引起的。C/C语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误(segment fa…...
自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测
自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测 目前目标检测算法有很多,流行的就有faster-rnn和yolov,本文使用了几年前的yolov3框架进行训练,效果还是很好,当然也可以使用更高版本的Yolov进行实战。本代码使…...
flink兼容性验证
flink介绍:https://blog.csdn.net/weixin_43563705/article/details/107604693 一、安装启动 安装flink及其依赖 yum install java-1.8.0-openjdk curl tar mkdir -p /usr/local/flink wget https://mirrors.aliyun.com/apache/flink/flink-1.16.1/flink-1.16.1-bi…...
智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力
我国制造业正处于产业升级的关键时期,基于数据进行生产策略制定与管理是大势所趋,而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模,真实复现设备设施外观、结构、运转…...
c++中基本类型详细解释外加基本运算规则
👀👀#c中包括算数类型和空类型。 类型含义wchat_t宽字符bool布尔类型char字符chat16_tunicode字符chat_32unicode字符short短整型int整形long长整型longlong长整型float单精度浮点型double双精度浮点型longdouble扩展精度浮点型 👀…...
扬帆优配“机器人+”方案加码产业发展,这些股有望高增长
“机器人”发明新需求,2022年中国机器人市场规模约为174亿美元。 美国时刻3月1日,特斯拉在得克萨斯州超级工厂举办投资者日活动,展示了人形机器人Optimus的视频,更夸大的是,视频中的机器人好像在制作另一个机器人&…...
推送投票制作微信推送里投票制作教程在线投票活动制作
近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…...
【架构师】跟我一起学架构——微服务分层监控
博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…...
Linux:https静态网站搭建案例
目录介绍httpshttps通信过程例介绍https 整个实验是在http实验基础上进行的 因为http协议在传输的时候采用的是明文传输,有安全隐患,所以出现了https(安全套接字层超文本传输协议) HTTPS并不是一个新协议, 而是HTTP…...
前端css整理
如何水平垂直居中一个盒子? 1.已知高度:子盒子设置 display: inline-block; 父盒子设置 line-height 等于高度实现垂直居中;使用 text-align:center实现水平居中 2.父盒子 display:flex; align-items:center;justify-content:center; 3.定位&…...
混凝土搅拌站远程监控解决方案
一、项目背景 随着大规模的基础设施建设,对混凝土搅拌设备的需求量日益增加,对其技术指标的要求也日益提高,其技术性能将直接关系到工程的质量和使用寿命。而混凝土生产的质量是在生产过程中形成的,而非最终强度的检测。混凝土生…...
Spark SQL 学习总结
文章目录(一)Spark SQL(二)SParkSession(三)DataFrame常见算子操作(四)DataFrame的sql操作(五)RDD转换为DataFrame(1)反射方式&#x…...
深度学习 - 37.TF x Keras Deep Cross Network DCN 实现
目录 一.引言 二.模型简介 1.Embedding and stacking layer 2.Cross Network 2.1 模型架构分析 2.2 计算逻辑...
Ubuntu中使用Synaptic进行包管理
Synaptic概况 Synaptic 是一个轻量级的 apt 软件包管理器系统的 GUI 前端,所有你可以在终端中使用 apt-get 命令来做的事,都可以通过 Synaptic 来实现。优势 图形化安装界面,同时可以安装配置相关依赖,避免由于依赖问题导致的各类…...
python之selenium库安装及用法(定位法、获取文本、文本框输入、鼠标点击、滑动滚动条)
一、selenium库安装 pip install selenium二、浏览器驱动安装 谷歌浏览器驱动下载地址:https://chromedriver.storage.googleapis.com/index.html 根据你电脑的谷歌浏览器版本,下载相应的就行。我下载的是110.0.5481.XX中的chromedriver_win32.zip 下载…...
FPGA纯verilog实现图像视频旋转 串口指令控制旋转角度 提供工程源码和技术支持
目录1、前言2、理论基础3、设计思路和框架图像输入和采集图像旋转处理图像缓存图像输出4、vivado工程详解5、上板调试验证6、福利:工程代码的获取1、前言 图像旋转是一种常用的图像处理技术,其基本原理就是指图像以某一点为中心旋转一定的角度ÿ…...
EventGraph:Event Extraction as Semantic Graph Parsing 论文解读
EventGraph: Event Extraction as Semantic Graph Parsing 论文:2022.case-1.2.pdf (aclanthology.org) 代码:huiling-y/EventGraph (github.com) 期刊/会议:CASE 2022 摘要 事件抽取涉及到事件触发词和相应事件论元的检测和抽取。现有系…...
【蓝桥杯集训·每日一题】AcWing 3696. 构造有向无环图
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴拓扑排序一、题目 1、原题链接 3696. 构造有向无环图 2、题目描述 给定一个由 n 个点和 m 条边构成的图。 不保证给定的图是连通的。 图中的一部分边的方向已经确定&#…...
国内vs国外:外贸建站该如何选择?
外贸建站找国内还是国外? 答案是:国内。 随着互联网的发展,越来越多的企业开始意识到在网络上进行商业活动的重要性。 其中,建立一个专业的外贸网站是企业在国际市场上拓展业务的关键。 然而,对于选择国内还是国外…...
HLS协议有哪些特别优势
阿酷TONY / 2023-3-3 / 长沙 可以实现码率的动态自适应,清晰度动态成为可能;HLS是基于HTTP 协议的,更易于做各平台的适配与兼容;多终端跨平台的支持性: PC端, Android端, IOS 平台,微信之类的都支持&am…...
代理注册公司需要什么条件/搜索引擎优化seo优惠
把info类下面所有的a标签链接后天加"#article"。 jQuery(document).ready(function($){ $(.info a).each(function(){ let Ahref $(this).attr("href") "#article"; $(this).attr("href",Ahref); });});转载…...
做网站 报价/百度推广首页
关于绘图颜色1R语言绘图之 颜色 grDevice 包- colorRamp() 和 colorRampPalette()- 颜色名字可使用 colors() 获取 RColorBrewer 包- 三类调色板:sequential:从一个极端渐变到另一个极端,适合用于呈现顺序数据2. diverging:两端鲜…...
做网站的专业叫啥/关键词优化seo排名
一、约束条件约束类型关键字默认约束default 值非空约束not null唯一约束unique key自增长约束auto_increment主键约束primary key外键约束foreign key1.1 默认约束(default 默认值)初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予…...
网站名称写什么/网站流量统计分析的维度包括
问题:求含有n个点的连通图的个数。 解: 考虑DP,$f(n)$表示n个点,每个点都和点1相连,且n个点互相连通的图的个数。 (蓝字非常重要,这个条件有效地避免了重复计算) $g(n)$表示n个点&am…...
购物网站前端浮动特效怎么做/百度快速收录教程
本文将要为您介绍的是深入理解perf报告中的swapper进程,教程操作步骤:一、前言1、在perf监控进程的系统调用时,会出现大量swapper进程2、官方描述该进程是当CPU上没有其他任务运行时,就会执行swapper。换句话说swapper意味着CPU啥事也没干,跑…...
天津做网站比较大的公司/公众号怎么推广和引流
郑骁庆老师一直从事数据集成和人工智能方面的教学和科研工作,对算法理论与技术有着深入的研究,承担国家自然科学基金和国家科技支撑项目,任教期间赴美国麻省理工学院信息技术组从事研究工作,并不断将科学研究和国际学术交流的成果…...