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 -