一、UART簡介
UART(universal asynchronous receiver-transmitter)是一種采用異步串行通信方式的通用異步收發傳輸器。一般來說,UART總是和RS232成對出現,那RS232又是什么呢? RS232也就是我們計算機上的串口,它的全稱是EIA-RS-232C (簡稱232,或者是RS232 )。其中EIA(Electronic Industry Association)代表美國電子工業協會,RS是Recommended Standard的縮寫,代表推薦標准,232 是標識符,C表示修改次數,它被廣泛用於計算機串行接口外設連接。如果你的計算機上還有串口的話,那么你就可以在主機箱后面看到RS232的接口:
隨着時代的發展,這種借口已經很少用了,取而代之的是“USB轉串口”,功能和原先一樣,但接口更高效了。
串口的主要功能為:在發送數據時將並行數據轉換成串行數據進行傳輸,在接收數據時將接收到的串行數據轉換成並行數據。這應該是大多數人接觸電子后學習到的第一個通信協議吧。
串口參數(通信雙方約定好)
- 波特率:發送和接收一個bit都有固定的速率—9600bps 19200bps 38400bps 57600bps 115200bps。
- 起始位:先發出一個邏輯”0”的信號,表示傳輸數據的開始。
- 數據位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴展BCD碼(8位)。小端傳輸。
- 校驗位:數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗數據傳送的正確性。
- 停止位:它是一個字符數據的結束標志。
二、通信格式
下面來說說串口的具體要點:
1.傳輸時序
UART串口通信需要兩個信號線來實現,一根用於串口發送,另外一根負責串口接收。一開始高電平,然后拉低表示開始位,接着8個數據位,然后校驗位,最后拉高表示停止位,並且進入空閑狀態,等待下一次的數據傳輸。
很多時候我們的校驗位是允許省略的,所以協議就變成了:開始+數據+停止。
2.傳輸速率:波特率
串口通信的速率用波特率表示,它表示麥苗傳輸二進制數據的位數,單位是bps(位/秒)。常用的波特率有9600、19200、35400、57600以及115200等。
FPGA開發串口時,設計波特率的方法:FPGA的時鍾頻率/波特率。例如我的FPGA開發板時鍾頻率為50Mhz,即50_000_000hz,我想使用的波特率為9600bps,因此我需要的計數為:50000000/9600≈5208。
-----------------------------------------------------------------
原文有verilog編寫FPGA的UART串口通信協議代碼:https://www.cnblogs.com/xianyufpga/p/11086676.html