verilog实例-仲裁(Arbiter)

2023-10-26

1、仲裁

当多个源和用户需要共享同一资源时,需要某种仲裁形式,使得所有用户基于一定的规则或算法得到获取或访问共享资源的机会。

2、仲裁方案

  • 严格优先级轮询
    • 根据优先级的差异,用户访问共享资源的机会也不同。
    • 低优先级的用户可能时钟无法得到资源。
  • 公平轮询
    • 公平的对待所有请求。
    • 所有用户获得均等的访问机会,不会有用户时钟无法得到资源。
  • 权重轮询
    • 兼顾了公平性和差异性。
    • 在一个轮询周期内,不同权重的用户会得到不同的访问次数。
    • 在一个轮询周期内,不同权重的用户会得到不同的访问时间片。
  • 混合优先级(高优先级组和低优先级组)
    • 组件按照优先级轮询,组内采用公平轮询。

3、严格优先级轮询

  • 在严格优先级轮询方案中,发出请求的用户有固定的优先级。
  • 我们假设有8个用户(agent),agent0具有最高优先级,agent7具有最低优先级。
  • 在本方案中,优先级高的用户只要保持请求,就会持续得到授权。随着优先级不断降低,用户得到授权的机会也随之下降。该方案可以根据用户的重要新提供不同的服务,但低优先级的用户可能长时间得不到服务。此时可以通过对高优先级用户增加一些请求约束的方法来避免低优先级用户被“饿死”。

(1)design detil

(2)time

在这里插入图片描述

(3)code

4、公平轮询

  • 在公平轮询方案中,所有用户优先级相等,每个用户依次获得授权。
  • 一开始,选择用户的顺序可以是任意的,但在一个轮询周期内,所有发出请求的用户都有公平得到授权的机会。以具有4个用户的总线为例,它们全部将请求信号置为有效(高电平)。request0将首先被授权,紧跟着是request1、request2,最后是request.3。当循环完成后,request0才会被重新授权。
  • 仲裁器每次仲裁时,依次查看每个用户的请求信号是否有效,如果一个用户的请求无效,那么将按序查看下一个用户。仲裁器会记住上一次被授权的用户,当该用户的操作完成后,仲裁器会按序轮询其他用户是否有请求。
  • 一旦某个用户得到了授权,它可以长时间使用总线或占用资源,直到当前数据包传送结束或一个访问过程结束后,仲裁器才会授权其他用户进行操作。这种方案的一个特点是仲裁器没有对用户获得授权后使用总线或访问资源的时间进行约束。该方案适用于基于数据包的协议,例如,以太网交换或PCI交换机,当多个入口的包希望从一个端口输出时,可以采用这种机制。
  • 此外还有一种机制,每个用户获得授权后,可以占用资源的时间片长度是受约束的,每个用户可以占用资源的时间不能超过规定的长度。如果一个用户在所分配的时间结束之前完成了操作,仲裁器将轮询后续的用户。如果在分配的时间内用户没有完成操作,则仲裁器收回授权并轮询后续用户。此方案适用于突发操作,每次处理一个突发(一个数据块),此时没有数据包的概念。传统的PCI总线或AMBA、AHB总线采用的就是这种方案。在
    PC中,仲裁器会给当前获得授权的主机留出一个或多个时钟周期的时间供主机保存当前操作信息,下一次再获得授权时,该主机可以接着传输数据。

(1)design detil

(2)time

在这里插入图片描述

(3)code

5、公平轮询(仲裁w/o死周期)

  • 在前面公平轮询仲裁器的Verilog RTL代码中,每个用户有三个信号:request(请求)、grant(授权)和end access(结束访问)。为了满足定时要求,我们希望grant为寄存器输出的,同时用户的输出数据也是寄存器输出而不是通过组合逻辑输出的。在总线使用时,我们能观察到总线上存在不能进行数据传输的死周期。当传输的数据包较长或每个突发比较长时,其对传输效率影响不大。然而,当数据包很短时,死周期会影响到总线的使用效率。
  • 如图所示为没有间隔的公平轮询仲裁波形。下面给出了一些方法,用于减少甚至消除死周期。

