Page 431 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 431

인천전자마이스터고                                                                            전자회로설계과



                    reg  [1:0]state;
                    //  out_flag  =  [0]  :  pir센서  감지중  [1]  :  감지완료,  pir_flag  =  [0]  :  이상X  [1]  :  생명  발견,
            end_flag  =  [0]  :  도어락  제어중  [1]  :  제어완료
                    reg  out_flag,  pir_flag,  end_flag;


                    parameter  IDLE  =  2'b00,  READY  =  2'b01,  OUTPUT  =  2'b10;


                    always  @(posedge  clk,  negedge  reset)
                    begin
                            if  (!reset)  state  <=  IDLE;
                            else
                            begin
                                    case  (state)
                                            IDLE  :  state  <=  (door  ==  2'b10  ||  door  ==  2'b01)?  READY  :
            IDLE;
                                            READY  :  state  <=  (out_flag)?  ((pir_flag)?  IDLE  :  OUTPUT)  :
            READY;
                                            OUTPUT :  state <=  (end_flag)?  IDLE :  OUTPUT;
                                            default  :  state  <=  IDLE;
                                    endcase
                            end
                    end


                    always  @(posedge  clk,  negedge  reset)
                    begin
                            if  (!reset)
                            begin
                                    time_cnt  <=  0;
                                    out_flag  <=  1;
                                    pir_flag  <=  0;
                                    d_out  <=  0;
                            end
                            else
                            begin
                                    if  (state  ==  READY)  out_flag  <=  0;
                                    if  (!out_flag)
                                    //state  ==  READY,  pir  센서  감지  중
                                    begin
                                            time_cnt  <=  time_cnt  +  1;
                                            if  (sen_in  ==  3'b100  ||  sen_in  ==  3'b101  ||  sen_in  ==  3'b110
            ||  sen_in  ==  3'b111)




                                                         -  424  -
   426   427   428   429   430   431   432   433   434   435   436