状态机是数字逻辑设计的重要内容,经常出现在各种逻辑设计中。根据输出是否与输入信号有关,状态机可以划分成Mealy和Moore型状态机;根据输出信号是否与输入信号同步,状态机可以划分成异步和同步状态机。由于现在电路以同步设计为主,所以主要介绍同步的Mealy和Moore型状态机。
状态机的Verilog实现
基于Verilog DHL语言的状态机设计方法非常灵活,按代码描述方法的不同,可以分为一段式描述、二段式描述和三段式描述等。不同的描述对应的电路不是一样的,因此最终的性能也是不同的。
一段式描述
这种方法将当前状态变量和输出变量用同一个时序always块进行描述。由于是寄存器输出,输出变量不会产生毛刺,也有利于综合。但是,这种方法有很多弊端,如代码冗长,不易调试和维护且占用资源多;通过case语句对输出变量的赋值应是下一个状态的输出,这点较易出错,状态变量和输出变量都由寄存器逻辑实现,面积较大,不能实现异步Mealy型状态机。
二段式描述
这种方式中,一个时序always块给当前状态赋值,一个组合always块给输出变量和下一状态赋值,通常用于描述