(6)signed addition overflow

1.1目录

(1)目录

(2)题目要求

(3)相关原理

(4)代码

1.2 题目要求

Assume that you have two 8-bit 2's complement numbers, a[7:0] and b[7:0]. These numbers are added to produce s[7:0]. Also compute whether a (signed) overflow has occurred.

翻译:两个8位的带符号的补码相加产生s这个和,在相加的时候看是否溢出,(相加溢出的意思就是相加后s[7:0]无法表示和,即相加产生了进位8位二进制数表示不了,需要9位表示)用overflow来对是否溢出进行标志。

1.3 相关原理

        因为两个8位的数带符号其最高位代表正负(1为负0为正),可能在相加的时候溢出的情况就是两种,a和b是同为负数或者同为正数。因为如果a和b一正一负,它俩的补码相加是不可能溢出的。

        然而a和b同号只是可能溢出的情况,不代表必定溢出。只有当a和b同号且相加后的和(s),s的符号位(就是s[7])发生变化时才会是发生溢出了。(1)当a和b同为负数(即是a[7]和b[7]为1时)时,s[7]为[0]时发生相加溢出了。(2)当a和b同为正数(即是a[7]和b[7]为0时)时,s[7]为1时发生相加溢出了。

module top_module (
    input [7:0] a,
    input [7:0] b,
    output [7:0] s,
    output overflow
); //
 
    // assign s = ...
    // assign overflow = ...
	assign s=a+b;
    assign overflow=(a[7] & b[7] & (!s[7])) | ((!a[7]) & (!b[7]) & (s[7]));
endmodule

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只准备起飞的小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值