配套课件-EDA技术与VHDL程序设计基础教程_第1页
配套课件-EDA技术与VHDL程序设计基础教程_第2页
配套课件-EDA技术与VHDL程序设计基础教程_第3页
配套课件-EDA技术与VHDL程序设计基础教程_第4页
配套课件-EDA技术与VHDL程序设计基础教程_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重点内容: EDA技术发展和应用 EDA工程设计流程 EDA集成开发工具第1章 EDA概述 一、EDA工程简介 EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。 EDA的定义有广义和狭义之分,广义定义EDA包括半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印制电路板设计自动化、仿真与测试故障诊断自动化等。狭义定义的EDA就是电子设计自动化。 EDA技术主要有四个方面:1、可编程逻辑器件,即应用EDA技术完成电子系统设计的载体;2、硬件描述语言(VHDL 或者 Verilog)。它用来描述系统的结构和功 能,是

2、EDA的主要表达手段;3、配套的软件工具。它用来完成电子系统的智能化设计;4、实验开发系统。在整个EDA设计电子系统的过程中,实验开发系统是实现可编程器件下载和验证的工具, 二、EDA技术的发展历程和未来展望 现代EDA技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。它的成熟主要经历了三个阶段,即: 计算机辅助设计(CAD,Computer Aided Design) 计算机辅助工程设计(CAED,Computer Aided Engineering Design) 电子设计自动化(EDA,Electronic System DesignAutomation)

3、。 随着工艺的进步和EDA技术的不断发展,软硬件协同设计将显得越来越重要。EDA技术的应用也将向广度和深度两个方向继续发展,今后还会超越电子设计的范畴,从而进入其他领域。随着SOC和SOPC的发展,IP核复用的概念越来越为业界所接受,这也正符合VHDL语言的设计理念。所以,未来电子系统的设计与规划将不再是电子工程师的专利。三、EDA技术的应用 EDA技术的应用范畴很广主要有:1、PCB印制电路板的设计2、ASIC全定制数字电路 的设计3、FPGA/CPLD等可编程器 件上的电子系统设计三、EDA技术的应用 PCB设计PCB(Printed Circuit Board)印制电路板主要用作电子系统

4、的载体,工程师通常将集成电路元件焊接在PCB板上完成整个电子系统的搭建、控制、通信等功能 点阵系统的原理图和版图 点阵系统的版图 三、EDA技术的应用 ASIC设计ASIC(Application Specific Intergrated Circuits)专用集成电路是EDA技术应用在电子系统设计的高端产物。这种芯片的集成度极高,有全定制和半定制两种。ASIC设计流程和所个步骤所使用的软件工具 三、EDA技术的应用 CPLD/FPGA设计CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件和FPGA(Field Programmable Garry

5、 Array)现场可编程门阵列随着EDA技术的发展已经成为电子设计领域的重要角色,其应用相当广泛。高集成度、高速度和高可靠性是CPLD/FPGA最明显的特点。 CPLD/FPGA的一般设计流程 四、EDA工程的设计流程 一个完整的EDA工程通常要涉及到系统建模、逻辑综合、故障测试、功能仿真、时序分析、形式验证等内容。 1、设计输入 2、逻辑综合和优化 3、布局布线和适配 4、工程设计的仿真 5、目标器件的编程和下载 6、硬件电路的后仿真验证和测 试 VHDL开发FPGA/CPLD电子系统的流程图 五、EDA集成开发工具 目前比较流行的用于可编程器件的EDA集成开发工具主要有Altera公司的M

6、AX+Plus II和Quartus II、Xilinx公司的Foundation和ISE以及Lattice公司的ispDesignEXPERT和ispLEVER。 Quartus II Quartus II的GUI界面 它支持原理图、VHDL和Verilog语言文本输入方式和波形或EDIF格式的文件作为输入,且支持这些文件的混合设计。 五、EDA集成开发工具 ISE+ModelSimispLEVER 五、EDA集成开发工具 其它开发工具 System Generator和Matlab联合开发DSP系统 六、EDA技术的学习重点和学习方法 1、EDA技术的学习方法从实用角度讲,EDA技术需要掌

7、握四个方面,即:1)、可编程逻辑器件;2)、硬件描述语言(VHDL 或者 Verilog);3)、配套的软件工具;4)、实验开发系统;2、EDA技术的学习方法 读者在学习EDA技术的过程中首先接触的就是VHDL的基本编程,在这里应该熟练掌握基本门电路、多路选择器和状态机的编写。然后掌握配套的CPLD/FPGA开发软件,通过实际的案例和应用设计边学边用。重点内容: CPLD结构和工作原理 FPGA结构和工作原理 FPGA配置方式 CPLD/FPGA应用选型第2章一、可编程逻辑器件概述 可编程逻辑器件 PROM、PLA和PAL的原理和特性 PROM基于二极管和三极管的一次可编程PROM单元 一、可

8、编程逻辑器件概述 PLA PLA是Programmable Logic Array的缩写,它的出现主要是为了解决PROM的速度和输入端受到限制的问题。右图通过这种阵列结构PLA可以实现大量的组合函数,虽然不能完全覆盖所有的输入组合,但其较多的输入端和更快的速度使得它的应用超过了PROM。 一、可编程逻辑器件概述 PAL 可编程阵列逻辑PAL是PLA的一个发展版,与PLA类似,它也有一个宽输入。可编程的“与”阵列。最大的不同是PAL的“或”阵列不再可编程,而是变成了固定的。 可编程特性分类: 从可编程特性分类可将PLD分为一次可编程和重复可编程两类。一次可编程器件主要以PROM、PAL和熔丝型F

