vhdl语言应用基础1(基本结构、数据类型).ppt

上传人:wuy****n92 文档编号:70790389 上传时间:2023-01-28 格式:PPT 页数:86 大小:1.01MB
返回 下载 相关 举报
vhdl语言应用基础1(基本结构、数据类型).ppt_第1页
第1页 / 共86页
vhdl语言应用基础1(基本结构、数据类型).ppt_第2页
第2页 / 共86页
点击查看更多>>
资源描述

《vhdl语言应用基础1(基本结构、数据类型).ppt》由会员分享,可在线阅读,更多相关《vhdl语言应用基础1(基本结构、数据类型).ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第二章第二章VHDL语言应用基础语言应用基础参考书目及网络资源VHDL硬件描述语言与数字逻辑电路设计,硬件描述语言与数字逻辑电路设计,侯伯亨,西安电子科技大学出版社。侯伯亨,西安电子科技大学出版社。VHDL与数字电路设计与数字电路设计卢毅卢毅科学出版社科学出版社VerilogHDL硬件描述语言硬件描述语言清华大学出版社清华大学出版社CPLD技术及应用技术及应用宋万杰等宋万杰等西安电子科技大西安电子科技大学出版社学出版社可编程逻辑系统的可编程逻辑系统的VHDL设计技术设计技术KevinSkahill东南大学出版社东南大学出版社 ALTERA ALTERA可编程器件及其应用可编程器件及其应用刘宝琴

2、刘宝琴清华大清华大学出版社学出版社Xinlinx数字系统现场集成技术数字系统现场集成技术朱明程朱明程东南东南大学出版社大学出版社http:/http:/(学术科学/电路设计与调试版)dickhouhttp:/http:/PART 1HDLnVHDL具有强大的行为描述能力,丰富的仿真语句具有强大的行为描述能力,丰富的仿真语句和库函数,对设计的描述也具有相对独立性和库函数,对设计的描述也具有相对独立性nVerilog最大特点就是易学易用,语法比较自由最大特点就是易学易用,语法比较自由nABEL一种早期的硬件描述语言支持逻辑电路的多一种早期的硬件描述语言支持逻辑电路的多种表达形式,其中包括逻辑方程,

3、真值表和状态种表达形式,其中包括逻辑方程,真值表和状态图。图。nAHDL(AlteraHDL)是是ALTERA公司发明的公司发明的HDL,特点是非常易学易用,学过高级语言的人可以在特点是非常易学易用,学过高级语言的人可以在很短的时间(如几周)内掌握很短的时间(如几周)内掌握AHDL。它的缺点是它的缺点是移植性不好,通常只用于移植性不好,通常只用于ALTERA自己的开发系自己的开发系统统。VHDLVHDLVHDL语言最初于语言最初于1981年由美国国防部为解决所有电年由美国国防部为解决所有电子产品存档而提出的一种统一标准语言子产品存档而提出的一种统一标准语言,1983年至年至1985年年,由由I

4、BMIBM、TITI等公司对等公司对VHDLVHDL进行细致开发进行细致开发,1987年成为年成为IEEE IEEE 107687标准。标准。1993年年,修订版修订版IEEE IEEE 107693出台。随后出台。随后,IEEEIEEE分别提出分别提出IEEEIEEE1076.3(可综合标准可综合标准)和和IEEE IEEE 1076.4(标准标准),以以解决可综合解决可综合VHDLVHDL描述在不同描述在不同EDAEDA厂商之间的移植问厂商之间的移植问题题,以及以及ASICASIC/FPGAFPGA的门级库描述问题。的门级库描述问题。VERILOGVERILOGVERILOG语言最早由语言

5、最早由GATEWAYGATEWAY设计自动化公司设计自动化公司于于1981年提出年提出,并提供相应的并提供相应的VERILOGVERILOG仿真器。仿真器。1985年年,仿真器增强版仿真器增强版VERILOGVERILOG-XLXL推出。推出。CADENCECADENCE公司于公司于1989年收购年收购GATEWAYGATEWAY公司公司,并并于于1990年把年把VERILOGVERILOG语言推向市场语言推向市场,而保留了而保留了VERILOGVERILOG-XL的所有权。的所有权。1995年年,VERILOGVERILOG成成为为IEEE IEEE 1364标准。标准。就标准而言就标准而言

