Page 287 - 3-2
P. 287
assign led1 = string[0];//string[0]; // 일의자리
assign led2 = string[1]; //string[1]; // 십의자리 // 모듈led
assign stream = {string[1],string[0]};
parameter CLOCKS_PER_BIT = 5208; // = 54Hz / 9600bps 통신속도
parameter CLOCKS_WAIT_FOR_RECEIVE = 5208 / 2; // 수신 데이터 스타트 비트인지 체크 할 시
간크기
parameter MAX_tx_bit_cnt = 9;
parameter MAX_DATA_BUFFER_INDEX = 15;
always @(posedge clk, negedge reset) // 스타트 비트 체크
if(!reset) start_cnt <= 0;
else
begin
if(rx_bit_cnt == 0 && uart_rxd == 0)
begin
if(start_cnt == CLOCKS_WAIT_FOR_RECEIVE) start_cnt <=0;
else start_cnt <= start_cnt+1;
end
else start_cnt <=0;
end
always @ (posedge clk, negedge reset) // 통신 속도
if(!reset) rx_clk_cnt <= 0;
else
begin
if (state_rx == 0 && uart_rxd == 0) rx_clk_cnt <= 0;
else if(state_rx == 1)
begin
if (rx_clk_cnt == CLOCKS_PER_BIT) rx_clk_cnt <= 0;
else rx_clk_cnt <= rx_clk_cnt +1;
end
else rx_clk_cnt <=0;
end
always @(posedge clk, negedge reset) // 수신 회로
if(!reset) begin rx_bit_cnt <= 0; rx_data <= 8'h00; rx_en <= 0; data[1] <= 8'h00; data[0] <=
8'h00; rst_flag <=0; end
else
begin
if (state_rx == 1)
begin
if (rx_bit_cnt < 8 && rx_clk_cnt == CLOCKS_PER_BIT) // 데이터 수신값 입력
begin
rx_data[rx_bit_cnt] <= uart_rxd;
- 287 -