(1)design detil

  • 当grant信号有效时,该用户的第一个数据已经准备好并且有效输出。原来的方案中,在用户的grant有效后,它在下一个周期输出数据,现在改为当grant采样为高时,在同一个周期就开始输出数据。此时需要用户提前从内部电路中读出第一个数据。采用这种方案时,仲裁器的设计不变,用户部分需要进行修改。
  • 第二种方法是增加额外的信号start_access,它和end_access一起使用。一个用户获得总线使用权并开始操作后,仲裁器通过将start_accees置为有效表示开始新的仲裁过程而不是等待end_access信号变高来开始新的仲裁过程,这样就减少了转换期间的死周期。当下一个用户被授权时,当前用户仍在使用总线,此时新用户不能立即使用总线。仲裁器在当前用户完成操作时会给出end_access_outf信号,新的授权用户此后就可以开始操作了。仲裁器在没有用户使用公共资源时,将resource_idle置为1。当resource_idle为1时,获得授权的用户不需要查看end_access_out信号就可以开始数据操作。

(2)time

加粗样式

(2)code

6、权重轮询(WRR)

  • 带权重的轮询(Weighted Round Robin,WRR)方案与常规的轮询方案类似,所不同的是不同的用户得到许可的机会存在差异,也就是说,不同的用户权重不同,权重高的用户得到许可的机会更多。
  • 权重的分配存在多种方式,这里介绍两种。
    • 第一种方法是为每个用户分配一个变量,该变量决定了在一个轮询周期内该用户能够得到许可(被授权)的次数。该变量是可以通过软件编程进行修改的,因此其轮询权重也可以相应调整。

      • 例如,有三个用户,agent0权重为3、agentl权重为2、agent2权重为1。在一个轮询周期中,agent0最大可以得到3次许可,agent1可以得到2次许可,agent22可以得到1次许可。在一个轮询周期开始时,变量N_agnt0、N_ agnt1和Nagnt_2分别被预置为3、2和1。每次轮询后对应的变量值减1,一个轮询周期结束后,这些变量会被重新设置为预置的初值。

      • 如果所有的用户同时请求,仲裁器将按照下面两种方式给予许可:

      • 一个用户可以连续地获得许可,获得许可的次数由预置的权重值决定。当所有用户同时发出请求时,许可序列依次为:在这里插入图片描述

      • 在所有存在许可机会的用户之间进行公平轮询,在一个循环周期内,不用用户得到的总许可机会由预置的权重值决定。当所有请求同时发生时,许可序列为:在这里插入图片描述

    • 在另一种方案中,可软件编程的定时器被用于分配权重。一个仲裁周期开始时,定时器数值被加载到本地变量中。当一个用户获得许可后,本地变量减1,直到减至0为止。如果被轮询的用户没有完成操作,仲裁器停止对当前用户的许可并根据优先级轮询下一个用户。

(1)design detil

接下来,我们给出了采用WRR轮询方案的Verilog RTL代码及仿真结果,它采用的是第一种许可方式,序列为A,A,A,B,B,C…。

(2)time

在这里插入图片描述

(3)code

7、权重轮询(WRR):第二种方法

(1)design detil

下面是采用第二种权重轮询方式的Verilog代码及仿真结果,当所有用户都同时发出请求时,轮询序列为:
在这里插入图片描述

(2)time

(3)code

8、两组轮询(混合轮询)

  • 在一些应用中,用户被分成两组:快组和慢组。
  • 如图所示,快组内的用户具有相同的优先级,内部采用公平轮询方式。类似地,慢组内的用户也具有相同优先级,慢组内部也采用公平轮询方式。快组、慢组之间采用权重轮询方式。
  • 例如,快组有两个用户(A,B),慢组也有两个用户(C,D)。如果所有用户都发出请求,那么轮询序列为:
    在这里插入图片描述
    在这里插入图片描述

(1)design detil

(2)time

在这里插入图片描述

(3)code

本文参考《verilog高级数字系统设计技术与实例分析》,仅用于本人记录学习笔记,方便随时查看,如有侵权请联系删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

