微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于组合逻辑产生latch的一段代码,请大家帮忙分析

关于组合逻辑产生latch的一段代码,请大家帮忙分析

时间:10-02 整理:3721RD 点击:
写一个状态机次态转移的组合逻辑,其中有含有nextstate = nextstate;的代码,请大家帮忙看下,是否会产生latch?如果是的话,需要怎么改进?谢谢
always @ (state,nextstate,state_tran_1,state_tran_2) begin
case (state)
3'b000 : nextstate = 3'b001;
3'b001 : if (state_tran_1 == 1'b1) begin
         nextstate = 3'b010;
       end
       else begin
      
nextstate = nextstate;
       end
  3'b010 : if (state_tran_2 == 1'b1) begin
  
         nextstate = 3'b011;
  
       end
  
       else begin
  
      
nextstate = nextstate;
  
       end
  3'b011 : if (state_tran_1 == 1'b1) begin
  
         nextstate = 3'b100;
  
       end
  
       else begin
  
      
nextstate = nextstate;
  
       end
  3'b100 : if (state_tran_2 == 1'b1) begin
  
         nextstate = 3'b001;
  
       end
  
       else begin
  
      
nextstate = nextstate;
  
       end
  default: nextstate = 3'b000;
endcase
end

有个插入代码的功能,怎么不用上啊,怎么不用上啊……

将所有nextstate = nextstate;替换成nextstate = state;即可
ps: 将状态机分开两段写没什么特别的好处,都是十几年前的老规定了(当时是方便古老的综合器识别),大可以写在一段里,新手不容易写错。

楼上正解,顶一个!

3楼正解



   谢谢~!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top