问题描述
当Serial RapidIO端点收到维护请求时,它将重新布线到MREQ接口。未正确处理具有指向未映射地址空间的偏移量的维护请求。
解决/修复方法
注册管理器参考设计(reg_manager.v)错误地处理对未映射地址空间的维护请求。在这种情况下,最常见的症状是注册管理器状态机将挂起在后续维护请求上。
必须将ELSE IF语句更改为ELSE才能解决问题。下面的代码显示了所需的更改:
在Register_Manager.v的LINE 1153上
// ———————————————— ——————————
//超时计数器
//如果地址空间的地址不存在,则为响应
// 永远不会发生。发生这种情况时超时到期。
始终@(posedge clk或negedge reset_n)开始
if(!reset_n)
time_out_cntr <= 6’h0;
//读取丢弃或写入丢弃或空闲状态
否则if(rx_ns ==`REG_RX_IDLE |!rdy_n)
time_out_cntr <= 6’h0;
else // if(!mgt_phy_sel_n_wire |!mgt_log_sel_n_wire |!mgt_usr_sel_n_wire)<———-将ELSE IF更改为ELSE
time_out_cntr <= time_out_cntr + 1;
结束
assign req_timeout = time_out_cntr [5];
注意:此问题已在v4.4 Serial RapidIO解决方案中得到纠正。
没有回复内容