6、,两种语言并无优劣、先后可言。两种语言并无优劣、先后可言。至于设计者采用哪种语言至于设计者采用哪种语言,与设计者的习惯、喜与设计者的习惯、喜好以及目前好以及目前EDAEDA、FPGAFPGA行业的支持有关。由于行业的支持有关。由于VHDLVHDL在系统设计方面的语法支持在系统设计方面的语法支持,各各FPGAFPGA厂商对厂商对VHDLVHDL语言的支持明显多于语言的支持明显多于VerilogVerilog,这可从各厂这可从各厂商所提供的设计开发包中得到明证。而商所提供的设计开发包中得到明证。而VerilogVerilog由于在门级描述上的优势由于在门级描述上的优势,从而被众多的从而被众多的IC

7、IC设计设计人员所采用。人员所采用。VHDL&VERILOG常见的常见的HDLHDL工具工具FPGAExpress:VHDL/VerilogHDL综合软件,简单易用,但有人反映其对VerilogHDL的支持不够强,Synopsys公司出品。n nFPGACompilerIIVHDL/VHDL/VerilogHDLVerilogHDL综综合软件,合软件,SynopsysSynopsys公司出品公司出品n nQuartus:QuartusQuartusIIII是是AlteraAltera公司公司的综合性PLD开发软件,支持原理图、支持原理图、VHDLVHDL、VerilogHDLVerilogHD

8、L以及以及AHDLAHDL等等多种设计输入形式,内嵌自有的综合器以及仿真多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整器,可以完成从设计输入到硬件配置的完整PLDPLD设计流程。设计流程。常见的常见的HDLHDL工具工具Synplify:VHDL/VerilogHDL综合软件。Synplicity公司出品。n nActiveHDLVHDL/VerilogHDL仿真软件,简单易用。Aldec公司出品n nModelsim:VHDL/VerilogHDL仿真软件,功能比ActiveHDL强大,使用比ActiveHDL复杂。Mentor公司出品。常见的常见的HDLH

9、DL工具工具NC-Verilog/NC-VHDL:Cadence公司出品,很好的Verilog/VHDL仿真工具,其中NC-Verilog的前身是著名的Verilog仿真软件:Verilog-XLn nStateCADStateCAD 状态机设计软件,通过画框图可自状态机设计软件,通过画框图可自动生成状态机的动生成状态机的VHDL,VerilogHDLVHDL,VerilogHDL,或或AHDLAHDL源源代码文件。对熟练掌握代码文件。对熟练掌握HDLHDL的人,实用价值不的人,实用价值不高高 n nX-HDLX-HDL:可实现可实现VHDLVHDL和和VerilogVerilog语言的相互自

10、动语言的相互自动转化转化 常见的常见的HDLHDL工具工具VisialVHDL/VisalVerilog:可视化的HDL/Verilog编辑工具,功能类似于Renoirn nRenoirRenoir 通过画框图来完成通过画框图来完成PLD/FPGAPLD/FPGA的系统设计,的系统设计,可自动生成部分可自动生成部分VHDL/VHDL/VerilogHDLVerilogHDL源代码文件,源代码文件,亦可由亦可由VHDL/VHDL/VerilogHDLVerilogHDL源代码生成原理框图。源代码生成原理框图。RenoirRenoir(输入),输入),Leonardo.SpectrumLeonar

11、do.Spectrum(综合)和综合)和ModelsimModelsim(仿真)构成了仿真)构成了MentorMentor公司引以为豪的公司引以为豪的VHDL/VHDL/VerilogHDLVerilogHDL完整开发系统:完整开发系统:FPGAFPGAAdvantageAdvantagePART 2The Basic Structure of VHDL HDL=hardwaredescriptionlanguageTextualHDLsreplacedgraphicalHDLsinthe1980ies(betterdescriptionofcomplexbehavior).1981年美国国防

