脚本宝典收集整理的这篇文章主要介绍了verilog 中signed数据处理,负数,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
veriLOG中支持signed 数据类型,即支持负数的处理。此时参与运算的各个数均应是signed类型,且数据位宽相同(若位宽不相同,则应手动将其扩展为位宽相同,具体做法就是将最高位的符号位进行扩展),且运算结果要比运算数的位数大以防止溢出。以下用两个小例子进行说明。细节可参考此篇文章: http://www.cnblogs.COM/oomusou/Archive/2009/10/31/verilog_signed_overflow.htML
Examp 1.
-
module top(clk,a,b,c);
-
input clk;
-
input signed [7:0] a;
-
input signed [7:0] b;
-
output reg signed [8:0] c;
-
-
-
-
if((a-b)< 0)
-
c <= b - a;
-
-
c <= 0;
-
else
-
c <= a - b;
-
end
-
-
endmodule
testbench:
-
module sim_top ;
-
-
reg clk;
-
reg signed [7:0] a;
-
reg signed [7:0] b;
-
wire signed [8:0] c;
-
-
-
clk= 0;
-
a=0;
-
b=8;
-
-
end
-
-
always@(posedge clk)
-
begin
-
a<=a+2;
-
b<=b+1;
-
end
-
-
top my_top(
-
.clk(clk),
-
.a(a),
-
.b(b),
-
.c(c));
-
-
endmodule
仿真结果图:
Examp 2:
-
module top(clk,a,b,c);
-
input clk;
-
input signed [7:0] a;
-
input signed [7:0] b;
-
output reg signed [8:0] c;
-
-
always@(posedge clk)
-
begin
-
/* if((a-b)< 0)
-
c <= b - a;
-
else if ((b-a)==0)
-
c <= 0;
-
else*/
-
c <= a - b;
-
end
-
-
endmodule
testbench同上。
仿真结果:
脚本宝典总结
以上是脚本宝典为你收集整理的verilog 中signed数据处理,负数全部内容,希望文章能够帮你解决verilog 中signed数据处理,负数所遇到的问题。
如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。