1.什么是状态机?有什么用途呢?
状态机是一些数字电路中的核心,用于描述当前信号的具体状态,比如大街上常见的自动售卖机,就是一个状态机的很好的例子,开始时刻,机器处于“待机”状态,我们要买一瓶2.5元的可乐,可以投0.5元的币和1元的币,当我们投0.5元时候,机器进入“已付款0.5元”状态,判断这些钱是否可以买一瓶饮料,直到当我们投入的钱够我们买一瓶饮料时,机器进入“成功购买”状态。当然,真实的自主售卖机的状态机更加复杂;
我们平时所说的状态机一般是有限状态机,即状态的个数是有限的,状态机的使用范围非常广,在数字电路中可以用于一个特定序列的检测等。状态机中当前状态和下一状态被称为现态和次态,设计状态机的关键,就是理清现态和次态之间的关系;
2.状态机的分类以及设计
一般把状态机分为moore型和mealy型两种,根据输出与当前状态、输入之间的关系选择具体类型的状态机;
moore型状态机特点:输出仅仅只与当前状态有关,和输入无关;
mealy型状态机特点:输出不仅只与当前状态有关,而且还和输入有关;
状态机的设计步骤:
1.选择合适的状态机类型(moore or mealy);
2.分析设计要求,列出所有的状态,并对每一个状态进行编码(类似每一个人有一个特定的身份证号码一样);
3.根据状态转移关系,画出状态转移图;
4.根据3中的转台转移关系,用Verilog 进行状态机的描述;
状态机的描述法:一般采用三段式描述法:
(第一段:用时序逻辑说明现态和次态之间的转移关系)
(第二段:用组合逻辑描述状态转移图中的转移关系)
(第三段:用组合逻辑描述电路的最终输出信号)
3.根据状态机设计步骤,设计一个状态机:检测序列1010,当检测到该序列时候,输入信号led_out变为高电平
1.选择mealy型状态机:
检测序列1010状态机状态图
检测序列1010状态机
检测序列1010状态机testbench
检测序列1010状态机仿真波形