9、PGA为代表,其他的器件大多数是可重复编程的。熔丝型器件编程的主要原理是利用较大的编程电流将特定位置的熔丝烧断,从而完成所需的逻辑函数输出 一、可编程逻辑器件概述 对于多次可编程的器件而言,用紫外线擦除的器件一般只能使用几十次,而采用电擦除方式的器件编程次数会比紫外线方式的稍多一些,如果是采用E2MOS工艺的器件,擦写次数可以达到上千次。 一、可编程逻辑器件概述 可编程逻辑器件中的编程元件通常有五种:熔丝型开关可编程低阻电路EPROMEEPROMSRAM内部互联结构分类如果从内部互联结构分类,可编程逻辑器件可以分为CPLD和FPGA两类。 二、PLD内部结构的表示方法 描述PLD内部电路结构的

10、方法与普通逻辑电路的表示方法不同。它需要将芯片内部结构配置与逻辑图一一对应起来,从而使得器件制造商和电路设计这较容易掌握。PLD的表示方法在电路层、物理层以及版图的布局之间都有非常巧妙的映射,因而读起来十分方便。 。 1.互补输入缓冲电路2.三态输出缓冲电路二、PLD内部结构的表示方法 3.与或逻辑与或逻辑是可编程器件的核心部件。如图所示,(a)中三条竖线A、B、C均为输入线,输入到与门的横线为乘积线。乘积线与输入线的交叉点为编程点,在编程点处有编程器件,如熔丝或可编程的MOS器件等。当输入线与乘积线相连通时,在编程点处以“”表示。(b)中三条竖线A、B、C也为输入线,输入到或门的横线为和线。

11、和线与输入线的交叉点为编程点。当输入线与和线相连通时,在编程点处以“”表示。可以看出,图中电路表示的逻辑表达式分别为Y=AB和Y=A+B+C。三、 CPLD的基本结构和工作原理 CPLD的基本结构 可编程逻辑阵列块类似于一个低密度的PAL/GAL,包括乘积项的与阵列、乘积项分配和逻辑宏单元等。 基于乘积项阵列型CPLD的基本结构 三、 CPLD的基本结构和工作原理 ispLSI2128的结构示意图,它由输入(Input)、全局布线区(GRP)、通用逻辑块(GLB)、I/O单元、宏块和控制电路等组成。每个宏块包括8个通用逻辑块(GLB)、2个输出布线区(ORP)、1个32位输入总线和33个引脚。

12、 三、 CPLD的基本结构和工作原理 GLB结构:通用逻辑块GLB是Gerneric Logic Block的缩写,也是整个器件的逻辑核心。它由与阵列、乘积项共享阵列(Product Term Sharing Array)、输出逻辑宏单元(OLMC)和控制电路四部分组成,分布在GRP的四周,可实现类似GAL/PAL的功能 三、 CPLD的基本结构和工作原理 1.输出逻辑宏单元2.控制电路3.全局布线区属于ispLSI中的一种专用内部互联结构。起作用是将GLB的输出信号或I/O单元的输入信号与GLB的输入端连接 三、 CPLD的基本结构和工作原理 4、I/O单元结构I/O单元常称为输入/输出单元

13、,是器件外部封装引脚与内部信号之间的接口电路 5、宏块结构 每个宏块包含8个GLB、16位输入总线、2个输出布线区(ORP)、32个I/O单元、2个专用输入和1个公用乘积项GOE。 三、 CPLD的基本结构和工作原理 三、 CPLD的基本结构和工作原理 Altera公司的CPLD器件总结起来可以概括为五个部分:可编程逻辑阵列块(LAB);宏单元;扩展乘积项;输入/输出块;互联资源; MAX7128结构原理图2、宏单元。由3个功能块组成:逻辑阵列、乘积项选择矩阵和可编程寄存器。各部分可以被独自配置为时序逻辑和组合逻辑工作方式。 三、 CPLD的基本结构和工作原理 1.可编程逻辑阵列块(LAB),

14、对于每个LAB有下列输入信号。A来自作为通用逻辑输入的PIA的36个信号B全局控制信号,用于寄存器辅助功能C从I/O引脚到寄存器的直接输入通道三、 CPLD的基本结构和工作原理 3.扩展乘积项 利用扩展项可保证在实现逻辑综合时,用尽可能少的逻辑资源实现尽可能快的工作速度。具体的扩展乘积项分为共享扩展项和并联扩展项。并联扩展项的原理图 共享扩展乘积项结构 三、 CPLD的基本结构和工作原理 4.可编程连线阵列PIA5.输入/输出控制块(I/O)四、 FPGA的结构和工作原理 1.基于SRAM编程的FPGA 基于SRAM编程的FPGA以Xilinx的逻辑单元阵列(LCA,Logic Cell Ar

15、ray)为例 FPGA由可配置逻辑模块(CLB,Configurable Logic Block)、可编程布线资源(PI,Progammable Interconnection)和可编程输入/输出模块(IOB,Input/Output Block)三部分组成。 四、 FPGA的结构和工作原理 2.基于反熔丝编程的FPGA 采用反熔丝编程的FPGA具有集成度高、功耗低、保密性强、抗辐射和抗干扰性好等优点。 四、 FPGA的结构和工作原理 Altera公司的FPGA FLEX 10K系列的FPGA是工业界第一款嵌入式PLD器件,采用了可重复配置的CMOS SRAM工艺和灵活逻辑单元矩阵(FLEX,

16、Flexble Logic Element Matrix)框架,具有高密度、低成本、低功耗等特点。内部包括四个部分 :嵌入式阵列块逻辑阵列块快速通道/互联通道输入/输出单元四、 FPGA的结构和工作原理 逻辑阵列块(LAB)2.嵌入式阵列块 四、 FPGA的结构和工作原理 3.快速通道/互联通道 4、输入/输出单元 四、 FPGA的结构和工作原理 Xilinx公司的FPGA 主要包含:1、可配置的逻辑模块(CLB)2、可编程布线资源(PI)。 由纵横分布在CLB阵列之间的金属线网络和位于纵横线交叉点上的可编程开关矩阵组成。 3、可编程的输入/输出模块(IOB)由输入触发器、输入缓冲器和输出触发

