EDA技术实用教程 第7章 有限状态机设计与LPM应用
第7章 有限状态机设计与LPM应用 EDA技术实用教程
K述列 7.1一般有限状态机的设计 711用户自定义数据类型定义语句 TYPE语句用法如下: TYPE数据类型名IS数据类型定义OF基本数据类型; 或 TYPE数据类型名IS数据类型定义; 以下列出了两种不同的定义方式: TYPE stl IS ARRAY(O TO 15)OF STD_ LOGIC TYPE week Is (sun, mon, tue, wed thu fri sat)
KX 康芯科技 7.1 一般有限状态机的设计 7.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) ;
K述列 7.1一般有限状态机的设计 711用户自定义数据类型定义语句 TYPE m state Is( sto, stl, st2, st3, st4, st5)i SIGNAL present state, next state m state i 「布尔数据类型的定义语句是: TYPE BOOLEAN IS( FALSE, TRUE) TYPE my_logic Is (1,Z,U,0) SIGNAL s1: my_logic i s1<="z
KX 康芯科技 7.1 一般有限状态机的设计 7.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' ;
K述列 7.1一般有限状态机的设计 711用户自定义数据类型定义语句 子类型 SUBTYPE的语句格式如下: SUBTYPE子类型名IS基本数据类型 RANGE约束范围; SUBTYPE digits Is INTEGER RANGE 0 to 9
KX 康芯科技 7.1 一般有限状态机的设计 7.1.1 用户自定义数据类型定义语句 子类型SUBTYPE的语句格式如下: SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围; SUBTYPE digits IS INTEGER RANGE 0 to 9 ;
K述列 7.1一般有限状态机的设计 712为什么要使用状态机 ◆有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点。 ◆状态机的结构模式相对简单 ◆状态机容易构成性能良好的同步时序逻辑模块。 ◆状态机的VHDL表述丰富多样。 ◆在高速运算和控制方面,状态机更有其巨大的优势。 ◆就可靠性而言,状态机的优势也是十分明显的
KX 康芯科技 7.1.2 为什么要使用状态机 7.1 一般有限状态机的设计 有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点。 状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。 状态机的VHDL表述丰富多样。 在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的
K述列 7.1一般有限状态机的设计 713一般有限状态机的设计 1.说明部分 ARCH工 TECTUR..工S TYPE FSM ST Is (so, sl, s2, s3); s工GNAT current state next state: FSM ST
KX 康芯科技 7.1.3 一般有限状态机的设计 7.1 一般有限状态机的设计 1. 说明部分 ARCHITECTURE ...IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST;
K述列 7.1一般有限状态机的设计 713一般有限状态机的设计 2.主控时序进程 FSM:s machine current state PROCESS clk PROCESS REG COM comb_outputs reset next state state Inputs 图7-1一般状态机结构框图工作示意图
KX 康芯科技 7.1.3 一般有限状态机的设计 7.1 一般有限状态机的设计 2. 主控时序进程 comb_outputs state_inputs reset clk FSM: s_machine COM next_state current_state PRO CESS REG PRO CESS 图7-1 一般状态机结构框图工作示意图
K述列 7.1一般有限状态机的设计 713一般有限状态机的设计 3.主控组合进程 控组合进程的任务是根据外部输入的控制信号(包 括来自状态机外部的信号和来自状态机内部其它非主控 的组合或时序进程的信号),或(和)当前状态的状态 值确定下一状态( next state)的取向,即 next state 的取值内容,以及确定对外输出或对内部其它组合或时 序进程输出控制信号的内容
KX 康芯科技 3. 主控组合进程 7.1.3 一般有限状态机的设计 控组合进程的任务是根据外部输入的控制信号(包 括来自状态机外部的信号和来自状态机内部其它非主控 的组合或时序进程的信号),或(和)当前状态的状态 值确定下一状态(next_state)的取向,即next_state 的取值内容,以及确定对外输出或对内部其它组合或时 序进程输出控制信号的内容。 7.1 一般有限状态机的设计
4.辅助进程 K述列 【例7-1】 工工 BRARY工EEE; USE IEEE STD LOGIC 1164.ALL ENTITY s machine工S PORT( clk, reset :工 N STD LOG工C; state inputs IN STD LOGIC VECTOR (0 To 1)i comb outputs oUT INTEGER RANGE 0 To 15)i END s machine ARCHITECTURE ehv oF s machine Is TYPE FSM ST Is (so, sl, s2 s3)i SIGNAL current state next state: FSM ST BEG工N REG: PROCEss (reset, clk) BEG工N IF reset =i1then current state < so ElSIE clk=1 AND clK EVENT THEN current state < next statei END工F; END PROCESS i COM: PROCESS(current state, state Inputs) 接下页
KX 康芯科技 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 clk'EVENT THEN current_state <= next_state; END IF; END PROCESS; COM:PROCESS(current_state, state_Inputs) 接下页
K述列 接上页 BEG工N CASE current state Is WHEN S0→>c。 mb outputs comb outputs<=14; IF state inputs ="11 THen next state < s3 ELSE next state < so; END工F; ENd case END PROCESS end ehv
KX 康芯科技 BEGIN CASE current_state IS WHEN s0 => comb_outputs comb_outputs comb_outputs comb_outputs <= 14; IF state_inputs = "11" THEN next_state <= s3; ELSE next_state <= s0; END IF; END case; END PROCESS; END behv; 接上页