Я пытаюсь спроектировать 4-разрядный сумматор в verilog. Это только вторая вещь, которую я когда-либо писал в verilog, и я еще не знаю весь правильный синтаксис. Это модуль, который у меня есть:
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
Мой компилятор (xilinx 10.1) продолжает говорить «Синтаксическая ошибка рядом с if». Я испробовал много разных способов сделать преобразование, в том числе просто использовать регистр, который принимает Y в качестве аргумента, затем проверяет все возможные 4-битные комбинации и преобразует их в дополнение к двум.
Z - это то, что определяет, делает ли сумматор вычитание или сложение. Если это 0, это означает вычитание, и я хочу преобразовать y в дополнение к двум, а затем просто сделать регулярное сложение. Я уверен, что остальная часть сумматора верна, я просто не знаю, что не так с той частью, где я пытаюсь конвертировать.