Page 194 - 3-2
P. 194
begin
clk_count <= 0;
clk_uart <= 0;
end
else
begin
if(clk_count == baud_rate)
begin
clk_count <= 0;
clk_uart <= 1;
end
else
begin
clk_count <= clk_count + 1;
clk_uart <= 0;
end
end
end
// 송신 모듈
always @ (posedge clk, negedge reset)
begin
if(!reset)
begin
tx_reg <= 0; // 송신 데이터 보관 변수
tx_empty <= 1; // 송신 완료 (1 을 넣어줌으로써 송신이 멈춰있음)
tx_out <= 1; // 스타트 , 스탑 비트 역할을 하는 변수
tx_cnt <= 0; // 전송 데이터 비트수 세는 변수
time_cnt <= 0;
end
else
begin
if(delay_cnt >= 25000000)
tx_flag = ~tx_flag;
if(clk_uart && tx_flag == 0)
begin
tx_empty <= 0;
tx_reg <= cf + "0"; // 갯수
if(!tx_empty) // 송신이 시작되었을 때
begin
tx_cnt <= tx_cnt+1; // 전송 데이터 비트수를 카운트해줌
if(tx_cnt == 0) tx_out <= 0;
// 전송 데이터 비트수가 0 일 때 start
if(tx_cnt > 0 && tx_cnt < 9) tx_out <= tx_reg[tx_cnt-1];
- 194 -