我正在尝试在if
中使用else if
,for loop
语句。
但是我一直遇到语法错误,提示“意外”。
在if
中使用else if
,for loop
的正确语法是什么?
module onezerocheck(in,out);
input [31:0] in;
output out;
integer i; //1101
reg j;
always@(in) begin
for(i=0; i<32; i=i+1) begin
if(in[i]==0) begin
j=1;
out=1'b0;
end
else if(in[i]==1) begin
j=0;
out=1'b0;
end
else if((if[i]==1&&j==1)) begin //unexpected if
out=1'b1;
j=0;
end
else if((if[i]==1&&j==0)) begin //unexpected else
out=1'b0;
j=0;
end
end //unexpected end
end
endmodule
答案 0 :(得分:0)
有两种错误。
if
是Verilog中的保留关键字,不能用作变量名。您可能想在两个地方都将if[i]
替换为in[i]
。
此外,由于out
是在reg
块中分配的,因此您需要将always
声明为module onezerocheck(in,out);
input [31:0] in;
output out;
reg out;
integer i; //1101
reg j;
always@(in) begin
for(i=0; i<32; i=i+1) begin
if(in[i]==0) begin
j=1;
out=1'b0;
end
else if(in[i]==1) begin
j=0;
out=1'b0;
end
else if((in[i]==1&&j==1)) begin //unexpected if
out=1'b1;
j=0;
end
else if((in[i]==1&&j==0)) begin //unexpected else
out=1'b0;
j=0;
end
end //unexpected end
end
endmodule
。
{{1}}
答案 1 :(得分:-1)
尝试一下:
module onezerocheck(in,out);
input [31:0] in;
output out;
integer i; //1101
reg j;
always@(in)
begin
for(i=0; i<32; i=i+1)
begin
if(in[i]==0)
begin
j=1;
out=1'b0;
end
else if(in[i]==1)
begin
j=0;
out=1'b0;
end
else if((in[i]==1)&&(j==1))
begin
out=1'b1;
j=0;
end
else if((in[i]==1)&&(j==0))
begin
out=1'b0;
j=0;
end
else
begin
//else statement here
end
end
end
endmodule