# 自学了 6week,pre 都挂了, 做了做 P0 课下测试, 觉得自己对有限状态机概念的的理解, 特别是牵扯到时序还是很模糊; 状态的抽象也不够熟练; logisim 和 Verilog 的实现也存在问题. 网上针对性的 logisim 题目似乎很少, 博主害怕 P0 挂了, 于是做一做学习笔记, 分享一下对于有限状态机的一些理解, 如有不对的地方烦请指正. 发现错误我也会及时更新.
Logisim 中的 FSM(P0.L0.Q4)
状态的抽象:
应当注意当前状态 / 次态和输入是不一样的, 不要混为一谈, 抽象状态时需要确定是否包含了所有的状态且状态转移图没有逻辑错误; 如错误, 则重新选取新的状态. 至于如何用更少的位数抽象出状态则可能需要多多做题总结了.
比如这道题状态是已输入的最后两位字符 (总共四位 2 进制),Sed[3:0] 和 S[3:0] ,
确定好状态和输入就可以利用 logisim 构建状态转移组合逻辑块了, 同理可用 logisim 构建输出组合逻辑块
关于 mealy 型和 Moore 型时序问题
有限状态机的逻辑结构相信大家都很清楚, 不清楚的可以网上自寻寻找资源或见 cscore 教程有限状态机, 但这里有一点我想要谈一谈:
输入和当前状态对应当前输出 在一个时间周期内, 输入和当前状态对应当前输出. 我认为可以想象, 输入信号在一个时钟周期的开区间是稳定不变的, 只有在时钟边沿才算作新的输出, 就相当于外部信号是用寄存器存储的 (Verilog 中的 reg 类型)
笔者太菜了, 之前一直没想明白, 导致构建 Mealy 型时总是在输出组合逻辑块纠结是否再加一个寄存器来稳定输出, 当然我之前想法是错误的.
来源: http://www.bubuko.com/infodetail-3237749.html