FSM 分两大类:米里型和摩尔型。
组成要素有输入(包括复位),状态(包括当前状态的操作),状态转移条件,状态的输出条件。
设计FSM 的方法和技巧多种多样,但是总结起来有两大类:第一种,将状态转移和状态的操作和判断
等写到一个模块(process、block)中。另一种是将状态转移单独写成一个模块,将状态的操作和判断等
写到另一个模块中(在Verilog 代码中,相当于使用两个“always” block)。其中较好的方式是后者。其原因
如下:
首先FSM 和其他设计一样,最好使用同步时序方式设计,好处不再累述。而状态机实现后,状态转移
是用寄存器实现的,是同步时序部分。状态的转移条件的判断是通过组合逻辑判断实现的,之所以第二种
比第一种编码方式合理,就在于第二种编码将同步时序和组合逻辑分别放到不同的程序块(process,block)
中实现。这样做的好处不仅仅是便于阅读、理解、维护,更重要的是利于综合器优化代码,利于用户添加
合适的时序约束条件,利于布局布线器实现设计。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