UART串口通信协议的FPGA实现

引言 UART串口通信协议,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。UART是异步通信,它只需要一根线就可以进行数据的通信。1、基本概念波特率:指每秒传输的bit位数(bit)。一般波特率都会有9600,15200等选项。 起始位:先发出一个逻辑”0”信号,表示传输字符的开始。 数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。一般情况下都选择8位而...
摘要由CSDN通过智能技术生成

引言

      UART串口通信协议,全称叫做通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART。UART是异步通信,它只需要一根线就可以进行数据的通信。

1、基本概念

  • 波特率:指每秒传输的bit位数(bit)。一般波特率配置为4800,9600,115200等;
  • 起始位:先发出一个逻辑”0”信号,表示传输字符的开始;
  • 数据位:可以是5~8位逻辑”0”或”1”。一般情况下都选择8位而不选择7,因为这样能尽可能避免数据的丢失或者混乱。从数据低位开始传输(即从LSB端开始发送数据,而且是串行发送);
  • 校验位:当数据位加上校验位后,当1”的位数为偶数时,叫做偶校验,为奇数时,叫做奇校验,主要用于差错控制;
  • 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平;
  • 空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。

   具体的时序图如下图所示:

在这里插入图片描述

2、Verilog实现代码

  • uart_tx.v
module uart_tx #(
parameter BAUD_DIV = 14'd10416     //波特率时钟,9600bps,100Mhz/9600=10416,波特率可调,意为一位数据占用多少时钟周期
)
(
input clk,                   //100M时钟
input [7:0] uart_tx_data_i,    //待发送数据
input uart_tx_en_i,            //发送发送使能信号
output uart_tx_o,               //串口输出
output uart_tx_done         // 串口发送结束信号 1:正在发送 0:发送完成
    );
    
parameter BAUD_DIV_CAP = BAUD_DIV / 2;      //波特率时钟中间采样点,100Mhz/9600/2=5208,波特率可调
 
 //-------------------------串口计数,中值采样-
  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值