教学课件:数字电路EDA设计(第二版).ppt

上传人(卖家):三亚风情 文档编号:3546393 上传时间:2022-09-15 格式:PPT 页数:308 大小:5.71MB
下载 相关 举报
教学课件:数字电路EDA设计(第二版).ppt_第1页
第1页 / 共308页
教学课件:数字电路EDA设计(第二版).ppt_第2页
第2页 / 共308页
教学课件:数字电路EDA设计(第二版).ppt_第3页
第3页 / 共308页
教学课件:数字电路EDA设计(第二版).ppt_第4页
第4页 / 共308页
教学课件:数字电路EDA设计(第二版).ppt_第5页
第5页 / 共308页
点击查看更多>>
资源描述

1、 EDA技术在电子设计领域的主要应用包括电子CAD与集成电路设计。随着电子CAD的发展,EDA技术也日益应用于集成电路设计,尤其是ASIC设计。ASIC是Application Specific Intergrated Circuit的简称,即专用集成电路。ASIC通常分为模拟ASIC、数字ASIC、模数混合ASIC与微波ASIC。数字ASIC可以划分为全定制ASIC、半定制ASIC和可编程ASIC三大类别。半定制ASIC实际上是一种半成品的ASIC,这种ASIC内部已经预制好单元电路,但各单元之间的连线掩膜尚未制造,有待设计确定。半定制ASIC包括门阵列ASIC与标准单元ASIC。门阵列AS

2、IC片上提供了大量规则排列的单元(早期的单元是门,故称门阵列),将这些单元按不同规律连接到一起就可以产生不同的功能。标准单元ASIC的特征是标准单元库,设计时通过调用库中提供的标准单元的版图完成版图设计,由于标准单元库的内容经过精心设计,因此通过调用其内容设计的版图往往能用较短的设计周期获得较高的性能。全定制ASIC需要设计者借助全定制IC版图设计工具,由设计者手工设计IC版图,包括芯片内部的布局布线、规则验证、参数提取、一致性检查等,这种ASIC对设计人员提出了很高的经验要求,设计周期长且设计成本高,适用于批量很大的芯片。编程ASIC的典型应用是PLD(可编程逻辑器件)。可编程逻辑器件的核心

3、价值体现在“可编程”,可编程是指器件的内部硬件连接可修改,大部分的可编程逻辑器件可以多次修改其内部布局布线从而改变所具有的逻辑功能,这为设计的修改完善与产品升级带来了很大的灵活性。由于主要逻辑功能在PLD内部实现,外界只能看到输入输出引脚,不能轻易知悉PLD内部的连接情况,因而也增加了数字电路设计的保密性。设计输入1设计实现2设计验证3器件下载4 EDA设计输入指设计者采用某种描述工具描述出所需的电路逻辑功能,然后将描述结果交给EDA软件进行设计处理。设计输入的形式有硬件描述语言输入、原理图输入、状态图输入、波形输入或几种方式混合输入等。其中硬件描述语言输入是最重要的设计输入方法。目前业界常用

4、的硬件描述语言有VHDL、Verilog-HDL、ABEL-HDL,本书主要介绍VHDL语言的设计方法。设计实现的过程由EDA软件承担,设计实现是将设计输入转换为可下载入目标器件的数据文件的全过程。设计实现主要包括优化(Optimization)、合并(Merging)、映射(Mapping)、布局(Placement)、布线(Routing)、下载数据产生等步骤。设计实现优化优化映射映射合并合并布局布局布线布线下载数据下载数据 优化是指EDA软件对设计输入进行分析整理,使得逻辑最简,并转换为适合目标器件实现的形式。合并是指将多个模块文件合并为一个网表文件。映射是指根据具体的目标器件内部的结构

5、对设计进行调整,使逻辑功能的分割适合于用指定的目标器件内部逻辑资源实现。映射之前软件产生的网表文件与器件无关,主要是以门电路和触发器为基本单元的表述,映射之后产生的网表文件将对应于具体的目标器件的内部单元电路,比如针对XILINX公司的FPGA芯片,映射后的网表文件将逻辑功转换为以CLB为基本单元的表述形式,便于后续布局。映射将逻辑功能转换为适合于目标器件内部硬件资源实现的形式后,实施的具体的逻辑功能分配,即用目标器件内不同的硬件资源实现各个逻辑功能,这一过程称为布局。针对XILINX公司的FPGA芯片,布局就是将映射后的各个逻辑子功能分配给具体的某个CLB的过程。布线是指在布局完成后,根据整