17、/锁存器、输出缓冲器组成,每个IOB控制一个外部引出端。 四、 FPGA的结构和工作原理 五、 FPGA的配置方式 FPGA的配置方式是指FPGA用来完成设计师的逻辑配置和外部连接方式。逻辑配置是指FPGA的下载,即开发系统将用户的设计输入进行编译产生配置数据文件,然后装入FPGA芯片内部的可配置存储器的过程。 1、主动串行配置 主动串行配置模式需要附加一个外部串行存储器EPROM或PROM。在配置之前需事先将配置数据写入外部存储器,每当电源接通后,FPGA将自动地从外部串行PROM或EPROM中读取串行配置数据, 2、主动并行配置 主动并行配置同样适用EPROM做外部存储器,事先将配置数据写

18、入EPROM芯片内。五、 FPGA的配置方式 3、菊花链配置 在数字系统的应用设计中,当单片FPGA不足以实现完整的功能时,可以采用多个FPGA芯片。 五、 FPGA的配置方式 六、 CPLD/FPGA的应用选型 1、器件逻辑资源的选择 能够影响逻辑资源占用的因素有很多,主要有: A描述语言和描述风格; BHDL综合器的选择; C综合策略的选择; D逻辑功能单元的性质额实现方法;2、芯片速度的选择。芯片速度的选择应与系统工作频率相吻合,3、器件功耗的选择。就低功耗而言,FPGA具有绝对的优势。4、器件封装的选择5、CPLD/FPGA的选择。FPGA的主要应用有三个方面: A直接使用与电路系统;

19、 B硬拷贝; C逻辑验证;重点内容: VHDL程序基本结构 VHDL基本词法与基本语句 VHDL描述风格第3章 VHDL硬件描述语言 一、硬件描述语言概述 HDL语言的种类1、ABEL-HDL。是一种早期的硬件描述语言,可方便准确的描述所设计的电路逻辑功能,并被很多电子系统设计自动化(EDA)软件所支持。2、AHDL。是Altera公司开发一种HDL语言。它的特点是易学易用,3、VHDL。中文全称为超高速集成电路硬件描述语言4、Verilog。是1983年由GD(GateWay Design Automation)公司的Phil Moorby首创的。一、硬件描述语言概述 VHDL语言的特点 硬

20、件描述能力强;设计技术齐全、方法灵活、支持广泛;对设计描述具有相对的独立性;具有很强的移植能力;易于共享和复用;具有丰富的仿真语句和库函数;设计结构清晰、易读易懂;容易实现系统的更新和升级;数据类型丰富、安全性好; VHDL和Verilog的比较 一、硬件描述语言概述 Verilog HDL在底层建模方面要强于VHDL,但系统建模覆盖面较小。而VHDL在系统级建模方面则可以像高级语言一样更灵活的描述系统行为。二、VHDL程序的基本结构 用VHDL进行数字电路设计时,无论电路规模的大小,均要使用一个完整的VHDL程序结构,这个完整的程序结构包括五部分,它们分别是(参见上一节给出的VHDL七段译码

21、器代码):实体(Entity);结构体(Architecture);配置(Configuration);包集合(Package);库(Library);二、VHDL程序的基本结构 VHDL的设计简述 其描述结构中包括IEEE标准库说明、程序包、实体和结构体等几个部分。 四选一多路数据选择器 结构体(Architecture)是占VHDL程序比重最大的部分也是VHDL的核心部分, 二、VHDL程序的基本结构 实体说明是VHDL程序设计中最基本的组成部分,主要用来描述设计实体的外部接口信号,定义设计单元的输入输出端口,属于整个VHDL所描述电路结构的通信界面,为可视部分,但它并不描述所要设计系统的

