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<=5 IF state inputs =00 THEN next state<=so; ElSE next state<=s1 END IE WHEN S1 comb outputs<=8; IF state inputs = 00" THEn next state<-=sli ELSE next state<=s2; END工E WHEN S2= comb outputs<= 12; 工 F state inputs 11 Then next state < so ElSE next state < s3 END工F; WH酬Ns3→> 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<= 5; IF state_inputs = "00" THEN next_state<=s0; ELSE next_state<=s1; END IF; WHEN s1 => comb_outputs<= 8; IF state_inputs = "00" THEN next_state<=s1; ELSE next_state<=s2; END IF; WHEN s2 => comb_outputs<= 12; IF state_inputs = "11" THEN next_state <= s0; ELSE next_state <= s3; END IF; WHEN s3 => comb_outputs <= 14; IF state_inputs = "11" THEN next_state <= s3; ELSE next_state <= s0; END IF; END case; END PROCESS; END behv; 接上页