简介
在学习FPGA时,整理的一些问题,慢慢积累,期待自己的进步。
个人邮箱: 1149025224@qq.com
欢迎交流!
两个8bit有符号数相加
有符号数溢出发生有两种情况:正正相加得负,负负相加得正(其实负负相加是各自的补码相加)。
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] && ~s[7] ) || (~a[7] && ~b[7] && s[7]);
endmodule
解析:
assign s = a + b ;//两个8bit数相加
assign overflow =assign overflow = ( a[7] && b[7] && ~s[7] ) || (~a[7] && ~b[7] && s[7]);// 逻辑或。表示至少出现这两种情况之一时输出为真为1。
两种情况之一: a 正 b 正,求和之后的 s 为负
两种情况之二: a 负 b 负,求和之后的 s 为正
总结
assign overflow = ( a[7] && b[7] && ~s[7] ) || (~a[7] && ~b[7] && s[7]); //用来判断有符号数的溢出