6、体逻辑功能的需要,将各子功能模块用硬件连线连接起来的过程。产生下载数据是指产生能够被目标器件识别的编程数据。对于可编程逻辑器件而言,CPLD的下载数据为熔丝图文件即JEDEC文件;FPGA的下载数据为位流数据文件Bitstream。器件下载也称为器件编程,这一步是将设计实现阶段产生的下载数据下载入目标器件的过程。设计验证包括功能仿真、时序仿真与硬件测试。这一步通过仿真器来完成,利用编译器产生的数据文件自动完成逻辑功能仿真和延时特性仿真。在仿真文件中加载不同的激励,可以观察中间结果以及输出波形。必要时,可以返回设计输入阶段,修改设计输入,最终达到设计要求。TOP-DOWN即自顶向下设计方法,是数

7、字系统设计常用的设计方法,其本质是模块化设计方法,其精髓在于对系统功能按层逐渐分解,按层进行设计,按层进行验证仿真 ABEL-HDLABEL-HDLVerilog-HDL VHDL ABEL-HDL是美国DATA I/O公司开发的硬件描述语言。目前支持ABEL-HDL语言的开发工具很多,有DOS版的ABEL4.0(目前主要用于GAL的开发)、DATAT I/O的Synario、Lattice的ispEXPERT、Xilinx的Foundation等软件。通过文件转换,ABEL-HDL程序可以被转换为VHDL等其他HDL。ABEL-HDL语言的基本结构可包含一个或几个独立的模块。每个模块包含一整

8、套对电路或子电路的完全的逻辑描述。无论有多少模块都能结合到一个源文件中,并同时予以处理。ABEL-HDL源文件模块可分成五段:头段、说明段、逻辑描述段、测试向量段和结束段。ABEL-HDL是美国DATA I/O公司开发的硬件描述语言。目前支持ABEL-HDL语言的开发工具很多,有DOS版的ABEL4.0(目前主要用于GAL的开发)、DATAT I/O的Synario、Lattice的ispEXPERT、Xilinx的Foundation等软件。通过文件转换,ABEL-HDL程序可以被转换为VHDL等其他HDL。ABEL-HDL语言的基本结构可包含一个或几个独立的模块。每个模块包含一整套对电路或

9、子电路的完全的逻辑描述。无论有多少模块都能结合到一个源文件中,并同时予以处理。ABEL-HDL源文件模块可分成五段:头段、说明段、逻辑描述段、测试向量段和结束段。ABEL-HDL是美国DATA I/O公司开发的硬件描述语言。目前支持ABEL-HDL语言的开发工具很多,有DOS版的ABEL4.0(目前主要用于GAL的开发)、DATAT I/O的Synario、Lattice的ispEXPERT、Xilinx的Foundation等软件。通过文件转换,ABEL-HDL程序可以被转换为VHDL等其他HDL。ABEL-HDL语言的基本结构可包含一个或几个独立的模块。每个模块包含一整套对电路或子电路的完

10、全的逻辑描述。无论有多少模块都能结合到一个源文件中,并同时予以处理。ABEL-HDL源文件模块可分成五段:头段、说明段、逻辑描述段、测试向量段和结束段。Verilog-HDL是目前应用较广泛的一种硬件描述语言。设计者可以用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合等。Verilog-HDL是专门为ASIC设计而开发的,本身即适合ASIC设计。在亚微米和深亚微米ASIC已成为电子设计主流的今天,Verilog-HDL的发展前景是非常远大的。Verilog-HDL较为适合算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)和门级(Gat

11、e)设计,而对于特大型的系统级设计,则VHDL更为适合。Verilog-HDL把一个数字系统当作一组模块来描述。每一个模块具有模块的接口以及关于模块内容的描述。一个模块代表一个逻辑单元,这些模块用网络相互连接,相互通信。VHDL语言涵盖面广,抽象描述能力强,支持硬件的设计、验证、综合与测试。VHDL能在多个级别上对同一逻辑功能进行描述,如可以在寄存器级别上对电路的组成结构进行描述,也可以在行为描述级别上对电路的功能与性能进行描述。无论哪种级别的描述,都有赖于优良的综合工具将VHDL描述转化为具体的硬件结构。相对于其他硬件描述语言,VHDL的抽象描述能力更强,因此运用VHDL进行复杂电路设计时,

