Prog New VHDL
Prog New VHDL
always @ (o_door,o_floor,r_callfloor)
begin
if (r_finish !=1)
begin
if (o_floor == 1 && o_door == 1) //stage 0
begin
r_floor = 4'b0001;
r_door = 0;
o_elevator = 0;
r_finish = 1;
end
else if (o_floor == 1 && o_door == 0 && r_callfloor == 1) //stage 1
begin
r_floor = 4'b0001;
r_door = 1;
o_elevator = 0;
r_finish = 0;
end
else if (o_floor == 1 && o_door == 0 && r_callfloor != 1) //stage 2
begin
r_floor = 4'b0010;
r_door = 0;
o_elevator = 2'b01;
r_finish = 0;
end
else if (o_floor == 2 && o_door == 0 && r_callfloor == 1) //stage 3
begin
r_floor = 4'b0001;
r_door = 0;
o_elevator = 2'b10;
r_finish = 0;
end
else if (o_floor == 2 && o_door == 1) //stage 4
begin
r_floor = 4'b0010;
r_door = 0;
o_elevator = 0;
r_finish = 1;
end
end
end
endmodule
P22222
module step_motor(
input clk,
input rst,
input dir,
input en,
output [3:0] signal_out
);
endmodule
module step_driver(
input rst,
input dir,
input clk,
input en,
output reg [3:0] signal
);
// Output Logic
// Depending on the state
// output signal has a different
// value.
always @ (posedge clk)
begin
if (present_state == sig4)
signal = 4'b1000;
else if (present_state == sig3)
signal = 4'b0100;
else if (present_state == sig2)
signal = 4'b0010;
else if (present_state == sig1)
signal = 4'b0001;
else
signal = 4'b0000;
end
endmodule
module clock_div(
input clk,
input rst,
output reg new_clk
);
// The constant that defines the clock speed.
// Since the system clock is 100MHZ,
// define_speed = 100MHz/(2*desired_clock_frequency)
localparam define_speed = 26'd5000000;