有限状态机(FSM)的设计.ppt

上传人:牧羊曲112 文档编号:6300359 上传时间:2023-10-15 格式:PPT 页数:23 大小:834.51KB
返回 下载 相关 举报
有限状态机(FSM)的设计.ppt_第1页
第1页 / 共23页
有限状态机(FSM)的设计.ppt_第2页
第2页 / 共23页
有限状态机(FSM)的设计.ppt_第3页
第3页 / 共23页
有限状态机(FSM)的设计.ppt_第4页
第4页 / 共23页
有限状态机(FSM)的设计.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《有限状态机(FSM)的设计.ppt》由会员分享,可在线阅读,更多相关《有限状态机(FSM)的设计.ppt(23页珍藏版)》请在三一办公上搜索。

1、第4章 有限状态机FSM(简称状态机)的VHDL设计,一、有限状态机的基本概念1、有限状态机的基本结构和功能 有限状态机(Finite State Machine,简称FSM)是一种十分重要的时序逻辑电路,由状态寄存器和组合逻辑电路组成,是数字逻辑电路以及数字系统的重要组成部分,尤其应用于数字系统核心部件(控制单元)的设计,以实现高效率高可靠性的逻辑控制。,有限状态机可实现以下两种基本操作:(1)状态机内部状态转换。由状态译码器根据当前状态和输入信号确定。(2)产生输出信号序列。由输出译码器根据状态机当前状态和输入信号确定。,2、有限状态机的分类 在实际的应用中,根据有限状态机是否使用输入信号

2、,经常将其分为Moore型有限状态机和Mealy型有限状态机两种类型。1、Moore型有限状态机 其输出信号仅与当前状态有关,即可以把Moore型有限状态的输出看成是当前状态的函数。,2、Mealy型有限状态机 其输出信号不仅与当前状态有关,而且还与所有的输入信号有关,即可以把Mealy型有限状态机的输出看成是当前状态和所有输入信号的函数。,二、一般有限状态机的设计 用VHDL语言描述状态机的常用方法有两种:三进程(PROCESS)语句描述分别对次态组合逻辑电路、输出组合逻辑电路和状态寄存器进行描述。两进程(PROCESS)语句描述将两个组合逻辑电路用一个进程语句语句描述,用另一个进程语句描述

3、状态寄存器。当然也可以用单进程描述。1、一般有限状态机的VHDL组成:主要使用TYPE语句定义新的数据类型,如:TYPE states IS(st0,st1,st2,st3,st4,st5);SIGNAL present_state,next_state:states;:负责状态机运转和在外部时钟驱动下实现内部状态转换的进程。时序进程的实质是一组触发器,因此,该进程中往往也包括一些清零或置位的输入控制信号,如Reset信号。:根据状态机外部输入的状态控制信号(包括来自外部的和状态机内部的非进程的信号)和当前的状态值current_state来确定下一状态next_state的取值内容,以及对外