12、部赞助了一个硬件描述语言年美国国防部赞助了一个硬件描述语言的工作组,的工作组,1983年形成了一个年形成了一个VHSIC(VeryHighSpeedIntegratedCircuits)硬件描述语硬件描述语言标准言标准(VHDL:VHSICHardwareDescriptionLanguage)1984:firstversionofthelanguagedefined,basedonADA(whichinturnisbasedonPASCAL)1987:revisedversionbecameIEEEstandard10761993:revisedIEEEstandardVHDL有过两个标准:

13、有过两个标准:IEEEStd1076-1987(calledVHDL1987)IEEEStd1076-1993(calledVHDL1993)morerecently:VHDL-AMS:includesanalogmodeling 由于由于VHDL的开发环境的主体是仿真的开发环境的主体是仿真模拟器(模拟器(simulator),VHDL的模拟与一般的模拟与一般语言的模拟有以下不同:语言的模拟有以下不同:1.模拟时间模拟时间需要强调的是,这一概念是模需要强调的是,这一概念是模拟所对应硬件的运行时间。它用时间步长规拟所对应硬件的运行时间。它用时间步长规定了相对时间、绝对时间等序列。程序按模定了相对

14、时间、绝对时间等序列。程序按模拟时间运行,相互间的延迟也按模拟时间计拟时间运行,相互间的延迟也按模拟时间计算。算。2.并发性并发性并发性是模拟时间应用中的重要并发性是模拟时间应用中的重要概念。例如,有几个加法器,他们随着模拟概念。例如,有几个加法器,他们随着模拟时间的增长并行工作。其中的每个加法器都时间的增长并行工作。其中的每个加法器都是在输入到来后就工作。这与硬件电路实际是在输入到来后就工作。这与硬件电路实际工作情况是一致的。工作情况是一致的。一个完整的VHDL语言程序通常包含实体实体(Entity)、构造体构造体(Architecture)、配配置置(Configuration)、包集合包

15、集合(Package)和库库(Library)5个部分。实体实体用于描述所设计的系统的外部接口信号;用于描述所设计的系统的外部接口信号;构造体构造体用于描述系统内部的结构和行为;用于描述系统内部的结构和行为;包集合包集合存放各设计模块都能共享的数据类型、存放各设计模块都能共享的数据类型、常数和子程序等;常数和子程序等;配置配置用于从库中选取所需单元来组成系统设用于从库中选取所需单元来组成系统设计的不同版本;计的不同版本;库库存放已经编译的实体、构造体、包集合和存放已经编译的实体、构造体、包集合和配置。配置。2.1 VHDL语言设计的基本单元及其构成语言设计的基本单元及其构成Acircuitor

16、subcircuitdescribedwithVHDLcodeiscalledadesignentity。Thegeneralstructureofanentityhastwomainparts:theentitydeclaration,whichspecifiestheinputandoutputsignalsfortheentity,andthearchitecture,whichgivesthecircuitdetails.VHDLfora2-to-1multiplexer由上面的例子可以看出,实体说明是二选一器件由上面的例子可以看出,实体说明是二选一器件外部引脚的定义;而构造体则描述了

17、二选一器件的逻外部引脚的定义;而构造体则描述了二选一器件的逻辑电路和逻辑关系。辑电路和逻辑关系。一、一、VHDL的基本结构的基本结构ENTITYnand_2IS-定义一个实体定义一个实体PORT(a,b:INSTD_LOGIC;-描述输入输出描述输入输出y:OUTSTD_LOGIC);-信号信号ENDnand_2;LIBRARYIEEE;-IEEE库说明库说明USEIEEE.STD_Logic_1164.ALL;-自定义元件库自定义元件库ARCHITECTURErtlOFnand_2ISBEGIN-结构体说明结构体说明y=NOT(aANDb);ENDrtl;1.USE定义区定义区2.PACKA

18、GE定义区定义区3.ENTITY定义区定义区4.ARCHITECTURE定义区定义区定义元件库定义元件库5.CONFIGURATION定义区定义区定义使用哪些自定义使用哪些自定义元件库定义元件库定义电路实体定义电路实体的外观的外观:I/O接接口的规格口的规格描述电路内部的描述电路内部的逻辑功能逻辑功能决定哪一个决定哪一个architecture被使用被使用1.VHDL基本结构图基本结构图2.2.ENTITY DECLARATION功能功能:描述设计模块的输入:描述设计模块的输入/输出信号或引脚,并给出输出信号或引脚,并给出设计模块与外界的接口。实体类似一个设计模块与外界的接口。实体类似一个“黑

19、盒黑盒”,实体,实体描述了描述了“黑盒黑盒”的输入输出口。的输入输出口。格式格式:ENTITY 实体名实体名ISGENERIC(类属表类属表););PORT(端口表端口表););ENDENTITY实体名实体名实际上,对实际上,对VHDL而言,大写小写都一而言,大写小写都一视同仁,不加区分。只是为了阅读方便,视同仁,不加区分。只是为了阅读方便,我们常常做一些区分。我们常常做一些区分。(1)The name of the entity实体名实体名实际上是器件名,最好根据相应的电路实际上是器件名,最好根据相应的电路功能确定。如功能确定。如4位位2进制计数器用进制计数器用counter4b;8位加法器

