Page 196 - 3-2
P. 196

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;
                                            end
                                            else rx_clk_cnt <= rx_clk_cnt + 1'b1;
                                            // always  하나 빼서 할 수 있음


                                            if ( rx_bit_cnt < 8 && rx_clk_cnt == baud_rate)
                                            // receive data
                                            begin
                                                    rx_data_buffer[rx_bit_cnt] <= rxd;
                                                    state_rx <= 1;
                                            end
                                            else if (rx_bit_cnt == 8 && rx_clk_cnt == baud_rate
                                                    && rxd == 1) // stop receiving
                                            begin
                                                    state_rx <= 0;
                                                    rx_data <= rx_data_buffer; // data  출력
                                                    rx_data_buffer <= 0;
                                            end




                                            // if stop bit is not received, clear the received data
                                            else if (rx_bit_cnt == 8 && rx_clk_cnt == baud_rate
                                                    && rxd != 1)
                                            begin
                                                    state_rx <= 0;
                                                    rx_data_buffer <= 8'b00000000; // invalidate
                                            end
                              end


                                                         - 196 -
   191   192   193   194   195   196   197   198   199   200   201