Page 977 - 3-2
P. 977

reg [3:0]       rx_bit_cnt; // 수신데이터 비트 카운터 변수
            reg [15:0]      rx_clk_cnt; //  수신시 통신 속도를 카운터하기 위한 변수

            reg [15:0] rx_start_cnt; //start bit check 를 위한 카운터 변수
            reg state_rx; // state_rx = 0  휴지상태 , state_rx=1   수신 상태



            always @(posedge clk, negedge reset)

            if(reset == 0)
              begin

                rx_clk_cnt <= 0;
                rx_start_cnt <= 0;

                state_rx <= 0; //  수신회선 휴지 상태
                rx_bit_cnt <= 0;

              end
            else

              begin
                if(state_rx == 0 && rxd == 0)   // if not receive mode and start bit is detect.ed

                begin
                   if(rx_start_cnt >= CLOCKS_WAIT_FOR_RECEIVE -1)

                   begin
                       rx_start_cnt <= 0;

                       state_rx <= 1'b1;      //enter receive mode
                 end
                  else

                  begin
                       rx_start_cnt <= rx_start_cnt +1'b1 ;

                       state_rx <= 1'b0;
                  end

              end
              else    rx_start_cnt <=0;

              if(state_rx == 1)   // if receive mode
                  begin

                       if(rx_clk_cnt >= baud_rate) // 컴퓨터의 통신속도로 시스템클럭 분주
                       begin

                          rx_clk_cnt <= 0;
                          if(rx_bit_cnt >= 8) rx_bit_cnt <= 0; //  수신데이터 bit count

                          else rx_bit_cnt <= rx_bit_cnt +1'b1;



                                                         - 977 -
   972   973   974   975   976   977   978   979   980   981   982