编辑: 雷昨昀 | 2019-09-01 |
1 什么是状态机 有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程. 8.2 为什么使用状态机 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点. 状态机的结构模式相对简单. 状态机容易构成性能良好的同步时序逻辑模块. 状态机的VHDL表述丰富多样. 在高速运算和控制方面,状态机更有其巨大的优势. 就可靠性而言,状态机的优势也是十分明显的. 8.3 状态机分类 根据输出信号产生的机理不同,状态机可以分成两类:摩尔(Moore)型状态机--输出信号仅和状态有关米勒(Mealy)型状态机--输出信号和状态与输入信号有关 8.4 Moore型状态机设计方法 More型状态机输出仅和存储电路的状态有关,与外部输入无关,即: 外部输出是内部状态的函数. 状态转移图描述方式: Si/ZOi Data_INi 例:设计一个序列检测器.要求检测器连续收到串行码{1101}后,输出检测标志1,否则输出0. 状态机设计步骤: ① 分析设计要求,列出全部可能状态;
② 画出状态转移图;
③ 用VHDL语言描述状态机. 8.4 Moore型状态机设计方法 (1) 分析设计要求,列出全部可能状态: 未收到一个有效位(0) :S0 收到一个有效位(1):S1 连续收到两个有效位(11):S2 连续收到三个有效位(110):S3 连续收到四个有效位(1101):S4 8.4 Moore型状态机设计方法 (2) 状态转移图:
1101 S0/0 S1/0 S2/0 S4/1 S3/0
1 1
0 1
0 1
0 1
0 0 Si/ZOi Data_INi 8.4 Moore型状态机设计方法 8.4 Moore型状态机设计方法 (3)用VHDL语言描述状态机 说明部分:主要是设计者使用TYPE语句定义新的数据类型,如:TYPE states IS (st0, st1, st2, st3, st4, st5)SIGNAL present_state, next_state: states;
主控时序逻辑部分:任务是负责状态机运转和在外部时钟驱动下实现内部状态转换的进程.时序进程的实质是一组触发器,因此,该进程中往往也包括一些清零或置位的输入控制信号,如Reset信号.主控组合逻辑部分:任务是根据状态机外部输入的状态控制信号(包括来自外部的和状态机内部的非进程的信号)和当前的状态值current_state来确定下一状态next_state的取值内容,以及对外部或对内部其他进程输出控制信号的内容.辅助逻辑部分:辅助逻辑部分主要是用于配合状态机的主控组合逻辑和主控时序逻辑进行工作,以完善和提高系统的性能. LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY moore ISPORT( clk, data:IN STD_LOGIC;
zo:OUT STD_LOGIC);
END moore;
ARCHITECTURE a OF moore ISTYPE STATE IS (S0,S1,S2,S3,S4);
SIGNAL current_state,next_state :STATE;
BEGIN p1: PROCESS(clk) BEGIN IF (clk'EVENT AND clk='1') THEN current_state IF data='1' THEN next_state