随着电子工程与计算机科学(EECS)的迅猛发展,数字电路系统的发展也十分迅速。电子器件在最近几十年经历了从小规模集成电路(SSI)、中规模集成电路(MSI)到大规模集成电路(LSI)以至超大规模集成电路(VLSI)的发展历程。从简单可编程器件到高密度可编程器件,设计方法也在从根本上发生转变,由原来的手工设计到现在的电子设计自动化(EDA)设计。为了提高系统的可靠性与通用性,微处理器和专用集成电路(ASIC)逐渐取代了通用全硬件LSI电路,可编程逻辑器件(PLD)尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作中,在可编程集成电路的开发过程中,EDA技术的出现带来了电子系统设计的革命性变化。
1 EDA技术的发展
EDA技术是伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(CAD)、计算机辅助工程设计(CAE)和电子系统设计自动化(ESDA)三个发展阶段。
20世纪70年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和PCB布局布线,取代了手工操作。80年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并通过电气连接网表将两者结合在一起,以实现工程设计。90年代为ESDA阶段, ESDA的基本特征是设计人员按“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键部分用一片或几片专用集成电路实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。ESDA的出现,使设计师开始实现“概念驱动工程”的梦想,从而摆脱了大量的辅助设计工作,把精力集中在创造性的方案与概念构思上,极大地提高了系统的效率,缩短了产品的研制周期。
2 EDA技术的基本特征
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。电子设计自动化工程是近几年迅速发展起来的计算机软件、硬件、微电子交叉的现代电子设计学科,它是以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以专用集成电路(ASIC)、片上系统(SOC)芯片为器件目标,以电子系统设计为应用方向的电子产品自动化设计过程[1]。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
现代EDA技术是采用高级语言描述,具有系统级仿真和综合能力,它主要采用并行工程(Concurrent Engineering)设计和自顶向下(Top-down)设计方法,其基本思想是从系统总体要求出发,分为行为描述、寄存器传输级描述、逻辑综合三个层次,将设计内容逐步细化,最后完成整体设计,这是一种全新的设计思想与设计理念。
3 EDA技术的发展趋势
进入21世纪,全定制和定制专用集成电路正成为新的发展热点,专用集成电路的设计与应用必须依靠专门的EDA工具,因此EDA技术在功能仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的巨大的挑战。EDA技
术目前正处于高速发展阶段,每年都有新的EDA工具问世,我国EDA技术的应用水平长期落后于发达国家,因此,广大电子工程人员应该尽早掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与发展的需要。
4 EDA技术的设计流程
EDA技术是将传统的“电路设计——硬件搭试——调试焊接”模式变为“功能设计——软件模拟——编程下载”方式,设计人员只需一台微机和相应的开发工具即可研制出各种功能电路。EDA技术将电子产品设计从软件编译、 逻辑化简、 逻辑综合、 仿真优化、 布局布线、 逻辑适配、 逻辑影射、 编程下载 、生成目标系统的全过程在计算机及其开发平台上自动处理完成。具体流程如图1所示:
下面以Alter公司的可编程器件的开发工具MAX+plusII为平台,采用层次化设计方法,设计一个十字路口的交通信号灯的控制电路。
5 EDA技术的应用
设计一个十字路口的交通控制电路,通过红(R)、黄(Y)、绿(G)灯控制东西和南北两道交叉路口的交通,要求两道的通行时间T1、T2,红绿灯交替时间为T3。
实现路口交通灯系统的控制方法很多,可以用标准逻辑器件、可编程序控制器和单片机等方案来实现,但这些控制方法的功能修改及调试需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。因此在设计中采用EDA技术中的VHDL硬件描述语言,以MAX+plusII开发环境进行综合仿真,并下载到 CPLD可编程逻辑器件中,完成系统的控制作用。
C1、C2、C3为各定时器的使能控制信号,W1、W2、W3为为各定时器的状态信号,定时时间到输出为1,定时时间未到输出为0。该系统中的定时器可采用带预置功能的减法计数器实现,控制器可采用CPLD器件EPM7128系列芯片,秒脉冲信号CLK可由晶体振荡器输出经过分频后产生,当精度和稳定性要求不高时,可采用RC环形振荡器,555定时器或其它电路产生。根据该系统的要求。
控制器(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
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语言等方式输入,下载配置前的整个过程几乎不涉及到整个硬件,而硬件设计的修改也如同修改软件程序一样快捷方便,即通过软件方式的设计与测试,达到对特定功能的硬件电路的设计实现,这种现代电子系统设计技术采用自顶向下分层次、模块化设计方法,先化整为零,再优化综合,灵活通用,已成为研制、开发数字系统最理想的选择,是现代电子电路设计方法的一个趋势,体现了硬件设计向软件化方向发展的新思路。