ngtim 发表于 2010-6-28 00:53:50

verilog想要实现一个轮寻的优先级仲裁器

有四路输入 a,b,c,d, 信号如下
inputreq_a;
inputreq_b;
inputreq_c;
inputreq_d;//仲裁请求四路request信号

output grt_a,grt_b,grt_c,grt_d;//仲裁授予思路grant信号

inputdata_a,data_b,data_c,data_d;//四路数据信号

output data_out;

要求是根据一个select信号,依次的按照轮寻优先级授予四路仲裁请求,使得
data_out = (select==0) ? data_a : (select==1)
            ? data_b : (select==2)
            ? data_c: data_d;
四路信号的优先级相同,因此最先想到的就是轮寻优先级,但是不知道怎么实现

CHAN 发表于 2010-6-28 02:27:53

等待高手来帮你实现

VVIC 发表于 2010-6-28 04:16:44

本帖最后由 fpgaw 于 2010-7-31 09:21 编辑

<br>
"哈哈,终于有人顶帖子,这个是我故意留下的bug,下面我来解释一下:<br>
&ldquo;如果同时有多个信号请求,考虑上一个请求信号&rdquo;的说法其实不完全,我的意思是如果有多个信号请求,考虑上一次grant的信号。"<br>
<br>
s_ab:<br>
&nbsp; &nbsp;&nbsp; &nbsp;case(ls)// feedback MUX configured<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;s_a: begin grant_o &lt;= 2'b01; ls &lt;= s_b; end<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;s_b: begin grant_o &lt;= 2'b00; ls &lt;= s_a; end<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;s_c: begin grant_o &lt;= 2'b00; ls &lt;= s_a; end<br>
&nbsp; &nbsp;&nbsp; &nbsp;endcase<br>
<br>
红色部分应该换成上一次的grant信号?..><br>
页: [1]
查看完整版本: verilog想要实现一个轮寻的优先级仲裁器