前言
对于verilog的学习,这里推荐一个比较好的实践网站HDLBits:https://hdlbits.01xz.net/wiki/Main_Page
本系列记录一些我觉得有价值的题目,希望通过这些题目可以对verilog更加熟练。
有符号的加法器signed adder设计
题目: 假设你有两个8位有符号的输入,即a [7:0]和b [7:0]。这些数字相加产生s [7:0],还要计算是否发生溢出情况。
module top_module (
input [7:0] a,
input [7:0] b,
output [7:0] s,
output overflow
);
endmodule
一个有符号数的最高位代表正负,最高位是0代表正数,最高位是1代表负数。那什么时候会发生溢出(overflow)的情况?只有两个正数(负数)相加才会发生溢出,相减(即一正一负)是不会发生溢出的。
两个正数相加(符号位都为0),如果结果为负数,则发生溢出;两个负数相加(符号位都为1),如果结果为正数,则发生溢出,其他情况都为没有发生溢出。因此我的答案如下
module top_module (
input