12、非常适合自顶向下分层设计的方法。首先从系统级功能设计开始,对系统的高层模块进行行为与功能描述并进行高层次的功能仿真,然后从高层模块开始往下逐级细化描述。VHDL设计描述的基本结构包含有一个实体和一个结构体,而完整的VHDL结构还包括配置、程序包与库。Verilog-HDL和VHDL的比较VHDLVerilogVerilog语言是一种较低级的描述语言,语言是一种较低级的描述语言,最适于描述门级电路,最适于描述门级电路,易于控制电路资源。易于控制电路资源。VerilogVerilog语言在高级描述方面不如语言在高级描述方面不如VHDLVHDL在在VerilogVerilog设计中,工作量通常比较大

13、,设计中,工作量通常比较大,因为设计者需要搞清楚具体电路结构的细节因为设计者需要搞清楚具体电路结构的细节VHDLVHDL语言是一种高级描述语言,适用于电路高级建模,语言是一种高级描述语言,适用于电路高级建模,综合的效率和效果都比较好。综合的效率和效果都比较好。VHDLVHDL直接描述门电路的能力不如直接描述门电路的能力不如VerilogVerilog语言语言VHDLVHDL入门较难,入门较难,但在熟悉以后,设计效率明显高于但在熟悉以后,设计效率明显高于VerilogVerilog,生成的电路性能也与生成的电路性能也与VerilogVerilog不相上下。在不相上下。在VHDLVHDL设计中,设

14、计中,综合器完成的工作量是巨大的,设计者所做的工作就相对减少了综合器完成的工作量是巨大的,设计者所做的工作就相对减少了Verilog-HDLVerilog-HDL和VHDL的相同点 Verilog-HDL和和VHDL都已成为都已成为IEEE标准。其共同的特点在于:标准。其共同的特点在于:能形式化地抽象表示电路的结构和行为,支持逻辑设计中层能形式化地抽象表示电路的结构和行为,支持逻辑设计中层次与领域的描述,可借用高级语言的精巧结构来简化电路的次与领域的描述,可借用高级语言的精巧结构来简化电路的描述,具有电路仿真与验证机制以保证设计的正确性,支持描述,具有电路仿真与验证机制以保证设计的正确性,支持

15、电路描述由高层到低层的综合转换,便于文档管理,易于理电路描述由高层到低层的综合转换,便于文档管理,易于理解和设计重用。解和设计重用。可编程逻辑器件开发工具可编程逻辑器件开发工具 ispLEVER ISEQuartus II IP的英文全称为Intellectual Property,即知识产权。IP涉及社会生活各个领域,在EDA领域,IP以IP 核(IP Core)的形式出现。所谓IP核,是指将电子设计过程中经常使用而又对设计要求较高的功能模块,经过严格测试与高度优化,精心设计为参数可调的模块,其他用户通过调整IP核的参数即可满足特定的设计需要。IP核的获得方法有继承、共享与购买。IP核按实现

16、方法区分,通常分为软核、固核与硬核。软核是指用硬件描述语言描述的功能模块,但不涉及具体的实现电路。软核最终产品与一般的HDL编写的源程序相似,但软核开发的成本较大,对开发所需的软件、硬件要求较高。由于软核开发时未涉及具体实现电路,因此为使用者在软核基础上的二次开发提供了较大的余地,使得软核的使用有较大的灵活性。固核是指经过了综合的功能模块。它有较大的设计深度,以网表文件的形式提交使用。如果客户与固核使用同一个IC生产线的单元库,固核应用达标率会高很多。ALTERA公司的IP核就是以固核的形式提交使用的,其IP核为加密网表文件,配合以管脚、电平等方面的约束条件使用。硬核提供了设计的最终产品:掩膜

17、(Mask)。设计深度越高,后续所需做的事情越少,相应的使用灵活性也越低。目前电子系统越来越复杂,很多FPGA产品已经将硬核固化于芯片内部,以加速使用者的开发速度。第二章 典型的cpld fpga芯片结构ALTERAALTERA公司公司CPLDCPLD芯片芯片CPLD传统CPLD的主要缺点在于:当器件内部的宏单元个数超过512个,或者门密度超过几千门时,宏单元之间的互连线规模将呈指数级增长,限于CPLD器件的面积约束,全局布线结构的CPLD内部密度有限。采用了新的结构,仍然以LABs为主要结构,但布线方法摒弃了以前的全局布线结构,而是采用了行列布线结构内部还集成了FLASH存储器,这使得MAX

18、 II系列芯片本身就具备了存储功能MAX II传统CPLD的乘积项结构与MAX II系列芯片对比传统的乘积项结构MAX II系列芯片各款芯片的引脚数目与封装基于LUT的LE结构 这种结构以逻辑单元LE(Logic elements)为基础单位,每个LE又包括一个4输入查找表与一个寄存器MAX II系列芯片的逻辑阵列由LAB(逻辑阵列块)构成,每个LAB包括10个逻辑单元,每个逻辑单元都能实现一部分用户期望的逻辑功能。MAX II系列芯片芯片的内部结构 MAX II系列芯片提供了一个全局时钟网络,该网络包括的全局时钟线为整个芯片内部的各部分提供时钟,不作时钟时可作诸如复位、预置位、输出使能等全局

