循环优先级仲裁~位屏蔽仲裁算法
参考了FPGA奇哥(下列视频中UP主)的讲解。
应该可以对多路读写DDR3进行操作,仅仲裁,不涉及DMA和Uibuf等。
2023年11月所写,暂未进行测试,日后补上。
第二天已完成测试,功能可行。
深入FPGA底层设计系列-循环优先级仲裁器算法:位屏蔽仲裁算法与Verilog代码编写_哔哩哔哩_bilibili
位屏蔽算法:
描述:对输入的多通道请求进行仲裁。
步骤:
(1)原码减去对应位数(优先级最高的位次)
(2)求得(1)中输出的反码
(3)通过(2)中输出与原码进行相与,留下优先级最高的请求。
举例:
【1】
四通道输入请求,ABCD。破解后为:4‘b1000,此时D通道优先级最高。
4'b1000-4’b1 =4'b0111 ~4'b0111 = 4'b1000
1000 & 1000 == 1000
仲裁完成,准许A通道请求。
【2】
四通道输入请求,ABCD。破解后为:4‘b1110,此时B通道优先级最高。
1110 - 0100 = 1010
~1010 = 0101
1110 & 0101 = 0100
仲裁完成,准许B通道请求。
Trick:
此外,为了仲裁A通道,需要对输入的请求进行拼接操作,实现向高位借位的过程。
每次完仲裁以后,都需要改变优先级最高的那一位的位次,完成循环。
自写代码参考:
module Fast_Aritbier_LoopPrior #(parameter In_Channel_Num = 8
)(input wire Aritbier_Clk ,input wire Aritbier_Rst_n ,input wire [In_Channel_Num-1:0] I_req ,input wire I_Busy ,output wire [In_Channel_Num-1:0] O_Aritbier_Req
);//Aritbier Valuereg Aritbier_Value ;//Aritbier Flagwire Aritbier_Begin ;reg Aritbier_Flag ;reg [3:0] Aritbier_Flag_delay ; //Busyreg I_Busy_0;reg I_Busy_1;//reqreg [(In_Channel_Num<<1)-1:0] I_req_Double ;reg [In_Channel_Num-1:0] r_O_Aritbier_Req;assign Aritbier_Begin = |I_req;assign O_Aritbier_Req = r_O_Aritbier_Req;assign I_req_Double = {I_req,I_req};always @(posedge Aritbier_Clk) begin{I_Busy_0, I_Busy_1} <= {I_Busy,I_Busy_0};end//Aritbier_Flagalways @(posedge Aritbier_Clk or negedge Aritbier_Rst_n) beginif(Aritbier_Rst_n == 'd0) beginAritbier_Flag <= 1'b0;end else if(Aritbier_Begin == 1'b1 && Aritbier_Flag == 1'b0) beginAritbier_Flag <= 1'b1;end else if(!I_Busy_0 && I_Busy_1) beginAritbier_Flag <= 1'b0;endendalways @(posedge Aritbier_Clk) beginAritbier_Flag_delay <= {Aritbier_Flag_delay[2:0],Aritbier_Flag};endalways @(posedge Aritbier_Clk or negedge Aritbier_Rst_n) beginif(Aritbier_Rst_n == 'd0) beginAritbier_Value <= {{(In_Channel_Num - 1){1'b0}},1'b1};end else if((!I_Busy_0 && I_Busy_1) && Aritbier_Value[In_Channel_Num - 1] == 1'b1) beginAritbier_Value <= {{(In_Channel_Num - 1){1'b0}},1'b1};end else if(!I_Busy_0 && I_Busy_1) beginAritbier_Value <= Aritbier_Value << 1;end else beginAritbier_Value <= Aritbier_Value;endendalways @(posedge Aritbier_Clk or negedge Aritbier_Rst_n) beginif(Aritbier_Rst_n == 'd0) beginr_O_Aritbier_Req <= {(In_Channel_Num){1'b0}};end else if(Aritbier_Flag == 1'b1 && Aritbier_Flag_delay[0] == 1'b0) beginr_O_Aritbier_Req <= ((~(I_req_Double - {(In_Channel_Num){1'b0},Aritbier_Value}))&I_req);endend
endmodule
相关文章:
循环优先级仲裁~位屏蔽仲裁算法
参考了FPGA奇哥(下列视频中UP主)的讲解。 应该可以对多路读写DDR3进行操作,仅仲裁,不涉及DMA和Uibuf等。 2023年11月所写,暂未进行测试,日后补上。 第二天已完成测试,功能可行。 深入FPGA底层…...
千年版本修改小技巧
千年门派创建后消失的原因 门派在游戏里创建后重启服务器消失其实就差一个单词name,只要将这个单词加在 guild文件夹里的 createguild.sdb文件里的第一行第一个就可以。可以先将createguild.sdb的内容清空 然后复制以下内容到 createguild.sdb 最后保存下就可以了n…...
教学过程中可以实施哪些考核评价方式?
教学过程中可以实施哪些考核评价方式? 实践技能与理论知识考试结合:旨在综合考察学生对理论知识的掌握程度及其在实践中的运用能力。 模拟仿真与现场考试结合:通过模拟真实场景或者实际操作环境,考察学生在实际情境中解决问题的能…...
MyBatis查询数据库(全是精髓)
1. 什么是MyBatis? 简单说,MyBatis就是一个完成程序与数据库交互的工具,也就是更简单的操作和读取数据库的工具。 2. 怎么学习Mybatis Mybatis学习只分为两部分: 配置MyBatis开发环境使用MyBatis模式和语法操作数据库 3. 第一…...
elementPlus+vue3引入icon图标
安装包管理,推荐使用 yarn npm包有时候会有包冲突,在项目的根目录下执行,在终端下 # Yarn $ yarn add element-plus/icons-vue在main.js或main.ts中进行全局注册,导入所有图标 import * as ElementPlusIconsVue from element-plu…...
Spring框架中的bean管理(XML和注解及属性的注入)
Spring框架中IOC就是将创建对象的权力反转给Spring框架,我们无需自己创建对象,直接在Spring框架的容器中获取即可。 bean中配置的就是需要让Spring管理的类。 XML的bean管理 先写个“HelloWorld”: <bean id"User" class"com.ffyc.…...
MySQL 存储过程提高数据库效率和可维护性
MySQL 存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 什么是MySQL存储过程? MySQL存储过程是一…...
JAXB的XmlElement注解
依赖 如果基于JAX-WS开发,可以在maven工程的pom.xml文件中增加如下依赖,会将依赖的JAXB库也下载下来: <dependency><groupId>jakarta.xml.ws</groupId><artifactId>jakarta.xml.ws-api</artifactId><vers…...
竞赛选题 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python
文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的驾…...
59 权限提升-Win溢出漏洞及ATSCPS提权
目录 知识点必备:windows权限认识(用户及用户组)0x01 普通权限0x02特殊权限 演示案例:基于WEB环境下的权限提升-阿里云靶机基于本地环境下的权限提升-系统溢出漏洞基于本地环境下的权限提升-AT&SC&PS命令 案例给到的思路点总结如下:涉及资源: 这个章节会讲到…...
【新闻稿】Solv 与 zCloak 联合开发跨境贸易场景下可编程数字凭证项目,获得新加坡、加纳两国央行支持...
关于昨天 Solv 携手 zCloak 与新加坡和加纳两个央行合作的 Project DESFT,很多朋友都发来恭喜和祝福,并希望了解详情。这个事我们秘密努力了半年多,终于有一个阶段性的成果。这里我转载中文版官宣新闻稿,欢迎大家关注。等我忙过这…...
requests库进行爬虫ip请求时遇到的错误解决方法
问题背景 在使用requests库进行HTTP请求时,用户遇到了一个AuthenticationRequired(身份验证必须)的错误。然而,当使用urllib.request.urlopen执行相同的操作时,却能够成功。同时,用户提供了自己的系统信息…...
目标检测—YOLO系列(二 ) 全面解读论文与复现代码YOLOv1 PyTorch
精读论文 前言 从这篇开始,我们将进入YOLO的学习。YOLO是目前比较流行的目标检测算法,速度快且结构简单,其他的目标检测算法如RCNN系列,以后有时间的话再介绍。 本文主要介绍的是YOLOV1,这是由以Joseph Redmon为首的…...
Redis维护缓存的方案选择
Redis中间件常常被用作缓存,而当使用了缓存的时候,缓存中数据的维护,往往是需要重点关注的,尤其是重点考虑的是数据一致性问题。以下是维护数据库缓存的一些常用方案。 1、先删除缓存,再更新数据库 导致数据不一致的…...
LeetCode236. Lowest Common Ancestor of a Binary Tree
文章目录 一、题目二、题解 一、题目 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest…...
基于Gin+Gorm框架搭建MVC模式的Go语言企业级后端系统
文/朱季谦 环境准备:安装Gin与Gorm 本文搭建准备环境:GinGormMySql。 Gin是Go语言的一套WEB框架,在学习一种陌生语言的陌生框架,最好的方式,就是用我们熟悉的思维去学。作为一名后端Java开发,在最初入门…...
【开源】基于Vue和SpringBoot的固始鹅块销售系统
项目编号: S 060 ,文末获取源码。 \color{red}{项目编号:S060,文末获取源码。} 项目编号:S060,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固…...
Windows11怎样投屏到电视上?
电视屏幕通常比电脑显示器更大,能够提供更逼真的图像和更震撼的音效,因此不少人也喜欢将电脑屏幕投屏到电视上,缓解一下低头看电脑屏幕的烦恼。 Windows11如何将屏幕投射到安卓电视? 你需要在电脑和电视分贝安装AirDroid Cast的电…...
ubuntu中用docker部署jenkins,并和码云实现自动化部署
1.部署jenkins docker network create jenkins docker run --name jenkins-docker --rm --detach \--privileged --network jenkins --network-alias docker \--env DOCKER_TLS_CERTDIR/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jen…...
for,while,do-while,死循环,嵌套循环,跳转关键字,随机数
1.for循环 public class ForDemo1 {public static void main(String[] args) {for (int i 0; i < 5; i) {System.out.println("HelloWorld");}System.out.println("--------------------------------------------");for (int i 1; i <10 ; i) {Sy…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
