一、要点
1.结构:TTL电平的串口由两条信号线连接,一条为接收端RX,另一条为发送端TX。UART是一种无时钟线的串行接口,接线简单。
2.时序:即信息流动的时间顺序。下图是串口的时序图。
串口数据按帧发送,帧内的数据位、检验位、停止位是可配置的,一般情况下,数据位为8位,无检验位,停止位为1位,一帧数据则包含1+8+0+1=10位(bit)。
空闲状态下,总线为高电平,起始位固定为低电平,当在空闲状态下发送低电平时代表一帧数据开始发送,停止位固定为高电平,代表一帧数据结束。
3.波特率:数据传输的速率,即每秒中能传输的bit的个数。例如波特率115200即每秒钟最多能传输115200个bit的数据(包含起始位、停止位、校验位),则每bit数据需要维持的时间为1s/115200≈8.68055us。
二、实现
1.架构:发送模块主要包含3个部分,1、用计数器实现波特率定时,2、模块状态的转移,3、发送数据的填充
2.Verilog语言描述
新建一个uart_tx.v文件
module uart_tx
(
input clk,
input nrst,
input tx_en,
input [7:0]tx_data,