介绍
学习了VHDL语言后,我发现其中很多知识点和Verilog hdl还是有区别的,这篇文章主要介绍一下VHDL语言中的各种运算操作符。
在VHDL语言中不区分大小写奥。
运算操作符的类型
在VHDL语言中有6种运算操作符。
赋值运算符
赋值运算符用来给信号,变量和常数赋值。赋值运算符包括:
<= :用于signal信号的赋值。
:= :用于variable,constant和generic赋值,或者用于对信号赋初始值。
=> :给矢量中的某些位赋值,或对某些位之外的其他位赋值。
在编写顶层文件或者仿真文件中实例化也用在这个运算符。
逻辑运算符
逻辑运算符用来执行逻辑运算操作。执行逻辑运算的操作数必须是bit,bit_vector,std_logic,std_logic_vector类型的数据。
not :取反。
and :与。
or :或。
nand :与非。
nor :或非。
xor :异或。
xnor :同或。
从上到下运算符的有限级顺序递减。
算术运算符
算术运算符用来执行算数运算操作。如果声明了ieee中的包集std_logic_signed和std_logic_unsigned,就可以对std_logic_vector类型的数据进行算术运算。
+ 加。
- 减。
* 乘。
/ 除。
** 指数运算。
mod 取模。
rem 取余。
abs 取绝对值。
mod和rem的区别:y mod x 运算结果是y除以x得到的余数,运算结果通过x信号返回。y rem x 运算结果是y除以x得到的余数,运算结果通过信号y返回。
关系运算符
关系运算符用来对两个操作数进行比较运算。关系运算符两侧的数据类型必须相同。
= 等于。
/= 不等于。
< 小于。
> 大于。
<= 小于等于。
>= 大于等于。
移位运算符
移位运算符用来对数据进行移位操作。
其语法结构为:
<左操作数><移位操作符><右操作数>
左操作数必须是bit_vector类型,右操作数必须是integer类型的。
sll 逻辑左移
srl 逻辑右移
sla 算术左移
sra 算术右移
rol 循环逻辑左移
ror 循环逻辑右移
并置运算符
并置运算符用于位的拼接,操作数可以支持逻辑运算的任何数据类型。
&
(,,,)
例:z<= x &"1100" ; --如果x<='1',那么z<= "1110"
z<=('1','1','0','0');
结语
VHDL中预定义的运算操作符大概就有这些吧,以后碰到其他的我在补充吧。