|
我最近接收一个设计,有对应个优先级方法,交流一下:
我这边的设计需求是:
1. 存在req0~req15共16个请求;
2. 共存在4个优先级组(A>B>C>D),针对每一个req可以设置其所属的优先级组。
3. 当存在优先级冲突时,请求标号低的优先级高于请求标号高的。
如设置优先级组A(req2,req4,req5,req7,req9) ,组B(req1,req10,req14),组C(req3,req8,req11,req15),组D(req0,req6,req12,req13)
则整体优先级关系为:req2>req4>req5>req7>req9>req1>req10>req14>req3>req8>req11>req15>req0>req6>req12>req13
实现方法也很巧妙:
步骤1,针对4个优先级组声明4个16bit变量(A16,B16,C16,D16),将16bit源请求根据映射分组关系映射到4个优先级组的16bit变量(A16,B16,C16,D16)。
步骤2:先考虑A16中是否有请求、再考虑B16,再C考虑C16,最后考虑D16;假设A16中存在请求,则使用16bit数据找最低位为1的方法,即可找到当前应该响应的请求。对B16、C16、D16同理。 |
|