EDA技术实践教程pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:EDA技术实践教程pdf/doc/txt格式电子书下载
推荐语:
作者:李芸著
出版社:电子工业出版社
出版时间:2014-03-01
书籍编号:30467706
ISBN:9787121223631
正文语种:中文
字数:50358
版次:1
所属分类:教材教辅-大学
版权信息
书名:EDA技术实践教程
作者:李芸
ISBN:9787121223631
版权所有 · 侵权必究
前言
EDA技术是当今电子信息领域最先进的技术之一,已广泛应用于电子、通信、工业自动化、智能仪表、图像处理及计算机等领域,是电子工程师必须掌握的一门技术。通过对国、内外一些高校的调研,我们发现许多著名高校的EDA技术本科教学有两个明显的特点:一是在各专业课程中涉及较多;二是在实践中大量引入新技术、新方法与新器件,更多地注重创新性、设计性、综合性项目,突出EDA技术的实用性及面向工程实际的特点。
根据作者多年的教学实践经验,EDA技术只有通过大量的操作与实践才能快速并有效地掌握。因此本书内容的编排力求实用,深入浅出、由易到难地列举了20个典型实例,应用范围包括电子、计算机、通信、信号处理、控制等诸多领域。读者在读完本书并完成实践项目的基础上,能比较全面地掌握使用EDA技术设计混合系统的方法和技能,为今后从事相关领域的开发打下良好的基础。
本书采用Verilog HDL硬件描述语言。Verilog HDL作为IEEE标准的两大主流HDL之一,与VHDL相比,具有易学易用和占据ASIC设计领域主导地位等优势,其覆盖率在全球范围内一直处于上升趋势。统计资料表明,Verilog HDL的行业覆盖率现已超过80%,在美国和日本的比例更高,已占绝对优势,因此导致我国Verilog HDL工程师和相关领域人才需求的不断增加。本书所有实践项目采用的EDA软、硬件平台分别是Quartus II 9.1、ModelSim SE 6.5b和Altera Cyclone III系列FPGA。
本书的目标是使读者能快速掌握EDA技术的基础理论及其工程实践的基本技能,同时本书给出大量EDA实践项目以促进读者自主创新能力的有效提高。全书共分5章,各章节安排如下:第1章为入门了解,以Altera公司的集成EDA开发工具Quartus II为例,详细讲述每步设计流程及功能;第2章简单介绍Verilog HDL的语法结构和语言要素;第3章是EDA技术设计入门篇,提供10个基础实践项目,侧重于基本知识点的应用;第4章是EDA技术设计提高篇,提供10个创新实践项目,侧重于读者工程实践和技术创新技能的培养;第5章介绍仿真软件ModelSim的使用方法;附录A提供了KX_DN系列EDA开发系统的使用说明。
本书既可以作为高等学校电子工程、通信、计算机、自动控制等相关专业EDA技术和电子设计课程的实践教材,也可以作为电子设计竞赛的培训教材,以及工程技术人员的参考用书。
为了便于读者实践和学习,本书提供配套电子课件,同时作者特将全书程序代码和相关工程文件整理出来,读者可登录华信教育资源网(http://www.hxedu.com.cn)注册下载。
作者在编写本书时参考了相关的设计书籍和技术文章,在这里向这些资料的作者表示衷心感谢。
由于作者的知识水平有限,书中错误和不当之处在所难免,敬请广大读者和专家批评指正。
作者
第1章 Quartus II 9.1使用介绍
本章介绍了Altera公司EDA软件Quartus II的基本功能和设计流程。并在Quartus II 9.1平台上,通过一个设计实例介绍详细的设计步骤。
1.1 概述
Altera公司是世界上最大的可编程逻辑器件供应商之一,Quartus II是Altera在21世纪初推出的新一代FPGA/CPLD开发集成环境,它是Altera前一代集成开发环境MAX+plus II的更新换代产品,其界面友好,使用便捷。
Altera的Quartus II提供了一种与结构无关的设计环境,使设计人员能够方便地进行设计输入、快速处理和器件编程。它还提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。
Quartus II设计工具完全支持VHDL、Verilog HDL的设计流程,其内部嵌有VHDL、Verilog HDL逻辑综合器。Quartus II也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro及DC-FPGA,并能直接调用这些工具。同样,Quartus II具备仿真功能,也支持第三方的仿真工具,如ModelSim。另外,Quartus II与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。
Quartus II包括模块化的编辑器。编辑器包括的功能模块有分析综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑数据接口等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各模块,还可以通过选择Compiler Tool,在Compiler Tool窗口中选择相应模块来运行。在Compiler Tool窗口中,可以打开相应模块的设置文件或报告文件,或打开其他相关窗口。
此外,Quartus II还包含许多十分有用的LPM模块,它们是复杂或高级系统构建的重要组成部分,也可在Quartus II中与普通设计文件一起使用。Altera提供的LPM函数基于Altera器件的结构做了优化设计。在许多实际情况中,必须使用宏功能模块才可以使用一些Altera器件的特定硬件功能。
目前Quartus II软件的最新版本是v13.0。与前一版本v12.1相比,编译速度平均高出了25%,某些设计提高了近3倍。此外,在高端领域以及优异的逻辑封装能力方面,与最相近的竞争产品相比,Quartus II v13.0版使系统的最高工作频率提高了23%,并且推出了面向OpenCL的Altera SDK新产品。
Quartus II软件界面比较统一,功能集中,设计流程规范。目前各高等学校EDA课程中使用较多的版本是Quartus II 9.1,本书的相关实例也是基于这一版本的。
1.2 Quartus II设计流程
Quartus II的设计流程如图1-1所示。
图1-1 Quartus II设计流程
图1-1中,上排所示的是Quartus II编译设计主控界面,它显示了Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编(装配)、时序参数提取及编程下载几个步骤。图中下排是流程框图,是与上排的Quartus II设计流程相对照的标准的EDA开发流程。下面对各环节进行简单的介绍。
1.设计输入
将电路系统以一定的表达方式输入计算机,是在EDA软件平台上对FPGA/CPLD开发的最初步骤。Quartus II的设计输入方式有很多种,可以使用Block Editor建立原理图输入文件,也可使用Text Editor建立文本输入文件(包括VHDL、Verilog HDL和AHDL),还可以通过MegaWizard Plug-In Manager定制宏功能模块。Quartus II还能够识别来自第三方的网表文件(如EDIF),并提供了很多EDA软件的接口。Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。
2.综合或编译
综合就是将HDL文本、原理图等设计输入翻译成由基本门电路、触发器、存储器等基本逻辑单元组成的硬件电路,它是文字描述与硬件实现的桥梁。综合就是将电路的高级语言(如行为描述)转换成低级的、可与FPGA/CPLD的基本结构相映射的网表文件或程序。为达到速度、面积、性能的要求,往往需要对综合加以约束,称为综合约束。
可以使用Quartus II自带的Analysis&Synthesis模块进行综合,也可以选择第三方EDA综合工具,如Synplicity公司的Synplify、Synplify Pro综合器,Mentor Graphics公司的Design Architect、Leonardo Spectrum综合器等。
Quartus II在完成编译时可以自动完成分析综合,也可以单独启动Start Analysis&Synthesis菜单,通过Analysis&Elaboration可以检查设计的语法错误。
3.适配器件
适配器也称为结构综合器,它将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如jedec、jam、sof、pof格式的文件。适配器完成底层器件配置、逻辑分割、逻辑优化、逻辑布局布线等操作。由于适配对象必须直接与器件的结构细节相对应,适配器需由FPGA/CPLD供应商自己提供。
在Quartus II中,适配是由Filter模块来完成的。Filter使用分析综合后得到的网表数据库,将设计所需的逻辑和时序要求与目标器件的可用资源相匹配。它为每一个逻辑功能分配最佳的逻辑单元位置,进行布线和时序分析,并选择合适的相应互连路径和引脚分配。如果在设计中已经对资源进行了分配,Filter将这些资源分配与器件上的资源进行匹配,尽量使设计满足设置的约束条件,并对剩余的逻辑进行优化。如果没有设定任何设计限制,Filter将自动对设计进行优化。如果找不到合适的匹配,Filter将会终止编译并给出错误信息。Quartus II中的完全编译包括了适配,可以单独执行Start Filter操作,前提是分析综合必须成功。
4.仿真
仿真就是计算机根据一定的算法和仿真库对EDA设计进行模拟测试,以验证设计,排除错误。仿真是EDA设计过程中的重要步骤,可以分为功能仿真和时序仿真。功能仿真直接对设计文件的逻辑功能进行测试模拟,以了解其是否满足设计要求。功能仿真过程不涉及任何具体器件的硬件特性,它的优点是耗时短,对硬件库、综合器等没有任何要求。时序仿真是在综合、适配后,电路的最终形式已经固定之后,再加上器件物理模型进行仿真。时序仿真更接近真实器件运行特性,它包含了器件硬件特性参数,仿真精度高。
可以使用Quartus II自带的Simulator模块进行仿真,也可以使用第三方的EDA仿真工具,如Cadence公司的Verilog HDL XL、NC-VHDL,Mentor Graphics公司的ModelSim等。本书第5章将详细介绍ModelSim的使用方法。
5.时序分析
在高速数字系统设计中,随着时钟频率的大大提高,留给数据的有效操作时间越来越短,同时时序和信号的完整性也是密不可分的,良好的信号质量是确保稳定时序的关键,因此必须进行精确的时序计算和分析。
Quartus II提供两个独立的时序分析工具,一个是默认的经典Timing Analyzer时序分析仪,另一个是新增的TimeQuest时序分析仪。它们提供了完整的对设计性能进行分析、调试和验证的方法,对设计所有路径的延时进行分析,并与时序要求相比较,以保证电路在时序上的正确性。
6.编程下载
把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA/CPLD下载,以便进行硬件调试和验证。编程下载是Quartus II设计流程的最后一步,编程下载文件由Quartus II集成的Assembler模块产生,启动全程编译会自动运行Assembler模块。编程下载后,就可以在实验箱或实验板上进行硬件验证了。
1.3 设计举例
本节通过一个简单的例子详细介绍Quartus II的完整开发设计流程,我们以一位半加器为例。
1.创建工程
(1)建立工作库文件夹
任何一项EDA设计都是一项工程(Project),必须首先为此工程建立一个放置与该工程相关的所有设计文件的文件夹。此文件夹将被默认为工作库(Work Library),文件夹的命名最好具有可读性。一般地,不同设计项目最好放在不同的文件夹中,同一工程的所有文件放在同一文件夹中。
(2)打开并建立新工程管理窗口
在建立了文件夹后,利用New Project Wizard工具创建工程。图1-2所示为Quartus II 9.1界面。
图1-2 Quartus II 9.1界面
按图1-2选择File→New Project Wizard命令,将弹出一个新建工程介绍(Introduction)对话框,单击Next按钮,进入新建工程向导对话框,如图1-3所示。分别设置工程所在文件夹路径、工程名以及顶层设计文件名。Quartus II要求工程名和顶层设计文件名必须一致。和文件夹命名一样,工程名及顶层设计文件名最好具有可读性,即和设计功能相关,这里我们将一位半加器的工程和顶层文件命名为half_adder。
图1-3 新建工程向导对话框
(3)将设计文件加入工程
单击Next按钮,弹出图1-4所示的添加设计文件对话框,如果设计文件暂时没有,可以跳过这步,待设计文件编辑好再添加。
图1-4 添加设计文件对话框
(4)选择目标器件
接下来进入选择目标器件对话框,如图1-5所示。
图1-5 选择目标器件对话框
根据目标器件的类型进行选择,例如KX_DN3实验箱FPGA核心板上的器件为EP3C5E144C8,它属于Cyclone III系列,我们按图1-5选择器件族和芯片信号。目标芯片的型号也可以通过选择Assignments→Device命令,在弹出的对话框中进行修改。
(5)工具设置及结束设置
单击Next按钮,弹出EDA工具设置对话框——EDA Tool Settings。再单击Next按钮,弹出工程设置统计对话框,上面列出了此工程相关的设置情况。最后单击Finish按钮,结束工程设置。工程建好之后,可以选择Project→Add/Remove Files in Projects命令,添加文件到工程或删除工程中现有的文件。
2.编辑和输入设计文件
(1)新建设计文件
Quartus II的文件类型有很多,设计文件主要有原理图输入文件(Block Diagram/Schematic File)和HDL文件,通过选择File→New命令,在弹出的对话框中进行选择,如图1-6所示。本例选择新建设计文件类型为原理图输入文件。
图1-6 选择设计文件类型
(2)编辑设计文件
在图形编辑窗口中输入设计文件。我们首先介绍一位半加器的设计思路。一位二进制半加器的输入端有两个,分别是加数a和被加数b,两个输出分别是进位端co和求和端s。一位半加器的真值表如表1-1所示。
表1-1 一位半加器的真值表

由真值表可以得到输出逻辑表达式:co=a&b,s=a^b。因此,完成一个一位半加器需要一个二输入与门和一个异或门。
双击图形编辑窗口的空白处,弹出Symbol窗口,即元件编辑窗口,如图1-7所示。左上角是Quartus II 9.1的一些基本元件库,以树状目录列出。可以通过目录选择,也可以直接在左下角的Name一栏内输入元件名。
首先添加输入、输出端口。在图1-7所示的元件编辑窗口的Name栏直接输入input(输入端),在窗口右侧会出现相应原件的图形符号,单击OK按钮将元件放置到图形编辑窗口。依次加入两个输入端、两个输出端(output)。
图1-7 添加输入端口
选中图形编辑窗口中的元件,双击或单击鼠标右键选择Properties,会弹出元件属性设置对话框,从中可以修改元件名称、默认取值、外观等属性。在图1-8中,我们修改输入端口的名称。
图1-8 元件属性设置对话框
然后添加异或门和二输入与门,注意Quartus II中的二输入与门元件名为“and2”,如图1-9所示。
图1-9 添加元件——二输入与门
图1-10 一位半加器电路图
修改各端口名称,调整元件位置,然后用连线工具完成各元件间的连接,可以得到完整的一位半加器电路图,如图1-10所示。
(3)保存设计文件
上述原理图设计文件存放于之前设定的工程文件夹内,文件名为half_adder,后缀名为*.bdf。注意该工程只有一个设计文件,它就是顶层设计文件,文件命名要与创建工程时设定的顶层设计文件名一致。
这样我们就完成了设计文件的编辑。如果设计文件是Verilog HDL文本格式,在第(1)步新建设计文件中,选择文件类型为Verilog HDL File,在文本编辑框中输入Verilog HDL代码,设计文件的后缀名是*.v。
3.编译
选择Processing→Start Compilation命令,启动全程编译。如果工程中的文件有错误,在下方的Processing处理栏会显示错误信息,改错后再次进行编译直至排除所有的错误。编译成功后,可以得到图1-11所示的编译结果,在左上角显示了工程half_adder的层次结构及其耗用的逻辑宏单元数量;此栏下方是编译处理流程;右边是编译报告(Compilation Report)栏,单击各选择菜单可以详细了解编译与分析结果,其中Flow Summary为硬件耗用统计报告,显示当前工程耗用逻辑宏单元、寄存器、存储位数和引脚数量等信息。
图1-11 编译结果
4.仿真
通过编译后,须对工程进行功能仿真或时序仿真,以了解设计结果是否满足要求。
(1)新建仿真波形文件
选择File→New→Vector Waveform File命令,会弹出空白的波形编辑器。
(2)设置仿真时间
对时序仿真来说,将仿真时间设置在一个合理的范围内十分重要,一般根据设计内容来选择仿真时间。仿真时间过长则耗时太多,仿真时间过短则无法判断结果是否符合要求。选择Edit→End Time命令,弹出图1-12所示的设置仿真时间对话框,选择仿真时间为5μs。
图1-12 设置仿真时间对话框
(3)添加仿真信号
将工程中需要观察的信号节点加入波形编辑器中的方法有很多,如选择Edit→Insert→ Insert Node or Bus命令,或双击波形编辑器的左栏等,此时会弹出图1-13所示的添加节点对话框。
图1-13 添加节点对话框
单击Node Finder按钮打开图1-14所示的节点查找对话框。通过过滤选项(Filter)帮助我们选择需要信号的类型,这里选择Pins:all,单击List按钮,左下方已经找到的节点一栏(Nodes Found)中会列出本工程所有的引脚;如果还需要观察内部寄存器,可以选择Pins:all&Registers。
图1-14 节点查找对话框
在Nodes Found中选中需要观察的信号,单击“>”按钮,将信号选入到右边的已选节点一栏(Selected Nodes)。“>>”按钮表示选中左栏所有的信号,“<”按钮表示删除一个已选节点,“<<”按钮表示删除所有已选节点。
(4)输入激励信号
对输入波形进行编辑,确定其逻辑值。注意:输出波形不需要编辑,由仿真器算出,仿真的过程就是用软件模拟硬件的运行情况,根据输入信号的取值,计算出输出信号的结果。
使用Customize Waveform Editor工具对输入波形进行编辑,该工具栏及其中各工具功能如图1-15所示。
图1-15 波形编辑工具栏
本设计中,我们用时钟设置工具将一位半加器的两个输入端a和b分别设置为周期是200ns和400ns、占空比是50%的周期信号,设置好激励信号的波形如图1-16所示。将波形文件保存到工程所在的文件夹,文件名为half_adder,后缀名为*.vwf。注意:Quartus II中的仿真也是以工程为单位的,要求仿真波形文件名与工程名必须一致。
图1-16 设置好激励信号的波形文件
(5)设置仿真器参数
前面已经提到,仿真分为功能仿真和时序仿真,在Quartus II中可以设置相关仿真参数。选择Assignment→Settings命令,打开参数设置窗口,在右侧选择Simulator Settings选项,得到图1-17所示的仿真参数设置窗口。本例是在全程编译后进行仿真的,经过了适配,已经包含了延时等器件硬件特性参数,因此选择时序仿真。
图1-17 仿真参数设置窗口
(6)启动仿真器
现在所有仿真设置已进行完毕,选择Processing→Start Simulation命令进行仿真,直到出现Simulation was successful对话框,仿真完成。
(7)分析仿真结果
在Quartus II中,仿真波形文件(*.vwf)和仿真报告(Simulation Report)是分开的。一般仿真成功后会自动弹出仿真报告窗口,也可以选择Processing→Simulation Report命令打开。
一位半加器的仿真结果如图1-18所示,对照表1-1所示的真值表,可以验证仿真结果的正确性。由于进行的是时序仿真,输出结果s有毛刺是正常现象。这是因为输入a和b同时由1变为0,每条路径上的延迟时间不同,到达异或门的时间就有先后,存在竞争和冒险,从而产生毛刺。
图1-18 一位半加器的仿真结果
5.时序分析
完成波形仿真后,可以使用时序分析工具对设计进行时序分析。通过菜单Assignment→ Settings→Timing Analysis Settings选择分析工具,如图1-19所示。
图1-19 时序分析工具选择
6.引脚锁定
为了将设计好的半加器工程下载到EDA实验箱——KX_DN3上进行硬件功能验证,首先要根据实验箱的现有资源进行端口分配,确定每个端口与FPGA引脚的对应关系,再进行引脚锁定。此处让输入a和b从两个开关引入,输出co和s送至指示灯,端口与实验箱信号以及FPGA引脚的对照关系如表1-2所示。
表1-2 端口-信号-引脚对照表

接下来进行引脚锁定。选择Assignment→Pins命令,弹出Pin Planner窗口,在Node Name一列输入设计中的输入输出端口名,在Location一列输入引脚编号,如图1-20所示。
图1-20 引脚锁定
完成引脚锁定之后,必须再次启动全程编译,才能将引脚锁定的信息编译到编程下载文件中。
7.编程下载
将编译产生的*.sof文件配置到FPGA中进行硬件测试,编程下载的前提是实验箱和计算机的下载电缆连接完好,并且实验箱上电工作。在Quartus II中选择Tools→Programmer命令,弹出图1-21所示的编程窗口。
图1-21 编程窗口
本例通过JTAG接口利用USB Blaster编程器进行下载,在图1-21中右上方Mode后的下拉列表框中列出了4种编程模式,我们选择JTAG模式。第一次下载的用户没有安装编程器,即左上方Hardware Setup栏显示No Hardware,需要安装编程器。在实验箱上电且编程链路连接完好的情况下,计算机一般会自动安装USB Blaster编程器,如果没有,可以手动安装,过程如下。计算机检测到不能正常工作的设备或在设备管理器中找到没有安装驱动的设备,选择手动安装驱动程序,选择USB Blaster驱动程序所在的路径。一般在Quarstus II安装目录drivers子目录下的usb-blaster 文件夹内,如D:\\altera\\91\\quartus\\drivers\\usb-blaster。USB Blaster编程器安装好之后,单击Hardware Setup栏,弹出图1-22所示的编程器设置窗口,从中可以选择、添加或删除相应的编程器。
图1-22 编程器设置窗口
编程器和编程模式设置完毕之后,选择相应的配置文件(本例为half_adder.sof),最后单击Start按钮,完成对目标器件FPGA的配置下载操作。
8.硬件验证
对照真值表(如表1-1所示),在实验箱上验证设计功能。这样我们就完成了一个完整的基于Quartus II的EDA设计。
第2章 Verilog HDL语言
2.1 概述
硬件描述语言(HDL,Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言,它可用一系列分层次的模块来表示复杂的数字系统,从上到下逐层描述,并逐层进行验证仿真。再把具体的模块由综合工具转化成门级网表,接下来利用布局布线工具把网表转化为具体电路结构的实现。现在,这种自顶向下的设计方法已被广泛使用。HDL语言具有以下主要特征。
● HDL语言既包含一些高级程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体结
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询