【IC每日一题:IC常用模块--RR/handshake/gray2bin】

IC每日一题:IC常用模块--RR/handshake/gray2bin

  • 1 RR仲裁器
  • 2 异步握手信号处理
  • 3 格雷码和二进制相互转换

1 RR仲裁器

应用:在多个FIFO请求pop时存在仲裁策略,还有比如多master申请总线控制权的仲裁等这些应用场合;假如当前是最高优先级,下一次就是最低优先级;
RR_arbiter是公平性的仲裁器,基于顺序轮转优先级,最高优先级是循环的;


module rr_arbiter
(
input clk,
input rst_n,
input [3:0]req,
input req_en,
output[3:0]grant_arb
);
reg [3:0] state_c_arb;
reg [3:0] state_n_arb;
always @(posedge clk or negedge rst_n) beginif (!rst_n) beginstate_c_arb<=0;endelse if(req_en)beginstate_c_arb<=state_n_arb;endelse beginstate_c_arb<=0;end
endalways @(*) beginif (!rst_n) beginstate_n_arb<=0;endelse begincase(state_c_arb)4'b0001:begincase(1'b1)req[1]:state_n_arb<=4'b0010;req[2]:state_n_arb<=4'b0100;req[3]:state_n_arb<=4'b1000;req[0]:state_n_arb<=4'b0001;default:state_n_arb<=4'b0001;endcaseend4'b0010:begincase(1'b1)req[2]:state_n_arb<=4'b0100;req[3]:state_n_arb<=4'b1000;req[0]:state_n_arb<=4'b0001;req[1]:state_n_arb<=4'b0010;default:state_n_arb<=4'b0010;endcaseend4'b0100:begincase(1'b1)req[3]:state_n_arb<=4'b1000;req[0]:state_n_arb<=4'b0001;req[1]:state_n_arb<=4'b0010;req[2]:state_n_arb<=4'b0100;default:state_n_arb<=4'b0100;endcaseend4'b1000:begincase(1'b1)req[0]:state_n_arb<=4'b0001;req[1]:state_n_arb<=4'b0010;req[2]:state_n_arb<=4'b0100;req[3]:state_n_arb<=4'b1000;default:state_n_arb<=4'b1000;endcaseenddefault:state_n_arb<=4'b0001;endcaseend
end
assign 	grant_arb=state_n_arb;endmodule

2 异步握手信号处理

题目时序图如下:

在这里插入图片描述

//==========================================================
//--Author  : colonel
//--Date    : 11-14
//--Module  : asy_handshake_data
//--Function: use handshake to asy the data
//==========================================================
module asy_handshake_data(input tclk,input t_rstn,input rclk,input r_rstn,input [4:0] data_in,output [4:0] data_out
);//==========================< 信号 >=========================
wire ack;
wire req;
reg [4:0] data_reg;//==========================< instance >====================
tx u_tx(.tclk(tclk),.t_rstn(t_rstn),.i_ack(ack),.i_data_in(data_in),.o_req(req),.o_tx_data(data_reg)
);rx u_rx(.rclk(rclk),.r_rstn(r_rstn),.i_req(req),.i_data_in(data_reg),.o_ack(ack),.o_rx_data(data_out)
);endmodule//=============================tx_module=====================
module tx (input tclk,input t_rstn,input i_ack,input [4:0] i_data_in,output reg o_req,output reg[4:0] o_tx_data
);//==========================< 信号 >=========================
reg des_sync_src_ack_1;
reg des_sync_src_ack_2;always @(posedge tclk or negedge t_rstn) beginif (!t_rstn) begindes_sync_src_ack_1 <= 1'b0;des_sync_src_ack_2 <= 1'b0;end else begindes_sync_src_ack_1 <= i_ack;des_sync_src_ack_2 <= des_sync_src_ack_1;end
endwire des_sync_src_neg = !des_sync_src_ack_1 & des_sync_src_ack_2;always @(posedge tclk or negedge t_rstn) beginif (!t_rstn) begino_tx_data <= 'b0;end else if (des_sync_src_neg) begino_tx_data <= i_data_in;end
end//=============================
//--o_req
//=============================
always @(posedge tclk or negedge t_rstn) beginif (!t_rstn) begino_req <= 1'b0;end else if (des_sync_src_ack_2) begino_req <= 1'b0;end else begino_req <= 1'b1;end
endendmodule//==============================rx module===========
module rx(input rclk,input r_rstn,input i_req,input [4:0] i_data_in,output reg o_ack,output reg [4:0] o_rx_data
);
//==========================< 信号 >=========================
reg src_sync_des_req_1;
reg src_sync_des_req_2;always @(posedge rclk or r_rstn) beginif (!r_rstn) beginsrc_sync_des_req_1 <= 1'b0;src_sync_des_req_2 <= 1'b0;end else beginsrc_sync_des_req_1 <= i_req;src_sync_des_req_2 <= src_sync_des_req_1;end
endalways @(posedge rclk or negedge r_rstn) beginif (!r_rstn) begino_ack <= 1'b0;end else begino_ack <= src_sync_des_req_2;end
endalways @(posedge rclk or negedge r_rstn) beginif (!r_rstn) begino_rx_data <= 'b0;end else if (src_sync_des_req_2) begino_rx_data <= i_data_in;end else begino_rx_data <= o_rx_data;end
endendmodule

3 格雷码和二进制相互转换

二进制码转换为格雷码: 从最右边一位开始,依次将每一位与它左边的一位进行异或操作(XOR),得到的结果就是格雷码。
格雷码转换为二进制码:从最右边一位开始,依次将每一位与它左边的一位进行异或操作,但是需要注意的是,每次异或操作的结果需要与左边的原始位进行比较,如果不同,则将结果取反

module gray_trans#(parameter SIZE=8
)(input [SIZE-1] bin,output[SIZE-1] gray,
);assign gray=bin^{1'b0,bin[SIZE-1:1]};
endmodulemodule gray_trans#(parameter SIZE=8
)(input [SIZE-1:0] gray,output[SIZE-1]:0 bin
);assign bin[SIZE-1]=gray[SIZE-1];genvar i;generatefor (i=SIZE-2;i>0;i=i-1)begin:transassign bin[i]=gray[i]^bin[i+1];endendgenerate
endmodule

