当前位置: 首页 > news >正文

循环优先级仲裁~位屏蔽仲裁算法

参考了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奇哥&#xff08;下列视频中UP主&#xff09;的讲解。 应该可以对多路读写DDR3进行操作&#xff0c;仅仲裁&#xff0c;不涉及DMA和Uibuf等。 2023年11月所写&#xff0c;暂未进行测试&#xff0c;日后补上。 第二天已完成测试&#xff0c;功能可行。 深入FPGA底层…...

千年版本修改小技巧

千年门派创建后消失的原因 门派在游戏里创建后重启服务器消失其实就差一个单词name&#xff0c;只要将这个单词加在 guild文件夹里的 createguild.sdb文件里的第一行第一个就可以。可以先将createguild.sdb的内容清空 然后复制以下内容到 createguild.sdb 最后保存下就可以了n…...

教学过程中可以实施哪些考核评价方式?

教学过程中可以实施哪些考核评价方式&#xff1f; 实践技能与理论知识考试结合&#xff1a;旨在综合考察学生对理论知识的掌握程度及其在实践中的运用能力。 模拟仿真与现场考试结合&#xff1a;通过模拟真实场景或者实际操作环境&#xff0c;考察学生在实际情境中解决问题的能…...

MyBatis查询数据库(全是精髓)

1. 什么是MyBatis&#xff1f; 简单说&#xff0c;MyBatis就是一个完成程序与数据库交互的工具&#xff0c;也就是更简单的操作和读取数据库的工具。 2. 怎么学习Mybatis Mybatis学习只分为两部分&#xff1a; 配置MyBatis开发环境使用MyBatis模式和语法操作数据库 3. 第一…...

elementPlus+vue3引入icon图标

安装包管理&#xff0c;推荐使用 yarn npm包有时候会有包冲突&#xff0c;在项目的根目录下执行&#xff0c;在终端下 # Yarn $ yarn add element-plus/icons-vue在main.js或main.ts中进行全局注册&#xff0c;导入所有图标 import * as ElementPlusIconsVue from element-plu…...

Spring框架中的bean管理(XML和注解及属性的注入)

Spring框架中IOC就是将创建对象的权力反转给Spring框架&#xff0c;我们无需自己创建对象&#xff0c;直接在Spring框架的容器中获取即可。 bean中配置的就是需要让Spring管理的类。 XML的bean管理 先写个“HelloWorld”: <bean id"User" class"com.ffyc.…...

MySQL 存储过程提高数据库效率和可维护性

MySQL 存储过程是一种强大的数据库功能&#xff0c;它允许你在数据库中存储和执行一组SQL语句&#xff0c;类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 什么是MySQL存储过程&#xff1f; MySQL存储过程是一…...

JAXB的XmlElement注解

依赖 如果基于JAX-WS开发&#xff0c;可以在maven工程的pom.xml文件中增加如下依赖&#xff0c;会将依赖的JAXB库也下载下来&#xff1a; <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 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的驾…...

59 权限提升-Win溢出漏洞及ATSCPS提权

目录 知识点必备&#xff1a;windows权限认识(用户及用户组)0x01 普通权限0x02特殊权限 演示案例:基于WEB环境下的权限提升-阿里云靶机基于本地环境下的权限提升-系统溢出漏洞基于本地环境下的权限提升-AT&SC&PS命令 案例给到的思路点总结如下:涉及资源: 这个章节会讲到…...

【新闻稿】Solv 与 zCloak 联合开发跨境贸易场景下可编程数字凭证项目,获得新加坡、加纳两国央行支持...

关于昨天 Solv 携手 zCloak 与新加坡和加纳两个央行合作的 Project DESFT&#xff0c;很多朋友都发来恭喜和祝福&#xff0c;并希望了解详情。这个事我们秘密努力了半年多&#xff0c;终于有一个阶段性的成果。这里我转载中文版官宣新闻稿&#xff0c;欢迎大家关注。等我忙过这…...

requests库进行爬虫ip请求时遇到的错误解决方法

问题背景 在使用requests库进行HTTP请求时&#xff0c;用户遇到了一个AuthenticationRequired&#xff08;身份验证必须&#xff09;的错误。然而&#xff0c;当使用urllib.request.urlopen执行相同的操作时&#xff0c;却能够成功。同时&#xff0c;用户提供了自己的系统信息…...

目标检测—YOLO系列(二 ) 全面解读论文与复现代码YOLOv1 PyTorch

精读论文 前言 从这篇开始&#xff0c;我们将进入YOLO的学习。YOLO是目前比较流行的目标检测算法&#xff0c;速度快且结构简单&#xff0c;其他的目标检测算法如RCNN系列&#xff0c;以后有时间的话再介绍。 本文主要介绍的是YOLOV1&#xff0c;这是由以Joseph Redmon为首的…...

Redis维护缓存的方案选择

Redis中间件常常被用作缓存&#xff0c;而当使用了缓存的时候&#xff0c;缓存中数据的维护&#xff0c;往往是需要重点关注的&#xff0c;尤其是重点考虑的是数据一致性问题。以下是维护数据库缓存的一些常用方案。 1、先删除缓存&#xff0c;再更新数据库 导致数据不一致的…...

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语言企业级后端系统

文/朱季谦 环境准备&#xff1a;安装Gin与Gorm 本文搭建准备环境&#xff1a;GinGormMySql。 Gin是Go语言的一套WEB框架&#xff0c;在学习一种陌生语言的陌生框架&#xff0c;最好的方式&#xff0c;就是用我们熟悉的思维去学。作为一名后端Java开发&#xff0c;在最初入门…...

【开源】基于Vue和SpringBoot的固始鹅块销售系统

项目编号&#xff1a; S 060 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S060&#xff0c;文末获取源码。} 项目编号&#xff1a;S060&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固…...

Windows11怎样投屏到电视上?

电视屏幕通常比电脑显示器更大&#xff0c;能够提供更逼真的图像和更震撼的音效&#xff0c;因此不少人也喜欢将电脑屏幕投屏到电视上&#xff0c;缓解一下低头看电脑屏幕的烦恼。 Windows11如何将屏幕投射到安卓电视&#xff1f; 你需要在电脑和电视分贝安装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…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...