前言
【芯片前端】与RR调度的相爱相杀——verilog实现RR调度器1
上篇博客把一个基本的RR调度器实现了下,然后这篇来处理其中存在的keep问题;
keep问题
目前已经实现的代码能够实现基本的rr调度,但是在调度时候会遇到两个问题:
1.由于grant是实时由new_grant和old_grant逻辑生成的,有可能导致grant的值在两次ack之间发生改变,由于grant一般直接作用于对外输出valid以及info选取,这会导致valid维持有效期间info信息改变,而在一些协议如axi中valid置起后至握手前,info信息是不允许改变的,也就是说目前的RTL实现可能会违背一些接口协议;
如上图,bit[1]本身已经得到调度,但是在ack之前bit[0]为高有效了这就使得grant值改变,调度出的info也会随之改变了;
2.还是因为grant会在ack回来之前会有跳变,这可能会导致低优先级区域(即power