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 -