Page 980 - 3-2
P. 980
reg [31:0] motor_step_clk = 0;
reg [7:0] rs_buff = 2'b00;
reg [3:0]sec10 = 0; //10 초 cnt
reg [1:0]sec1 = 0; //1 초 cnt
reg [1:0]sec3 = 0; //3 초 cnt
output reg [2:0]state = 0;
reg [31:0]time_cnt = 0; // 초 세기위한 cnt
reg rs_flag = 0;
reg [1:0] step_delay;
reg [7:0]sen_buff = 8'hff;
reg [15:0] angle_set = 0; // 움직일 각도 설정
wire [1:0] motor_on_off = rx_data[3:2]; // 물건이 들어가거나 나가야 할 때
wire [1:0] motor_sector = rx_data[1:0]; // 각 공간
output reg [1:0] current_sector = 0; // 공간 확인
parameter clk_figure = 500000;
parameter idle = 0, turn_state = 1, rs_state = 2, turn_motor = 3, open_door = 4, door_stop1 =
5, door_close = 6, door_stop2 = 7;
assign enable = 2'b00;
//sensor buffer
always@(posedge clk,negedge rst)
if(!rst) sen_buff <= 8'hff;
else sen_buff <= {sen_buff[6:0],sensor};
//state register & next state logic
always@(posedge clk,negedge rst)
if(!rst) state <= 0;
else begin
case(state)
idle : if(sen_buff == 8'hfe) state <= turn_state;
turn_state : if(angle_set != 0&& clk_cnt == clk_figure && angle_flag) state <= rs_state;
rs_state : if(rs_flag == 1) state <= turn_motor;
- 980 -