IC设计高级:调度设计01_RR调度原理

1、RR轮询调度?

RR轮询调度指的是在一次轮询响应请求中,每个请求信号都会获得响应。

如下所示:输入rr_req[3:0]为4个请求信号,输出rr_grant[3:0]为4请求信号对应的4个响应信号:1表示有请求or响应,信号为0表示无请求or响应。如表所示,第1次,所有请求均有效,首先响应低bit的请求,所以rr_grant[0]=1。第3次请求,请求rr_req[1]有效,但是在第2次中被响应(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

E

D

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值