FPGA工程师无时无刻不在接触状态机,那么状态机的编写到底用几段式呢,这个问题会一直困扰FPGA的初学者,而问题的答案似乎都很古老,传统的建议是用二段式或者三段式状态机。
首先解释一下为什么传统建议使用二段式或者三段式状态机,因为以前的综合工具还不够强大,如果采用一段式编写状态机,组合电路和时序电路在一段代码块里,不利于电路的优化;而两段式、三段式状态机将组合电路、时序电路分开,便于电路的优化。
当然,随着工具的进步,现在采用几段式编写状态机已经没有那么大的影响,反而一段式状态机能够有效避免毛刺和竞争的出现,更适合初学者或者调试初期使用。在编写两段式、三段式状态机的时候,应该注意毛刺和竞争的产生,在可能的情况下将输出寄存器化。