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 -
   282   283   284   285   286   287   288   289   290   291   292