《微电子学》PPT课件.ppt
第五章第五章 微电子系统设计微电子系统设计微电子系统设计微电子系统设计就是将算法理论、体系结构、电路物就是将算法理论、体系结构、电路物理实现自上而下的集成到一个芯片上的过程。理实现自上而下的集成到一个芯片上的过程。高级语言的高级语言的行为级描述行为级描述系统仿真系统仿真逻辑综合逻辑综合物理层设计物理层设计(版图设计版图设计)网表提取、仿真网表提取、仿真投片试制投片试制流程:流程:电子系统芯片电子系统芯片微电子系统设计微电子系统设计把电子系统集中到一个芯片,包括软件和硬件把电子系统集中到一个芯片,包括软件和硬件。微电子系统中物理层设计逻辑单元逻辑单元电路单元电路单元双极型集成电路单元和双极型集成电路单元和MOS数字电路单元数字电路单元逻辑电路逻辑电路-完成各种逻辑运算和变换的电路完成各种逻辑运算和变换的电路组成逻辑电路的基本单元是各种组成逻辑电路的基本单元是各种门电路门电路晶体管晶体管-晶体管逻辑电路晶体管逻辑电路(TTL)集成注入逻辑电路集成注入逻辑电路(I2L)发射极耦合逻辑电路发射极耦合逻辑电路(ECL)双极数字电路单元设计双极数字电路单元设计用数字信号完成对数字量进行算术运算和逻辑用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路运算的电路称为数字电路 1、TTL电路:电路:基本单元:基本单元:与非门与非门特点:特点:扇出系数较大扇出系数较大典型电路:典型电路:74系列集成电路(民品)系列集成电路(民品)54系列集成电路(军品)系列集成电路(军品)相同的电路结构、逻辑功能,不同的工作环相同的电路结构、逻辑功能,不同的工作环境温度和电源工作允许的范围。境温度和电源工作允许的范围。2、ECL电路:电路:基本单元:基本单元:或非门、或门或非门、或门特点:特点:速度快、逻辑功能、强扇出能力大速度快、逻辑功能、强扇出能力大典型电路:典型电路:高速和超高速集成电路高速和超高速集成电路缺点:缺点:功耗大、抗干扰能力差功耗大、抗干扰能力差3、I2L电路:电路:基本单元:基本单元:非门非门特点:特点:集成度高、功耗低、成本低集成度高、功耗低、成本低典型电路:典型电路:VLSIVLSI缺点:缺点:速度较低速度较低二、二、MOS数字电路单元设计数字电路单元设计1、NMOS电路:电路:基本单元:基本单元:非门非门特点:特点:功耗低、速度快功耗低、速度快典型电路:典型电路:LSI和和VLSI2、CMOS电路:电路:特点:特点:输入电阻高、功耗低、速度快、抗噪输入电阻高、功耗低、速度快、抗噪 声能力强声能力强第六章第六章 集成电路计算机辅集成电路计算机辅助设计助设计ICCAD就是将由人为主导,根据集成电路就是将由人为主导,根据集成电路的指标要求进行总体设计,借助计算机帮的指标要求进行总体设计,借助计算机帮助人工迅速而准确地完成设计任务。助人工迅速而准确地完成设计任务。ICCAD系统概述系统概述ICCADICCAD系统的发展系统的发展第一代第一代:6060年代末:版图编辑和检查年代末:版图编辑和检查第二代第二代:8080年代初:原理图输入、逻辑模拟年代初:原理图输入、逻辑模拟第第三三代代:从从RTLRTL级级输输入入,到到包包括括行行为为仿仿真真、行行为为综综合、逻辑综合等功能合、逻辑综合等功能流流 行行 的的 CADCAD系系 统统:Cadence,Cadence,Mentor Mentor Graphics,Graphics,Viewlogic,CompassViewlogic,Compass,PandaPanda等等ICCADICCAD系系统统的的理理想想作作用用:实实现现完完全全的的自自动动化化设设计计,设设计出各种各样的电路计出各种各样的电路ICCADICCAD系统的实际作用系统的实际作用设计信息输入设计信息输入:语言输入编辑工具语言输入编辑工具高高层层次次描描述述的的图图形形输输入入工工具具:VHDLVHDL功功能能图图输输入入、逻辑图逻辑图/电路图输入编辑、版图输入编辑电路图输入编辑、版图输入编辑 设计实现设计实现:综合器:综合器 设设计计验验证证:验验证证系系统统(电电路路)功功能能、性性能能要要求求及及设设计规则要求计规则要求 模拟器进行模拟(仿真)分析模拟器进行模拟(仿真)分析 设计规则的检查设计规则的检查 整个设计过程就是把整个设计过程就是把高层次高层次的抽象描述的抽象描述逐级向下逐级向下进行进行综合、验证、实现,直到物理级的低层次描述,即掩综合、验证、实现,直到物理级的低层次描述,即掩膜版图。膜版图。各设计阶段相互联系各设计阶段相互联系,例如,寄存器传输级描述是逻,例如,寄存器传输级描述是逻辑综合的输入,逻辑综合的输出又可以是逻辑模拟和辑综合的输入,逻辑综合的输出又可以是逻辑模拟和自动版图设计的输入,版图设计的结果则是版图验证自动版图设计的输入,版图设计的结果则是版图验证的输入。的输入。ICCADICCAD系统介入了包括系统功能设计、逻辑和电路设系统介入了包括系统功能设计、逻辑和电路设计以及版图设计等在内的集成电路设计的各个环节。计以及版图设计等在内的集成电路设计的各个环节。系统描述与模拟:系统描述与模拟:VHDL语言语言 VHDLVHDL语言出现背景语言出现背景 一一 种种 硬硬 件件 描描 述述 语语 言言(hardware hardware description description languagelanguage),广广义义地地说说,描描述述电电子子实实体体的的语语言言:逻逻辑辑图图,电路图。电路图。大大规规模模电电路路的的出出现现:逻逻辑辑图图、布布尔尔方方程程不不太太适适用用,需需要要在在更更高高层层次次上上描描述述系系统统,出出现现多多种种HDLHDL语语言言,为为便便于于信信息交换和维护,出现工业标准。息交换和维护,出现工业标准。通常指高层次设计阶段描述硬件通常指高层次设计阶段描述硬件HDLHDL语言的特点语言的特点 抽象地进行行为描述抽象地进行行为描述 结构化语言:可以描述电子实体的结构结构化语言:可以描述电子实体的结构 多层次混合描述多层次混合描述 既可被模拟,又可被综合既可被模拟,又可被综合能提供能提供VHDLVHDL模拟器的公司模拟器的公司:CadenceCadence、Mentor Mentor GraphicsGraphics、ViewlogicViewlogic、SynopsysSynopsys等大型等大型EDAEDA公司和公司和CLSICLSI、Model-TechnologyModel-Technology、VantageVantage等专门公司等专门公司VHDL语言语言基本概念基本概念:描述硬件电路,可以抽象地表示电路的:描述硬件电路,可以抽象地表示电路的行为和结构(完成什么功能,怎样组成)行为和结构(完成什么功能,怎样组成)作用作用:对对ICIC设计,支持从系统级到门和器件级的电路描设计,支持从系统级到门和器件级的电路描述,并具有在不同设计层次上的模拟验证机制述,并具有在不同设计层次上的模拟验证机制可作为综合软件的输入语言,支持电路描述由高可作为综合软件的输入语言,支持电路描述由高层向低层的转换层向低层的转换VHDL语言的建模机制语言的建模机制 一个硬件单元在一个硬件单元在VHDLVHDL中看作一个设计实体。中看作一个设计实体。实体外观实体外观实体说明:实体命名,实体与外部环境的接口描述,实体说明:实体命名,实体与外部环境的接口描述,未涉及其内部行为及结构。未涉及其内部行为及结构。实体功能实体功能 在在结构体结构体中实现中实现 结构体:实体的输入结构体:实体的输入-输出关系,实体的结构和行为输出关系,实体的结构和行为描述。描述。对对应应一一个个实实体体说说明明可可以以有有多多个个结结构构体体,不不同同的的实实现现方案。方案。ENTITY count IS -设计实体设计实体countGENERIC(tpd:Time:=10ns);PORT(clock:IN Bit;q1,q0:OUT Bit);END ENTITY count;ARCHITECTURE arch of count IS -count实体的结构体实体的结构体 BEGIN count_up:PROCESS(clock)-进程体进程体count_upVARIABLE count_value:Natural:=0;BEGIN IF clock=1 THEN Count_value:=(count_value+1)MOD 4;q1=bitVal(count_value/2)AFTER tpd;q0 S S S S S S S S S S S S S S S S=0000000;END CASE;END PROCESS;END behave;用用VHDL编辑的七编辑的七段译码器仿真波形段译码器仿真波形VHDL基础基础一个完整的一个完整的VHDLVHDL程序,或者说设计实体,通常要求程序,或者说设计实体,通常要求最低能为最低能为VHDLVHDL综合器所支持,并能作为一个独立综合器所支持,并能作为一个独立的设计单元,即元件的形式而存在的的设计单元,即元件的形式而存在的VHDLVHDL程序。程序。在在VHDLVHDL程序中,通常包含实体(程序中,通常包含实体(ENTITYENTITY)、结构)、结构体(体(ARCHITECTUREARCHITECTURE)、配置()、配置(CONFIGURATIONCONFIGURATION)、)、包集合(包集合(PACKAGEPACKAGE)和库()和库(LIBRARYLIBRARY)5 5个部分。其个部分。其中实体和结构体这两个基本结构是必需的,他们中实体和结构体这两个基本结构是必需的,他们可以构成最简单的可以构成最简单的VHDLVHDL程序。程序。1 1、实体、实体 设计实体是设计实体是VHDLVHDL语言设计的基本单元,简单的语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或一可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的,都是由实体说个数字系统,其结构基本是一致的,都是由实体说明和结构体两部分组成。实体说明是对这个设计实明和结构体两部分组成。实体说明是对这个设计实体与外部电路进行接口的描述,它规定了设计单元体与外部电路进行接口的描述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一的输入输出接口信号或引脚,是设计实体对外的一个通信界面。结构体用于描述此设计实体的逻辑结个通信界面。结构体用于描述此设计实体的逻辑结构和逻辑功能。构和逻辑功能。实体语句结构如下:实体语句结构如下:ENTITY 实体名实体名 IS GENERIC(类属表);(类属表);PORT(端口表);(端口表);END ENTITY 实体名;实体名;例:例:ENTITY or2 IS PORT(a,b:IN STD_LOGIC;C:OUT STD_LOGIC);END ENTITY or2;注意:实体应以语句注意:实体应以语句“ENTITY 实体名实体名 IS”开始,开始,语句语句“END ENTITY 实体名;实体名;”结束。结束。在层次化系统设计中,实体说明是整个模块或整在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(个系统的输入输出(I/O)接口;在一个器件级的设)接口;在一个器件级的设计中,实体说明是一个芯片的输入输出(计中,实体说明是一个芯片的输入输出(I/O)。)。端口说明(端口说明(PORT)端端口口为为设设计计实实体体和和其其外外部部环环境境提提供供动动态态通通信信的的通通道道,是是对对基基本本设设计计单单元元与与外外部部接接口口的的描描述述,其其功功能能相相当当电电路路图图符符号号的的外外部部引引脚脚。端端口口可可以以被被赋值,也可以当做逻辑变量用在逻辑表达式中。赋值,也可以当做逻辑变量用在逻辑表达式中。其一般书写格式为:其一般书写格式为:PORT(端口名(端口名:端口模式:端口模式 数据类型;数据类型;端口名端口名:端口模式:端口模式 数据类型;数据类型;););其中端口名是设计者为实体的每一个对外通道所其中端口名是设计者为实体的每一个对外通道所取的名字,通常为英文字母加数字,名字的定义有一取的名字,通常为英文字母加数字,名字的定义有一定的惯例,如定的惯例,如clk 表示时钟,表示时钟,D开头的端口名表示数据,开头的端口名表示数据,A开头的端口名表示地址。端口模式是指这些通道上的开头的端口名表示地址。端口模式是指这些通道上的数据流动的方式,如输入或输出等。数据流动的方式,如输入或输出等。端口模式有以下几种类型:端口模式有以下几种类型:(1)输入()输入(IN)允许信号进入实体,主要用于时钟输入、控制输入允许信号进入实体,主要用于时钟输入、控制输入(如(如load、reset、enable、clk)和单向的数据输入(如)和单向的数据输入(如地址数据信号地址数据信号address)等。)等。(2)输出()输出(OUT)输出模式只允许信号离开实体,常用于计数输出、输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信单向数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体的内部反号等。注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。馈,因为输出端口在实体内不能看做是可读的。(3)双向模式()双向模式(INOUT)双向模式允许信号双向传输(既可以进入实体,也双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。可以离开实体),双向模式端口允许引入内部反馈。(4)缓冲()缓冲(BUFFER)缓缓冲冲模模式式允允许许信信号号输输出出到到实实体体外外部部,但但同同时时也也可可以以在在实实体体内内部部引引用用该该端端口口的的信信号号。缓缓冲冲端端口口既既能能用用于于输输出出也也能能用用于于反反馈馈。缓缓冲冲模模式式用用于于在在实实体体内内部部建建立立一一个个可可读读的的输输出出端端口口,例例如如计计数数器器输输出出、计计数数器器的的现现态态用用来来决决定定计计数数器器的的次态。次态。端口模式可用下图说明,图中方框代表一个设计实体端口模式可用下图说明,图中方框代表一个设计实体或模块。或模块。在在VHDL设计中,通常将输入信号端口指定为设计中,通常将输入信号端口指定为输入模式,输出信号端口指定为输出模式,而双向输入模式,输出信号端口指定为输出模式,而双向数据通信信号,如计算机数据通信信号,如计算机PCI总线的地址总线的地址/数据复用数据复用总线,总线,DMA控制器数据总线等纯双向的信号采用双控制器数据总线等纯双向的信号采用双向端口模式。从端口的名称、模式就能一目了然地向端口模式。从端口的名称、模式就能一目了然地指导信号的用途、性质、来源和去向。指导信号的用途、性质、来源和去向。2 2 结构体结构体 结构体也叫构造体,结构体描述了基本设计单元结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系据流程,制定了实体内部元件的连接关系。结构体对。结构体对其基本设计单元的输入和输出关系可用以下三种方式其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。(逻辑元件连接描述)。结构体是对实体功能的具体描述,因此它一定要结构体是对实体功能的具体描述,因此它一定要跟在实体的后面跟在实体的后面。结构体一般由两大部分组成:结构体一般由两大部分组成:I对对数数据据类类型型、常常数数、信信号号、子子程程序序和和元元件件等等因因素素进进行行说明的部分;说明的部分;II描描述述实实体体的的逻逻辑辑行行为为、以以各各种种不不同同的的描描述述风风格格表表达达的功能描述语句,包括各种顺序语句和并行语句。的功能描述语句,包括各种顺序语句和并行语句。结构体的语句格式为:结构体的语句格式为:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句 BEGIN 功能描述语句功能描述语句 END 结构体名;结构体名;(1)结构体名)结构体名 结构体名由设计者自行定义,结构体名由设计者自行定义,OF后面的实体名后面的实体名指明了该结构体所对应的是哪个实体。有些设计实指明了该结构体所对应的是哪个实体。有些设计实体有多个结构体,这些结构体的结构体名不可相同,体有多个结构体,这些结构体的结构体名不可相同,通常用通常用dataflow(数据流)、(数据流)、behavior(行为)、(行为)、structural(结构)命名。这(结构)命名。这3个名称体现了个名称体现了3种不同种不同结构体的描述方式,使得阅读结构体的描述方式,使得阅读VHDL语言程序时,语言程序时,能直接了解设计者采用的描述方式。能直接了解设计者采用的描述方式。(2)结构体信号定义语句结构体信号定义语句 结构体信号定义语句必须放在关键词结构体信号定义语句必须放在关键词ARCHITECTURE和和BEGIN之间,用于对结构体内部将之间,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加要使用的信号、常数、数据类型、元件、函数和过程加以说明。需要注意的是实体说明中定义的信号是外部信以说明。需要注意的是实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。能用于这个结构体中。结构体中的信号定义和端口说明一样,应有信号名结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此称和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。不需要方向说明。例:结构体的信号定义实例。例:结构体的信号定义实例。ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR(0 TO 3);BEGIN END rtl;实体名实体名结构体名结构体名功能描述语句功能描述语句结构体信号定义语句结构体信号定义语句(3)结构体功能描述语句结构体功能描述语句 结构体功能描述语句位于结构体功能描述语句位于BEGIN和和END之之间,具体地描述了构造体的行为及其连接关系。间,具体地描述了构造体的行为及其连接关系。结构体的功能描述语句可以含有结构体的功能描述语句可以含有5种不同类型的种不同类型的并行语句,如图所示。每一语句结构内部可以使并行语句,如图所示。每一语句结构内部可以使用并行语句,也可以是顺序语句。用并行语句,也可以是顺序语句。结构体构造图结构体构造图:图中图中5种功能描述语句的基本组成和功能分别是:种功能描述语句的基本组成和功能分别是:块块语语句句是是由由一一系系列列并并行行语语句句构构成成的的组组合合体体,它它的的功功能能是是将结构体中的并行语句组成一个或多个子模块。将结构体中的并行语句组成一个或多个子模块。进进程程语语句句定定义义顺顺序序语语句句模模块块,用用以以将将从从外外部部获获得得的的信信号号值或内部运算数据向其他的信号进行赋值。值或内部运算数据向其他的信号进行赋值。信信号号赋赋值值语语句句将将设设计计实实体体内内的的处处理理结结果果向向定定义义的的信信号号或或界面端口进行赋值。界面端口进行赋值。子子程程序序调调用用语语句句可可以以调调用用进进程程或或参参数数,并并将将获获得得的的结结果果赋值于信号。赋值于信号。元件例化语句元件例化语句对其他的设计实体做元件调用说明,并将对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口此元件的端口与其他元件、信号或高层实体的界面端口进行连接。进行连接。例例:2选选1数据选择器数据选择器ENTITY mux2 ISPORT (d0,d1:IN BIT;sel:IN BIT;s:OUT BIT););END mux2;ARCHITECTURE dataflow OF mux2 IS SIGNAL sig:BIT;BEGIN Sig=(d0 AND sel)OR(NOT sel AND d1);S=sig;END dataflow;功能描述语句功能描述语句信号定义语句(内部信号,无方向)信号定义语句(内部信号,无方向)3 3 块、子程序和进程块、子程序和进程 (1)块语句()块语句(BLOCK)在较大规模的电子系统设计中,传统的硬件电在较大规模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子路设计通常包括一张系统总电路原理图和若干张子原理图。在原理图。在VHDL程序设计中,结构体是由多个程序设计中,结构体是由多个BLOCK块构成的,如果将结构体比做总电路原理图,块构成的,如果将结构体比做总电路原理图,那么,每个那么,每个BLOCK块则相当于一张子原理图。块则相当于一张子原理图。BLOCK块语句的结构:块语句的结构:块标号:块标号:BLOCK 接口说明接口说明 类属说明类属说明 BEGIN 并行块语句并行块语句 END BLOCK(块标号);(块标号);例:例:B1:BLOCK SIGNAL s1:BIT;BEGIN s1=a AND b;B2:BLOCK SIGNAL s2:BIT;BEGIN s2=c AND d;B3:BLOCK BEGIN Z=s2;END BLOCK B3;END BLOCK B2;y=s1;END BLOCK B1;(2)进程()进程(PROCESS)PROCESS结构是最能体现结构是最能体现VHDL语言特色的语句。语言特色的语句。与与BLOCK语句一样,利用语句一样,利用PROCESS语句结构可以语句结构可以描述一个功能独立的电路。与描述一个功能独立的电路。与BLOCK语句不同之处语句不同之处是,在系统仿真时,是,在系统仿真时,PROCESS结构中的语句是按顺结构中的语句是按顺序逐条向下执行的,而不像序逐条向下执行的,而不像BLOCK语句那样并发执语句那样并发执行。一个结构体中可以有多个并行运行的进程结构,行。一个结构体中可以有多个并行运行的进程结构,每一个进程内部是由一系列顺序语句来构成的。每一个进程内部是由一系列顺序语句来构成的。PROCESS语句的结构语句的结构进进程程标标号号 PROCESS (敏敏感感信信号号表表)IS进程说明语句进程说明语句BEGIN 顺序描述语句顺序描述语句 END PROCESS 进程标号进程标号;注意:在多个进程的结构体描述中,进程标号注意:在多个进程的结构体描述中,进程标号是区分各个进程的标志。但是进程标号并不是必是区分各个进程的标志。但是进程标号并不是必需的。单进程以需的。单进程以PROCESS开始,以开始,以END PROCESS结束。结束。例:两输入或非门例:两输入或非门LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nor2_v2 IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END nor2_v2;ARCHITECTURE behave OF nor2_v2 ISBEGIN PROCESS (a,b)VARIABLE comb:STD_LOGIC_VECTOR(1 DOWNTO 0);-y y y y y y b)THEN tmp:=a;ELSE tmp:=b;END IF;RETURN tmp;END;END bpac;4 库和程序包库和程序包 库和程序包用来描述和保留元件、类型说明函数、库和程序包用来描述和保留元件、类型说明函数、子程序等,以便在其它设计中可以随时引用这些信息,子程序等,以便在其它设计中可以随时引用这些信息,提高设计效率。提高设计效率。(1)库(库(LIBRARY)库是经编译后的数据的集合,它存放包集合定义、库是经编译后的数据的集合,它存放包集合定义、实体定义、结构定义和配置定义。实体定义、结构定义和配置定义。库语句的格式为:库语句的格式为:LIBRARY 库名;库名;USE USE语句指明库中的程序包。一旦说明了库和程语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可以进入访问或调用,但其作序包,整个设计实体都可以进入访问或调用,但其作用范围仅限于所说明的设计实体。用范围仅限于所说明的设计实体。USEUSE语句的使用将语句的使用将使所说明的程序包对本设计实体部分或全部开放。使所说明的程序包对本设计实体部分或全部开放。USEUSE语句有以下两种常用的格式:语句有以下两种常用的格式:USE USE 库名库名.程序包名程序包名.项目名项目名;USE USE 库名库名.程序包名程序包名.ALLALL;第第一一种种语语句句格格式式的的作作用用是是向向本本设设计计实实体体开开放放指指定定库库中的特定程序包内的所选定的项目。中的特定程序包内的所选定的项目。第二种语句格式的作用是向本设计实体开放指定库第二种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所有内容。中的特定程序包内的所有内容。例如:例如:LIBRARY IEEE LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE USE IEEE.STD_LOGIC_1164.STD_ULOGIC;IEEE.STD_LOGIC_1164.STD_ULOGIC;此例中,第一个此例中,第一个USEUSE语句表明打开语句表明打开IEEEIEEE库中的库中的STD_LOGIC_1164STD_LOGIC_1164程序包,并使程序包中的所有公共资程序包,并使程序包中的所有公共资源对本语句后面的源对本语句后面的VHDLVHDL设计实体程序全部开放,关键设计实体程序全部开放,关键词词ALLALL代表程序包中的所有资源。第二个代表程序包中的所有资源。第二个USEUSE语句开放语句开放了程序包了程序包STD_LOGIC_1164STD_LOGIC_1164中的中的STD_ULOGICSTD_ULOGIC数据类型。数据类型。STD_ULOGIC:可枚举数据类型:可枚举数据类型 注意:库说明语句的作用范围从一个实体说明开始注意:库说明语句的作用范围从一个实体说明开始到它所属的结构体、配置为止,当一个源程序中出到它所属的结构体、配置为止,当一个源程序中出现两个以上实体时,两条作为使用库的说明语句应现两个以上实体时,两条作为使用库的说明语句应在每个设计实体说明语句前重复书写。在每个设计实体说明语句前重复书写。例:例:LIBRARY IEEE;-库使用说明库使用说明USE IEEE.STD_LOGIC_1164.ALL;ENTITY and IS END and;ARCHITECTURE dataflow OF and IS END dataflow;CONFIGURATION c1 OF and IS -(配置)(配置)AND c1;LIBRARY IEEE;-库使用说明库使用说明 USE IEEE.STD_LOGIC_1164.ALL;ENTITY or ISCONFIGURATION c2 OF and IS AND c2;(2)程序包程序包 程序包也叫包集合,主要用来存放各个设计都能共程序包也叫包集合,主要用来存放各个设计都能共享的数据类型、子程序说明、属性说明和元件说明等部享的数据类型、子程序说明、属性说明和元件说明等部分。设计者使用时只要用分。设计者使用时只要用USEUSE子句进行说明即可。子句进行说明即可。程序包由两部分组成:程序包首和程序包体。程序包由两部分组成:程序包首和程序包体。程序包的一般书写格式如下:程序包的一般书写格式如下:PACKAGE PACKAGE 程序包名程序包名 IS ISEND PACKAGE END PACKAGE 程序包名;程序包名;-程序包首程序包首PACKAGE BODY PACKAGE BODY 程序包名程序包名 IS IS -程序包体程序包体 END PACKAGE BODY END PACKAGE BODY 程序包名程序包名;例例:;PACKAGE math IS TYPE tw16 IS ARRAY(0 TO 15)OF T_WLOGIC;FUNCTION add(a,b:IN tw16)RETURN tw16;FUNCTION sub(a,b:IN tw16)RETURN tw16;END math;PACKAGE BODY math ISFUNCTION vect_to_int(s:tw16););RETURN INTEGER IS VARIBLE result:INTEGER:=0;BEGIN FOR i IN 0 TO 7 LOOP result:=result*2;IF s(i)=1THEN result:=result+1 END IF;END LOOP;RETURN result;END vect_to_int;FUNCTION int_to_tw16(s:INTEGER);RETURN tw16 IS VARIBLE result:tw16;VARIBLE digit:INTEGER:=2*15;VARIBLE local:INTEGER;BEGIN local:=s;FOR i IN 15 DOWNTO 0 LOOP IF local/digit=1 THEN Local:=local-digit;ELSE result(i):=0;END IF;digit:=digit/2;END LOOP;RETURN result;END int_to_tw16;FUNCTION add(a,b:IN tw16);RETURN tw16 IS VARIBLE result:INTEGER;BEGIN result:=vect_to_int(a)+vect_to_int(b);RETURN int_to_tw16(result);END add;FUNCTION sub(a,b:IN tw16);RETURN tw16 IS VARIBLE result:INTEGER;BEGIN result:=vect_to_int(a)+vect_to_int(b);RETURN int_to_tw16(result);END sub;END math;此例的程序包是由程序包首和程序包体两部分此例的程序包是由程序包首和程序包体两部分组成。程序包首定义了数据类型和函数的调用说明,组成。程序包首定义了数据类型和函数的调用说明,程序包体中才具体描述实现该函数功能的语句和数据程序包体中才具体描述实现该函数功能的语句和数据的赋值。这种分开描述的好处是,当函数的功能需要的赋值。这种分开描述的好处是,当函数的功能需要做某些调整或数据赋值需要变化时,只要改变程序包做某些调整或数据赋值需要变化时,只要改变程序包体的相关语句就可以了,而无需改变程序包首的说明,体的相关语句就可以了,而无需改变程序包首的说明,这样就使得需要重新编译的单元数目尽可能的减少了。这样就使得需要重新编译的单元数目尽可能的减少了。5 配置配置 在用在用VHDLVHDL描述硬件电路时,常常采用结构描述方式和描述硬件电路时,常常采用结构描述方式和混合描述方式。在这两种描述方式中,常常需要将其他设计混合描述方式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要将不同元件通过配置安实体作为元件进行引用,这时就需要将不同元件通过配置安装到不同的设计实体中。装到不同的设计实体中。VHDLVHDL提供了配置语句用于描述各种提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。连接关系。(1)默认配置默认配置默认配置语句的基本格式为:默认配置语句的基本格式为:CONFIGURATION CONFIGURATION 配置名配置名 OF OF 实体名实体名 IS IS FOR FOR 选配结构体名选配结构体名 END FOR END FOREND END 配置名;配置名;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY example_v IS PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END example_v;ARCHITECTURE and2_arc OF example_v IS BEGIN y=a AND b;END and2_arc;例:例:与、或、与非、或非、异或,与、或、与非、或非、异或,5 5个结构体共用一个实体。个结构体共用一个实体。ARCHITECTURE or2_arc OF example_v IS BEGIN y=a OR b;END or2_arc;ARCHITECTURE nand2_arc OF example_v IS BEGIN y=NOT(a AND b);END nand2_arc;ARCHITECTURE nor2_arc OF example_v IS BEGIN y=NOT(a OR b);END nor2_arc;ARCHITECTURE xor2_arc OF example_v IS BEGIN y=a XOR b;END xor2_arc;CONFIGURATION cfg1 OF example_v IS FOR and2_arc END FOR;END cfg1;CONFIGURATION cfg2 OF example_v IS FOR or2_arc END FOR;END cfg2;CONFIGURATION cfg3 OF example_v IS FOR nand2_arc END FOR;END cfg3;CONFIGURATION cfg4 OF example_v IS FOR nor2_arc END FOR;END cfg4;CONFIGURATION cfg5 OF example_v IS FOR xor2_arc END FOR;END cfg5;在上例(在上例(example_v example_v)中,有)中,有5 5个不同的结构体,分别个不同的结构体,分别用来完成二输入的逻辑与、或、与非、或非和逻辑异或的运算用来完成二输入的逻辑与、或、与非、或非和逻辑异或的运算操作。在程序中使用了操作。在程序中使用了5 5个默认配置语句来指明设计实体个默认配置语句来指明设计实体example_vexample_v和哪个结构体一起组成一个完整的设计:配置语句和哪个结构体一起组成一个完整的设计:配置语句cfg1cfg1将与逻辑结构体配置给实体;将与逻辑结构体配置给实体;cfg2cfg2将或逻辑结构体配置给将或逻辑结构体配置给实体;实体;cfg3cfg3将与非逻辑结构体配置给实体;将与非逻辑结构体配置给实体;cfg4cfg4将或非逻辑结将或非逻辑结构体配置给实体;构体配置给实体;cfg5cfg5将异或逻辑结构体配置给实体。在进行将异或逻辑结构体配置给实体。在进行模拟的时候,将根据所编译的是上面的哪个配置来决定要进行模拟的时候,将根据所编译的是上面的哪个配置来决定要进行模拟的结构体,也就是说最后一个被编译的结构体(异或逻辑)模拟的结构体,也就是说最后一个被编译的结构体(异或逻辑)将被模拟,下图就是异或逻辑的仿真波形。将被模拟,下图就是异或逻辑的仿真波形。异或门仿真波形异或门仿真波形(2)(2)结构体的配置结构体的配置 结构体的配