VHDL中的表达式<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
表达式:由操作符和操作数构成,完成算术或
逻辑运算。
1、操作符
? VHDL操作符的分类:
? 逻辑操作符(Logical Operator)、
? 关系操作符(Relational Operator)、
? 算术操作符(Arithmetic Operator)、
? 重载操作符(Overloading Operator)
101
1)逻辑操作符
6种:and、or、nand、nor、xor、not
要求:操作数类型必须相同。可为如下类型:
bit、bit_vector、std_logic、
std_logic_vector、boolean
数组操作数的维数、大小必须相同。
注:当有两个以上的逻辑表达式时,左右没有
优先级差别,必须使用括号,如:
x<=( a and b )or( not c and d );
例外:当逻辑表达式中只有“and”、“or”、
“xor”运算符时,可以省略括号。如:
102
a <= b and c and d and e;
a <= b or c or d or e;
a <= b xor c xor d xor e;
2)关系操作符
6 种:=、/=、<、<=、>、>=
用于比较相同父类的两个操作数,返回
boolean值。
103
3)加减操作符
加操作符“+”、减操作符“-”、
串联(并置)操作符“&”
串联操作符“&”通过连接操作数来建立新的数组。操作数可以是一个数组或数组中的一个元素。
例:signal a,d: bit_vector (3 downto );
signal b,c,g: bit_vector (1 downto 0);
signal e: bit_vector(2 downto 0);
signal f, h, i : bit;
a <= not b & not c; -- array & array
d <= not e & not f; -- array & element
g <= not h & not i; -- element & element
104
4) 一元操作符
仅有一个操作数的操作符。
包括:“+”、“-”
5) 乘除操作符
用于整数类型:“*”、“/”、“mod”、“rem”
综合的限制:“/”、“mod”、“rem” 三种操作
符的右操作数必须为 2 的正整数次幂,即 2n。
实际电路用移位实现。
105
2、操作数
操作数:
操作符进行运算时所需的数据。
操作数的种类:
标志符;集合;属性;表达式;函数
调用;索引名;文字;限定表达式;记
录和域;片段名;类型转换
106
3、重载操作符
VHDL是强类型语言,相同类型的操作数才能进行操作。VHDL自身定义的算术和布尔函数仅对内部数据类型(standard 程序包中的数据类型)有效。即:
算术运算符+,-,<,>, <=, >= 仅对integer类型有效。逻辑运算符AND, OR, NOT仅对 bit 类型有效。
如: variable a,b,c :integer;
variable x,y,z :bit;
c := a + b;
z := x and y;
问题:a, b, c 与 x, y, z 之间,或与 std_logic
等其它数据类型之间能否相互操作?
107
重载操作符定义:
对已存在的操作符重新定义,使其能进行不
同类型操作数之间的运算,称为重载操作符。定
义重载操作符的函数称为重载函数。
重载操作符由原操作符加双引号表示。如 “+”
重载操作符的定义见 IEEE 库的程序包:
std_logic_arith、
std_logic_unsigned、
std_logic_signed
109
重载操作符的使用:
110
文章评论(0条评论)
登录后参与讨论