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

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

    关注

    31

    文章

    5308

    浏览量

    119936
  • IC设计
    +关注

    关注

    37

    文章

    1290

    浏览量

    103725
  • 锁存器
    +关注

    关注

    8

    文章

    904

    浏览量

    41438
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27466
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8209
收藏 人收藏

    评论

    相关推荐

    IC设计:Verilog是如何实现RR轮询调度的?

    在设计中,我们经常会用到RR(Round-Robin,RR轮询调度,用于保证在一个时间段内的多个请求信号都能得到公平响应。
    的头像 发表于 12-13 16:14 1697次阅读

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

    ,符合AAL5处理的需求;二是在采用ATM方式时,PM5380内部的 FIFO只能够缓存4个信元,深度有限;三是固定长度包的轮询调度,其理论研究较成熟,也较易于实现,相比不定长包调度
    发表于 05-14 07:00

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

    1、综述  Linux作为多任务、多用户的操作系统,其进程/线程调度管理是实现这些特性的关键部分。调度管理决定系统中的众多线程中哪个线程获得执行、什么时候开始执行、执行多久。一个好的调度
    发表于 07-05 07:05

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

    了stm32的官方例程,原理上的东西大致懂了,可在程序中是如何实现的呢,C语言障碍,没看懂。首先是调度函数,函数函数是如何执行的呢?如下图,新建任务后执行调度函数,为什么没用循环,调度
    发表于 07-30 07:40

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

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

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

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

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

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

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

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

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

    针对高密度接口设计中基于字节处理和整包处理的转换问题,本文提出了分片轮询调度和改进式欠账轮询调度相结合的调度策略,该策略在很大程度上保证了公
    发表于 08-09 15:30 21次下载

    模数转换轮询

    模数转换轮询
    发表于 09-07 11:39 860次阅读
    模数转换<b class='flag-5'>轮询</b>器

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

    针对高密度接口设计中基于字节处理和整包处理的转换问题,本文提出了分片轮询调度和改进式欠账轮询调度相结合的调度策略,该策略在很大程度上保证了公
    发表于 07-31 09:23 926次阅读
    基于SDH芯片的S19202的<b class='flag-5'>轮询</b>合路的设计

    基于动态分组的M2M上行优先级调度算法综述

    以延迟容忍剩余时长为度量依据,提出一种对业务进行动态分组的上行优先级调度算法。采用资源块(RB大小可变的分配方式满足RB的邻接约束,引入混合自动轮询机制解决算法对低优先级业务调度不公平的问题。仿真
    发表于 06-11 11:17 14次下载

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

    这是一个能在PIC16F877A开发板上运行的固定时间片轮询调度汇编程序代码。为什么要用时间片轮询调度?假如我们要写一个单片机程序,程序的目的就是用GPIO控制一个灯亮一秒再暗一秒…最
    发表于 11-16 16:21 4次下载
    Microchip单片机固定时间片<b class='flag-5'>轮询</b><b class='flag-5'>调度</b>汇编代码

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

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

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

    Axi总线打拍模块通常会采用特殊设计的IP模块,将所有axi总线信号互联到axi打拍ip上,起到一个桥接的作用,能够解决时序问题。
    发表于 10-03 15:26 1320次阅读