19、控制信号。注意:上图中并未给出FLASH存储器的位置,因为不同型号芯片的FLASH位置不同。EPM240 器件的FLASH块位置在器件左侧,EPM570、EPM1270和 EPM2210器件的 FLASH块在左下区域。FLASH存储空间被划分为指定的配置间CFM,CFM提供了SRAM配置信息,使得MAX II系列芯片器件上电时能自动配置逻辑功能。MAX II系列芯片内置FLASH中的一部分,约8192位的存储空间被划分给用户作为用户存储器使用,这一区域称为UFM(User Flash Memory),UFM可以与其附近的3行LAB相接,由这些LAB进行读写。MAX II系列芯片的底层布局 LA

20、B局部互连能够驱动同一LAB的所用LE。LAB局部互连线的信号来自于整个芯片的行列互连线与各LE输出信号的反馈。通过直接互连的形式,与LAB相邻的其他LAB也能驱动LAB的局部互连线。直接互连的形式体现了高性能与灵活的特点,能够显著减轻整个芯片行列互连线的负担。借助于局部互连与直接互连,每个LE能够驱动30个LE。每个LAB能在同一时刻发出10种控制信号给其内部的逻辑单元。这些控制信号包括两条时钟信号、两条时钟使能信号、两条异步复位信号、一条同步复位信号、一条异步预置信号、一条同步预置信号以及加/减控制信号。例如当需要实现计数器功能时,一般需要这些信号中的同步预置与同步复位信号。每个逻辑阵列块

21、包括10个LE(逻辑单元),逻辑单元进位链、LAB控制信号、LAB局部互连线、一个查找表链以及寄存器互连链。每个LAB可含多达26个专用输入信号,还包括由同一LAB中其他逻辑单元的输出反馈回来的10个反馈信号。内部互连线用于同一LAB内部各LE之间的信号传递。查找表链用于将同一LAB的相邻LE的LUT输出信号进行互连传递。寄存器互连链将某一LE寄存器的输出与相邻LE寄存器进行互连传递。ALTERA公司的EDA开发软件Quartus II能够充分利用这些进位链自动将逻辑功能配置到相应的LE内。逻辑阵列块 每个逻辑阵列块包括10个LE(逻辑单元),逻辑单元进位链、LAB控制信号、LAB局部互连线、

22、一个查找表链以及寄存器互连链。每个LAB可含多达26个专用输入信号,还包括由同一LAB中其他逻辑单元的输出反馈回来的10个反馈信号。内部互连线用于同一LAB内部各LE之间的信号传递。查找表链用于将同一LAB的相邻LE的LUT输出信号进行互连传递。寄存器互连链将某一LE寄存器的输出与相邻LE寄存器进行互连传递。ALTERA公司的EDA开发软件Quartus II能够充分利用这些进位链自动将逻辑功能配置到相应的LE内。逻辑阵列块 每个逻辑阵列块包括10个LE(逻辑单元),逻辑单元进位链、LAB控制信号、LAB局部互连线、一个查找表链以及寄存器互连链。每个LAB可含多达26个专用输入信号,还包括由同

23、一LAB中其他逻辑单元的输出反馈回来的10个反馈信号。内部互连线用于同一LAB内部各LE之间的信号传递。查找表链用于将同一LAB的相邻LE的LUT输出信号进行互连传递。寄存器互连链将某一LE寄存器的输出与相邻LE寄存器进行互连传递。ALTERA公司的EDA开发软件Quartus II能够充分利用这些进位链自动将逻辑功能配置到相应的LE内。逻辑阵列块LAB的内部结构注意,LAB的时钟信号及其时钟使能信号一定是同时发挥作用的,例如,若LAB中某一个LE要用到时钟信号labclk1,则对应的时钟使能信号labclkena1必须有效。LAB的控制信号 逻辑单元LE虽然是MAX II系列芯片最小的逻辑模

