微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 明德扬最新分享---FPGA设计新技巧:四段式状态机

明德扬最新分享---FPGA设计新技巧:四段式状态机

时间:02-14 来源:互联网 点击:

     endcase

  

end

  
  

assign idle2s1_start = state_c==IDLE  && ;

  

assign s12s2_start  = state_c==S1   && ;

  

assign s22idl_start  = state_c==S2   && ;




第三段,用assign定义转移条件。注意条件一定要加上现态。



1

  

2

  

3



assign idle2s1_start = state_c==IDLE  && ;

  

assign s12s2_start  = state_c==S1   && ;

  

assign s22idl_start  = state_c==S2   && ;




第四段,设计输出信号。明德扬规范要求一个always设计一个信号,因此有多少个输出信号,就有多少个always。



1

  

2

  

3

  

4

  

5

  

6

  

7

  

8

  

9

  

10

  

11



always  @(posedge clk or negedge rst_n)begin

  

     if(!rst_n)begin

  

        out1 <=1'b0   

  

     end

  

     else if(state_c==S1)begin

  

        out1 <= 1'b1;

  

     end

  

     else begin

  

        out1 <= 1'b0;

  

     end

  

end




明德扬四段式状态机符合一次只考虑一个因素的设计理念。第一段代码,照抄格式,完全不用想其他的。第二段代码,只考虑状态之间的跳转,也就是说各个状态机之间跳转关系。第三段代码,只考虑跳转条件。第三段,每个信号逐个设计。

明德扬为了保证一次设计正确,还制定了一些规范。例如第二段的跳转条件,只准用信号名代替,并且制定了跳转条件的命名规范,1是解决了命名困难的问题,2是对转移条件一目了然,如idl2s1_start,就可以看出是IDLE跳到S1状态的条件。还有,明德扬规定转移条件的格式,一定是“ 当前状态&&具体条件”,以防想不到的情况出现。有了这些规范的保证,无论多复杂的场合,任何设计都能有条理、有步骤地一次性设计正确。


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

网站地图

Top