1.学习目标
通过对实例的学习掌握溢出的判断
2.实例学习
Q:Exams/ece241 2014 q1c
- 假设您有两个 8 位 2 的补码数,a[7:0] 和 b[7:0]。这些数字相加以产生s[7:0]。还要计算是否发生了(有符号的)溢出。
计算机中有符号数采用补码进行运算。
1.一个正数和一个负数相加,一定不会溢出(>127 or <-128表示溢出)。
2.两正数相加时,数据高位进位,符号位没有进位时,溢出;(0_110_0100 + 1_001_0110 = 1_001_0110)
数据高位没有进位,符号位没有进位时,无溢出;
3.两负数相加时,数据高位没有进位,符号位进位时,溢出;
数据高位进位,符号位进位时,无溢出。
总结:当数据高位进位标致和符号进位标致不同时,则发生溢出。
A:
module top_module (
input [7:0] a,
input [7:0] b,
output [7:0] s,
output overflow
);
assign s = a + b;
assign overflow = (~s[7]&a[7]&b[7])|(s[7]&(~a[7])&(~b[7]));
endmodule