FPGA單片機帶你領略如何實現(xiàn)多機串行通信網(wǎng)絡
圖3 FPGA內(nèi)部功能模塊示意圖
FPGA內(nèi)部共有16對讀/寫和數(shù)據(jù)總線,分別連接UART和相應的發(fā)送緩沖區(qū)RAM及接收緩沖區(qū)RAM。
FPGA內(nèi)部模塊采用自頂向下的設計方法,將復雜系統(tǒng)劃分為簡單系統(tǒng),然后通過邏輯和接口設計實現(xiàn)各個模塊功能。SRAM控制器用于FPGA和C8051F020的接口,負責內(nèi)部RAM的讀寫控制。UART負責接收從單片機上傳的串行信號,將其并行化后存入接收數(shù)據(jù)緩沖RAM;另外也負責將發(fā)送緩沖RAM中的數(shù)據(jù)轉(zhuǎn)換成符合RS232協(xié)議規(guī)范的串行信號發(fā)送給從單片機。SRAM控制器和UART模塊同樣采用自頂向下的方式實現(xiàn),關于SRAM控制器及UART的FPGA實現(xiàn)方案在參考文獻中有詳細的論述[56],本文不再介紹。
FPGA內(nèi)部系統(tǒng)采用同步有限狀態(tài)機(FSM)的設計方法實現(xiàn),F(xiàn)SM負責調(diào)配各功能模塊之間的協(xié)作。狀態(tài)機采用獨熱(onehot)編碼,使電路的可靠性和速度有顯著的提高。系統(tǒng)狀態(tài)轉(zhuǎn)移圖如圖4所示。
圖4 有限狀態(tài)機狀態(tài)轉(zhuǎn)移圖
2.3 通信協(xié)議設計
主單片機和上位機的通信速率及FPGA和從單片機的通信速率均設置為38.4 Kbps,可以更精確的控制主單片機與各個從單片機之間的通信時間。通信指令由報頭、設備類型、設備號、命令號、命令數(shù)據(jù)、校驗等字段組成。報頭用于通知單片機開始串行通信,設備類型和設備號用于將指令正確傳達到相應的設備,命令號用于通知單片機指令,命令數(shù)據(jù)用于通知單片機具體的功能,校驗則采用CRC校驗以保證通信的準確性。寫入控制命令號為00H,讀取命令號為01H,讀取指令命令數(shù)據(jù)為0字節(jié)。通信指令的幀格式如下:
單片機接收到控制命令后,如果接收正確,返回00H,若錯誤則返回01H。返回幀格式為:
讀取指令沒有命令數(shù)據(jù),幀格式為:
接收后單片機返回幀格式為:
結語
本文介紹了在FPGA上集成多個UART的方法,并以此為基礎搭建了一個多單片機通信網(wǎng)絡。設計中采用FPGA作為串行接口擴展器件與傳統(tǒng)器件相比具有功能靈活、擴展性好的特點。通過實驗證明,該通信網(wǎng)絡相對于傳統(tǒng)的總線拓撲網(wǎng)絡具有速度快、實時性好的特點,同時該網(wǎng)絡可以根據(jù)外設需要隨意擴展,非常適合應用于監(jiān)督計算機控制系統(tǒng)和集散控制網(wǎng)絡。
fpga相關文章:fpga是什么
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
通信相關文章:通信原理
評論