11《EDA技术实用教程》潘松黄继业编著科学出版社()(本书有完全配套的多媒体教学软件,免费赠送,联系方式在最后。购书需直接与出版社联系:010-82672033)前言尽管将EDA技术作为一门重要的专业基础课,在大多数高校的相关学科中已成为共识,但就其教学内容和实验安排上,当今尚有诸多不同看法,这里列出几点,以供探讨:◆课程应分三个层次来教学,即将诸如EWB、PSPICE和Protel的学习作为EDA的最初级内容;VHDL和FPGA开发等作为中级;ASIC设计为最高级;◆认为EDA技术学习中,VHDL的学习需要花费半年乃至一年的时间才能完成;◆EDA技术只是数字电路课的延续和补充,因此,实验内容应该具有一致性,即只需以EDA的手段完成与数字电路实验相近的实验项目即可。以上的看法值得商榷,我们认为关键的问题在于怎样紧紧把握课程教学中最实质的东西,即必须突出要点:首先是明确最基本的教学内容。EDA技术的教学必须围绕这样一个核心内容来展开,即学习一种通过软件的方法来高效地完成硬件设计的计算机技术,尽量略去其他没有直接联系的内容,如EWB、PSPICE、Protel等,因为这些工具仅属CAD的范畴,它们没有现代自动化设计中关于行为与结构综合的概念,没有自顶向下设计理论的内容。此外,因为无论是ASIC还是FPGA,都只是EDA最后的实现目标。EDA的特性决定了其实现方式具有很大的自由度。而最实质,最能体现创造性的是利用EDA技术完成某一项目的设计方案。因为基于FPGA的实现几乎如同软件一样可以随心所欲,而ASIC的前端设计与FPGA十分相近,可以利用ASIC设计EDA软件来完成,其最终的实现通常类似于交付PCB制作文件一样,可将最终的网表文件交付专业厂家来负责。今天的EDA技术已经使得“从事IP开发的无芯片EDA公司”和“无生产线的IC企业”成为可能,而且将可能成为我国现代电子技术的重要产业。我们认为,对于教学内容如果要分层次的话,从实现的方法和内容上去分比从实现的工具和工艺上去分更为合理。例如可以将逻辑行为的实现作为最低层,即用EDA工具完成数字电路实验中的部分内容,如红绿灯控制、数码译码显示、逻辑表决等;将控制与通信的实现作为第二层次,如A/D高速采样、工业自动化控制、接口与通信模块的设计等;而将算法的实现作为最高层次,如FIR、FFT、CPU的设计等。因为这样能使教学效果更好地反映EDA技术最本质的内容。其次是改善教学方法。考虑到目前的本科课程门类已大为增加,任何一门非公共课的学时都不会很多。显然,突出要点才能有效控制学时。建议这门课可安排52学时左右,包括实验课学时。这就要求主要以引导性教学为主。例如对VHDL的教学就不能像C或汇编语言那样逐条语句讲授,而是应结合具体实例讲解最基本的语句现象及其使用方法。再次就是注重教学实效。数字电路与EDA技术课程的侧重点不同,前者侧重于逻辑行为的认知和验证;后者则侧重于实用电子系统的设计,因此该课程具有很强的实践性。针对性强的实验应该是教学的重要环节,EDA实验更应注重实验的质量,而决非仅仅使用了什么EDA软件。在初级阶段,用EDA工具重复一些数字电路课中的实验是必须的,但这远非EDA实验的全部。因为数字电路实验的重点是逻辑行为和功能的验证,因而可用手工插线方式来完成“设计”,而不涉及任何技术指标和规模。众所周知,电子系统技术指标是十分重要的,这包括速度、面积(芯片资源)、可靠性、容错性、电磁兼容性等。有时往往指标要求决定了所使用的技术,指标要求推动技术的发展。全国大学生电子设计竞赛题中从来不提使用何种工具或技术来完成赛题,但参赛者不得不根据给出的技术指标做出选择。因此,EDA课程的实验,除了必须完成的基础性项目外,引导学生完成一些传统电子设计技术(包括单片机)不能实现的内容,从而突出这一现代电子设计技术的优势。例如UART、PS/2或USB接口的设计突出自主知识产权的概念;VGA显示器的控制或状态机控制A/D采样突出了高速性能指标的实现;FIR设计表现了基于EDA技术特有的IP应用技术;纯硬件奏乐电路的设计体现了EDA工具面对复杂逻辑电路设计的突出优势等。在这些实践过程中,会使学生发现,诸如ISP下载方式、FPGA、ASIC乃至EDA软件等设计手段本身都成了配角,而唯有对更高质地完成实验项目而不懈追求的设计能动性和创造性成了主角,从而有效地提高这门以培养工程实践能力为主的课程的教学效果。基于以上的认识,我们对本书各章节作了相应的安排。本书具有如下3个特点:1.注重实践与实用在各章中都安排了许多习题。除第1章、第2章外,其它各章都安排了针对性较强的实验,使学生对每一章的课堂的教学效果能及时通过实验得到强化。第3章除对FPGA、CPLD器件结构原理作了一般性介绍外,还介绍了与开发相关的内容;第10章介绍了EDA工具的优化技术;第11章以数个EDA工具间的接口方法,为读者展示了典型的EDA设计流程中十分重要和实用的环节;第12章更具体地介绍了6个设计课题,这些课题即可作为EDA实验的补充内容,也可用于电子设计或毕业设计项目的参考题目。各章设置的中大部分的实验除给出详细的实验目的、实验原理、实验思考题和实验报告要求外,还包含2至4个实验项目(层次),即:第一实验项目(层次)是与该章内容相关的验证性实验,课本提供了详细的并验证的设计程序和实验方法,学生只须将提供的设计程序深入计算机,并按要求进行编译仿真,并在实验系统上实现即可;第二实验项目(层次)是在上2一实验基础上进一步发挥性实验;第三、四实验项目(层次)属于自主设计或创新性质的实验。教师可以根据实验学时数和教学实验的要求布置不同层次的实验项目。2.注重速成一般认为EDA技术难点和学习费时的根源在于VHDL语言。对此,全书作了有针对性的安排:根据电子类专业的特点,放弃流行的计算机语言的教学模式,打破目前VHDL教材通用的编排形式,以电子线路设计为基点,从实例的介绍中引出VHDL语句语法内容,通过少数几个简单、直观、典型的实例,将VHDL中最核心、最基本的内容解释清楚,使读者在很短的时间内就能有效地把握VHDL的主干内容,而不必花费大量的时间去“系统地”学习语法书。这里以第5章为基点,包括第6章和第7章中的主要内容,集中体现了这一教学思想和教学方法,一般读者可直接进入这些章节的学习,迅速掌握要点,并能顺利地进行相关习题的解答和实验,为进一步的学习与实践奠定一个良好的基础。通常,这些内容可分别在约8个授课学时加8个实验学时内完成,即约三个整天的时间。其教学效果在过去与许多高校联合举办的EDA研习班上已得到了充分的证明。3.注重系统性、完整性与独立性相结合全书力争在不增加课时的情况下保持内容的系统性和完整性,使读者通过本书的学习和推荐的实验,初步掌握EDA技术最基本的内容。另一方面,书中大部分章节具有相对独立性,读者可根据自己的情况有针对性地选读某一章或几章,这有利于学时的按排和不同专业或学制的选用。此外,第4章以向导性方式,通过几个典型实用示例的设计介绍,使读者在只有数字电路基础知识的条件下即能迅速学会使用原理图或波形输入设计方法和学会利用大规模可编程逻辑器件完成较复杂的数字系统的设计实验。该章内容适合于普通数字电路课程中关于可编程逻辑器件章节的实验指导。第8、第9章对实用VHDL的语句与语法规则作了概括。现代电子设计技术是发展的,相应的教学内容和教学方法也应不断改进,其中一定有许多问题值得深入探讨,也包括以上提出的有关EDA教学的一家之言。我们真诚地欢迎读者对书中的错误与有失偏颇之处给予批评指正。目录第1章概述1.1EDA技术及其发展1.2EDA技术实现目标1.3硬件描述语言VHDL1.4VHDL综合1.5基于VHDL的自顶向下设计方法1.6EDA与传统电子设计方法的比较1.7EDA的发展趋势【习题】第2章EDA设计流程及其工具2.1FPGA/CPLD设计流程2.1.1原理图/HDL文本编辑2.1.2综合2.1.3适配2.1.4时序仿真与功能仿真2.1.5编程下载2.1.6硬件测试2.2ASIC及其设计流程2.2.1ASIC设计方法2.2.2一般ASIC设计的流程2.3常用EDA工具2.3.1设计输入编辑器2.3.2HDL综合器2.3.3仿真器2.3.4适配器(布局布线器)2.3.5下载器(编程器)2.4MAX+PLUSII概述2.5IP核【习题】第3章FPGA/CPLD结构与应用3.1概述3.1.1可编程逻辑器件的发展历程3.1.2可编程逻辑器件的分类3.2简单PLD原理3.2.1电路符号表示3.2.2PROM3.2.3PLA3.2.4PAL3.2.5GAL3.3CPLD结构与工作原理3.4FPGA结构与工作原理3.4.1查找表3.4.2FLEX10K系列器件3.5FPGA/CPLD测试技术3.5.1内部逻辑测试3.5.2JTAG边界扫描测试3.6FPGA/CPLD产品概述3.6.1Lattice公司CPLD器件系列3.6.2Xilinx公司FPGA和CPLD器件系列3.6.3Altera公司FPGA和CPLD器件系列3.6.4Altera公司FPGA配置方式与器件系列3.7CPLD和FPGA的编程与配置3.7.1CPLD的ISP方式编程3.7.2使用PC并行口配置FPGA3.7.3用专用配置器件配置FPGA3.7.4使用单片机配置FPGA【习题】【实验3-1】单片机和EPROM配置FPGA电路设计33第4章原理图输入设计方法4.11位全加器设计向导4.1.1基本设计步骤4.1.2设计流程归纳4.1.3补充说明4.22位十进制数字频率计设计4.2.1设计有时钟使能的两位十进制计数器4.2.2频率计主结构电路设计4.2.3测频时序控制电路设计4.2.4频率计顶层电路设计4.2.5设计项目的其它信息和资源配置4.3参数可设置LPM兆功能块4.3.1基于LPM_COUNTER的数控分频器设计4.3.2基于LPM_ROM的4位乘法器设计4.4波形输入设计方法【习题】【实验4-1】原理图输入设计8位全加器【实验4-2】原理图输入设计8位十进制频率计【实验4-3】LPM模块使用第5章VHDL设计初步5.1多路选择器VHDL描述5.1.12选1多路选择器的VHDL描述5.1.2VHDL相关语句说明5.1.3VHDL设计基本概念和语句小节5.2寄存器描述及其VHDL语言现象5.2.1D触发器的VHDL描述5.2.2D触发器VHDL描述的语言现象说明5.2.3实现时序电路的VHDL不同表达方式5.2.4异步时序电路设计5.2.5VHDL设计基本概念和语言现象小节5.31位二进制全加器的VHDL设计5.3.1半加器描述和CASE语句5.3.2全加器描述和例化语句5.4VHDL文本输入设计方法初步5.4.1编辑输入并存盘VHDL源文件5.4.2将当前设计设定为工程5.4.3选择VHDL文本编译版本号和排错5.4.4时序仿真5.4.5硬件测试【习题】【实验5-1】简单组合电路的设计【实验5-2】简单时序电路的设计第6章VHDL设计进阶6.14位加法计数器的VHDL描述6.1.14位加法计数器6.1.2整数、自然数和正整数数据类型6.1.3另一种表达方式的4位加法计数器6.2不同工作方式的时序电路设计6.2.1相关语法6.2.2带有复位和时钟使能的10进制计数器6.2.3带有并行置位的移位寄存器6.3数据对象DATAOBJECTS6.3.1常数(CONSTANT)6.3.2变量(VARIABLE)6.3.3信号(SIGNAL)6.3.4进程中的信号与变量赋值语句6.4双向电路和3态控制电路设计6.4.1三态门设计6.4.2双向端口设计6.4.3三态总线电路设计6.4.4顺序条件语句IF语句6.5进程语句结构6.5.1进程语句格式6.5.2PROCESS组成6.5.3进程要点6.6仿真延时6.6.1固有延时6.6.2传输延时6.6.3仿真【习题】【实验6-1】含异步清0和同步时钟使能的4位加法计数器【实验6-2】7段数码显