20、用位加法器用add8b;3/8译码器用译码器用ym_38。l实体名必须与文件名相同,否则无法编译实体名必须与文件名相同,否则无法编译。l实体名不能用工具库中定义好的元件名实体名不能用工具库中定义好的元件名。l实体名不能用中文,也不能用数字开头。实体名不能用中文,也不能用数字开头。l实体名必须以字母开头,不能以下划线结尾。实体名必须以字母开头,不能以下划线结尾。(2)GENERIC类属表:用以将信息参数传递到实体。类属表:用以将信息参数传递到实体。类属表的一般格式为:类属表的一般格式为:GENERIC(常数名:数据类型(常数名:数据类型:=设定值设定值)GENERIC(awidth:INTEGE

21、R:=3;timex:time);其中:其中:常数名常数名由设计者确定;由设计者确定;数据类型数据类型通常取通常取INTEGER或或time等;在表中提供时间参数、等;在表中提供时间参数、总线宽度等信息。总线宽度等信息。端口表:指明实体的输入、输出信号极其模式。端口表:指明实体的输入、输出信号极其模式。端口表的一般格式为:端口表的一般格式为:PORT(端口名:端口模式(端口名:端口模式数据类型数据类型)端口模式:端口模式:共四种:共四种:IN(输入)、(输入)、OUT(输出)、(输出)、INOUT(双向端口)(双向端口)、BUFFER(输出并向内部反馈)(输出并向内部反馈)(3)PORT数据类

22、型数据类型:VHDL作为一种强类型语言,必作为一种强类型语言,必须对数据对象(常量、变量、信号)规定取值须对数据对象(常量、变量、信号)规定取值范围,即对传输或存储数据的类型作明确的界范围,即对传输或存储数据的类型作明确的界定。定。EXAMPLEENTITYENTITYblack_boxblack_boxISIS GenericGeneric(constantconstantwidth:width:integerinteger:=7:=7;););PORTPORT(clk,rst:clk,rst:ININstd_logicstd_logic;d:d:ININstd_logic_vectorst

23、d_logic_vector(width(width DOWNTODOWNTO 0);0);q:q:OUTOUT std_logic_vectorstd_logic_vector(width(width DOWNTODOWNTO 0);0);co:co:OUTOUT std_logicstd_logic););ENDENDblack_box;black_box;黑盒黑盒黑盒黑盒rstrstd7:0d7:0clkclkq7:0q7:0coco关键字关键字类属参量类属参量端口定义端口定义端口模式端口模式端口模式端口模式 端口数端口数端口数端口数据类型据类型据类型据类型实体结束实体结束Exercis

24、e 1编写包含以下内容的实体代码编写包含以下内容的实体代码端口端口D为为12位输入总线位输入总线端口端口OE和和CLK都是都是1位输入位输入端口端口AD为为12位双向总线位双向总线端口端口A为为12位输出总线位输出总线端口端口INT是是1位输出位输出端口端口AS是一位输出同时被用作内部反馈是一位输出同时被用作内部反馈my_designd11:0oeclkad11:0a11:0intasanswerLIBRARYieee;LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_1164.ALL;ENTITYmy_designISENTIT