22、具体功能。 端口说明语句描述了目标系统与外界通信的接口,即指明实体的输入输出信号,以及一些端口的模式信息,包括端口的名称、数据的类型和数据的传输方向(端口模式)。 二、VHDL程序的基本结构 结构体是VHDL程序的核心,它描述了目标系统的行为、元件以及它们之间的连接关系。结构体的基本格式包括四个部分:结构体引导语句(ARCHITECTURE)结构体说明语句功能描述语句结束语句(END)VHDL的结构体三、VHDL的基本词法 VHDL语言与其他高级语言一样,具有计算机编程语言的一般特性,其语言要素是组成编程语句的基本单元,主要有数据对象(Object)、数据类型(Type)、操作数(Operat

23、ions)和运算操作符(Operator)。1、标识符。包括短标识符和扩展标识符2、对象。在VHDL语言中,凡是可以赋值的客体叫做对象(Object)。VHDL对象包括专门的数据类型,即常量(CONSTANT)、信号(SIGNAL)、变量(VARIABLE)和文件(FILES)。3、数据类型。在VHDL标准中,IEEE一共定义了10种基本的数据类型。同时,为了方便设计,VHDL还容许工程师根据自己需要自定义数据类型,这就给数字系统设计提供了很大的自由空间,从而为EDA工具的高层次综合、仿真提供可能。 常用数据类型:整数、实数类型、位类型、位矢量类型、布尔类型、时间类型、枚举类型、数组类型。三、

24、VHDL的基本词法类型转换 由于VHDL对数据类型的限制比较严格,不同类型的对象不能带入,因而很多程序设计常常会遇到数据转换的问题。为了进行不同数据类型的转换,VHDL提供了三种方法来完成这一功能,即类型标记法、函数转换法和常数转换法。运算操作符 与其他程序设计语言相似,VHDL中的表达式也是由运算符将基本元素连接起来形成。这里的基本元素包括对象名、文字、函数调用及用括号括起来的表达式。 在VHDL语言中共有4类操作符,即 逻辑运算符(LOGICAL)、关系运算符(RELATIONAL) 算术运算符(ARITHMETIC)、并置运算(CONCATENATION) 四、VHDL的基本语句 VHD

25、L语言的的描述语句主要用来描述系统的硬件结构、行为功能以及信号之间的逻辑关系。这些语句按执行的顺序可以分为顺序语句和并行语句两类。顺序语句主要包括四种:赋值语句、流程控制语句、等待语句、空操作语句。 并行语句主要有7种: 进程语句; 并行信号赋值语句; 块语句; 元件例化语句; 生成语句; 条件信号赋值语句; 并行过程调用语句;1、赋值语句。赋值语句分为简单信号赋值语句、条件信号赋值语句和选择信 号赋值语句三种2 IF语句。属于流控制语句。有单选控制、二选控制和多选控制三种。3、CASE语句。CASE语句也是顺序语句的一种,且可读性非常强。4、LOOP语句。是一种循环语句有三种格式,即 aFO

26、R_LOOP; bWHILE_LOOP; cLOOP;5、PROCESS进程语句.从电路的工作方式上可以包括组合逻辑运行方式、同步 逻辑运行方式和异步逻辑运行方式等。6、COMPONENT元件例化语句7、PORT MAP端口映射语句。在上一小节元件例化语句的示例代码中,各个元 件之间的连线关系是通过端口映射语句(PORT MAP)来实现的,四、VHDL的基本语句五、VHDL的描述风格 在VHDL语言中,不同的描述方式或建模方式又称为VHDL语言的描述风格,常用的主要有三种或它们的混合。这三种描述方式为: 行为描述; 数据流描述; 门级描述;1、行为级描述。是按照目标系统的功能或算法来描述结构体

27、,不必给出实现这些行为的硬件结构,而只强调电路的行为和功能。 五、VHDL的描述风格2、数据流描述 利用VHDL语言中的赋值符和逻辑运算符进行描述。其中既包含逻辑单元的结构信息有隐含的表示某种行为,主要采用非结构化的并行语句描述。3、门级描述 门级描述属于比较底层的描述方法,就是描述出元件之间的互连方式。其具体步骤如下:1.元件说明2.元件例化3.元件配置重点内容: Quartus II基本设计流程 SignalTap II模块使用 LPM_ROM宏模块使用第4章 Quartus II操作指南 一、Quartus II基本设计流程 1、创建工程 (1)新建文件夹(2)输入源程序(3)保存文件

28、一、Quartus II基本设计流程 (4)创建工程并添加源程序(5)选择目标芯片 (6)设置EDA工具(7)结束设置一、Quartus II基本设计流程 一、Quartus II基本设计流程 2、编译工程 通过New Project Wizard建立了目标系统的工程之后,工程师可以对所建工程进行全程编译。 Quartus II编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置以及时序分析。 一、Quartus II基本设计流程 3、时序仿真 工程编译成功后,必须对其功能和时序特性进行仿真测试,以了解设计结果是否满足原设计要求。Quartus

29、II提供的波形文件为Vector Waveform File,即VWF。具体的流程为:新建波形编辑文件;设置仿真时间区域;保存文件;导入欲观察的信号节点;编辑激励信号;设置数据格式;设置仿真器参数;启动仿真观察仿真结果;一、Quartus II基本设计流程 波形编辑器 仿真时间长的设置 导入欲观察的信号 将端口信号导入波形文件编辑器一、Quartus II基本设计流程 一、Quartus II基本设计流程 设置好激励波形的波形编辑器端口信号属性设置 一、Quartus II基本设计流程 仿真器设置 仿真波形输出 一、Quartus II基本设计流程 4、Viewer工具 (1)RTL View

30、er RTL Viewer可以根据VHDL语言或网表文件直接生成RTL级电路,选择Tools-Netlist Viewers| RTL Viewer可以看到MEALY的RTL电路, 一、Quartus II基本设计流程 (2) Technology Map Viewer与RTL Viewer不同,Quartus II Technology Map Viewer提供的是设计的底级或基元极专用技术原理表征,它展示的是综合后的电路结构, 一、Quartus II基本设计流程 (3) State Machine Viewer如果目标系统是是按照状态机机理设计的(状态机的概念在第五章介绍),State

