HDLBits (128) — 旅鼠 1
本题链接:
https://hdlbits.01xz.net/wiki/Lemmings1
游戏 Lemmings 涉及一种一种大脑相当简单的小动物。 它十分简单,我们将使用有限状态机对其进行建模。

在 Lemming 的 2D 世界中,旅鼠可以处于以下两种状态之一:向左行走或向右行走。 如果遇到障碍物,它会切换方向。 特别是,如果旅鼠撞到左边,它会向右走。 如果它撞到右边,它会向左走。 如果它同时在两侧碰撞,它仍然会切换方向。
实现一个具有两个状态、两个输入和一个输出的 Moore 状态机来模拟这种行为。

另见:Lemmings2、Lemmings3和Lemmings4

题目
提示:


答案

输出波形


《百战小旅鼠》(Lemmings,又译《旅鼠总动员》、《疯狂小旅鼠》)是一个通过鼠标使用道具指引限定数目的旅鼠到达目的地的游戏,由 DMA Design(今rockstar north)开发,第一作最初1991年2月14日在Amiga上推出。之后不断推出各个平台的版本。
有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和 RTL 级有着广泛的应用。
Verilog 中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所在状态。状态机可分为 2 类:Moore 状态机和 Mealy 状态机。
Moore 型状态机
Moore 型状态机的输出只与当前状态有关,与当前输入无关。
输出会在一个完整的时钟周期内保持稳定,即使此时输入信号有变化,输出也不会变化。输入对输出的影响要到下一个时钟周期才能反映出来。这也是 Moore 型状态机的一个重要特点:输入与输出是隔离开来的。

参考内容:
百战小旅鼠 | 维基百科
https://zh.wikipedia.org/wiki/百战小旅鼠
6.3 Verilog 状态机 | 菜鸟教程:
https://www.runoob.com/w3cnote/verilog-fsm.html