8.2.2 一般有限状态机的设计示例 例8.1二进程一般状态机的描述。 LIBRARY IEEE USE IEEE.STD LOGIC 1164.ALL; ENTITY two_process_state_machine IS PORT(clk,reset IN STD LOGIC; state_inputs IN STD LOGIC; comb outputs OUT STD_LOGIC_VECTOR(OTO 1)); END ENTITY two_process_state_machine; ARCHITECTURE behv OF two_process_state_machine IS TYPE states IS(st0,st1,st2,st3);-定义states为枚举型数据类型,构造符号化状态机 SIGNAL current_state,next_state:states; BEGIN REG:PROCESS(reset,clk)-时序逻辑进程 BEGIN IF reset='1'THEN-异步复位 current state <sto; ELSIF clk='1 AND CIk'EVENT THEN-出现时钟上升沿时进行状态转换 current_state <next_state; END IF; END PROCESS;
8.2.2 一般有限状态机的设计示例 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY two_process_state_machine IS PORT (clk, reset : IN STD_LOGIC; state_inputs : IN STD_LOGIC; comb_outputs : OUT STD_LOGIC_VECTOR(0 TO 1)); END ENTITY two_process_state_machine; ARCHITECTURE behv OF two_process_state_machine IS TYPE states IS (st0,st1,st2,st3); --定义states为枚举型数据类型,构造符号化状态机 SIGNAL current_state, next_state: states; BEGIN REG: PROCESS (reset, clk) --时序逻辑进程 BEGIN IF reset = '1' THEN --异步复位 current_state <= st0; ELSIF clk = '1' AND clk'EVENT THEN--出现时钟上升沿时进行状态转换 current_state <= next_state; END IF; END PROCESS; 例8.1 二进程一般状态机的描述
8.2,2一般有限状态机的设计示例(续1) 例8.1二进程一般状态机的描述。 COM:PROCESS(current state,state inputs)-组合逻辑进程 BEGIN CASE current_state IS WHEN st(0=>comb_outputs<="O0";-系统输出及其初始化 IF state_inputs='O'THEN-根据外部输入条件决定状态转换方向 next_state <=sto; ELSE next state <st1; END IF; WHEN st1=>comb outputs<="01"; IF state_inputs='0'THEN next_state <=st1; ELSE next state <st2; END IF; WHEN st2=>comb_outputs <="10"; IF state_inputs ='0'THEN next_state <=st2; ELSE next_state <=st3; END IF; WHEN st3=>comb_outputs<="11"; IF state inputs='0'THEN next_state <=st3; ELSE next_state <sto; END IF; END CASE; END PROCESS; END ARCHITECTURE behv;
8.2.2 一般有限状态机的设计示例(续1) COM: PROCESS(current_state, state_inputs) --组合逻辑进程 BEGIN CASE current_state IS WHEN st0 => comb_outputs <= "00"; --系统输出及其初始化 IF state_inputs = '0' THEN --根据外部输入条件决定状态转换方向 next_state <= st0; ELSE next_state <= st1; END IF; WHEN st1=> comb_outputs <= "01"; IF state_inputs = ‘0’ THEN next_state <= st1; ELSE next_state <= st2; END IF; WHEN st2=> comb_outputs <= "10"; IF state_inputs = ‘0’ THEN next_state <= st2; ELSE next_state <= st3; END IF; WHEN st3=>comb_outputs <= "11"; IF state_inputs = ‘0’ THEN next_state <= st3; ELSE next_state <= st0; END IF; END CASE; END PROCESS; END ARCHITECTURE behv; 例8.1 二进程一般状态机的描述