各类Round-Robin总结,含Verilog实现

1. Fixed Priority Arbitrary

固定优先级就是指每个req的优先级是不变的,即优先级高的先被处理,优先级低的必须是在没有更高优先级的req的时候才会被处理。所以转化为数学模型就是找出req序列中第一个为1的位置,然后将其转换为onehot。

例如:

req[3:0] = 4'b1100 ==> grant[3:0] = 4'b0100

req[3:0] = 4'b1010 ==> grant[3:0] = 4'b0010

要做的第一步就是先根据req构造出一个mask,该mask会将第一个非0bit以上的值掩盖。例如,

req[3:0] = 4'b1100 ==> mask[3:0] = 4'b1000

req[3:0] = 4'b1010 ==> mask[3:0] = 4'b1100

可以通过假设req[0]为1,那么mask[0] = 0,mask[3:1] = req[2:0] | mask[2:0]。

你可能感兴趣的:(Round-Robin)