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 -