当前位置:文档之家› 第8章 有限状态机设计(1)

第8章 有限状态机设计(1)

初始状态 Φ / 加锁 投币 / 开锁
加 锁
开 锁
通过 / 加锁
通过传感器
锁执行
控 制
投币传感器 加锁执行

声光报警
初始状态 加锁 通过 报警
CLK
投币 锁 投币
加 锁

通过
加锁
一、概述
关于状态机 状态机的特点 状态机的基本结构和功能
关于状态机
状态机就是事物存在状态的一种综合描述。 状态机就是事物存在状态的一种综合描述。 一个单向路口的一盏红绿灯:红灯、 例:一个单向路口的一盏红绿灯:红灯、 黄灯、绿灯。 黄灯、绿灯。 状态机就是对这盏红绿灯的3种状态进行 状态机就是对这盏红绿灯的 种状态进行 综合描述, 综合描述,说明任意两个状态之间的转变 条件。 条件。
Chapter 5 有限状态机
计算机与信息学院 毕春跃
2011.10.25
引子: 引子:
有一自动门,它可以被锁上,也可以开锁。当门 有一自动门,它可以被锁上,也可以开锁。 锁上时,某人可以在它的槽中塞进一枚硬币。这样, 锁上时,某人可以在它的槽中塞进一枚硬币。这样, 门就会自动开锁,转变到开锁的状态;人通过后, 门就会自动开锁,转变到开锁的状态;人通过后, 门就会自动锁上。 门就会自动锁上。
分析设计要求,列出全部可能状态: (1) 分析设计要求,列出全部可能状态:
未收到一个有效位( 未收到一个有效位(0) 收到一个有效位( 收到一个有效位(1) 连续收到两个有效位(11) 连续收到两个有效位(11) 连续收到三个有效位(110) 连续收到三个有效位(110) 连续收到四个有效位(1101) 连续收到四个有效位(1101) :S0 :S1 :S2 :S3 :S4
WHY? 为什么使用状态机 ?
有限状态机克服了纯硬件数字系统顺序方式控制不灵 活的缺点。 活的缺点。 状态机的结构模式相对简单。 状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。 状态机容易构成性能良好的同步时序逻辑模块。 状态机的VHDL表述丰富多样。 表述丰富多样。 状态机的 表述丰富多样 在高速运算和控制方面,状态机更有其巨大的优势。 在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的。 就可靠性而言,状态机的优势也是十分明显的。
ARCHITECTURE a OF moore IS 定义状态机 TYPE STATE IS (S0,S1,S2,S3,S4); SIGNAL pstate :STATE; BEGIN PROCESS(clk) 状态转移描述 BEGIN IF (clk’EVENT AND clk=‘1’) THEN CASE pstate is WHEN S0=> IF data=‘1’ THEN pstate<=S1; ELSE pstate<=S0; END IF; WHEN S1=> IF data=‘1’ THEN pstate<=S2; ELSE pstate<=S0; END IF; WHEN S2=> IF data=‘0’ THEN pstate<=S3; ELSE pstate<=S2; END IF; WHEN S3=> IF data=‘1’ THEN pstate<=S4; ELSE pstate<=S0; END IF; WHEN S4=> IF data=‘1’ THEN pstate<=S1; ELSE pstate<=S0; END IF; END CASE; END IF; 输出信号描述 END PROCESS; zo<=‘1’ WHEN pstate=s4 ELSE ‘0’; END a;
例:设计一个序列检测器。要求检测器连续收到 设计一个序列检测器。 串行码{1101} {1101}后 输出检测标志1 否则输出0 串行码{1101}后,输出检测标志1,否则输出0。
状态机设计步骤: 状态机设计步骤: 分析设计要求,列出全部可能状态; ① 分析设计要求,列出全部可能状态; 画出状态转移图; ② 画出状态转移图; VHDL语言描述状态机 语言描述状态机。 ③ 用VHDL语言描述状态机。
Moore型有限状态机的结构图 型有限状态机的结构图
输入 X
组组 电电 状 态 寄 存 器 组组 电电
输出 Y
c1k
Mealy型有限状态机的结构图 型有限状态机的结构图
有限状态机的主要功能: 有限状态机的主要功能:
实现一个数字系统设计中的控制部分。 实现一个数字系统设计中的控制部分。
有限状态机中的每一个状态对应于控制单元的一个 控制步; 控制步; 有限状态机中的次态和输出对应于控制单元中与每 一个控制步有关的转移条件。 一个控制步有关的转移条件。
8421循环计数器
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity autocnt is port(clk:in std_logic; q:out std_logic_vector(3 downto 0)); end autocnt; architecture a of autocnt is type state is (s0,s1,s2,s3); signal st:state; signal n:state; begin process(clk) begin if clk'event and clk='1' then st<=n; end if; end process;
process(st,clr) begin if (clr='0') then t1<='0';t2<='0';t3<='0'; else case st is when s0=> t1<='1';t2<='0';t3<='0'; when s1=> t1<='0';t2<='1';t3<='0'; when s2=> t1<='0';t2<='1';t3<='0'; when s3=> t1<='0';t2<='0';t3<='1'; when s4=> t1<='0';t2<='0';t3<='1'; when s5=> t1<='1';t2<='0';t3<='0'; end case; end if; end process; end rtl;
(2) 状态转移图 ) 状态转移图:
(3)用VHDL语言描述状态机 ) 语言描述状态机 定义状态机— 定义状态机 枚举类型 状态转换描述 输出信号描述
Moore型状态机设计方法 型状态机设计方法
(2) 状态转移图 ) 状态转移图:
Data_INi
0
1101
Si/ZOi
S0/0
0 0 1 0 1 1 1
说明部分:主要是设计者使用 语句定义新的数据类型, 说明部分:主要是设计者使用TYPE语句定义新的数据类型,如: 语句定义新的数据类型 TYPE states IS (st0, st1, st2, st3, st4, st5); SIGNAL present_state, next_state: states;
What? What?什么是状态机
有限状态机(简称状态机 相当于一个控制器 有限状态机 简称状态机)相当于一个控制器, 简称状态机 相当于一个控制器, 它将一项功能的完成分解为若干步, 它将一项功能的完成分解为若干步,每一步对应 于二进制的一个状态, 于二进制的一个状态,通过预先设计的顺序在各 状态之间进行转换, 状态之间进行转换,状态转换的过程就是实现逻 辑功能的过程。 辑功能的过程。
Moore型状态机设计方法 型状态机设计方法 More型状态机输出仅和存储电路的状 型状态机输出仅和存储电路的状 态有关,与外部输入无关, 态有关,与外部输入无关,即: 外部输出是内部状态的函数。 外部输出是内部状态的函数。
状态转移图描述方式: 状态转移图描述方式:
Data_INi
Si/ZOi
Moore型状态机设计方法 型状态机设计方法
二、一般有限状态机的组成
说明部分 说明部分中使用TYPE语句定义新的数据类型,此数据类型 语句定义新的数据类型, 说明部分中使用 语句定义新的数据类型 一般为枚举类型 例如: 例如: TYPE state_type IS (start_state,run_state,error_state); ; SIGNAL state:state_type; ; 说明部分一般放在结构体的ARCHITECTURE和BEGIN之 和 说明部分一般放在结构体的 之 间。
一般有限状态机的VHDL组成 一般有限状态机的VHDL组成 VHDL
主控时序逻辑部分:任务是负责状态机运转和在外部时 主控时序逻辑部分: 钟驱动下实现内部状态转换的进程。 钟驱动下实现内部状态转换的进程。时序进程的实质是 一组触发器,因此, 一组触发器,因此,该进程中往往也包括一些清零或置 位的输入控制信号, 信号。 位的输入控制信号,如Reset信号。 信号 主控组合逻辑部分: 主控组合逻辑部分:任务是根据状态机外部输入的状态 控制信号( 控制信号(包括来自外部的和状态机内部的非进程的信 和当前的状态值current_state来确定下一状态 号)和当前的状态值 来确定下一状态 next_state的取值内容,以及对外部或对内部其他进 的取值内容, 的取值内容 程输出控制信号的内容。 程输出控制信号的内容。 辅助逻辑部分: 辅助逻辑部分:辅助逻辑部分主要是用于配合状态机的 主控组合逻辑和主控时序逻辑进行工作, 主控组合逻辑和主控时序逻辑进行工作,以完善和提高 系统的性能。 系统的性能。
相关主题