1、3.3.13.3.1 数据对象数据对象3.3.2 3.3.2 词法规则与标识符词法规则与标识符3.3.33.3.3 数据类型数据类型3.3.4 3.3.4 运算操作符运算操作符VHDLVHDL四类语言要素四类语言要素n数据对象数据对象n数据类型数据类型n运算操作数运算操作数n运算操作符运算操作符n对象对象(object):(object):可赋予一个值的客体可赋予一个值的客体nVHDLVHDL对象的对象的3 3种基本数据类型:种基本数据类型:常量常量(CONSTANT)(CONSTANT)变量变量(VARIABLE)(VARIABLE)信号信号(SIGNAL)(SIGNAL)3.3.13.3.
2、1 数据数据n对象的物理含义对象的物理含义:常量常量:数电中电源、地等数电中电源、地等常数常数 变量:变量:暂存暂存某些值的某些值的载体载体 信号:信号:物理设计中的某一条物理设计中的某一条硬件连线硬件连线,包括输入、输出端口包括输入、输出端口 n变量:变量:局部量局部量,仅用于,仅用于processprocess语句、语句、子程序(子程序(function function、procedureprocedure)n信号:信号:全局量全局量,用于用于entityentity,architecture architecture、packagepackagen常量常量:全局量全局量,可用于上面两种
3、场合,可用于上面两种场合对象的特点及使用场合对象的特点及使用场合:n用在用在进程语句进程语句、子程序子程序中,变量是一个中,变量是一个局部量局部量,其作,其作用范围仅限在定义了变量的进程和子程序中。用范围仅限在定义了变量的进程和子程序中。n书写格式:书写格式:VARIABLEVARIABLE 变量名:数据类型变量名:数据类型 约束条件约束条件 :表达式表达式;举例如下:举例如下:VARIABLE result VARIABLE result:std_logic:std_logic:0 0;VARIABLE x VARIABLE x,y y:integer integer;VARIABLE a
4、VARIABLE a:integer range 0 to 255:integer range 0 to 255:0 0;1.1.变量变量(variable)(variable)constantconstant库、程序包库、程序包实实 体体结结 构构 体体1 1进程进程1 1结结 构构 体体2 2进程进程2 2电子硬件系统运行的基本特性:电子硬件系统运行的基本特性:n各部分电路工作的各部分电路工作的并行并行特性;特性;n信号传输过程中的信号传输过程中的延时延时特性;特性;n多驱动源的多驱动源的总线总线特性;特性;n时序电路中触发器的时序电路中触发器的记忆记忆特性等特性等 3.3.信号信号(si
5、gnal)(signal)信号信号是电子系统内部硬件连接和硬件特性表示。是电子系统内部硬件连接和硬件特性表示。用来描述硬件系统的基本特性用来描述硬件系统的基本特性n电子电路内部硬件实体电子电路内部硬件实体相互连接相互连接的抽象表示的抽象表示(通常通常 在结构体、包集合和实体说明中使用在结构体、包集合和实体说明中使用)一般书写格式为:一般书写格式为:SIGNALSIGNAL 信号名信号名:数据类型数据类型 约束类型约束类型:表达式;表达式;举例如下:举例如下:SIGNAL a,b SIGNAL a,b:BIT:BIT:00;SIGNAL count SIGNAL count:bit_vector
6、(7 down to 0)bit_vector(7 down to 0);SIGNAL init SIGNAL init:integer:integer:-1-1;SIGNAL count SIGNAL count:std_logic:=0 std_logic:=0;进程中信号与变量的使用进程中信号与变量的使用ENTITY ex ISENTITY ex ISport(.);port(.);END ex;END ex;ARCHITECTURE arch_ex OF ex ISARCHITECTURE arch_ex OF ex ISsignalsignal a,b:std_logic;a,b:s
7、td_logic;beginbegin process(a,b)process(a,b)variablevariable c,d:std_logic;c,d:std_logic;begin begin c:=a+b;c:=a+b;d:=a-b;d:=a-b;.ENDprocess;ENDprocess;END arch ex;END arch ex;3.3.23.3.2 词法规则与标识符词法规则与标识符n1.1.词法规则词法规则 1)1)注释注释 以以-开头直到本行末尾开头直到本行末尾(出现出现回车或换行符回车或换行符)的文字的文字提高提高VHDLVHDL语言设计程序的可读性,语言设计程序的可
8、读性,n1.1.词法规则词法规则 2)2)数字数字表达方式:十进制,二进制、八进表达方式:十进制,二进制、八进制、十六进制等为基的数制、十六进制等为基的数 十进制整数表示法十进制整数表示法 78_567(=78567)78_567(=78567)以基表示的数以基表示的数 格式:格式:基数符号基数符号#数值数值#指数部分指数部分 2#111_1011#016#F.01#E+4 2#111_1011#016#F.01#E+42 2、基表示法、基表示法n格式格式:基数基数数字文字数字文字E E指数指数 如如:10#170#(=170):10#170#(=170)2#1111_1110#(=254)2
9、#1111_1110#(=254)16#E#E1 (=2#1110_0000#16#E#E1 (=2#1110_0000#224)224)或或 (=14(=14*16=224)16=224)16#F.01#E+2 16#F.01#E+2 (=(15+1/(16 (=(15+1/(16*16)16)*1616*16=3841.00)16=3841.00)n关于关于VHDLVHDL中的数字,请找出以下数字中最中的数字,请找出以下数字中最大的一个:大的一个:_。n2#1111_1110#2#1111_1110#n8#276#8#276#n10#170#10#170#n16#E#E116#E#E1nA
10、实数实数(REAL)(REAL)n必须带有小数学。必须带有小数学。n仅用于仿真器仅用于仿真器,综合器不支持综合器不支持n 有些数可用实数表示,也可用整数表示。例如有些数可用实数表示,也可用整数表示。例如99.099.0是实数,是实数,9999是整数,两数具有相同的值;是整数,两数具有相同的值;但两者具有不同的类型。但两者具有不同的类型。n在 有 关 文 献 中,实 数 类 型 也 称 为 浮 点 类 型在 有 关 文 献 中,实 数 类 型 也 称 为 浮 点 类 型(FLOATING TYPE)(FLOATING TYPE)。但大多数。但大多数EDAEDA工具不支持浮点工具不支持浮点运算。运
11、算。n称为称为物理类型物理类型(PHYSICAL TYPES)(PHYSICAL TYPES)。n书写格式应包含书写格式应包含整数和单位整数和单位两部分。两部分。如如16 ns16 nsn时间类型一般用于时间类型一般用于仿真,仿真,不用逻辑综合不用逻辑综合。3)3)字符和字符串字符和字符串字符字符:用用单引号单引号括起来括起来数值,字母,空格数值,字母,空格及一些特殊字及一些特殊字符。符。nVHDLVHDL语言对大小写英文字母不敏感,但区分语言对大小写英文字母不敏感,但区分 字符中的大小写。字符中的大小写。1 1,2 2 是符号是符号 A A,aa,BB,b b 都认为是不同的都认为是不同的字
12、符字符如如:variable :variable character_var:character;character_var:character;.character_var:=A;character_var:=A;字符串字符串(STRING)(STRING)字符串字符串:是字符类型的一个非限定数组是字符类型的一个非限定数组 由由双引号双引号括起来的字符序列。括起来的字符序列。variblevarible string_var:string_var:string string(1 to 7);(1 to 7);.string_var:=Rosebud;string_var:=Rosebud;文
13、字字符串:文字字符串:“文字文字”如:如:“ERROR”“ERROR”,“ZZZZ”“ZZZZ”,“XXXX”“XXXX”,“X”“X”“BOTHS AND QEAN”“BOTHS AND QEAN”数位字符串:数位字符串:称为位矢量,代表二进制、八进制、称为位矢量,代表二进制、八进制、十六进制的数组。其位矢量的长度为等值的二进十六进制的数组。其位矢量的长度为等值的二进制位数。制位数。格式:格式:基数符号基数符号“数值数值”其中基数符号有三种:其中基数符号有三种:B B:二进制基数符号二进制基数符号。O O:八进制基数符号八进制基数符号,每一个八进制数,每一个八进制数 代表一个代表一个3 3位
14、的二进制数。位的二进制数。X X:十六进制基数符号十六进制基数符号,每一个,每一个十六十六进进 制数代表一个制数代表一个4 4位的二进制数。位的二进制数。如如:B1011_1111,O152:B1011_1111,O152定义常数、变量、信号、定义常数、变量、信号、端口、子程序或参数端口、子程序或参数的的名字名字 VHDL87VHDL87版版:短标识符短标识符 VHDL93VHDL93版版:短标识符和扩短标识符和扩展标识符展标识符VHDLVHDL语言有两个标准版:语言有两个标准版:VHDL VHDL短标识符短标识符(基本标识符基本标识符)遵守以下规则:遵守以下规则:(1)(1)必须以必须以英文
15、字母英文字母打头。打头。(2)(2)字符可以大小写的字符可以大小写的字母、字母、数字数字和和下划线下划线“_ _”。(3)(3)下划线前后下划线前后都必须有都必须有英文字母或数字英文字母或数字。(4)(4)英文字母英文字母不区分大小写不区分大小写 (5)(5)不能连续使用不能连续使用下划线下划线“_”“_”,最后一个符号也,最后一个符号也 不能用不能用下划线下划线 (6)(6)不允许包含不允许包含图形符号、空格符图形符号、空格符 EDA EDA工具综合、仿真时,不区分大小写。工具综合、仿真时,不区分大小写。对对VHDLVHDL的保留字的保留字(关键字关键字)不能做标识符:不能做标识符:ENTI
16、TYENTITY,ARCHITECTUREARCHITECTURE,ENDEND,BUSBUS,USEUSE,WHENWHEN,WAITWAIT,ISIS 在程序书写时,一般要求大写或黑体,使在程序书写时,一般要求大写或黑体,使得程序易于阅读,易于检查错误。得程序易于阅读,易于检查错误。l以下标识符哪些是合法的?以下标识符哪些是合法的?multi_78screens multi_78screens 、Multi_Multi_、Multi_Screens Multi_Screens、MULTI_SCRE_ENS MULTI_SCRE_ENSlillegal%name illegal%name _
17、illegalname_illegalname 9illegal9illegal entityentity data_ _BUSdata_ _BUS Not-AckNot-Ack上一次课的内容上一次课的内容n程序包、库和配置程序包、库和配置nVHDLVHDL四类语言要素四类语言要素:数据对象、数据对象、词法规则与词法规则与标识符标识符本次课程本次课程内容内容:数据类型、数据类型、运算操作符运算操作符 扩展标识符是扩展标识符是VHDL93VHDL93版增加的标识符书写规则:版增加的标识符书写规则:(1)(1)用用反斜杠反斜杠来定界来定界,免去了免去了8787标准基本标识符的一些限制。标准基本标识
18、符的一些限制。(2)(2)可以可以数字数字打头打头,允许包含允许包含图形符号、空格符图形符号、空格符。例如:例如:mode A,$100,p%namemode A,$100,p%name等。等。(3)(3)反斜杠之间的字符可以用反斜杠之间的字符可以用关健字关健字。如:如:buffer,entity,endbuffer,entity,end等。等。(4)(4)标识符的界定符两个斜杠之间可用标识符的界定符两个斜杠之间可用数字打头数字打头。如:如:100$100$,2chip2chip,4screens4screens等。等。(5)(5)允许允许多个下划线相连多个下划线相连。例:。例:TWO_Com
19、puter_shTWO_Computer_sh等。等。(6)(6)扩展标识符扩展标识符区分大小写区分大小写。例如。例如:EDA:EDA 与与edaeda不同。不同。(7)(7)扩展标识符与短标识符不同扩展标识符与短标识符不同。如如:COMPUTER:COMPUTER 与与ComputerComputer不同不同。扩展标识符扩展标识符3.3.3 VHDL3.3.3 VHDL语言数据类型语言数据类型VHDLVHDL语言程序是语言程序是强数据类型强数据类型,要求每一个常量、变要求每一个常量、变量、信号、函数以及各种参数学要有量、信号、函数以及各种参数学要有明确的数据类明确的数据类型型,并且不同的数据
20、类型不能直接代入,相同的类,并且不同的数据类型不能直接代入,相同的类型,位长不同也不能代入。型,位长不同也不能代入。EDAEDA工具在编译会报告类型错。工具在编译会报告类型错。n1010种标准的预定义数据类型种标准的预定义数据类型n用户自定义数据类型用户自定义数据类型按照按照定义定义的方式的方式数据类型根据使用目的分为:数据类型根据使用目的分为:n 用于用于EDAEDA工具对电子系统进行工具对电子系统进行综合综合的数据类型。的数据类型。如如标量类型标量类型(SCALAR TYPE)(SCALAR TYPE),复合类型复合类型(COMPOSITE TYPE)(COMPOSITE TYPE)。n用
21、于用于EDAEDA工具对电子系统进行工具对电子系统进行仿真仿真的数据类型,的数据类型,如如存取类型存取类型(ACCESS TYPE)(ACCESS TYPE)。n预定义数据类型预定义数据类型在在VHDLVHDL标准程序包标准程序包STANDARDSTANDARD中中定义的定义的,已经包含进已经包含进VHDLVHDL的源文件中的源文件中,因而不必因而不必通过通过USEUSE语句也可以显式使用语句也可以显式使用.VHDLVHDL语言标准所定义的语言标准所定义的标准数据类型标准数据类型 (1)(1)整数整数类型类型 (INTEGERINTEGER TYPE)TYPE)(2)(2)实数实数类型或浮点类
22、型类型或浮点类型 (R E A LR E A L T Y P E T Y P E FLOATING TYPE)FLOATING TYPE)(3)(3)位位类型类型 (BITBIT TYPE)TYPE)(4)(4)位矢量位矢量类型类型 (BIT_VECTORBIT_VECTOR TYPE)TYPE)(5)(5)布尔布尔类型类型 (BOOLEANBOOLEAN TYPE)TYPE)(6)(6)字符字符类型类型 (CHARACTERCHARACTER TYPE)TYPE)(7)(7)时间时间类型或类型或物理物理类型类型 (T i m eT i m e t y p e t y p e physical
23、physical type)type)(8)(8)错误类型错误类型 (NOTE (NOTE,WARNIINGWARNIING,ERRORERROR,FAILURE TYPE)FAILURE TYPE)(9)(9)自然数、整数类型自然数、整数类型(NATURANATURAL TYPE)L TYPE)(10)(10)字符串字符串类型类型 (TRING TYPE)(TRING TYPE)用户在做电子系统设计时,用户在做电子系统设计时,自行定义的自行定义的数据类型数据类型:(1)(1)枚举类型枚举类型(ENUMERATED (ENUMERATED TYPETYPE)(2)(2)数组类型数组类型(ARR
24、AY TYPE)(ARRAY TYPE)(3)(3)文件类型文件类型(FILES TYPE)(FILES TYPE)(4)(4)记录类型记录类型(RECODE TYPE)(RECODE TYPE)(5)(5)时间类型时间类型(TIME TYPE)(TIME TYPE)2 2、实数、实数(REAL)(REAL)n范围范围:1.0E1.0E3838到到1.0E1.0E3838。n仅用于仿真器仅用于仿真器,综合器不支持综合器不支持n 有些数可用实数表示,也可用整数表示。例如有些数可用实数表示,也可用整数表示。例如99.099.0是实数,是实数,9999是整数,两数具有相同的值;是整数,两数具有相同的
25、值;但两者具有不同的类型。但两者具有不同的类型。n在 有 关 文 献 中,实 数 类 型 也 称 为 浮 点 类 型在 有 关 文 献 中,实 数 类 型 也 称 为 浮 点 类 型(FLOATING TYPE)(FLOATING TYPE)。但大多数。但大多数EDAEDA工具不支持浮点工具不支持浮点运算。运算。3 3、位、位(BIT)(BIT)n 位通常用来表示一位的信号值。位通常用来表示一位的信号值。n 位的值通常用位的值通常用单引号单引号来括住。来括住。如:如:TYPE BIT IS(0 TYPE BIT IS(0,1)1);n位的值位的值00,11表示信号的状态;表示信号的状态;n布尔
26、量的值布尔量的值00,11表示表示假假,真真。用用双引号括起来双引号括起来的一组的一组位位数据数据注意注意:注明位宽注明位宽(元素个数和排列元素个数和排列)如如 SIGNAL a:SIGNAL a:BIT_VECTORBIT_VECTOR(7 TO 0)(7 TO 0)B B 0000_11110000_1111 XFBC -XFBC -B1111_1011_1100B1111_1011_1100 O371 -O371 -B011_111_001B011_111_001 4 4、位矢量、位矢量(bit_vector)(bit_vector)5 5、布尔量布尔量(BOOLEAN)(BOOLEAN
27、)n有两种状态:有两种状态:falsefalse或或truetrue。n只能进行只能进行关系运算关系运算。如如:相等相等=,=,比较比较等作比较。等作比较。如如:BIT:BIT值转化成值转化成BOOLEANBOOLEAN类型类型 BOOLEAN_var:=(bit_var=1);BOOLEAN_var:=(bit_var=1);6 6、字符、字符(CHARACTER)(CHARACTER)n用用单引号单引号括起来括起来数值,字母,空格数值,字母,空格及一些特殊字符。及一些特殊字符。nVHDLVHDL语言对大小写英文字母不敏感,但区分语言对大小写英文字母不敏感,但区分 字符中的大小写。字符中的大
28、小写。1 1,2 2 是符号是符号 A A,aa,BB,b b 都认为是不同的都认为是不同的字符字符如如:variable :variable character_var:character;character_var:character;.character_var:=A;character_var:=A;7 7、字符串、字符串(STRING)(STRING)字符串字符串:是字符类型的一个非限定数组是字符类型的一个非限定数组 由由双引号双引号括起来的字符序列。括起来的字符序列。variblevarible string_var:string_var:string string(1 to 7)
29、;(1 to 7);.string_var:=Rosebud;string_var:=Rosebud;n称为称为物理类型物理类型(PHYSICAL TYPES)(PHYSICAL TYPES)。n时间类型值的范围是整数所定义的范围,时间类型值的范围是整数所定义的范围,从从(2(231311)1)到到(2(231311)1)。n书写格式应包含书写格式应包含整数和单位整数和单位两部分。两部分。如如16 ns16 nsn时间类型一般用于时间类型一般用于仿真,仿真,不用逻辑综合不用逻辑综合。9 9、错误等级、错误等级(SEVRITY LEVEL)(SEVRITY LEVEL)n用于表示电子系统工作状态
30、。用于表示电子系统工作状态。n错误等级分为:错误等级分为:NOTENOTE,WARAINGWARAING,ERRORERROR,FALILUREFALILURE,即注意、警告、错,即注意、警告、错误、失败误、失败4 4个等级。个等级。n错误等级常用来在错误等级常用来在仿真仿真时给设计者提供时给设计者提供电子系统的工作情况。电子系统的工作情况。用户用户定义的数据类型定义的数据类型用户自定义类型是用户自定义类型是VHDLVHDL语言的一大特色语言的一大特色类型定义语句类型定义语句TYPETYPE和和子类型定义语句子类型定义语句SUBTYPESUBTYPE实现实现用用户自定义数据类型户自定义数据类型
31、.TYPE TYPE 语句格式语句格式:typetype数据类型名数据类型名 is is数据类型定义数据类型定义 of of 基本数据类基本数据类型型;typetype byte byte is array(is array(7 downto 07 downto 0)of bit;)of bit;variable addend:byte;variable addend:byte;typetype week week isis(sun,mon,tue,wed,thu,fri,sat);(sun,mon,tue,wed,thu,fri,sat);子类型定义语句子类型定义语句SUBTYPESUBTY
32、PESUBTYPE SUBTYPE 语句格式语句格式:subtypesubtype数据类型名数据类型名 is is数据类型定义数据类型定义 范围范围;subtypesubtype digits digits is integeris integer range 0 to 10;range 0 to 10;由由subtypesubtype语句定义的数据类型称为语句定义的数据类型称为子类型子类型1.1.枚举类型枚举类型(ENUMERATED TYPE)(ENUMERATED TYPE)枚举该类型的所有可能的值枚举该类型的所有可能的值 书写格式:书写格式:TYPETYPE 数据类型名数据类型名 IS
33、IS (元素,元元素,元素素.););TYPETYPE STD_LOGIC STD_LOGIC ISIS(X,X,-不定,未知;不定,未知;O,O,-0-01,1,-1-1Z,Z,-高阻高阻W,W,-弱信号不定,弱信号不定,未知未知L,L,-弱信号弱信号0 0H,H,-弱信号弱信号1 1-不可能情不可能情况)况);TYPETYPE BOOLEAN BOOLEAN ISIS(FALSE,TRUEFALSE,TRUE);TYPETYPE BIT BIT ISIS(0,10,1);例如例如:type type colorcolor is is(blue,green,yellow,red);(blue
34、,green,yellow,red);typetype my_logic my_logic isis(0,1,U,Z);(0,1,U,Z);variable hue:color;variable hue:color;signal sig:my_logic;signal sig:my_logic;hue:=blue;sig=Z;hue:=blue;sig=Z;3.3.数组类型数组类型(ARRAY TYPE)(ARRAY TYPE)4.4.(RECODE TYPE)(RECODE TYPE)记录类型:记录类型:RECODERECODE 元素名元素名A A:.元素名元素名B B:RECODERECO
35、DE 访问记录类型中的元素:访问记录类型中的元素:记录体名记录体名.元素名元素名n子类型子类型 子类型是已定义的类型或子类型的一个子集子类型是已定义的类型或子类型的一个子集.n格式格式 subtypesubtype子类型名子类型名 isis 数据类型名数据类型名 范围范围;n例例:bit_vector:bit_vector类型定义如下类型定义如下:n如设计中只用如设计中只用16ns;16ns;可定义子类型如下可定义子类型如下:subtype my_vector is bit_vector(0 to subtype my_vector is bit_vector(0 to 15);15);类型转
36、换类型转换n在在VHDLVHDL程序设计中,不同类型的对象必程序设计中,不同类型的对象必须进行数据类型转换须进行数据类型转换,才能操作。才能操作。n3 3种方法不同类型的数据变换:种方法不同类型的数据变换:类型标类型标记法记法、函数转换法函数转换法和和常数转换法。常数转换法。用类型标记法用类型标记法(直接类型直接类型)实现类型转换实现类型转换n用于关系密切的用于关系密切的数据类型数据类型之间的类型转换,之间的类型转换,即即整数和实数整数和实数的类型转换。的类型转换。n格式格式:数据类型标识符数据类型标识符(表达式表达式)若:若:variable a,b variable a,b:integer
37、integer;variable c,d variable c,d:realreal;则有:则有:a:a:integerinteger(c)(c);d:d:realreal(b)(b);nVHDLVHDL语言标准中的语言标准中的程序包程序包提供的提供的变换函数变换函数来完成这个工作。来完成这个工作。这些程序包有这些程序包有3 3种:种:STD_LOGIC_1164STD_LOGIC_1164程序包定义的转换函数:程序包定义的转换函数:函数函数 TO_STD LOGICVECTOR(A)TO_STD LOGICVECTOR(A)-由位矢量转换为标准逻辑矢量由位矢量转换为标准逻辑矢量 函数函数 T
38、O_BITVECTOR(A)TO_BITVECTOR(A);-由标准逻辑矢量转换为位矢量函数由标准逻辑矢量转换为位矢量函数 函数函数 TO_STDLOGICV(A)TO_STDLOGICV(A);-由由BITBIT转换为转换为STD_LOGICSTD_LOGIC 函数函数 TO_BIT(A)TO_BIT(A);-由标准逻辑由标准逻辑STD_LOGICSTD_LOGIC转换转换BITBIT表达式表达式:由操作数和操作符构成由操作数和操作符构成 完成算术和逻辑运算完成算术和逻辑运算VHDLVHDL中的表达式中的表达式n(1)(1)逻辑操作符逻辑操作符(LOGICAL)(LOGICAL)n(2)(2
39、)关系操作符关系操作符(RELATIONAL)(RELATIONAL)n(3)(3)算术操作符算术操作符(ARITHMETIC)(ARITHMETIC)n(4)(4)并置操作并置操作(CONCATENATION)(CONCATENATION)VHDLVHDL语言的操作符有语言的操作符有4 4种种:n(1)(1)NOTNOT取反取反n(2)(2)ANDAND与与n(3)(3)OROR或或n(4)(4)NANDNAND与非与非n(5)(5)NORNOR或非或非n(6)(6)XORXOR异或;异或;在在VHDLVHDL中,逻辑操作符有中,逻辑操作符有6 6种,列表如下:种,列表如下:逻辑操作符逻辑操
40、作符(LOGICAL)(LOGICAL)n要求要求:操作数类型必须相同操作数类型必须相同.可为如下类型可为如下类型:bit,bit_vector,std_logic,bit,bit_vector,std_logic,std_logic_vector,std_logic_vector,boolean boolean 数组操作数的维数数组操作数的维数,大小必须相同大小必须相同.注注:当有两个以上的逻辑表达式时当有两个以上的逻辑表达式时,左右左右没有优先级的时没有优先级的时,必须使用括号必须使用括号,如如:x=(a and b)and(not d or k)x=(a and b)and(not d
41、or k)当逻辑表达式中只有当逻辑表达式中只有and or not and or not 运算操作符时运算操作符时,可可以省略括号如以省略括号如:x=a and b and c:x=a and b and c n(1)(1)-加运算加运算n(2)(2)-减运算减运算n(3)(3)*-乘运算乘运算n(4)(4)/-/-除运算除运算n(5)(5)MOD -MOD -求模运算求模运算n(6)(6)REM -REM -取余运算取余运算n(7)(7)-正正n(8)(8)-负负n(9)(9)*-指数运算指数运算n(10)ABS -(10)ABS -取绝对值取绝对值VHDLVHDL算术运算符的例表如下:算术
42、运算符的例表如下:用于整数类型用于整数类型:*,/,MOD,REM,/,MOD,REM综合的限制综合的限制:/,MOD,REM /,MOD,REM三种操作符的右三种操作符的右操作数必须是操作数必须是2 2的正整数次幂的正整数次幂,即即2 2n n,实实际电路用移位实现际电路用移位实现.两个对象在两个对象在比较比较运算时,将两个操作数比较的结运算时,将两个操作数比较的结果表示出来所使用的符号,列表如下:果表示出来所使用的符号,列表如下:n 等于等于n/不等于不等于n 小于小于n 小于等于小于等于n 大于大于n 大于等于大于等于比较比较运算运算,返回的是返回的是BOOLEANBOOLEAN值值n用
43、于位的连接。用于位的连接。n并置运算符并置运算符“”通过连接操作数来建立新的数通过连接操作数来建立新的数组组.操作数可以是一个数组或数组中的一个元素操作数可以是一个数组或数组中的一个元素.n举例如下:举例如下:signal a,b:bit_vector(3 downto 0);signal a,b:bit_vector(3 downto 0);signal b,c,g:bit_vector(1 downto 0);signal b,c,g:bit_vector(1 downto 0);signal e:bit_vector(2 downto 0);signal e:bit_vector(2 downto 0);signal f,h,i:bit;signal f,h,i:bit;a=not b¬ c;a=not b¬ c;d=not e¬ f;d=not e¬ f;g=not h¬ i;g=not h¬ i;并置运算符并置运算符“”n表达式表达式c=a+b,c=a+b,其中其中a,ba,b的数据类型是的数据类型是std_logic_vector,cstd_logic_vector,c的数据类型的数据类型integer,integer,是否能直接进行加法运算是否能直接进行加法运算,说明原因和解决说明原因和解决方法方法.作作 业业