




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章微电子系统设计微电子系统设计就是将算法理论、体系结构、电路物理实现自上而下的集成到一个芯片上的过程。高级语言的行为级描述系统仿真逻辑综合物理层设计(版图设计)网表提取、仿真投片试制流程:电子系统芯片微电子系统设计把电子系统集中到一个芯片,包括软件和硬件。微电子系统中物理层设计逻辑单元电路单元双极型集成电路单元和MOS数字电路单元逻辑电路---完成各种逻辑运算和变换的电路组成逻辑电路的基本单元是各种门电路晶体管-晶体管逻辑电路(TTL)集成注入逻辑电路(I2L)发射极耦合逻辑电路(ECL)双极数字电路单元设计用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路
1、TTL电路:基本单元:与非门特点:扇出系数较大典型电路:74系列集成电路(民品)
54系列集成电路(军品)相同的电路结构、逻辑功能,不同的工作环境温度和电源工作允许的范围。2、ECL电路:基本单元:或非门、或门特点:速度快、逻辑功能、强扇出能力大典型电路:高速和超高速集成电路缺点:功耗大、抗干扰能力差3、I2L电路:基本单元:非门特点:集成度高、功耗低、成本低典型电路:VLSI缺点:速度较低二、MOS数字电路单元设计1、NMOS电路:基本单元:非门特点:功耗低、速度快典型电路:LSI和VLSI2、CMOS电路:特点:输入电阻高、功耗低、速度快、抗噪声能力强第六章集成电路计算机辅助设计ICCAD就是将由人为主导,根据集成电路的指标要求进行总体设计,借助计算机帮助人工迅速而准确地完成设计任务。ICCAD系统概述ICCAD系统的发展第一代:60年代末:版图编辑和检查第二代:80年代初:原理图输入、逻辑模拟第三代:从RTL级输入,到包括行为仿真、行为综合、逻辑综合等功能流行的CAD系统:Cadence,MentorGraphics,Viewlogic,Compass,Panda等ICCAD系统的理想作用:实现完全的自动化设计,设计出各种各样的电路ICCAD系统的实际作用设计信息输入:语言输入编辑工具高层次描述的图形输入工具:VHDL功能图输入、逻辑图/电路图输入编辑、版图输入编辑
设计实现:综合器
设计验证:验证系统(电路)功能、性能要求及设计规则要求模拟器进行模拟(仿真)分析设计规则的检查
整个设计过程就是把高层次的抽象描述逐级向下进行综合、验证、实现,直到物理级的低层次描述,即掩膜版图。各设计阶段相互联系,例如,寄存器传输级描述是逻辑综合的输入,逻辑综合的输出又可以是逻辑模拟和自动版图设计的输入,版图设计的结果则是版图验证的输入。ICCAD系统介入了包括系统功能设计、逻辑和电路设计以及版图设计等在内的集成电路设计的各个环节。系统描述与模拟:VHDL语言
VHDL语言出现背景一种硬件描述语言(hardwaredescriptionlanguage),广义地说,描述电子实体的语言:逻辑图,电路图。大规模电路的出现:逻辑图、布尔方程不太适用,需要在更高层次上描述系统,出现多种HDL语言,为便于信息交换和维护,出现工业标准。通常指高层次设计阶段描述硬件HDL语言的特点抽象地进行行为描述结构化语言:可以描述电子实体的结构多层次混合描述既可被模拟,又可被综合能提供VHDL模拟器的公司:Cadence、MentorGraphics、Viewlogic、Synopsys等大型EDA公司和CLSI、Model-Technology、Vantage等专门公司VHDL语言基本概念:描述硬件电路,可以抽象地表示电路的行为和结构(完成什么功能,怎样组成)作用:对IC设计,支持从系统级到门和器件级的电路描述,并具有在不同设计层次上的模拟验证机制可作为综合软件的输入语言,支持电路描述由高层向低层的转换VHDL语言的建模机制
一个硬件单元在VHDL中看作一个设计实体。实体外观实体说明:实体命名,实体与外部环境的接口描述,未涉及其内部行为及结构。实体功能在结构体中实现结构体:实体的输入-输出关系,实体的结构和行为描述。对应一个实体说明可以有多个结构体,不同的实现方案。ENTITYcountIS
--设计实体count GENERIC(tpd:Time:=10ns); PORT(clock:INBit;q1,q0:OUTBit);ENDENTITYcount;ARCHITECTUREarchofcountIS--count实体的结构体
BEGIN
count_up:PROCESS(clock)--进程体count_up VARIABLEcount_value:Natural:=0;
BEGIN IFclock='1'THEN Count_value:=(count_value+1)MOD4; q1<=bit'Val(count_value/2)AFTERtpd; q0<=bit'Val(count_valueMOD2)AFTERtpd; ENDIF;
ENDPROCESScount_up ;
ENDARCHITECTUREarch;综合概念:从设计的高层次向低层次转换的过程,是一种自动设计的过程,一种专家系统。分类:系统级综合高级综合RTL级综合:行为综合(软件:Synopsys,Ambit)逻辑综合物理综合(逻辑图或电路图到版图,严格说应该是同级驱动)逻辑模拟逻辑模拟的基本概念:将逻辑设计输入到计算机,用软件方法形成硬件的模型,给定输入波形,利用模型算出各节点和输出端的波形,判断正确与否主要作用:验证逻辑功能和时序的正确性分类:根据所模拟逻辑单元规模的大小寄存器传输级模拟:总体操作正确性 功能块级模拟:加法器、计数器、存储器等门级模拟:基本逻辑单元:门、触发器等 开关级模拟:晶体管:后仿真电路模拟电路设计:根据电路性能确定电路结构和元件参数,没有自动设计软件,设计人员根据电路性能要求,初步确定电路结构和元件参数,利用电路模拟软件进行模拟分析,判断修改。电路模拟:根据电路的拓扑结构和元件参数将电路问题转换成适当的数学方程并求解,根据计算结果检验电路设计的正确性。模拟对象:元件优点:不需实际元件、可作各种模拟甚至破坏性模拟电路模拟(续)在集成电路设计中起的作用:版图设计前的电路设计,保证电路正确(包括电路结构和元件参数)后仿真:考虑了寄生参数,由电路模拟预测电路性能典型软件:SPICE、HSPICEEDA工具
上世纪80年代,EDA还只能代替手工,画原理图和流程图,设计生产机器可以读懂的印刷电路板图。到了90年代,出现了Altera公司的MaxplusⅡ等CPLD/FPGA工具软件,人们可以用MaxplusⅡ在PC机上设计由众多标准逻辑芯片(如74系列等)组成的电路原理图,然后再用它直接进行波形图仿真测试,观察验证电路在各种输入情况下的输出信号波形,及内部各点波形,并得到各点的延时信息,和电路“正常”,“警告”,“出错”等信息。
最后,将经过MaxplusⅡ将验证无误的电路写入CPLD/FPGA芯片,放入电路板中进行整机测试,如发现问题,修改原理图,波形仿真后重写CPLD/FPGA
,重新进行整机测试,直至完全正确为止。整机中既可以使用CPLD/FPGA也可以制成ASIC芯片(视批量大小而定)。MaxplusⅡ的出现,使电子设计自动化(EDA)技术大大向前推进了一步。
MaxplusⅡ不仅支持原理图输入,而且还支持VHDL、VerilogHDL、以及AHDL等文本输入方式,是目前应用比较广泛的可编程逻辑器件开发软件。
到了90年代后期,由于硬件描述语言的完善,尤其是相应的编译,测试,合成,布线等电子设计自动化(EDA)工具软件的发展与完善,硬件描述语言(HDL)终于进入了成熟实用阶段。这无疑是(数字)电路设计史上最具革命性的飞跃。自此,人们实现了用简明易懂的高级编程语言设计复杂硬件电路的梦想。只要具备一定的硬件专门知识,就能随心所欲地设计出功能十分强大的专用智能电路,实现了“以软代硬”。
VHDL编程实例:以真值表为依据,采用数据流描述方式编写的BCD-七段显示译码器的VHDL源代码如下所示,其按总线显示方式的仿真波形如图所示。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder_se7v2ISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDdecoder_se7v2;ARCHITECTUREbehaveOFdecoder_se7v2IS
BEGINPROCESS(A)BEGINCASEAISWHEN"0000"=>S<="1111110";WHEN"0001"=>S<="0110000";WHEN"0010"=>S<="1101101";WHEN"0011"=>S<="1111001";WHEN"0100"=>S<="0110011";WHEN"0101"=>S<="1011011";WHEN"0110"=>S<="0011111";WHEN"0111"=>S<="1110000";
WHEN"1000"=>S<="1111111";WHEN"1001"=>S<="1110011";WHEN"1010"=>S<="0001101";WHEN"1011"=>S<="0011001";WHEN"1100"=>S<="0100011";WHEN"1101"=>S<="1001011";WHEN"1110"=>S<="0001111";WHENOTHERS=>S<="0000000";ENDCASE;ENDPROCESS;ENDbehave;用VHDL编辑的七段译码器仿真波形VHDL基础一个完整的VHDL程序,或者说设计实体,通常要求最低能为VHDL综合器所支持,并能作为一个独立的设计单元,即元件的形式而存在的VHDL程序。在VHDL程序中,通常包含实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、包集合(PACKAGE)和库(LIBRARY)5个部分。其中实体和结构体这两个基本结构是必需的,他们可以构成最简单的VHDL程序。1、实体
设计实体是VHDL语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的,都是由实体说明和结构体两部分组成。实体说明是对这个设计实体与外部电路进行接口的描述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。结构体用于描述此设计实体的逻辑结构和逻辑功能。实体语句结构如下:ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]ENDENTITY实体名;
例:ENTITYor2ISPORT(a,b:INSTD_LOGIC;C:OUTSTD_LOGIC);ENDENTITYor2;
注意:实体应以语句“ENTITY实体名IS”开始,语句“ENDENTITY实体名;”结束。在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(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结构体
结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。结构体是对实体功能的具体描述,因此它一定要跟在实体的后面。结构体一般由两大部分组成:I.对数据类型、常数、信号、子程序和元件等因素进行说明的部分;II.描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种顺序语句和并行语句。结构体的语句格式为:
ARCHITECTURE结构体名OF实体名IS[定义语句]BEGIN[功能描述语句]END结构体名;(1)结构体名
结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。有些设计实体有多个结构体,这些结构体的结构体名不可相同,通常用dataflow(数据流)、behavior(行为)、structural(结构)命名。这3个名称体现了3种不同结构体的描述方式,使得阅读VHDL语言程序时,能直接了解设计者采用的描述方式。(2)结构体信号定义语句
结构体信号定义语句必须放在关键词ARCHITECTURE和BEGIN之间,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。需要注意的是实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。例:结构体的信号定义实例。ARCHITECTURErtlOFmujISSIGNALs1:BITSIGNALs2,s3:STD_LOGIC_VECTOR(0TO3);┇BEGIN┇ENDrtl;
实体名结构体名功能描述语句结构体信号定义语句(3)结构体功能描述语句结构体功能描述语句位于BEGIN和END之间,具体地描述了构造体的行为及其连接关系。结构体的功能描述语句可以含有5种不同类型的并行语句,如图所示。每一语句结构内部可以使用并行语句,也可以是顺序语句。结构体构造图:
图中5种功能描述语句的基本组成和功能分别是:块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。子程序调用语句可以调用进程或参数,并将获得的结果赋值于信号。元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。例:2选1数据选择器ENTITYmux2ISPORT(d0,d1:INBIT;
sel:INBIT;
s:OUTBIT);
ENDmux2;
ARCHITECTUREdataflowOFmux2ISSIGNALsig:BIT;
BEGINSig<=(d0ANDsel)OR(NOTselANDd1);
S<=sig;
ENDdataflow;功能描述语句信号定义语句(内部信号,无方向)3块、子程序和进程(1)块语句(BLOCK)
在较大规模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子原理图。在VHDL程序设计中,结构体是由多个BLOCK块构成的,如果将结构体比做总电路原理图,那么,每个BLOCK块则相当于一张子原理图。BLOCK块语句的结构:
块标号:BLOCK
接口说明类属说明
BEGIN
并行块语句
ENDBLOCK(块标号);
例:
B1:
BLOCKSIGNALs1:BIT;
BEGINs1<=aANDb;B2:
BLOCKSIGNALs2:BIT;
BEGINs2<=cANDd;B3:
BLOCKBEGINZ<=s2;ENDBLOCKB3;
ENDBLOCKB2;y<=s1;ENDBLOCKB1;
(2)进程(PROCESS)
PROCESS结构是最能体现VHDL语言特色的语句。与BLOCK语句一样,利用PROCESS语句结构可以描述一个功能独立的电路。与BLOCK语句不同之处是,在系统仿真时,PROCESS结构中的语句是按顺序逐条向下执行的,而不像BLOCK语句那样并发执行。一个结构体中可以有多个并行运行的进程结构,每一个进程内部是由一系列顺序语句来构成的。PROCESS语句的结构[进程标号]PROCESS[(敏感信号表)][IS][进程说明语句]BEGIN
顺序描述语句
ENDPROCESS[进程标号];
注意:在多个进程的结构体描述中,进程标号是区分各个进程的标志。但是进程标号并不是必需的。单进程以PROCESS开始,以ENDPROCESS结束。例:两输入或非门LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYnor2_v2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDnor2_v2;ARCHITECTUREbehaveOFnor2_v2ISBEGINPROCESS(a,b)VARIABLEcomb:STD_LOGIC_VECTOR(1DOWNTO0);
--y<=NOT(aORb);BEGINcomb:=a&b;CASEcombISWHEN"00"=>y<='1';WHEN"01"=>y<='0';WHEN"10"=>y<='0';WHEN"11"=>y<='0';WHENOTHERS=>y<='X';ENDCASE;ENDPROCESS;ENDbehave;
--‘X’:不定(3)子程序(SUBPROGRAM)
VHDL程序与其他软件语言程序中应用子程序的目的是相似的,即能够更有效地完成重复性的工作。子程序模块是利用顺序语句定义和完成算法的,但子程序不能像进程那样可以从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序的界面端口进行通信。子程序被调用时,首先要初始化,执行处理功能后,将处理结果传递给主程序。子程序内部的值不能保持,子程序返回后才能被再次调用并初始化。
子程序有两种类型:过程(PROCEDURE)和函数(FUNCTION)。I.过程(PROCEDURE)过程语句的书写格式为:PROCEDURE过程名(参数表)IS[说明部分]BEGIN
过程语句部分
ENDPROCEDURE过程名;例:用过程语句设计的子程序PROCEDUREvector_to_int(a:INSTD_LOGIC_VECTOR;x_flag:OUTBOOLEAN;q:INOUTINTEGER)ISBEGINq:=0;x_flag:=FALSE;FORiINa’RANGELOOPq:=q*2;--*:乘,**:乘方
IF(a(i)=1)THENq:=q+1;
--矢量转换成整数ELSE(a(i)/=1)THEN-----/=:不等
x_flag:=TRUE;ENDIF;ENDLOOP;ENDvector_to_int;
这个过程名为vector_to_int实现将位矢量转换成整数的功能,在过程语句执行结束后,将输入值拷贝到调用者的OUT和INOUT所定义的变量中,完成子程序和主程序之间的数据传递。II.函数函数的语言书写格式为:
FUNCTION函数名(参数表)RETURN数据类型IS[说明部分];
BEGIN
顺序语句;
RETURN[返回变量名];
ENDRETURN函数名;例:用VHDL构造的选择最大值的函数程序。
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEbpacISFUNCTIONmax(a:STD_LOGIC_VECTOR;b:STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTOR;ENDbpac;PACKAGEBODYbpacISFUNCTIONmax(a:STD_LOGIC_VECTOR;b:STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTORISVARIABLEtmp:STD_LOGIC_VECTOR(a’RANGE);BEGINIF(a>b)THENtmp:=a;ELSEtmp:=b;ENDIF;RETURNtmp;END;ENDbpac;4库和程序包
库和程序包用来描述和保留元件、类型说明函数、子程序等,以便在其它设计中可以随时引用这些信息,提高设计效率。
(1)库(LIBRARY)
库是经编译后的数据的集合,它存放包集合定义、实体定义、结构定义和配置定义。库语句的格式为:
LIBRARY库名;
USE语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可以进入访问或调用,但其作用范围仅限于所说明的设计实体。USE语句的使用将使所说明的程序包对本设计实体部分或全部开放。
USE语句有以下两种常用的格式:USE库名.程序包名.项目名;USE库名.程序包名.ALL;
第一种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所选定的项目。第二种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所有内容。例如:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;
此例中,第一个USE语句表明打开IEEE库中的STD_LOGIC_1164程序包,并使程序包中的所有公共资源对本语句后面的VHDL设计实体程序全部开放,关键词ALL代表程序包中的所有资源。第二个USE语句开放了程序包STD_LOGIC_1164中的STD_ULOGIC数据类型。
STD_ULOGIC:可枚举数据类型
注意:库说明语句的作用范围从一个实体说明开始到它所属的结构体、配置为止,当一个源程序中出现两个以上实体时,两条作为使用库的说明语句应在每个设计实体说明语句前重复书写。例:LIBRARYIEEE;
--库使用说明USEIEEE.STD_LOGIC_1164.ALL;ENTITYandIS
┇ENDand;ARCHITECTUREdataflowOFandIS
┇ENDdataflow;CONFIGURATIONc1OFandIS--(配置)
┇ANDc1;LIBRARYIEEE;
--库使用说明
USEIEEE.STD_LOGIC_1164.ALL;ENTITYorISCONFIGURATIONc2OFandIS
┇ANDc2;(2)程序包
程序包也叫包集合,主要用来存放各个设计都能共享的数据类型、子程序说明、属性说明和元件说明等部分。设计者使用时只要用USE子句进行说明即可。程序包由两部分组成:程序包首和程序包体。程序包的一般书写格式如下:PACKAGE程序包名ISEND[PACKAGE]程序包名;--程序包首PACKAGEBODY程序包名IS┇--程序包体
END[PACKAGEBODY][程序包名];
例:USESTD.STD_LOGIC.ALL;PACKAGEmathISTYPEtw16 ISARRAY(0TO15)OFT_WLOGIC;
FUNCTIONadd(a,b:INtw16)RETURNtw16;
FUNCTIONsub(a,b:INtw16)RETURNtw16;ENDmath;PACKAGEBODYmathISFUNCTIONvect_to_int(s:tw16);
RETURNINTEGERISVARIBLEresult:INTEGER:=0;BEGINFORiIN0TO7LOOPresult:=result*2;IFs(i)=’1’THENresult:=result+1ENDIF;ENDLOOP;RETURNresult;ENDvect_to_int;FUNCTIONint_to_tw16(s:INTEGER);RETURNtw16ISVARIBLEresult:tw16;VARIBLEdigit:INTEGER:=2**15;VARIBLElocal:INTEGER;BEGINlocal:=s;FORiIN15DOWNTO0LOOPIFlocal/digit>=1THENLocal:=local-digit;ELSEresult(i):=0;ENDIF;digit:=digit/2;ENDLOOP;RETURNresult;ENDint_to_tw16;FUNCTIONadd(a,b:INtw16);RETURNtw16ISVARIBLEresult:INTEGER;BEGINresult:=vect_to_int(a)+vect_to_int(b);RETURNint_to_tw16(result);ENDadd;FUNCTIONsub(a,b:INtw16);RETURNtw16ISVARIBLEresult:INTEGER;BEGINresult:=vect_to_int(a)+vect_to_int(b);RETURNint_to_tw16(result);ENDsub;ENDmath;
此例的程序包是由程序包首和程序包体两部分组成。程序包首定义了数据类型和函数的调用说明,程序包体中才具体描述实现该函数功能的语句和数据的赋值。这种分开描述的好处是,当函数的功能需要做某些调整或数据赋值需要变化时,只要改变程序包体的相关语句就可以了,而无需改变程序包首的说明,这样就使得需要重新编译的单元数目尽可能的减少了。5配置
在用VHDL描述硬件电路时,常常采用结构描述方式和混合描述方式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要将不同元件通过配置安装到不同的设计实体中。VHDL提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。(1)默认配置默认配置语句的基本格式为:CONFIGURATION配置名OF实体名ISFOR选配结构体名
ENDFOREND配置名;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYexample_vISPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDexample_v;ARCHITECTUREand2_arcOFexample_vISBEGINy<=aANDb;ENDand2_arc;例:与、或、与非、或非、异或,5个结构体共用一个实体。ARCHITECTUREor2_arcOFexample_vISBEGINy<=aORb;ENDor2_arc;ARCHITECTUREnand2_arcOFexample_vISBEGINy<=NOT(aANDb);ENDnand2_arc;ARCHITECTUREnor2_arcOFexample_vISBEGINy<=NOT(aORb);ENDnor2_arc;ARCHITECTURExor2_arcOFexample_vISBEGINy<=aXORb;ENDxor2_arc;CONFIGURATIONcfg1OFexample_vISFORand2_arcENDFOR;ENDcfg1;CONFIGURATIONcfg2OFexample_vISFORor2_arcENDFOR;ENDcfg2;CONFIGURATIONcfg3OFexample_vISFORnand2_arcENDFOR;ENDcfg3;CONFIGURATIONcfg4OFexample_vISFORnor2_arcENDFOR;ENDcfg4;CONFIGURATIONcfg5OFexample_vISFORxor2_arcENDFOR;ENDcfg5;
在上例(example_v)中,有5个不同的结构体,分别用来完成二输入的逻辑与、或、与非、或非和逻辑异或的运算操作。在程序中使用了5个默认配置语句来指明设计实体example_v和哪个结构体一起组成一个完整的设计:配置语句cfg1将与逻辑结构体配置给实体;cfg2将或逻辑结构体配置给实体;cfg3将与非逻辑结构体配置给实体;cfg4将或非逻辑结构体配置给实体;cfg5将异或逻辑结构体配置给实体。在进行模拟的时候,将根据所编译的是上面的哪个配置来决定要进行模拟的结构体,也就是说最后一个被编译的结构体(异或逻辑)将被模拟,下图就是异或逻辑的仿真波形。
异或门仿真波形(2)结构体的配置
结构体的配置主要是用来对结构体中引用的元件进行配置。结构体的配置的书写格式:FOR<元件例化标号>:<元件名>USEENTITY<库名>.<实体名(结构体名)>;以1位全加器的构成为例说明结构体的配置的用法:将两输入与门、或门、异或门设置成通用例化元件由结构体引用。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYand2_vISPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDand2_v;ARCHITECTUREand2_arcOFand2_vISBEGINy<=aANDb;ENDand2_arc;CONFIGURATIONand2_cfgOFand2_vISFORand2_arcENDfor;ENDand2_cfg;二输入与门源代码:
与门and2_v仿真波形LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2_vISPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDor2_v;ARCHITECTUREor2_arcOFor2_vISBEGINy<=aORb;ENDor2_arc;CONFIGURATIONor2_cfgOFor2_vISFORor2_arcENDfor;ENDor2_cfg;二输入或门源代码:
或门or2_v仿真波形LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYxor2_vISPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDxor2_v;ARCHITECTURExor2_arcOFxor2_vISBEGINy<=aXORb;ENDxor2_arc;CONFIGURATIONxor2_cfgOFxor2_vISFORxor2_arcENDfor;ENDxor2_cfg;异或门源代码:
异或门xor2_v仿真波形LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYadd1_vISPORT(A:INSTD_LOGIC;B:INSTD_LOGIC;Cin:INSTD_LOGIC;Co:OUTSTD_LOGIC;S:OUTSTD_LOGIC);ENDadd1_v;ARCHITECTUREstructureOFadd1_vISCOMPONENTand2_vPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDCOMPONENT;全加器源代码:COMPONENTor2_vPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTxor2_vPORT(a:INSTD_LOGIC;b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALtmp1,tmp2,tmp3:STD_LOGIC;FORU1,U2:xor2_vUSEENTITYwork.xor2_v(xor2_arc);FORU3,U4:and2_vUSEENTITYwork.and2_v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校加班误餐管理制度
- 宣传事件分级管理制度
- 实体企业资金管理制度
- 外企公司异动管理制度
- 2025【合同范本】租赁仓库合同
- 2025建筑装修工程施工合同
- 声像档案项目管理制度
- 2025居间合同纠纷答辩
- 基于分数阶PID控制策略的燃料电池阴阳极供气系统控制与优化
- 2025版合同封面模板示例
- 医疗成品审核放行单
- NB/T 11462-2023带式输送机用液压卷带装置
- SL+258-2017水库大坝安全评价导则
- 幼儿园资助自查报告及整改措施
- DZ∕T 0200-2020 矿产地质勘查规范 铁、锰、铬(正式版)
- 统一战线基本理论方针政策课件
- 绿色建筑空间声环境质量验收标准(征求意见稿)陕西
- 临夏州和政县招聘专职社区工作者笔试真题2023
- 《TypeScript入门与全栈式网站开发实战》 教学大纲
- 高血压指南课件
- 乔丹体育侵权案例
评论
0/150
提交评论