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

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

3天内不再提示

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

sanyue7758 来源:IC的世界 2023-12-13 16:14 次阅读

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.

时钟周期 请求信号rr_req[3:0] 请求响应rr_grant[3:0]
0 4’b0000 4’b0000
1 4’b1111 4’b0001
2 4’b1110 4’b0010
3 4’b1101 4’b0100
4 4’b1011 4’b1000

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表示请求有效。

A B C D E F G
时间顺序 请求信号rr_req[3:0] pre_rr_result(rr_grant[3:0]的打拍锁存值) rr_mask ~rr_mask
生成有效位
rr_grant_tmp
B&D or B&E,取其中不为0的
请求响应rr_grant[3:0]
0 4’b0000 4’b0000 4’b1111 4’b0000 4’b0000 4’b0000
1 4’b1111 4’b0000 4’b1111 4’b0000 4’b1111 4’b0001
2 4’b1110 4’b0001 4’b0001 4’b1110 4’b1110 4’b0010
3 4’b1101 4’b0010 4’b0011 4’b1100 4’b1100 4’b0100
4 4’b1011 4’b0100 4’b0111 4’b1000 4’b1000 4’b1000

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

    文章

    5334

    浏览量

    120217
  • IC设计
    +关注

    关注

    38

    文章

    1295

    浏览量

    103907
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110068

原文标题:IC设计:RR调度原理

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

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

    和网络协议。 1. 前言处理机(CPU)是整个计算机系统的核心资源,在多进程的操作系统中,进程数往往多于处理机数,这将导致各进程互相争夺处理机。进程调度对系统功能的实现 及各方面的性能都有着决定性
    发表于 12-10 14:17

    请问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次下载

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

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

    数字系统设计:VERILOG实现

    数字系统设计:VERILOG实现 (第2版)
    发表于 11-30 10:21 0次下载

    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 1361次阅读

    IC设计之Verilog代码规范

    Verilog规范对于一个好的IC设计至关重要。
    的头像 发表于 08-17 10:14 1456次阅读
    <b class='flag-5'>IC</b>设计之<b class='flag-5'>Verilog</b>代码规范

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

    在设计中,我们经常会用到RR(Round-Robin,RR轮询调度,用于保证在一个时间段内的多个请求信号都能得到公平响应。
    的头像 发表于 09-28 09:55 3936次阅读
    <b class='flag-5'>RR</b><b class='flag-5'>轮询</b><b class='flag-5'>调度</b>?<b class='flag-5'>Verilog</b>是如何<b class='flag-5'>实现</b><b class='flag-5'>RR</b><b class='flag-5'>轮询</b><b class='flag-5'>调度</b>的?