Verilog で 4 ビット加算減算器を設計しようとしています。これは私が Verilog で書いたのは 2 番目に過ぎず、正しい構文をまだすべて知っているわけではありません。これは私がこれまで持っているモジュールです:
module Question3(carryin, X, Y, Z, S, carryout, overflow);
parameter n = 4;
input carryin, Z;
input [n-1:0]X, Y;
output reg [n-1:0]S;
output reg carryout, overflow;
if(Z==0)
begin
Y = not(y) + 4'b0001;
end
always @(X, Y, carryin)
begin
{carryout, S} = X + Y + carryin;
overflow = carryout ^ X[n-1]^Y[n-1]^S[n-1];
end
endmodule
私のコンパイラ (ザイリンクス 10.1) は、「if の近くで構文エラー」と言い続けます。Y を引数として取り、考えられるすべての 4 ビットの組み合わせをチェックして、それらを 2 の補数に変換する Case を使用するなど、さまざまな変換方法を試しました。
Z は、加算器が減算または加算を行うかどうかを決定するものです。0 の場合は減算を意味し、y を 2 の補数に変換したいので、通常の加算を行います。加算器の残りの部分は正しいと確信していますが、変換しようとしている部分の何が問題なのかわかりません。