当前位置:首页 > EDA > 电子设计自动化
[导读]在FPGA和IC设计领域,经常会面临一个挑战:多个端口同时竞争一个端口的数据。在这种情况下,采用RR调度策略可能是一种解决方案。

1简介

FPGAIC设计领域,经常会面临一个挑战:多个端口同时竞争一个端口的数据。在这种情况下,采用RR调度策略可能是一种解决方案。

FPGA基础:RR仲裁调度算法

RR(Round Robin)仲裁调度是一种常用的调度算法,广泛应用于操作系统和计算机网络中。该算法的设计初衷是为了公平地分配资源和服务各个任务,确保每个任务都能够获得一定的执行时间,从而提高系统的响应速度和资源利用率。

这种轮流调度的方式确保了每个任务都能够获得公平的执行机会,而且对于响应时间敏感的任务也能够及时得到处理。RR仲裁调度算法的简单性和公平性使其成为了许多操作系统和网络系统中默认的调度策略之一。

2RR调度原理

在RR仲裁调度算法中,任务被分配一个固定的时间片(time slice),当任务开始执行时,它会被允许运行一个时间片的时间,然后被暂停,等待下一个调度周期。如果任务在一个时间片内没有完成,它将被放回就绪队列的末尾,等待下一次调度。

FPGA基础:RR仲裁调度算法

举例说明一下:以下图展示的是一个4端口仲裁的RR调度。在第0周期,优先级为0的端口0被选中,其优先级顺序为0、1、2、3,对应输入信号为4'b1101,输出信号为4'b0001。在第1周期,优先级为1的端口1被选中,其优先级顺序为1、2、3、0,输入信号为4'b1101,输出信号为4'b0100。在第2周期,优先级为2的端口2被选中,其优先级顺序为2、3、0、1,输入信号为4'b1001,输出信号为4'b1000。在第3周期,优先级为3的端口3被选中,其优先级顺序为3、0、1、2,输入信号为4'b1001,输出信号为4'b1000。随后依此循环。

FPGA基础:RR仲裁调度算法

3RR调度核心部分实现

wire [WD - 1:0] mask = {req[WD - 2:0] | mask[WD - 2:0], 1'b0};wire [WD - 1:0] grant = ~mask & req;

这个是实现RR调度的最基本结构,req 是输入的请求信号,mask 是一个掩码,用于标记哪些端口在当前时刻已经被选择了,grant 是输出的授权信号,表示当前时刻被选中的端口。

产生mask代码本质上如下(以WD = 4为例):

mask[0] = 0mask[1] = mask[0] | req[0]mask[2] = mask[1] | req[1]mask[3] = mask[2] | req[2]

mask 的计算逻辑是将之前的掩码向左移动一位,并将最低位设置为0。这样做的目的是为了模拟一个循环移位寄存器,在每个周期内,该掩码会循环地向左移动,表示当前周期内已经被选中的端口。req[WD - 2:0] 表示将 req 向右偏移一个位置,以便与 mask 进行按位或运算。mask的作用是锁定已经被选中的端口,同时区分高低优先级。mask中为1的位置表示高优先级要去调度的区域,而为0的位置表示低优先级要去调度的区域,因为这些位置已经被调度过了。

grant 的计算逻辑是取反操作符 ~ 对 mask 进行求反,然后与 req 进行按位与运算。这样做的目的是找到当前周期内请求信号 req 中尚未被选中的端口,这些端口将被授予访问权限。

3总结

本章主要探讨了RR调度的原理、用途以及其核心的实现方法。读者可以自行考虑基于核心代码的RR实现方法。后续将会进一步更新RR调度的具体实现方法。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bitmap是一种通过位映射来高效存储和查询数据的技术,它在处理大规模数据集时能够有效地节省内存空间。Bitmap技术特别适用于需要对大量数据进行存在性检查的场景,比如用户签到、页面访问等,它可以显著节省内存空间。

关键字: IC设计 RAM bitmap

在IC设计中,我们有时会使用深度很大,位宽很小的ram。例如深度为1024,位宽为4bit的ram。此类的ram有个明显的缺点:形状狭长,不利于布局布线、导致读写接口走线过长,不利于时序收敛。

关键字: IC设计 RAM

在ASIC设计中,项目会期望设计将代码写成clk-gating风格,以便于DC综合时将寄存器综合成clk-gating结构,其目的是为了降低翻转功耗。因为当控制信号(vld_in)无效时,使用了clk-gating后的...

关键字: IC设计 clock-gating ASIC

UART(Universal Asynchronous Receiver/Transmitter)是一种通信协议,用于在电子设备之间传输数据。它是一种串行通信协议,意味着数据位按顺序一个接一个地传输。

关键字: FPGA UART串口通信

通常block的input和output信号存在时序问题时,我们通常采用寄存器打拍的方式,在两个block直接插入reg,从而解决时序问题。

关键字: IC设计 RR调度原理 AXI信号

Bourns® TLVR1005T 和 TLVR1105T 系列采用双绕组结构和低感值设计,可提供快速瞬态响应,并可依据 CPU、FPGA 和 ASIC 负载要求进行延展

关键字: 数据驱动 电感器 FPGA

对于大规模数据处理,最佳性能不仅取决于原始计算能力,还取决于高存储器带宽。 因此,全新 AMD Alveo™ V80 计算加速卡专为具有大型数据集的内存受限型应用而设计,这些应用需要 FPGA 硬件灵活应变能力以实现工作...

关键字: 自适应计算 FPGA

8b10b编码作为数字通信领域中的一项重要线路编码方案,其核心理念在于将每8位数据映射到10位编码中。这个映射过程严格按照特定规则进行,旨在保证编码中的电平转换足够,以维持信号的直流平衡,并提供足够的时钟信息,使接收端能...

关键字: FPGA 8b/10b编码 IC设计

“实现机器人操作系统——电机控制器ROS1驱动程序简介”一文中概述了新型ADI Trinamic™电机控制器(TMC)驱动程序,并讨论了将电机控制器集成到机器人操作系统(ROS)生态系统中的方法。TMC ROS1驱动程序...

关键字: 电机控制器 机器人 嵌入式系统
关闭