Verilog HDL算术操作结果的长度
发布时间:2008/5/28 0:00:00 访问次数:573
算术表达式结果的长度由最长的操作数决定。在赋值语句下,算术操作结果的长度由操作符左端目标长度决定。考虑如下实例:
reg [0:3] arc, bar, crt;
reg [0:5] frx;
. . .
arc = bar + crt;
frx = bar + crt;
第一个加的结果长度由bar,crt和arc长度决定,长度为4位。第二个加法操作的长度同样由frx的长度决定(frx、bat和crt中的最长长度),长度为6位。在第一个赋值中,加法操作的溢出部分被丢弃;而在第二个赋值中,任何溢出的位存储在结果位frx[1]中。
在较大的表达式中,中间结果的长度如何确定?在verilog hdl中定义了如下规则:表达式中的所有中间结果应取最大操作数的长度(赋值时,此规则也包括左端目标)。考虑另一个实例:
wire [4:1] box, drt;
wire [1:5] cfg;
wire [1:6] peg;
wire [1:8] adt;
. . .
assign adt = (box + cfg) + (drt + peg);
表达式左端的操作数最长为6,但是将左端包含在内时,最大长度为8。所以所有的加操作使用8位进行。例如:box和cfg相加的结果长度为8位。
reg [0:3] arc, bar, crt;
reg [0:5] frx;
. . .
arc = bar + crt;
frx = bar + crt;
第一个加的结果长度由bar,crt和arc长度决定,长度为4位。第二个加法操作的长度同样由frx的长度决定(frx、bat和crt中的最长长度),长度为6位。在第一个赋值中,加法操作的溢出部分被丢弃;而在第二个赋值中,任何溢出的位存储在结果位frx[1]中。
在较大的表达式中,中间结果的长度如何确定?在verilog hdl中定义了如下规则:表达式中的所有中间结果应取最大操作数的长度(赋值时,此规则也包括左端目标)。考虑另一个实例:
wire [4:1] box, drt;
wire [1:5] cfg;
wire [1:6] peg;
wire [1:8] adt;
. . .
assign adt = (box + cfg) + (drt + peg);
表达式左端的操作数最长为6,但是将左端包含在内时,最大长度为8。所以所有的加操作使用8位进行。例如:box和cfg相加的结果长度为8位。
算术表达式结果的长度由最长的操作数决定。在赋值语句下,算术操作结果的长度由操作符左端目标长度决定。考虑如下实例:
reg [0:3] arc, bar, crt;
reg [0:5] frx;
. . .
arc = bar + crt;
frx = bar + crt;
第一个加的结果长度由bar,crt和arc长度决定,长度为4位。第二个加法操作的长度同样由frx的长度决定(frx、bat和crt中的最长长度),长度为6位。在第一个赋值中,加法操作的溢出部分被丢弃;而在第二个赋值中,任何溢出的位存储在结果位frx[1]中。
在较大的表达式中,中间结果的长度如何确定?在verilog hdl中定义了如下规则:表达式中的所有中间结果应取最大操作数的长度(赋值时,此规则也包括左端目标)。考虑另一个实例:
wire [4:1] box, drt;
wire [1:5] cfg;
wire [1:6] peg;
wire [1:8] adt;
. . .
assign adt = (box + cfg) + (drt + peg);
表达式左端的操作数最长为6,但是将左端包含在内时,最大长度为8。所以所有的加操作使用8位进行。例如:box和cfg相加的结果长度为8位。
reg [0:3] arc, bar, crt;
reg [0:5] frx;
. . .
arc = bar + crt;
frx = bar + crt;
第一个加的结果长度由bar,crt和arc长度决定,长度为4位。第二个加法操作的长度同样由frx的长度决定(frx、bat和crt中的最长长度),长度为6位。在第一个赋值中,加法操作的溢出部分被丢弃;而在第二个赋值中,任何溢出的位存储在结果位frx[1]中。
在较大的表达式中,中间结果的长度如何确定?在verilog hdl中定义了如下规则:表达式中的所有中间结果应取最大操作数的长度(赋值时,此规则也包括左端目标)。考虑另一个实例:
wire [4:1] box, drt;
wire [1:5] cfg;
wire [1:6] peg;
wire [1:8] adt;
. . .
assign adt = (box + cfg) + (drt + peg);
表达式左端的操作数最长为6,但是将左端包含在内时,最大长度为8。所以所有的加操作使用8位进行。例如:box和cfg相加的结果长度为8位。
上一篇:Verilog HDL操作符集
上一篇:Verilog HDL关系操作符