【REF】
1.https://blog.csdn.net/yueqiu693/article/details/125073144

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471363.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Visual Studio】使用VS调试(Debug)

确保在Debug模式下而不是Release 打断点(break point) 直接在有代码的行前单击&#xff0c;会出现红色的点(再次单击会取消)&#xff1b;或者光标停留在某行&#xff0c;按F9 这意味着程序当执行到这一行时会终止 在打完断点后点击”本地Windows调试器“或者按F5 往下翻会…

基于RK3568J多网口电力可信物联网关解决方案

前言 随着工业物联网的普及和功能越来越强大&#xff0c;边缘计算网关应运而生。 边缘计算有效降低了云端服务器的负载、大大降低了带宽的占用&#xff0c;同时也为本地化的区域自治提供了便利条件。 边缘计算网关&#xff0c;完美地发挥了“边”与“端” 结合优势&#xff0c…

⾃动化运维利器Ansible-基础

Ansible基础 一、工作原理二、快速入门2.1 测试所有资产的网络连通性2.2 发布文件到被管理节点(资产) 三、资产(被管理节点)3.1 静态资产3.1.1 自定义资产3.1.2 自定义资产的使用3.1.3 资产选择器 四、Ansible Ad-Hoc 命令4.1 模块类型4.1.1 command & shell 模块4.1.2 cop…

SpringBoot实战(三十一)集成iText5,实现RSA签署PDF

目录 一、什么是电子签章?1.1 定义1.2 电子签章的工作原理1.3 电子签章的优势二、准备工作:证书生成、印章生成2.1 证书生成2.2 印章生成三、Java代码实现 RSA 签署 PDF3.1 坐标签署3.2 关键字签署3.3 日期签署3.4 骑缝章签署3.5 文本域签署一、什么是电子签章? 1.1 定义 电…

vue面试题7|[2024-11-14]

问题1&#xff1a;什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库&#xff0c;比如我再添加一个router或者vuex&#xff0c;不断让项目壮大&#xff0c;就是渐进式框…

【力扣热题100】[Java版] 刷题笔记-169. 多数元素

题目&#xff1a;169. 多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 解题思路 该题目的核心点是&#xff1a;元素出现…

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式&#xff0c;常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

第三十一天|贪心算法| 56. 合并区间,738.单调递增的数字 , 968.监控二叉树

目录 56. 合并区间 方法1&#xff1a;fff 看方法2&#xff1a;fff优化版 方法3&#xff1a; 738.单调递增的数字 968.监控二叉树&#xff08;贪心二叉树&#xff09; 56. 合并区间 判断重叠区间问题&#xff0c;与452和435是一个套路 方法1&#xff1a;fff 看方法2&am…

火车车厢重排问题,C++详解

目录 实验题目 解题思路 1先看缓冲队列队头是否符合要求 2看队头元素是否符合要求 完整代码 运行结果 实验题目 火车车厢重排问题 实验说明&#xff1a;转轨站示意图如下&#xff1a; 火车车厢重排过程如下&#xff1a; 火车车厢重排算法伪代码如下&#xff1a; 解题思路…

