1、第第 10 讲讲 有限状态机有限状态机(moore型型) 设计设计电子设计自动化技术教教 学学 目目 的的 l 认识状态机及其特点认识状态机及其特点l 学习状态转移图的画法学习状态转移图的画法l 掌握摩尔(掌握摩尔(MOORE)型状态机的)型状态机的VHDL设计法设计法1 什么是状态机什么是状态机 ? 有限状态机有限状态机(简称状态机简称状态机)相当于一个控制器,相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻状态之
2、间进行转换,状态转换的过程就是实现逻辑功能的过程。辑功能的过程。2 为什么使用状态机为什么使用状态机 l 有限状态机克服了纯硬件数字系统顺序方式控制不灵有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。活的缺点。l 状态机的结构模式相对简单。状态机的结构模式相对简单。l 状态机容易构成性能良好的同步时序逻辑模块。状态机容易构成性能良好的同步时序逻辑模块。l 状态机的状态机的VHDL表述丰富多样,结构清晰。表述丰富多样,结构清晰。l 在高速运算和控制方面,状态机更有其巨大的优势。在高速运算和控制方面,状态机更有其巨大的优势。l 就可靠性而言,状态机的优势也是十分明显的。就可靠性而言,状态机
3、的优势也是十分明显的。3 状态机分类状态机分类 根据输出信号产生的机理不同,状态机可以分成两类:根据输出信号产生的机理不同,状态机可以分成两类:l摩尔摩尔(Moore)型状态机型状态机-输出信号仅和状态有关输出信号仅和状态有关l米勒米勒(Mealy)型状态机型状态机-输出信号和状态、输入信号有关输出信号和状态、输入信号有关用户定义的数据类型用户定义的数据类型枚举枚举格式:格式:TYPE 数据类型名数据类型名 数据类型定义数据类型定义枚举类型枚举类型格式:格式:TYPE 数据类型名数据类型名 IS(元素元素1,元素,元素2,);例:例:TYPE week IS (sun,mon,tue,wed,
4、thu,fri,sat); TYPE colour IS (red,green,blue); 枚举数据类型是一种特殊的数据类型,它是用枚举数据类型是一种特殊的数据类型,它是用文字符号来表示一组实际的二进制数。文字符号来表示一组实际的二进制数。用户定义的数据类型用户定义的数据类型枚举枚举VHDL语言中,许多常用的数据类型,都是采用枚举类型定义的语言中,许多常用的数据类型,都是采用枚举类型定义的例:例:TYPE BOOLEAN IS (FALSE,TRUE); TYPE BIT IS (0, 1); TYPE std_ulogic IS ( U, - Uninitialized X, - Forc
5、ing Unknown 0, - Forcing 0 1, - Forcing 1 Z, - High Impedance W, - Weak Unknown L, - Weak 0 H, - Weak 1 - - Dont care );4 Moore型状态机型状态机设计设计方法方法摩尔型状态机的典型结构状态寄存器组合电路输出Yc1k组合电路输入X4 Moore型状态机设计方法型状态机设计方法 More型状态机输出仅和状态机的当前型状态机输出仅和状态机的当前状态有关,与外部输入无关,即状态有关,与外部输入无关,即: 外部输出是内部状态的函数。外部输出是内部状态的函数。 输入信号的变化决定当前
6、状态的下一状输入信号的变化决定当前状态的下一状态,即次态。态,即次态。状态转移图描述方式:状态转移图描述方式:Si/ZOiData_INi例:设计一个序列检测器。要求检测器连续收到例:设计一个序列检测器。要求检测器连续收到串行码串行码11011101后,输出检测标志后,输出检测标志1 1,否则输出,否则输出0 0。状态机设计步骤:状态机设计步骤: 分析设计要求,列出全部可能状态;分析设计要求,列出全部可能状态; 画出状态转移图;画出状态转移图; 用用VHDLVHDL语言描述状态机。语言描述状态机。4 Moore型状态机设计方法型状态机设计方法 (1 1) 分析设计要求,列出全部可能状态分析设计
7、要求,列出全部可能状态: : 未收到一个有效位(未收到一个有效位(0 0):S0S0 收到一个有效位(收到一个有效位(1 1):S1S1 连续收到两个有效位(连续收到两个有效位(1111):S2S2 连续收到三个有效位(连续收到三个有效位(110110):S3 S3 连续收到四个有效位(连续收到四个有效位(11011101):S4S44 Moore型状态机设计方法型状态机设计方法(2 2) 状态转移图状态转移图: : 1101S0/0S1/0S2/0S4/1S3/01101010100Si/ZOiData_INi4 Moore型状态机设计方法型状态机设计方法4 Moore型状态机设计方法型状态
8、机设计方法(3)用)用VHDL语言描述状态机语言描述状态机l 定义状态机定义状态机 枚举类型枚举类型l 状态转换描述状态转换描述l 输出信号描述输出信号描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY moore ISPORT( clk, data:IN STD_LOGIC; zo:OUT STD_LOGIC);END moore; 实体设计实体设计12.4 Moore型状态机设计方法型状态机设计方法ARCHITECTURE a OF moore ISTYPE STATE IS (S0,S1,S2,S3,S4);SIGNAL pstate :S
9、TATE;BEGIN PROCESS(clk) BEGIN IF (clkEVENT AND clk=1) THEN CASE pstate is WHEN S0= IF data=1 THEN pstate=S1; ELSE pstate IF data=1 THEN pstate=S2; ELSE pstate IF data=0 THEN pstate=S3; ELSE pstate IF data=1 THEN pstate=S4; ELSE pstate IF data=1 THEN pstate=S1; ELSE pstate=S0; END IF; END CASE; END I
10、F; END PROCESS; zo=1 WHEN pstate=s4 ELSE 0;END a; 定义状态机定义状态机输出信号描述输出信号描述状态转移描述状态转移描述4 Moore型状态机设计方法型状态机设计方法仿仿 真真 波波 形形4 Moore型状态机设计方法型状态机设计方法练习:练习:位于十字路口的交通灯,在位于十字路口的交通灯,在A A方向和方向和B B方向方向各有红、黄、绿三盏灯,每各有红、黄、绿三盏灯,每1010秒变换一次。变换秒变换一次。变换顺序如下表:顺序如下表:A方向方向B方向方向绿绿红红黄黄红红红红绿绿红红黄黄4 Moore型状态机设计方法型状态机设计方法交通灯的全部状态
11、及输出:交通灯的全部状态及输出:状态状态A方向方向(红绿黄)(红绿黄)B方向方向(红绿黄)(红绿黄)状态状态A方向方向(红绿黄)(红绿黄)B方向方向(红绿黄)(红绿黄)S00 1 01 0 0S10 0 11 0 0S21 0 00 1 0S31 0 00 0 1 画出状态转移图画出状态转移图: : S001010012.4 Moore型状态机设计方法型状态机设计方法S1001100S3100001S2100010LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jtd IS PORT( clk:IN STD_LOGIC;ZO:OUT STD_LO
12、GIC_VECTOR(5 DOWNTO 0);END jtd; 实体设计实体设计12.4 Moore型状态机设计方法型状态机设计方法 ZO pstate pstate pstate pstate=S0; END CASE; END IF; END PROCESS;ARCHITECTURE a OF jtd ISTYPE STATE IS (S0,S1,S2,S3);SIGNAL pstate :STATE;定义状态机定义状态机状态转换描述状态转换描述输出信号描述输出信号描述小小 结结 状态机容易构成性能良好的数字系统控制器;状态机容易构成性能良好的数字系统控制器; 状态机可以分为摩尔型和米勒型;状态机可以分为摩尔型和米勒型; 摩尔型状态机的输出只和状态机的状态有关;摩尔型状态机的输出只和状态机的状态有关; 米勒型状态机的输出和状态机的状态及输入信号有关;米勒型状态机的输出和状态机的状态及输入信号有关; 状态机的设计步骤是分析状态、画状态转移图、状态机的设计步骤是分析状态、画状态转移图、VHDL描述描述VHDL描述一般使用枚举类型定义状态机。描述一般使用枚举类型定义状态机。