1、第1章 电子设计自动化(EDA)基础1.1 基本概念基本概念1.2 EDA的发展及其工业应用的发展及其工业应用1.3 基于基于EDA的数字系统设计的数字系统设计习题与思考习题与思考1.1 基基 本本 概概 念念1.1.1 EDA的定义的定义电子设计自动化(Electronic Design Automation,EDA)是指采用大规模可编程逻辑器件作为电路设计载体,利用硬件描述语言作为电路系统控制逻辑的主要描述工具,使用计算机、面向大规模可编程逻辑器件的软件开发工具以及实验开发系统作为开发工具完成的,具有用户指定专有控制功能的单芯片电子系统或集成电路的设计技术。(1)EDA利用大规模可编程逻辑
2、器件作为设计载体。EDA通过大规模编程逻辑器件来实现集成电路。在编程之前,可编程逻辑器件并不具备任何逻辑功能,通过EDA技术对可编程逻辑器件写入适当程序,即所谓的编程(Program)或者配置(Configure),可以使可编程逻辑器件具有程序规定的特定功能,实现具体的电子系统。(2)EDA采用硬件描述语言描述电路或系统的具体逻辑关系。传统的电路系统设计中,设计人员往往需要绘制电路的构成元器件、子电路等构成单元,而后绘制元器件、子电路等电气对象之间的连接线,形成不同电路单元相互之间特定的逻辑关系,最后附加上必要的说明、注释等非电气对象,完成电路系统的设计。不同于传统的电路系统,EDA利用硬件描
3、述语言表述电路系统各组成单元结构、功能、数据处理过程以及相互间的逻辑关系,从而实现对整个电路的规划与设计。(3)EDA采用计算机、大规模可编程逻辑器件的专用开发软件与系统作为设计工具。传统的集成电路行业通过专业厂商完成电路设计、制造,最后给最终用户提供终端产品。与此相对,通过EDA开发研制专用电路无需专业制造商的参与,用户可以通过PC、运行于PC上的专用设计软件以及连接在PC上、受PC控制的试验系统或编程电缆,自行完成电路开发,研制具有自身特点的个性化电路系统。(4)EDA的电子系统设计过程是一个由专用软件完成的全自动过程。EDA是一个由专用软件与试验系统完成的全自动智能过程,用户可以通过事先
4、设定的软件设置来定制设计原则或设计方法,但其完成过程无需用户干预,开发系统能够根据用户的指定条件,结合固化在开发系统中的专业规则与经验,自行实现电路描述程序到硬件电路的全过程。(5)EDA过程包含了电路设计与实现的全过程。虽然EDA不同于传统的电路设计实现方法,但其过程与传统电路设计仍然具有较大的相似性,实现过程仍然包括逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真等过程,只不过适应硬件描述语言,相应增加了程序输入、编辑编译以及针对于特定目标芯片的适配编译、逻辑映射、编程下载等内容。(6)EDA最终形成集成电子系统或专用集成芯片。EDA设计的最终结果是一个高度集成的电子系统,整个电
5、路集成在一片具有设计人员指定的专用特定功能的集成芯片中,而不是像传统电路系统的设计,最终得到一块包含多个集成电路模块与模块之间相互连线的控制电路板卡。换言之,EDA设计实现的是一个集成了多个电路功能的单芯片。1.1.2 EDA的技术特点的技术特点根据EDA的基本概念与实现过程,对比与其功能相似的传统电路设计与软件系统程序设计,可以将EDA的技术特点归纳为以下几点:(1)采用软件方式的硬件设计。EDA是一种软件方式的硬件设计过程,具有与传统程序设计一样的代码编辑、编译过程,EDA的集成开发环境同样可以为程序设计者提供查错、纠错功能。(2)软件到硬件的转换由开发软件自动完成。如前所述,EDA通过其
6、软件工具实现硬件描述语言到硬件集成电路的转换,转换过程由工具软件自主完成,设计人员可以通过修改器件设置、引脚分配、配置模式等达到修改设计的目的。(3)设计过程中可用软件仿真。EDA开发系统多带有软件仿真模块或第三方的软件仿真工具,借助工具,设计人员可以实现对当前电路的功能、时序、行为仿真,评价设计效果并根据效果及时修正电路设计。(4)线上可编程。现代的大多数可编程逻辑器件具备在线编程(也称在线配置)功能,借助EDA工具软件与编程电缆等编程硬件,设计人员可以将改好的程序即时下载(烧录)至目标器件,无需使用第三方的专用烧录器或编程器。在线编程也为现有系统升级与更新换代提供了方便,用户可以在不改变硬
7、件的情况下实现新的系统,增强功能。(5)单芯片集成系统,具有高集成度与可靠性、低功耗。不同于传统的硬件电路设计,EDA最终实现的是电子系统的集成芯片,避免了传统电路中大量使用的分立元件、中小规模集成电路及必需的焊接、连线,因此能够实现较高的集成度、可靠性,实现系统的低功耗。1.1.3 EDA的主要内容的主要内容EDA的基本内容主要包括大规模可编程逻辑器件、硬件描述语言与开发工具。三者各司其职,其中硬件描述语言用于系统描述,说明电子系统的功能、组成结构或动作行为;开发工具负责程序输入、程序编译,将硬件描述语言转换为实际电路并下载至可编程逻辑器件;大规模可编程逻辑器件则负责接收生成的最终电路,在开
8、发工具控制下实现集成系统。1大规模可编程逻辑器件大规模可编程逻辑器件大规模可编程逻辑器件PLD是一种内部集成大量逻辑电路与可编程连接线的半成品集成电路,它一般由专业集成电路厂商制造,可编程配置实现用户需要的任意功能。目前常用的可编程逻辑器件主要有复杂可编程逻辑器件CPLD与现场可编程逻辑门阵列FPGA两类。相关的器件制造商有很多,代表性的厂家包括Xilinx、Altera和Lattice半导体、Microsemi等。(1)Altera。Altera是国际上最知名的PLD器件制造商之一,也是CPLD器件的发明者。目前应用较广的Altera PLD器件主要包括MAX3000、MAX7000、MAX
9、 系列的CPLD器件以及Arria GX、Arria GX、Cyclone、Cyclone、Cyclone、Cyclone GX、Stratix、Stratix、Stratix GX、Stratix 等系列的FPGA器件。(2)Xilinx。Xilinx是FPGA器件的发明者,目前的PLD器件主要有XC9500、Coolrunner-等系列的CPLD器件与Spartan、Vertex、Artix、Kintex等系列的FPGA器件,Vertex-Pro器件的容量可达到800万门。(3)Lattice半导体。Lattice半导体是在线可编程ISP技术的发明者。迄今为止,ISP技术已经被广泛应用于各
10、类集成电路,不再仅仅局限于PLD器件。Lattice半导体的可编程逻辑器件主要包括ispLSI1000、ispLSI2000、ispLSI5000、ispLSI8000、ispXPLD、ispMACH等系列的CPLD器件,以及LatticeXP2、ICE40、ECP等系列的FPGA器件。2硬件描述语言硬件描述语言(HDL)EDA中,硬件描述语言用于描述电子系统的逻辑功能行为、电路结构与连接形式,它尤其适合大规模系统的设计。目前的EDA设计中应用最为广泛的硬件描述语言主要有VHDL、Verilog HDL、ABEL等。1)VHDLVHDL的全称Very-High-Speed Integrated
11、 Circuit Hardware Description Language,是IEEE与美国国防部共同确认的标准硬件描述语言,也是支持工具最多的硬件描述语言之一。VHDL具有较强的硬件描述能力,是一种全方位的HDL,包括系统行为级、寄存器传输级和逻辑门级等多个设计层次。VHDL代码简洁明确,适于复杂控制逻辑的描述;描述方式灵活方便,且便于设计交流与重用;作为一种标准语言,VHDL不依赖于特定器件,被众多EDA工具所支持,移植性好。2)Verilog HDLVerilog HDL也是一种IEEE的标准硬件描述语言,由Gateway Design Automation公司于1983年提出。Ver
12、ilog HDL采用文本描述数字系统的硬件结构与行为,可以描述逻辑电路图、逻辑表达式以及数字系统的逻辑功能。Verilog以模块为基础实现设计,具有与C语言类似的风格,形式自由、灵活,容易掌握,对其提供支持的EDA工具也较多,综合过程较VHDL稍简单,高级描述方面不如VHDL。3)ABELABEL支持不同输入方式的HDL,输入方式包括布尔方程、高级语言方程、状态图与真值表等。ABEL广泛用于各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,以及上至系统、下至门级电路的宽口径描述功能,因而适用于各种不同规模的可编程器件的设计。ABEL-HDL还能对所设计的逻辑系统进行功能仿真而无需估计实
13、际芯片的结构。3开发工具开发工具不同于传统的软件开发工具,EDA开发工具直接面向特定的一类或几类PLD器件。自20世纪70年代可编程逻辑器件出现以来,可编程逻辑器件一直处在持续的高速成长期,要求相应的开发工具必须不断地更新换代,以适应PLD技术的飞速发展。因此,EDA的开发工具主要由器件生产厂家研制,或者与专门的软件厂商共同开发。结合所生产的PLD器件,Altera、Xilinx、Lattice半导体等厂商均推出了面向自身器件的专用开发工具。(1)Altera的开发工具。Altera的EDA工具主要包括MAXPLUS、Quartus 等系列软件,Quartus 系列平台是当前Altera的主流
14、开发平台。Altera的系列开发工具采用集成开发环境,支持原理图、文本、波形、EDIF以及多种方式混合的设计输入模式,支持VHDL、verilog等描述工具,具备较强的功能。其中MAXPLUS 只支持MAX7000/3000、Flex等较早系列的器件。(2)Lattice半导体的开发工具。Lattice半导体是全球最主要的知名PLD器件厂商之一,ISP及具有独特技术与结构的CPLD、FPGA器件使其在可编程器件领域占有重要的地位。自21世纪以来,Lattice的PLD器件受到越来越多的青睐,Lattice XP2等系列的器件被包括中国大陆在内的大量通信、工控企业选用。Lattice半导体的PL
15、D开发工具主要包括早期的ispEXPERT系列以及当前主流的ispLever系列开发平台。Lattice半导体的开发工具面向自己的CPLD与FPGA器件,支持VHDL、ABEL、Verilog等多种语言的设计、综合、适配、仿真及在线下载。(3)Xilinx的开发工具。Xilinx是原来全球最大的PLD制造商,其开发软件有Foundation和ISE系列的集成工具,其中ISE系列工具为当前主流的设计平台,它采用自动化的、完整的IDE集成设计环境。Xilinx在欧美、日本及亚太地区具有广阔的用户群。除了上述的集成工具,针对EDA过程中的设计输入、逻辑综合等操作,还有大量的第三方工具,例如HDL的专
16、用文本编辑器UltraEdit、HDL Turbo Writer,可视化HDL/Verilog编辑工具Visial HDL/Visial Verilog,HDL逻辑综合工具Synplicity等。1.2 EDA的发展及其工业应用的发展及其工业应用1.2.1 EDA的发展阶段及特的发展阶段及特点点1早期计算机辅助设计阶段早期计算机辅助设计阶段受到软件技术、计算机硬件以及集成电路技术的发展制约,20世纪70年代的早期EDA技术尚处在萌芽阶段,其应用主要局限在计算机辅助绘图(Computer Aided Design,CAD),设计人员借助计算机与相关软件实现IC版图的编辑、PCB的布局布线,以取代
17、部分手工操作,此时的EDA主要有以下特点:(1)基本局限在面向板级电路的电子系统设计,系统构成采用中小规模集成电路或者分立元件。(2)通过CAD的两维图形编辑与分析工具替代设计中的繁杂劳动,如布线、布局、布图等。(3)整个电子系统在焊接组装好的PCB上进行调试。2计算机辅助工程设计阶计算机辅助工程设计阶段段20世纪80年代,EDA进入计算机辅助工程设计阶段(Computer Aided Engineering Design,CAE)。除了图形绘制,EDA工具具备电路功能设计与结构设计功能,同时通过网络表将两者联系在一起。此时的EDA主要有以下特点:(1)相对于早期的CAD阶段,该阶段的EDA工
18、具具备原理图输入、逻辑模拟、定时分析、故障仿真、自动布局布线等强大功能。(2)该阶段EDA技术发展的重点是解决设计完成之前的功能检测与模拟分析等问题。(3)出现了具有自动综合能力的EDA工具。(4)该阶段EDA技术的问题在于大部分使用原理图完成设计的EDA工具在复杂控制逻辑描述或复杂系统设计方面存在较大困难。3电子设计自动化阶段电子设计自动化阶段20世纪90年代开始,随着超大规模集成电路技术、计算机软件、高性能计算机等的高速发展,以及电子系统设计理论的进一步完善,电子系统设计进入真正的电子设计自动化阶段。此时的EDA主要有以下特点:(1)EDA技术进入物理校验、布局、逻辑综合、设计模拟与软硬件
19、协同设计阶段。(2)EDA开发平台自主实现HDL语言描述到门级电路网表的全过程,将电路映射到特定器件的专用结构中。(3)微电子工艺达到深亚微米级,器件集成度提高到百万甚至千万门级,相应的电路也由使用集成电路转向设计集成电路、片上集成系统与单片系统SOC。(4)开发工具具有抽象设计能力,具有框图、状态图与流程图编辑功能,具有硬件描述语言(VHDL,ABEL,AHDL)标准元件库。(5)EDA超越电子设计进入其他领域,与其他领域充分融合,产生大量基于EDA的单片专用系统SOC;基于VHDL自顶向下的设计理念以及软硬核功能库在EDA设计中得到广泛应用。1.2.2 EDA技术的工业应用技术的工业应用1
20、汽车领域的应用汽车领域的应用汽车工业是国家经济的重要支柱,也是关系到国计民生的重要产业,EDA技术在汽车领域已经有了很多成功的应用实例,PLD制造商甚至专门针对汽车行业开发了标准的可编程逻辑器件。(1)汽车系统实时控制方面。华南理工大学在大功率电动汽车充电电源研究中,采用嵌入式处理器DSP结合CPLD的控制结构,通过CPLD实现故障信号的逻辑运算,实时响应故障信息,DSP实现数据采集和运算处理,保证了电源的高效、可靠;桂林电子科技大学充分利用FPGA的高速度与高集成度,实现了一种基于FPGA的毫米波汽车防撞雷达实时控制算法与车载防撞雷达实时系统。(2)汽车系统实时数据处理方面。东北大学采用FP
21、GA实现红外图像系统的视频格式转换、快速中值滤波、自适应平台直方图双向均衡化,满足了汽车夜视系统图像处理的速度与效果要求;桂林电子科技大学利用FPGA实现视频流的实时采集与处理,包括图像的灰度化、滤波、边缘检测、膨胀、腐蚀、车牌定位与大小检测、液晶显示等功能,实现了车载的单目视觉实时测距系统。随着汽车工业的进一步发展与EDA技术的进步,EDA会在汽车控制的通信、安全、动力等领域发挥更为重要的作用。2机床设备的控制机床设备的控制机床设备是一个多变量的复杂控制对象,一般包括多达几十路、甚至上百路的开关量输入输出、多个电机的速度、位移、加速度高速协调动作、多个模拟量的输入输出、程序编辑、指令编译等过
22、程的操作与控制。高速复杂运算、强实时、多指标与并行处理是该机床设备控制的典型特征,控制系统一般采用多CPU分级处理的控制方式,处理器之间、任务之间通信繁琐,实时性、可靠性与集成度是该领域长期面临的难题之一,EDA能够为其提供的有效的手段。西南交通大学针对多轴步进电机的控制,研制了高性能步进电机IP核,结合Nios处理器软核,实现了多轴步进电机高精确度控制的可编程片上系统(SOPC);大连理工大学通过FPGA实现直流电机的速度和位置编码检测,DSP获取电机运动参数并完成PID控制,开发了基于DSP与FPGA的多路微特电机的嵌入式控制系统;长春光学精密机械与物理研究所在交流永磁同步电机驱动的大型望
23、远镜伺服控制系统研究中,通过FPGA实现了PWM波的发生、电流实时采集、速度在线实时检测等功能,研制了DSP结合FPGA的大型望远镜伺服控制系统,很好地解决了大型望远镜运行中遇到的高精度、低速平稳性等问题。3通信领域的应用通信领域的应用大规模可编程逻辑器件在运算速度、数据处理功能、抗干扰以及集成度等方面展现出来的巨大优势,说明了EDA技术特别适合通信领域的高频信号处理、传输、以及高频通信控制逻辑的实现,EDA应用于通信领域具备天然的优势。同时,通信领域也是EDA技术应用最早、最为广泛的领域之一。国家数字交换系统工程技术研究中心在海量数据库研究中,利用FPGA控制对电路交换域的数据采集,实现数据
24、从电路交换域到分组交换域的高效、自动转换,研制了基于FPGA的电路交换域数据采集片上系统(SOC);中国科学技术大学针对阵列天线卫星移动通信抗干扰能力差、传播损耗大等问题,利用VxWorks计算基于递归最小均方算法(RLS)的解扩重扩盲自适应波束形成算法权值,通过FPGA实现波束形成与直接序列扩频,实现了数字波束形成技术(DBF)和扩频技术相结合的、低信噪比抗干扰卫星移动通信数字接收系统。4航空领域的应用航空领域的应用航空应用也是EDA技术应用的一个重要领域,由于飞行控制具有多变量、强实时、复杂运算、并行处理、非线性等特点,大容量、超大容量的可编程逻辑器件在飞行控制方面能够发挥重要的作用。南京
25、航空航天大学通过FPGA实现内嵌处理器、硬件协处理器及同步数据总线,实现了航空发动机电子控制器原理样机与相应的SOPC片上系统;武汉大学将EDA应用于航拍云台姿态控制,通过FPGA实现航拍云台姿态的数据采集控制与Kalman滤波的浮点数运算,实现了一种基于硬件Kalman滤波器的航拍云台姿态获取方法;四川大学利用直接频率合成技术通过FPGA实现了中心频率1080Hz,频率范围为10751085 Hz,步进为0.1 Hz的某型航空发动机电子调节器综合测试系统信号源。5机器人控制机器人控制机器人目前是国内外多个工业领域最为活跃的一个行业,随着我国由制造业大国向制造业强国发展,国家与各级地方政府对机
26、器人行业也给予了极大的关注与支持,机器人行业成为我国下一个经济增长的重要支柱。多关节、多运动的高速、实时、协调控制是机器人控制的关键问题,EDA技术与大规模可编程逻辑器件有望为其提供完美的解决方案。1.3 基于基于EDA的数字系统设计的数字系统设计1.3.1 数字系统的基本框架数字系统的基本框架数字系统的典型结构框架如图1.1所示。系统的基本构成主要包括数据采集与处理、系统调度与控制模块。其中,数据采集与处理模块实现外部数据采集、转换、存储、传输以及运算处理等功能;系统调度与控制模块接受外部指令、时钟与约束条件信号,控制系统各构成单元的有序协调动作。1.3.2 数字系统设计方法数字系统设计方法
27、常用的数字系统设计方法主要包括模块设计法、自底向上的设计方法与自顶向下的设计方法。其中,自顶向下的设计方法是EDA中最为常用的一种设计方法,具有符合人脑的思维习惯、效率高等特点。1自顶向下的设计方法自顶向下的设计方法自顶向下的设计方法是指在数字系统描述过程中,由高到低、由粗到精、层层深入、逐步细化、渐次求精的一种设计方法。在设计过程中,将数字系统根据功能要求或者组织结构关系,逐层分解为层次明晰、层级与层内关系清楚合理、便于逻辑描述与逻辑设计实现的功能或结构子系统与模块。自顶向下所使用的分层级设计、逐层细化的过程符合人们思考事物、描述事物的习惯,使设计人员在系统层面上分析把握系统,减少失误;同时
28、,自顶向下的设计方法把整个系统模块化,不同模块可交由不同的设计人员或团体实现,便于现代大型复杂系统的设计且易于实现设计的并行化,提高效率在使用自顶向下的设计方法时,必须做到逐层分解功能、分层次设计,明晰设计层次之间与设计层次内部各构成单元之间的逻辑关系;同时,系统设计时,必须考虑设计层次的仿真验证方法。与自顶向下的设计方法相对应,在自底向上的设计方法的实施过程中,首先构造各个构成子模块,而后再将构成模块组合形成系统的功能组元。早期的电子设计思路即是采用该种方法,选用标准集成电路自底向上逐层构造子结构,最终形成整个系统。2数字系统设计准则数字系统设计准则自顶向下的设计方法是一个抽象的概念,设计中
29、可能很难评价一个设计的绝对优劣,但其实现过程中也有一些必须遵守的约定俗成的设计规则。1)分割准则数字系统底层构成单元的控制逻辑功能和逻辑行为必须描述清楚,同时要适于硬件描述语言表述;功能相同或相似的构成单元尽量设计成可以分时共享的功能模块;系统的不同构成单元之间的信号传输接口数量尽量少,尽量做到便于使用;同层次的各构成模块所使用的I/O数量与逻辑资源数尽量平衡,无较大差异;各构成模块应具备良好的通用性,便于为其他系统设计使用,同时具备良好的可移植性。2)便于观测系统设计时应兼顾系统测试与调试,在关键电路的输入输出、关键信号、代表性节点及线路、数字系统的运行状态以及引起运行状态变化的信号、进入系
30、统的数据等方面均应考虑到观测性的问题,必要的时候加入信号指示。3)同步与异步电路系统中的电路,尤其是关键电路,尽可能采用同步电路,以免信号延迟或不同信号时间关系引起系统不稳定。4)最优设计系统设计中尽量利用共享电路模块,减少逻辑资源占用,通过改进设计,提高资源利用率和工作速度,优化布线。5)设计艺术设计艺术包括设计的完整性、简洁性、流畅性、各构成模块的I/O及资源占用的协调性、同时兼顾可观测性等。1.3.3 EDA设计流程设计流程1数字系统设计步骤数字系统设计步骤一个完整的数字系统设计过程主要包括任务描述与分析、实现算法及优化、系统框架结构设计及功能分析、逻辑描述与电路规划、电路设计及仿真、系
31、统实现与测试。(1)任务分析:根据系统设计任务,确定并论述数字系统各个主要功能要求,可采用流程、时序、自然语言以及多种方式混合的方法描述。(2)算法确定:确定实现系统逻辑的主要实现方法,通过对比选定较优的实现算法。(3)系统建模:根据功能分析与所确定的算法,完成系统框架结构,详细描述各构成模块功能与实现过程,要求规模适当,功能平衡。(4)逻辑描述:逻辑描述实现各个模块的逻辑描述,一般采用流程图、框图、描述语言等描述各功能模块。(5)电路设计与仿真:选择电路图与硬件描述语言方式实现系统控制逻辑,仿真、评价并修正所设计的系统。(6)物理实现:选用实际器件实现系统,通过相关仪器、仪表测试系统。2工具
32、软件的基本构成工具软件的基本构成参照数字系统设计步骤内容,可以推断出完整的EDA软件系统构成,系统应包括设计输入、设计数据库、分析验证、综合仿真、布局布线等功能模块。(1)设计输入:实现设计输入,完成语义分析及语法检查,一般包括文本编辑与图形编辑功能。(2)设计数据库:存放系统库单元、用户设计描述及中间设计结果。(3)分析验证:实现数字系统设计过程中各层级的模拟验证、设计规则检查、故障检查等功能。(4)综合仿真:包括设计过程中各层次的设计综合工具,一般情况下高层次到低层次的综合仿真全部由EDA工具自动实现,可通过人工设置综合仿真选项干预其过程。(5)布局布线:从逻辑设计到如何使用具体器件实现的
33、过程。(6)编程下载:将布局布线结果固化到具体器件,形成专用电子系统。3设计流程图设计流程图基于EDA技术的数字系统设计流程如图1.2所示。根据设计工具的运行过程,设计流程主要包括设计输入、系统编译、电路仿真与器件编程四个过程。图1.2为按照数字系统的设计流程得到的EDA设计过程,可以将其划分为设计输入、逻辑综合与优化、布线适配、软件仿真、编程下载、硬件仿真测试等步骤。1)设计输入及编译通过文本或图形编辑器完成设计输入、编译排错,得到VHDL程序,准备逻辑综合。设计输入支持原理图输入、状态图输入与文本输入三种方式。2)逻辑综合与优化根据设计输入,针对特定器件进行编译,实现设计的优化、转换与综合
34、,获得门级电路甚至更低层次的电路描述文件。3)器件布线与适配针对具体器件进行逻辑映射,包括底层器件配置、逻辑分割与优化、布线。4)编程/下载将产生的配置下载文件经编程器或下载电缆固化至指定的目标FPGA或CPLD器件中。5)硬件仿真/硬件测试硬件仿真是针对专用电路而言,常用FPGA对系统设计进行功能检测,检测无误后,通过专用集成电路(ASIC)实现VHDL设计,硬件测试则是直接使用FPGA或CPLD对系统进行检测。习习题题与与思思考考1 EDA的基本定义是什么?如何理解EDA的基本定义?2 EDA的发展阶段与基本特点是什么?3 查阅资料,谈谈自己对SOC的理解。4 请给出数字系统的框架结构并解
35、释其构成要件的功能。5 对比理解自顶向下与自底向上的设计方法。6 数字系统的设计规则有哪些?如何理解?7 请结合EDA设计流程介绍EDA工具的基本构成及功能。8 结合实例,介绍基于EDA技术的工业系统的基本特点。第2章 可编程逻辑器件2.1 可编程逻辑器件基础可编程逻辑器件基础2.2 典型典型CPLD器件器件2.3 典型典型FPGA器件器件习习题与思考题与思考2.1 可编程逻辑器件基础可编程逻辑器件基础2.1.1 基本概念基本概念1专用集成电路专用集成电路(ASIC)专用集成电路(Application Specific Integrated Circuits,ASIC)是一种用户定制的,把整
36、个系统或部分功能模块集成在一个单芯片内实现的电路。ASIC的兴起使电子系统的设计由使用集成电路芯片转向设计集成电路或片上系统(System On Chip,SOC)。根据功能与应用场合,专用集成电路又分为全定制专用集成电路与半定制专用集成电路。2全定制与半定制全定制与半定制ASIC全定制专用集成电路由集成电路生产厂商根据用户需求定制,其功能一般针对专用场合的特定工作对象,其电路结构固定,除非重新设计或定制,否则无法更改。该类芯片专业性强,适于大批量定型生产。典型的器件包括常用的通用存储器、接口电路、通用CPU等。半定制集成电路(Semi-Custom Integrated Circuits,S
37、IC),是由生产厂商制造的半成品集成电路,可由用户或集成电路厂商根据用户要求进行编程、生产,得到专用集成电路。早期的半定制集成电路主要包括门阵列(Gate Array)、标准单元(Standard Cell),内部集成一定数量的基本逻辑门与逻辑单元,通过相互之间的不同连接关系构成不同的数字系统;后来,随着集成电路技术的不断进步,集成电路在运行速度、逻辑资源、功能等方面得到不断发展,先后出现了功能更为强大的简单可编程逻辑器件(SPLD),以及现在工程领域常用的复杂可编程逻辑器件(CPLD)、现场可编程逻辑器件(FPGA)与在系统可编程(ISP)逻辑器件。3可编程逻辑器件可编程逻辑器件PLD半定制
38、ASIC的用户定制早期主要由专业的集成电路厂商完成,制造厂首先生产通用性较强的半成品集成电路,而后根据最终用户的具体要求固化电路,将这种半成品电路转换为专用集成电路。这个过程需要集成电路厂商与终端用户的多次交流、沟通,一定程度上束缚了半定制ASIC的应用灵活性与易用性。可编程逻辑器件是由专业集成电路厂家生产制造、可由用户根据具体应用场合进行编程、配置,满足特定应用场合需求的半成品集成电路。PLD器件内部集成一定数量的逻辑门、触发器等基本逻辑电路,按照一定排列方式排列。编程之前,基本逻辑电路各自独立,不存在连接关系,也不具备具体的逻辑功能;通过用户编程,PLD内部的部分基本逻辑电路、逻辑单元形成
39、特定的连接关系,相互之间构成固定的输入输出关系,实现用户程序指定的专有功能,相应的集成电路也由PLD转变为具有特定功能的专用集成电路。PLD与常规电路以及常规专用集成电路存在本质区别,常规电路一般包括多个分立元件、集成电路元件、元件之间的连线、支撑各元件及连线的电路板,电路一旦完成,元件之间的连线及其输入输出关系无法更改;PLD则由内部集成的基本元件与连线构成,具有更小的尺寸与功耗,内部连线可以通过编程更改,形成新的电路。常规专用集成电路具有与PLD相似的结构、集成度与功耗,只是其内部构成元件及连接关系固定,无法通过编程改变,功能相应也无法改变。2.1.2 PLD器件的发展器件的发展1PROM
40、与与PLA器件器件可编程只读存储器(Programmable Read-Only Memory,PROM)与可编程逻辑阵列(Programmable Logic Arrays,PLA),二者统称为现场可编程逻辑阵列(Field-Programmable Logic Array,FPLA),出现于上世纪70年代初期,是早期重要的PLD器件。2PAL器件器件70年代末,出现了可编程阵列逻辑(Programmable Array Logic,PAL)。3GAL器件器件80年代初,Lattice推出通用阵列逻辑(Generic Array Logic,GAL)器件,具有可擦除、重复编程、加密等特点,此
41、后GAL大量用于工业自动化产品,实现相对简单的逻辑功能,取代常用的分立元件。4CPLD器件器件80年代中期,在EPROM与GAL器件基础上,Altera推出可用逻辑门数超500门的可擦除PLD器件(Erasable Programmable Logic Device,EPLD)。之后,Xilinx、Atmel针对EPLD器件展开了大量工作,推出多种制造工艺、结构各不相同的器件,片内资源不断扩大,最终形成了现在还在广泛应用的复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。5FPGA器件器件80年代中期,Xilinx推出现场可编程门阵列(Fiel
42、d Programmable Gate Array,FPGA),相对于早期其他可编程器件,FPGA器件的规模要大得多,可容许逻辑的复杂程度也得到了极大的提高。FPGA的出现使面向特定复杂工业的专用集成电路成为可能,为满足工业领域严苛的可靠性、集成度以及实时性等要求提供了一种有效解决方案,为可编程逻辑器件在工业现场的大规模广泛应用提供了重要的技术支撑。6ispLSI器件器件90年代初,Lattice推出在系统可编程大规模集成电路(In-System Programmable Large Scale Integration,ispLSI),极大地方便了系统的修改、升级,由于其在系统可编程的特点,避
43、免了重复制版等麻烦,使得系统研发周期极大地缩短。7ispPAC器件器件90年代末,Lattice推出模拟可编程逻辑器件ispPAC(In-System-Programmability Programmble Analog Circuits),可实现信号调理、信号处理与信号转换。ispPAC器件的出现带给工业系统的改变是革命性的,不仅极大简化了模拟电路设计、调试与分析过程,而且使整个电路集成至一个单芯片,使系统可靠性、易修改性、集成度均得到极大提高。2.1.3 PLD的结构特点与分类的结构特点与分类1基本结构基本结构图2.1所示为早期可编程逻辑器件的基本结构,其基本构成单元主要包括与阵列、或阵列
44、、输入/输出缓冲电路。PLD器件的输入首先经过输入电路得到输入项;之后,进入器件的与阵列进行与运算,得到乘积项;而后,乘积项经或阵列进行或运算,得到图中的或项;最后,或项进入输出电路,在其控制下得到集成电路的总输出。图2.1 可编程逻辑器件的基本结构2PLD器件的按复杂程度分器件的按复杂程度分类类PLD器件的分类方法主要有:根据复杂程度分类、根据编程特性分类、根据互联结构分类、根据制造工艺分类等几种。目前主要根据器件的结构复杂程度对PLD器件进行分类,采用这种分类法,可编程器件可以分为SPLD、CPLD、FPGA与ISP器件,通常也把Lattice的ISP器件划归到CPLD器件。目前,应用最为
45、广泛的主要有CPLD器件与FPGA器件。1)SPLD器件SPLD(Simple Programmable Logic Device)是最早出现的可编程逻辑器件,其采用图2.1所示的电路结构,主要包括PROM、PAL、PLA、GAL等器件。相对于后期的CPLD与FPGA,其规模较小,运算速度、集成度低,只适于简单逻辑控制场合。PROM:具有一个固定的与阵列和一个可编程的或阵列,一般作为数字系统的存储器件使用。在计算机控制系统中,PROM器件通常用作系统的程序存储器。PAL:PAL的与阵列可编程,或阵列不可编程。由于器件的与阵列可编程,乘积项增多;GAL具有与PAL相同的阵列结构,与阵列可编程、或
46、阵列固定,同时,器件输出配置了输出逻辑宏单元(Output Logic MacroCell,OLMC),可组态为专用输入、输出、寄存器I/O等方式,实现时序或组合逻辑;二代GAL具有电擦写、重复编程加密功能。PLA:器件的与阵列和或阵列均具有可编程特性,其主要缺陷在于速度不高,同时在价格方面也不具备优势。PLA分为组合型与时序型两类器件,分别用于实现组合逻辑电路与时序逻辑电路。2)CPLD器件CPLD采用逻辑板块编程而非逻辑门编程,其结构以逻辑宏单元为基础,构成包括内部的与阵列、或阵列和输入/输出控制模块。由于受到本身资源规模的限制,CPLD器件通常用于相对简单的时序逻辑控制,适用于需要进行系
47、统扩展、扩大应用范围,提高或扩展系统性能的场合。3)FPGA器件FPGA器件通过静态随机存取存储(Static Random Access Memory,SRAM)工艺制造,采用逻辑单元阵列结构,内部主要包括可配置逻辑模块(Configurable Logic Block,CLB)、输出输入块(Input Output Block,IOB)与内部连线(Interconnect)。FPGA的组合逻辑通过查找表(161RAM)实现,查找表连接到D触发器,而后驱动其他逻辑电路或I/O,由此实现组合逻辑与时序逻辑电路功能。相对于其他PLD器件,FPGA具有设计灵活、集成度高、可重复编程、现场模拟调试验
48、证等优点。4)Lattice的ISP器件ISP器件采用E2CMOS工艺制造,内部具有存储程序信息的E2PROM,可电擦除。ISP器件的编程利用PC机通过编程电缆实现。相对于其他PLD器件,ISP器件无需专用编程器,编程方便,具有良好的易用性与高性能,具备FPGA的灵活性、高密度等特点,可在线重新编程。3PLD器件的其他分类法器件的其他分类法1)互连结构分类法这种分类方法根据器件的互连结构进行分类,分为确定型与统计型两个类别。确定型PLD器件每次布线的互连关系相同,实现具有同一逻辑功能的集成电路时,不会因为多次配置、适配而在PLD器件内部产生不同的连接结构。除FPGA之外的多数PLD器件均属于该
49、类型。与确定型PLD器件相反,统计型PLD器件在实现同一逻辑功能时,每次配置、适配电路都会在PLD器件内部产生不同的电路连接结构,多数FPGA器件隶属于该类器件。2)编程特性分类法该分类方法把大规模可编程逻辑器件分为一次可编程PLD器件与重复可编程PLD器件。一次可编程PLD器件只可编程一次,早期的PROM、PAL与熔丝类FPGA均是一次可编程PLD器件;可多次编程、重新配置的PLD器件则是重复可编程PLD器件,包括紫外光擦除的器件、电擦除器件。现有的PLD器件大多数都是重复可编程逻辑器件,且是电擦除,编程次数达数千次。2.2 典型典型CPLD器件器件2.2.1 MAX7000S系列器件系列器
50、件1主要器件及特性主要器件及特性Altera是最早推出CPLD器件的PLD厂商,其目前尚在广泛应用的CPLD器件包括MAX7000S、MAX3000A与MAX 等多个系列的PLD,表2.1所示为MAX7000S系列CPLD的主要器件及性能参数。2MAX7000S器件的结构与器件的结构与功能功能1)基本构成MAX7000S的逻辑结构如图2.2所示,其构成主要包括逻辑阵列块(Logic Array Block,LAB)、可编程连线阵(Programmable Interconnect Array,PIA)、I/O控制块(I/O Control Blocks,IOB)与宏单元。图2.2 MAX700