独热码在状态机里面使用比价广泛,这一块有些人爱用,有些人嫌烦,有时候可以用用格雷码跳转,不过格雷码只支持那种一步到底的,中间有分支就不好做了,所以后来还是回到了独热码的正道上。
说白了独热码的使用,在对状态判断时,会减少一级组合逻辑,关键路径上少一步,乍看没多少,用多了积累多了,还是一个很客观的数据的。
然后三段式状态机,状态跳转时一定记得要加上default,避免latch的产生。为了防止有时候不记得,在写状态机时不如上来就给其他情况先赋值。
调试技巧
FPGA设计,需要以数据流来推动,因此统计数据流输入和输出的个数,对于调试来说,是一个最方便也最直观的方式。
这些计数,设计者可以通过总线接口供外部处理器读出。不需要占用大量逻辑资源去调用逻辑分析仪,就可以通过处理器的串口连接计算机打印出来。
调试过程中,如果发现某些模块有输入却没输出,或者是输入个数与输出个数不匹配,打印出所有计数,就可以很快定位出问题出现的位置。然后有的放矢,很快就可以找出该模块的问题所在。
通过FPGA内部各模块的关键计数分析,来定位分析问题,在设计上没有任何难度。不过需要外部CPU或者FPGA嵌入式CPU的配合使用。