31、Machine Viewer直观的看到各个状态转移的关系 一、Quartus II基本设计流程 5、引脚锁定和下载 为了能对此工程进行硬件测试,应将编译成功后的程序下载到目标芯片上,并指定输入输出信号的管脚,以便添加激励信号和测试输出信号, Quartus II的引脚配置 FPGA/CPLD的编程下载二、嵌入式逻辑分析仪SignalTap II 嵌入式逻辑分析仪SignalTap II允许对设计中所有层次的模块的信号节点进行测试,可以使用多时钟驱动,而且还能通过设置来确定前后触发捕捉信号信息的比例。本节将以一个计数器cnts为例介绍SignalTap II的使用方法,具体流程为:启动Signa

32、lTap II;调入待测信号;设置SignalTap II的参数;保存文件;编译下载;启动SignalTap II进行采样分析;SignalTap II的编辑窗口 二、嵌入式逻辑分析仪SignalTap II SignalTap II的参数设置 利用SignalTap采样分析5位计数器的工作状态三、LPM_ROM宏模块的使用 正弦信号发生器的模块化结构,可以看出该信号发生器由4部分组成,即:计数器;正选信号数据ROM;VHDL顶层设计;D/A转换器;使用步骤:初始化数据文件定制LPM_ROM元件(1)打开MegaWizard Plug-In Manager(2) 选择ROM控制线和地址、数据线

33、三、LPM_ROM宏模块的使用 MegaWizard Plug-In Manager对话框 LPM宏功能设定 三、LPM_ROM宏模块的使用 选择data_rom模块数据线和地址线宽度选择地址锁存信号inclock三、LPM_ROM宏模块的使用 调入ROM初始化数据文件并选择在系统读写功能 三、LPM_ROM宏模块的使用 4、顶层文件的仿真测试 正弦信号发生器的仿真波形 用SignalTap II实时观察正弦信号发生器的结果 重点内容: 组合逻辑电路设计 时序逻辑电路设计 存储器设计 状态机设计第5章 VHDL基本逻辑电路设计 一、组合逻辑电路设计 组合逻辑电路是一种在任何时刻的输出仅取决于当

34、时输入信号的逻辑电路。常用的组合逻辑电路主要有编码器、译码器、数据选择器、运算电路和数值比较器等。1、基本门电路的设计 基本逻辑门 基本逻辑门的逻辑结果 一、组合逻辑电路设计 2、三态门及总线缓冲器的设计 三态门及三态门总线的表示方法 三态门及三态门总线的仿真结果 一、组合逻辑电路设计 3、优先编码器的设计 优先编码器和普通编码器的符号表示 普通10-4编码器和优先10-4编码器的仿真波形 一、组合逻辑电路设计 4、译码器的设计 普通4-10译码器和优先4-10译码器的仿真波形普通4-10译码器和优先4-10译码器的仿真波形 一、组合逻辑电路设计 6、多路选择器的设计 多路数据选择器的符号表示

35、 16-1多路数据选择器的仿真波形 一、组合逻辑电路设计 5、运算器的设计 8位加/减运算器逻辑符号 8位加/减运算器的仿真波形 二、时序逻辑电路设计 1、触发器的设计 触发器的符号表示 各触发器的仿真波形 二、时序逻辑电路设计 2、寄存器的设计 8位三态锁存器的仿真波形 8位串入串出移位寄存器8位串入串出移位寄存器的仿真波形二、时序逻辑电路设计 3、计数器的设计 在数字系统中计数器的使用非常频繁,它不仅可以统计输入脉冲信号的个数,进行计时和计数,还可以实现信号的分频、定时、产生节拍脉冲和脉冲序列等。计数器有很多种,大致可分为同步计数、异步计数、加法计数、减法计数和可逆计数等。 12进制计数器

36、的仿真波形 三、存储器设计 1、只读存储器ROM的设计 ROM存储器曾经是最常用的存储器,例5-11描述了一个2564的只读存储器。USE STD.TEXTIO.ALL调用了程序包TEXTIO,使得可以从数据文件中读取数据。 2、静态数据存储器SRAM的设计 RAM和ROM的主要区别在于RAM可读可写,换言之RAM有一定的读写标准。 SRAM读写操作 三、存储器设计 3、先进先出堆栈FIFO的设计 84先进先出堆栈引脚 FIFO的仿真波形 FIFO是先进先出堆栈,常作为数据缓冲期,其数据存放结构与RAM相同,只是存取方式不同。 四、状态机设计 1、状态机概述 无论与基于VHDL的其他设计方案相

37、比还是与完成相似功能的CPU相比,状态机都有难以超越的优越性,具体表现在以下几个方面: 既保证了数字系统的顺序运行又不失灵活性; 结构简单,易于优化; 容易构成良好的同步模块,利于消除竞争冒险现象; VHDL描述方法多样、层次鲜明、结构清晰易读易懂; 单时钟周期变化,速度快; 可靠性高状态机结构示意图 四、状态机设计 2、Moore状态机的设计 摩尔状态机的结构示意图 摩尔状态机状态转移图摩尔状态机仿真波形 四、状态机设计 3、 Mealy状态机的设计 米勒型状态机结构示意图 米勒型状态机的仿真波形 四、状态机设计 4、 容错状态机的设计 在状态机设计中,不可避免地会出现大量剩余状态。若不对剩