算法学习第一弹——C++基础

早上好啊&#xff0c;大佬们。来看看咱们这回学点啥&#xff0c;在前不久刚出完C语言写的PTA中L1的题目&#xff0c;想必大家都不过瘾&#xff0c;感觉那些题都不过如此&#xff0c;所以&#xff0c;为了我们能更好的去处理更难的题目&#xff0c;小白兔决定奋发图强&#xff0…

LabVIEW大数据处理

在物联网、工业4.0和科学实验中&#xff0c;大数据处理需求逐年上升。LabVIEW作为一款图形化编程语言&#xff0c;凭借其强大的数据采集和分析能力&#xff0c;广泛应用于实时数据处理和控制系统中。然而&#xff0c;在面对大数据处理时&#xff0c;LabVIEW也存在一些注意事项。…

AUTOSAR_EXP_ARAComAPI的7章笔记(3)

☞返回总目录 相关总结&#xff1a;AutoSar AP简单多绑定总结 7.3 多绑定 如在 5.4.3 小节中简要讨论的&#xff0c;某个代理类 / 骨架类的不同实例之间的技术传输是不同的&#xff0c;多绑定描述了这种情况的解决方案。多种技术原因都可能导致这种情况出现&#xff1a; 代…

一键生成本地SSL证书:打造HTTPS安全环境

一键生成本地SSL证书&#xff1a;打造HTTPS安全环境 日光下的寒林没有一丝杂质&#xff0c;空气里的冰冷仿佛来自故乡遥远的北国&#xff0c;带着一些相思&#xff0c;还有细微几至不可辨认的骆驼的铃声。–《心美&#xff0c;一切皆美》 在本地开发环境中启用 HTTPS 一直是许多…

mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因

原因&#xff1a;在MySQL8.0之后的版本&#xff0c;只允许在数据库初始化时指定&#xff0c;之后不允许修改了 mysql 配置文件 my.cnf 增加 lower_case_table_names 1 服务启动不了 报错信息&#xff1a;Job for mysqld.service failed because the control process exited …

Zookeeper的安装与使用

一、简介 1.1、概念 ZooKeeper 是一个开源的分布式协调服务&#xff0c;主要用于解决分布式系统中的数据一致性问题。它提供了一种可靠的机制来管理和协调分布式系统的各个节点。ZooKeeper 的设计目标是简化分布式应用的开发&#xff0c;提供简单易用的接口和高性能、高稳定性…

Vue3.js - 一文看懂Vuex

1. 前言 Vuex 是 Vue.js 的官方状态管理库&#xff0c;用于在 Vue 应用中管理组件之间共享的状态。Vuex 适用于中大型应用&#xff0c;它将组件的共享状态集中管理&#xff0c;可以避免组件间传递 props 或事件的复杂性。 2. 核心概念 我们可以将Vuex想象为一个大型的Vue&…

图论-代码随想录刷题记录[JAVA]

文章目录 前言Floyd 算法dijkstra&#xff08;朴素版&#xff09;最小生成树之primkruskal算法 前言 新手小白记录第一次刷代码随想录 1.自用 抽取精简的解题思路 方便复盘 2.代码尽量多加注释 3.记录踩坑 4.边刷边记录&#xff0c;更有成就感&#xff01; 5.解题思路绝大部分来…

《Python网络安全项目实战》项目5 编写网站扫描程序

《Python网络安全项目实战》项目5 编写网站扫描程序 项目目标&#xff1a;任务5.1 暴力破解网站目录和文件位置任务描述任务分析任务实施相关知识任务评价 任务5.2 制作网页JPG爬虫任务分析任务实施相关知识任务评价任务拓展 WEB网站安全渗透测试过程中需要进行目录扫描和网站爬…

时序论文20|ICLR20 可解释时间序列预测N-BEATS

论文标题&#xff1a;N-BEATS N EURAL BASIS EXPANSION ANALYSIS FOR INTERPRETABLE TIME SERIES FORECASTING 论文链接&#xff1a;https://arxiv.org/pdf/1905.10437.pdf 前言 为什么时间序列可解释很重要&#xff1f;时间序列的可解释性是确保模型预测结果可靠、透明且易…

硬件工程师之电子元器件—二极管(4)之热量对二极管温度特性的影响

写在前面 本系列文章主要讲解二极管的相关知识,希望能帮助更多的同学认识和了解二极管。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 二极管 7. 热量对二极管温度特性的影响 半导体器件的电气特性通常对环境温度和工作结温敏感。 Si二极管的特性在工作范围内通常如下…