关于组合反馈

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条回答
超自然
2019-03-26 17:10
就是把组合电路的输出用寄存器缓存一拍,再反馈到该组合电路,而不是直接反馈,其实最好的办法就是把这段组合逻辑改成时序逻辑。网上也有人总结过这样一句话:“反馈回路包含寄存器,这也是最有效的解决方法,记住一点:任何反馈回路都必须包含寄存器”。

一周热门 更多>