关于组合反馈

2019-03-25 08:30发布

复制代码
  1. reg [1:0] stat_action;
  2. always@(*)  begin
  3.     case({is_luma, blk_type})
  4.         {1'b1, `DC_ONLY}:
  5.             if(scan_done)
  6.                 stat_action = `FIFO_COMMIT;
  7.             else
  8.                 stat_action = `FIFO_PENDING;
  9.         
  10.         {1'b1, `AC_ONLY}:
  11.             if(scan_done) begin
  12.                 if(blk_idx == 0)
  13.                     stat_action = `FIFO_PENDING;
  14.                 if(nzc_count != 0)
  15.                     stat_action = `FIFO_COMMIT;
  16.                 if((blk_idx == 15) && (stat_action == `FIFO_PENDING))
  17.                     stat_action = `FIFO_ROLLBACK;
  18.             end
  19.         
  20.         {1'b1, `DC_AC}:
  21.             if(scan_done) begin
  22.                 if(blk_idx[1:0] == 2'b00)
  23.                     stat_action = `FIFO_PENDING;
  24.                 if(nzc_count != 0)
  25.                     stat_action = `FIFO_COMMIT;
  26.                 if((blk_idx[1:0] == 2'b11) && (stat_action == `FIFO_PENDING))
  27.                     stat_action = `FIFO_ROLLBACK;
  28.             end
  29.         
  30.         {1'b0, `DC_ONLY}:
  31.              if(scan_done) begin
  32.                  if(blk_idx == 0)
  33.                      stat_action = `FIFO_PENDING;
  34.                  if(nzc_count != 0)
  35.                      stat_action = `FIFO_COMMIT;
  36.              end
  37.          
  38.         {1'b0, `AC_ONLY}:
  39.             if(scan_done) begin
  40.                 if(blk_idx == 0)
  41.                     stat_action = `FIFO_PENDING;
  42.                 if( nzc_count != 0)
  43.                     stat_action = `FIFO_COMMIT;
  44.                 if((blk_idx == 7) && (stat_action == `FIFO_PENDING))
  45.                     stat_action = `FIFO_ROLLBACK;
  46.             end

  47.         {1'b0, 2'b00}: stat_action = `FIFO_COMMIT;

  48.     endcase
  49. end
复制代码帮忙看下上面这段代码是否会产生组合反馈,RTL仿真没问题,综合后仿真就出问题了,对比了下波形,发现是上面这段代码stat_action出现了时序问题。
这个地方是组合逻辑,很明显stat_action形成了反馈,不知道是不是因为产生了组合反馈才导致综合仿真出问题



[ 本帖最后由 超自然 于 2013-4-12 10:17 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
eeleader
1楼-- · 2019-03-25 18:48
< / 组合反馈是否是形成环路了。如果形成环路
建议从逻缉没计方法上解决。
tx_xy
2楼-- · 2019-03-26 00:48
楼主这段代码应该是一个状态机中的一部分吧,如果状态翻转有做时序逻辑的话,应该不会有组合反馈。
超自然
3楼-- · 2019-03-26 02:16
谢谢,已经解决了,确实是因为形成了组合反馈环路
超自然
4楼-- · 2019-03-26 06:53
谢谢,已解决
eeleader
5楼-- · 2019-03-26 09:02
楼主,问题是怎样解决的?把方法贡献大家
,有助于本坛的全体同志水平提高,应多
发扬雷锋精神。
eeleader
6楼-- · 2019-03-26 14:06
 精彩回答 2  元偷偷看……

一周热门 更多>