24、块,却为实现逻辑功能提供了很多重要特性。MAX II系列芯片的逻辑单元结构 MAX II系列芯片的逻辑单元结构,从图中可看出,逻辑单元内的可编程寄存器能够配置为DFF、TFF、JKFF或SRFF。每个寄存器都有异步预置信号、时钟信号与时钟使能信号、复位信号以及异步加载信号。其中寄存器时钟信号与复位信号可由全局信号、通用I/O引脚或任何逻辑单元驱动,而时钟使能信号、异步加载数据由通用I/O引脚或逻辑单元驱动。异步加载的数据来自于逻辑单元的data3输入。对于组合逻辑功能而言,查找表的输出将寄存器旁路,而直接送到逻辑单元的输出端。每个逻辑单元的三个输出端分别独立地输出到局部互连布线、行互连线、列互

25、连线。由于三个输出可相互独立,因而在某些场合将发生查找表与寄存器同时输出数据的现象,这一现象也说明MAX II系列芯片可以将同一逻辑单元的查找表与寄存器用于不同功能的实现,这一特点与以往芯片相比显著提高了寄存器的利用效率。用户FLASH存储区 用户FLASH存储区(UFM block)是MAX II系列芯片的一大特色,这种内部FLASH存储器的功能类似于串行EEPROM,它允许用户存储宽度最高为16位、容量为8192位的固定数据。UFM允许任何逻辑单元访问,下图给出了UFM的接口信号。UFM与LAB的接口电路 UFM与LAB的接口电路XILINX公司Virtex-5系列FPGA可配置逻辑块CL

26、B输入输出模块IOBBlock RAM Virtex-5系列芯片均提供了数量巨大的CLB,如XC5VLX330芯片,有两万多个CLB。每个CLB又包含了两个Slice。下图是CLB内的Slice排列示意图,其中的CIN是来自邻近的CLB的进位信号,COUT是送往其他CLB的进位输出信号。两个Slice相互独立,均可通过开关矩阵(Switch Matrix)与全片的通用布线阵列(General routing Matrix)相连。CLB内部的Slice是真正实现逻辑功能的模块,每个Slice内部包括4个结构相同的部分,这四个模块分别用AD区分。Slice又分为两种:SLICEM与SLICEL。二

27、者的区别在于Slice是否支持用分布式RAM存储数据和能否寄存器进行数据移位。图2-13给出了SLICEM内部A部分的结构。若将该图左侧的DPRAM/SPRAM/SRL/LUT/RAM/ROM模块改为只具有LUT/ROM功能的模块,并将WE信号去除之后,即为SLICEL的结构。由于 SLICEM 支持用分布式RAM存储数据,即将数据分布存储于SLICEM内的各个查找表中,因此SLICEM适合于需要存储大量数据的场合。分布式RAM可以有很多种形式,比如单端口或双端口的32(或64或128)x1位RAM、四端口32x2位 RAM、四端口64x1位RAM单端口、单端口256x1位RAM等。分布式RA

28、M需要同步操作,通常可以用同一Slice中的一个存储元件或触发器实现同步写。通过合理设置这个触发器的位置,可以将触发器的延迟缩短到触发器的时钟输出范围内,从而提高分布式RAM的性能。多个CLB之间的连接关系及其坐标安排 上图右侧部分是寄存器,SR、CE、CLK是Slice内部四个寄存器的置位/复位、时钟使能和时钟信号,这些寄存器都可以被设置为同步或异步置位与复位。上图左侧存储部分可以以三种形式配置ROM:ROM64x1、ROM128x1、ROM256x1,显然如果配置为ROM64x1只需要某一个存储模块,而ROM128x1需要二个,ROM256x1需要Slice内部全部的四个存储模块。ROM内

29、容在每次器件配置时加载。每个Slice除了能实现四个6输入布尔函数外,还能实现两个7输入布尔函数或一个8输入布尔函数。利用多路选择器实现7输入或8输入布尔函数Virtex-5 FPGA的输出模块支持业界大多数的标准接口,如LVCMOS、LVTTL、HSTL、SSTL、GTL、PCI等。与CLB包含两个Slice类似,Virtex-5采用了一种称为Tile的结构,每个Tile包含两个IOB,每个 I O B 外 部 有 I L O G I C/I S E R D E S 单 元 与OLOGICO/OSERDES单元,内部有输入缓冲INBUF、输出缓冲OUTBUF、焊盘PAD和三态 SelectI

30、O 驱动器。I/O Tile示意图IOB内部结构图OLOGIC结构图 Virtex-5 系列芯片IOB的ILOGIC/ISERDES可以配置为D触发器或锁存器,也可以配置为IDDR模式。IDDR是指输入双倍数据速率(DDR)寄存器,ILOGIC电路中有专用寄存器来实现,实用时需要通过例化IDDR单元来使用此功能。OLOGIC由两个主要模块组成,一个用于配置输出数据通路,另一个用于配置三态控制通路。这两个模块也可以配置为D触发器、锁存器或DDR模式,它们具有共同的时钟,但具有不同的使能信号OCE和TCE。Block RAM Block RAM属于双口RAM,允许对其中一个端口读操作时,对另一个端

