一般有限状态机的设计
一般有限状态机一般有限状态机一般有限状态机一般有限状态机的设计的设计的设计的设计EDA技术实用教程 一般有限状态机的设计1.1 用户自定义数据类型定义语句TYPE语句用法如下:TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型;或TYPE 数据类型名 IS 数据类型定义;以下列出了两种不同的定义方式:TYPE st1 IS ARRAY(0 TO 15)OF STD_LOGIC;TYPE week IS(sun,mon,tue,wed,thu,fri,sat);一般有限状态机的设计1.1 用户自定义数据类型定义语句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;一般有限状态机的设计1.1 用户自定义数据类型定义语句子类型SUBTYPE的语句格式如下:SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;SUBTYPE digits IS INTEGER RANGE 0 to 9;1.2 为什么要使用状态机 一般有限状态机的设计 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态机的结构模式相对简单。状态机容易构成性能良好的同步时序逻辑模块。状态机的VHDL表述丰富多样。在高速运算和控制方面,状态机更有其巨大的优势。就可靠性而言,状态机的优势也是十分明显的。1.3 一般有限状态机的设计 一般有限状态机的设计1.说明部分ARCHITECTURE.IS TYPE FSM_ST IS(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;.1.3 一般有限状态机的设计 一般有限状态机的设计2.主控时序进程图7-1 一般状态机结构框图工作示意图3.主控组合进程1.3 一般有限状态机的设计 控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。一般有限状态机的设计4.辅助进程【例7-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS PORT(clk,reset :IN STD_LOGIC;state_inputs:IN STD_LOGIC_VECTOR(0 TO 1);comb_outputs:OUT INTEGER RANGE 0 TO 15);END s_machine;ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;BEGIN REG:PROCESS(reset,clk)BEGIN IF reset=1 THEN current_state=s0;ELSIF clk=1 AND clkEVENT THEN current_state comb_outputs=5;IF state_inputs=00 THEN next_state=s0;ELSE next_state comb_outputs=8;IF state_inputs=00 THEN next_state=s1;ELSE next_state comb_outputs=12;IF state_inputs=11 THEN next_state=s0;ELSE next_state comb_outputs=14;IF state_inputs=11 THEN next_state=s3;ELSE next_state=s0;END IF;END case;END PROCESS;END behv;接上页1.3 一般有限状态机的设计 一般有限状态机的设计4.辅助进程图7-2 例7-1状态机的工作时序图 谢谢观看!谢谢观看!谢谢观看!谢谢观看!EDA技术实用教程