verilog实例-仲裁(Arbiter) 的相关文章

  • 【科普】波特率和比特速率的理解

    什么是波特率 单位时间内传输的码元个数称为波特率 单位为 Baud 那码元又是什么呢 码元又称为 符号 即 symbol 维基百科上对码元的解释 持续一段固定时间的通信信道有效状态就是码元 这么解释比较抽象 可以解释码元的物理意义 在通信信
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • 汇编:表格显示(含多个子程序)

    代码如下 assume cs code data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1
  • RISCV架构单周期CPU设计

    指令选取 R类型指令 31 25 24 20 20 19 15 14 11 7 6 0 funct7 rs2 rs1 funct3 rd opcode 编号 指令 名称 1 add rd rs1 rs2 加 2 and rd rs1 rs2
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • EMC经典问答85问(75-77问)

    75 某个手持测试产品 可以电池供电 同时也可以采取外置适配器供电方式 适配器单独带负载辐射发射 RE 测试可以通过 手持产品在电池供电情况下辐射发射 RE 也可以通过 并且余量都比较大 但是在带外置适配器的情况下 却在 160M 频率左右
  • 【FPGA】:频率测量

    转载 1 FPGA频率测量的三种方法 直接测量法 间接测量法 等精度测量法
  • 上拉电阻和下拉电阻

    一 定义 上拉电阻 将一个不确定的信号 通过一个电阻与电源VCC相连 固定在高电平 下拉电阻 将一个不确定的信号 通过一个电阻与地GND相连 固定在低电平 二 作用 提高输出信号驱动能力 确定输入信号电平 防干扰 限流 阻抗匹配 抗回波干扰
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • 程序的链接

    程序的链接是一个非常实际的问题 他建立在很实际的问题之上 不从程序员的角度去思考问题 则是从软件的角度去思考如何复用错综复杂的代码 因为 这个问题的本质是我们没有给底层的硬件一个完整的可按顺序执行的程序 我们在前几章虽然讨论了指令流的问题
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • 握手2倍速率进,一倍速率出[verilog]

    module two to one parameter WORD LEN 33 input clk input arst input 2 WORD LEN 1 0 i din input i din valid output o din r
  • Verilog之assign

    Verilog中的关键词assign主要用于如下两个地方 数据流建模 用于数据流建模的显示连续赋值语句语法格式如下
  • FPGA_时钟显示(时钟可调)

    1 实验说明 在数码管显示数据的基础上 让六位数码管显示数字时钟 并且通过按键可以对时间进行修改 实验目标 六位数码管分别显示时间的时分秒 且通过按键可实现加减调整时间及清零功能 key1 切换键 选择待调整的时间单位 时 分 秒 key2
  • Verilog HDL——Modelsim仿真

    常用testbench语法 finish 和 stop finish任务用于终止仿真并跳出仿真器 stop任务则用于中止仿真 timescale time unit time precision time unit指定计时和延时的测量单位
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主

