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 -
   975   976   977   978   979   980   981   982   983   984   985