主控时序进程 负责状态机运转,在时钟驱动下完成状态转 换 必须由ck信号驱动 将次态的状态量送入现态的状态量 current state < next state
主控时序进程 ❖ 负责状态机运转,在时钟驱动下完成状态转 换 ❖ 必须由 clk 信号驱动 ❖ 将次态的状态量 送入 现态的状态量 current_state <= next_state
主控组合进程 根据外部输入的控制信号 (包括来自状态机外部的信号和来自状态机内部其它非主控的 组合或时序进程的信号), 或(和)当前状态的状态值 确定下一状态( next state)的取向, 即 next state的取值内容, 以及确定对外输出或 对内部其它组合或时序进程 输出控制信号的内容
主控组合进程 ❖ 根据外部输入的控制信号 (包括来自状态机外部的信号和来自状态机内部其它非主控的 组合或时序进程的信号), 或(和)当前状态的状态值 确定下一状态(next_state)的取向, 即next_state的取值内容, 以及确定对外输出 或 对内部其它 组合 或 时序进程 输出控制信号的内容
辅助进程 配合状态机工作的组合或者时序进程
辅助进程 ❖ 配合状态机工作的组合或者时序进程
状态机的结构举例(一) 1. LIBARY EEE. 2. USE IEEE STD LOGIC 1164ALL 3. ENTITY s machine s PORT( cIk, reset N STD LOGIC. 456 state inputs: IN STD LOGIC VECTOR(O DOWNTO comb outputs OUT INTEGER RANGE0 TO 1 7. END ENTITY s machine 8. ARCHITECTURE BEHAV OF s machine 9. TYPE FSM STIS (SO, S1, S2, S3); 10. SIGNAL current state, next state: FSM ST 11. BEGIN
状态机的结构举例(一) 1. LIBARY IEEE; 2. USE IEEE.STD_LOGIC_1164.ALL; 3. ENTITY s_machine IS 4. PORT ( clk, reset : IN STD_LOGIC; 5. state_inputs: IN STD_LOGIC_VECTOR(0 DOWNTO 1); comb_outputs:OUT INTEGER RANGE 0 TO 15 6. ); 7. END ENTITY s_machine; 8. ARCHITECTURE BEHAV OF s_machine IS 9. TYPE FSM_ST IS ( s0, s1, s2, s3 ); 10. SIGNAL current_state, next_state: FSM_ST; 11. BEGIN
状态机的结构举例(续一) 1. REG PROCESS reset, clk 23456789 IF reset =1 THEN current state <=so ELSIF CIK =1AND CIKk'EVENT THEN current < next state END F END PROCESS
状态机的结构举例(续一) 1. REG: 2. PROCESS ( reset, clk ) 3. 4. IF reset = '1' THEN 5. current_state <= s0; 6. ELSIF clk = '1' AND clk'EVENT THEN 7. current <= next_state; 8. END IF; 9. END PROCESS;