算术运算符

VHDL算术运算符

 

在VHDL中,算术运算符用来执行算术运算操作。操作数可以是INTEGER,SIGNED,UNSIGNED或REAL数据

类型,其中REAL类型是不可综合的。如果声明了ieee库中的包集std_logic_signed和std_logic_unsigned,

即可对STD_LOGIC_VECTOR类型的数据进行加法和减法运算。

VHDL语言有以下算术运算符:

+ 加

- 减

* 乘

/ 除

** 指数运算

MOD 取模

REM 取余

ABS 取绝对值

上述运算符中,加法、减法和乘法运算符是可以综合成逻辑电路的,对于除法运算,只有在除数为2的n次幕时才

有可能进行综合,此时除法操作对应的是将被除数向右进行n次移位。对于指数运算,只有当底数和指数都是静

态数值(常量或GENERIC参数)时才是可综合的。在算术运算符的使用中,要注意MOD和REM的区别:y MOD x

运算的结果是y除以x所得的余数,运算结果通过信号x返回;y REM x运算的结果是y除以x所得的余数,结果通过

信号y返回。ABS运算返回操作数的绝对值。上述后3个运算符(MOD,REM和ABS)通常是不可综合的。

 

 

移位操作符

 

Verilog

 

<<  :逻辑左移

 

>>  :逻辑右移

 

<<<   :算术左移

 

>>> :算术右移

 

 

 

VHDL

 

“SLL” 逻辑左移操作符,最右边空出的位用‘0’填充

 

“SRL”逻辑右移操作符,最左边空出的位用‘0’填充

 

“SLA”算术左移操作符,最右边空出的位用原来最右边的位填充

 

“SRA”算术右移操作符,最左边空出的位用原来最左边的位填充

 

“ROL” 循环左移操作符,最右边空出的位用原来最左边的位填充

 

“ROR”循环右移操作符,最左边空出的位用原来最右边的位填充

 

 (2)逻辑运算符

 

VHDL:

 

AND    (与)

 

OR      (或)

 

NOT    (非)

 

NAND  (与非)

 

NOR   (或非)

 

XOR   (异或)

 

XNOR  (同或)

 

注意:逻辑运算符操作数的数据类型要求必须是BIT、BOOLEAN、BIT_VECTOR

 

STD_LOGIC 和STD_LOGIC_VECTOR这5种数据类型之一。或者由BIT、BOOLEAN和

 

STD_LOGIC构成的一维数组

 

逻辑运算符NOT的优先级最高,其他没有优先级别

 

逻辑运算两边的操作数类型必须一致。

 

在一个表达式中不允许不用括号而把两种不同的运算符结合在一起

 

你可能感兴趣的:(运算符)