- 4 floors
-
AC -
DISPfloor number -
Open/Close door after 3 clock cycles - prioritize requests depending on moving direction
- asynch RESET
- call buttons on elevator panel
F1 F2 F3 F4
- up/down buttons on each floor
U1 U2 U3 U4D1 D2 D3 D4
- floor sensors
S1 S2 S3 S4
If a call button is pressed, the elevator will store the request in a register till it reaches the floor. Requests will be cleared with the clr signal of register.
register regF(.in(F), .clr(clrF), .out(F_));wire B1, B2, B3, B4, NB;
assign B1 = F1_ | U1_ | D1_;
assign B2 = F2_ | U2_ | D2_;
assign B3 = F3_ | U3_ | D3_;
assign B4 = F4_ | U4_ | D4_;
assign NB = ~(B1 | B2 | B3 | B4);B1-B4 is activated if there is any request to the floor. NB is activated if there is no request at all.
AC0: up1: down2: stop
Open0: close1: open
always @(posedge CLK) begin
if (Open == 1)
counter <= counter + 1;
else
counter <= 0;
endAfter the door is opened, the counter will start counting. When it reaches 3, the door will be closed.
wait(counter == 3);