38、余状态进行合理的处理,状态机可能进入不可预测的状态,从而导致对外界出现短暂失控或者始终无法摆脱剩余状态而失去正常的功能。 但是,剩余状态的处理要不同程度地耗用逻辑资源,因此设计者在选用状态机结构、状态编码方式、容错技术及系统的工作速度与资源利用率方面需要做权衡比较,以适应自己的设计要求。 剩余状态的转移去向大致有如下几种:1、转入空闲状态,等待下一个工作任务的到来;2、转入指定的状态,去执行特定任务;3、转入预定义的专门处理错误的状态,如预警状态。 对于多余状态的处理方法有2种,一种是在语句中对每一个非法状态都做出明确的状态转换指示,另一种是利用others语句对未提到的状态作统一处理。重点内

39、容: 并行语句的使用 顺序语句的使用第6章 VHDL语句进阶 一、并行语句1、块语句(BLOCK) 块语句(BLOCK)的应用类似于利用PROTEL画原理图时,可将一个总的原理图分成多个子模块,而这个总的原理图则是由一个或多个子模块的原理图连接而成的定成模块图。当子模块的原理图仍然很大是,可以将其变成更底层的模块的原理图,即块语句(BLOCK)的嵌套。块语句(BLOCK)实现的是从结构体形式上的划分,并非功能上的划分, 块的表达格式是:块标号:BLOCK【(块保护表达式)】、接口说明、类属说明、BEGIN、并行语句、END BLOCK 块标号; 块中的并行语句可包含结构体中的任何并行语句结构。

40、BLOCK语句本身属于并行语句,其包含的语句也是并行语句。在较大的VHDL程序中,恰当的块语句可以提高工作效率,对于技术交流、程序移植、排错和仿真都是有益的。一、并行语句2、生成语句(GENERATE ) 生成语句有一种复制作用(建立0个或多个备份),在设计中,只要根据某些条件,设定好某一元件或设计单位,就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构。生成语句的格式有如下两种形式: 【标号:】FOR循环变量IN取值范围GENERATE 说明部分 BEGIN 并行语句 END GENERATE【标号】; 【标号:】IF 条件 GENERATE 说明部分 BEGIN 并行语句 EN

41、D GENERATE【标号】一、并行语句COMPONENT语句对将要例化的器件进行了接口声明,它对应一个已经设计好的实体。综合器根据COMPONENT指定的器件名和接口信息进行装配。生成语句产生的8个相同LATCH模块 一、并行语句3、报告语句(REPORT ) VHDL仿真中,REPORT语句是报告相关信息的语句,类似于C语言中的printf语句。该语句本身不可综合(综合中不能生成电路),主要用以提高人机对话的可读性,见识某些电路的状态。REPORT语句本身虽不带任何条件,但需根据描述的条件给出状态报告。REPORT语句是93版VHDL标准新增加的语句,其中只定义了一个报告信息的子句,由条件

42、语句的布尔表达式判断是否给出信息报告,使用起来比断言语句更简单。 具体书写格式如下: REPORT【字符串】; 字符串需要在外部加上双引号括起来。例6-6描述了一个RS触发器,其中由IF语句的布尔条件给出信息报告,当R与S同时为高电平是,报告出错信息“BOTH”一、并行语句4、并行断言语句(ASSERT ) VHDL中的断言语句包括并行和顺行两种,主要用于程序调试、时序仿真时的人机对话,也属于不可综合语句,综合中被忽略而不会生成逻辑电路,只用于检测某些电路模型是否正常工作等。例如RS触发器要求R与S两输入端不能同时为1,若在电路仿真时遇到R与S输入同时为1,则提示出错。因此RS触发器设计仿真中

43、可用断言语句进行检测。并行断言语句的书写格式如下: ASSERT【条件表达式】 REPORT【出错信息】 SEVERITY【错误级别】一、并行语句5、过程调用语句(PROCEDURE) 过程调用语句属于VHDL子程序的一种类型。子程序是一个VHDL程序模块,利用顺序语句来定义和完成算法,应用它能更有效地完成重复性的设计工作。子程序不能从所在的结构体的其他块或进程结构中直接读取信号值或者向量信号赋值,而只能通过子程序调用及与子程序的界面端口进行通信才能实现这些功能。过程调用调用可通过其界面获得多个返回值,通常被看作一种语句结构,可以单独存在。 子过程调用语句的具体用法如下: PROCEDURE

44、过程名 【(参数声明)】 参数声明指明输入输出端口的数目和类型,注意:通常,可在参量表中定义3中流向模式,即IN、OUT和INOUT。如果只定义了IN模式而未定义目标参量类型,则默认为常量;若定义了INOUT或OUT,则默认目标参量是变量。二、顺序语句 顺序语句(Sequential Statements)是相对于并行语句而言的。顺序语句的特点是每一条语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致,顺序语句只能出现在进程和子程序用,子程序仅包括函数和过程。 1、WAIT语句 对于不同结束挂起条件的设置,WAIT语句游种不同的书写格式:WAIT; WAIT ON 信号表;WAIT UNT

