HDLBits/自用/Fsm部分/p2
2023-08-23 15:33 作者:土豆土豆2333333 | 我要投稿
蓄水池

四种状态(对应表格中四种状态)

代码为:
可见这种方法较为繁琐,而且不便于理解。下面是官方给出的解法,共有6个状态,对应每种变化,这样输出逻辑就变得简单很多,只需要与每种状态一一对应即可。状态转换图如下:

代码如下:
2. Lemmings

题目中已给出状态转换图:

代码也很简单(三步走):
3. Lemmings2

在上一题基础上多了一个fall状态和aaah输出。题目中给出了半个状态转换图,但不全,下面是补全的状态转换图:

由此可得代码:
4. Lemmings3

在上一题的基础上又多出一个dig操作。完整的状态转换图如下:

代码:
5. Lemmings4

这里的状态转换图不难实现,就是多一个splat状态,注意进入这个状态就会一直保持。

具体代码如下:
这里有几个注意点:
计数器中加1的判定条件不能使用ground==0或者当前状态是否处于fall左右,不然会导致错一个周期;
一开始一直用reg类型的q,这样做很可能溢出导致判断失误。以后注意如果不是端口而只是内部信号,直接用int不容易出错。reg一般是触发器中会用。parameter是参数,不是变量是常量,不可改变,并且一定要赋值。