换个方式理解状态机
状态机概述
有限状态机通常是由寄存器组和组合逻辑组成时序威廉希尔官方网站 ,根据当前状态和输入信号可以控制下一个状态的跳转,有限状态机在威廉希尔官方网站 中通常是作为控制模块,作为整个威廉希尔官方网站 模块的核心而存在,它主要包括两大类:Mealy型状态机和Moore型状态机。
Mealy型状态机:其组合逻辑的输出不仅与当前状态有关,还与输入有关。
如下图所示:
Moore型状态机:其组合逻辑的输出只与当前的状态有关。
如下图所示:
状态机的编码方式主要包括:二进制码(Binary),格雷码(gray),独热码(one hot)
比如说当前工作四个状态的话,其编码方式如下表1所示:
二进制 |
格雷码 |
独热码 |
|
S0 |
00 |
00 |
0001 |
S1 |
01 |
01 |
0010 |
S2 |
10 |
11 |
0100 |
S3 |
11 |
10 |
1000 |
格雷码相对于二进制码而言,在状态跳转的时候,只有单比特翻转,它的功耗相对比较低,该部分后面的异步FIFO章节会重点讲到。独热码相对于格雷码或者二进制码而言,它增加了两个寄存器来表示状态,但是它会更节省组合逻辑威廉希尔官方网站 ,因为它在比较状态的时候,只需要比较一个比特位,那么其威廉希尔官方网站 的速度和可靠性就会增加。
状态机设计实例分析
应用场景:编写一个自动售货机,功能如下:
共有三种纸币入口,分别支持10元,20元,50元。货物售价为80元。需要支持找钱功能(注意,找钱有两种情况, 90元和100元;而110元和120元的情况不符合实际应用场景,所以不存在找钱的情况)。
分析:一共有十一种状态:每种状态对应当前售货机已接受的金额,当金额达到80,90,100的时候售货机会输出货物,当金额为80时,不找零,当金额为90,100的时候要找零,零钱分别为10,20。
根据分析画出如下的状态转化图:
状态机的RTL以及仿真的testbench代码链接:https://pan.baidu.com/s/1dKcwhzNS60Sw-7-UYXqyAQ
提取码:9khq
在testbench里面模拟了三种情形:输入为80,90,100的三种情况
仿真的testbench如下图:
输入信号:
ten_inst为1表示输入10,twenty_inst为1表示输入20,fifty_inst为1便是输入50。
输出信号:
out_inst为1表示要输出货物;
charge_inst为0,表示不找零,为2‘b11,表示找零20,为2‘b01表示找零10。
-
状态机
+关注
关注
2文章
492浏览量
27538
原文标题:换个方式理解状态机
文章出处:【微信号:LF-FPGA,微信公众号:小鱼FPGA】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论