摘 要:針對單片機(jī)自帶串口數(shù)量往往不能滿足實際應(yīng)用的需求,以及采用傳統(tǒng)串口擴(kuò)展方法帶來的增加處理器時間占用或增加外圍電路復(fù)雜度等不足,本文在IP Core oc8051的基礎(chǔ)上,采用HDL設(shè)計一個串口數(shù)可定制的51單片機(jī),通過ModelSim仿真,并在Altera FPGA芯片中實現(xiàn),最后驗證了設(shè)計的正確性。
關(guān)鍵詞:51單片機(jī);串口;擴(kuò)展;FPGA
中圖分類號:TM935.1
隨著各類數(shù)字化、智能化傳感器的普及和應(yīng)用,僅有一個串口的微控制器(例如51系列單片機(jī))已很難滿足實際需求[1]。擴(kuò)展多串口的需求雖然可以通過采用分時復(fù)用、軟件編程模擬和使用專用芯片(如8250、8251、16C554等)這三種方法進(jìn)行解決,但都不可避免帶來了諸如增加處理器時間占用或增加外圍電路復(fù)雜度等不足,也不利于硬件系統(tǒng)的升級[2]。針對上述問題,本文擬采用FPGA來設(shè)計并實現(xiàn)一個串口數(shù)可定制的51單片機(jī),并以擴(kuò)展4個串行接口為例驗證其可行性。
1 多串口單片機(jī)的系統(tǒng)結(jié)構(gòu)
系統(tǒng)由51單片機(jī)IP核oc8051和串口擴(kuò)展模塊構(gòu)成,如圖1所示。其中互聯(lián)邏輯模塊和串口模塊構(gòu)成串口擴(kuò)展模塊,前者用于擴(kuò)展串口模塊與oc8051的邏輯連接,后者為4路串行通道的集合。
圖1 系統(tǒng)結(jié)構(gòu)框圖
2 多串口擴(kuò)展模塊設(shè)計
2.1 串口模塊設(shè)計
(1)串行通道結(jié)構(gòu)
圖1中串口模塊封裝了4路串行通道,每個串行通道由發(fā)送單元、接收單元和輔助功能寄存器構(gòu)成,如圖2所示。
圖2 串行通道結(jié)構(gòu)
(2)串行通道工作流程
發(fā)送:①oc8051向發(fā)送數(shù)據(jù)寄存器寫入不超過16個字節(jié)的數(shù)據(jù)。②寫中斷使能寄存器,將發(fā)送使能位置1。③發(fā)送單元檢測到發(fā)送使能位置1,同時發(fā)送數(shù)據(jù)寄存器非空即向發(fā)送數(shù)據(jù)寄存器請求讀取數(shù)據(jù)。④發(fā)送數(shù)據(jù)寄存器和發(fā)送單元握手完成數(shù)據(jù)讀取過程,更新內(nèi)部FIFO的讀取指針。⑤發(fā)送單元開始發(fā)送數(shù)據(jù)。⑥發(fā)送完成發(fā)送數(shù)據(jù)寄存器中的數(shù)據(jù)之后發(fā)送單元發(fā)出中斷請求。
接收:①oc8051寫中斷使能寄存器,將接收使能位置1。②接收單元接收到一個字節(jié)的數(shù)據(jù)之后將移位寄存器中接收的一個字節(jié)數(shù)據(jù)寫入暫存寄存器中,講求向接收數(shù)據(jù)寄存器中寫入數(shù)據(jù)。③接收數(shù)據(jù)寄存器和接收單元握手并完成數(shù)據(jù)寫入過程。④接收到8字節(jié)數(shù)據(jù)或者定時時間到達(dá),接收數(shù)據(jù)寄存器發(fā)出中斷請求。
2.2 互聯(lián)邏輯模塊設(shè)計
圖3 互聯(lián)邏輯模塊
互聯(lián)邏輯模塊的結(jié)構(gòu)如圖3所示。其中分頻器的作用是產(chǎn)生波特率時鐘,提供給各個串行通道。地址譯碼器產(chǎn)生寄存器選擇信號。中斷狀態(tài)寄存器保存各串行通道中斷請求狀態(tài),并產(chǎn)生總的中斷請求信號int給oc8051。只要中斷狀態(tài)寄存器中還有未被處理的中斷請求,still_has_int引腳就保持高電平。
3 多串口擴(kuò)展模塊測試
測試的硬件系統(tǒng)連接如圖4所示:
圖4 測試系統(tǒng)的連接示意圖
oc8051x從臺式機(jī)接收數(shù)據(jù)發(fā)送給三個單片機(jī),并回顯接收到的數(shù)據(jù),單片機(jī)用led顯示接收到的結(jié)果。測試不同的波特率,在波特率為115200,57600,56000,38400,19200,14400,9600等值時均可以正確完成數(shù)據(jù)的發(fā)送和接收。
4 結(jié)束語
本次設(shè)計的突出優(yōu)點在于可以定制串行通道的數(shù)量,與16C554等專用芯片相比,對中斷狀態(tài)更加容易,中斷處理過程更加確定和高效。單片機(jī)時鐘頻率高達(dá)50Mhz相比于傳統(tǒng)8051速度更快,整個系統(tǒng)封裝在一個芯片內(nèi)部提高了系統(tǒng)的穩(wěn)定性和抗干擾的能力。
參考文獻(xiàn):
[1]胡勇,丁萬山.多串口擴(kuò)展解決方案[J].計算機(jī)應(yīng)用,2005.
[2]He Chunzhi, Xia Yinshui, Wang Lunyao.Design and FPGA implementation of a UART IP core[J].Journal of ZhejiangUniversity(Science Edition),2012,39(05):535-541.
作者簡介:魏緒文(1987.04-),男,河南固始人,碩士研究生,計算機(jī)應(yīng)用技術(shù)專業(yè),研究方向:嵌入式軟件與系統(tǒng)。
作者單位:福建師范大學(xué)軟件學(xué)院,福州 350108