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