欢迎光临
我们一直在努力

状态机 概念介绍(上)

以下为学习记录,希望可以多多关注,感谢大家喜欢

状态机简写为 FSM(Finite State Machine),也称为同步有限状态机。“同步”是因为状态机中所有的状态跳转都是在时钟的作用下进行的,有限”则是说状态的个数是有限的。

状态机根据影响输出的原因分为两大类,即Moore 型状态机Mealy 型状态机。

其共同点是:状态的跳转都只和输入有关。

区别主要是在输出的时候:若最后的输出只和当前状态有关而与输入无关则称为 Moore 型状态机;若最后的输出不仅和当前状态有关还和输入有关则称为 Mealy 状态机。

状态机三要素:

输入,输出,状态。

在Verilog中最常用的编码方式有二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码等。

二进制编码也可称连续编码,也就是码元值的大小是连续变化的。如S0 = 3’d0, S1 = 3’d1, S2 = 3’d2, S3 = 3’d3…

格雷码的相邻码元值间只有一位是不同的。如S0 = 3’b000, S1 = 3’b001, S2 = 3’b011, S3 = 3’b010…

独热码的每个码元值只有一位是’1’,其他位都是’0’。如S0 = 3’b001, S1 = 3’b010, S2 = 3’b100…

二进制编码、格雷码编码使用较少的触发器,消耗较多的组合逻辑,但是占用的位宽少,而独热码编码反之。独热码编码的最大优势在于状态比较时仅仅需要比较一个位,从而一定程度上简化了组合逻辑。虽然在需要表示同样的状态数时,独热编码占用较多的位,也就是消耗较多的触发器,但在FPGA 中组合逻辑资源相对较少而寄存器资源较多,所以在FPGA中多使用独热码编码。

一段式:一个always语块,时序逻辑描述状态转移和输出;

   这种方式代码较短,但可读性差,不利于维护和约束。

二段式:第一段always语块,时序逻辑描述状态转移;

   第二段always语块,组合逻辑描述输出(时序允许优先用时序逻辑);

这种方式结构清晰,但输出是组合逻辑,容易出现毛刺。

三段式:第一段always语块,时序逻辑描述状态转移,把次态更新到现态;

   第二段always语块,用 组合逻辑 根据现态以及输入判断次态;

   第三段always语块,时序逻辑描述输出;

  这种方式标准清晰,利于综合与布局布线,且输出被寄存器打一拍,能有效消除毛刺,是推荐的代码风格。

赞(0)
未经允许不得转载:171主机测评 » 状态机 概念介绍(上)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址