Verilog 带符号的数值运算 加法

module TestBench(
  output signed [9:0] result1,
  output signed [9:0] result2,
  output signed [9:0] result3,
  output [9:0] result4,
  output [9:0] result5,
  output [9:0] result6,
  
  output [5:0] result7,
  output [5:0] result8,
  output [5:0] result9,
  output [5:0] result10      
);

wire [7:0] dataA = 8'hFF;
wire signed [7:0] dataB = -1;


//1:数值计算只有两个操作数都是有符号数,才会把两个操作数都看作有符号数计算,否则无论是有符号数还是无符号数都会按照无符号数计算。
//2:B=A赋值的时候,B长度大于A的情况下。若A是有符号数,则B高位空余用A的最高位填充,若A是无符号数,B的高位用0填充。
assign result1 = dataA + dataA;   //10'b0111_1111_1110
assign result2 = dataA + dataB;   //10'b0111_1111_1110
assign result3 = dataB + dataB;   //10'b1111_1111_1110

assign result4 = dataA + dataA;   //10'b0111_1111_1110
assign result5 = dataA + dataB;   //10'b0111_1111_1110
assign result6 = dataB + dataB;   //10'b1111_1111_1110

//3:B=A赋值的时候,B长度小于A的情况下。数据A就会被截断,截断的规则就是从低位开始取,被截断的是高位
assign result7 = result2;         //10'b11_1110
assign result8 = result3;         //10'b11_1110
assign result9 = result4;         //10'b11_1110
assign result10 = result5;        //10'b11_1110

endmodule

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值