全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-09-28 09:55

人气:

作者:admin

标签: 如何  轮询    Verilog  调度 

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

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

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信