




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.3VHDL数据类型及运算操作符,3.3.1数据对象3.3.2词法规则与标识符3.3.3数据类型3.3.4运算操作符,主要内容,VHDL四类语言要素,数据对象数据类型运算操作数运算操作符,对象(object):可赋予一个值的客体VHDL对象的3种基本数据类型:常量(CONSTANT)变量(VARIABLE)信号(SIGNAL),3.3.1数据对象,对象的物理含义:常量:数电中电源、地等常数变量:暂存某些值的载体信号:物理设计中的某一条硬件连线,包括输入、输出端口,变量:局部量,仅用于process语句、子程序(function、procedure)信号:全局量,用于entity,architecture、package常量:全局量,可用于上面两种场合,对象的特点及使用场合:,用在进程语句、子程序中,变量是一个局部量,其作用范围仅限在定义了变量的进程和子程序中。书写格式:VARIABLE变量名:数据类型约束条件:表达式;举例如下:VARIABLEresult:std_logic:0;VARIABLEx,y:integer;VARIABLEa:integerrange0to255:0;,1.变量(variable),变量的初值可用于仿真,但综合时被忽略,2.常量(constant)常量说明:对某一常量名赋予的一个固定值。格式如下:CONSTANT常数名:数据类型:表达式;例:CONSTANTwidth:integer:8;CONSTANTdata:bit_vector(3downto0):1010;CONSTANTx:new_bit:x;,常量数据类型与表达式的数据类型一致,常量的可视性(作用范围),库、程序包,实体,结构体1,进程1,结构体2,进程2,常量是全局量,其作用范围取决于被定义的位置,电子硬件系统运行的基本特性:各部分电路工作的并行特性;信号传输过程中的延时特性;多驱动源的总线特性;时序电路中触发器的记忆特性等,3.信号(signal),信号是电子系统内部硬件连接和硬件特性表示。用来描述硬件系统的基本特性,电子电路内部硬件实体相互连接的抽象表示(通常在结构体、包集合和实体说明中使用)一般书写格式为:SIGNAL信号名:数据类型约束类型:表达式;举例如下:SIGNALa,b:BIT:0;SIGNALcount:bit_vector(7downto0);SIGNALinit:integer:-1;SIGNALcount:std_logic:=0;,注:1)信号初始值仿真时有用,综合被忽略2)信号是全局量,可在结构体、实体、块中说明和使用信号。3)在进程和子程序中只能使用信号,不能说明信号。,进程中信号与变量的使用,ENTITYexISport(.);ENDex;ARCHITECTUREarch_exOFexISsignala,b:std_logic;beginprocess(a,b)variablec,d:std_logic;beginc:=a+b;d:=a-b;.ENDprocess;ENDarchex;,信号与端口的区别:,除没有方向说明外,信号与实体的端口PORT概念相似.端口是一种隐形的信号.ENTITYexamISPORT(SIGNALa,b:instd_logic;SIGNALc:outstd_logic);ENDexam;端口是一种有方向的信号.即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据.信号本身无方向,可读可写.,3.3.2词法规则与标识符,1.词法规则1)注释以-开头直到本行末尾(出现回车或换行符)的文字提高VHDL语言设计程序的可读性,,1.词法规则2)数字表达方式:十进制,二进制、八进制、十六进制等为基的数十进制整数表示法78_567(=78567)以基表示的数格式:基数符号#数值#指数部分2#111_1011#016#F.01#E+4,2、基表示法格式:基数数字文字E指数如:10#170#(=170)2#1111_1110#(=254)16#E#E1(=2#1110_0000#224)或(=14*16=224)16#F.01#E+2(=(15+1/(16*16)*16*16=3841.00),关于VHDL中的数字,请找出以下数字中最大的一个:_。2#1111_1110#8#276#10#170#16#E#E1,A,实数(REAL)必须带有小数学。仅用于仿真器,综合器不支持有些数可用实数表示,也可用整数表示。例如99.0是实数,99是整数,两数具有相同的值;但两者具有不同的类型。在有关文献中,实数类型也称为浮点类型(FLOATINGTYPE)。但大多数EDA工具不支持浮点运算。,物理量文字称为物理类型(PHYSICALTYPES)。书写格式应包含整数和单位两部分。如16ns时间类型一般用于仿真,不用逻辑综合。,3)字符和字符串字符:用单引号括起来数值,字母,空格及一些特殊字符。VHDL语言对大小写英文字母不敏感,但区分字符中的大小写。1,2是符号A,a,B,b都认为是不同的字符,如:variablecharacter_var:character;.character_var:=A;,字符串(STRING)字符串:是字符类型的一个非限定数组由双引号括起来的字符序列。variblestring_var:string(1to7);.string_var:=Rosebud;文字字符串:“文字”如:“ERROR”,“ZZZZ”,“XXXX”,“X”“BOTHSANDQEAN”,数位字符串:称为位矢量,代表二进制、八进制、十六进制的数组。其位矢量的长度为等值的二进制位数。格式:基数符号“数值”其中基数符号有三种:B:二进制基数符号。O:八进制基数符号,每一个八进制数代表一个3位的二进制数。X:十六进制基数符号,每一个十六进制数代表一个4位的二进制数。如:B1011_1111,O152,4)下标名及下标段名,下标名:用于指示数组型变量或信号的某一元素.格式:标识符(表达式)下标段名:用于指示数组型变量或信号的某一段元素格式:标识符(表达式to/downto表达式)如:a:std_logic_vector(7downto0)a(7),a(6).a(0)a(7downto0),a(7downto4),a(5downto3),2.标识符:定义常数、变量、信号、端口、子程序或参数的名字,VHDL87版:短标识符VHDL93版:短标识符和扩展标识符,VHDL语言有两个标准版:,VHDL短标识符(基本标识符)遵守以下规则:(1)必须以英文字母打头。(2)字符可以大小写的字母、数字和下划线“_”。(3)下划线前后都必须有英文字母或数字。(4)英文字母不区分大小写(5)不能连续使用下划线“_”,最后一个符号也不能用下划线(6)不允许包含图形符号、空格符,短标识符,注意:EDA工具综合、仿真时,不区分大小写。对VHDL的保留字(关键字)不能做标识符:ENTITY,ARCHITECTURE,END,BUS,USE,WHEN,WAIT,IS在程序书写时,一般要求大写或黑体,使得程序易于阅读,易于检查错误。,以下标识符哪些是合法的?multi_78screens、Multi_、Multi_Screens、MULTI_SCRE_ENSillegal%name_illegalname9illegalentitydata_BUSNot-Ack,上一次课的内容程序包、库和配置VHDL四类语言要素:数据对象、词法规则与标识符本次课程内容:数据类型、运算操作符,扩展标识符是VHDL93版增加的标识符书写规则:(1)用反斜杠来定界,免去了87标准基本标识符的一些限制。(2)可以数字打头,允许包含图形符号、空格符。例如:modeA,$100,p%name等。(3)反斜杠之间的字符可以用关健字。如:buffer,entity,end等。(4)标识符的界定符两个斜杠之间可用数字打头。如:100$,2chip,4screens等。(5)允许多个下划线相连。例:TWO_Computer_sh等。(6)扩展标识符区分大小写。例如:EDA与eda不同。(7)扩展标识符与短标识符不同。如:COMPUTER与Computer不同。,扩展标识符,3.3.3VHDL语言数据类型,VHDL语言程序是强数据类型,要求每一个常量、变量、信号、函数以及各种参数学要有明确的数据类型,并且不同的数据类型不能直接代入,相同的类型,位长不同也不能代入。EDA工具在编译会报告类型错。,10种标准的预定义数据类型,用户自定义数据类型,按照定义的方式,数据类型根据使用目的分为:用于EDA工具对电子系统进行综合的数据类型。如标量类型(SCALARTYPE),复合类型(COMPOSITETYPE)。用于EDA工具对电子系统进行仿真的数据类型,如存取类型(ACCESSTYPE)。预定义数据类型在VHDL标准程序包STANDARD中定义的,已经包含进VHDL的源文件中,因而不必通过USE语句也可以显式使用.,VHDL语言标准所定义的标准数据类型(1)整数类型(INTEGERTYPE)(2)实数类型或浮点类型(REALTYPEFLOATINGTYPE)(3)位类型(BITTYPE)(4)位矢量类型(BIT_VECTORTYPE)(5)布尔类型(BOOLEANTYPE)(6)字符类型(CHARACTERTYPE)(7)时间类型或物理类型(Timetypephysicaltype)(8)错误类型(NOTE,WARNIING,ERROR,FAILURETYPE)(9)自然数、整数类型(NATURALTYPE)(10)字符串类型(TRINGTYPE),用户在做电子系统设计时,自行定义的数据类型:(1)枚举类型(ENUMERATEDTYPE)(2)数组类型(ARRAYTYPE)(3)文件类型(FILESTYPE)(4)记录类型(RECODETYPE)(5)时间类型(TIMETYPE),标准数据类型,1、整数(INTEGER)包括正整数与负整数和零,硬件电路实现时,利用32位的位矢量来表示整数范围-(231-1)到(231-1)。VHDL综合器要求对具体的整数做出范围约束。否则无法综合成硬件电路.如:signals:INTEGERRANGE0TO15;信号s的取值范围是015,可用4位二进制数表示,因此s将被综合成由四条信号线构成的信号.,2、实数(REAL)范围:1.0E38到1.0E38。仅用于仿真器,综合器不支持有些数可用实数表示,也可用整数表示。例如99.0是实数,99是整数,两数具有相同的值;但两者具有不同的类型。在有关文献中,实数类型也称为浮点类型(FLOATINGTYPE)。但大多数EDA工具不支持浮点运算。,3、位(BIT)位通常用来表示一位的信号值。位的值通常用单引号来括住。如:TYPEBITIS(0,1);位的值0,1表示信号的状态;布尔量的值0,1表示假,真。,用双引号括起来的一组位数据注意:注明位宽(元素个数和排列)如SIGNALa:BIT_VECTOR(7TO0)B0000_1111XFBC-B1111_1011_1100O371-B011_111_001,4、位矢量(bit_vector),5、布尔量(BOOLEAN)有两种状态:false或true。只能进行关系运算。如:相等=,比较等作比较。如:BIT值转化成BOOLEAN类型BOOLEAN_var:=(bit_var=1);,6、字符(CHARACTER)用单引号括起来数值,字母,空格及一些特殊字符。VHDL语言对大小写英文字母不敏感,但区分字符中的大小写。1,2是符号A,a,B,b都认为是不同的字符,如:variablecharacter_var:character;.character_var:=A;,7、字符串(STRING)字符串:是字符类型的一个非限定数组由双引号括起来的字符序列。variblestring_var:string(1to7);.string_var:=Rosebud;,8、时间(TIME)称为物理类型(PHYSICALTYPES)。时间类型值的范围是整数所定义的范围,从(2311)到(2311)。书写格式应包含整数和单位两部分。如16ns时间类型一般用于仿真,不用逻辑综合。,9、错误等级(SEVRITYLEVEL)用于表示电子系统工作状态。错误等级分为:NOTE,WARAING,ERROR,FALILURE,即注意、警告、错误、失败4个等级。错误等级常用来在仿真时给设计者提供电子系统的工作情况。,用户定义的数据类型,用户自定义类型是VHDL语言的一大特色,可由用户定义的数据类型有:枚举类型整数与实数类型数组类型记录类型子类型,类型定义语句TYPE和子类型定义语句SUBTYPE实现用户自定义数据类型.TYPE语句格式:type数据类型名is数据类型定义of基本数据类型;typebyteisarray(7downto0)ofbit;variableaddend:byte;typeweekis(sun,mon,tue,wed,thu,fri,sat);,子类型定义语句SUBTYPESUBTYPE语句格式:subtype数据类型名is数据类型定义范围;subtypedigitsisintegerrange0to10;由subtype语句定义的数据类型称为子类型,1.枚举类型(ENUMERATEDTYPE)枚举该类型的所有可能的值书写格式:TYPE数据类型名IS(元素,元素.);,TYPESTD_LOGICIS(X,-不定,未知;O,-01,-1Z,-高阻W,-弱信号不定,未知L,-弱信号0H,-弱信号1-不可能情况);,TYPEBOOLEANIS(FALSE,TRUE);,TYPEBITIS(0,1);,例如:typecoloris(blue,green,yellow,red);typemy_logicis(0,1,U,Z);variablehue:color;signalsig:my_logic;hue:=blue;sig=Z;,2.整数类型用户定义的整数类型是标准包中整数类型的子范围格式:type类型名称isrange整数范围例:typemy_integerisintegerrange0to9;,3.数组类型(ARRAYTYPE)数组类型:同类型元素的集合。VHDL支持多维数组二维数组声明:TYPEbyteISARRAY(7downto0)OFbit;TYPEvectorISARRAY(3downto0)OFbyte;限定数组,非限定数组,属性:,限定数组:其索引范围有一定的限制格式:type数组名isarray(数组范围)of数据类型;非限定数组:数组的索引范围被定义成一个类型范围格式:type数组名isarray(类型名称range)of数据类型;例:typebit_vectorisarray(integerrange)ofbit;variblemy_vector:bit_vector(5downto-5);,属性:VHDL为多种类型定义了属性语法如下:对象属性VHDL为数组预先定义的属性:leftrighthighlowlengthrangereverse_range,对应变量:variablemy_vector:bit_vector(5downto-5);各属性如下:my_vectorleft5my_vectorright-5my_vectorhigh5my_vectorlow-5my_vectorlength11my_vectorrange(5downto-5)my_vectorreverse_range(-5to5),4.记录类型(RECODETYPE)记录类型:不同类型的名称域的集合TYPE数据类型ISRECODE元素名A:数据类型;.元素名B:数据类型;ENDRECODE,访问记录类型中的元素:记录体名.元素名,constantlen:integer=8;subtypebyte_vecisbit_vector(len-1downto0);typebyte_and_ixisrecordbyte:byte_vect;ix:integerrange0tolen;endrecord;signalx,y,z:byte_and_ix;signaldata:byte_vec;signalnum:integer;.x.byte=11110000;x.ix=2;data=y.byte;num=y.ix;y=x;,例如:,子类型子类型是已定义的类型或子类型的一个子集.格式subtype子类型名is数据类型名范围;例:bit_vector类型定义如下:如设计中只用16ns;可定义子类型如下:subtypemy_vectorisbit_vector(0to15);,类型转换在VHDL程序设计中,不同类型的对象必须进行数据类型转换,才能操作。3种方法不同类型的数据变换:类型标记法、函数转换法和常数转换法。,libraryieee;useieee.std_logic_1164.all;entitycnt4isport(clk:instd_logic;p:inoutstd_logic_vector(3downto0);endcnt4;librarydataio;usedataio.std_logic_ops.all;architecturebehvofcnt4isbeginprocess(clk)beginifclkeventandclk=1thenp=to_vector(to_integer(p)+1);endif;endprocess;endbehv;,用类型标记法(直接类型)实现类型转换用于关系密切的数据类型之间的类型转换,即整数和实数的类型转换。格式:数据类型标识符(表达式)若:variablea,b:integer;variablec,d:real;则有:a:integer(c);d:real(b);,VHDL语言标准中的程序包提供的变换函数来完成这个工作。这些程序包有3种:STD_LOGIC_1164程序包定义的转换函数:函数TO_STDLOGICVECTOR(A)-由位矢量转换为标准逻辑矢量函数TO_BITVECTOR(A);-由标准逻辑矢量转换为位矢量函数函数TO_STDLOGICV(A);-由BIT转换为STD_LOGIC函数TO_BIT(A);-由标准逻辑STD_LOGIC转换BIT,用函数法进行数据类型转换,std_logic_arith程序包定义的转换函数函数:CONVINTEGER(A);-由signed,unsigned转换成std_logic_vector函数:CONVINTEGER(A);-由signed,unsigned转换成integerstd_logic_unsigned程序包定义的转换函数函数:CONVINTEGER(A);-由STD_LOGIC_VECTOR转换成integer函数:COMV_STD_LOGIC_VECTOR(A,位长);-由integer,singed,unsigned转换成标准逻辑矢量,表达式:由操作数和操作符构成完成算术和逻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东高密银鹰化纤有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版(含答案详解)
- 2025年山东高密大昌纺织有限公司校园招聘模拟试题附带答案详解及1套参考答案详解
- 2025年装配式建筑部品部件标准化设计在装配式建筑领域的应用案例分析报告
- 2025年大型压力管道安装与安全性能优化维护服务合同
- 2025年绿色建材采购与施工监理合同
- 2025年高效农业科技示范田承包与全程管理服务合同
- 2025年化工产品进出口贸易安全与质量责任协议书
- 2025年度城市公共交通车辆安全检测与快速维修服务合同
- 2025年度智能家电产品销售及售后维护服务合同
- 2025年度建筑行业CAD技术支持与项目外包合同
- 2024年河北石家庄市体育局选聘事业单位体育专业人才11人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 进出口企业进出口业务内部审计制度(AEO认证文件)
- 玉溪实验中学初一招生考试数学试卷答案
- 先学后教当堂训练课堂教学模式培训
- 设备技改方案范文
- 2024年石油石化技能考试-甲醇装置操作工笔试历年真题荟萃含答案
- 消防培训行业现状分析报告
- 肋间神经病的护理查房
- 中国移动室分问题排查优化指导手册
- 配电柜吊装方案
- 顺丰同城管理制度
评论
0/150
提交评论