第10讲 有限状态机(moore型)的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4 Moore型状态机设计方法
仿真波形
4 Moore型状态机设计方法
练习:位于十字路口的交通灯,在A方向和B方向 各有红、黄、绿三盏灯,每10秒变换一次。变换 顺序如下表: A方向 B方向
绿
黄 红

红 绿
红Hale Waihona Puke Baidu

4 Moore型状态机设计方法
交通灯的全部状态及输出:
状态
S0 S1 S2 S3
A方向 (红绿黄) 010
电子设计自动化技术
第 10 讲 有限状态机(moore型) 设计
教学目的
认识状态机及其特点 学习状态转移图的画法 掌握摩尔(MOORE)型状态机的VHDL设计法
1 什么是状态机 ?
有限状态机(简称状态机)相当于一个控制器, 它将一项功能的完成分解为若干步,每一步对应 于二进制的一个状态,通过预先设计的顺序在各 状态之间进行转换,状态转换的过程就是实现逻 辑功能的过程。
ARCHITECTURE a OF jtd IS TYPE STATE IS (S0,S1,S2,S3); SIGNAL pstate :STATE; BEGIN PROCESS(clk) BEGIN IF (clk‟EVENT AND clk=„1‟) THEN CASE pstate is WHEN S0=> pstate<=S1; WHEN S1=> pstate<=S2; WHEN S2=> pstate<=S3; WHEN S3=> pstate<=S0; END CASE; END IF; END PROCESS;
VHDL描述 VHDL描述一般使用枚举类型定义状态机。
2 为什么使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵 活的缺点。
状态机的结构模式相对简单。
状态机容易构成性能良好的同步时序逻辑模块。
状态机的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;
4 Moore型状态机设计方法
输入 X
组合 电路 c1k
状 态 寄 存 器
组合 电路
输出 Y
摩尔型状态机的典型结构
4 Moore型状态机设计方法
More型状态机输出仅和状态机的当前 状态有关,与外部输入无关,即:
外部输出是内部状态的函数。
输入信号的变化决定当前状态的下一状 态,即次态。
状态转移图描述方式:
定义状态机
状态转换描述
输出信号描述
ZO<=“010100” WHEN pstate=s0 ELSE “001100” WHEN pstate=s1 ELSE “100010” WHEN pstate=s2 ELSE “100001”; END a;


状态机容易构成性能良好的数字系统控制器; 状态机可以分为摩尔型和米勒型; 摩尔型状态机的输出只和状态机的状态有关; 米勒型状态机的输出和状态机的状态及输入信号有关; 状态机的设计步骤是分析状态、画状态转移图、
枚举数据类型是一种特殊的数据类型,它是用 文字符号来表示一组实际的二进制数。
用户定义的数据类型——枚举
VHDL语言中,许多常用的数据类型,都是采用枚举类型定义的
例:TYPE BOOLEAN IS (FALSE,TRUE); TYPE BIT IS ('0', '1'); TYPE std_ulogic IS ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care );
3 状态机分类
根据输出信号产生的机理不同,状态机可以分成两类:
摩尔(Moore)型状态机--输出信号仅和状态有关
米勒(Mealy)型状态机--输出信号和状态、输入信号有关
用户定义的数据类型——枚举
格式: TYPE 数据类型名 数据类型定义 枚举类型格式: TYPE 数据类型名 IS(元素1,元素2,……); 例:TYPE week IS (sun,mon,tue,wed,thu,fri,sat); TYPE colour IS (red,green,blue);
S4/1
S1/0
1
S3/0
0
S2/0
4 Moore型状态机设计方法
(3)用VHDL语言描述状态机
定义状态机— 枚举类型 状态转换描述
输出信号描述
12.4 Moore型状态机设计方法
实体设计
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY moore IS PORT( clk, data:IN STD_LOGIC; zo :OUT STD_LOGIC); END moore;
Data_INi
Si/ZOi
4 Moore型状态机设计方法 例:设计一个序列检测器。要求检测器连续收到 串行码{1101}后,输出检测标志1,否则输出0。
状态机设计步骤: ① 分析设计要求,列出全部可能状态; ② 画出状态转移图; ③ 用VHDL语言描述状态机。
4 Moore型状态机设计方法
(1) 分析设计要求,列出全部可能状态:
001 100 100
B方向 (红绿黄) 100
100 010 001
12.4 Moore型状态机设计方法
画出状态转移图:
S0
———— 010100
S1
———— 001100
S3 ————
100001
S2
———— 100010
12.4 Moore型状态机设计方法
实体设计
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jtd IS PORT( clk:IN STD_LOGIC; ZO:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END jtd;
未收到一个有效位(0) 收到一个有效位(1) 连续收到两个有效位(11) 连续收到三个有效位(110) 连续收到四个有效位(1101) :S0 :S1 :S2 :S3 :S4
4 Moore型状态机设计方法 (2) 状态转移图: 1101
Si/ZOi
Data_INi
0
S0/0
0 0 1 0 1 1
1
相关文档
最新文档