25、Ymy_designISPORT(PORT(d:d:ININstd_logic_vector(11DOWNTO0);std_logic_vector(11DOWNTO0);oe,clk:oe,clk:ININstd_logic;std_logic;ad:ad:INOUTINOUTstd_logic_vector(11DOWNTOstd_logic_vector(11DOWNTO0);0);a:a:OUTOUT std_logic_vector(11DOWNTO0);std_logic_vector(11DOWNTO0);int:int:OUTOUT std_logic;std_logic;as

26、:as:BUFFERstd_logic);BUFFERstd_logic);ENDmy_design;ENDmy_design;my_designd11:0oeclkad11:0a11:0intasExercise 21、编写包含全加器的实体代码。编写包含全加器的实体代码。2、编写、编写4选选1数据选择器的实体代码。数据选择器的实体代码。Full_adderabcsumco3.ACHITECTURE结构体:结构体:通过若干并行语句来描述设计实体的通过若干并行语句来描述设计实体的逻辑功能逻辑功能(行为描述)或(行为描述)或内部电路结构内部电路结构(结构(结构描述),从而建立设计实体输出与输入之间

27、的描述),从而建立设计实体输出与输入之间的关系。一个设计实体可以有多个结构体。关系。一个设计实体可以有多个结构体。格式:格式:ARCHITECTURE ARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 说明语句;说明语句;BEGIN BEGIN 并行语句;并行语句;END ARCHITECTURE END ARCHITECTURE 结构体名结构体名;93版本有,版本有,87没有。没有。VHDL结构体术语结构体术语说明语句:说明语句:用于定义结构体中所用的数据对象和子用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,但不能定义变程序,并对所引用的元件

28、加以说明,但不能定义变量。量。并行语句并行语句 并行语句有五种类型,可以把它们看成并行语句有五种类型,可以把它们看成结构体的五种子结构。这五种语句结构本身是并行结构体的五种子结构。这五种语句结构本身是并行语句,但内部可能含有并行运行的逻辑描述语句或语句,但内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句,如进程内部包含的即为顺序运行的逻辑描述语句,如进程内部包含的即为顺序语句。顺序语句。五种语句结构分别为块语句、进程语句、信号赋值五种语句结构分别为块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。语句、子程序调用语句和元件例化语句。结结构构体体结结构构图图结构体结构体说明

29、语句说明语句功能描述语句功能描述语句块语句块语句进程语句进程语句信号赋值语句信号赋值语句子程序调用语句子程序调用语句元件例化语句元件例化语句定义顺序语句模块,用从外部定义顺序语句模块,用从外部获得的信号值,或内部的运算获得的信号值,或内部的运算数据向其它的信号进行赋值。数据向其它的信号进行赋值。将设计实体内的处理结果向将设计实体内的处理结果向定义的信号或界面端口进行定义的信号或界面端口进行赋值赋值用以调用过程或函数,并将用以调用过程或函数,并将获得的结果赋值于信号。获得的结果赋值于信号。元件调用,用来调用另一个元件调用,用来调用另一个实体所描述的电路。实体所描述的电路。由若干并行执行语句包装由

30、若干并行执行语句包装在一起形成一个子模块。在一起形成一个子模块。The relationship between the entity and architectureInput1InputnOutput1OutputnENTITYA AB BC CD DSeSel lMUX_OutMUX_Out2 2Structure描述描述 描述该设计单元的硬件结构描述该设计单元的硬件结构,即即该硬件是如何构成的该硬件是如何构成的,类似于数字电路中的逻辑图描类似于数字电路中的逻辑图描述述.Date Flow描述描述 它是类似于寄存器传输级的方它是类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的

31、各种寄式描述数据的传输和变换,以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。存器形式为特征,然后在寄存器之间插入组合逻辑。与数字电路中的真值表描述相似。与数字电路中的真值表描述相似。Behavior Process描述描述 只描述所希望电路的功只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。与数字电有指明或涉及实现这些行为的硬件结构。与数字电路中的逻辑表达式描述相似。路中的逻辑表达式描述相似。Three kinds of description for the architect

