MCS-51單片機(jī)與FPGA接口的邏輯設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
FPGA是一種新興的可編程邏輯器件,可以取代現(xiàn)有的全部微機(jī)接口芯片,實(shí)現(xiàn)微機(jī)系統(tǒng)中的存儲器、地址譯碼等多種功能,具有更高的密度、更快的工作速度和更大的編程靈活性,被廣泛應(yīng)用于各種電子類產(chǎn)品中。在功能上,單片機(jī)具有性價(jià)比高、功能靈活、易于人機(jī)對話、強(qiáng)大的數(shù)據(jù)處理能力等特點(diǎn);而FPGA則具有高速、高可靠性以及開發(fā)便捷、規(guī)范等特點(diǎn),因此兩類器件相結(jié)合的電路結(jié)構(gòu)將在許多高性能儀器儀表和電子產(chǎn)品中被廣泛應(yīng)用?;谶@種需求,本文設(shè)計(jì)了MCS-51單片機(jī)與FPGA的總線接口邏輯電路,實(shí)現(xiàn)了單片機(jī)與FPGA數(shù)據(jù)與控制信息的可靠通信,使FP—GA與單片機(jī)優(yōu)勢互補(bǔ),組成靈活的、軟硬件都可現(xiàn)場編程的控制系統(tǒng)。
1 單片機(jī)與FPGA的接口方式
單片機(jī)與FPGA的接口方式一般有兩種,即總線方式與獨(dú)立方式。MCS-51單片機(jī)具有很強(qiáng)的外部總線擴(kuò)展能力,利用片外三總線結(jié)構(gòu)很容易實(shí)現(xiàn)單片機(jī)與FPGA的總線接口,而且單片機(jī)以總線方式與FPGA進(jìn)行數(shù)據(jù)與控制信息通信也有許多優(yōu)點(diǎn):速度快;節(jié)省PLD芯片的I/O口線;相對于非總線方式,單片機(jī)編程簡捷,控制可靠;在FPGA中通過邏輯切換,單片機(jī)易于與SRAM或ROM接口。
單片機(jī)與FPGA以總線方式通信的邏輯設(shè)計(jì),重要的是要詳細(xì)了解單片機(jī)的總線讀寫時(shí)序,根據(jù)時(shí)序圖來設(shè)計(jì)邏輯結(jié)構(gòu),其通信的時(shí)序必須遵循單片機(jī)內(nèi)固定的總線方式讀/寫時(shí)序。FPGA的邏輯設(shè)計(jì)也相對比較復(fù)雜,在程序設(shè)計(jì)上必須與接口的單片機(jī)程序相結(jié)合,嚴(yán)格安排單片機(jī)能訪問的I/O空間。單片機(jī)以總線方式與FPGA進(jìn)行數(shù)據(jù)通信與控制時(shí),其通信工作時(shí)序是純硬件行為,速度要比前一種方式快得多,另外若在FPGA內(nèi)部設(shè)置足夠的譯碼輸出,單片機(jī)就可以僅通過19根I/O線在FPGA與單片機(jī)之間進(jìn)行通信和控制信息交換,這樣可以節(jié)省FPGA芯片的I/O線。其原理圖如圖1所示。
2 總線接口邏輯設(shè)計(jì)
2.1 接口設(shè)計(jì)思想
單片機(jī)與CPLD/FPC,A以總線方式通信的邏輯設(shè)計(jì),重要的是要詳細(xì)了解單片機(jī)的總線讀寫時(shí)序,根據(jù)時(shí)序圖來設(shè)計(jì)邏輯結(jié)構(gòu)。MCS-51系列單片機(jī)的時(shí)序圖如圖2所示。
ALE為地址鎖存使能信號,可利用其下降沿將低8位地址鎖存于FPGA中的地址鎖存器(LATCH_ADDRES)中;當(dāng)ALE將低8位地址通過P0鎖存的同時(shí),高8位地址已穩(wěn)定建立于P2口,單片機(jī)利用讀指令允許信號PSEN的低電平從外部ROM中將指令從P0口讀入,由時(shí)序圖可見,其指令讀入的時(shí)機(jī)是在PSEN的上升沿之前。接下來,由P2口和P0口分別輸出高8位和低8位數(shù)據(jù)地址,并由ALE的下降沿將P0口的低8位地址鎖存于地址鎖存器。若需從FPGA中讀出數(shù)據(jù),單片機(jī)則通過指令“MOVXA,@DPTR”使RD信號為低電平,由P0口將鎖存器中的數(shù)據(jù)讀入累加器A;但若欲將累加器A的數(shù)據(jù)寫進(jìn)FPGA,則需通過指令“MOVx DPTR,A”和寫允許信號WR。這時(shí),DPTR中的高8位和低8位數(shù)據(jù)作為高、低8位地址分別向P2和P0口輸出,然后由WR的低電平并結(jié)合譯碼,將累加器A的數(shù)據(jù)寫入圖中相關(guān)的鎖存器。
通過對MCS-51單片機(jī)總線讀/寫時(shí)序的分析,設(shè)計(jì)了圖3所示的接口電路。在FPGA中,設(shè)計(jì)了兩個(gè)模塊:一個(gè)是總線接口模塊,負(fù)責(zé)單片機(jī)與FPGA的總線接口邏輯;另一個(gè)是寄存器單元及外部接口模塊,運(yùn)用總線接口模塊來操作此模塊。
在總線應(yīng)用時(shí),MCS-51單片機(jī)的P0口是作為地址/數(shù)據(jù)總線分時(shí)復(fù)用的,因此應(yīng)在總線接口模塊中設(shè)計(jì)一個(gè)三態(tài)緩沖器,實(shí)現(xiàn)P0口的三態(tài)接口;又因MCS-51單片機(jī)在訪問外部空間時(shí),它的地址為16位,因此借助地址鎖存使能信號ALE在FPGA中實(shí)現(xiàn)高8位與低8位地址的編碼,組合成16位地址,然后再根據(jù)MCS-51單片機(jī)的讀/寫信號,實(shí)現(xiàn)對FPGA的讀寫操作。
在接口設(shè)計(jì)中,采用了VHDL語言實(shí)現(xiàn)其接口邏輯。用VHDL語言編寫,往往比較方便和嚴(yán)謹(jǐn),注意整個(gè)過程的邏輯思路,并且盡量避免語言的冗余,造成比較長的延時(shí)。-MCS-51單片機(jī)與FPGA的通信讀寫電路的部分程序