1、重点内容:EDA技术发展和应用EDA工程设计流程EDA集成开发工具,第1章 EDA概述,一、EDA工程简介,EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。EDA的定义有广义和狭义之分,广义定义EDA包括半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印制电路板设计自动化、仿真与测试故障诊断自动化等。狭义定义的EDA就是电子设计自动化。EDA技术主要有四个方面: 1、可编程逻辑器件,即应用EDA技术完成电子系统设计的载体; 2、硬件描述语言(VHDL 或者 Verilog)。它用来描述系统的结构和功 能,是ED
2、A的主要表达手段; 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
5、Garry Array)现场可编程门阵列随着EDA技术的发展已经成为电子设计领域的重要角色,其应用相当广泛。高集成度、高速度和高可靠性是CPLD/FPGA最明显的特点。,CPLD/FPGA的一般设计流程,四、EDA工程的设计流程,一个完整的EDA工程通常要涉及到系统建模、逻辑综合、故障测试、功能仿真、时序分析、形式验证等内容。1、设计输入 2、逻辑综合和优化 3、布局布线和适配 4、工程设计的仿真5、目标器件的编程和下载 6、硬件电路的后仿真验证和测 试,VHDL开发FPGA/CPLD 电子系统的流程图,五、EDA集成开发工具,目前比较流行的用于可编程器件的EDA集成开发工具主要有Altera
6、公司的MAX+Plus II和Quartus II、Xilinx公司的Foundation和ISE以及Lattice公司的ispDesignEXPERT和ispLEVER。,Quartus II,Quartus II的GUI界面,它支持原理图、VHDL和Verilog语言文本输入方式和波形或EDIF格式的文件作为输入,且支持这些文件的混合设计。,五、EDA集成开发工具,ISE+ModelSim,ispLEVER,五、EDA集成开发工具,其它开发工具,System Generator和Matlab联合开发DSP系统,六、EDA技术的学习重点和学习方法,1、EDA技术的学习方法 从实用角度讲,ED
7、A技术需要掌握四个方面,即: 1)、可编程逻辑器件; 2)、硬件描述语言(VHDL 或者 Verilog); 3)、配套的软件工具; 4)、实验开发系统;2、EDA技术的学习方法读者在学习EDA技术的过程中首先接触的就是VHDL的基本编程,在这里应该熟练掌握基本门电路、多路选择器和状态机的编写。然后掌握配套的CPLD/FPGA开发软件,通过实际的案例和应用设计边学边用。,重点内容:CPLD结构和工作原理FPGA结构和工作原理FPGA配置方式CPLD/FPGA应用选型,第2章,一、可编程逻辑器件概述,可编程逻辑器件 PROM、PLA和PAL的原理和特性,PROM,基于二极管和三极管的一次可编程P
8、ROM单元,一、可编程逻辑器件概述,PLA,PLA是Programmable Logic Array的缩写,它的出现主要是为了解决PROM的速度和输入端受到限制的问题。右图通过这种阵列结构PLA可以实现大量的组合函数,虽然不能完全覆盖所有的输入组合,但其较多的输入端和更快的速度使得它的应用超过了PROM。,一、可编程逻辑器件概述,PAL,可编程阵列逻辑PAL是PLA的一个发展版,与PLA类似,它也有一个宽输入。可编程的“与”阵列。最大的不同是PAL的“或”阵列不再可编程,而是变成了固定的。,可编程特性分类:从可编程特性分类可将PLD分为一次可编程和重复可编程两类。一次可编程器件主要以PROM、
9、PAL和熔丝型FPGA为代表,其他的器件大多数是可重复编程的。熔丝型器件编程的主要原理是利用较大的编程电流将特定位置的熔丝烧断,从而完成所需的逻辑函数输出,一、可编程逻辑器件概述,对于多次可编程的器件而言,用紫外线擦除的器件一般只能使用几十次,而采用电擦除方式的器件编程次数会比紫外线方式的稍多一些,如果是采用E2MOS工艺的器件,擦写次数可以达到上千次。,一、可编程逻辑器件概述,可编程逻辑器件中的编程元件通常有五种: 熔丝型开关 可编程低阻电路 EPROM EEPROM SRAM,内部互联结构分类 如果从内部互联结构分类,可编程逻辑器件可以分为CPLD和FPGA两类。,二、PLD内部结构的表示
10、方法,描述PLD内部电路结构的方法与普通逻辑电路的表示方法不同。它需要将芯片内部结构配置与逻辑图一一对应起来,从而使得器件制造商和电路设计这较容易掌握。PLD的表示方法在电路层、物理层以及版图的布局之间都有非常巧妙的映射,因而读起来十分方便。 。,1.互补输入缓冲电路,2.三态输出缓冲电路,二、PLD内部结构的表示方法,3.与或逻辑 与或逻辑是可编程器件的核心部件。 如图所示,(a)中三条竖线A、B、C均为输入线,输入到与门的横线为乘积线。乘积线与输入线的交叉点为编程点,在编程点处有编程器件,如熔丝或可编程的MOS器件等。当输入线与乘积线相连通时,在编程点处以“”表示。(b)中三条竖线A、B、
11、C也为输入线,输入到或门的横线为和线。和线与输入线的交叉点为编程点。 当输入线与和线相连通时, 在编程点处以“”表示。 可以看出,图中电路表示 的逻辑表达式分别为Y=AB 和Y=A+B+C。,三、 CPLD的基本结构和工作原理,CPLD的基本结构可编程逻辑阵列块类似于一个低密度的PAL/GAL,包括乘积项的与阵列、乘积项分配和逻辑宏单元等。,基于乘积项阵列型CPLD的基本结构,三、 CPLD的基本结构和工作原理,ispLSI2128的结构示意图,它由输入(Input)、全局布线区(GRP)、通用逻辑块(GLB)、I/O单元、宏块和控制电路等组成。每个宏块包括8个通用逻辑块(GLB)、2个输出布
12、线区(ORP)、1个32位输入总线和33个引脚。,三、 CPLD的基本结构和工作原理,GLB结构: 通用逻辑块GLB是Gerneric Logic Block的缩写,也是整个器件的逻辑核心。它由与阵列、乘积项共享阵列(Product Term Sharing Array)、输出逻辑宏单元(OLMC)和控制电路四部分组成,分布在GRP的四周,可实现类似GAL/PAL的功能,三、 CPLD的基本结构和工作原理,1.输出逻辑宏单元 2.控制电路,3.全局布线区,属于ispLSI中的一种专用内部互联结构。起作用是将GLB的输出信号或I/O单元的输入信号与GLB的输入端连接,三、 CPLD的基本结构和工
13、作原理,4、I/O单元结构 I/O单元常称为输入/输 出单元,是器件外部封 装引脚与内部信号之间 的接口电路,5、宏块结构每个宏块包含8个GLB、16位输入总线、2个输出布线区(ORP)、32个I/O单元、2个专用输入和1个公用乘积项GOE。,三、 CPLD的基本结构和工作原理,三、 CPLD的基本结构和工作原理,Altera公司的CPLD器件总结起来可以概括为五个部分: 可编程逻辑阵列块(LAB); 宏单元; 扩展乘积项; 输入/输出块; 互联资源;,MAX7128结构原理图,2、宏单元。由3个功能块组成:逻辑阵列、乘积项选择矩阵和可编程寄存器。各部分可以被独自配置为时序逻辑和组合逻辑工作方
14、式。,三、 CPLD的基本结构和工作原理,1.可编程逻辑阵列块(LAB),对于每个LAB有下列输入信号。 A来自作为通用逻辑输入的PIA的36个信号 B全局控制信号,用于寄存器辅助功能 C从I/O引脚到寄存器的直接输入通道,三、 CPLD的基本结构和工作原理,3.扩展乘积项利用扩展项可保证在实现逻辑综合时,用尽可能少的逻辑资源实现尽可能快的工作速度。具体的扩展乘积项分为共享扩展项和并联扩展项。,并联扩展项的原理图,共享扩展乘积项结构,三、 CPLD的基本结构和工作原理,4.可编程连线阵列PIA,5.输入/输出控制块(I/O),四、 FPGA的结构和工作原理,1.基于SRAM编程的FPGA基于S
15、RAM编程的FPGA以Xilinx的逻辑单元阵列(LCA,Logic Cell Array)为例 FPGA由可配置逻辑模块(CLB,Configurable Logic Block)、可编程布线资源(PI,Progammable Interconnection)和可编程输入/输出模块(IOB,Input/Output Block)三部分组成。,四、 FPGA的结构和工作原理,2.基于反熔丝编程的FPGA,采用反熔丝编程的FPGA具有集成度高、功耗低、保密性强、抗辐射和抗 干扰性好等优点。,四、 FPGA的结构和工作原理,Altera公司的FPGAFLEX 10K系列的FPGA是工业界第一款嵌入
16、式PLD器件,采用了可重复配置的CMOS SRAM工艺和灵活逻辑单元矩阵(FLEX,Flexble Logic Element Matrix)框架,具有高密度、 低成本、低功耗等特点。内部包括四个部分 : 嵌入式阵列块 逻辑阵列块 快速通道/互联通道 输入/输出单元,四、 FPGA的结构和工作原理,逻辑阵列块(LAB),2.嵌入式阵列块,四、 FPGA的结构和工作原理,3.快速通道/互联通道,4、输入/输出单元,四、 FPGA的结构和工作原理,Xilinx公司的FPGA,主要包含:,1、可配置的逻辑 模块(CLB),2、可编程布线资源(PI)。由纵横分布在CLB阵列之间的金属线网络和位于纵横线
17、交叉点上的可编程开关矩阵组成。,3、可编程的输入/输出模块(IOB)由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成,每个IOB控制一个外部引出端。,四、 FPGA的结构和工作原理,五、 FPGA的配置方式,FPGA的配置方式是指FPGA用来完成设计师的逻辑配置和外部连接方式。逻辑配置是指FPGA的下载,即开发系统将用户的设计输入进行编译产生配置数据文件,然后装入FPGA芯片内部的可配置存储器的过程。,1、主动串行配置主动串行配置模式需要附加一个外部串行存储器EPROM或PROM。在配置之前需事先将配置数据写入外部存储器,每当电源接通后,FPGA将自动地从外部串行PROM或EPROM
18、中读取串行配置数据,,2、主动并行配置主动并行配置同样适用EPROM做外部存储器,事先将配置数据写入EPROM芯片内。,五、 FPGA的配置方式,3、菊花链配置在数字系统的应用设计中,当单片FPGA不足以实现完整的功能时,可以采用多个FPGA芯片。,五、 FPGA的配置方式,六、 CPLD/FPGA的应用选型,1、器件逻辑资源的选择能够影响逻辑资源占用的因素有很多,主要有:A描述语言和描述风格;BHDL综合器的选择;C综合策略的选择;D逻辑功能单元的性质额实现方法; 2、芯片速度的选择。芯片速度的选择应与系统工作频率相吻合, 3、器件功耗的选择。就低功耗而言,FPGA具有绝对的优势。 4、器件
19、封装的选择 5、CPLD/FPGA的选择。FPGA的主要应用有三个方面:A直接使用与电路系统;B硬拷贝; C逻辑验证;,重点内容:VHDL程序基本结构VHDL基本词法与基本语句VHDL描述风格,第3章 VHDL硬件描述语言,一、硬件描述语言概述,HDL语言的种类,1、ABEL-HDL。是一种早期的硬件描述语言,可方便准确的描述所设计的电路逻辑功能,并被很多电子系统设计自动化(EDA)软件所支持。 2、AHDL。是Altera公司开发一种HDL语言。它的特点是易学易用, 3、VHDL。中文全称为超高速集成电路硬件描述语言 4、Verilog。是1983年由GD(GateWay Design Au
20、tomation)公司的Phil Moorby首创的。,一、硬件描述语言概述,VHDL语言的特点,硬件描述能力强; 设计技术齐全、方法灵活、支持广泛; 对设计描述具有相对的独立性; 具有很强的移植能力; 易于共享和复用; 具有丰富的仿真语句和库函数; 设计结构清晰、易读易懂; 容易实现系统的更新和升级; 数据类型丰富、安全性好;,VHDL和Verilog的比较,一、硬件描述语言概述,Verilog HDL在底层建模方面要强于VHDL,但系统建模覆盖面较小。而VHDL在系统级建模方面则可以像高级语言一样更灵活的描述系统行为。,二、VHDL程序的基本结构,用VHDL进行数字电路设计时,无论电路规模
21、的大小,均要使用一个完整的VHDL程序结构,这个完整的程序结构包括五部分,它们分别是(参见上一节给出的VHDL七段译码器代码): 实体(Entity); 结构体(Architecture); 配置(Configuration); 包集合(Package); 库(Library);,二、VHDL程序的基本结构,VHDL的设计简述,其描述结构中包括IEEE标准库说明、程序包、实体和结构体等几个部分。,四选一多路数据选择器,结构体(Architecture)是占VHDL程序比重最大的部分也是VHDL的核心部分,,二、VHDL程序的基本结构,实体说明是VHDL程序设计中最基本的组成部分,主要用来描述设
22、计实体的外部接口信号,定义设计单元的输入输出端口,属于整个VHDL所描述电路结构的通信界面,为可视部分,但它并不描述所要设计系统的具体功能。,端口说明语句描述了目标系统与外界通信的接口,即指明实体的输入输出信号,以及一些端口的模式信息,包括端口的名称、数据的类型和数据的传输方向(端口模式)。,二、VHDL程序的基本结构,结构体是VHDL程序的核心,它描述了目标系统的行为、元件以及它们之间的连接关系。结构体的基本格式包括四个部分: 结构体引导语句(ARCHITECTURE)结构体说明语句 功能描述语句 结束语句(END),VHDL的结构体,三、VHDL的基本词法,VHDL语言与其他高级语言一样,
23、具有计算机编程语言的一般特性,其语言要素是组成编程语句的基本单元,主要有数据对象(Object)、数据类型(Type)、操作数(Operations)和运算操作符(Operator)。 1、标识符。包括短标识符和扩展标识符 2、对象。在VHDL语言中,凡是可以赋值的客体叫做对象(Object)。VHDL对象包括专门的数据类型,即常量(CONSTANT)、信号(SIGNAL)、变量(VARIABLE)和文件(FILES)。 3、数据类型。在VHDL标准中,IEEE一共定义了10种基本的数据类型。同时,为了方便设计,VHDL还容许工程师根据自己需要自定义数据类型,这就给数字系统设计提供了很大的自由
24、空间,从而为EDA工具的高层次综合、仿真提供可能。常用数据类型:整数、实数类型、位类型、位矢量类型、布尔类型、时间类型、枚举类型、数组类型。,三、VHDL的基本词法,类型转换,由于VHDL对数据类型的限制比较严格,不同类型的对象不能带入,因而很多程序设计常常会遇到数据转换的问题。为了进行不同数据类型的转换,VHDL提供了三种方法来完成这一功能,即类型标记法、函数转换法和常数转换法。,运算操作符,与其他程序设计语言相似,VHDL中的表达式也是由运算符将基本元素连接起来形成。这里的基本元素包括对象名、文字、函数调用及用括号括起来的表达式。在VHDL语言中共有4类操作符,即逻辑运算符(LOGICAL
25、)、关系运算符(RELATIONAL)算术运算符(ARITHMETIC)、并置运算(CONCATENATION),四、VHDL的基本语句,VHDL语言的的描述语句主要用来描述系统的硬件结构、行为功能以及信号之间的逻辑关系。这些语句按执行的顺序可以分为顺序语句和并行语句两类。 顺序语句主要包括四种:赋值语句、流程控制语句、等待语句、空操作语句。并行语句主要有7种:进程语句;并行信号赋值语句;块语句;元件例化语句;生成语句;条件信号赋值语句;并行过程调用语句;,1、赋值语句。赋值语句分为简单信号赋值语句、条件信号赋值语句和选择信 号赋值语句三种 2 IF语句。属于流控制语句。有单选控制、二选控制和
26、多选控制三种。 3、CASE语句。CASE语句也是顺序语句的一种,且可读性非常强。 4、LOOP语句。是一种循环语句有三种格式,即aFOR_LOOP;bWHILE_LOOP;cLOOP; 5、PROCESS进程语句.从电路的工作方式上可以包括组合逻辑运行方式、同步逻辑运行方式和异步逻辑运行方式等。 6、COMPONENT元件例化语句 7、PORT MAP端口映射语句。在上一小节元件例化语句的示例代码中,各个元件之间的连线关系是通过端口映射语句(PORT MAP)来实现的,,四、VHDL的基本语句,五、VHDL的描述风格,在VHDL语言中,不同的描述方式或建模方式又称为VHDL语言的描述风格,常
27、用的主要有三种或它们的混合。这三种描述方式为:行为描述;数据流描述;门级描述;,1、行为级描述。是按照目标系统的功能或算法来描述结构体,不必给出实现这些行为的硬件结构,而只强调电路的行为和功能。,五、VHDL的描述风格,2、数据流描述利用VHDL语言中的赋值符和逻辑运算符进行描述。其中既包含逻辑单元的结构信息有隐含的表示某种行为,主要采用非结构化的并行语句描述。,3、门级描述门级描述属于比较底层的描述方法,就是描述出元件之间的互连方式。 其具体步骤如下: 1.元件说明 2.元件例化 3.元件配置,重点内容:Quartus II基本设计流程SignalTap II模块使用LPM_ROM宏模块使用
28、,第4章 Quartus II操作指南,一、Quartus II基本设计流程,1、创建工程,(1)新建文件夹 (2)输入源程序 (3)保存文件,一、Quartus II基本设计流程,(4)创建工程并添加源程序,(5)选择目标芯片,(6)设置EDA工具,(7)结束设置,一、Quartus II基本设计流程,一、Quartus II基本设计流程,2、编译工程,通过New Project Wizard建立了目标系统的工程之后,工程师可以对所建工程进行全程编译。 Quartus II编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置以及时序分析。,一、
29、Quartus II基本设计流程,3、时序仿真,工程编译成功后,必须对其功能和时序特性进行仿真测试,以了解设计结果是否满足原设计要求。Quartus II提供的波形文件为Vector Waveform File,即VWF。 具体的流程为: 新建波形编辑文件; 设置仿真时间区域; 保存文件; 导入欲观察的信号节点; 编辑激励信号; 设置数据格式; 设置仿真器参数; 启动仿真观察仿真结果;,一、Quartus II基本设计流程,波形编辑器,仿真时间长的设置,导入欲观察的信号,将端口信号导入波形文件编辑器,一、Quartus II基本设计流程,一、Quartus II基本设计流程,设置好激励波形的波
30、形编辑器,端口信号属性设置,一、Quartus II基本设计流程,仿真器设置,仿真波形输出,一、Quartus II基本设计流程,4、Viewer工具,(1)RTL ViewerRTL Viewer可以根据VHDL语言或网表文件直接生成RTL级电路,选择Tools-Netlist Viewers| RTL Viewer可以看到MEALY的RTL电路,,一、Quartus II基本设计流程,(2) Technology Map Viewer 与RTL Viewer不同,Quartus II Technology Map Viewer提供的是设计的底级或基元极专用技术原理表征,它展示的是综合后的电
31、路结构,,一、Quartus II基本设计流程,(3) State Machine Viewer 如果目标系统是是按照状态机机理设计的(状态机的概念在第五章介绍),State Machine Viewer直观的看到各个状态转移的关系,一、Quartus II基本设计流程,5、引脚锁定和下载,为了能对此工程进行硬件测试,应将编译成功后的程序下载到目标芯片上,并指定输入输出信号的管脚,以便添加激励信号和测试输出信号,,Quartus II的引脚配置,FPGA/CPLD的编程下载,二、嵌入式逻辑分析仪SignalTap II,嵌入式逻辑分析仪SignalTap II允许对设计中所有层次的模块的信号节
32、点进行测试,可以使用多时钟驱动,而且还能通过设置来确定前后触发捕捉信号信息的比例。本节将以一个计数器cnts为例介绍SignalTap II的使用方法,具体流程为: 启动SignalTap II; 调入待测信号; 设置SignalTap II的参数; 保存文件; 编译下载; 启动SignalTap II进行采样分析;,SignalTap II的编辑窗口,二、嵌入式逻辑分析仪SignalTap II,SignalTap II的参数设置,利用SignalTap采样分析5位计 数器的工作状态,三、LPM_ROM宏模块的使用,正弦信号发生器的模块化结构,可以看出该信号发生器由4部分组成,即 : 计数器
33、; 正选信号数据ROM; VHDL顶层设计; D/A转换器;,使用步骤: 初始化数据文件 定制LPM_ROM元件 (1)打开MegaWizard Plug-In Manager (2) 选择ROM控制线和地址、数据线,三、LPM_ROM宏模块的使用,MegaWizard Plug-In Manager对话框,LPM宏功能设定,三、LPM_ROM宏模块的使用,选择data_rom模块数据线和地址线宽度,选择地址锁存信号inclock,三、LPM_ROM宏模块的使用,调入ROM初始化数据文件并选择在系统读写功能,三、LPM_ROM宏模块的使用,4、顶层文件的仿真测试,正弦信号发生器的仿真波形,用S
34、ignalTap II实时观察正弦信号发生器的结果,重点内容:组合逻辑电路设计时序逻辑电路设计存储器设计状态机设计,第5章 VHDL基本逻辑电路设计,一、组合逻辑电路设计,组合逻辑电路是一种在任何时刻的输出仅取决于当时输入信号的逻辑电路。常用的组合逻辑电路主要有编码器、译码器、数据选择器、运算电路和数值比较器等。,1、基本门电路的设计,基本逻辑门,基本逻辑门的逻辑结果,一、组合逻辑电路设计,2、三态门及总线缓冲器的设计,三态门及三态门总线的表示方法,三态门及三态门总线的仿真结果,一、组合逻辑电路设计,3、优先编码器的设计,优先编码器和普通编码器的符号表示,普通10-4编码器和优先10-4编码器
35、的仿真波形,一、组合逻辑电路设计,4、译码器的设计,普通4-10译码器和优先 4-10译码器的仿真波形,普通4-10译码器和优先4-10译码器的仿真波形,一、组合逻辑电路设计,6、多路选择器的设计,多路数据选择器的符号表示,16-1多路数据选择器的 仿真波形,一、组合逻辑电路设计,5、运算器的设计,8位加/减运算器逻辑符号,8位加/减运算器的仿真波形,二、时序逻辑电路设计,1、触发器的设计,触发器的符号表示,各触发器的仿真波形,二、时序逻辑电路设计,2、寄存器的设计,8位三态锁存器的仿真波形,8位串入串出移位寄存器,8位串入串出移位寄存器的仿真波形,二、时序逻辑电路设计,3、计数器的设计,在数
36、字系统中计数器的使用非常频繁,它不仅可以统计输入脉冲信号的个数,进行计时和计数,还可以实现信号的分频、定时、产生节拍脉冲和脉冲序列等。计数器有很多种,大致可分为同步计数、异步计数、加法计数、减法计数和可逆计数等。,12进制计数器的仿真波形,三、存储器设计,1、只读存储器ROM的设计,ROM存储器曾经是最常用的存储器,例5-11描述了一个2564的只读存储器。USE STD.TEXTIO.ALL调用了程序包TEXTIO,使得可以从数据文件中读取数据。,2、静态数据存储器SRAM的设计,RAM和ROM的主要区别在于RAM可读可写,换言之RAM有一定的读写标准。,SRAM读写操作,三、存储器设计,3
37、、先进先出堆栈FIFO的设计,84先进先出堆栈引脚,FIFO的仿真波形,FIFO是先进先出堆栈,常作为数据缓冲期,其数据存放结构与RAM相同,只是存取方式不同。,四、状态机设计,1、状态机概述,无论与基于VHDL的其他设计方案相比还是与完成相似功能的CPU相比,状态机都有难以超越的优越性,具体表现在以下几个方面:既保证了数字系统的顺序运行又不失灵活性;结构简单,易于优化;容易构成良好的同步模块,利于消除竞争冒险现象;VHDL描述方法多样、层次鲜明、结构清晰易读易懂;单时钟周期变化,速度快;可靠性高,状态机结构示意图,四、状态机设计,2、Moore状态机的设计,摩尔状态机的结构示意图,摩尔状态机
38、状态转移图,摩尔状态机仿真波形,四、状态机设计,3、 Mealy状态机的设计,米勒型状态机结构示意图,米勒型状态机的仿真波形,四、状态机设计,4、 容错状态机的设计,在状态机设计中,不可避免地会出现大量剩余状态。若不对剩余状态进行合理的处理,状态机可能进入不可预测的状态,从而导致对外界出现短暂失控或者始终无法摆脱剩余状态而失去正常的功能。但是,剩余状态的处理要不同程度地耗用逻辑资源,因此设计者在选用状态机结构、状态编码方式、容错技术及系统的工作速度与资源利用率方面需要做权衡比较,以适应自己的设计要求。 剩余状态的转移去向大致有如下几种: 1、转入空闲状态,等待下一个工作任务的到来; 2、转入指
39、定的状态,去执行特定任务; 3、转入预定义的专门处理错误的状态,如预警状态。对于多余状态的处理方法有2种,一种是在语句中对每一个非法状态都做出明确的状态转换指示,另一种是利用others语句对未提到的状态作统一处理。,重点内容:并行语句的使用顺序语句的使用,第6章 VHDL语句进阶,一、并行语句,1、块语句(BLOCK),块语句(BLOCK)的应用类似于利用PROTEL画原理图时,可将一个总的原理图分成多个子模块,而这个总的原理图则是由一个或多个子模块的原理图连接而成的定成模块图。当子模块的原理图仍然很大是,可以将其变成更底层的模块的原理图,即块语句(BLOCK)的嵌套。块语句(BLOCK)实
40、现的是从结构体形式上的划分,并非功能上的划分,块的表达格式是:块标号:BLOCK【(块保护表达式)】、接口说明、类属说明、BEGIN、并行语句、END BLOCK 块标号;块中的并行语句可包含结构体中的任何并行语句结构。BLOCK语句本身属于并行语句,其包含的语句也是并行语句。在较大的VHDL程序中,恰当的块语句可以提高工作效率,对于技术交流、程序移植、排错和仿真都是有益的。,一、并行语句,2、生成语句(GENERATE ),生成语句有一种复制作用(建立0个或多个备份),在设计中,只要根据某些条件,设定好某一元件或设计单位,就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构。生成语
41、句的格式有如下两种形式:【标号:】FOR循环变量IN取值范围GENERATE说明部分BEGIN并行语句END GENERATE【标号】;【标号:】IF 条件 GENERATE说明部分BEGIN并行语句END GENERATE【标号】,一、并行语句,COMPONENT语句对将要例化的器件进行了接口声明,它对应一个已经设计好的实体。综合器根据COMPONENT指定的器件名和接口信息进行装配。,生成语句产生的8个相同LATCH模块,一、并行语句,3、报告语句(REPORT ),VHDL仿真中,REPORT语句是报告相关信息的语句,类似于C语言中的printf语句。该语句本身不可综合(综合中不能生成电
42、路),主要用以提高人机对话的可读性,见识某些电路的状态。REPORT语句本身虽不带任何条件,但需根据描述的条件给出状态报告。REPORT语句是93版VHDL标准新增加的语句,其中只定义了一个报告信息的子句,由条件语句的布尔表达式判断是否给出信息报告,使用起来比断言语句更简单。具体书写格式如下:REPORT【字符串】;字符串需要在外部加上双引号括起来。例6-6描述了一个RS触发器,其中由IF语句的布尔条件给出信息报告,当R与S同时为高电平是,报告出错信息“BOTH”,一、并行语句,4、并行断言语句(ASSERT ),VHDL中的断言语句包括并行和顺行两种,主要用于程序调试、时序仿真时的人机对话,
43、也属于不可综合语句,综合中被忽略而不会生成逻辑电路,只用于检测某些电路模型是否正常工作等。例如RS触发器要求R与S两输入端不能同时为1,若在电路仿真时遇到R与S输入同时为1,则提示出错。因此RS触发器设计仿真中可用断言语句进行检测。并行断言语句的书写格式如下:ASSERT【条件表达式】REPORT【出错信息】SEVERITY【错误级别】,一、并行语句,5、过程调用语句(PROCEDURE),过程调用语句属于VHDL子程序的一种类型。子程序是一个VHDL程序模块,利用顺序语句来定义和完成算法,应用它能更有效地完成重复性的设计工作。子程序不能从所在的结构体的其他块或进程结构中直接读取信号值或者向量
44、信号赋值,而只能通过子程序调用及与子程序的界面端口进行通信才能实现这些功能。过程调用调用可通过其界面获得多个返回值,通常被看作一种语句结构,可以单独存在。子过程调用语句的具体用法如下:PROCEDURE 过程名 【(参数声明)】参数声明指明输入输出端口的数目和类型, 注意:通常,可在参量表中定义3中流向模式,即IN、OUT和INOUT。如果只定义了IN模式而未定义目标参量类型,则默认为常量;若定义了INOUT或OUT,则默认目标参量是变量。,二、顺序语句,顺序语句(Sequential Statements)是相对于并行语句而言的。顺序语句的特点是每一条语句的执行(指仿真执行)顺序是与它们的书
45、写顺序基本一致,顺序语句只能出现在进程和子程序用,子程序仅包括函数和过程。,1、WAIT语句,对于不同结束挂起条件的设置,WAIT语句游种不同的书写格式: WAIT; WAIT ON 信号表; WAIT UNTIL 条件表达式; WAIT FOR 时间表达式;,二、顺序语句,2、NEXT语句,NEXT语句主要用于在LOOP语句执行中进行有条件的或无条件的转向控制。他的语句有3种格式,即: NEXT; NEXT LOOP 标号; NEXT LOOP 标号 WHEN 条件表达式;,3、EXIT语句,EXIT语句与NEXT语句具有十分相似的语句格式和跳转功能,他们均是LOOP语句的内部循环控制语句。
46、EXIT的语句格式有3中,即: EXIT; EXIT LOOP 标号; EXIT LOOP 标号 WHEN 条件表达式;,二、顺序语句,4、NULL语句,空操作语句NULL不完成任何操作,它唯一的功能就是是逻辑运行流程跨如下一步语句的执行。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
47、 rega;WHEN OTHERS=NULL; END CASE; ,二、顺序语句,4、RETURN语句,返回语句RETURN有两种语句格式,即RETURN;RETURN 表达式;第一种语句格式只能用于过程,他只是结束过程,并不返回任何值。第二种语句格式只能用于函数,并且必须返回一个值。返回语句只能用于子程序体重,执行返回语句将结束子程序的执行,无条件的跳转至子程序结尾处。用于函数的语句中的表达式提供函数返回值。每一个函数必须至少包含一个返回结构,但是在函数调用时,只有其中一个返回语句可以将值返回。T,重点内容: 数值类属性函数使用 信号属性使用 数据类型和数据区间属性函数使用 VHDL设计仿
48、真 时间数字转化器(TDC)的设计,第7章 VHDL的属性描述和仿真延时,一、预定义属性,VHDL中预定义属性语句有很多实际的应用,可用于对信号或其它项目的多种属性检测或统计。VHDL中具有属性的项目有类型、子类型过程、函数、信号、变量、常量、实体、结构体、配置、程序包、元件和语句标号等,属性是这些项目的特性。VHDL还允许设计者自己定义属性,常用的属性可以分为5大类,即:数值属性(Value Attributes)函数属性(Function Attributes)信号属性(Signal Attributes)类型属性(Type Attributes)范围属性(Range Attributes
49、),二、数值类属性函数,数值属性(Value Attributes),顾名思义,当程序调用它时,所返回的是一个数值,包括布尔型的真、假二值。在VHDL语言中,这类指令可以用来返回一个数据类型(Data type)、一个数组(Array)或一个程序块(Block)的属性,,1、数值类型属性函数,数值类型属性用于返回一个数据类型(Data type)或者是一个子数据类型(Subtype)的最左边或最右边、或上限或下限的数值。其基本语法为:Type_nameHigh 返回Type_name的上限值Type_nameLow 返回Type_name的下限值Type_nameLeft 返回Type_name的左边值Type_nameRight 返回Type_name的右边值,二、数值类属性函数,2、数值数组属性函数,数值数组属性函数用于返回指定数组长度的信息,基本语法为: array_nameLength array_nameLength(i) 其中,array_nameLength用来返回指定数组array_name的长度。array_nameLength(i)用来返回指定多维数组array_name第i维的长度。,