32、urearchitectureoneofmux21issingled,e:bit;begind=aand(not)s;e=bands;y=dore;endone;Structure DescriptionLogic graphLogic grapharchitectureoneofmux21isbeginy=(aand(nots)or(bands);endone;Logic functionsLogic functionsBehavior Process Description architectureoneofmux21isbeginy=awhens=0elseb;endone;Truth

33、tablesDate Flow Description结构体结构体行为描述举例行为描述举例2X8InputANDgate:ENTITYblack_boxISENTITYblack_boxISPORT(PORT(a,b:a,b:ININstd_logic_vectorstd_logic_vector(7(7DOWNTODOWNTO0);0);y:y:OUTOUT std_logic_vectorstd_logic_vector(7(7DOWNTODOWNTO0);0);ENDblack_box;ENDblack_box;ARCHITECTUREARCHITECTUREexampleexample

34、OFOFblack_boxblack_boxISISBEGINBEGINy=aANDb;y=aANDb;ENDENDexample;example;操作案例操作案例1、操作题目:、操作题目:通过通过3 3 8 8译码器的设计实例,从译码器的设计实例,从整体结构上初步认识整体结构上初步认识VHDLVHDL的基本结构和语句的基本结构和语句特点。特点。2 2、3 3 8 8译码器的电路图译码器的电路图如图所示如图所示,有,有4 4个输入个输入端(端(A0A0、A1A1、A2A2、ENEN),),8 8个输出端(个输出端(Y0Y0Y7Y7)3 3、步骤:定义元件库、实体、结构体、编译、步骤:定义元件库

35、、实体、结构体、编译、仿真。仿真。返回A0A1A2ENY0Y1Y2Y3Y4Y5Y6Y73-8译码器译码器PART 3 Basic Data Type in VHDL Code一、一、Data Objects(Data Objects(是数据类型的载体是数据类型的载体)Information is represented in VHDL code as data Information is represented in VHDL code as data objects.Three kinds of data objects are provided:objects.Three kinds o

36、f data objects are provided:ConstantConstant(常量)(常量)VariableVariable(变量)(变量)SignalSignal(信号)(信号)对象的说明格式为:对象的说明格式为:对象类别对象类别 标识符表:类型标识标识符表:类型标识:=初值初值 例例例例 :数据对象名数据对象名 数据对象类型数据对象类型 数据对象值的类型数据对象值的类型(1 1)常量声明)常量声明 常量是全局量常量是全局量,在结构描述、程序包说明、在结构描述、程序包说明、实体说明、过程说明、函数调用说明和进程说明实体说明、过程说明、函数调用说明和进程说明中使用。中使用。例:例:

37、constant WIDTH:INTEGER:=8;constant delay:TIME:=25ns;(2 2)变量声明)变量声明定义了给定类型的变量名称。定义了给定类型的变量名称。例:例:variableA,B:BIT;variableINIT:NEW_BIT变量赋值变量赋值整体赋值:整体赋值:temp:=“10101010”;temp:=x”AA”;逐位赋值逐位赋值:temp(7):=1;多位赋值多位赋值temp(7 downto 4):=“1010”;多位赋值多位赋值用双引号用双引号逐位赋值逐位赋值用单引号用单引号赋值标志赋值标志(3 3)信号声明)信号声明信号可以将结构体中分离的并行

38、语句连接起来,信号可以将结构体中分离的并行语句连接起来,并且通过端口其他模块与该设计内的连接起来。并且通过端口其他模块与该设计内的连接起来。信号为器件内部节点信号,数据的进出不像端口信号为器件内部节点信号,数据的进出不像端口信号为器件内部节点信号,数据的进出不像端口信号为器件内部节点信号,数据的进出不像端口信号那样受限制,不必定义其端口模式。信号那样受限制,不必定义其端口模式。信号那样受限制,不必定义其端口模式。信号那样受限制,不必定义其端口模式。定义信号的目的是为了在设计电路时使用该信号。定义信号的目的是为了在设计电路时使用该信号。定义信号的目的是为了在设计电路时使用该信号。定义信号的目的是

39、为了在设计电路时使用该信号。用用用用“=”=”来给信号赋值来给信号赋值来给信号赋值来给信号赋值 例:例:signalA,B:BIT;signalINIT:INTEGE:=-1信号赋值信号赋值SIGNALtemp:Std_Logic_Vector(7downto0);整体赋值整体赋值:temp=“10101010”;temp=x”AA”;逐位赋值逐位赋值:temp(7)=1;多位赋值多位赋值:temp(7 downto 4)=“1010”;多位赋值多位赋值用双引号用双引号逐位赋值逐位赋值用单引号用单引号赋值标志赋值标志信号举例信号举例LIBRARYieee;USEieee.std_logic_1

40、164.all;ENTITYsimpISPORT(a,b,c,d:INStd_Logic;g:OUTStd_Logic);ENDsimp;ARCHITECTURElogicOFsimpISSIGNALe,f:Std_Logic;BEGINe=aorb;f=not(cord);g=eandf;ENDlogic;a ab bc cd dg gef f端口信号端口信号在构造体内声明在构造体内声明的内部连接信号的内部连接信号信号和变量的作用范围信号和变量的作用范围ARCHITECTURESIGNAL描述描述label1:PROCESS1VARIABLE描述描述label2:PROCESS2VARIAB

41、LE描述描述在进程的外面声明在进程的外面声明作用范围为全局作用范围为全局在进程内部说明在进程内部说明作用范围为进程内作用范围为进程内信号和变量的区别信号和变量的区别信号信号变量变量赋值符赋值符号号=:=功能功能电路的内部连接电路的内部连接内部数据交换内部数据交换作用范作用范围围全局,进程和进程之全局,进程和进程之间的通信间的通信进程的内部进程的内部行为行为延迟一定时间后才赋延迟一定时间后才赋值值立即赋值立即赋值信号、变量、信号、变量、常数对比常数对比1、定义、定义SignalA:std_logic;VariableA:std_logic_vector(7downto0);ConstantA:i

42、nteger:=6;2、赋值及赋值时刻、赋值及赋值时刻A=“1010”;(延时);(延时)A:=“1010”;(立刻)(立刻)3、定义区域、定义区域信号:实体、结构体、程序包信号:实体、结构体、程序包变量:进程、子程序变量:进程、子程序常数:实体、结构体、程序包、块、进程、子程序常数:实体、结构体、程序包、块、进程、子程序4、适用范围、适用范围信号:实体、结构体、程序包信号:实体、结构体、程序包变量:定义了变量的进程、子程序的顺序语变量:定义了变量的进程、子程序的顺序语句中句中常数:视其定义的位置而定常数:视其定义的位置而定若常数定义在实体中,适用范围是实体所对若常数定义在实体中,适用范围是实

43、体所对应的有结构体。应的有结构体。若常数定义在结构体中,适用范围就是本结若常数定义在结构体中,适用范围就是本结构体。构体。现在来看一下例中两个进程描述的语句。首先,由现在来看一下例中两个进程描述的语句。首先,由于信号于信号A发生变化使进程语句开始执行。这样一来,仿发生变化使进程语句开始执行。这样一来,仿真器对进程中的各语句自上至下的进行处理。真器对进程中的各语句自上至下的进行处理。尽管尽管D中先代入中先代入A值,后代入值,后代入C值,在时间上有一个延时,值,在时间上有一个延时,但是在代入时由于不进行处理,因此仿真时认为是时间但是在代入时由于不进行处理,因此仿真时认为是时间0值延时。值延时。因此

44、因此D的最终值应为的最终值应为C。结果:这里这里D是变量。在执行是变量。在执行“D:=A;”语句以后,语句以后,A的值就被赋的值就被赋给给D,所以所以X为为B+A.此后又执行此后又执行“D:=C;”,从而使从而使Y为为B+C。所以,从这两个例题可以看出,信号量的值将进程语句所以,从这两个例题可以看出,信号量的值将进程语句最后所代入的值作为最终代入值。而变量的值一经赋值就变最后所代入的值作为最终代入值。而变量的值一经赋值就变成新的值。这就是变量赋值和信号代入在操作上的区别。成新的值。这就是变量赋值和信号代入在操作上的区别。执行结果为:执行结果为:x=cxorb,y=cxorb 执行结果为:执行结

45、果为:x=cxora,y=cxorb 二、二、Data TypeData Type 1.1.标准定义的数据类型标准定义的数据类型 不必用不必用USEUSE说明而直接使用。说明而直接使用。1 1)Boolean(Boolean(布尔量):取值为布尔量):取值为FALSEFALSE和和TRUETRUE。2 2)CharacterCharacter(字符):使用时用(字符):使用时用单引号单引号括起来,括起来,如:如:AA。注意:此时要分大小写,与注意:此时要分大小写,与aa不不一样。一样。3 3)StringString(字符串):使用时用(字符串):使用时用双引号双引号括起来,如:括起来,如:1

