状态机的输出可以看出是由组合逻辑实现的,而且判断条件是current_state,也就是当前状态,若是在always块中写成 = ,那就是组合逻辑输出,如果要是写成 <= 形式,就是时序逻辑,其实输出用时序逻辑还是组合逻辑是无所谓的。
时序逻辑的输出必须是寄存器的输出,但是输入信号可以经过组合逻辑之后,在进行寄存,但是寄存器输出之后,这个时序逻辑已经完成,输出的信号再作用到其他电路需要重新开一个always块。也就是说不能把三个模块看成一个整体的时序逻辑,而应该看成时序+组合逻辑,或者组合逻辑+时序逻辑+组合逻辑。
时序+组合逻辑其实就是把前两个模块看作时序逻辑,第三个输出信号的模块看成组合逻辑。
组合逻辑+时序逻辑+组合逻辑:其实质是 把三个模块单独放在了always快中实现了。第一个模块的输入是current_state,但是输出是next_station。 状态寄存器模块输入是next_station,输出是current_station,而输出模块的输入信号是current_staion与input信号,而输出是outuput,如果把输出信号换成是时序逻辑,那么相当于在组合逻辑电路实现之后,加了一级的寄存器。
至于为什么next_station要由组合逻辑来实现,那是因为输入和当前状态决定了下一个状态是什么,下一个状态的值会赋值给当前状态,你可以理解为,当next_staion为前状态要转变的状态,这个状态是需要提前由当前状态和输入信号通过得出组合逻辑得出来的,然后当前状态的转变是时序电路,时序电路的输入是next_station,就是要把current_staion转变的数值赋值给current_station。