verilog 符号付加減算(最上位符号拡張)について教えてください
verilog初心者で、(2の補数形式)符号付加減乗算器を作成しています。
…が符号拡張のところで解決できずにいます f(--;)
もとの数a,bの最上位ビット(符号ビット)を16ビット分(乗算器に
あわせ)増やすことは理解できたのですが、それをどうverilog
記述すればいいのかわかりません。下記にある記述ではエラーと
なってしましました。
0拡張や、演算結果の最上位ビットだけを符号ビットにしてみたりし
たのですが、これではダメとのことで もうどうやったらいいのか
わからなくなってきました。(TT);
どなたか教えてください。
m(_ _)m
--------------------------------------------------------------
module kadai(a,b,c,q);
input [15:0] a,b;
input [2:0] c;
output [32:0] q;
wire [32:0] q;
assign q =(c == 3'b000)?{16{a[0]},a}+{16{b[0]},b}:
(c == 3'b001)?{16{a[0]},a}-{16{b[0]},b}:
(c == 3'b010)?{16{a[0]},a}*{16{b[0]},b};
endmodule
----------------------------------------------------------------
{16{a[0]},a}や{16{a[0]},b}という表現がいけないようなのですが…
よろしくお願い致します。
補足
お返事有り難う御座います。 詳しい説明で、よく解りました。 誤り訂正の機能は、パリティ、CRC等がありますが、どういう関係があるのでしょうか?