资源预览内容
第1页 / 共83页
第2页 / 共83页
第3页 / 共83页
第4页 / 共83页
第5页 / 共83页
第6页 / 共83页
第7页 / 共83页
第8页 / 共83页
第9页 / 共83页
第10页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第一章 EDA技术简介技术简介 EDA技术的基本概念和发展历程 EDA技术的特征、优势和实现目标 EDA技术的设计流程和设计工具 EDA技术与ASIC设计 EDA技术的发展趋势EDA技术简介技术简介电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院EDA基本概念基本概念nEDA:Electronic Design AutomationnEDA技术就是以技术就是以大规模可编程逻辑器件大规模可编程逻辑器件为设计载体,以为设计载体,以硬硬件描述语言件描述语言HDL为系统逻辑描述的表达方式,以计算机、为系统逻辑描述的表达方式,以计算机、大规模可编程逻辑器件大规模可编程逻辑器件开发平台开发平台为设计工具,为设计工具,自动地自动地完成完成用软件方式设计的电子系统用软件方式设计的电子系统到到硬件系统硬件系统的逻辑编译、逻辑的逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合化简、逻辑分割、逻辑综合、结构综合(布局布线布局布线),以及,以及逻辑优化和逻辑仿真,直至对特定目标芯片的适配编译、逻辑优化和逻辑仿真,直至对特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成逻辑映射、编程下载等工作,最终形成集成电子系统集成电子系统或或专专用集成电路用集成电路(ASIC)芯片芯片的技术。的技术。nEDA技术融合技术融合硬件实现硬件实现方面、方面、计算机辅助工程计算机辅助工程方面和方面和现代现代电子学电子学方面多学科于一体,打破了方面多学科于一体,打破了软件软件和和硬件硬件间的界限,间的界限,使计算机软件技术与硬件实现合二为一。使计算机软件技术与硬件实现合二为一。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院EDA发展历程 nEDA技术的发展历程技术的发展历程电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院Top-down行为设计结构设计逻辑设计电路设计版图设计Bottom-up系统分解单元设计功能块划分子系统设计系统总成EDA技术的特征技术的特征nEDA技术的特征技术的特征n1、采用自顶向下的设计流程、采用自顶向下的设计流程自自顶顶向向下下设设计计流流程程自自底底向向上上设设计计流流程程电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院n典型的典型的EDA设计流程设计流程设计准备设计准备设计输入设计输入设计处理设计处理设计验证设计验证器件编程器件编程EDA技术的技术的设计流程设计流程明确设计任务,确定设计方法明确设计任务,确定设计方法文本输入方式、图形输入方式、波形输文本输入方式、图形输入方式、波形输入方式、混合输入方式等入方式、混合输入方式等核心环节。编译软件对设计输入文件进行核心环节。编译软件对设计输入文件进行逻辑化简、综合和优化,产生编程文件逻辑化简、综合和优化,产生编程文件进行功能仿真和时序仿真,确保设计正确进行功能仿真和时序仿真,确保设计正确将编程数据文件通过软件下载到具体器件中将编程数据文件通过软件下载到具体器件中电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院VHDL仿真器仿真器文本编译器文本编译器图形编译器图形编译器生成生成VHDL源程序源程序VHDL综合器综合器逻辑综合、优化逻辑综合、优化FPGA/CPLD布线布线/适配器适配器自动优化、布局、布线自动优化、布局、布线/适配适配编程编程器器/下载电缆下载电缆编译、下载编译、下载测试电路测试电路硬件测试硬件测试网表文件网表文件(EDIF,XNF,VHDL)行为仿真行为仿真功能仿真功能仿真时序仿真时序仿真VHDL源程序源程序熔丝图、熔丝图、SRAM文件、文件、VHDL/Verilog网表网表功能仿真功能仿真时序仿真时序仿真门级门级仿真器仿真器EDA技术的工技术的工程设计流程图程设计流程图EDA技术的技术的设计流程设计流程电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第二章 可编程逻辑器件基础可编程逻辑器件基础 可编程逻辑器件概述 PLD器件的基本结构 CPLD/FPGA的结构特点 可编程逻辑器件的基本资源可编程逻辑器件的设计与开发可编程逻辑可编程逻辑器件基础器件基础电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院可编程逻辑可编程逻辑器件的分类器件的分类2.1.2 可编程逻辑器件的分类可编程逻辑器件的分类 可编程逻辑器件有多种分类方法,没有统一的标准。可编程逻辑器件有多种分类方法,没有统一的标准。可编程逻辑器件按集成度分类如下图:可编程逻辑器件按集成度分类如下图:可编程逻辑器件可编程逻辑器件高密度可编程逻辑高密度可编程逻辑器件器件(HDPLD)低密度编程逻辑低密度编程逻辑器件器件(LDPLD)PROMPLAPALGALEPLDCPLDFPGA电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院一一一一. . . .电路符号表示电路符号表示电路符号表示电路符号表示 在常用的在常用的EDAEDA软件中,原理图一般是用器件符号来表软件中,原理图一般是用器件符号来表示的,由于示的,由于PLDPLD阵列规模较大,用传统的器件符号已不能阵列规模较大,用传统的器件符号已不能满足满足PLDPLD原理图的需要,因此在原理图的需要,因此在PLDPLD中,特用一种约定的符中,特用一种约定的符号来简化表示原理图。号来简化表示原理图。PLD的基本结构的基本结构 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院二二二二. . . .与与与与- - - -或阵列或阵列或阵列或阵列 “与与- -或阵列或阵列”是是PLDPLD器件中的最基本结构,通过改变器件中的最基本结构,通过改变“与阵列与阵列”和和“或阵列或阵列”的内部连接,就可以实现不同的的内部连接,就可以实现不同的逻辑功能。依据可编程的部位不同,可将简单可编程逻辑逻辑功能。依据可编程的部位不同,可将简单可编程逻辑器件分为只读存储器器件分为只读存储器PROMPROM、可编程逻辑阵列、可编程逻辑阵列PLAPLA、可编程、可编程阵列逻辑阵列逻辑PALPAL、通用阵列逻辑、通用阵列逻辑GALGAL等等4 4种最基本的类型。种最基本的类型。器件名与阵列或阵列输出电路PROM固定可编程固定PLA可编程可编程固定PAL可编程固定固定GAL可编程固定可组态PLD的基本结构的基本结构 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院CPLD/FPGA的结构特点高密度可编程高密度可编程逻辑器件逻辑器件(HDPLD)CPLDFPGA以乘积项结构方式以乘积项结构方式构成逻辑行为。构成逻辑行为。主体仍是与主体仍是与-或阵列,或阵列,并以可编程逻辑宏并以可编程逻辑宏单元为基础,可编单元为基础,可编程连线集中在一个程连线集中在一个全局布线区。全局布线区。以查找表法结构方以查找表法结构方式构成逻辑行为。式构成逻辑行为。以基本门电路为基以基本门电路为基础,构成门单元阵础,构成门单元阵列,可编程的连线列,可编程的连线分布在门单元之间分布在门单元之间的布线区。的布线区。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院CPLD/FPGA的的比较比较CPLDFPGA结构工艺结构工艺乘积项结构,乘积项结构,E2MOS查找表法结构,查找表法结构,SRAM触发器数量触发器数量少,适合完成组合电路少,适合完成组合电路多,适合完成时序电路多,适合完成时序电路规模规模规模小,逻辑复杂度低规模小,逻辑复杂度低规模大,逻辑复杂度高规模大,逻辑复杂度高时延时延固定固定固定固定时延不可预测时延不可预测布线资源布线资源集总式互联,布线资源少集总式互联,布线资源少分布式互联,布线资源多分布式互联,布线资源多编程灵活性编程灵活性不灵活不灵活灵活灵活编程方式编程方式基于基于E2PROM或或FLASH编编程,系统断电信息不丢失程,系统断电信息不丢失基于基于SRAM编程,系统断编程,系统断电信息丢失电信息丢失保密性保密性好好较差较差成本成本低低高高电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院nCPLD/FPGA设计流程设计流程设计输入设计输入原理图原理图/HDL文本文本综合综合布局布线布局布线(CPLD/FPGA适配适配)CPLD/FPGA编程下载编程下载功能仿真功能仿真时序仿真时序仿真硬件测试硬件测试电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第三章 VHDL基本概念基本概念 硬件描述语言概述 VHDL程序的实体和结构体 VHDL程序的库和程序包 VHDL程序的配置VHDL基本概念基本概念电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院VerilogHDL与与VHDL的比较的比较 一般的硬件描述语言可在三个层次上进行电路描述,一般的硬件描述语言可在三个层次上进行电路描述,其层次由高到低依次可分为其层次由高到低依次可分为行为级、行为级、RTLRTL级和门电路级级和门电路级。VHDLVHDL语言通常更适合行为级和语言通常更适合行为级和RTLRTL级的描述级的描述;VerilogHDLVerilogHDL通常只适合通常只适合RTLRTL级和门电路级的描述级和门电路级的描述。 因此与因此与VerilogHDLVerilogHDL相比,相比,VHDLVHDL是一种高级描述语言,是一种高级描述语言,适用于电路高级建模,最适合描述电路的行为,即描述电适用于电路高级建模,最适合描述电路的行为,即描述电路的功能,但它几乎不能直接控制门电路,即控制电路的路的功能,但它几乎不能直接控制门电路,即控制电路的资源;资源;VerilogHDLVerilogHDL则是一种低级的描述语言,最适合于描则是一种低级的描述语言,最适合于描述门级电路,易于控制电路资源。述门级电路,易于控制电路资源。硬件描述语言概述电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院VHDL语言的程序结构语言的程序结构一般结构一般结构 VHDL VHDL程序结构的一个显著特点就是,任何一个完整的设程序结构的一个显著特点就是,任何一个完整的设计项目计项目( (或称为设计实体,简称实体或称为设计实体,简称实体) )都可以分为两部分。都可以分为两部分。 第一部分主要用于描述电路的第一部分主要用于描述电路的“外部端口外部端口”,包括器件,包括器件名称、端口的名称、数据类型等,我们把它称为名称、端口的名称、数据类型等,我们把它称为“实体说明实体说明”; 第二部分主要用于描述电路的第二部分主要用于描述电路的“内部结构、功能及其实内部结构、功能及其实现的算法现的算法”,我们把它称为,我们把它称为“结构体结构体”。 以上两部分是一个以上两部分是一个VHDLVHDL程序必备的两部分,缺一不可。程序必备的两部分,缺一不可。当一个设计实体的内、外两部分都设计完成后,其他设计实当一个设计实体的内、外两部分都设计完成后,其他设计实体就可以像调用普通元件一样直接调用它。体就可以像调用普通元件一样直接调用它。 VHDL语言的程序结构电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 “实实体体说说明明”部部分分给给出出了了器器件件nand2nand2的的外外部部引引脚脚(PORT)(PORT),如如图图所所示示。a a、b b为为输输入入引引脚脚,y y为为输输出出引引脚脚,数数据据类类型型均均为为BITBIT。BITBIT指指的的是是1 1位位二二进进制制数数,只只有有2 2两两种种逻逻辑辑取取值值“0 0”和和“1 1”。 “结结构构体体”部部分分给给出出了了nand2nand2的的内内部部功功能能信信息息。其其中中“NANDNAND”是是实实现现“与与非非”运运算算的的运运算算符符;“=”是是赋赋值值运运算算符符,从从电电路路的的角角度度来来看看就就是是表表示示信信号号的的传传输输,即即将将a a和和b b“与非与非”运算后的结果信号传输给运算后的结果信号传输给y y。 VHDL语言的程序结构电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院实体说明实体说明 实实体体说说明明的的功功能能就就是是对对实实体体与与外外部部电电路路的的接接口口进进行行描描述述,是是实实体体的的表表层层设设计计单单元元,它它规规定定了了实实体体的的输输入入输输出出接接口信号,是实体对外的一个通信界面。口信号,是实体对外的一个通信界面。 实体说明常用的语句结构如下:实体说明常用的语句结构如下: ENTITY ENTITY 实体名实体名 ISIS GENERIC( GENERIC(类属参数说明语句类属参数说明语句);); PORT( PORT(端口说明端口说明);); END END 实体名实体名; ;实体电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院一、一、一、一、类属参数说明语句类属参数说明语句(GENERIC)(GENERIC) 类属参数说明语句必须放在端口说明语句之前,类属类属参数说明语句必须放在端口说明语句之前,类属参数的值可由实体外部提供,它通常用于设定元件内部电参数的值可由实体外部提供,它通常用于设定元件内部电路的结构和规模,设计者可从外面通过重新设定类属参数路的结构和规模,设计者可从外面通过重新设定类属参数的值而容易地改变元件内部电路结构和规模。的值而容易地改变元件内部电路结构和规模。 类属参数说明语句的一般书写格式如下:类属参数说明语句的一般书写格式如下:GENERIC(GENERIC(常数名常数名: :数据类型数据类型 :设定值设定值 ; 常数名常数名: :数据类型数据类型 :设定值设定值););其其中中的的常常数数名名由由设设计计者者定定义义,数数据据类类型型通通常常取取INTEGER(INTEGER(整整数数) )或或TIMETIME等等类类型型,设设定定值值即即为为常常数数名名所所代代表表的的值值。但但需需注注意,综合器只支持整数数据类型。意,综合器只支持整数数据类型。实体电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院二、端口说明二、端口说明二、端口说明二、端口说明(PORT)(PORT)(PORT)(PORT) 端端口口说说明明对对设设计计实实体体与与外外部部电电路路的的接接口口通通道道进进行行了了说说明明,包包括括对对每每一一接接口口的的输输入入输输出出模模式式和和数数据据类类型型进进行行了了定定义。义。端口说明的一般书写格式如下:端口说明的一般书写格式如下:PORT(PORT(端口名端口名,端口名端口名:端口模式端口模式 数据类型数据类型; ; 端口名端口名,端口名端口名:端口模式端口模式 数据类型数据类型););实体电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院一、一、一、一、结构体的一般书写格式结构体的一般书写格式 ARCHITECTURE ARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 说明语句说明语句 BEGIN BEGIN 功能描述语句功能描述语句 END END 结构体名;结构体名; 在书写格式上需注意,结构体中在书写格式上需注意,结构体中“实体名实体名”必须与实必须与实体说明中的体说明中的“实体名实体名”相一致,而相一致,而“结构体名结构体名”可由设计可由设计者自己选择,但当一个实体具有多个结构体时,各结构体者自己选择,但当一个实体具有多个结构体时,各结构体名不可重复。说明语句必须放在关键词名不可重复。说明语句必须放在关键词“ARCHITECTUREARCHITECTURE”和和“BEGINBEGIN”之间,结构体必须以之间,结构体必须以“END END 结构体名结构体名; ;”作为作为结束句。结束句。 结构体结构体电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院一、一、一、一、库库 (LIBRARY) 库是经编译后数据的集合,它可以是预先定义好的库是经编译后数据的集合,它可以是预先定义好的数据类型,也可以是已编译过的设计单元数据类型,也可以是已编译过的设计单元( (包括实体说明、包括实体说明、结构体、程序包等结构体、程序包等) )。因此可以。因此可以把库看成是用于存放预先把库看成是用于存放预先完成的数据类型和源设计单元的仓库完成的数据类型和源设计单元的仓库。如果在一项。如果在一项VHDLVHDL设计中设计中要用到库中的信息,就必须在这项设计中预先打要用到库中的信息,就必须在这项设计中预先打开这个库开这个库。在综合过程中,每当综合器遇到库语言,就。在综合过程中,每当综合器遇到库语言,就可将库指定的源文件读入,并参与综合。可将库指定的源文件读入,并参与综合。库的语句书写格式如下:库的语句书写格式如下: LIBRARY LIBRARY 库名;库名; VHDL的库的库电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院二、二、二、二、程序包程序包 在在实实体体中中定定义义的的各各种种数数据据类类型型、数数据据对对象象等等信信息息只只能能局局限限在在该该实实体体内内调调用用,其其他他实实体体是是不不可可用用的的。为为了了使使这这些些信信息息能能够够被被其其他他设设计计实实体体所所使使用用,需需要要把把这这些些信信息息收收集集在在一一个个VHDLVHDL程程序序包包中中并并入入库库,这这些些信信息息就就成成为为公公共共信信息息,其其他他设设计计实体就可以使用这些公共信息。实体就可以使用这些公共信息。 程程序序包包一一般般由由程程序序包包首首和和程程序序包包体体两两部部分分组组成成。其其语语句句书写格式如下。书写格式如下。 -程序包首程序包首 PACKAGE PACKAGE 程序包名程序包名 ISIS 说明语句说明语句 END END 程序包名程序包名; ;程序包程序包电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院库库 名名程序包名程序包名包中预定义的内容包中预定义的内容STDSTDSTANDARDSTANDARDVHDLVHDL类型,如类型,如BIT,BIT_VECTORBIT,BIT_VECTORIEEEIEEESTD_LOGIC_1164STD_LOGIC_1164定义了定义了STD_LOGICSTD_LOGIC,STD_LOGIC_VECTORSTD_LOGIC_VECTOR等数据类型等数据类型IEEEIEEESTD_LOGIC_UNSIGNEDSTD_LOGIC_UNSIGNED定义了基于定义了基于STD_LOGICSTD_LOGIC与与STD_LOGIC_VECTORSTD_LOGIC_VECTOR类型上的无类型上的无符号的算术运算符号的算术运算IEEEIEEESTD_LOGIC_SIGNEDSTD_LOGIC_SIGNED定义了基于定义了基于STD_LOGICSTD_LOGIC与与STD_LOGIC_VECTORSTD_LOGIC_VECTOR类型上的有类型上的有符号的算术运算符号的算术运算IEEEIEEESTD_LOGIC_ARITHSTD_LOGIC_ARITH定义了有符号与无符号类型,定义了有符号与无符号类型,及基于这些类型上的算术运算及基于这些类型上的算术运算VHDL标准程序包标准程序包电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院配置配置配置配置 在一般的在一般的VHDL程序设计中,元器件的结构体与该元程序设计中,元器件的结构体与该元器件同名的实体相连接,配置可以把特定的结构体关联到器件同名的实体相连接,配置可以把特定的结构体关联到(指定给指定给)一个确定的实体。一个确定的实体。 VHDL提供配置语句用于描述各种设计实体和元器件提供配置语句用于描述各种设计实体和元器件之间连接关系,以及设计实体和结构体之间的连接关系。之间连接关系,以及设计实体和结构体之间的连接关系。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第四章 VHDL词法基础词法基础 VHDL文字规则 VHDL数据类型 VHDL操作符VHDL数据对象VHDL词法基础词法基础电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院VHDL文字规则文字规则一、标识符一、标识符 与其他高级编程语言一样,与其他高级编程语言一样,VHDL中的标识符是一种中的标识符是一种用来对用来对VHDL中的语法单位进行标识的符号,目的是为了中的语法单位进行标识的符号,目的是为了区分不同的语法单位。区分不同的语法单位。 VHDL有两个版本,习惯上将有两个版本,习惯上将VHDL87标准中的标识标准中的标识符称为短标识符,将符称为短标识符,将VHDL93标准中的标识符称为扩展标标准中的标识符称为扩展标识符。识符。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 VHDL VHDL常用的数据类型可以分成常用的数据类型可以分成4 4类:标量型、符合型、类:标量型、符合型、存取型和文件型。这些数据类型又可分成存取型和文件型。这些数据类型又可分成预定义数据类预定义数据类型型和和自定义数据类型自定义数据类型。 一、一、一、一、预定义数据类型预定义数据类型 VHDL数据类型数据类型VHDL VHDL VHDL VHDL 数据类型数据类型 VHDL VHDL常用的预定义数据类型包括整数、实数、位、常用的预定义数据类型包括整数、实数、位、位矢量、布尔量、字符、字符串、时间、错误等级、大位矢量、布尔量、字符、字符串、时间、错误等级、大于等于零的整数、正整数等十种。于等于零的整数、正整数等十种。 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院二、二、二、二、自定义数据类型自定义数据类型 1 1枚举类型枚举类型(ENUMERATED TYPES)(ENUMERATED TYPES)。枚举类型定义的书写格。枚举类型定义的书写格式如下:式如下: 使用枚举类型可使用枚举类型可用字符来代替数字用字符来代替数字,简化了逻辑电路中简化了逻辑电路中的状态表示的状态表示。例如,某一控制器有六个状态,则该控制器可。例如,某一控制器有六个状态,则该控制器可定义一个名为定义一个名为statesstates的枚举数据类型:的枚举数据类型: TYPE states IS(st0,st1,st2,st3,st4,st5);TYPE states IS(st0,st1,st2,st3,st4,st5); 在结构体的在结构体的“说明语句说明语句”部分定义了此类数据类型后,部分定义了此类数据类型后,在该结构体中就可以直接使用了。如在该结构体中就可以直接使用了。如 SIGNAL current_stat,next_stat:states;SIGNAL current_stat,next_stat:states;TYPE TYPE 数据类型名数据类型名 IS(IS(元素元素1,1,元素元素2,2,););电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 操作符之间有优先级别操作符之间有优先级别。当一条。当一条VHDLVHDL语句中含有多个操作语句中含有多个操作符时,需要使用括号将这些操作符分组,优先级别高的操作符时,需要使用括号将这些操作符分组,优先级别高的操作符首先被执行。所以在编程时应符首先被执行。所以在编程时应注意括号的正确使用注意括号的正确使用。操作符操作符 优先级优先级NOTNOT,ABSABS,*最高优先级最高优先级最低优先级最低优先级* *,/ /,MODMOD,REMREM+(+(正号正号) ),-(-(负号负号) )+ +,- -,& &SLLSLL,SLASLA,SRLSRL,SRASRA,ROLROL,RORROR= =,/=/=, ,= ,=ANDAND,OROR,NANDNAND,NORNOR,XORXOR,XNORXNOR电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院数据对象数据对象 在逻辑综合中,在逻辑综合中,VHDLVHDL常用的数据对象为信号、变量和常常用的数据对象为信号、变量和常量。这三类数据对象通常都具有一定的物理,量。这三类数据对象通常都具有一定的物理,信号对应信号对应地代地代表物理设计中表物理设计中某一条硬件连接线某一条硬件连接线;常数对应常数对应地代表数字电路地代表数字电路中的中的电源和地电源和地等;等;变量变量对应的关系不太直接,通常对应的关系不太直接,通常只代表暂只代表暂存某些值的载体存某些值的载体。 数据对象含 义应用场合信号信号说明全局量实体、结构体、程序包变量变量说明局部量进程、函数、过程常数常数说明全局量以上场合均可存在电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第五章 VHDL基本语句基本语句 VHDL的顺序语句 VHDL的并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院VHDLVHDLVHDLVHDL的顺序语句的顺序语句的顺序语句的顺序语句 顺顺序序语语句句是是VHDLVHDL程程序序设设计计中中很很重重要要的的语语句句系系列列之之一一,它它能能够够从从多多个个侧侧面面完完整整地地描描述述数数字字系系统统的的硬硬件件结结构构和和基基本本逻逻辑辑功能。功能。 顺顺序序语语句句与与传传统统软软件件编编程程语语言言中中的的语语句句执执行行方方式式十十分分相相似似。所所谓谓的的顺顺序序,主主要要指指的的是是语语句句的的执执行行( (指指仿仿真真执执行行) )顺顺序序与与它它们们书书写写顺顺序序基基本本一一致致。但但应应注注意意的的是是,这这里里的的顺顺序序是是从从仿仿真真软软件件的的运运行行或或顺顺应应VHDLVHDL语语法法的的编编程程思思路路而而言言的的,其其相相应应的硬件逻辑工作方式未必如此的硬件逻辑工作方式未必如此 。 顺顺序序语语句句只只能能出出现现在在进进程程(PROCESS)(PROCESS)中中,而而进进程程本本身身属属于于并并行行语语句句,这这就就是是说说在在同同一一设设计计实实体体中中,所所有有的的进进程程都都是是并并行执行的,而每一个进程内部的语句是顺序执行的行执行的,而每一个进程内部的语句是顺序执行的。 VHDL顺序语句顺序语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院1 1 1 1赋值语句赋值语句赋值语句赋值语句 顺顺序序语语句句中中的的赋赋值值语语句句与与并并行行语语句句中中的的赋赋值值语语句句功功能能相相似似,它它们们都都可可用用来来对对某某一一赋赋值值目目标标进进行行赋赋值值。但但二二者者是是有有区区别别的的,并并行行赋赋值值语语句句的的赋赋值值目目标标只只能能是是信信号号(SIGNAL)(SIGNAL),而而顺顺序序赋赋值值语语句句不不但但可可对对信信号号赋赋值值,也也可可以以对对变变量量(VARIABLE)(VARIABLE)进进行赋值。行赋值。 顺序赋值语句的书写格式有如下两种:顺序赋值语句的书写格式有如下两种: 对变量赋值时,其语句格式为对变量赋值时,其语句格式为 变量赋值目标变量赋值目标:=:=赋值源赋值源; ; 对信号赋值时,其语句格式为对信号赋值时,其语句格式为 信号赋值目标信号赋值目标=顺序语句顺序语句; ; WHEN WHEN 选择值选择值 =顺序语句顺序语句; ; END CASE; END CASE; 语句执行时,首先计算语句执行时,首先计算“表达式表达式”的值,然后执行与的值,然后执行与“表达式表达式”值相同的值相同的“选择值选择值”后的后的“顺序语句顺序语句”,最后,最后“END END CASECASE”。这里要注意,。这里要注意,“=”不是操作符不是操作符,它只相当于,它只相当于“THENTHEN”的作用。从这一点上来说,的作用。从这一点上来说,CASECASE语句和并行选择信语句和并行选择信号赋值语句的功能相当。号赋值语句的功能相当。 VHDL顺序语句顺序语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院4 4 4 4LOOPLOOPLOOPLOOP语句语句语句语句 LOOPLOOP语句就是循环语句,它可以使所包含的一组顺语句就是循环语句,它可以使所包含的一组顺序语句被循环执行。序语句被循环执行。 标号标号:FOR :FOR 循环变量循环变量 IN IN 循环范围循环范围 LOOPLOOP 顺序语句顺序语句; ; END LOOP END LOOP 标号标号; 常用的书写格式如下:常用的书写格式如下: “循环变量循环变量”是一个是一个临时变量临时变量,属于,属于LOOPLOOP语句的局部变语句的局部变量,它由量,它由LOOPLOOP语句自动定义,不必事先定义。该变量只能作语句自动定义,不必事先定义。该变量只能作为赋值源,不能被赋值。使用时应注意,在为赋值源,不能被赋值。使用时应注意,在LOOPLOOP语句范围内语句范围内不要再使用其他与此循环变量同名的标识符。不要再使用其他与此循环变量同名的标识符。 VHDL顺序语句顺序语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院7 7 7 7子程序调用语句子程序调用语句子程序调用语句子程序调用语句 VHDL VHDL VHDL VHDL程序可以应用子程序更有效的完成重复性工作。程序可以应用子程序更有效的完成重复性工作。程序可以应用子程序更有效的完成重复性工作。程序可以应用子程序更有效的完成重复性工作。子程序模块是利用顺序语句定义和完成算法的,但它不能子程序模块是利用顺序语句定义和完成算法的,但它不能子程序模块是利用顺序语句定义和完成算法的,但它不能子程序模块是利用顺序语句定义和完成算法的,但它不能像进程那样从本结构体的其他块或进程结构中读取信号值像进程那样从本结构体的其他块或进程结构中读取信号值像进程那样从本结构体的其他块或进程结构中读取信号值像进程那样从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序界面端口进或向信号赋值,只能通过子程序调用与子程序界面端口进或向信号赋值,只能通过子程序调用与子程序界面端口进或向信号赋值,只能通过子程序调用与子程序界面端口进行通信。行通信。行通信。行通信。 VHDL顺序语句顺序语句 子程序被调用时,首先要进行初始化,执行处理功能子程序被调用时,首先要进行初始化,执行处理功能子程序被调用时,首先要进行初始化,执行处理功能子程序被调用时,首先要进行初始化,执行处理功能后,将处理结果传递给主程序。子程序内部的值不能保持,后,将处理结果传递给主程序。子程序内部的值不能保持,后,将处理结果传递给主程序。子程序内部的值不能保持,后,将处理结果传递给主程序。子程序内部的值不能保持,子程序返回后才能被再次调用并初始化。子程序返回后才能被再次调用并初始化。子程序返回后才能被再次调用并初始化。子程序返回后才能被再次调用并初始化。子程序有两种类型:子程序有两种类型:子程序有两种类型:子程序有两种类型:过程过程过程过程和和和和函数函数函数函数。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院子程序调用子程序调用子程序调用子程序调用过程名过程名(参数名参数名=表达式表达式 , 参数名参数名=表达式表达式); ); VHDL顺序语句顺序语句(1)(1)(1)(1)过程调用语句书写格式为:过程调用语句书写格式为:过程调用语句书写格式为:过程调用语句书写格式为:(2)(2)(2)(2)函数调用语句书写格式为:函数调用语句书写格式为:函数调用语句书写格式为:函数调用语句书写格式为:函数名函数名(参数名参数名=表达式表达式 , 参数名参数名=表达式表达式); ); 与过程调用不同之处在于调用函数将返回一个指定类型与过程调用不同之处在于调用函数将返回一个指定类型的值。的值。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院VHDLVHDLVHDLVHDL的并行语句的并行语句的并行语句的并行语句 并行语句结构是最具并行语句结构是最具VHDLVHDL特色的,是与一般软件程序最特色的,是与一般软件程序最大的区别所在。在大的区别所在。在VHDLVHDL中,并行语句有多种语句格式,中,并行语句有多种语句格式,各种各种并行语句的执行都是同步进行的并行语句的执行都是同步进行的,或者说是并行运行的,其,或者说是并行运行的,其执行的方式与书写的顺序无关执行的方式与书写的顺序无关。 这种并行性是由硬件本身的并行性决定的,即一旦电路这种并行性是由硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。接通电源,它的各部分就会按照事先设计好的方案同时工作。 并行语句在执行时,各并行语句之间可以有信息来往,并行语句在执行时,各并行语句之间可以有信息来往,也可以互为独立、互不相关。也可以互为独立、互不相关。 另外,另外,每一并行语句内部的语句可以有两种不同的运行每一并行语句内部的语句可以有两种不同的运行方式,即并行执行方式方式,即并行执行方式( (如块语句如块语句) )和顺序执行方式和顺序执行方式( (如进程语如进程语句句) )。VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院进程语句的书写格式为:进程语句的书写格式为: 标号标号:PROCESS(:PROCESS(信号信号1,1,信号信号2,2,) ) 进程说明语句进程说明语句 BEGIN BEGIN 顺序语句顺序语句 END PROCESS END PROCESS 标号标号; (1) (1)标号标号。标号是进程的名称,是为了区别同一结构体中的。标号是进程的名称,是为了区别同一结构体中的不同进程而设置的,但它并不是必需的。不同进程而设置的,但它并不是必需的。VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 (3) (3)进程说明语句。进程说明语句用于对该进程内所用到的进程说明语句。进程说明语句用于对该进程内所用到的“局部数据局部数据”进行定义进行定义( (如常数、变量、信号等如常数、变量、信号等) ),这里所说,这里所说的的“局部数据局部数据”就是该数据就是该数据只对本进程有效只对本进程有效,只能用于本进,只能用于本进程内,不可用于其他进程或并行语句中。若想把程内,不可用于其他进程或并行语句中。若想把“局部数据局部数据”带出进程,则必须把该数据传递给带出进程,则必须把该数据传递给“全局信号全局信号”( (在结构体在结构体说明语句或实体说明部分所定义的信号说明语句或实体说明部分所定义的信号) ),由,由“全局信号全局信号”带带出该进程并可为其他进程或并行语句所使用。出该进程并可为其他进程或并行语句所使用。 (2) (2)敏感信号敏感信号。小括号中的信号是进程的敏感信号,进程的。小括号中的信号是进程的敏感信号,进程的敏感信号可以由一个或多个组成,它是进程内所用到的一些敏感信号可以由一个或多个组成,它是进程内所用到的一些信号。信号。当任何一个敏感信号发生变化时,该进程才能被执行当任何一个敏感信号发生变化时,该进程才能被执行( (或激活或激活) ),其内部的顺序语句才能被执行一遍,其内部的顺序语句才能被执行一遍,当进程最后当进程最后一条语句执行完成后,将返回到进程的第一条语句,以等待一条语句执行完成后,将返回到进程的第一条语句,以等待下一次敏感信号的变化。下一次敏感信号的变化。VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院3 3、并行信号赋值语句并行信号赋值语句 并行信号赋值语句有三种形式:简单信号赋值语句、选并行信号赋值语句有三种形式:简单信号赋值语句、选择信号赋值语句和条件信号赋值语句。这择信号赋值语句和条件信号赋值语句。这三种信号赋值语句三种信号赋值语句的共同特点是赋值目标必须都是信号的共同特点是赋值目标必须都是信号,所有赋值语句与其他,所有赋值语句与其他并行语句一样,在结构体中的执行是同时发生的。并行语句一样,在结构体中的执行是同时发生的。 (1)(1)简单信号赋值语句简单信号赋值语句 简单信号赋值语句是并行语句结构的最基本单元,它简单信号赋值语句是并行语句结构的最基本单元,它的语句书写格式如下:的语句书写格式如下: 赋值目标赋值目标=表达式;表达式; 应用该赋值语句时一定要注意,赋值目标的数据对象应用该赋值语句时一定要注意,赋值目标的数据对象必须是信号,赋值必须是信号,赋值运算符运算符“=”两边的数据类型必须一致两边的数据类型必须一致。VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院(2)(2)选择信号赋值语句选择信号赋值语句 选择信号赋值语句的书写格式如下:选择信号赋值语句的书写格式如下: WITH WITH 选择表达式选择表达式 SELECTSELECT 赋值目标信号赋值目标信号=表达式表达式 WHEN WHEN 选择值选择值, , 表达式表达式 WHEN WHEN 选择值选择值, , 表达式表达式 WHEN WHEN 选择值选择值; ; 当当“选择表达式选择表达式”的值发生变化时,将启动此语句对的值发生变化时,将启动此语句对各子句的各子句的“选择值选择值”进行测试对比。当发现有满足条件的子进行测试对比。当发现有满足条件的子句时,就将此子句中的句时,就将此子句中的“表达式表达式”值赋给值赋给“赋值目标信号赋值目标信号”。 每条子句应以每条子句应以“, ,”结束,最后一条子句以结束,最后一条子句以“; ;”结束。结束。 “选择值选择值”不能有重复,且不能有重复,且“选择值选择值”应包含应包含“选择选择表达式表达式”的所有取值,不允许存在选择值涵盖不全的情况。的所有取值,不允许存在选择值涵盖不全的情况。 VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院(3)(3)条件信号赋值语句条件信号赋值语句 条件信号赋值语句书写格式如下:条件信号赋值语句书写格式如下: 目标信号目标信号=连接端口名连接端口名, ,););VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第一部分的第一部分的“元件声明元件声明”,是对预先设计好的元件的定义语,是对预先设计好的元件的定义语句,相当于对一个已有的设计实体进行封装,使其只留出对外句,相当于对一个已有的设计实体进行封装,使其只留出对外的接口界面,也就像一个集成芯片只对外留出几个引脚一样。的接口界面,也就像一个集成芯片只对外留出几个引脚一样。“类属表类属表”可定义一些参数;可定义一些参数;“端口信息端口信息”可列出已有元件端可列出已有元件端口的名称、模式、数据类型。该部分可放在结构体中口的名称、模式、数据类型。该部分可放在结构体中“语句说语句说明部分明部分”。 第二部分的第二部分的“元件例化元件例化”,用于说明,用于说明当前设计实体和被调用当前设计实体和被调用元件的连接关系元件的连接关系。其中,。其中,“例化名例化名”是必须的,它类似于当前是必须的,它类似于当前电路系统板上的一个插座名;而电路系统板上的一个插座名;而“元件名元件名”则是已定义好的、则是已定义好的、准备在此插座上插入的元件准备在此插座上插入的元件( (或芯片或芯片) )名称;名称;“端口名端口名”是已有是已有的元件的元件( (或芯片或芯片) )的端口名称;的端口名称;“=”是关联是关联( (连接连接) )符号;符号;“连连接端口名接端口名”则是当前系统与准备接入的元件对应端口相连的通则是当前系统与准备接入的元件对应端口相连的通信端口,相当于插座上各插针的引脚名。信端口,相当于插座上各插针的引脚名。 VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院已有元件的已有元件的“端口名端口名”与当前系统的与当前系统的“连接端口名连接端口名”的关联的关联描述有两种方式描述有两种方式。 一种是一种是上述方式上述方式,在这种方式下,已有元件的,在这种方式下,已有元件的“端口名端口名”、关联符号关联符号“=”都是必须存在的,都是必须存在的,“端口名端口名=连接端口名连接端口名”在在PORT MAPPORT MAP语句中的位置可以是任意的;语句中的位置可以是任意的; 另一种是另一种是位置关联方式位置关联方式,在这种方式下,在这种方式下,“端口名端口名”和和“=”都可省去,在都可省去,在PORT MAPPORT MAP子句中只列出当前系统中的子句中只列出当前系统中的“连接端口名连接端口名”即可,但要求即可,但要求“连接端口名连接端口名”的排列顺序与的排列顺序与“元元件声明件声明”中已有元件中已有元件“端口信息端口信息”中所列的端口名排列顺序相中所列的端口名排列顺序相同,书写格式为同,书写格式为 例化名例化名: :元件名元件名 PORT MAP(PORT MAP(连接端口名连接端口名1, 1, 连接端口名连接端口名2,2,););VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院5 5生成语句生成语句(GENERATE)(GENERATE) 生成语句具有生成语句具有复制作用复制作用,它可以生成与已有的某个元件或,它可以生成与已有的某个元件或设计单元电路完全相同的一组并行元件或设计单元电路结构。设计单元电路完全相同的一组并行元件或设计单元电路结构。 生成语句的书写格式有以下两种形式:生成语句的书写格式有以下两种形式: 标号标号:FOR :FOR 循环变量循环变量 IN IN 取值范围取值范围 GENERATEGENERATE 说明语句说明语句; 并行语句并行语句; ; END GENERATE END GENERATE 标号标号; 标号标号:IF :IF 条件条件 GENERATEGENERATE 说明语句说明语句; 并行语句并行语句; ; END GENERATE END GENERATE 标号标号; VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院第六章 VHDL程序设计实践程序设计实践 组合逻辑设计 时序逻辑设计电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院组合逻辑设计组合逻辑设计基本逻辑门基本逻辑门优先编码器优先编码器译码器译码器数据分配器数据分配器比较器比较器加加/减法器减法器乘法器乘法器只读存储器只读存储器电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院时序逻辑设计时序逻辑设计n概述概述:n时时序序逻逻辑辑电电路路又又称称为为同同步步电电路路,基基础础电电路路包包括括触触发发器器、寄存器、计数器。寄存器、计数器。n由数字电路知道,任何时序电路都以时钟为驱动信号,由数字电路知道,任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时,其状态才发生时序电路只是在时钟信号的边沿到来时,其状态才发生改变。因此,时钟信号是时序电路程序的执行条件,时改变。因此,时钟信号是时序电路程序的执行条件,时钟信号是时序电路的同步信号。钟信号是时序电路的同步信号。 时序逻辑设计时序逻辑设计电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院时钟的描述时钟的描述n上升沿到来的条件可写为:上升沿到来的条件可写为:nIF clk =1 AND clk LAST_VAULE = 0 AND clk EVENT; n时钟信号下降沿的属性描述为:时钟信号下降沿的属性描述为:nIF clk = 0 AND clk LAST_VALUE = 1 AND clk EVENT; n比比较较上上升升沿沿,下下降降沿沿的的描描述述方方法法,可可以以归归纳纳出出时时钟钟边边沿沿属属性性描描述述的的一一般行式为:般行式为:nIF clock_signal = current_value ANDn Clock_signal LAST_VALUE ANDn Clock_signal EVENT时钟的描述时钟的描述电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院时钟信号作为触发信号时钟信号作为触发信号(1)(1)n时序电路中进程敏感信号是时钟信号n在在时时序序电电路路描描述述中中,时时钟钟信信号号作作为为敏敏感感信信号号,显显式式的的出出现现在在PROCESS语句后的括号中。语句后的括号中。nPRCESS(clock_signal)n时时序序信信号号边边沿沿的的到到来来将将作作为为时时序序电电路路语语句句执执行行的的条条件件来来启启动动进进程程的执行。的执行。n这种以时钟为敏感信号的进程描述方法为:这种以时钟为敏感信号的进程描述方法为:时钟信号作为触发信号时钟信号作为触发信号电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院时钟信号作为触发信号时钟信号作为触发信号(2)(2)nPROCESS (clock_signal)n BEGINn IF(clock_edge_condition)THENn Signal_out = signal_in;n 其他时序语句其他时序语句n END IF;n END PROCESS;nclock信号作为进程的敏感信号,每当信号作为进程的敏感信号,每当clock发生变化,该进程就发生变化,该进程就被触发、启动,而时钟边沿的条件得到满足时,才真正执行时序被触发、启动,而时钟边沿的条件得到满足时,才真正执行时序电路所对应的语句。电路所对应的语句。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院时钟信号作为同步信号时钟信号作为同步信号n在在时时序序电电路路的的进进程程描描述述中中,不不用用敏敏感感信信号号方方式式,而而用用WAIT ON语语句句来来控控制制程程序序的的执执行行。在在这这种种设设计计方方式式中中,进进程程通通常常停停留留在在WAIT ON语语句句上上,这这个个点点也也称称为为进进程程的的同同步步点点,只只有有在在时时钟钟信信号号到到来来且且满满足足边边沿沿条条件件时时,其其余余的的语语句句才才能能执执行行。WAIT ON语语句句等等待时钟信号的设计方法为:待时钟信号的设计方法为:nPROCESSnBEGINnWAIT ON(clock_signal)UNTIL(clock_edge_condition);n Signal_out = signal_in;n - 其他时序语句其他时序语句n END PROCESS;时钟信号作为同步信号时钟信号作为同步信号电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院复位电路复位电路n时时序序电电路路的的初初始始状状态态应应由由复复位位信信号号来来设设置置。根根据据复复位位信信号号对对时时序序电电路路复复位位的的操操作作不不同同,使使其其可可以以分分为为同同步步复复位位和和异异步复位。步复位。n所谓异步复位,就是当复位信号有效时,时序电路立即复所谓异步复位,就是当复位信号有效时,时序电路立即复位,与时钟信号无关。位,与时钟信号无关。 复位电路复位电路电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院时序逻辑设计时序逻辑设计触发器触发器锁存器锁存器寄存器寄存器计数器计数器分频器分频器电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院有限状态机设计有限状态机设计 在数字电路系统中,有限状态机是一种十分重要的时序在数字电路系统中,有限状态机是一种十分重要的时序逻辑电路模块,它对数字系统的设计具有十分重要的作用。逻辑电路模块,它对数字系统的设计具有十分重要的作用。 根据有限状态机是否使用输入信号,经常将其划分为根据有限状态机是否使用输入信号,经常将其划分为Moore型有限状态机型有限状态机和和Mealy型有限状态机型有限状态机两种类型。两种类型。电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院Moore型有限状态机型有限状态机 Moore型有限状态机的输出信号仅与当前状态有关,即型有限状态机的输出信号仅与当前状态有关,即可以把可以把Moore型有限状态机的输出看成是当前状态的函数。型有限状态机的输出看成是当前状态的函数。Moore型有限状态机结构框图型有限状态机结构框图电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 Mealy型有限状态机的输出信号不仅与当前状态有关,型有限状态机的输出信号不仅与当前状态有关,而且还与所有的输入信号有关,即可以把而且还与所有的输入信号有关,即可以把Mealy型有限状态型有限状态机的输出看成是当前状态和所有输入信号的函数。机的输出看成是当前状态和所有输入信号的函数。Mealy型有限状态机型有限状态机Mealy型有限状态机结构框图型有限状态机结构框图电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院数字系统设计实例数字系统设计实例数字频率计数字频率计数字钟控制器数字钟控制器 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 【例例例例3-43-43-43-4】试用试用试用试用VHDLVHDLVHDLVHDL语言描述下图所示电路。语言描述下图所示电路。语言描述下图所示电路。语言描述下图所示电路。 VHDL语言的程序结构电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院【例【例4-14-1】 SIGNAL a,b,c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL a,b,c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d,e,f,g: STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL d,e,f,g: STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL h,i,j,k: STD_LOGIC;SIGNAL h,i,j,k: STD_LOGIC;SIGNAL l,m,n,o,p:BOOLEAN;SIGNAL l,m,n,o,p:BOOLEAN;BEGINBEGIN a=b AND c;-a a=b AND c;-a、b b、c c均为均为4 4位长的位矢量位长的位矢量 d=e OR f OR g;-d=e OR f OR g;-两个操作符两个操作符OROR相同,不需括号相同,不需括号 h=(i NAND j)NAND k; -NANDh=(i NAND j)NAND k; -NAND运算符需加括号运算符需加括号 l=(m XOR n)AND (o XOR p); -l=(m XOR n)AND (o XOR p); -操作符不同,必须加括号操作符不同,必须加括号 h=i AND j OR k;-h=i AND j OR k;-,未加括号,表达错误,未加括号,表达错误 a=b AND e;-a=b AND e;-操作数操作数b b与与e e的位矢量长度不一致,表达错误的位矢量长度不一致,表达错误 h=i OR l;h=i OR l; -i -i和和l l的数据类型不同,不能直接运算,表达错误的数据类型不同,不能直接运算,表达错误 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 6 6虽然使用变量可增加仿真的速度,但变量的引入有可虽然使用变量可增加仿真的速度,但变量的引入有可能影响设计的功能,因此在能影响设计的功能,因此在对硬件描述时尽量采用信号对硬件描述时尽量采用信号。 下面通过一个例子进一步说明信号和变量的区别。下面通过一个例子进一步说明信号和变量的区别。 【例【例4-54-5】 LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY exam IS ENTITY exam IS PORT(clk:IN STD_LOGIC; PORT(clk:IN STD_LOGIC; out1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); out1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); out2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); out2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END exam; END exam;电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院ARCHITECTURE beh OF exam ISARCHITECTURE beh OF exam ISSIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);-SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);-定义信号定义信号BEGINBEGIN PROCESS(clk) PROCESS(clk) VARIABLE b:STD_LOGIC_VECTOR(3 DOWNTO 0);- VARIABLE b:STD_LOGIC_VECTOR(3 DOWNTO 0);-定义变量定义变量 BEGINBEGIN IF clk IF clkevent AND clk=event AND clk=1 1 THEN THEN a=a+1; a=a+1; a=a+1; a=a+1; b:=b+1; b:=b+1; b:=b+1; b:=b+1;电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 由由于于变变量量b b的的赋赋值值是是立立即即执执行行的的,因因此此在在每每个个clkclk的的上上升升沿沿,变变量量b b都都要要被被连连加加两两次次1 1;而而信信号号a a的的赋赋值值并并不不是是立立即即发发生生的的,而而须须等等到到进进程程结结束束后后才才根根据据最最后后一一次次的的赋赋值值语语句句代代入入新新的值,因此在每个的值,因此在每个clkclk的上升沿,信号的上升沿,信号a a只加一次只加一次1 1。 END IF; END IF; out1=a; out1=a; out2=b; out2=b; END PROCESS; END PROCESS;END beh;END beh;电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院【例例5-15-1】ENTITY exam ISENTITY exam IS PORT(a,b:IN BIT; PORT(a,b:IN BIT; y:OUT BIT); y:OUT BIT);END exam;END exam;ARCHITECTURE one OF exam ISARCHITECTURE one OF exam ISSIGNAL c:BIT; -SIGNAL c:BIT; -定义全局信号定义全局信号c cBEGINBEGIN PROCESS(a,b) - PROCESS(a,b) -进程进程 VARIABLE d:BIT; -VARIABLE d:BIT; -定义局部变量定义局部变量d d BEGIN BEGIN d:=a NAND b; - d:=a NAND b; -顺序赋值语句顺序赋值语句 c=d; -c=d; -顺序赋值语句顺序赋值语句 END PROCESS; -END PROCESS; -结束进程结束进程 y=c NAND a; -y=c NAND a; -并行赋值语句并行赋值语句END one;END one;VHDL顺序语句顺序语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院【例例5-65-6】用用FOR_LOOPFOR_LOOP语句描述下图的电路。语句描述下图的电路。 ENTITY exam_1 IS ENTITY exam_1 IS PORT(a:IN BIT_VECTOR(0 TO 3); PORT(a:IN BIT_VECTOR(0 TO 3); out1:OUT BIT_VECTOR(0 TO 3); out1:OUT BIT_VECTOR(0 TO 3); END exam_1; END exam_1; “循环范围循环范围”规定循环语句被执行的次数规定循环语句被执行的次数。“循环变量循环变量”从从“循环范围循环范围”的初值开始,每执行完一次的初值开始,每执行完一次“顺序语句顺序语句”后递增后递增1 1,直到达到,直到达到“循环范围循环范围”指定的最大值。指定的最大值。 VHDL顺序语句顺序语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院【例例5-155-15】利用例化语句设计图示的电路。利用例化语句设计图示的电路。 VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 - -首先完成与非门的设计首先完成与非门的设计 LIBRARY IEEE;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL; ENTITY nand2 IS ENTITY nand2 IS PORT(a,b:IN STD_LOGIC; PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC); y:OUT STD_LOGIC); END nand2; END nand2; ARCHITECTURE one OF nand2 IS ARCHITECTURE one OF nand2 IS BEGIN BEGIN y=a NAND b; yc,b=d,y=temp2);U2:nand2 PORT MAP(a=c,b=d,y=temp2); - -按名字关联按名字关联 U3:nand2 PORT MAP(temp1,temp2,y=z);U3:nand2 PORT MAP(temp1,temp2,y=z); - -混合关联混合关联 END behv;END behv;VHDL并行语句并行语句电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 一、设计任务一、设计任务 设计一个七段显示译码器设计一个七段显示译码器sevenvsevenv,驱动,驱动1 1个共阴极数码管。个共阴极数码管。该电路的该电路的8421BDC8421BDC输入为输入为d d,译码后的七段输出为,译码后的七段输出为a-ga-g。 3、七段显示译码器、七段显示译码器 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院比较器比较器 一、设计任务一、设计任务 设计一个数值比较器,对输入的设计一个数值比较器,对输入的2 2个个8 8位二进制数位二进制数d1d1和和d2d2进行比较,比较的结果以输出信号进行比较,比较的结果以输出信号f1(d1d2)f1(d1d2)、f2(d1=d2)f2(d1=d2)、f3(d1d2)f3(d1d2)的有效信号来表示的有效信号来表示( (高电平有效高电平有效) )。 二、算法设计二、算法设计 由于两个比较信号位数较多,为降低设计难度,可借由于两个比较信号位数较多,为降低设计难度,可借助运算操作符,根据比较器的行为进行设计。助运算操作符,根据比较器的行为进行设计。 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 一、设计任务一、设计任务 试设计一个试设计一个BCDBCD码码6060进制计数器。个位输出进制计数器。个位输出0-90-9,十位输,十位输出出0-50-5,均用二进制数表示。其符号见图,其中,均用二进制数表示。其符号见图,其中y03.0y03.0为为个位,个位,y13.0y13.0为十位,为十位,ococ为进位为进位( (高电平有效高电平有效) )。 3、BCD码码60进制计数器进制计数器 二、算法设计二、算法设计 个位计数器的模为个位计数器的模为1010,十位计数器的模为,十位计数器的模为6 6。用。用IFIF语句描语句描述该计数器。述该计数器。 电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clk_div6 IS ENTITY clk_div6 ISPORT(clk: IN STD_LOGIC;PORT(clk: IN STD_LOGIC; clk_div6: OUT STD_LOGIC); clk_div6: OUT STD_LOGIC); END ENTITY clk_div6; END ENTITY clk_div6; 一、设计任务一、设计任务 设计一个分频器,使输出为时钟信号设计一个分频器,使输出为时钟信号CLKCLK的的6 6分频。分频。 分频器设计(分频器设计(2) 二、算法设计二、算法设计 用用IFIF语句描述该分频器语句描述该分频器, ,重点在设定分频条件。重点在设定分频条件。 三、三、VHDLVHDL源程序源程序电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 ARCHITECTURE rtl OF clk_div6 IS ARCHITECTURE rtl OF clk_div6 IS SIGNAL count: STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL count: STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL clk_temp: STD_LOGIC; SIGNAL clk_temp: STD_LOGIC; BEGIN BEGIN PROCESS(clk) PROCESS(clk) BEGIN BEGIN IF(clkevent AND clk=1) THEN IF(clkevent AND clk=1) THEN IF(count=10) THEN IF(count=10) THEN count0); count0); clk_temp=NOT clk_temp; clk_temp=NOT clk_temp; ELSE ELSE count=count+1; count=count+1; END IF; END IF; END IF; END IF; END PROCESS; END PROCESS; clk_div6= clk_temp; clk_div6= clk_temp;END ARCHITECTURE rtl;END ARCHITECTURE rtl;电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院 一、设计任务一、设计任务 某工作过程有两个状态某工作过程有两个状态s0s0和和s1s1。当发生复位时,过程处。当发生复位时,过程处于于s0s0。当控制信号。当控制信号input=1input=1时,每来一个时钟时,每来一个时钟clkclk的上升沿,的上升沿,状态转换一次;否则,保持状态转换一次;否则,保持s1s1状态不变。在状态不变。在s0s0时,电路输出时,电路输出0 0;在;在s1s1时,电路输出时,电路输出1 1。试设计该控制电路。试设计该控制电路。 1 莫尔型状态机莫尔型状态机 二、算法设计二、算法设计 用用IFIF语句和语句和CASECASE语句描述该设计。语句描述该设计。 三、三、VHDLVHDL源程序源程序LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院ENTITY statmach ISENTITY statmach IS PORT(reset,clk,input:IN STD_LOGIC; PORT(reset,clk,input:IN STD_LOGIC; y:OUT STD_LOGIC); y:OUT STD_LOGIC);END statmach;END statmach;ARCHITECTURE beh OF statmach ISARCHITECTURE beh OF statmach ISTYPE STATE_TYPE IS (s0,s1);TYPE STATE_TYPE IS (s0,s1);SIGNAL state:STATE_TYPE;SIGNAL state:STATE_TYPE;BEGINBEGIN PROCESS(clk,reset) PROCESS(clk,reset) BEGIN BEGIN IF reset= IF reset= 0 0 THEN THEN state=s0; statestatestateIF input= WHEN s1=IF input= 1 1 THEN THEN state=s0; state=s0; ELSE ELSE state=s1; state=s1; END IF; END IF; END CASE; END CASE; END IF; END IF; END PROCESS; END PROCESS; y= y= 1 1 WHEN state=s1 ELSE WHEN state=s1 ELSE 0 0; ; END beh; END beh;电子设计自动化电子设计自动化信息与通信工程学院信息与通信工程学院期末考试安排期末考试安排:考试时间:考试时间:5月月31日上午日上午8:00-9:50考试形式:考试形式: 开卷开卷试题构成:试题构成:试卷共五道大题,其中试卷共五道大题,其中填空题填空题10题;题;选择题选择题10题;题;简答题简答题5题;题;程序分析题程序分析题2题;计数器题;计数器 分频器分频器 有有限单片机限单片机 基本语句基本语句程序设计题程序设计题2题。题。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号