这两天调一个项目的时候涉及到了符号数的加法和限幅,调了好久才发现这里面的坑。。瞬间觉得自己基础有待提高啊
符号数的加法
用补码来表示符号数,对两个符号数相加可以直接加法赋值,如下列代码,这是由补码的特性决定的,非常方便。12345wire [31:0] sig_1;wire [31:0] sig_2;wire [31:0] add_ans;assign add_ans = sig_1 + sig_2;
加法溢出的处理
然而固定位数的加法会出现溢出的问题,要为结果考虑进位,因此为结果多添加一位。此时一定要注意!
符号数加法要进行符号位扩展!!
当时没有注意到这个,死活不知道为什么结果的进位消失了…示例代码
|
|
加法溢出限幅处理
如果加法结果溢出了,但是要传至的信号位数是固定的,那么就需要限幅。
相对来说这个也很简单,这里占个坑,以后有需要再来填。