如何将3个数字加在一起?
How to add 3 number together?
有 3 个 Uint 8 位数字。我想总结这些数字。怎么用凿子来形容呢?
s = a + b + c // s 是 10 位数字
如果只用下面的方式来描述,与传统的HDL相比有什么好处?
s0 = a + b // s0 是 9 位数字
s1 = s0 + c // s1 是 10 位数字
我已经用凿子试过了,结果不是我想要的。
val in0 = Input(UInt(8.W))
val in1 = Input(UInt(8.W))
val p_out = Output(UInt(10.W))
io.p_out := io.in0 + io.in0 - io.in1
生成的RTL:
input [7:0] io_in0,
input [7:0] io_in1,
output [9:0] io_p_out
wire [8:0] _T_18;
wire [7:0] _T_19;
wire [8:0] _T_20;
wire [8:0] _T_21;
wire [7:0] _T_22;
assign io_p_out = {{2'd0}, _T_22};
assign _T_18 = io_in0 + io_in0;
assign _T_19 = _T_18[7:0]; // ??
assign _T_20 = _T_19 - io_in1;
assign _T_21 = $unsigned(_T_20); // ??
assign _T_22 = _T_21[7:0]; // ??
为了保留进位,你应该使用扩展运算符 +& 和 -&。
io.p_out := io.in0 +& io.in0 -& io.in1
有 3 个 Uint 8 位数字。我想总结这些数字。怎么用凿子来形容呢?
s = a + b + c // s 是 10 位数字
如果只用下面的方式来描述,与传统的HDL相比有什么好处?
s0 = a + b // s0 是 9 位数字 s1 = s0 + c // s1 是 10 位数字
我已经用凿子试过了,结果不是我想要的。
val in0 = Input(UInt(8.W))
val in1 = Input(UInt(8.W))
val p_out = Output(UInt(10.W))
io.p_out := io.in0 + io.in0 - io.in1
生成的RTL:
input [7:0] io_in0,
input [7:0] io_in1,
output [9:0] io_p_out
wire [8:0] _T_18;
wire [7:0] _T_19;
wire [8:0] _T_20;
wire [8:0] _T_21;
wire [7:0] _T_22;
assign io_p_out = {{2'd0}, _T_22};
assign _T_18 = io_in0 + io_in0;
assign _T_19 = _T_18[7:0]; // ??
assign _T_20 = _T_19 - io_in1;
assign _T_21 = $unsigned(_T_20); // ??
assign _T_22 = _T_21[7:0]; // ??
为了保留进位,你应该使用扩展运算符 +& 和 -&。
io.p_out := io.in0 +& io.in0 -& io.in1