位置:51电子网 » 技术资料 » EDA/PLD

Verilog HDL算术运算符

发布时间:2008/5/28 0:00:00 访问次数:2595

4.6.1 算术运算符
在常用的算术运算符主要是:
加法(二元运算符):“+”;
减法(二元运算符):“-”;
乘法(二元运算符):“*”;
在算术运算符的使用中,注意如下两个问题:

1. 算术操作结果的位数长度
算术表达式结果的长度由最长的操作数决定。在赋值语句下,算术操作结果的长度由操作符
左端目标长度决定。考虑如下实例:

reg [3:0] arc, bar, crt;

reg [5:0] frx;

. . .

arc = bar + crt;

frx = bar + crt;

第一个加的结果长度由bar ,crt 和a rc 长度决定,长度为4 位。

第二个加法操作的长度同样由frx 的长度决定(frx 、bat 和crt 中的最长长度),长度为6
位。

在第一个赋值中,加法操作的溢出部分被丢弃;而在第二个赋值中,任何溢出的位存储在结
果位frx [ 4 ]中。

在较大的表达式中,中间结果的长度如何确定?在verilog hdl 中定义了如下规则:表达式中
的所有中间结果应取最大操作数的长度(赋值时,此规则也包括左端目标)。考虑另一个实例:

wire [4:1] box, drt;
wire [5:1] cfg;
wire [6:1] peg;
wire [8:1] adt;
. . .
assign adt = (box + cfg) + (drt + peg) ;
表达式右端的操作数最长为6 ,但是将左端包含在内时,最大长度为8 。所以所有的加操作使


用8 位进行。例如:box 和cfg 相加的结果长度为8 位。

2. 有符号数和无符号数
在设计中,请先按无符号数进行。
4.6.2 关系运算符
关系运算符有:
?>(大于)
2004-08-16 第22页,共41页
版权所有,侵权必究

?<(小于)

?>= (不小于)

?<= (不大于)

= = (逻辑相等)

!= (逻辑不等)

关系操作符的结果为真(1 )或假(0 )。如果操作数中有一位为x 或z ,那么结果为x 。
例:

23 > 45

结果为假(0 ),而:

52 < 8'hxff

结果为x 。

如果操作数长度不同,长度较短的操作数在最重要的位方向(左方)添0 补齐。例如:

'b1000 > = 'b01110

等价于:

'b01000 > = 'b01110

结果为假(0 )。

在逻辑相等与不等的比较中,只要一个操作数含有x 或z,比较结果为未知(x),如:

假定:

data = 'b11x0;
addr = 'b11x0;


那么:
data = = addr 比较结果不定,也就是说值为x 。



4.6.1 算术运算符
在常用的算术运算符主要是:
加法(二元运算符):“+”;
减法(二元运算符):“-”;
乘法(二元运算符):“*”;
在算术运算符的使用中,注意如下两个问题:

1. 算术操作结果的位数长度
算术表达式结果的长度由最长的操作数决定。在赋值语句下,算术操作结果的长度由操作符
左端目标长度决定。考虑如下实例:

reg [3:0] arc, bar, crt;

reg [5:0] frx;

. . .

arc = bar + crt;

frx = bar + crt;

第一个加的结果长度由bar ,crt 和a rc 长度决定,长度为4 位。

第二个加法操作的长度同样由frx 的长度决定(frx 、bat 和crt 中的最长长度),长度为6
位。

在第一个赋值中,加法操作的溢出部分被丢弃;而在第二个赋值中,任何溢出的位存储在结
果位frx [ 4 ]中。

在较大的表达式中,中间结果的长度如何确定?在verilog hdl 中定义了如下规则:表达式中
的所有中间结果应取最大操作数的长度(赋值时,此规则也包括左端目标)。考虑另一个实例:

wire [4:1] box, drt;
wire [5:1] cfg;
wire [6:1] peg;
wire [8:1] adt;
. . .
assign adt = (box + cfg) + (drt + peg) ;
表达式右端的操作数最长为6 ,但是将左端包含在内时,最大长度为8 。所以所有的加操作使


用8 位进行。例如:box 和cfg 相加的结果长度为8 位。

2. 有符号数和无符号数
在设计中,请先按无符号数进行。
4.6.2 关系运算符
关系运算符有:
?>(大于)
2004-08-16 第22页,共41页
版权所有,侵权必究

?<(小于)

?>= (不小于)

?<= (不大于)

= = (逻辑相等)

!= (逻辑不等)

关系操作符的结果为真(1 )或假(0 )。如果操作数中有一位为x 或z ,那么结果为x 。
例:

23 > 45

结果为假(0 ),而:

52 < 8'hxff

结果为x 。

如果操作数长度不同,长度较短的操作数在最重要的位方向(左方)添0 补齐。例如:

'b1000 > = 'b01110

等价于:

'b01000 > = 'b01110

结果为假(0 )。

在逻辑相等与不等的比较中,只要一个操作数含有x 或z,比较结果为未知(x),如:

假定:

data = 'b11x0;
addr = 'b11x0;


那么:
data = = addr 比较结果不定,也就是说值为x 。



相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!