状态机的设计(选讲)ppt培训课件

上传人:aa****6 文档编号:57404144 上传时间:2018-10-21 格式:PPT 页数:77 大小:863.50KB
返回 下载 相关 举报
状态机的设计(选讲)ppt培训课件_第1页
第1页 / 共77页
状态机的设计(选讲)ppt培训课件_第2页
第2页 / 共77页
状态机的设计(选讲)ppt培训课件_第3页
第3页 / 共77页
状态机的设计(选讲)ppt培训课件_第4页
第4页 / 共77页
状态机的设计(选讲)ppt培训课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《状态机的设计(选讲)ppt培训课件》由会员分享,可在线阅读,更多相关《状态机的设计(选讲)ppt培训课件(77页珍藏版)》请在金锄头文库上搜索。

1、有限状态机设计,一、为什么要使用有限状态机,什么是状态机 二、有限状态机的分类及表示 三、有限状态机的设计举例 四、有限状态机的状态编码 五、有限状态机的多余状态,为什么要使用状态机, 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。, 状态机的结构模式相对简单。, 状态机容易构成性能良好的同步时序逻辑模块。, 状态机的VHDL表述丰富多样。, 在高速运算和控制方面,状态机更有其巨大的优势。, 就可靠性而言,状态机的优势也是十分明显的。,回忆计数器设计,设计一电路,包含模4计数器,和译码输出模块。计数器的输出(Present_value)从0到3循环;当计数值为2时,译码输出(Data

2、Out)为“1”,否则输出“0”。,Clk,Present_value Q(n),Next_value Q(n+1),译码,DataOut Z(n),00/0,01/0,10/1,11/0,00/0,01/0,10/1,11/0,扩展一个输入端din,当din = 1时计数器递增计数;当din = 0时计数器递减计数。,再将计数器修改成一个状态转换器,状态为S0, S1, S2, S3。每个状态的取值根据具体情况而定。比如S0 = 00, S1 = 11, S3 = 01, S4 = 10。,再将计数器修改成一个状态转换器,状态为S0, S1, S2, S3。每个状态的取值根据具体情况而定。比

3、如S0 = 00, S1 = 11, S3 = 01, S4 = 10。,现在我们得到了一个 比较通用的时序电路, 这种电路统称为状态 机(State Machine)。,语音信箱控制系统用于控制对语音信箱的有关操作,允许用户发送信息、重阅信息、存储信息和擦除信息,状态转移图如图。,状态机的应用1、语音信箱控制系统,设计一个空调系统的有限状态自动机,它的两个输入端TEMP_HIGH 和TEMP_LOW分别与传感器相连,用于检测室内温度。如果室内温度正常,则TEMP_HIGH和TEMP_LOW均为0。如果室内温度过高,则TEMP_HIGH为1,TEMP_LOW为0 。如果室内温度过低,则TEMP

4、_HIGH为0, TEMP_LOW为1。根据TEMP_HIGH 和TEMP_LOW的值来判断当前的状态(太热TOO_HOT,太冷 TOO_COLD或适中JUST_RIGHT),并决定HEAT和COOL的输出值。,状态机的应用2、空调系统,状态机(STATE MACHINE)可以说是一个广义时序电路,触发器, 计数器,移位寄存器都算是它的特殊功能的一种.在电子设计自动化应用当中,状态机经常是担任CPU 的功能,从某种意义上讲状态机的应用让系统具有了智能化的功能.传统的逻辑电路设计在描述状态机的表示上,以状态图(STATE DIAGRAM)方式最为清晰且容易理解.根据输入,输出及状态关系,状态图可

5、以分为: 1. 状态&输出(输出仅与状态有关) 2.输入&状态&输出(输出与状态输入有关),有限状态机可以高效的用来实现控制功能。状态机可以分为两种基本类型:Mealy型状态机和Moore型状态机。Moore型状态机的输出仅是当前状态的函数,属于同步输出状态机。 Mealy型状态机的输出是当前状态和输入信号的函数,不依赖时钟的同步,属于异步输出状态机。,状态机分类,数字系统控制单元通常用有限状态机(FSM)建模。 Moore型的输出只是当前值的函数; Mealy型的输出为当前值和输入值的函数。 模型如图所示。,Moore型,Mealy型,状态机的表示方法1,方法一:状态转换表,状态机的表示方法

