我有一个关于乘法的问题。在我的例子中,行和vec是我的输入。每个包含带有DW数据宽度的N个带符号数字。 temp1和temp2是用于存储乘法结果的数组。所有号码都已签名。问题是为什么temp1和temp2有不同的答案?为什么temp1错了,但temp2正确吗?对不起,我是Verilog的新手,无法弄清楚原因。谢谢!
input signed [(DW * N) -1 : 0] row;
input signed [(DW * N) -1 : 0] vec;
always @(*) begin
for (i=0;i<N;i=i+1) begin
t1 = row[i*DW +: DW];
t2 = vec[i*DW +: DW];
temp1[i] = t1 * t2;
temp2[i] = (row[i*DW +: DW] )* (vec[i*DW +: DW]);
end
end
答案 0 :(得分:2)
任何向量的部分选择都是无符号的,无论整体是否已签名。