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