基于FPGA的8051微控制器接口實(shí)現
工廠(chǎng)自動(dòng)化高度實(shí)現的今天,單片機8051的廣泛運用使其需要與各種各樣的外圍設備相連接,而這些外圍設備各不相同,特別是它們的接口多種多樣。因而在運用8051的時(shí)候,不得不考慮它與外圍設備的接口問(wèn)題,而市售的接口電路大多只供某種特定的外圍設備使用,因此,在一些特殊的運用場(chǎng)合下,用戶(hù)不得不自行設計它們之間的接口?,F代可編程器件(如FPGA-Field Programmable Gate Array可編程門(mén)陣列)的快速發(fā)展,使得自己開(kāi)發(fā)專(zhuān)用的接口變得非常簡(jiǎn)單,同時(shí)自主知識產(chǎn)權IP(Intellectual Property)受到越來(lái)越多的關(guān)注,它們被廣泛運用在片上系統SoC(System on a single Chip)的設計中,8051IP核就是其中的一種。本文就是采用Xilinx公司的FPGA芯片來(lái)實(shí)現外圍器件與8051微控制器的接口,它可以和8051IP核一起集成在同一塊FPGA芯片上,從而使接口部分和用戶(hù)邏輯更緊密地結合。
2 接口功能
這里所說(shuō)的接口功能主要是指微控制器和外圍設備之間的通信功能。該接口的設計采用硬件描述語(yǔ)言VHDL進(jìn)行描述,而且源代碼運用了大量的常量定義,用戶(hù)可以根據需要來(lái)更改這些常量的默認值,直到用戶(hù)自己滿(mǎn)意為止,從而達到不同的需求。這種改變就相當于在運用軟件里更 改設置參數一樣簡(jiǎn)單,而且FPGA具有重配置功能,這從而達到不同的需求。這種改變就相當于在運用軟件里更
改設置參數一樣簡(jiǎn)單,而且FPGA具有重配置功能,使得硬件的升級或者系統方案的變更變得非常簡(jiǎn)單。接口的整體框圖如圖1所示。
3 接口設計
8051微控制器接口芯片主要由以下模塊組成:地址解碼邏輯、總線(xiàn)接口狀態(tài)機、中斷邏輯、用戶(hù)可定義寄存器組、數據輸出多路選擇器。其內部結構框圖如圖2所示。
*ADDR[15:8],輸入,微控制器地址總線(xiàn)的高8位;
*ADDR_DATA[7:0],雙向,微控制器地址/數據復用總線(xiàn);
*ALE_N,輸入,地址鎖存允許,微控制器控制信號,該信號有效表明目前在地址/數據復用總線(xiàn)上的數據是有效數據;
*PSEN_N,輸入,程序存儲允許,微控制器控制信號,該信號有效表明目前的總線(xiàn)周期可以訪(fǎng)問(wèn)外部程序存儲器;
*RD_N,輸入,微控制器進(jìn)行讀操作的閘門(mén)信號;
*WR_N,輸入,微控制器進(jìn)行寫(xiě)操作的閘門(mén)信號;
*INT_N,輸出,中斷請求,運用邏輯產(chǎn)生的中斷請求通過(guò)它向微控制器發(fā)送請求;
*CLK,輸入,同步時(shí)鐘信號,由系統提供,在內部結構框圖中未標出;
*RESET,輸入,同步復位信號,有效時(shí)系統復位,在內部結構框圖中未標出;
3.2 地址解碼邏輯模塊
8051微控制器接口芯片的解碼邏輯將當前ADDR總線(xiàn)上的高位字節解碼作為器件地址,用它來(lái)和VHDL代碼里的BASE_ADDR常量進(jìn)行比較,如果相等,則表明BASE_ADDR指明的器件被選中,同時(shí)也包含由ALE_N提供時(shí)鐘的寄存器,用以從ADDR_DATA總線(xiàn)獲取地址低位字節,這個(gè)地址低位字節指明了在用戶(hù)可定義寄存器組里的寄存器地址。也就是說(shuō)地址高位字節用來(lái)選擇從設備(這里將8051作為主設備),而地址低位字節則用來(lái)選擇寄存器。
3.3 總線(xiàn)接口狀態(tài)機
該狀態(tài)機的設計是本接口設計的關(guān)鍵,也是能否完成接口功能的主要控制模塊,只有功能完整、狀態(tài)協(xié)調的狀態(tài)機才能協(xié)調整個(gè)系統有條不紊地工作。本狀態(tài)機的設計實(shí)際上就是將8051總線(xiàn)協(xié)議的文字描述轉換為有限狀態(tài)機來(lái)描述。本文所描述的8051執行同步的總線(xiàn)周期,因此在外部設備和微控制器之間沒(méi)有設置握手信號,通過(guò)狀態(tài)機的有效控制來(lái)完成它們之間的通信。8051微控制器總線(xiàn)協(xié)議在狀態(tài)機理的實(shí)現如圖3所示。在第一個(gè)周期里,微控制器將地址置于地址總線(xiàn)并激活ALE_N信號,它的有效表明地址/數據復用總線(xiàn)和ADDR[15:8]上的地址是有效地址。激活ALE_N后,狀態(tài)機轉移到地址解碼狀態(tài)(ADDR_DECODE)等待地址解碼邏輯模塊解碼地址并且判斷是否有器件被選通。若有器件被選中:如果這是寫(xiě)周期,微控制器從地址/數據復用總線(xiàn)撤銷(xiāo)地址并放置所需要寫(xiě)的數據到總線(xiàn)上,然后激活WR_N信號;如果這是讀周期,微控制器使地址/數據復用總線(xiàn)呈三態(tài),并激活RD_N以告訴用戶(hù)邏輯可以將指定寄存器里的數據置于總線(xiàn)上。否則回到閑置狀態(tài)(IDLE)。對于選通的從設備,如果RD_N或WR_N有效,狀態(tài)機將轉移到數據傳輸狀態(tài)(DATA_TRS)。如果這是寫(xiě)周期,從數據總線(xiàn)來(lái)的數據被鎖存于指定的寄存器中并使WR_N無(wú)效。若是讀周期,微控制器鎖存總線(xiàn)上的數據并使RD_N無(wú)效。若WR_N或RD_N始終有效,表明數據還沒(méi)有寫(xiě)完或讀完,則停留在DATA_TRS狀態(tài),直到數據寫(xiě)完或讀完為止。無(wú)論RD_N的無(wú)效還是WR_N的無(wú)效都將使狀態(tài)機向結束周期狀態(tài)(END_CYCLE)改變。在此狀態(tài)下,地址/數據復用總線(xiàn)呈三態(tài),微處理器使ALE_N無(wú)效來(lái)結束循環(huán),從而回到閑置狀態(tài)IDLE,等待下一周期的到來(lái)。
該部分主要是提供給用戶(hù)自定義的寄存器組,可以根據需要進(jìn)行定義,主要用來(lái)為微控制器和運用邏輯之間的通信提供寄存服務(wù)。同時(shí)它可以被定義為不同作用的寄存器,微控制器通過(guò)讀或者寫(xiě)這些專(zhuān)用的寄存器來(lái)決定應用的進(jìn)程和當前狀態(tài),而運用邏輯通過(guò)它向微控制器發(fā)送服務(wù)請求。它的存在為該接口的通用性打下了基礎。
3.5 數據輸出多路選擇器和中斷邏輯模塊
數據輸出多路選擇器主要用來(lái)在整個(gè)讀周期里為地址/數據復用總線(xiàn)提供所需的數據。中斷邏輯模塊是可以選擇的,它的定義主要是看微控制器是否允許用戶(hù)邏輯的中斷操作,這取決于用戶(hù)系統,可以根據需要設置中斷的個(gè)數和中斷的優(yōu)先權。
4 仿真分析和FPGA實(shí)現
為了驗證該設計功能的正確性,從設計系統規范到最后的布局布線(xiàn)的整個(gè)過(guò)程中,都需要進(jìn)行階段性的仿真和驗證。鑒于該系統的復雜性,采用層次化的設計和驗證仿真。將系統劃分為不同的功能模塊(如上所述),分別對其進(jìn)行RTL(寄存器傳輸級)級描述,并仿真驗證。最后再進(jìn)行系統的綜合實(shí)現,即功能模塊的組裝。整個(gè)設計采用了自頂向下的設計方法,而仿真驗證則是自底向上的方法。限于篇幅,就不再單一的介紹每個(gè)模塊的VHDL設計方法和仿真驗證結果。下面僅給出用Active HDL對系統進(jìn)行仿真驗證的結果,如圖4所示。仿真結果表明,該狀態(tài)機的設計滿(mǎn)足預期的功能,即能滿(mǎn)足8051微控制器總線(xiàn)協(xié)議的要求,因而能很好地和8051進(jìn)行通信,各項指標均達到了設計要求。
5 結束語(yǔ)
本設計充分利用了Vertex器件的LUTs(Look-Up Tables)替代觸發(fā)器和基本門(mén)電路搭建乘法器和加法器這兩個(gè)顯著(zhù)的結構特點(diǎn),節省了大量的觸發(fā)器資源,增加了器件利用率、布通率,DLL的運用降低了布線(xiàn)延遲,實(shí)現了通信的完全同步。筆者采用Xilinx公司的FPGA芯片自行設計了8051IP核與外圍設備的接口,完成了8051與外圍設備之間的通信功能,并且源代碼中的參數可調,可作為IP軟核提供給8051開(kāi)發(fā)用戶(hù),使得用戶(hù)從多變的外圍接口實(shí)現中解脫出來(lái),讓用戶(hù)致力于具體的運用設計,以縮短開(kāi)發(fā)周期。這種實(shí)現接口通信的方法適用范圍廣、成本低廉、體積小、可靠性高,具有很高的工程實(shí)用價(jià)值。
評論