1、 四段式不是指三个always代码,而是四段程序。使用四段式的写法,可参照明·德·扬GVIM特色指令Ztj产生的状态机模板。
2、第一段,同步时序的always模块,格式化描述次态迁移到现态寄存器。
3、第二段,组合逻辑的always模块,描述状态转移条件判断。注意转移条件用信号来表示,信号名要按明·德·扬规则来命名。
4、第三段,用assign定义转移条件。注意条件一定要加上现态。
5、第四段,设计输出信号。明·德·扬规范要求一个always设计一个信号,因此有多少个输出信号,就有多少个always。
6、明·德·扬四段式状态机符合一次只考虑一个因素的设计理念。第一段代码,照抄格式,完全不用想其他的。第二段代码,只考虑状态之间的跳转,也就是说各个状态机之间跳转关系。第三段代码,只考虑跳转条件。第四段,每个信号逐个设计。
7、明·德·扬为了保证一次设计正确,还制定了一些规范。例如第二段的跳转条件,只准用信号名代替,并且制定了跳转条件的命名规范,1是解决了命名困难的问题,2是对转移条件一目了然,如idl2s1_start,就可以看出是IDLE跳到S1状态的条件。还有,明·德·扬规定转移条件的格式,一定是“ 当前状态&&具体条件”,以防想不到的情况出现。有了这些规范的保证,无论多复杂的场合,任何设计都能有条理、有步骤地一次性设计正确。