31、口进行写操作。每个端口均可配置成可用的宽度之一,与另一端口无关。每个端口的读端口宽度可与写端口宽度不同。Block RAM内容可以在芯片工作中重写,也可在上电配置时用比特流初始化或清除。在写操作过程中,存储器可以设置成让数据输出保持不变,或者令其反映正在写入的新数据或正在覆盖的旧数据。Block RAM框图数字电路数字电路EDAEDA开发工具开发工具ModelSim的设计过程Quartus II的设计过程Quartus II与ModelSim联合仿真ModelSim仿真ModelSimModelSim的设计过程的设计过程 建立工程建立工程新建源文件新建源文件 选择菜单File/New/Proj

32、ect,出现所示3-1的界面,输入工程名称及其保存的文件夹后,点击OK按钮3-2。若当前工程无任何已建源文件,则点击Create New File,出现3-3的窗口,在窗口中输入新建源文件的名称,并选择所用编程语言。将源文件名称与所用硬件描述语言设置后,出现所示3-4界面。新建的两个VHDL源文件后的问号表示这些文件还编译。双击其中任一文件之后中,打开文本编辑器,开始输入源代码。将 源 代 码 输 入 结 束 并 保 存 后,选 择 菜 单Compile/Compile All对当前工程进行编译。编译过程中将对VHDL语言的语法语义进行检查,若发现错误将在Transcript窗口中用红色文字提

33、示,如图3-5所示。ModelSimModelSim仿真仿真 选择菜单Simulate/Start Simulation开始进行仿真,出现如图3-5所示的窗口。点击该窗口中的work选项,再选择其中的仿真测试文件exam5_2_tb,点击OK并稍等片刻后,进入图3-6。这里的WORK库是用户自定义库,设计者自己编写的源文件都自动保存入该库。注意图3-7始仿真时在ModelSim源界面的WorkSpace窗口中自动添加的一个标签sim。在图3-7,右键点击仿真测试文件exam5_2_tb内部的“u1”,在弹出的菜单中选择Add/Add To Wave,将仿真测试文件中的信号加入波形编辑器,出现图

34、3-8示界面。选择菜单Simulate/Runtime Options,出现图3-9示窗口,选择其中的Default Run框,在其中输入需要仿真的时间。本节所用例子设置了仿真时间为2us,以便仿真时能够实现前1000 ns期间内是递增,后1000ns内是递减的效果。仿真时间设置结束后,选择Simulate/Run开始运行仿真,仿真结果如图3-10。Quartus IIQuartus II的设计过程的设计过程设计输入综合器件适配编程配置功能仿真时序仿真系统调试本节的设计思路是:(1)设计ROM,可以用VHDL编程,也可以直接使用Quartus II的IP管理工具MegaWizard Plus-

35、In Manager定制一个ROM。(2)设定正弦波一个周期的点数,如1024点,将每一点数据保存入ROM;(3)设计一个1024进制的计数器,计数器的输出作为访问ROM的地址输入,计数器的计数时钟同时也是ROM的读信号;(4)在时钟控制下,ROM的数据输出引脚q输出正弦波各点的数据,经DAC实行D/A后可观察到正弦波形存储器初始化文件存储器初始化文件 选择File/New,出现图3-31窗口,点击其中的Other Files标签,选择MemoryInitialization File,点击OK,出现3-32窗口,图中设置了ROM的存储空间大小为1024个单元,每单元8位。继续点击OK按钮,出

36、现如图3-33界面将以上文件保存为*.mif文件后,可以在MegaWizard Plus-In Manager定制ROM的过程中直接加以调用,为定制的ROM提供初始化的数据MegaWizard Plus-In ManagerMegaWizard Plus-In Manager定制定制ROMROMQuartus II的Mega Wizard Plus-In Manager是IP管理工具,用来方便设计者定制与使用Altera提供的宏功能(Megafunction)模块,其中包括了LPM参数化模块库模库。Mega Wizard Plus-In Manager采用问答的形式引导设计者选择宏功能模块所需

37、的引脚并定义各个参数值。Mega Wizard Plus-In Manager引导设计者定制结束后,能够自动产生元件声明文件.cmp,该文件可以被VHDL程序直接使用。此外还能产生例化文件-inst.vhd,该文件说明了所例化的模块名与引脚声明。Quartus IIQuartus II与与ModelSimModelSim联合仿真联合仿真Quartus II为ModelSim预留了接口,通过设置,可以使Quartus II编译结束后自动调用ModelSim并进入仿真状态,而单独使用ModelSim时的建立工程、加入源文件、建立库等工作都不需设计者专门去做了。Quartus II与ModelSim

