發送接收
發送邏輯對從發送FIFO 讀取的數據執行“并→串”轉換。控制邏輯輸出起始位在先的串行位流,并且根據控制寄存器中已編程的配置,后面緊跟著數據位(注意:最低位 LSB 先輸出)、奇偶校驗位和停止位。
在檢測到一個有效的起始脈沖后,接收邏輯對接收到的位流執行“串→并”轉換。此外還會對溢出錯誤、奇偶校驗錯誤、幀錯誤和線中止(line-break)錯誤進行檢測,并將檢測到的狀態附加到被寫入接收FIFO 的數據中。
波特率產生
波特率除數(baud-rate divisor)是一個22 位數,它由16 位整數和6 位小數組成。波特率發生器使用這兩個值組成的數字來決定位周期。通過帶有小數波特率的除法器,在足夠高的系統時鐘速率下,UART 可以產生所有標準的波特率,而誤差很小。
數據收發
發送時,數據被寫入發送FIFO。如果UART 被使能,則會按照預先設置好的參數(波特率、數據位、停止位、校驗位等)開始發送數據,一直到發送FIFO 中沒有數據。一旦向發送FIFO 寫數據(如果FIFO 未空),UART 的忙標志位BUSY 就有效,并且在發送數據期間一直保持有效。
BUSY 位僅在發送FIFO 為空,且已從移位寄存器發送最后一個字符,包括停止位時才變無效。即 UART 不再使能,它也可以指示忙狀態。BUSY 位的相關庫函數是UARTBusy( )
在UART 接收器空閑時,如果數據輸入變成“低電平”,即接收到了起始位,則接收計數器開始運行,并且數據在Baud16 的第8 個周期被采樣。如果Rx 在Baud16 的第8 周期仍然為低電平,則起始位有效,否則會被認為是錯誤的起始位并將其忽略。
如果起始位有效,則根據數據字符被編程的長度,在 Baud16 的每第 16 個周期(即一個位周期之后)對連續的數據位進行采樣。如果奇偶校驗模式使能,則還會檢測奇偶校驗位。
最后,如果Rx 為高電平,則有效的停止位被確認,否則發生幀錯誤。當接收到一個完整的字符時,將數據存放在接收FIFO 中。
原文標題:UART工作原理
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
uart
+關注
關注
22文章
1269瀏覽量
103319
原文標題:UART工作原理
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論