6、2,方法二:算法流程图,方法与软件程序的流程图类似,状态转换表和算法流程图都不适合复杂系统的设计,状态机的表示方法3,方法三:状态转换图,状态1,状态4,状态2,状态3,入,/出,入,入,入,/出,/出,/出,Moore,条件控制定序,直接控制定序,状态机的表示方法3,方法三:状态转换图,状态1,状态4,状态2,状态3,入,/出,入,入,入,/出,/出,/出,/出,Mealy,条件控制定序,直接控制定序,状态机的代码实现,状态 寄存器,输出 译码,下一状 态译码,clk,时序进程,组合进程,1. 说明部分,2. 时序进程,ARCHITECTURE . ISTYPE ST IS (s0,s1,s

7、2,s3); SIGNAL current_state, next_state: ST; .,3.组合进程,在时钟信号的作用下,负责状态的转换。,4.辅助进程,根据输入信号和当前状态的取值(current_state)确定下一状态(next_state)的取值,确定输出或产生内部其它组合进程或时序进程所需的控制信号。,配合时序进程或组合进程工作的数据锁存器等进程。,有限状态机的程序构成,用户自定义数据类型定义语句,TYPE语句用法如下:TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; 或 TYPE 数据类型名 IS 数据类型定义 ;,以下列出了两种不同的定义方式:TYPE st

8、1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ;TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;,TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ;SIGNAL present_state,next_state : m_state ;,布尔数据类型的定义语句是:TYPE BOOLEAN IS (FALSE,TRUE) ;,TYPE my_logic IS ( 1 ,Z ,U ,0 ) ;SIGNAL s1 : my_logic ;s1 = Z ;,状态机的设计举例,例子:设计一个二进制序列

9、检测器,当检测到10110序列时,就输出1(一个时钟周期的脉冲)。其他情况下输出0。规定检测到一次之后,检测器复位到最初始的状态,重新从头检测。如下所示:,输入:01101101101100,输出:00000001000001,状态转换图设计(Moore),1,0,1,1,0,S0/0,S1/0,S2/0,S3/0,S4/0,S5/1,Reset,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,1,0,s1,s2,s3,s4,s5,s0,问题1:如何保证状态机在初始时状态为s0?,问题2:在状态机跑飞,即脱离有效状态(s0s5)时,如何使状态机能恢复工作,Sx/0,波形,波形如下图

10、所示,问题:如果需要将输出脉冲往前推一个时钟周期,该如何修改设计?,1,0,1,1,0,1,0,1,1,0,s1,s2,s3,s4,s5,s0,输入,时钟,输出,当前状态,发现当当前壮态为s4,并且输入为0时,输出为1。,状态转换图设计(Mealy),S0,S1,S2,S3,S4,S5,Reset,1,0,0,1,1,0,1,0,0,1,0,1,sX,/0,/0,/0,/0,/0,/0,/0,/0,/0,/1,/0,/0,1,0,1,1,0,1,0,1,1,0,s1,s2,s3,s4,s5,s0,/0,0/1,s0,状态机的代码实现,状态定义 Architecture rtl of Syn i

11、s - 其他信号定义。 Type SynFsmState is ( s0, s1, s2, s3, s4, s5); Signal SynCst, SynNst : SynFsmState; Begin - 结构体。 End rtl;,状态机的代码实现,状态寄存器进程描述,状态 寄存器,输出 译码,下一状 态译码,clk,状态机的代码实现,状态寄存器进程描述,状态 寄存器,输出 译码,下一状 态译码,当前状态,输出,下一状态,输入,时钟clk,状态寄存器进程描述,Process( clk, Reset ) Begin if( Reset = 1 ) then SynCst = S0; - 初始

12、状态。elsif( clkevent and clk = 1 ) thenSynCst when s1 =,when s5 =End case; End process;,if( din = 1 ) then SynNst = s1;else SynNst SynNst when s1 =,when s5 =when others =End case; End process;,Moore,Mealy,Dout = 0;,Dout = 0;,Dout n2 设为状态s2;输出为y=10; n1 n2 设为状态s3;输出为y=01; 输入有四种情况, 分别为00,01,10,11。,1 双进程有

13、限状态机描述如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;entity state is port ( n1, n2, clk: in std_logic;y: out std_logic_vector(1 downto 0);end state;,architecture stamach of state is type statype is (s1, s2, s3); -自定义statype类型signal present_state , next_state : statype; signal n: std_logic_vector(1 downto 0);beginn y=”00”; -现态为s1时,输出”00”if (n=”10”) then next_state=s2; -输入为”10”,次态为s2elsif (n=”01”) then next_state=s3; -输入为”01”,次态为s3else next_state=s1; end if;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号