4、部或对内部其他进程输出控制信号的内容。:辅助逻辑部分主要是用于配合状态机的主控组合逻辑和主控时序逻辑进行工作,以完善和提高系统的性能。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY two_process_state_machine ISPORT(clk,reset:IN STD_LOGIC;state_inputs:IN STD_LOGIC;comb_outputs:OUT STD_LOGIC_VECTOR(0 TO 1);END two_process_state_machine;ARCHITECTURE behv OF two_proce

5、ss_state_machine IS TYPE states IS(st0,st1,st2,st3);-定义states为枚举型数据类型,构造符号化状态机 SIGNAL current_state,next_state:states;BEGINREG:PROCESS(reset,clk)-时序逻辑进程 BEGINIF reset=1 THEN-异步复位 current_state=st0;ELSIF clk=1 AND clkEVENT THEN-出现时钟上升沿时进行状态转换 current_state=next_state;END IF;END PROCESS;,2、一般有限状态机的设计实

6、例例3.1 二进程一般状态机的描述。,COM:PROCESS(current_state,state_inputs)-组合逻辑进程 BEGIN CASE current_state IS WHEN st0=comb_outputs comb_outputs comb_outputs comb_outputs=11;IF state_inputs=0 THEN next_state=st3;ELSE next_state=st0;END IF;END CASE;END PROCESS;END ARCHITECTURE behv;,例3.1的状态转换图,例3.1的时序仿真图,例3.1的RTL图,三

7、、摩尔(Moore)状态机设计 摩尔型有限状态机输出只与当前状态有关,而与当前的输入信号值无关,并且仅在时钟边沿到来时才发生变化,是严格的现态函数。例3.2 四状态摩尔型有限状态机的描述。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY four_state_moore_state_machine IS PORT(Clk:IN STD_LOGIC;Input:IN STD_LOGIC;reset:IN STD_LOGIC;output:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END ENTITY;ARCHITECTURE

8、rtl OF four_state_moore_state_machine IS-定义枚举类型的状态机 TYPE state_type IS(s0,s1,s2,s3);以下分别用三进程,两进程和单进程描述结构体三进程:,SIGNAL CS,NS:STATE_TYPE;BEGINREG:PROCESS(CLK,RESET)-寄存器进程 BEGIN IF RESET=0 THEN CSIF INPUT=1 THEN NS IF INPUT=1 THEN NS IF INPUT=1 THEN NS IF INPUT=1 THEN NS=S0;ELSE NS=S3;END IF;,END CASE;E

9、ND PROCESS;Func2:PROCESS(cs)-由当前状态决定的输出组合逻辑进程 BEGIN CASE CS IS WHEN s0=output output output output=11;END CASE;END PROCESS;END rtl;可以把分别描述的三个进程自由组合成两个进程,甚至组合成一个进程。双进程:组合部分(次太译码和输出译码)和时序部分(寄存器)SINGAL CS,NS:STATE_TYPE;BEGINREG:PROCESS(CLK,RESET)-寄存器进程 BEGIN IF RESET=0 THEN CS=S0;ELSIF CLKEVENT AND CLK

10、=1 THEN CS=NS;END IF;END PROCESS;,FUNC:PROCESS(INPUT,CS)-次态组合逻辑译码和输出译码进程 BEGIN CASE CS IS WHEN S0=IF INPUT=1 THEN NS IF INPUT=1 THEN NS IF INPUT=1 THEN NS IF INPUT=1 THENNS=S0;ELSE NS=S3;END IF;output=“11;,单进程SIGNAL state:state_type;-定义一个信号保存当前工作状态BEGIN PROCESS(clk,input,reset)BEGIN IF reset=1 THENs

11、tate IF input=1 THENstate IF input=1 THENstate IF input=1 THENstate IF input=1 THENstate=s0;ELSE state=s3;END IF;output=“11;,END CASE;END IF;END PROCESS;END rtl;,例3.2 的时序仿真图,四、米立状态机设计 米立状态机的输出是当前状态和输入信号的函数,输出随输入变化而随时发生变化。因此,从时序的角度上看,米立状态机属于异步输出的状态机,输出不依赖于系统时钟,也不存在摩尔状态机中输出滞后一个时钟周期来反映输入变化的问题。例3.3四状态米立

12、状态机的描述。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY four_state_mealy_state_machine IS PORT(clk:IN STD_LOGIC;input:IN STD_LOGIC;reset:IN STD_LOGIC;output:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END ENTITY;ARCHITECTURE rtl OF four_state_mealy_state_machine IS-双进程结构体 TYPE state_type IS(s0,s1,s2,s3);-定义枚举类型

13、的状态机 SIGNAL state:state_type;-定义一个信号保存当前工作状态,BEGINREG:PROCESS(clk,reset)-次态组合译码和寄存器进程 BEGINIF reset=1 THEN state IF input=0 THEN state IF input=0 THEN state IF input=0 THEN state IF input=0 THEN state=s3;ELSE state=s0;END IF;END CASE;END IF;END PROCESS;,COM:PROCESS(state,input)-依据当前状态和输入信号决定输出信号,与时钟

14、无关BEGIN CASE state IS WHEN s0=IF input=0 THEN output IF input=0 THEN output IF input=0 THEN output IF input=0 THEN output=11;ELSE output=00;END IF;END CASE;END PROCESS;END rtl;,例3.3的时序仿真图,例3.3综合后的RTL图,五、状态机的状态编码 有限状态机设计是基于状态描述的,因此首先必须对系统中的每一个工作状态有一个合理的表达。对于设计者而言,为了表达简捷方便通常使用符号化状态机。二进制编码方案:是用N位二进制数,表

15、示M个工作状态,当然必须满足2N大于等于M。一位热码编码方案:用N位二进制数表示N个状态,每一位编码对应一个触发器,状态机中的每个状态都由其中一个触发器的状态来表示。六、有限状态机的技术优势设计方案相对固定,结构模式简单,可定义符号化枚举类型的状态。状态机的VHDL描述层次分明,结构清晰,易读易懂。基于有限状态机技术设计的控制器其工作速度大大优于CPU。基于有限状态机技术设计的控制器其可靠性也优于CPU。,小 结 有限状态机设计技术是进行数字电路设计的重要手段之一,尤其适合于高速高性能控制器的设计,目前在高速数据采集和数字信号序列检测方面有较多应用。本节就状态机的基本概念、编码方式以及性能优势

16、等问题进行了简要介绍,重点阐述了基于VHDL描述的有限状态机的一般设计方法、摩尔状态机设计方法和米立状态机设计方法。这些设计方法基本上是相同的,需要注意的是要明确希望的输出是同步输出还是异步输出,分别采用摩尔状态机和米立状态机进行设计,然后按照主控时序进程和主控组合进程分层次进行描述,必要时加入辅助进程。,试用状态机设计一个一位比较器,比较两个一位串行二进制数n1和n2的大小,二进制数序列由低位到高位按时钟节拍逐位输入。分析:两个数比较有三种结果:n1=n2设为状态s1,输出为y=00;n1n2设为状态s2,输出为y=10;n1n2设为状态s3,输出为y=01;输入有四种情况,分别为00,01

17、,10,11。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY state_machine IS PORT(clk,n1,n2:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END ENTITY;ARCHITECTURE rtl OF state_machine IS TYPE state_type IS(s1,s2,s3);-定义枚举类型的状态机 以下分别用两进程和单进程描述结构体,双进程:组合部分(次态译码和输出译码)和时序部分(寄存器)SIGNAL CS,NS:STATE_TYPE;SIGNA

18、L n:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN REG:PROCESS(CLK)-寄存器进程 BEGIN IF CLKEVENT AND CLK=1 THEN CSyy=10;IF n=“01”THEN NS=S3;ELSIF n=“00”OR n=“11”THEN NS=S1;ELSE NS=S2;END IF;,WHEN S3=y=01;IF n=“10”THEN NS=S2;ELSIF n=“00”OR n=“11”THEN NS=S1;ELSE NS=S3;END IF;END CASE;END PROCESS;End rt1;,单进程SIGNAL state:state_type;-定义一个信号保存当前工作状态SINGAL n:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINnyy=10;IF n=“01”THEN state=S3;ELSIF n=“00”OR n=“11”THEN state=S1;ELSE state=S2;END IF;,WHEN S3=y=01;IF n=“10”THEN state=S2;ELSIF n=“00”OR n=“11”THEN state=S1;ELSE state=S3;END IF;END CASE;END IF;END PROCESS;End rt1;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号