【问题标题】:Net, which fans out, cannot be assigned more than one value扇出的网络不能被分配多个值
【发布时间】:2017-11-24 10:36:57
【问题描述】:

我正在尝试设计一个基于 4 位乘法器的 8 位乘法器。所以这是我的代码:

module _8bit_multiply(a, b, q);

input [7:0] a;
input [7:0] b;

output [15:0] q;

wire [7:0] q0;
wire [7:0] q1;
wire [11:0] q2;
wire [11:0] q3;
wire [7:0] x0;
wire [11:0] x1;
wire [7:0] sum0;
wire [12:0] sum1;
wire [12:0] sum2;
wire co0;
wire co1;
wire temp;

_4bit_multiply m1(a[3:0], b[3:0], q0);

assign q[3:0] = q0[3:0];
assign x0[3:0] = q0[7:4];

_4bit_multiply m2(a[7:4], b[3:0], q1);

nbit_adder s1(x0, q1, 0, sum0, co0);

_4bit_multiply m3(a[3:0], b[7:4], q2);
_4bit_multiply m4(a[7:4], b[7:4], x1);

assign q3[11:4] = x1[7:0];

nbit_adder s2(q2, q3, 0, sum1, co1);

nbit_adder s3(sum0, sum1, co0, sum2, temp);
nbit_adder s4(sum2, 0, co1, sum2, temp);

assign q[15:4] = sum2[12:0];

endmodule

然后我得到这个错误:

错误 (12014):网络“sum2[11]”,扇出到“q[15]”,不能 分配了多个值

错误 (12015):网络由“nbit_adder:s3|s[11]”提供错误 (12015):

网络由“nbit_adder:s4|s[11]”馈送

不仅如此。我该怎么办?

【问题讨论】:

  • 您尚未提交MCVEnbit_adder_4bit_multiply 是什么?),但这看起来不对:nbit_adder s4(sum2, 0, co1, sum2, temp); - sum2 出现了两次。跨度>
  • 如果您在实例化中使用命名映射而不是有序映射,您的代码会更容易理解。永远不要使用有序映射;这是 HDL 中最大的罪过。

标签: verilog quartus digital-design


【解决方案1】:

同一变量是代码中多个模块的输出。基本上你正在这样做:

assign sum2 = 1;
assign sum2 = 0;

所以 Quartus 不知道该怎么做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2015-04-09
    • 2019-01-02
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多