MCDF中arbiter的轮询机制

本文详细介绍了MCDF仲裁器采用的Round Robin轮询机制,确保每个通道公平获得授权,避免数据堵塞。通过分析变量cp_vec_r、win_vec_s以及相关逻辑,阐述了如何实现从左至右的优先级轮询,并解释了各个步骤的作用。
摘要由CSDN通过智能技术生成

更新的MCDF的仲裁器采用的是Round Robin轮询的一个仲裁机制,简单来说就是最先被授权的通道在下一次仲裁中优先级会变为最低,这样可以保证每个通道都能够获得授权,而不是一个通道长时间连续的进行数据传输,而将其他通道的数据堵塞。

整体的设计代码如下

module RR_arbiter(
    clk_i,
    rst_n_i,
    req_vec_i,
    win_vec_o,
    trigger_i   
);
    input                    clk_i;
    input                    rst_n_i;

    //Request
    input  [3:0]             req_vec_i;
    
    //Winner
    output [3:0]             win_vec_o;
    
    input                    trigger_i   ; // trigger a aound of calculation
//--------------------------------------------------------------------------------------------------------
reg  [3:0] cp_vec_r ; // current priority pointer. e.g. 0100: 1 stand for position of highest priority. 

wire [3:0] filter_L_s, filter_R_s, req_msb1_L_s, req_msb1_R_s, req_FL_L_s, req_FL_R_s, req_R_s, req_L_s;
wire [3:0] win_L_s   , win_R_s    ;
reg  [3:0] win_vec_s;
reg  [3:0] win_vec_r;
wire       req_all0_L_s, req_all0_R_s ;

//--------------------------------------------------------------------------------------------------------

assign filter_L_s[3] = cp_vec_r[3];
assign filter_L_s[2] = cp_vec_r[3] || cp_vec_r[2] ;
assign filter_L_s[1] = cp_vec_r[3] || cp_vec_r[2] || cp_vec_r[1] ;
assign filter_L_s[0] = cp_vec_r[3] || cp_vec_r[2] || cp_vec_r[1] || cp_vec_r[0];

ass
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值