二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件、SSI、MSI到LSI、VLSI以及UVLSI的过程。同时,为了提高系统的可靠性与通用性,微处理器和专用集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而在这二者中,ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。总的来说,ASIC的制作可粗略地分为掩膜方法和现场可编程方法两大类。目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作当中。在可编程集成电路的开发过程中,电子设计自动化(EDA)技术应运而生。EDA技术的出现,不仅为电子系统设计带来了一场革命性的变化,从某种角度来说,也成为其发展的必然。
1 EDA技术的基本特征及发展
1.1 EDA技术的基本概念
EDA(Electronics Design Automation)即电子设计自动化技术,是一种以计算机为基本工作平台,利用计算机图形学、拓扑逻辑学、计算数学以至人工智能学等多种计算机应用学科的最新成果而开发出来的一整套软件工具,是一种帮助电子设计工程师从事电子元件产品和系统设计的综合技术。
1.2 EDA技术的发展历程及发展趋势
EDA技术的发展经历了一个由浅到深的过程。二十世纪70年代,随着中小规模集成电路的开发应用,传统的手工制图设计印刷电路板和集成电路的方法已无法满足设计精度和效率的要求,因此工程师们开始进行二维平面图形的计算机辅助设计,以便解脱繁杂、机械的版图设计工作,这就产生了第一代EDA工具。
到了80年代,为了适应电子产品在规模和制作上的需要,应运出现了以计算机仿真和自动布线为核心技术的第二代EDA技术。其特点是以软件工具为核心,通过这些软件完成产品开发的设计、分析、生产、测试等各项工作。
90年代后,EDA技术继续发展,出现了以高级语言描述、系统级仿真和综合技术为特征的第三代EDA技术。它们的出现,极大地提高了系统设计的效率,使广大的电子设计师开始实现“概念驱动工程”的梦想。设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,从而极大地提高了设计效率,缩短了产品的研制周期。
由此可见,EDA技术可以看作是电子CAD的高级阶段。EDA工具的出现,给电子系统设计带来了革命性的变化。随着Intel公司Pentium处理器的推出,Xilinx等公司几十万门规模的FPGA的上市,以及大规模的芯片组和高速、高密度印刷电路板的应用,EDA技术在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的巨大的挑战。这些问题实际上也是新一代EDA技术未来发展的趋势。
1.3 EDA技术的基本特征和基本工具
总的来说,现代EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。它主要采用并行工程和“自顶向下”的设计方法,使开发者从一开始就要考虑到产品生成周期的诸多方面,包括质量、成本、开发时间及用户的需求等等。然后从系统设计入手,在顶层进行功能方框图的划分和结构设计,在方框图一级进行仿真、纠错,并用VHDL、Verilog-HDL、ABEL等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。近几年来,硬件描述语言等设计数据格式的逐步标准化、不同设计风格和应用的要求导致各具特色的EDA工具被集成在同一个工作站上,从而使EDA框架日趋标准化。
EDA工具的发展经历了两个大的阶段:物理工具和逻辑工具。现在EDA和系统设计工具正逐渐被理解成一个整体的概念:电子系统设计自动化。物理工具用来完成设计中的实际物理问题,如芯片布局、印刷电路板布线等等;逻辑工具是基于网表、布尔逻辑、传输时序等概念,首先由原理图编辑器或硬件描述语言进行设计输入,然后利用EDA系统完成综合、仿真、优化等过程,最后生成物理工具可以接受的网表或VHDL、Verilog-HDL的结构化描述。现在常见的EDA工具有编辑器、仿真器、检查/分析工具、优化/综合工具等等。
目前,PLD已成为现代数字系统设计的主要手段。传统的编程技术是将PLD器件插在编程器上进行编程,而“在系统可编程”(ISP,即In-System Programmable)逻辑器件的问世,将可编程器件的优越性发挥到了极致。它允许用户“在系统中”编辑和修改逻辑,给使用者提供了在不修改系统硬件设计的条件下重构系统的能力和硬件升级能力,使硬件修改变得象软件修改一样方便,系统的可靠性因此而提高。ISP技术即直接在用户设计的目标系统中或线路板上对PLD器件进行编程的技术,打破了使用PLD必先编程后装配的惯例,而可以先装配后编程,成为产品后还可反复编程,从而开创了数字电子系统设计技术新的一页。
下面,笔者即以基于Xilinx的CPLD器件XC95108-7PC84C和Foundation 2.1软件平台的一个简单的四位扭环形计数器(即四位循环彩灯)的设计为例,谈谈EDA技术在ISP数字逻辑系统中的具体应用。
2 EDA技术在一个简单的数字系统设计中的具体应用
2.1 设计要求
本系统要求设计一个四位扭环形计数器,时钟上升沿触发,可进行复位(即清零)和时钟使能控制,其结果要求通过四个一字排列的发光二极管显示出来(构成一种简单的循环彩灯图案),同时其输出读数(十六进制)亦要求通过数码管进行显示。
2.2 设计分析
根据设计要求,本系统可以通过四个带时钟使能和异步清零端的上升沿触发的D触发器来完成计数部分,且时钟同步,若四位输出的初始值为“0000”,则经过8个时钟脉冲激励的输出依次为:“0001”(1)、“0011”(3)、“0111”(7)、“1111”(F)、“1110”(E)、“1100”(C)、“1000”(8)、“0000”(0)。这些时刻的输出,一方面将送至发光二极管进行显示;另一方面将送至数码管的七个管腿,并通过七段共阴BCD码显示译码器显示该读数。总的逻辑框图如图1所示。
2.3 具体实现
经过总体分析即“顶层”设计之后,就可以利用EDA工具和ISP技术“向下”进行具体的模块设计了。
2.3.1 逻辑输入
2.3.1.1 计数器部分
EDA工具的重要特征之一是支持多种输入方式,如原理图输入方式、状态机输入方式、HDL高级语言输入方式等等。Foundation 2.1软件平台对以上三种输入方式都能很好地支持。此部分的设计即以原理图输入方式为例来实现。四位扭环形计数器原理图如图2所示。
2.3.1.2 数码管显示部分
实质上是设计一个4~7线的BCD码显示译码器。此部分拟用IEEE通用硬件描述语言VHDL来设计,完成编译和综合后即生成相应的宏模块设计代码如下:
library IEEE;
use IEEE.std_logic_1164.all;
entity HEX2LED is
port (
HEX: in STD_LOGIC_VECTOR (3 downto 0);
LED out STD_LOGIC_VECTOR (6 downto 0);
end HEX2LED;
architecture HEX2LED_arch of HEX2LED is
begin
with HEX SELect
LED<=“1111001” when “0001”, --1
“0100100” when “0010” --2
“0110000” when “0011”--3
“0011001” when “0100”--4
“0010010” when “0101”--5
“0000010” when “0110”--6
“1111000” when “0111”--7
“0000000” when “1000”--8
“0010000” when “1001”--9
“0001000” when “1010”--A
“0000011” when “1011”--b
“1000110” when “1100”--C
“0100001” when “1101”--d
“0000110” when “1110”--E
“0001110” when “1111”--F
“1000000” when others--0
end HEX2LED_arch;
2.3.1.3发光二极管显示部分
发光管的显示只需将Q0~Q3的输出引线直接与四个并行排列的发光二极管管脚一一相连即可。
至此,各部分设计工作基本完成,我们只需将各个部分按连线规则严格进行连接,定义好相应的I/O管脚和信号线后,即可进行逻辑实现与综合了。
2.3.2 逻辑实现与综合
EDA提供了良好的逻辑综合与优化功能,它能够将设计人员设计的逻辑级电路图自动地转换为门级电路,并生成相应的网表文件、时序分析文件和各种报表,若设计没有错误,最终可生成可以编程下载的JED文件。
2.3.3 系统仿真
通常,在正式下载前,设计人员还要对设计的电路进行一些校验工作,这些工作即可通过EDA的功能仿真和时序仿真工具来完成。本系统在设定了CLK、CE和CLR信号的情况下,输出QO~Q3的功能仿真图和时序仿真图分别如图3和图4所示。由图4可以看出,此设计的各信号的延迟在2ns左右,基本符合设计指标要求。
2.3.4 编程下载
当设计人员确定设计工作已基本成功时,即可通过编程电缆下载数据流来进行硬件验证。验证合格后,总体设计工作即圆满完成。
通过此例的设计流程讲述可知,EDA技术及其工具在数字电路系统(包括模拟电路系统)中正发挥着越来越重要的作用,其应用的深度和广度正在向更深层次延伸。
目前,现代集成电路技术的发展使以现场可编程门阵列为代表的大容量可编程逻辑器件的等效门数迅速提高,其规模直逼标准门阵列,达到了系统集成的水平。特别是进入二十世纪90年代后,随着CPLD、FPGA等现场可编程逻辑器件的逐渐兴起,VHDL、Verilog等通用性好、移植性强的硬件描述语言的普及,ASIC技术的不断完善,EDA技术在现代数字系统和微电子技术应用中起着越来越重要的作用。从通常意义上来说,现代电子系统的设计已经再也离不开EDA技术的帮助了。