verilog中有符号数运算的注意事项

标签:
fpgait |
分类: FPGA |
从verilog2001开始对于有符号数的运算变得简单了,只需要在定义的时候加上关键字signed。运算结果输出负数以补码的形式给出,比如9位二进制-13,则以补码1
1111 0011表示。
input reset,
input
signed [7:0] a,
input
signed [7:0] b,
output
signed [15:0] out,
output reg
flg
);
if(out_buf >= 0) flg <=
1;
input reset,
input
[7:0] a,
input
[7:0] b,
output
[15:0] out,
output
reg flg
);
if(out_buf >= 0) flg <=
1;
module
add(input clk,
reg signed
[15:0] out_buf;
always
@(posedge clk , negedge reset)
if(!reset)
out_buf <=
9'd0;
else
out_buf <= a
* b;
always
@(out_buf)
begin
else flg <=
0;
end
assign out =
out_buf;
endmodule
如果去掉signed关键字
module
add(input clk,
reg
[15:0] out_buf;
always
@(posedge clk , negedge reset)
if(!reset)
out_buf <=
9'd0;
else
out_buf <= a
* b;
always
@(out_buf)
begin
else flg <=
0;
end
assign out =
out_buf;
endmodule
仿真结果是