利用ispLSI實(shí)現單片機與計算機間的通信
單片機結構簡(jiǎn)單、開(kāi)發(fā)方便,能夠滿(mǎn)足各種應用領(lǐng)域的需求,在工業(yè)控制及自動(dòng)化裝置中得到了廣泛的應用。它既可以單獨使用,也可以多片協(xié)同工作或作為計算機的信號預處理器,在這種情況下,通信問(wèn)題就成了限制系統性能的瓶頸。通常使用的通信方式有串行和并行兩種,串行方式硬件結構簡(jiǎn)單但數據傳輸速率低,不適合大批量數據的傳送;并行方式下使用最多的中斷方式,以期提高CPU效率。但中斷方式也存在不少問(wèn)題,除了具體的中斷服務(wù)外,保護、恢復斷點(diǎn)和寄存器的內容、查取中斷向量等也占用不少CPU時(shí)間,如果數據較長(cháng),傳送一組數據CPU會(huì )被多次中斷,大量的斷點(diǎn)和寄存器的保護、恢復等工作特別影響CPU 效率。為了解決這一問(wèn)題,本文提出了一種新的通信方式,稱(chēng)之為中斷查詢(xún)方式,并利用在系統可編程邏輯器件 ispLIS1016實(shí)現了通信接口。
本文引用地址:http://dyxdggzs.com/article/172175.htm1 通信原理
中斷查詢(xún)方式的實(shí)質(zhì)是中斷方式和查詢(xún)方式的結合:通信雙方由中斷方式進(jìn)入數據傳送狀態(tài),之后雙方在中斷內利用查詢(xún)方式完成數據傳送,直至一組數據傳送完畢,各自退出中斷服務(wù)。
基于這種方式,通信接口應具有數據鎖存、狀態(tài)控制和中斷產(chǎn)生等功能。如圖1—1所示為接口框圖,數據鎖存由鎖存器m和鎖存器s完成,分別鎖存送往主計算機和單片機的數據;中斷和狀態(tài)信號由狀態(tài)控制器形成,包括中斷信號(INTm和INTs),數據鎖存器m滿(mǎn)(FULLm)、鎖存器s滿(mǎn)(FULLs),以及數據傳送完畢(ENDm和ENDs)等狀態(tài),供通信雙方查詢(xún);通信數據和各狀態(tài)信號均通過(guò)數據總線(xiàn)傳送,通信雙方讀數據還是讀狀態(tài)由各自的地址譯碼器控制,通過(guò)數據選擇器選擇;數據的三態(tài)輸出由數據緩沖器實(shí)現。我們以計算機向單片機發(fā)送數據為例說(shuō)明數據傳送過(guò)程:當計算機將數據寫(xiě)入鎖存器s時(shí),狀態(tài)控制器產(chǎn)生一中斷請求信號INTs,并置狀態(tài)FULLs=1、ENDs=0;單片機響應中斷后便利用查詢(xún)方式接收數據,查詢(xún)狀態(tài)信息FULLs和ENDs,每次FULLs=1時(shí)讀取一個(gè)數據,同時(shí)該讀信號通過(guò)狀態(tài)控制器使FULLs清0,并產(chǎn)生中斷信號INTm;由于處于發(fā)送狀態(tài),計算機進(jìn)入中斷后,先檢查 FULLs,等待FULLs=0后向數據鎖存器s寫(xiě)數據(僅為利用該寫(xiě)信號)將ENDs置位并退出中斷,單片機查到FULLs=0但ENDs=1后停止接收數據也退出中斷,一次通信完成。
可見(jiàn),利用這種方式進(jìn)行數據傳送,無(wú)論數據量多大,每次數據傳送過(guò)程中CPU只響應一次中斷,與單一的中斷方式比較,節約了CPU的中斷響應時(shí)間,對于大批量數據的傳送,不僅效率高,而且數據量可任意改變,使用非常靈活。
2 接口功能的實(shí)現
由圖1—1所示的框圖可以看出,上述中斷查詢(xún)接口不僅需要具有鎖存器和緩沖器的數據通道,還要有中斷、狀態(tài)控制及地址譯碼和數據選擇邏輯,電路是比較復雜的。但是,可編程邏輯器件和電子設計自動(dòng)化工具的出現,使得復雜電路可在單片可編程邏輯器件上實(shí)現,不僅使設計簡(jiǎn)化,而且使硬件設計象軟件一樣易于修改。針對前述中斷查詢(xún)接口,我們采用LATTICE的在系統可編程邏輯器件is-pLSI1016實(shí)現其功能。這樣,該接口的設計就轉化為對其電路描述文件的設計,可以采用原理圖或 HDL硬件描述語(yǔ)言。與原理圖比較,硬件描述語(yǔ)言不僅設計、閱讀和保存方便,而且易于仿真和進(jìn)行邏輯綜合,更適合對復雜電路的描述。因此我們采用 ABEL-HDL硬件描述語(yǔ)言進(jìn)行設計。
在Synario環(huán)境中,對選定的器件加入ABEL-HDL資源文件,輸入相應的模塊名和文件名后,便可打開(kāi)ABEL-HDL語(yǔ)言編輯窗口[2]。
利用ABEL語(yǔ)言進(jìn)行電路設計的關(guān)鍵在于各信號的定義和相應的邏輯描述。就前述接口而言,地址總線(xiàn)、數據總線(xiàn)、讀、寫(xiě)及中斷信號均直接與通信雙方的 CPU相連,顯然應定義為引腳(pin);而數據鎖存器及各狀態(tài)信號通過(guò)數據選擇器與數據總線(xiàn)相聯(lián),故為節點(diǎn)(node),如表2—1所示。其中,A、 D、RD、WR、Q分別表示地址線(xiàn)、數據線(xiàn)、讀、寫(xiě)及數據鎖存器輸出信號,下標m和s分別表示主計算機和單片機;表中將數據輸出定義為緩沖器(buffer)是為了直接利用ispLSI1016各I/O腳的三態(tài)輸出功能,以省去圖1—1中的數據緩沖器。另外,狀態(tài)信號FULL和END應為具有異步清零和置位功能的寄存器,以存貯數據交換過(guò)程中相應的狀態(tài)信息,但是在可編程邏輯器件中設計異步控制是復雜和浪費資源的,本文將它們設計為基本的RS 觸發(fā)器,故定義了相應的反向輸出節點(diǎn)FUL1和EN1。
ABEL語(yǔ)言設計文件中各信號的邏輯關(guān)系可以多種方式給出,本設計主要采用寄存器和RS觸發(fā)器等,故以采用邏輯方程為宜。由前述接口原理可以看出,該接口的通信雙方均需3個(gè)端口:數據輸入/輸出口、狀態(tài)口及END信號置位口。設主計算機對應的口地址為300H、308H和310H,單片機的3個(gè)口地址分別為8000H、8010H和8020H,對照圖1—1所示的框圖和接口的工作原理,電路的ABEL語(yǔ)言方程可以按功能塊給出。
數據鎖存器是數據可靠傳送的基礎,對主計算機而言,向300H單元寫(xiě)入數據就是將數據寫(xiě)入鎖存器s中,也就是說(shuō)鎖存器s的輸入信號為主計算機的數據總線(xiàn),時(shí)鐘為主計算機對300H單元的寫(xiě)信號,對應的ABEL語(yǔ)言方程可表示為:
線(xiàn)和數據線(xiàn)的集合。為減少系統的片外接線(xiàn),式(2—1)將鎖存器Qs的輸入定義為三態(tài)數據輸出的引腳(.pin),在保證接口功能的前提下,實(shí)現了在is-pLSI1016片內Qs輸入端與數據總線(xiàn)的連接。
數據選擇器根據通信雙方對不同地址的讀取選擇不同信號,其ABEL語(yǔ)言方程為:
Ds.oe=!RDs&((ADRs==^h8000)#(ADRs==^h8010));(2—3)
when(ADRs==^h8000)then Ds=Qs;else when(ADRs==^h8010)then Ds=STs; (2—4)
式中,STs=[FULLs,FULLm,ENDs,ENDm,x,x,x,x,x,x,x,x,x,x,x,x],12個(gè)任意值x的引入是為了使STs與數據總線(xiàn)寬度匹配。由于省去了圖1—1的數據緩沖器,數據選擇器的輸出即為數據總線(xiàn),故其三態(tài)控制端為單片機讀數據(8000H)和讀狀態(tài)(8010H)信號的“或”信號。
狀態(tài)信號是數據正確傳送的保證,也是通信雙方讀寫(xiě)數據的依據。從時(shí)序上講,FULLs的置位和清零由Qs的寫(xiě)信號和讀信號觸發(fā),即FULLs由方程(2—5)和(2—6)確定:
!FULLs=(?。ˋDRm==^h300)#WRm)& FUL1s;(2—5)
!FUL1s=(?。ˋDRs==^h8000)#RDs)& FULLs;(2—6)
其中FUL1s為FULLs的反相輸出端。ENDs的清零與FULLs的置位同時(shí)產(chǎn)生,但其置位必須由主計算機寫(xiě)310H單元觸發(fā),故ENDs的ABEL語(yǔ)言方程為:
!ENDs=(?。ˋDRm==^h310)#WRm)&EN1s;
(2—7)
!EN1s=(?。ˋDRm==^h300)#WRm)&ENDs;
顯然,無(wú)論是主計算機將數據寫(xiě)入Qs,還是主計算機將數據從Qm中讀走,INTs都應置位,因此INTs=FULLs+FULLm,但這樣若FULLm為零則INTs將始終為1,無(wú)法產(chǎn)生中斷。為解決這一問(wèn)題,我們將INTs的方程寫(xiě)為:
INTs=FULLs#?。‵ULLm#ENDm);(2—9)
使其在ENDm為零時(shí)按INTs=FULLs+FULLm運算,只要由軟件上控制,保證每次通信前雙方的狀態(tài)為:ENDs=ENDm=1,FULLs=FULLm=0,即可實(shí)現正確的中斷和通信。顯然,利用同樣的方法不難寫(xiě)出主計算機一方各信號的邏輯關(guān)系,本文不再累述。
通過(guò)以上設計,我們實(shí)現了主計算機與多個(gè)80C196單片機系統之間的數據通信,將各80C196系統置于主計算機的總線(xiàn)擴展槽中,使整個(gè)系統不僅通信速度快,而且性能穩定可靠,效果良好。
[參考文獻]
[1] 劉樂(lè )善等.微型計算機接口技術(shù)原理及使用.華中理工大學(xué)出版社,1996.3
[2] 黃正瑾.在系統編程技術(shù)及其應用[M].東南大學(xué)出版社,1997.8
評論