アプリ版:「スタンプのみでお礼する」機能のリリースについて

また似たような質問で申しわけないです。(T T;)
入力16ビット、出力を32ビット(←乗算器にもつなぐ入力の為)全加算器verilog記述についての質問です
****************************************************************//fulladder_16.v
`timescale 1ns/10ps
module fulladder_16(a,b,q);

input [15:0] a,b;
output [32:0] q;
wire [15:0] cin;

//module fulladd.v instance
fulladd add0(.a(a[0]),.b(b[0]),.cin(1'b0),.q(q[0]),.cout(cin[0]));
fulladd add1(.a(a[1]),.b(b[1]),.cin(cin[0]),.q(q[1]),.cout(cin[1]));
fulladd add2(.a(a[2]),.b(b[2]),.cin(cin[1]),.q(q[2]),.cout(cin[2]));


fulladd add14(.a(a[14]),.b(b[14]),.cin(cin[13]),.q(q[14]),.cout(cin[14]));
fulladd add15(.a(a[15]),.b(b[15]),.cin(cin[14]),.q(q[15]),.cout(cin[15]));

/*fulladd add0(.a(a[0]),.b(b[0]),.cin(1'b0),.q(q[0]),.cout(cin[0]));
fulladd add1[15:1](.a(a[15:1]),.b(b[15:1]),.cin(cin[14:0]),.q(q[15:1]),.cout(cin[15:1]));*/

assing q = {{17{q[15]}},q};
endmodule
/*ここでqの17~33bit目までを、上の記述のqの最上位ビットで拡張したくてこのように記述したのですが、この記述ではうまくいきません。

q =(算出された16ビットの最上位ビット × 17)と(算出された16ビット) 
で33ビットにしたいわけです。どのように記述したらいいでしょうか?教えてください!!m(_ _)m

ちなみにインスタンスしたのはしたの全加算器です
//fulladder
`timescale 1ns/10ps
module fulladd(a,b,cin,q,cout);

input a,b,cin;
output q,cout;

assign q = a^b^cin;
assign cout = (a & b)|(b & cin)|(cin & a);

endmodule

A 回答 (1件)

> この記述ではうまくいきません。


どううまくいかないかくらいは書きましょう。

> assing q = {{17{q[15]}},q};
assing じゃなくて assign では?

あとその記述だと、q[15:0]に2重に代入していることになるから、
 assign q[32:16] = {17{q[15]}};
が無難な気もする。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
確かに長ったらしくてわかりにくかったです。
もう一度書き直して質問させていただきます

お礼日時:2008/01/29 16:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!