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

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

当前位置:诺佳网 > 电子/半导体 > EDA/IC设计 >

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

时间:2023-12-13 16:14

人气:

作者:admin

标签: Verilog  寄存器  IC设计 

导读:在设计中,我们经常会用到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.

时钟周期 请求信号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





审核编辑:刘清

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

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

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

关注微信