0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RR轮询调度?Verilog是如何实现RR轮询调度的?

冬至子 来源:IC的世界 作者:IC小鸽 2023-09-28 09:55 次阅读

1、RR轮询调度?

在设计中,我们经常会用到RR(Round-Robin,RR)轮询调度,用于保证在一个时间段内的多个请求信号都能得到公平响应。

如下所示:输入rr_req[3:0]为4个请求信号,输出rr_grant[3:0]为4请求信号对应的4个响应信号:rr_req[n]表示第n请求申请响应,rr_grant[n]为1表示第n个请求被响应。

如表所示,T1周期,所有请求均有效,首先响应低bit的请求,所以rr_grant[0]=1。

T3周期,请求rr_req[0]有效,但是在T2时刻中被响应(rr_grant[1]=1),因此此次不再响应,而是响应rr_req[2],所以rr_grant[2]=1.

image.png

2、Verilog是如何实现RR轮询调度的?

在verilog实现中,仅仅采用简单的组合逻辑和寄存器就可以实现rr轮询调度,不需要状态机等设计。

基本原理是锁存上一次输出请求响应rr_grant[3:0],并且生成相应的有效位rr_mask[3:0],从(rr_valid[3:0]&rr_mask[3:0]) 和 rr_valid[3:0]&(~rr_mask[3:0]) 选取不为0的作为获得rr_grant_tmp,rr_grant_tmp再经过组合逻辑并且取最低有效位。此处mask中1表示请求有效。

image.png

B列:为请求信号rr_req[3:0]
C列:pre_rr_result 为模块内部锁存的上一拍rr_grant[3:0],即寄存器锁存打拍
D列:rr_mask为pre_rr_result经过组合逻辑得到的掩码,rr_mask= {pre_rr_result[2:0],pre_rr_result[3]}-1’b1
E列: rr_mask为pre_rr_result经过组合逻辑得到的掩码,rr_mask= ( {pre_rr_result[2:0],pre_rr_result[3]}-1’b1)
F列:rr_grant_tmp为B&D or B&E,取其中不为0的
G列:rr_grant_tmp经过组合逻辑输出最低有效位:(~rr_grant_tmp+1’b1)&rr_grant_tmp

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    4455

    浏览量

    116116
  • IC设计
    +关注

    关注

    37

    文章

    1068

    浏览量

    102453
  • 锁存器
    +关注

    关注

    7

    文章

    688

    浏览量

    40619
  • 状态机
    +关注

    关注

    2

    文章

    414

    浏览量

    26899
  • Verilog语言
    +关注

    关注

    0

    文章

    104

    浏览量

    8061
收藏 人收藏

    评论

    相关推荐

    核心路由器的多端口线卡调度

    轮询调度,其理论研究较成熟,也较易于实现,相比不定长包调度可以避免更多的意外
    发表于 05-14 07:00

    Linux系统调度实现特性的关键部分

    调度管理是实现这些特性的关键部分。调度管理决定系统中的众多线程中哪个线程获得执行、什么时候开始执行、执行多久。一个好的调度算法能优化
    发表于 07-05 07:05

    干货分享:基于嵌入式Linux中进程调度实现方法

    调度对系统功能的实现 及各方面的性能都有着决定性
    发表于 12-10 14:17

    请问FreeRTOS是如何实现调度的?

    实现的呢,C语言障碍,没看懂。首先是调度函数,函数函数是如何执行的呢?如下图,新建任务后执行调度函数,为什么没用循环,调度函数是一直
    发表于 07-30 07:40

    Microchip单片机固定时间片轮询调度汇编代码 精选资料分享

    轮询调度汇编程序代码。为什么要用时间片轮询调度?假如我们要写一个单片机程序,程序的目的就是用GPIO控制一个灯亮一秒再暗一秒…最简单的写法是用
    发表于 07-13 08:53

    Microchip单片机固定时间片轮询调度汇编代码 精选资料推荐

    轮询调度汇编程序代码。为什么要用时间片轮询调度?假如我们要写一个单片机程序,程序的目的就是用GPIO控制一个灯亮一秒再暗一秒…最简单的写法是用
    发表于 07-13 08:14

    基于PIC16F877A开发板的固定时间片轮询调度汇编程序干了啥

    轮询调度?基于PIC16F877A开发板的固定时间片轮询调度汇编程序干了啥?
    发表于 08-02 07:36

    STM32是怎样去实现软件时间片调度

    实现软件时间片调度前言:在有些时候嵌入式系统不需要上RTOS的情况下,使用一个while大循环,有可能会造成一层while套一层while的情况出现.为了解决这种情况(更好的装X).这里
    发表于 08-24 07:33

    基于FPGA的轮询合路的设计和实现

    轮询调度和改进式欠账轮询调度相结合的调度策略,该策略在很大程度上保证了公平性和稳定性。仿真
    发表于 08-09 15:30 21次下载

    MCU--时间片&分时轮询

    调度2、"先来先服务调度"与“前后台架构”1)先来先服务调度2)先来先服务VS前后台架构3、时间片调度-(也叫RR调度)4、最后小结1、任务调度任务调度对于电子类或者自动化类专业小伙伴
    发表于 11-05 17:20 2次下载
    MCU--时间片&分时<b>轮询</b>

    Microchip单片机固定时间片轮询调度汇编代码

    轮询调度汇编程序代码。为什么要用时间片轮询调度?假如我们要写一个单片机程序,程序的目的就是用GPIO控制一个灯亮一秒再暗一秒…最简单的写法是用
    发表于 11-16 16:21 4次下载
    Microchip单片机固定时间片<b>轮询</b><b>调度</b>汇编代码

    STM32 操作系统内核调度原理与实现(1):轮询系统,前后台系统与多线程系统

    轮询系统轮询系统是 MCU 中最简单的入门系统,它的程序结构是通常只需要一个 While(1)或For(;;)死循环来实现://程序清单 1.1......int main(void
    发表于 12-07 19:36 7次下载
    STM32 操作系统内核<b>调度</b>原理与<b>实现</b>(1):<b>轮询</b>系统,前后台系统与多线程系统

    模数转换轮询

    轮询
    发表于 09-07 11:39 786次阅读
    模数转换<b>轮询</b>器

    基于SDH芯片的S19202的轮询合路的设计

    轮询调度和改进式欠账轮询调度相结合的调度策略,该策略在很大程度上保证了公平性和稳定性。仿真
    发表于 07-31 09:23 720次阅读
    基于SDH芯片的S19202的<b>轮询</b>合路的设计

    IC设计的特殊信号打拍方式及RR轮询调度

    发表于 10-03 15:26 624次阅读