46、11000101 111000101 。4 4)IntegerInteger(整数):范围在(整数):范围在-(2 23131-1-1)()(2 23131-1 1)5 5)RealReal(实数):范围在(实数):范围在-1.0E+38-1.0E+38+1.0E+38+1.0E+38 6 6)Bit(Bit(位位):):取值为取值为0 0或或1.1.7 7)Time(Time(时间时间):):取值范围与整数一致取值范围与整数一致,一般用于仿一般用于仿真。真。整数与单位之间至少留一个空格:整数与单位之间至少留一个空格:5 sec5 sec8 8)Bit_vectorBit_vector(位矢量

47、):基于(位矢量):基于BITBIT数据类型的数数据类型的数组。使用时必需注明宽度。组。使用时必需注明宽度。9 9)NaturalNatural(自然数)和(自然数)和Positive(Positive(正整数正整数):):是整是整数的一个子类型。数的一个子类型。1010)Severity levelSeverity level(错误等级):用来设计系统(错误等级):用来设计系统的工作状态。有四种状态值:的工作状态。有四种状态值:NOTE(NOTE(注意注意)、WARNING(WARNING(警告警告)、ERROR(ERROR(错误错误)、FAILURE(FAILURE(失败失败)。由于VHD

48、L 语言属于强类型语言,在仿真过程中,首先要检查赋值语句中的类型和区间,任何一个信号和变量的赋值均须落入给定的约束区间中,也就是说要落入有效数值的范围中。约束区间的说明通常跟在数据类型说明的后面。例如:INTEGER RANGE 100 DOWNTO 1 BIT_VECTOR(3 DOWNTO 0)REAL RANGE 2.0 TO 30.0这里,DOWNTO表示下降,TO 表示上升2.2.用户自定义的数据类型用户自定义的数据类型1 1)Enumeration TypesEnumeration Types(枚举类型)格式如下:(枚举类型)格式如下:TYPE TYPE 数据类型名数据类型名 IS

49、 IS(枚举文字,枚举文字(枚举文字,枚举文字););例如:例如:TYPE color IS(red,green,yellow,blue);TYPE color IS(red,green,yellow,blue);TYPE level IS(0,1,Z);TYPE level IS(0,1,Z);2)Integer Types2)Integer Types(整数类型)和(整数类型)和 Real TypesReal Types(实(实数类型)格式为:数类型)格式为:TYPE TYPE 数据类型名数据类型名 IS RANGE IS RANGE 约束范围;约束范围;例如:例如:TYPE int IS

50、 INTEGER RANGE-10 TO 10;TYPE int IS INTEGER RANGE-10 TO 10;3)Array Types(3)Array Types(数组类型)格式如下:数组类型)格式如下:TYPE TYPE 数据类型名数据类型名 IS IS ARRAYARRAY(索引范围)(索引范围)OFOF类型名称类型名称 ;例如例如:TYPE a IS ARRAY(integer0 TO 9)OF std_logic;:TYPE a IS ARRAY(integer0 TO 9)OF std_logic;3.IEEE3.IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量 在在I

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