45、IL 条件表达式;WAIT FOR 时间表达式;二、顺序语句2、NEXT语句 NEXT语句主要用于在LOOP语句执行中进行有条件的或无条件的转向控制。他的语句有3种格式,即:NEXT;NEXT LOOP 标号;NEXT LOOP 标号WHEN 条件表达式;3、EXIT语句 EXIT语句与NEXT语句具有十分相似的语句格式和跳转功能,他们均是LOOP语句的内部循环控制语句。EXIT的语句格式有3中,即:EXIT;EXIT LOOP 标号;EXIT LOOP 标号 WHEN 条件表达式;二、顺序语句4、NULL语句 空操作语句NULL不完成任何操作,它唯一的功能就是是逻辑运行流程跨如下一步语句的执

46、行。NULL常用于CASE语句中,为了满足尽可能多的条件,利用NULL来表示剩余的不用条件下的操作行为。具体的语句格式如下: NULL; 例【6-12】VHDL的空语句(NULL)CASE opcode ISWHEN “001”=tmp:=rega AND regb;WHEN “101”=tmp:=rega OR regb; WHEN “110”=tmp:=NOT rega; WHEN OTHERS=NULL;END CASE;二、顺序语句4、RETURN语句 返回语句RETURN有两种语句格式,即 RETURN; RETURN 表达式; 第一种语句格式只能用于过程,他只是结束过程,并不返回任

47、何值。第二种语句格式只能用于函数,并且必须返回一个值。返回语句只能用于子程序体重,执行返回语句将结束子程序的执行,无条件的跳转至子程序结尾处。用于函数的语句中的表达式提供函数返回值。每一个函数必须至少包含一个返回结构,但是在函数调用时,只有其中一个返回语句可以将值返回。T重点内容:数值类属性函数使用信号属性使用 数据类型和数据区间属性函数使用VHDL设计仿真时间数字转化器(TDC)的设计第7章 VHDL的属性描述和仿真延时 一、预定义属性 VHDL中预定义属性语句有很多实际的应用,可用于对信号或其它项目的多种属性检测或统计。VHDL中具有属性的项目有类型、子类型过程、函数、信号、变量、常量、实

48、体、结构体、配置、程序包、元件和语句标号等,属性是这些项目的特性。 VHDL还允许设计者自己定义属性,常用的属性可以分为5大类,即: 数值属性(Value Attributes) 函数属性(Function Attributes) 信号属性(Signal Attributes) 类型属性(Type Attributes) 范围属性(Range Attributes)二、数值类属性函数 数值属性(Value Attributes),顾名思义,当程序调用它时,所返回的是一个数值,包括布尔型的真、假二值。在VHDL语言中,这类指令可以用来返回一个数据类型(Data type)、一个数组(Array)

49、或一个程序块(Block)的属性, 1、数值类型属性函数 数值类型属性用于返回一个数据类型(Data type)或者是一个子数据类型(Subtype)的最左边或最右边、或上限或下限的数值。其基本语法为: Type_nameHigh 返回Type_name的上限值 Type_nameLow 返回Type_name的下限值 Type_nameLeft 返回Type_name的左边值 Type_nameRight 返回Type_name的右边值二、数值类属性函数 2、数值数组属性函数 数值数组属性函数用于返回指定数组长度的信息,基本语法为:array_nameLengtharray_nameLeng

50、th(i)其中,array_nameLength用来返回指定数组array_name的长度。array_nameLength(i)用来返回指定多维数组array_name第i维的长度。3、数值块属性函数 数值块属性用于返回指定的架构(ARCHITECTURE)或块(BLOCK)内描述的电路风格是否为行为模式或者结构模式。基本语法去为:nameBehavior: 返回是否为行为模式nameStructure: 返回是否为结构模式三、函数属性1、函数类型属性 函数类型属性用于返回指定数据类型(Data type)的相关信息,相对于这些信息,在VHDL语言中,系统总共定义了下列6中指令供我们使用,其

51、基本的语法为:Type_namePOS (Value)Type_nameVAL (Value)Type_nameSUCC (Value)Type_namePRED (Value)Type_nameLEFTOF (Value)Type_nameRIGHTOF (Value)2、函数数组属性 函数数组属性用于返回某一特定数组数据对象的边界范围及高低值,其基本语法为:Array_nameLEFT(n)Array_nameRIGHT(n)Array_nameHigh(n)Array_nameLow(n) 三、函数属性3、函数信号属性函数信号属性用于返回某一指定信号(Signal)对象的变动状况,在VH

52、DL语言中,系统总共定义了5中指令供设计者使用,其基本语法为:Signal_nameEVENTSignal_nameACTIVESignal_nameLAST_EVENTSignal_nameLAST_ACTIVESignal_nameLAST_VALUE触发器信号时序图 四、信号(SIGNAL)属性 信号属性(Signal Attributes)用于返回指定信号(Signal)的信息或产生某一相同的信号。与前面讨论的个属性的不同之处在于信号属性只能使用在程序的架构(ARCHITECTURE)内,他不可以在子程序内使用也不可以在函数或过程内调用。 1、带DELAYED(time)属性的信号SI

53、GNAL CLK信号波形及延时信号波形 2、带STABLE(time)属性的信号SIGNAL 四、信号(SIGNAL)属性 带STABLE(time)属性的信号通过Sinal_nameSTABLE(Time)函数生成,该语句能够检测信号在指定时间内是否发生了变化,如果信号发生了变化,则返回真(True),反之,则返回假(False)。其中,Signal_name是指定信号的名称,Time时所要监测的时间。CLK信号波形及STABLE信号波形 3、带QUIET (time)属性的信号SIGNAL 四、信号(SIGNAL)属性4、带TRANSACTION属性的信号SIGNAL 五、数据类型的属性函

