下面以Alter公司的可编程器件的开发工具MAX+plusII为平台,采用层次化设计方法,设计一个十字路口的交通信号灯的控制电路。

5 EDA技术的应用
设计一个十字路口的交通控制电路,通过红(R)、黄(Y)、绿(G)灯控制东西和南北两道交叉路口的交通,要求两道的通行时间T1、T2,红绿灯交替时间为T3,图2是该系统控制器示意图。

图2 路口交通控制器示意图
实现路口交通灯系统的控制方法很多,可以用标准逻辑器件、可编程序控制器和单片机等方案来实现,但这些控制方法的功能修改及调试需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。因此在设计中采用EDA技术中的VHDL硬件描述语言,以MAX+plusII开发环境进行综合仿真,并下载到CPLD可编程逻辑器件中,完成系统的控制作用。
在图2 中,C1、C2、C3为各定时器的使能控制信号,W1、W2、W3为为各定时器的状态信号,定时时间到输出为1,定时时间未到输出为0。该系统中的定时器可采用带预置功能的减法计数器实现,控制器可采用CPLD器件EPM7128系列芯片,秒脉冲信号CLK可由晶体振荡器输出经过分频后产生,当精度和稳定性要求不高时,可采用RC环形振荡器,555定时器或其它电路产生。根据该系统的要求,控制器的工作流程图如图3。

图3 交通控制器的工作流程图
控制器(control)和三个定时器(timer)均为VHDL描述,该源程序中三个定时器的功能完全一样,只是工作的预置数不同,所以只定义一个实体[2]。控制器和定时器的源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY control IS —— 控制器实体说明
PORT(clk,reset,w1,w2,w3:IN STD_LOGIC);
END control;
ARCHITECTURE beh_control OF control IS ——控制体结构体
TYPE state_type IS (S0,S1,S2,S3);
SIGNAL state:state_type;
BEGIN
PROCESS(clk,reset)
BEGIN
IF reset=’1’THEN
State<=S0;
ELSIF(clk’EVENT AND clk=’1’)THEN
CASE state IS
WHEN S0=>IF w1=’1’THEN
state<=S1;
END IF;
WHEN S1=>IF w3=’1’THEN
state<=S2;
END IF;
WHEN S2=>IF w2=’1’THEN
state<=S3;
END IF;
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语言等方式输入,下载配置前的整个过程几乎不涉及到整个硬件,而硬件设计的修改也如同修改软件程序一样快捷方便,即通过软件方式的设计与测试,达到对特定功能的硬件电路的设计实现,这种现代电子系统设计技术采用自顶向下分层次、模块化设计方法,先化整为零,再优化综合,灵活通用,已成为研制、开发数字系统最理想的选择,是现代电子电路设计方法的一个趋势,体现了硬件设计向软件化方向发展的新思路。