FSM 分两大类:米里型和摩尔型。 组成要素有输入(包括复位),状态(包括当前状态的操作),状态转移条件,状态的输出条件。 设计FSM 的方法和技巧多种多样,但是总结起来有两大类:第一种,将状态转移和状态的操作和判断 等写到一个模块(process、block)中。另一种是将状态转移单独写成一个模块,将状态的操作和判断等 写到另一个模块中(在Verilog 代码中,相当于使用两个“always” block)。其中较好的方式是后者。其原因 如下: 首先FSM 和其他设计一样,最好使用同步时序方式设计,好处不再累述。而状态机实现后,状态转移 是用寄存器实现的,是同步时序部分。状态的转移条件的判断是通过组合逻辑判断实现的,之所以第二种 比第一种编码方式合理,就在于第二种编码将同步时序和组合逻辑分别放到不同的程序块(process,block) 中实现。这样做的好处不仅仅是便于阅读、理解、维护,更重要的是利于综合器优化代码,利于用户添加 合适的时序约束条件,利于布局布线器实现设计。
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
评论