2.3 基于FPGA的UART协议实现(二)UART传输时序分析

2.3.2 UART传输时序分析

  串口传输数据都是一帧数据 11 位,参考 https://blog.csdn.net/Pieces_thinking/article/details/99234401中的串口时序。
在这里插入图片描述
              图2 33 串口时序
                      表2 7 串口时序说明表
在这里插入图片描述
  在串口的总线上“高电平”是默认的状态,当一帧数据的开始传输必须先拉低电平,这就是第 0 位的作用。第 0 位过后就是 8 个数据位,这八个数据位才是一帧数据中最有意义的东西。最后的两位是校验位和停止位,作用如同命名般一样。
  串口传输还有另一个重要参数就是“波特率”。“波特率”在宏观上理解就是串口传输的传输速度;在微观上“波特率”就是串口传输中“一个位的周期”,换句话说亦是“一个位所逗留的时间”。这个概念在后期编写程序是很重要的。
  常用的波特率有 9600 bps 和 115200 bps ( bit per second )。“9600 bps” 表示每秒可以传输 9600 位。但是经过公式计算“一个位的周期”就会暴露出来。

一个位的周期 = 1 / bps
= 1/ 9600
= 0.000104166666666667

  从上述的公式,我们明白一个事实 9600 bps ,传输一位数据占用 0.000104166666666667s 时间。如果是一帧 11 位的数据,就需要

0.000104166666666667 x 11 = 0.00114583333333334

  那么一秒钟内可以传输

1 / 0.00114583333333334 = 872.727272727268
872.727272727268 个帧数据。

  当然这只是在数字上计算出来而已,但是实际上还有许多看不见的延迟因数。
  当使用115200 bps ,

一个位的周期 = 1 / bps
= 1/ 115200
= 0.000086805555555555555555555555555556

  传输一位数据占用 0.000086805555555555555555555555555556s 时间。如果是一帧 11 位的数据,就需要

0.000086805555555555556 x 11 = 0.00095486111111111111111111

  那么一秒钟内可以传输

1 / 0.00095486111111111111111111 = 1047.2727272727272727272739459174
1047.2727272727272727272 个帧数据。

  如果用 50Mhz 的时钟频率去量化的话:

( 1/115200 ) / (1/50E+6) = 8.68E-6 / 20E-9
= 434

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenFPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值