FPGA實現(xiàn)UART和MCU一體化設(shè)計
2.1.1 UART模塊的設(shè)計與實現(xiàn)
UART串行數(shù)據(jù)格式如圖3所示,串行數(shù)據(jù)包括5~8位數(shù)據(jù)(可更改設(shè)置)、1位起始位、1~2位停止位、1位校驗位。該模塊主要由發(fā)送模塊和接收模塊兩部分構(gòu)成。在各自模塊中分別由接收緩沖器、接收控制電路、發(fā)送緩沖區(qū)、發(fā)送控制電路、數(shù)據(jù)總線緩沖器、讀寫控制電路組成,邏輯框圖如圖4所示。本文引用地址:http://butianyuan.cn/article/191268.htm
UART模塊的發(fā)送模塊和接收模塊公用復位信號、時鐘信號和并行數(shù)據(jù)線,并且有各自的輸入/輸出模塊和控制電路單元。
(1)發(fā)送模塊的設(shè)計。發(fā)送模塊將從微控制器MCU送來的8位并行數(shù)據(jù)轉(zhuǎn)換成圖3所示的數(shù)據(jù)幀格式的串行數(shù)據(jù)發(fā)送出去。該模塊分為3種工作模式:空閑模式、載入數(shù)據(jù)模式、移位模式輸出模式。當并行的8位數(shù)據(jù)從微控制器MCU通過數(shù)據(jù)線寫入發(fā)送FIFO(在以下2.1.2節(jié)實現(xiàn))中時,發(fā)送模塊自動將并行數(shù)據(jù)裝入鎖存器THR中,首先發(fā)送起始位0,然后根據(jù)LCR定義的數(shù)據(jù)格式將數(shù)據(jù)移位,并通過狀態(tài)機和節(jié)拍器實現(xiàn)完整的發(fā)送序列,并以相應的波特率從TX發(fā)送出去。發(fā)送模塊的狀態(tài)機FSM如圖5所示。
(2)接收模塊的設(shè)計。接收模塊接收串行輸入的數(shù)據(jù)(見圖3),然后將其轉(zhuǎn)換為并行數(shù)據(jù)送給微控制器MCU。與發(fā)送模塊相同,也分為3種工作模式:空閑模式,檢測起始位模式、移位輸入模式。首先接收模塊在接收時鐘的控制下,不斷地在RX端口檢測輸入數(shù)據(jù)的起始位,當檢測到起始位后,接收模塊由空閑模式轉(zhuǎn)變?yōu)橐莆惠斎肽J健4藭r通過RX端口進來的串行數(shù)據(jù)可能存在著些許抖動,因此需要添加消抖電路進行處理。消抖處理一般有兩種辦法,一種是在前端添加非門的R8觸發(fā)器來完成,一種是類似軟件的方式控制采集輸入端的數(shù)據(jù),并將前后采集的數(shù)據(jù)值進行比較,相同則保持,否則繼續(xù)采集比較,這里采用的是后者。當接收完數(shù)據(jù),更新接收緩沖區(qū)狀態(tài),以提供微控制器MCU查詢,方便讀取數(shù)據(jù)。接收模塊的狀態(tài)機FSME如圖6所示。
評論