您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > EDA VHDL第三章 VHDL数据类型和运算操作符
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([SIGNAL]a,b:instd_logic;[SIGNAL]c:outstd_logic);ENDexam;端口是一种有方向的信号.即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据.信号本身无方向,可读可写.3.3.2词法规则与标识符1.词法规则1)注释以--开头直到本行末尾(出现回车或换行符)的文字提高VHDL语言设计程序的可读性,1.词法规则2)数字表达方式:十进制,二进制、八进制、十六进制等为基的数①十进制整数表示法78_567(=78567)②以基表示的数格式:基数符号#数值#指数部分2#111_1011#016#F.01#E+42、基表示法格式:基数#数字文字#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#E1A③实数(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,O1524)下标名及下标段名下标名:用于指示数组型变量或信号的某一元素.格式:标识符(表达式)下标段名:用于指示数组型变量或信号的某一段元素格式:标识符(表达式to/downto表达式)如:a:std_logic_vector(7downto0)a(7),a(6)......a(0)a(7downto0),a(7downto4),a(5downto3)2.标识符:定义常数、变量、信号、端口、子程序或参数的名字VHDL’87版:短标识符VHDL’93版:短标识符和扩展标识符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四类语言要素:数据对象、词法规则与标识符本次课程内容:数据类型、运算操作符傲游浏览器2.lnk扩展标识符是VHDL’93版增加的标识符书写规则:(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)实数类型或浮点类型(REALTYPE&FLOATINGTYPE)(3)位类型(BITTYPE)(4)位矢量类型(BIT_VECTORTYPE)(5)布尔类型(BOOLEANTYPE)(6)字符类型(CHARACTERTYPE)(7)时间类型或物理类型(Timetype&physicaltype)(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的取值范围是0~15,可用4位二进制数表示,因此s将被综合成由四条信号线构成的信号.2、实数(REAL)范围:-1.0E+38到+1.0E+38。仅用于仿真器,综合器不支持有些数可用实数表示,也可用整数表示。例如+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_0014、位矢量(bit_vector)5、布尔量(BOOLEAN)有两种状态:false或true。只能进行关系运算。如:相等=,比较等作比较。如:BIT值转化成BOOLEAN类型BOOLEAN_var:=(bit_var='1');6、字符(CHARACTER)用单引号括起来数值,字母,空格及一些特殊字符。VHDL语言对大小写英文字母不敏感,但区分字符中的大小
本文标题:EDA VHDL第三章 VHDL数据类型和运算操作符
链接地址:https://www.777doc.com/doc-3639024 .html