HDLBits (131) — 旅鼠 4
2022-05-10 18:05 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Lemmings4
另见:Lemmings1、Lemmings2 和 Lemmings3

虽然旅鼠可以行走、跌落和挖掘,但旅鼠并非无懈可击。 如果旅鼠跌落太久然后撞到地面,它可能会飞溅。 特别是,如果旅鼠跌落超过 20 个时钟周期然后撞到地面,它会飞起并永远(或直到有限状态机重置)停止行走、跌落或挖掘(所有 4 个输出变为 0)。 旅鼠在落地前可以坠落的距离没有上限。 旅鼠只有在落地时才会飞起; 它们不会在半空中飞起。
扩展你的有限状态机来模拟这种行为。
跌落20个周期是可以存活的:

跌落 21 个周期会导致飞起:


题目
提示:
使用有限状态机控制跟踪旅鼠下落时间的计数器


答案

输出波形


有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和 RTL 级有着广泛的应用。
Verilog 中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所在状态。状态机可分为 2 类:Moore 状态机和 Mealy 状态机。
参考内容:
6.3 Verilog 状态机 | 菜鸟教程:
https://www.runoob.com/w3cnote/verilog-fsm.html