cuiz

cuiz

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

无符号数和有符号数的溢出判断

无符号数溢出判断:其实很简单,就一句话:

当最高为向更高位有进位(或借位)时产生溢出。

有符号数溢出判断:

最高位进位状态⊕次高位进位状态=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

 

posted on 2021-08-24 17:21  cuiz的分享站  阅读(39)  评论(0)    收藏  举报