54、数 数据类型属性(Type Attributes)用于返回指定类型(Type)或子类型(Subtype)的基本(BASE)类型(Type)。在VHDL语言中,系统只定义了一种类型属性供设计者使用,其基本语法为: Type_nameBASE 其中,Type_name为指定数据类型或子类型的名称,BASE为返回所指定的Type或Subtype的基本类型。类属属性返回值fruitBASEfruitsfruitBASELEFTApplefruitBASEPRED(Lemon)PeachfruitSUCC(Lemon)Mango类属属性返回值六、数据区间的属性函数 数据区间的属性函数又称为范围属性(Ra

55、nge Attribute)用于返回有限制的指定数组类型的范围。在VHDL语言中,系统提供了两个范围属性指令供设计者使用,其基本语法为: Array_nameRANGE Array_nameREVERSE_RANGE范围属性返回值REGrange07REGreverse_range70BUSrange90BUSreverse_range09范围属性返回值七、VHDL的设计仿真 在VHDL设计流程中,设计的仿真验证是一个重要且费时的环节。由于现代EDA工程的快速发展,EDA软件工具已经可以贯穿整个硬件系统设计的行为仿真、RTL仿真和门级仿真。其中,行为仿真和RTL仿真为功能仿真,门级仿真为时序仿

56、真。1、仿真延迟 延迟是VHDL仿真中最重要的特性设置,为建立精确的延时模型,甚至可以不使用VHDL仿真器得到更接近实际的结果。(1)惯性延时 惯性延时也成为固有延时(Inertial Delay),是所有电子器件均存在的一种延时特性。(2)传输延时 传输延时是传输模型计算出的信号延时(Transport Delay)。2、仿真周期七、VHDL的设计仿真 硬件模型由VHDL语言描述行为之后还需要经过两个仿真阶段即初始化阶段和进程的重复执行阶段。仿真周期包括三部分,即(1)敏感条件成立或等待条件成立;(2)更新进程中的信号值;(3)执行每一个被激活的进程,直到被再次挂起;八、时间数字转化器(TD

57、C)的设计1、时间数字转化器(TDC)的应用 CMOS集成技术的提高,不仅提供了稳定、低功耗、高集成度环境,同时减小了模拟信号与数字信号的互扰,提高系统噪声性能。 2、TDC的工作原理 TDC测量时间间隔的基本原理对所有具体的电路结构都是相同的,即将连续的时间划分为可测量的基本时间单位,从而实现时间量化。 八、时间数字转化器(TDC)的设计3、TDC的分类 TDC实现了连续时间到离散数字量的转化。按目前常用的TDC结构可以分为双转化和单转化两种结构。 双转化结构TDC 八、时间数字转化器(TDC)的设计基于延时链结构的TDC (a)延时链结构TDC结构框图(b)延时链结构TDC工作时序波形八、

58、时间数字转化器(TDC)的设计基于延时链结构的TDC 测量值超出测量范围的两种情况八、时间数字转化器(TDC)的设计振荡器结构的TDC 振荡器结构的TDC与延时链结构的TDC都是利用反相器门延时测量时间误差。但是振荡器结构是通过对振荡器相位输出判断测量时间间隔的量化值,在结构上更加巧妙,环形振荡器结构TDC结构框图 八、时间数字转化器(TDC)的设计4、延时链结构TDC在FPGA上的实现 (1)电路设计FPGA实现TDC的结构图 (2)程序设计八、时间数字转化器(TDC)的设计(3)仿真结果及分析TDC仿真结果 TDC元件模型 重点内容: 库和程序包的使用 文件输入/输出程序包的使用 元件的配

59、置 子程序的使用第8章 VHDL层次化程序设计 一、层次化程序设计方法 层次化设计是指在一个大型设计任务中,将目标层层分解,在各个层次上分别设计系统的某一个简单的某块,然后再将这些小模块组合起来,从而完成整个大系统的设计。从事IP模块设计的工程师,重在设计模块结构;从事系统集成的工程师,重在设计目标的行为。层次化设计方法可以通过一个树形文件清楚的表达出来,层次化设计结构 二、库和程序包 库的作用是存储和防治可编译的设计单元,并通过其目录可以方便的查询和调用。设计库中的设计单元可以用作其他VHDL描述的资源。 1、库 VHDL语言的库可以分为设计库、资源库和工作库。设计库对当前项目是可见的、默认

60、的,无需用LIBRARY子句或USE子句声明。资源库是常规元件和标准模块存放的库,使用哪个资源库需要预先声明,使用哪个程序包也要说明是“可见”的。 2、程序包 程序包是一种使包体中的元件、函数、类型说明,对其他设计单元是“可见”、可调用的设计单元。程序包的主要任务是使不同的设计项目可以共享一个相同的单元,而这个单元封装在两个不同的设计实体中。 二、库和程序包1、常用的程序包 (1)STD库的程序包。它与现在STD库中编译,它定义了若干类型、子类型和函数。再设计每个单元指出,以假设一条隐含的调用该程序包的子句。用户不能修改该程序包。(2)TEXTIO(3)STD_LOGIC_1164。它定义了一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论