无符号数溢出判断:其实很简单,就一句话:
当最高为向更高位有进位(或借位)时产生溢出。
有符号数溢出判断:
最高位进位状态⊕次高位进位状态=1,则溢出
signed add overflow
我是这么写的,显示我的写的有问题
module top_module ( input [7:0] a, input [7:0] b, output [7:0] s, output overflow ); // assign s=a+b; wire c6,c7,s6,s7; assign {c6,s6}=a[6]+b[6]; assign {c7,s7}=a[7]+b[7]; assign overflow = c6^c7; // assign s = ... // assign overflow = ... endmodule
查了一些资料,给整明白了,《计算机原理组成与设计》是本好书!!
module top_module ( input [7:0] a, input [7:0] b, output [7:0] s, output overflow ); // assign s = a+b; // 按《计算机原理组成与设计》的思路,两正相加为负,表示溢出;两负相加为正,表示溢出 //也就是:assign overflow =(a[7]==b[7]&&a[7]==0&&a[7]!=s[7])||(a[7]==b[7]&&a[7]==1&&a[7]!=s[7]) //简化如下: assign overflow=(a[7]==b[7])&&a[7]!=s[7]; // assign s = ... // assign overflow = ... endmodule

浙公网安备 33010602011771号