第五章 有限状态机设计;第一节 一般状态机的设计; ;;;二、有限状态机的优越性;三、一般状态机的设计;;;;;;;;;;;状态机的建立过程;二、建立状态机的主控时序进程和主控组合进程;三、在主控组合进程中定义状态的转移;第二节 Moore型有限状态机的设计;;2、 AD0809采样控制器的设计;;系统级的设计是控制器设计的步骤:
第一步,是将控制器指标规范用自然语言描述,并将其语言描述转换为真值表、状态图或算法模型的过程。
对于VHDL语言来说,系统级的设计就是用一系列相互关联的进程组成硬件算法模型,即将描述系统功能的自然语言翻译为进程,每个进程完成不同的功能,并通过进程模型图来表示。
在ADC0809控制器的设计中,可以将其划分为三个进程,即状态生成进程、状态转换进程、状态机输出进程。三部分关系见图1所示。
;;二、状态划分;;;
根据以上设计思想和VHDL语言的特点,控制器的状态生成进程以时钟信号为敏感量,当时钟发生有效跳变时,状态机的状态发生变化,即产生下一状态。而状态转换进程采用组合逻辑进程,使用CASE语句检查状态机的当前状态,然后使用IF-THEN-ELSE语句决定下一状态。这种描述风格产生结构化的VHDL代码,并且可读性好。;;;;;;;;ADC0809;注意转换输出
已改变为:7C;3、单进程Moore型有限状态机;;;;;;;第三节 Mealy型有限状态机的设计;;;
【例8-6】 MEALY2
LIBRARY IEEE; --MEALY FSM
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MEALY2 IS
PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0));
END MEALY2;
ARCHITECTURE behav OF MEALY2 IS
TYPE states IS (st0, st1, st2, st3,st4);
SIGNAL STX : states ;
SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
COMREG : PROCESS(CLK,RESET) --决定转换状态的进程
BEGIN
IF RESET =1 THEN STX = ST0;
ELSIF CLKEVENT AND CLK = 1 THEN
CASE STX IS
WHEN st0 = IF DATAIN = 1 THEN STX = st1; END IF;
WHEN st1 = IF DATAIN = 0 THEN STX = st2; END IF;
WHEN st2 = IF DATAIN = 1 THEN STX = st3; END IF;
WHEN st3= IF DATAIN = 0 THEN STX = st4; END IF;
WHEN st4= IF DATAIN = 1 THEN STX = st0; END IF;
WHEN OTHERS = STX = st0;
END CASE ; ;IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF;
END PROCESS COM1 ;
Q = Q1 ;
END behav;;
END IF;
END PROCESS COMREG ;
COM1: PROCESS(STX,DATAIN,CLK) --输出控制信号的进程
VARIABLE Q2 : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
CASE STX IS
WHEN st0 = IF DATAIN = 1 THEN Q2 := 10000 ; ELSE Q2 := 01010 ;
END IF
原创力文档

文档评论(0)