38、联合仿真的基本步骤如图3-41所示。本章要点 VHDL的特点;VHDL程序的基本结构;常用语句;数据类型;各类操作符。VHDL概述 VHDL(Very High Speed Integrated Circuits Hardware Description Language 超高速集成电路硬件描述语言)。VHDL语言是美国国防部于80年代后期出于军事工业的需要开发的。1984年VHDL被IEEE(Institute OF Electrical and Electorincs Engineers)确定为标准化的硬件描述语言。1994年IEEE对VHDL进行了修订,增加了部分新的VHDL命令与属性,

39、增强了系统的描述能力,并公布了新版本的VHDL,即IEEE标准版本1046-1994版本。VHDL已经成为系统描述的国际公认标准,得到众多EDA公司的支持,越来越多的硬件设计者使用VHDL描述系统的行为。VHDL的特点(1)VHDL 行为描述能力明显强于其他HDL语言,这就使得用VHDL编程时不必考虑具体的器件工艺结构,能比较方便地从逻辑行为这一级别描述、设计电路系统。(2)能在设计的各个阶段对电路系统进行仿真模拟,使得在系统的设计早期就检查系统的设计功能,极大地减少了可能发生的错误,降低了开发成本;(3)VHDL语句程序结构(如设计实体、程序包、设计库)决定了它在设计时可利用已有的设计成果,

40、并能方便地将较大规模的设计项目分解为若干部分,从而实现多人多任务的并行工作方式,保证了较大规模系统的设计能被高效、高速地完成;(4)EDA工具和VHDL综合器的性能日益完善。VHDLVHDL语言的程序结构语言的程序结构 实体(Entity)、结构体(Architecture)是组成VHDL的两个最基本结构,为其它设计任务所共享,有必要把被共享的设计成果集中到一起。VHDL语言设置了库(Library)与程序包(Package)的程序结构。一个实体往往与多个结构体相对应。而当实体设计完成后,放入程序包供其他实体共享时,其他实体可能只需要使用该实体的一个结构体,这时,VHDL提供了配置(Confi

41、guration)这种结构,为实体配置(指定)一个结构体 可见,实体(Entity)、结构体(Architecture)、库(Library)、程序包(Package)与配置(Configuration)是构成一个完整的VHDL语言程序的五个基本结构。VHDLVHDL程序的一般结构程序的一般结构 小到一个元件、一个电路,大到一个系统,都可以用VHDL描述其结构、行为、功能和接口。编程时,VHDL将一项工程设计(或称设计实体)分成“外部端口”和“内部结构、功能及其实现算法”两大部分进行描述。一个设计实体的内、外部都设计完成后,其它实体就可以象调用普通元件一样直接调用它。例题4-1 给出了一个较简

42、单的VHDL源程序,它实现了一个与门,各部分如程序中所示。nENTITY and2 IS实体名称为and2 PORT(a,b:IN BIT;a、b是两个输入引脚 c:OUT BIT);c为输出引脚 END and2;ARCHITECTURE exam1 OF and2 IS 结构体exam1是对实 BEGIN 体and2的内部描述,c=a AND b;描述了and2器件内部功能 为实现一个2输入端与门 END exam1;器件and2的外部引脚说明,这部分称为实体器件and2的内部功能说明,这部分称为结构体图4-1 and2的电路符号 程序包括一个VHDL程序必备的两个部分:实体(ENTITY

43、)说明部分和结构体(ARCHITECTURE)说明部分。“实体”说明部分,给出了器件and2的输入输出引脚(PORT)的外部说明,如图4-1所示。其中a、b是两个输入引脚(IN),数据类型为BIT,即“二进制位”数据类型,这种数据类型只有“0”和“1”两种逻辑值;c 为输出引脚,数据类型也为BIT。这部分相当于是画原理图时的一个元件符号。“结构体”说明部分给出了该器件的内部功能信息,其中“AND”是VHDL的一个运算符,表示“与”操作;而符号“=”是VHDL的赋值运算符,从电路的角度来说就是表示信号的传输,将输入信号a、b“与”操作后的结果传送到输出端c。VHDL的逻辑综合软件将根据该程序的描

