오류 (10170) : "else"텍스트 근처에 jmd_alub_v.v (31)에 Verilog HDL 구문 오류가 있습니다.오류 (10170) : "else"텍스트 근처에 jmd_alub_v.v (31)에 Verilog HDL 구문 오류가 있습니다.
이 오류를 기대하는 것은 여러 번 사람은 당신이 begin
로 브라켓 필요 else
if
에서 여러 문을 넣어 가거나하는 경우 문제가
module jmd_alub_v(A, B, FS, F, Cout);
input [3:0] FS;
input [3:0] A, B;
output reg [3:0] F;
output wire Cout;
wire [4:0] Sum, Incr, Diff, Decr, Shr ;
assign Sum = {1'b0, A} + {1'b0 ,B} + FS[0];
assign Diff ={1'b0, A} + {1'b0,~B} + FS[0];
assign Incr = {1'b0,A} + FS[0];
assign Decr = {1'b0,A} + 5'b01111;
assign Shr[4] = A[0];
assign Shr[3] = A[3];
assign Shr[2] = A[3];
assign Shr[1] = A[2];
assign Shr[0] = A[1];
always @(A,B,FS)
begin
if (FS == 4'b0000)
F = A;
else if (FS == 4'b0001)
F = Incr[3:0];
Cout = Incr[4];
else if (FS == 4'b0010)
F = Sum[3:0];
Cout = Sum[4];
else if (FS == 4'b0011)
F = Sum[3:0];
Cout = Sum[4];
else if (FS == 4'b0100)
F = Diff[3:0];
Cout = Diff[4];
else if (FS == 4'b0101)
F = Diff[3:0];
Cout = Diff[4];
else if (FS == 4'b0110)
F = Decr[3:0];
Cout = Decr[4];
else if (FS == 4'b0111)
F = A;
else if (FS == 4'b1000)
F = ~A;
else if (FS == 4'b1001)
F = ~A;
else if (FS == 4'b1010)
F = A & B;
else if (FS == 4'b1011)
F = A & B;
else if (FS == 4'b1100)
F = A | B;
else if (FS == 4'b1101)
F = A | B;
else if (FS == 4'b1110)
F = Shr[3:0];
Cout = Shr[4];
else if (FS == 4'b1111)
F = Shr[3:0];
Cout = Shr[4];
else
F = 4'b0000; //default
Cout = 1'b0; // default
end
endmodule
FYI :'Cout'은 모든 조건에서 정의되지 않았기 때문에 유추 된 래치입니다. '@ *'는 조합 논리를 위해 재개됩니다. '@ (A, B, FS)'는 유효하지만 자동 감도 목록은 확장 성이 뛰어납니다. else-if 체인이 길어서 대신 대/소문자를 사용하는 것이 좋습니다. – Greg