第1章EDA技术概述
下载后可任意编辑 第1章 EDA技术概述 当今数字电子技术得到了飞速进展,有力地推动和促进了社会生产力和社会信息化的提高。数字电子技术逐步渗透到人类生活的各个领域。从消费电子产品、工业自动化设备到航天技术都能看到数字电子技术的身影。在技术进展的同时,电子产品的设计方式也发生了巨大的改变,采纳EDA(电子设计自动化)技术成为数字电子设计的主要方式。 1.1 EDA技术及进展 数字电子技术工程师现在正面临着前所未有的挑战。一方面,电子公司要求工程师在更短的时间里,使用更少的资源来设计新产品,而且性能要比竞争产品好。另一方面,技术变化非常快,不同的客户有完全不同的需求,要求有更具个性化的产品。因此,EDA技术应运而生,成为解决以上“所有”问题的很好的技术选择。 1.1.1 何谓EDA技术 EDA技术是一门迅速进展的新技术。它以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具。它能用软件的方式设计电子系统,自动完成硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,最后在特定的目标芯片中完成适配编译、逻辑映射、编程下载等工作,形成集成电子系统或专用集成芯片。利用EDA技术进行电子系统的设计具有以下几个特点。 q 用软件的方式设计硬件。 q 用软件的方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的。 q 设计过程中可用有关软件进行各种仿真。 q 系统可现场编程,在线升级。 q 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的进展趋势。 EDA技术是数字系统设计的核心技术,是电子类专业技术人员必须掌握的基本技能之一。目前的大规模可编程逻辑器件是CPLD(复杂可编程逻辑器件)和FPGA(可编程逻辑阵列)。 1.1.2 基于大规模可编程逻辑器件的数字系统设计 现代数字系统设计相当大一部分是基于大规模可编程逻辑器件的,这是因为基于大规模可编程逻辑器件的设计拥有面市时间快、灵活性大、可定制解决方案、开发成本低和具有现场更新能力等优点。工程师首先对系统或者设计进行构思,然后在计算机上采纳高级语言(Verilog HDL语言或者VHDL语言)来描述这一构思,设计出软件代码。 最重要的是,可以使用设计工具软件检查设计中有没有错误。确定设计适合目标的可编程逻辑器件后,检查设计是否达到了性能要求,可以把设计下载到目标器件中,直接在硬件中调试功能。 本书讨论的大规模可编程逻辑器件是FPGA。现在的FPGA设计与几年前的FPGA设计有很大不同,它具有全功能,可以实现电路板级的集成,同时降低了成本。例如,一个典型的系统设计如图1.1所示。 这块电路板上有很多芯片,诸如CPU、I/O单元、小规模的FPGA、闪存和SDRAM存储器及一个DSP模块。该系统需要的电路板比较大,这样才能容纳这些芯片。这提高了设计成本和复杂度。但是,现在能够把CPU、I/O和DSP都放在一个可编程逻辑芯片中,如图1.2所示。采纳一片FPGA,可以从系统中去掉很多硬件,从而降低了成本和功耗。 图1.1 典型的系统设计框图 图1.2 集成后的系统 现在可编程逻辑几乎无处不在。从家里的HDTV到附近的蜂窝电话发射塔,直至银行的ATM,这些都含有可编程逻辑器件形式的数字逻辑,它实现了从控制系统怎样工作的CPU到网络和通信应用中高速交换流量管理等方方面面的功能。 1.2 可编程逻辑器件的进展简介 在早期的数字逻辑设计中,设计人员在电路板或者面包板上把多个芯片连在一起构成系统。每个芯片包括一个或者多个逻辑门(如NAND、AND、OR或者非门),或者简单逻辑结构(如触发器和复用器等)。20世纪60和70年代的很多设计都采纳美国德州仪器公司的7400系列TTL,即晶体管-晶体管逻辑器件。设计TTL时,其目的一般是以尽量少的芯片来实现设计,以降低成本,减小电路板面积。而且,还需要尽量采纳已有的器件来进行设计。 1.2.1 逻辑设计基本流程 在实现逻辑功能时,首先要建立真值表,如表1.1所示。真值表列出了逻辑所有可能的输入及输入组合可能产生的相关输出。对于n输入,有种可能的输入组合,这些都需要进行考虑。根据真值表,我们可以建立卡诺图,如图1.3所示。用卡诺图很容易建立简单的逻辑表达式。 表1.1 真值表 A B C D Y 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 图1.3 根据真值表建立的卡诺图 根据卡诺图中含有1的每个框,结合每个框的公共输入,我们可以建立函数的一个“乘积和”式的逻辑表达式,如公式1所示。 (公式1) 表达式由6个乘积项组成,每个乘积项对应一个与门。要在硬件中直接实现这一功能,需要6个2输入与门,1个6输入或门,假如希望同步输出,还需要一个输出寄存器或者触发器。6输入或门不支持TTL,因此,需要级联更小的或门,这增加了延时和元件数量。为解决这些问题,TTL设计人员使用与非逻辑重写公式,如公式2所示。 (公式2) 这样,使用7400系列标准元件来最终实现这些逻辑,如图1.4所示。 图1.4 实现逻辑的电路图 这一实现方案只使用了两级逻辑来产生乘积和,使用一个寄存器来建立同步输出。 总体上,可以使用这一例子中介绍的方法把大部分数字电路的逻辑功能简化为乘积和。使用两个组合逻辑级来实现这些功能,与门建立乘积项,或门对乘积求和。 在输入上可以采纳非门来置反输入,以产生所需的功能。为了存储输出,或者使输出与其他输出同步,需要寄存器形式的同步逻辑。假如不需要存储器或者同步,可以旁路输出寄存器。采纳TTL逻辑器件,在实验面包板或者印刷电路板上,用铜线把这些分立元件连在一起。 1.2.2 可编程逻辑器件PAL 思考一下逻辑功能实现的共性,假如把这些逻辑门和寄存器组合到一个器件中会怎样?从与门到或门,从或门到寄存器有固定的连接会怎样呢?更进一步,假如有一种方法来设置输入和与门之间的连接,以确定应使用哪些输入,以及在哪里使用,又会怎样呢? 这方面的思考导致了第一款可编程阵列逻辑器件PAL的产生,如图1.5所示。 将逻辑门和输出寄存器固定为通用逻辑后,选择使用逻辑输入及其互补逻辑,就可以建立任何逻辑功能。PAL主要由图1.5中的三部分构成,多次复制这三部分就可以形成复杂PAL器件。这里显示的可编程阵列是所选择的输入,将其连接到需要的与门。在输入和进入与门的线之间进行连接,可实现线与操作