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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章