```c
module master_crl(door,up,down,a,b,up1,down1,b3,b1,b2,a3,a4,m);
input[3:0] a;
input[4:0] b;
output[2:0] up,down,up1,down1,m;
output[5:0] a3,b3,b1,b2,a4;
output door;
reg[2:0] up1,down1,down2,up2,up3,down,up;
reg door=0;
reg[5:0] b1,b2,b3,a3,a4;
reg[4:0] memory=5'd1;
reg[4:0] state;
integer i=0,j;
reg[2:0] k=0,l=0,o=0,flag; //sign of ask
reg[2:0] m=1,n=0;
parameter[4:0] wait1=0,wait2=1,wait3=0,wait4=1,state1=10;
function[4:0] abs;
input[4:0] x;
input[4:0] y;
if(x>y) abs=x-y;
else abs=y-x;
endfunction
//initial
// begin
// m=0;
// end
always@(a or b)
begin
up<=k*up1;
down<=l*down1;
case(b)
5'd0:b3<=5'd0;
5'd1:b3<=5'd1;
5'd2:b3<=5'd2;
5'd3:b3<=5'd3;
5'd4:b3<=5'd4;
5'd5:b3<=5'd5;
5'd6:b3<=5'd6;
5'd17:begin b1<=5'd1;b2<=5'd2;end
5'd18:begin b1<=5'd1;b2<=5'd3;end
5'd19:begin b1<=5'd1;b2<=5'd4;end
5'd20:begin b1<=5'd1;b2<=5'd5;end
5'd21:begin b1<=5'd1;b2<=5'd6;end
5'd22:begin b1<=5'd2;b2<=5'd3;end
5'd23:begin b1<=5'd2;b2<=5'd4;end
5'd24:begin b1<=5'd2;b2<=5'd5;end
5'd25:begin b1<=5'd2;b2<=5'd6;end
5'd26:begin b1<=5'd3;b2<=5'd4;end
5'd27:begin b1<=5'd3;b2<=5'd5;end
5'd28:begin b1<=5'd3;b2<=5'd6;end
5'd29:begin b1<=5'd4;b2<=5'd5;end
5'd30:begin b1<=5'd4;b2<=5'd6;end
5'd31:begin b1<=5'd5;b2<=5'd6;end
endcase
if((up1==0)&&(down1==0)) m<=wait1;
if((b<16)&&(b>0))
begin
if(a==b)
begin
for(j=0;j<5;j=j+1)begin door<=1;up1<=0;down1<=0;end
case(a)
5'b00001:a3<=5'b00001;
5'b00010:a3<=5'b00010;
5'b00011:a3<=5'b00011;
5'b00100:a3<=5'b00100;
5'b00101:a3<=5'b00101;
5'b00110:a3<=5'b00110;
endcase
end
if(a<b)
begin
k<=1;door<=0;
up1<=b-a3;
end
if(a>b)
begin
l<=1;door<=0;
down1<=a3-b;
end
end
else
begin
k<=1;l<=1;
case(a)
5'b00001:a3<=5'b00001;
5'b00010:a3<=5'b00010;
5'b00011:a3<=5'b00011;
5'b00100:a3<=5'b00100;
5'b00101:a3<=5'b00101;
5'b00110:a3<=5'b00110;
endcase
if(abs(b1,a3)>abs(b2,a3))
begin
case(m)
wait1:begin
if(a==b2)
begin
begin door<=1;up1<=0;down1<=0;end //open door 5s ask first
case(a3)
5'b00001:a4<=5'b00001;
5'b00010:a4<=5'b00010;
5'b00011:a4<=5'b00011;
5'b00100:a4<=5'b00100;
5'b00101:a4<=5'b00101;
5'b00110:a4<=5'b00110;
endcase
m<=wait2;
end
else if(a<b2)
begin
door<=0;up1<=b2-a3;down1<=0;flag<=1;
m<=wait1;
end
else
begin
door<=0;up1<=0;down1<=a3-b2;flag<=1;
m<=wait1;
end
end
wait2:begin
if(a==b1)
begin
begin door<=1;up1<=0;down1<=0;end //second
m<=wait1;
end
else if(a<b1)
begin
door<=0;up1<=b1-a4;down1<=0;
m<=wait2;
end
else
begin
door<=0;up1<=0;down1<=a4-b1;
m<=wait2;
end
end
endcase
end
// else
// begin
// case(n)
// wait3:begin
// if(a3<b1)
// begin
// begin door=0;up1<=b1-a3;down1<=0;end
// n=wait3;
// end
// else if(a3==b1)
// begin
// for(j=0;j<5;j=j+1)begin door=1;up1<=0;down1<=0;end //open door 5s ask first
// n=wait4;
// end
// else
// begin
// begin door=0;up1<=0;down1<=a3-b1;end
// n=wait3;
// end
// end
// wait4:begin
// if(a3<b2)
// begin
// begin door=0;up1<=b2-a3;down1<=0;end
// n=wait4;
// end
// else if(a3>b2)
// begin
// begin door=0;up1<=0;down1<=a3-b2;end
// n=wait4;
// end
// else
// begin
// for(j=0;j<5;j=j+1)begin door=1;up1<=0;down1<=0;end //second
// n=wait3;
// end
// end
// endcase
// end
end
end
endmodule
```
case(m)中的wait1可能不是转换之后的值,没有进入到wait1下的模块中去,语句没有被执行
case(m)的后面是写了wait1,wait2,wait3和wait4四种情况么?
如果四个都有的话,代码第15行,定义相等的状态可不行。
要学会在代码区里把代码贴全,别用图片。代码不全就只能猜测,不容易得到准确的答案
把这个begin end 删了试试,没用的