WHEN S3=>IF w3=’1’THEN
state<=S0;
END IF;
END CASE;
END IF;
END PROCESS;
c1<=’1’WHEN state=S0 ELSE’0’;
c2<=’1’ WHEN state=S2 ELSE’0’;
c3<=’1’ WHEN(state=S1 OR state=S3)ELSE’0’;
r1<=’1’ WHEN(state=S2OR state=S3)ELSE’0’;
g1<=’1’ WHEN state=S0 ELSE’0’;
y1<=’1’ WHEN state=S1 ELSE’0’;
r2<=’1’ WHEN(state=S0 OR state=S1)ELSE’0’;
g2<=’1’ WHEN state=S2 ELSE’0’;
y2<=’1’ WHEN state=S3 ELSE’0’;
END beh_control;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY timer IS ——定时器实体说明
PORT(clk,c:IN STD_LOGIC;
d:IN INTEGER RANGE 1TO 31;
w:OUT STD_LOGIC);
END timer;
ARCHITECTURE beh_timer OF timer IS ——定时器结构体
BEGIN
PROCESS(clk)
VARIABLE cnt: INTEGER RANGE 0 TO 31;
BEGIN
IF(clk=’1’)THEN
IF(c=’1’AND cnt>0)THEN
cnt:=cnt-1;
ELSE
cnt:=d;
END IF;
END IF;
IF cnt=0 THEN
w<=’1’;
ELSE
w<=’0’;
END IF;
END PROCESS;
END beh_timer;
完成了上述两个基本模块,可以形成顶层文件,在MAX+plusII环境下进行编译和仿真,验证系统功能是否正确,如果出现错误,需要进行修改,直到完全通过为止。当设计人员确定设计工作已基本成功时,即可通过编程电缆下载数据流来进行硬件验证。验证合格后,总体设计工作即圆满结束。该系统在编写控制器的源程序时,有多种编写方法,以下是控制器的VHDL程序的另外两种定义方法:
(1)
…
ARCHITECTURE con1_arc OF con1 IS
SIGNAL current_state:state;
BEGIN
…
在进行时序分析时,却出现了不按设定的计数顺序工作的结果:14,13,2,1,0… 经过反复修改调试,对程序进行修改,如(2)所示:
(2)
ARCHITECTURE con1_arc OF con1 IS
SIGNAL current_state:state;
SIGNAL TEMP_STATE:state;
...
TEMP STATE<=current_state;
BEGIN
...
在这种设计方法中,多定义了一个信号变量,从而使得程序能按设定的状态14,13,12,11…进行转换。
从上述可知:EDA技术的优越性在于可以直接从程序中修改错误及系统功能,而不需要硬件电路的支持, 即把后期进行的系统调试转移到设计实现之前在计算机上进行的功能仿真和时序仿真。使系统的功能修改及调试比较方便、快捷、准确,既缩短了研发周期,又大大节约了成本。
6 结语
电子系统的设计输入可以用原理图、波形、VHDL语言等方式输入,下载配置前的整个过程几乎不涉及到整个硬件,而硬件设计的修改也如同修改软件程序一样快捷方便,即通过软件方式的设计与测试,达到对特定功能的硬件电路的设计实现,这种现代电子系统设计技术采用自顶向下分层次、模块化设计方法,先化整为零,再优化综合,灵活通用,已成为研制、开发数字系统最理想的选择,是现代电子电路设计方法的一个趋势,体现了硬件设计向软件化方向发展的新思路。