📄 liftcontrol.v
字号:
else if(inrequest[4]) begin inrequest[4]<=0; pre_state<=state; state<=WAIT; count<='b000; door<=1; end else state<=UP; end 'b00010000: begin if(inrequest[5] && uprequest[5]) begin inrequest[5]<=0; uprequest[5]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(uprequest[5]) begin uprequest[5]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[5]) begin inrequest[5]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=UP; end 'b00100000: begin if(inrequest[6] && uprequest[6]) begin inrequest[6]<=0; uprequest[6]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(uprequest[6]) begin uprequest[6]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[6]) begin inrequest[6]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=UP; end 'b01000000: begin if(inrequest[7]) begin inrequest[7]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=UP; end 8'b10000000: begin state<=WAIT; count<=0; door<=1; end endcase end DOWN: begin case(curfloor) 'b00000001: begin state<=WAIT; count<=0; door<=1; end 'b00000010: begin if(inrequest[0]) begin inrequest[0]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end 'b00000100: begin if(inrequest[1] && dnrequest[1]) begin inrequest[1]<=0; dnrequest[1]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(dnrequest[1]) begin dnrequest[1]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[1]) begin inrequest[1]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end 'b00001000: begin if(inrequest[2] && dnrequest[2]) begin inrequest[2]<=0; dnrequest[2]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(dnrequest[2]) begin dnrequest[2]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[2]) begin inrequest[2]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end 'b00010000: begin if(inrequest[3] && dnrequest[3]) begin inrequest[3]<=0; dnrequest[3]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(dnrequest[3]) begin dnrequest[3]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[3]) begin inrequest[3]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end 'b00100000: begin if(inrequest[4] && dnrequest[4]) begin inrequest[4]<=0; dnrequest[4]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(dnrequest[4]) begin dnrequest[4]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[4]) begin inrequest[4]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end 'b01000000: begin if(inrequest[5] && dnrequest[5]) begin inrequest[5]<=0; dnrequest[5]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(dnrequest[5]) begin dnrequest[5]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[5]) begin inrequest[5]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end 'b10000000: begin if(inrequest[6] && dnrequest[6]) begin inrequest[6]<=0; dnrequest[6]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(dnrequest[6]) begin dnrequest[6]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else if(inrequest[6]) begin inrequest[6]<=0; pre_state<=state; state<=WAIT; count<=3'b000; door<=1; end else state<=DOWN; end endcase end endcase endend always @(posedge clk) begin if(!rst) curfloor[7:0]<=8'b00000001; else case(state) UP: curfloor<=curfloor<<1; DOWN: curfloor<=curfloor>>1; WAIT: curfloor<=curfloor; STOP: curfloor<=curfloor; endcase end endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -