(1)无符号数加减法:直接使用“+”和“-”,但需要考虑进位的可能。
(2)有符号数加减法:需要扩展位宽,让两个数位宽相同。比如A为一个八位宽的变量,而B为一个六位宽的变量,则需要将A与B拓展到相同位宽,才可以进行加减法运算。
如:A + {{2{B[6]}},B} 或 A - {{2{B[6]}},B}
(3)取绝对值代码:
reg [15:0] A;
reg [14:0] abs_A;
assign abs_A = A[15] ? (~A[14:0] + 1):A[14:0];
(4)绝对值恢复为原值代码:
reg [15:0] A;
reg A_sign;
reg [14:0] abs_A;
assign A = A_sign ? ({A_sign,~ abs_A[14:0]} + 1):{A_sign,abs_A};