FPGA学员5
我分享一个实际踩过的坑。之前写状态机,状态转移条件用了组合逻辑的‘与或’表达式,结果发现有时候会重复进入某个状态。后来发现是条件表达式在某个时刻有毛刺,导致一个时钟周期内次态变化了多次。
解决办法:把状态转移条件用寄存器锁存。比如,在时钟上升沿采样条件,生成一个使能信号,这个使能信号有效期间,状态才转移。这样即使条件有毛刺,只要时钟边沿没抓到,就不会误动作。
另外,状态机输出如果控制计数器之类,要注意输出和状态转移的时序关系。最好画个时序图,理清楚每个信号在时钟沿前后的变化,再写代码。
