2017-11-24 5 views
-2

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 

は、私はこのエラーを取得する:このようなより

Error (12014): Net "sum2[11]", which fans out to "q[15]", cannot be assigned more than one value

Error (12015): Net is fed by "nbit_adder:s3|s[11]" Error (12015):

Net is fed by "nbit_adder:s4|s[11]"

そして、もっと。私は何をすべきか ?

+2

あなたは[MCVE](https://stackoverflow.com/help/mcve)を提出していません( 'nbit_adder'と' _4bit_multiply'は何ですか?)、これは正しく表示されません: 'nbit_adder s4 sum2、0、co1、sum2、temp); ' - ' sum2'が2回現れます。 –

+0

あなたのコードwoukldは、インスタンス化のために_ordered mapping_の代わりに_named mapping_を使用した方が理解しやすくなりました。順序付けられたマッピングを使用しないでください。それはHDLの最大の罪です。 –

答えて

0

同じ変数は、コード内の複数のモジュールの出力です。基本的には次のようにしています:

assign sum2 = 1; 
assign sum2 = 0; 

したがって、Quartusは何をすべきか分かりません。

関連する問題