Page 193 - 3-2
P. 193

3)  하위 모듈 (rx_tx)

            module rx_tx(clk, reset, rxd, tx_out, led, cf, rx_data); //tx :  송신단자 -> 송신 모듈


            input reset,clk;
            input rxd;
            output tx_out;          //tx :  송신단자
            output [7:0]led;


            //  송신 변수
            reg clk_uart;           // 9600bps ->  시스템 클럭이 5625       번 들어올 때 1
            reg [15:0] clk_count;   // 5625 까지 세기 위한 변수
            reg [7:0]tx_reg;                //  송신하고자 하는 데이터를 보관하는 변수
            reg tx_empty;           //  송신 완료
            reg [3:0]tx_cnt;                //  전송하는 데이터 비트수를 세는 변수
            reg tx_out;
            reg [27:0]delay_cnt;


            //  수신 변수
            output reg [7:0]        rx_data;  //  수신데이터 저장하는 레지스터
            reg [7:0] rx_data_buffer;         // rxd 에서 수신된 데이터를 임시로 저장하기 위한 레지스터
            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   수신 상태
            reg tx_flag=0;


            reg[31:0] time_cnt;
            reg clk_s;
            reg [1:0]flag;


            wire [3:0]num;
            wire [3:0]t_num;
            input [1:0]cf;  //  최종 보내는 값


            parameter baud_rate = 16'd5208;                 // 9600bps
            parameter CLOCKS_WAIT_FOR_RECEIVE = 5208 / 2;           // start bit  인지 카운트




            assign led = tx_reg;
            assign num = (flag==1) ? t_num : num;


            always @ (posedge clk, negedge reset) //  통신 속도 맞추기
            begin
                    if(!reset)

                                                         - 193 -
   188   189   190   191   192   193   194   195   196   197   198