首页 在系统可编程技术与应用(第四章_语言概述_基本结构_语言元素)

在系统可编程技术与应用(第四章_语言概述_基本结构_语言元素)

举报
开通vip

在系统可编程技术与应用(第四章_语言概述_基本结构_语言元素)第四章 VHDL语言4.1VHDL语言概述4.2VHDL基本结构4.3VHDL语言元素4.4VHDL的描述风格4.5VHDL的主要描述语句4.6设计举例4.1VHDL语言概述VHDL:VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage超高速集成电路硬件描述语言1.硬件描述语言的诞生与发展人们为了把复杂的电子电路用文字文件方式描述并保存下来,方便他人了解电路内容,就诞生了最初的硬件描述语言。到了90年代后期,由于硬件描述语言的完善,尤其是相应的编译,测试...

在系统可编程技术与应用(第四章_语言概述_基本结构_语言元素)
第四章 VHDL语言4.1VHDL语言概述4.2VHDL基本结构4.3VHDL语言元素4.4VHDL的描述风格4.5VHDL的主要描述语句4.6设计举例4.1VHDL语言概述VHDL:VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage超高速集成电路硬件描述语言1.硬件描述语言的诞生与发展人们为了把复杂的电子电路用文字文件方式描述并保存下来,方便他人了解电路内容,就诞生了最初的硬件描述语言。到了90年代后期,由于硬件描述语言的完善,尤其是相应的编译,测试,合成,布线等电子设计自动化(EDA)工具软件的发展与完善,硬件描述语言(HDL)终于进入了成熟实用阶段。这无疑是(数字)电路设计史上最具革命性的飞跃。自此,人们实现了用简明易懂的高级编程语言设计复杂硬件电路的梦想。只要具备一定的硬件专门知识,就能随心所欲地设计出功能十分强大的专用智能电路,实现了“以软代硬”。当前国内外主流硬件描述语言有VHDL和VerilogHDL。VHDL1980年:美国国防部制定VHSIC(VeryHighSpeedIntegratedCircuit) 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 。1983年:IBM、TI和Intermetrics联合开发语言和仿真工具(VHDL)主要考虑自顶向下的设计和工艺进步引起的系统升级。1985年完成第一版。1987年:美国国防部要求所有数字电路用VHDL描述,并决定F-22战斗机项目采用VHDL,发布IEEE标准IEEE1076-1987。1993年增修为IEEE1164标准并使用至今。1996年又加入电路合成标准程序和规格,成为IEEE1076.3标准。美国国防部 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 其为官方ASIC设计语言。1995年,中国国家技术监督局出版的《CAD通用技术规范》中,推荐VHDL为我国硬件描述语言的国家标准。VerilogHDL以C语言为基础,由GDA(GatewayDesignAutomation)公司的PhilMoorby创建于1983年。1989年CADENCE公司收购了GDA公司,拥有了VerilogHDL的独家专利。于1990年正式发表了VerilogHDL,并成立OVI(OpenVerilogInternational)组织推进其发展。1995年CADENCE公司放弃了VerilogHDL专利,使之成为IEEE标准(IEEE1364)。2.VHDL与VerilogHDL的比较不存在优劣之分。相同电路用这两种硬件描述语言分别编码,长度也大体相同。现在常用的各种仿真/综合工具均为二者通用。在日本,VHDL用户略多于VerilogHDL,例如:NEC,日立,福田电子,丸文等公司通常习惯使用VHDL;而松下,CASIO等公司习惯使用VerilogHDL。和习惯有关,一个公司通常习惯于使用其中一种。3.VHDL与其他HDL比较VHDL—“告诉我你想要电路做什么,我给你提供能实现这个功能的硬件电路”。VerilogHDL—和VHDL类似。ABEL、AHDL—“告诉我你想要什么样的电路,我给你提供这样的电路”。4.国内硬件描述语言书籍的常见问题往往片面夸大某一种硬件描述语言的长处。书中的例子尽管都声称通过了仿真合成验证,但仍常见一些语法错误,编译时会出现“错误”或“警告”。请大家不要过分相信教科书上的语法。脱离实际应用,仅仅介绍最基本的概念和语法规定,虽有较复杂的例子但却少有解释,难于理解。对实际应用中至关重要的编码技巧和避免出错的注意事项,却往往只字不提。因此,新手入门往往要走很长的弯路。5.硬件描述语言的近期发展目前及今后若干年内,VHDL和VerilogHDL仍将是硬件描述语言主角。因为它们已经经过无数应用实例的验证,能够满足各类复杂的逻辑功能要求,各种配套工具软件也非常成熟完善。至于SpecC,SystemC等新型硬件描述语言,将来成为主流还是被淘汰出局,则与语言本身以及各种配套工具软件是否功能更加强大,使用更加简便,更易于学习掌握,以及与人们已经习惯的语言及工具是否有相似性和延续性等因素有关。6.硬件描述语言(VHDL)的突出优点打破了IC设计者与使用者的界线,使原先的IC使用者在掌握了VHDL之后,都变成了IC设计者,都能够随心所欲地设计出具备多个CPU功能的复杂专用芯片。VHDL及其配套工具软件简单易学,直观明了,便于迅速掌握,也便于修改。极大地缩短了专用芯片的开发周期,降低开发成本,加快了产品更新换代的速度,提高产品的市场竞争力。大大缩小电路板面积和整机体积,提高产品可靠性,增强产品功能,实现技术保密。可实现电路设计的模块化和积木式多级组合。各模块均可在今后被重复再利用(调用)。完全实现拥有整机的自主知识产权,不再在关键芯片(专用芯片)的进口及价格方面受制于人。这一点对目前我国尤为重要。7.VHDL程序设计约定语句结构描述中方括号[]内的内容为可选内容。对于VHDL的编译器的综合器来说,程序文字的大小写是不加区分的。建议:对于VHDL中使用的关键词用大写,对于由用户自己定义的名称等用小写。程序中的注释使用双横线--。在VHDL程序中,双横线后的程序或文字都不参加编译和综合。为了使同一个VHDL源程序文件能适应各个EDA开发软件上的使用要求,各个源程序文件的命名均与实体名一致。4.2VHDL基本结构4.2.1实体4.2.2结构体4.2.3块、子程序和进程4.2.4库和程序包4.2.5配置实际器件外观库程序包实体元件定义结构体逻辑功能描述2选1多路选择器的VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21ISPORT(a,b:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYmux21;ARCHITECTUREbehaveOFmux21ISBEGINy<=aWHENs='0'ELSEbWHENs='1';ENDARCHITECTUREbehave;VHDL程序的基本结构实体(ENTITY)结构体(ARCHITECTURE)[配置(CONFIGURATION)][库、程序包使用说明]GENERIC类属说明PORT端口说明结构体说明结构体功能描述设计实体设计实体是VHDL语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的。设计实体通常包含实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、包集合(PACKAGE)和库(LIBRARY)5个部分。其中实体和结构体这两个基本结构是必需的,他们可以构成最简单的VHDL程序。实体是对这个设计实体与外部电路进行接口的描述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。结构体用于描述此设计实体的逻辑结构和逻辑功能。4.2.1实体实体功能:对设计实体与外部电路进行接口描述。实体语句结构:ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]ENDENTITY实体名;ENTITYmux21ISPORT(a,b:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYmux21;实体名端口表2选1多路选择器实体应以语句“ENTITY实体名IS”开始。语句“ENDENTITY实体名;”结束。在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(I/O)接口。在一个器件级的设计中,实体说明是一个芯片的输入输出(I/O)。1.类属(GENERIC)说明语句类属说明语句是实体中的可选项,放在端口说明之前。类属说明的一般格式为:GENERIC(常数名:数据类型[:=设定值];…常数名:数据类型[:=设定值]);GENERIC(trise,tfall:TIME:=1ns;Addrwidth:INTEGER:=16);PORT(a0,a1:INSTD_LOGIC;Add_bus:OUTSTD_LOGIC_VECTOR(addrwidth-1DOWNTO0);这里类属参量中参数trise为上升沿宽度,tfall为下降沿宽度,用于仿真模块的设计。定义地址总线的宽度为Addrwidth位,类属值Addrwidth的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。例:2.端口(PORT)说明语句由PORT引导的端口说明语句是对一个设计实体界面的说明。格式如下:PORT(端口名:端口模式数据类型;…端口名:端口模式数据类型);端口名端口名是设计者为实体的每一个对外通道所取的名字。通常为英文字母加数字,名字的定义有一定的惯例,如clk表示时钟,D开头的端口名表示数据,A开头的端口名表示地址。端口模式定义端口上数据的流动方向和方式。IN:单向只读模式,数据只能通过此端口被读入实体中。OUT:单向输出模式,数据只能通过此端口从实体向外流出,或者说将实体中的数据向此端口赋值。INOUT:输入输出双向端口。BUFFER:功能与INOUT类似,区别在于允许内部回读输出的信号,即反馈。INOUTINOUTBUFFER端口模式OUT与BUFFER的区别LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtest2ISport(a:inSTD_LOGIC;b:bufferSTD_LOGIC;c:outSTD_LOGIC);ENDtest2;ARCHITECTUREbehaveOFtest2ISBEGINb<=not(a);c<=b;ENDbehave;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtest1ISport(a:inSTD_LOGIC;b,c:outSTD_LOGIC);ENDtest1;ARCHITECTUREbehaveOFtest1ISBEGINb<=not(a);c<=b;--错误!ENDbehave;在VHDL设计中,通常将输入信号端口指定为输入模式;输出信号端口指定为输出模式;而双向数据通信信号,如计算机PCI总线的地址/数据复用总线,DMA控制器数据总线等纯双向的信号采用双向端口模式。从端口的名称、模式就能一目了然地指导信号的用途、性质、来源和去向。4.2.2结构体结构体描述设计实体的结构和行为,即描述一个实体的功能。结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。结构体是对实体功能的具体描述,因此它一定要跟在实体的后面。结构体一般由两大部分组成:对数据类型、常数、信号、子程序和元件等因素进行说明的部分;描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种顺序语句和并行语句。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种功能描述语句的基本组成和功能块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。子程序调用语句可以调用进程或参数,并将获得的结果赋值于信号。元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。ENTTITYmux2ISPORT(d0,d1:INBIT;sel:INBIT;s:OUTBIT);ENDmux2;ARCHITECTUREdataflowOFmux2ISSIGNALsig:BIT;BEGINSig<=(d0ANDsel)OR(NOTselANDd1);S<=sig;ENDdataflow;功能描述语句信号定义语句(内部信号,无方向)例:2选1数据选择器4.2.3块、子程序和进程1.块语句(BLOCK)在较大规模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子原理图。在VHDL程序设计中,结构体是由多个BLOCK块构成的,如果将结构体比做总电路原理图,那么,每个BLOCK块则相当于一张子原理图。块标号:BLOCK接口说明类属说明BEGIN并行块语句ENDBLOCK(块标号);BLOCK块语句的结构例: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[(敏感信号表)][IS][进程说明语句]BEGIN顺序描述语句ENDPROCESS[进程标号];注意:在多个进程的结构体描述中,进程标号是区分各个进程的标志。但是进程标号并不是必需的。单进程以PROCESS开始,以ENDPROCESS结束。PROCESS语句的结构LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYnor2_v2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDnor2_v2;--y<=NOT(aORb)例:两输入或非门ARCHITECTUREbehaveOFnor2_v2ISBEGINPROCESS(a,b)VARIABLEcomb:STD_LOGIC_VECTOR(1DOWNTO0);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)过程语句的书写格式为:PROCEDURE过程名(参数表)IS[说明部分]BEGIN过程语句部分ENDPROCEDURE过程名;过程(PROCEDURE)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所定义的变量中,完成子程序和主程序之间的数据传递。函数的语言书写格式为:FUNCTION函数名(参数表)RETURN数据类型IS[说明部分];BEGIN顺序语句;RETURN[返回变量名];ENDRETURN函数名;函数库和程序包用来描述和保留元件、类型说明函数、子程序等,以便在其它设计中可以随时引用这些信息,提高设计效率。4.2.4库和程序包库是经编译后的数据的集合,它存放包集合定义、实体定义、结构定义和配置定义。库语句的格式为:LIBRARY库名;1.库(LIBRARY)USE语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可以进入访问或调用,但其作用范围仅限于所说明的设计实体。USE语句的使用将使所说明的程序包对本设计实体部分或全部开放。USE语句USE库名.程序包名.项目名;USE库名.程序包名.ALL;第一种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所选定的项目。第二种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所有内容。USE语句有以下两种常用的格式:例如: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--CONFIGURATION(配置)┇ANDc1;LIBRARYIEEE;--库使用说明USEIEEE.STD_LOGIC_1164.ALL;ENTITYorISCONFIGURATIONc2OFandIS┇ANDc2;2.程序包程序包主要用来存放各个设计都能共享的数据类型、子程序说明、属性说明和元件说明等部分。设计者使用时只要用USE子句进行说明即可。程序包由两部分组成:程序包首和程序包体程序包的一般书写格式如下:PACKAGE程序包名ISEND[PACKAGE]程序包名;--程序包首PACKAGEBODY程序包名IS┇--程序包体END[PACKAGEBODY][程序包名];程序包由程序包首和程序包体两部分组成。程序包首定义了数据类型和函数的调用说明。程序包体中才具体描述实现该函数功能的语句和数据的赋值。这种分开描述的好处是,当函数的功能需要做某些调整或数据赋值需要变化时,只要改变程序包体的相关语句就可以了,而无需改变程序包首的说明,这样就使得需要重新编译的单元数目尽可能的减少了。4.2.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<库名>.<实体名(结构体名)>;4.3VHDL语言元素4.3.1VHDL语言的数据对象4.3.2VHDL语言的数据类型4.3.3VHDL数据类型转换4.3.4VHDL运算符4.3.5VHDL词法规则与标识符4.3.1VHDL语言的数据对象数据对象有三种:常量(CONSTANT)变量(VARIABLE)信号(SIGNAL)1.常量(CONSTANT)常量是指在设计实体中不会发生变化的值。常量可以在很多部分进行说明。常量的使用范围取决于它被定义的位置。常量可以是任何的数据类型。常数说明语句格式为:CONSTANT常数名:数据类型:=表达式;例如:CONSTANTVcc:REAL:=5.0;CONSTANTFbus:BIT_VECTOR:=“1011”;CONSTANTDelay:TIME:=10ns;注:常量是一个恒定不变的值,一旦做了数据类型和赋值定义,它在程序中就不能再改变。2.变量(VARIABLE)变量是指在设计实体中会发生变化的值。变量只能在进程和子程序中用,是一个局部量。与信号不同,变量的赋值是理想化数据传输,其赋值是立即生效的,不存在任何的延时行为。变量定义语句的格式为:VARIABLE变量名:数据类型:约束条件:=初始值;例如:VARIABLEn:INTEGERRANGE0TO15:=2;VARIABLEa:INTEGER;变量赋值语句的格式为:目标变量名:=表达式;赋值语句“:=”右边的表达式必须与目标变量具有相同的数据类型,这个表达式可以是一个运算表达式也可以是一个数值。变量赋值语句左边的目标变量可以是单值变量,也可以是变量的集合。VARIABLEx,y:REAL;VARIABLEa,b:STD_LOGIC_VECTOR(7DOWNTO0);x:=100.0;--实数赋值y:=1.5+x;--运算表达式赋值a:=“10111011”;–位矢量赋值a(0TO5):=b(2TO7);--段赋值变量赋值时,新的变量值的获得是立即发生的。例如:3.信号(SIGNAL)信号是描述硬件系统的基本数据对象,它是电子电路内部硬件连接的抽象。信号的定义和使用范围:实体、结构体和程序包。在进程中不允许定义信号,只能将信号列入敏感表。信号定义语句的格式为:SIGNAL信号名:数据类型:约束条件:=表达式;例如:SIGNALgnd:BIT:=‘0’;SIGNALdata:STD_LOGIC_VECTOR(7DOWNTO0);注意:变量和信号都必须先定义,后赋值。注意赋值符“<=”和“:=”的差别。信号信号赋值语句表达式为:目标信号名<= 表达式;符号“<=”表示赋值操作,即将数据信息传入。数据信息传入时可以设置延时过程,这与器件的实际传播延时十分接近。信号定义时初始赋值符号“:=”,即仿真的时间坐标是从赋初始值开始的。信号赋值语句举例:x<=y;a<=‘1’;s1<=s2AFTER10ns;4.信号与变量的区别信号赋值有延时,而变量赋值没有。进程对信号敏感,而对变量不敏感。信号可以是多个进程的全局信号,而变量只在定义它们的顺序域可见(除共享变量)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。信号使用赋值符号“<=”,变量使用赋值符号“:=”。4.3.2VHDL语言的数据类型对VHDL的数据对象进行定义时,要指定其数据类型。VHDL有多种标准的数据类型,并允许用户自定义数据类型。在VHDL语言语义约束中,对类型的要求反映在赋值语句的目标与源的一致,表达式中操作的一致,子类型中约束与类型的一致等许多方面。VHDL中预定义的数据类型,编程者可直接使用。VHDL中的数据类型可以分为四大类。标量类型(ScalarType):包括实数类型、整数类型、枚举类型和物理类型。复合类型(CompositeType):包括数组型和记录型。存取类型(AccessType)文件类型(FileType)1.整数(INTEGER)整数与数学中整数的定义相似,可以使用预定义运算操作符,如加“+”、减“-”、乘“×”、除“÷”进行算术运算。在VHDL语言中,整数的表示范围为-2147483647~2147483647,即从-(231-1)到(231-1)。VHDL的预定义数据类型例如:2.实数(REAL)在进行算法研究或实验时,作为对硬件 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的抽象手段,常常采用实数四则运算。实数的定义值范围为-1.0E+38~+1.0E+38。实数有正负数,书写时一定要有小数点。例如:-1.0,+2.5,-1.0E+38。3.位(BIT)取值只能是‘1’或‘0’(将值放在引号中)表示。与整数中的1和0不同,‘1’和‘0’仅仅表示一个位的两种取值。如:CONSTANTc:BIT:=‘1’;VARIABLEq:BIT:=‘0’;SIGNALa,b:BIT;4.位矢量(BIT_VECTOR)位矢量是基于BIT数据类型的数组,它是使用双引号括起来的一组位数据。例如:“001100”,X“00bb”,在这里位矢量前面的X表示是十六进制。用位矢量数据表示总线状态最形象也最方便,在VHDL程序中将会经常遇到。使用位矢量时必须注明位宽,即数组中元素个数和排列。例如:SIGNALs1:BIT_VECTOR(15DOWNTO0);5.布尔量(BOOLEAN)一个布尔量具有两种状态,“FALSE”或者“TRUE”。布尔量是二值枚举量。布尔量和位不同,没有数值的含义。布尔量不能进行算术运算。布尔量能进行关系运算。6.字符(CHARACTER)字符也是一种数据类型,所定义的字符量通常用单引号括起来,如‘a’。一般情况下VHDL对大小写不敏感,但对字符量中的大小写则认为是不一样的。例如,‘B’不同于‘b’。字符量中的字符可以是从a到z中的任一个字母,从0到9中的任一个数以及空格或者特殊字符,如$,@,%等。包集合standard中给出了预定义的128个ASCⅡ码字符,不能打印的用标识符给出。字符‘1’与整数1和实数1.0都是不相同的,当要明确指出1的字符数据时,可写为:CHARACTER(‘1’)。7.字符串(STRING)字符串是由双引号括起来的一个字符序列,也称字符矢量。字符串常用于程序的提示和说明。例如:VATIABLEstring_1:STRING(0TO3);┇string_1:=“abcd”;8.时间(TIME)时间是一个物理量数据。完整的时间量数据应包含整数和单位两部分,而且整数和单位之间至少应留一个空格的位置。例如55sec,2min等。在包集合STANDARD中给出了时间的预定义,其单位为fs,ps,ns,μs,ms,sec,min和hr。例如:20μs,100ns,3sec。在系统仿真时,时间数据特别有用,用它可以表示信号延时,从而使模型系统能更逼近实际系统的运行环境。9.错误等级(SEVERITYLEVEL)错误等级类型数据用来表征系统的状态,共有4种:note(注意),warning(警告),error(出错),failure(失败)。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况,从而使设计人员随时了解当前系统工作的情况,并根据系统的不同状态采取相应的对策。10.大于等于零的整数(自然数)(NATURAL),正整数(POSITIVE)这两种数据是整数的子类。NATURAL类数据为取0和0以上的正整数。POSITIVE只能为正整数。这上述10种数据类型是VHDL语言中标准的数据类型,在编程时可以直接引用。如果用户需使用这10种以外的数据类型,则必须进行自定义。但大多数的CAD厂商已在包集合中对标准数据类型进行了扩展。例如,数组型数据等,请同学们注意。11.用户自定义的数据类型可以由用户定义的数据类型有:枚举(ENUMERATED)类型;整数(INTEGER)类型;实数(REAL)、浮点数(FLOATING)类型;数组(ARRAY)类型;存取(ACCESS)类型;文件(FILE)类型;记录(RECORDE)类型;时间(TIME)类型(物理类型)。12.IEEE预定义标准IEEE93增加了多值逻辑包STD_LOGIC_1164,使得“STD_LOGIC”数据具有9种不同的值。其定义如下所示:TYPESTD_LOGICIS(‘U’,--初始值‘X’,--不定‘0’,--0‘1’,--1‘Z’,--高阻‘W’,--弱信号不定‘L’,--弱信号0‘H’,--弱信号1‘—’--不可能情况);
本文档为【在系统可编程技术与应用(第四章_语言概述_基本结构_语言元素)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
hs154
hx主要从事图文设计、ppt制作,范文写作!
格式:ppt
大小:550KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2021-10-12
浏览量:1