K康芯科骏 5.1状态机设计相关语句 5.1.3状态机结构 2.主控时序进程 FSM:s machine clk- PROCESS current state PROCESS REG COM comb outputs reset next state state_inputs 图5-1一般状态机结构框图
KX 康芯科技 5.1 状态机设计相关语句 5.1.3 状态机结构 2. 主控时序进程 comb_outputs state_inputs reset clk FSM: s_machine COM next_state current_state PROCESS REG PROCESS 图5-1 一般状态机结构框图
K康还科技 5.1状态机设计相关语句 5.1.3状态机结构 3.主控组合进程 4.辅助进程
KX 康芯科技 5.1 状态机设计相关语句 5.1.3 状态机结构 3. 主控组合进程 4. 辅助进程
K能还科液 【例5-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) -一主控组合进程 (接下页)
KX 康芯科技 【例5-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康还科技 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;
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;
K康恋科技 5.1状态机设计相关语句 5.1.3 状态机结构 Name: Value: 500.0ns 1.0us 1.5us2.0us 2.5us 3.0us3.5us 4.0us 4.5 -reset 0 工-ck 0 state_inputs HO 0 3 0 2 0 comb_outputs H5 C 8 C 5 current state HO 0 1 0 图5-2例5-1状态机的工作时序
KX 康芯科技 5.1 状态机设计相关语句 5.1.3 状态机结构 图5-2 例5-1状态机的工作时序