随机推荐

  • Android开发中怎么实现上传图片到服务器

    要实现在Android开发中上传图片到服务器 可以按照以下步骤进行 1 在Android项目中添加相应的权限 确保应用程序可以访问设备上的照片或相机 在 AndroidManifest xml 文件中添加以下权限
  • linux服务端下的c++ udp socket demo

    linux服务端 udp socket demo 如下 创建接受数据的socket int iSock socket PF INET SOCK DGRAM 0 printf socket ss d n iSock struct sockad
  • 三种基于CUDA的归约计算

    归约在并行计算中很常见 并且在实现上具有一定的套路 本文分别基于三种机制 Intrinsic 共享内存 atomic 实现三个版本的归约操作 完成一个warp 32 大小的整数数组的归约求和计算 Intrinsic版本 基于Intrinsi
  • 网站视频服务器架设,云服务器架设网站视频教程

    云服务器架设网站视频教程 内容精选 换一换 安装MySQL本文档以 CentOS 6 5 64bit 40GB 操作系统为例 对应MySQL版本为5 1 73 CentOS 7及以上版本将MySQL数据库软件从默认的程序列表中移除 需执行s
  • Keil常见错误警告

    1 warning 767 D conversion from pointer to smaller integer 解释 将指针转换为较小的整数 影响 可能造成的影响 容易引起数据截断 造成不必要的数据丢失 如果出现 bug 很难 调试
  • mybatis 的mapper接口注入到spring 容器的源码解析

    一 环境准备 1 创建一个maven 项目 其POM文件如下
  • pytorch笔记12--无监督的AutoEncoder(自编码)

    1 AutoEncoder 给特征属性降维 2 Data gt 压缩 提取Data的关键信息 减小网络的运算压力 gt data 具有代表性的特征 gt 解压 还原数据信息 gt Pred Data 3 使用Mnist数据集训练 将数据先压
  • CentOS7安装wps

    第一步 首先到wps官网 http linux wps cn 下载 wps for linux 选择合适自己的系统位数的rpm包 如下图所示 第二步 打开终端 cd进入文件下载的路径 我下载的存放路径是 home zjh Downloads
  • 大数据课程L4——网站流量项目的Hive离线批处理

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 掌握网站流量项目的 Hive 的占位符与文件的调用 掌握网站流量项目的 Hive 离线批处理过程 掌握网站流量项目的定时任务改造Hive离线处理过程 一 Hi
  • 数据库设计——关系数据理论(超详细)

    问题 什么是一个好的数据库逻辑设计 关系型数据库逻辑设计 针对一个具体问题应如何构造一个适合于它的数据模式 即应构造几个关系 每个关系由哪些属性组成等 eg 这样的设计是一个好的设计吗 观察这个表所对应的一个实例 在某个时刻student模
  • 域名服务器中存放主机的什么位置,域名服务器中存放主机的域名

    域名服务器中存放主机的域名 内容精选 换一换 本文档重点介绍在CCE容器中如何配置域名解析 在创建相应的后端工作负载 Deployment或ReplicaSet 以及在需要访问它的任何工作负载之前创建服务 当Kubernetes启动容器时
  • 基于Python的淘宝自动回复助手

    前言 看到有人从blink上发需要用python做一个类似于淘宝自动回复助手的作业 好久没玩python了 就写了一下 实现了 1 退货 2 查库存 3 商品查看 这三个功能 整理一下心路历程 搞到一份源码 def find answer
  • 安装 Django1.11

    Django1 11 安装Django的步骤 联网 在命令行窗口中直接运行 pip install django 1 11 i https pypi tuna tsinghua edu cn simple 或使用离线方式安装 执行命令 pi
  • 初级(上) 二维码的生成

    吼吼 阳仔的第一篇博客开写啦 以下的内容都是我从imooc上面听课的总结 当然是只针对二维码 作为一个初级程序媛 也是要坚持学习的 首先 谢谢imooc网上的老师发放的免费视频 让我自己有了一些简单的了解 接下来 就把我的总结贴出来吧 第一
  • 微信公众号开发之绑定微信开发者

    第一步 登录微信公众号 绑定网页开发者 在登录后的界面中 我们向下拉在左侧会看到有一个 开发者工具 点击 这时在开发者工具中 会看到有好几个工具 其中有一个 web开发者工具 我们点击进入 在这里 我们就会看到有一个 绑定开发者微信号 按钮
  • LDO的原理及应用

    01 LDO定义 LDO即lowdropoutregulator 是一种低压差线性稳压器 这是相对于传统的线性稳压器来说的 传统的线性稳压器 如78XX系列的芯片都要求输入电压要比输出电压至少高出2V 3V 否则就不能正常工作 但是在一些情
  • Javascript:window.close()不起作用?

    一般的窗口关闭的JS如下写法 window close 但是呢 chrome firefox等中有时候会不起作用 改为下面的写法 window open about blank self close 或者 window open self
  • 服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

    https blog csdn net zxlyx article details 120397006 本文给出一个 TIME WAIT 状态的 TCP 连接过多的问题的解决思路 非常典型 大家可以好好看看 以后遇到这个问题就不会束手无策了
  • ubuntu安装anaconda及创建桌面快捷启动图标

    第一步 下载anaconda 1 因为跑代码的原因 我要下载python3 6的anaconda 如果大家也有版本的要求 首先需要查看python与anaconda的版本对应关系 详细可见https blog csdn net yuejis
  • verilog实例-仲裁(Arbiter)

    目录 1 仲裁 2 仲裁方案 3 严格优先级轮询 1 design detil 2 time 3 code 4 公平轮询 1 design detil 2 time 3 code 5 公平轮询 仲裁w o死周期 1 design detil