【发布时间】:2018-06-07 20:46:02
【问题描述】:
我正在使用带有 verilog 的 modelsim 我目前正在尝试使用 8 位乘法器构建 32 位乘法器。 我将乘法分为 16 个阶段,在每个阶段中,我将一个数字的 8 位与另一个数字的 8 位相乘,因此总体上覆盖了 2 个完整的 32 位数字。 我在尝试加载“零字节”时遇到了一个问题(8位零,在ine号的某个位置),负责保存这些位的寄存器不加载零,而是保留最后一个不为零的 8 位数字。我如何强制该寄存器存储零。 我正在添加我的代码。 非常感谢。
reg [8:0] outmuxa,outmuxb;
always @(a_sel or b_sel) begin
case(a_sel)
00:outmuxa={1'b0,a[7:0]};
01:outmuxa={1'b0,a[15:8]};
10:outmuxa={1'b0,a[23:16]};
11:outmuxa={1'b0,a[31:24]};
endcase
case(b_sel)
00:outmuxb={1'b0,b[7:0]};
01:outmuxb={1'b0,b[15:8]};
10:outmuxb={1'b0,b[23:16]};
11:outmuxb={1'b0,b[31:24]};
endcase
end
【问题讨论】:
-
我没有看到您尝试将 8 位宽度 0 分配给
outmuxa或outmuxb。你能澄清一下a_sel和b_sel的条件是什么吗? -
例如,如果位置 b[15:8] 中的位全为零,则 outmuxb 不会更改为全零,而是保留 b[7:0] 的位。跨度>
标签: verilog