44、述得到相应的硬件设计结果。从这个例子可以看出,VHDL的所有语句都是以“;”结束,而“;”后的“”表示是程序注释。实体定义相关语句 VHDL语言描述的对象称为实体.实体说明的书写格式如下所示:ENTITY 实体名 IS GENERIC(类属参数说明);PORT(端口说明);END 实体名;在实体说明中应给出实体命名,并描述实体的外部接口情况。此时,实体被视为“黑盒”,不管其内部结构功能如何,只描述它的输入输出接口信号。例4-2是一个D触发器的实体说明:例4-2 ENTITY dff IS GENERIC(tsu:TIME:=5ns)PORT(clk,d:IN bit;Q,qb:OUT bit)

45、;END dff;上面给出的程序是1位D触发器的实体说明。实体说明以ENTITY开始,dff是实体名,GENERIC为类属参数表,PORT后为输入输出端口表。下面分别对各部分的定义方法进行详细的说明。4.2.14.2.1类属参数说明语句类属参数说明语句 类属参数说明语句必须放在端口说明语句之前,用以设定实体或元件的内部电路结构和规模。其书写格式如下:GENERIC(常数名:数据类型:=设定值;常数名:数据类型:=设定值);例4-2的程序中的GENERIC(tsu:TIME:=5ns)指定了结构体内建立时间用tsu 表示,值为5ns。再如 例4-3 ENTITY exam IS GENERIC(

46、width:INTEGER:=42);PORT(M:IN STD_LOGIC_VECTOR(width-1 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);类属参数定义了一个宽度常数,在端口定义部分应用该常数width定义了一个42位的信号,这句相当于语句 M:IN STD_LOGIC_VECTOR(41 DOWNTO 0);若该实体内部大量使用了width这个参数表示数据宽度,则当设计者需要改变宽度时,只需一次性在语句 GENERIC(width:INTEGER:=某常数)中改变常数即可。4.2.2端口说明 在电路图上,端口对应于元件符号的外部引脚

47、。端口说明语句是对一个实体界面的说明,也是对端口信号名、数据类型和端口模式的描述。语句的一般格式如下:PORT(端口信号名,端口信号名:端口模式 端口类型;端口信号名,端口信号名:端口模式 端口类型);1)端口信号名 端口信号名是赋给每个外部引脚的名称,如例中的a、b、c。各端口信号名在实体中必须是唯一的,不能有重复现象。2)端口模式 端口模式用来说明信号的方向,详细的端口方向说明见表4-1。3)端口类型 端口类型指的是端口信号的取值类型,常见的有以下几种:BIT:二进位类型,取值只能是0、1,由STANDARD程序包定义;BIT_VECTOR:位向量类型,表示一组二进制数,常用来描述地址总线

48、、数据总线等端口,如 datain:IN BIT_VECTOR(7 downto 0),定义了一8位位宽的输入数据总线;STD_LOGIC:工业标准的逻辑类型,取值0、1、X、Z等,由STD_LOGIC_1164 程序包定义:INTEGER:整数类型,可用作循环的指针或常数,通常不用作I/O信号;STD_LOGIC_VECTOR:工业标准的逻辑向量类型,是STD_LOGIC的组合;BOOLEAN:布尔类型,取值FALSE、TRUE。在上例中,D触发器作为实体,其端口有两个输入信号和一个输出信号,输入信号和输出信号的类型相同。4.3 结构体及子结构语句 对一个电路系统而言,实体描述部分主要是系统

49、的外部接口描述,这一部分如同是一个“黑盒”,描述时并不需要考虑实体内部的具体细节。因为描述实体内部结构与性能的工作是由“结构体”所承担的。4.3.1 4.3.1 结构体的格式及构造结构体的格式及构造 结构体是一个实体的组成部分,是对实体功能的具体描述。一个结构体的书写格式如下:ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句 END 结构体名;例4-4描述了一个具有简单逻辑操作功能的电路,原理图如图4-3所示。实体部分说明了四个输入端与一个输出端,结构体描述以关键字ARCHITECTURE开头,a是结构体名,OF

50、之后为实体名(应与实体说致)。例4-4ENTITY exam2 IS PORT(a,b,c,d:IN bit;f:OUT bit);END exam2;ARCHITECTURE a OF exam2 IS SIGNAL temp1,temp2:BIT;BEGIN f=temp1 XOR temp2;temp1=a AND b;temp2=c OR d;END a;子结构之描述子结构之描述BLOCKBLOCK语句结构语句结构 事实上,BLOCK语句的应用只是一种将结构体中的并行描述语句进行组合的方法,VHDL程序的设计者使用BLOCK的目的主要是:改善程序的可读性或关闭某些信号。以BLOCK语句

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(教学课件:数字电路EDA设计(第二版).ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|