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.
知识点:判断有符号数是否溢出
[方法一]
Xf、Yf分别两个数的符号位,Zf为运算结果符号位。
当Xf =Yf =0(两数同为正),而Zf=1(结果为负)时,负溢出;
当出现Xf =Yf =1(两数同为负),而Zf=0(结果为正),正溢出.
[方法二]
Cs表示符号位的进位,Cp表示最高数值位进位,⊕表示异或。
若 Cs⊕Cp =0 ,无溢出;
若 Cs⊕Cp =1 ,有溢出。
作者:miffywm
来源:CSDN
原文:https://blog.csdn.net/miffywm/article/details/79085467
版权声明:本文为博主原创文章,转载请附上博文链接!
代码:module top_module (
input [7:0] a,
input [7:0] b,
output [7:0] s,
output overflow
); //
reg [3:0]i;
reg[7:0]count;
always@(*)begin
for(i=0;i<8;i++)begin
if(i==0)begin
{count[0],s[0]}=a[0]+b[0];
end
else begin
{count[i],s[i]}=a[i]+b[i]+count[i-1];
end
overflow = count[7]^count[6];
end
end
endmodule