不调用ip核的有符号数加减法
-
两个16bit有符号数相加减
logic [15:0] a;
logic [15:0] b;
logic [16:0] c;
logic [16:0] d;
logic [15:0] c_ov;
logic [15:0] d_ov;
c<= {a[15],a[15:0]} + {b[15],b[15:0]};
d<= {a[15],a[15:0]} - {b[15],b[15:0]};
对c和d做16位溢出保护:
c_ov <= (^c[16:15]) ? (c[16]?16’h8000:16’h7fff) : c[15:0];
d_ov <= (^d[16:15]) ? (d[16]?16’h8000:16’h7fff) : d[15:0]; -
用户定义时就做有符号数定义
logic signed [15:0] a;
logic signed [15:0] b;
logic signed [16:0] c;
logic signed [16:0] d;
c<= a+b;
d<= a-b;