基于雙CPU的切換及控制系統設計
單片微機具有小巧靈活、易擴展成為功能強大的控制系統。目前,一些監控終端以及許多獨立的控制系統(如:發電機的微機勵磁裝置)多以單片微機為核心構成。但由于諸如工作環境惡劣、電磁干擾等原因,即使使用按工業測控環境要求設計的單片微機也難以保證控制系統能長期可靠的運行,從而導致控制系統癱瘓。這樣,如何提高控制系統的可靠性,保證測控系統能正確穩定的運行就尤為重要。顯然,采用雙CPU冗余設計是非常有效的一種解決辦法。由于單片微機的功能強大,價格低廉,為設計雙機冗余系統提供了很好的條件。為此,我們設計了一種由兩片單片微機組成的雙機容錯系統,以比較簡單和與傳統的多CPU系統完全不同思路的設計方法實現了雙機的互為備用及相互切換。在該雙機冗余系統設計中,其關鍵問題是雙機系統的重構策略和雙機系統的仲裁邏輯切換。
1 傳統的多CPU系統設計方法
傳統的多CPU系統的常用設計方法有三種:
①利用雙口RAM實現CPU之間的通信。雙口RAM是一種高速的并行傳輸芯片,具有兩套I/O口和競爭裁決電路,可以同時聯接兩個CPU,這樣通過雙口RAM可以實現多CPU之間通信。
②利用共享內存的方法實現CPU之間的通信。這種方法與上一種方法類似,所不同的是,上一種方法是利用雙口RAM的競爭裁決電路實現對RAM的訪問,而這種方法是利用不同的時序實現內存共享的。
③利用總線方法實現CPU之間的通信。通過接口芯片或CPU本身具備的SPI、I2C以及SMBus等接口實現CPU之間的通信。
2 該雙CPU系統的結構和工作原理
該雙CPU控制系統與傳統的多CPU系統的設計方法完全不同,它由兩片Atmel公司生產的AT89C51 CPU構成,雙機互為備用,彼此獨立并行運行,硬邏輯切換。其雙CPU控制系統原理框圖如圖1所示。
這是一種非表決式的雙機冗余系統,一個CPU 作為另一CPU的熱備份,雙機在任務上同步運行。所有輸入信號通過輸入接口同時送給兩個CPU,但CPU 運算、處理后的輸出量受到仲裁切換電路的控制,只有主CPU允許讀寫外部數據存貯器及輸出至外部設備,當主CPU發生故障時,系統的自我檢測切換邏輯將發出信號,自動切斷其輸出通道,并通過CPU的工作指示系統報警。此時,系統或自動或人工切換到另一個備用的CPU,并同時打開其輸出通道,備用機變為主機運行狀態,控制系統這時降級為單機運行。人們可以將原主機拔離系統以便進行維修。從圖中可知,兩個CPU的地址、數據及控制總線都通過一組三態門(三態門 1、2)輸出與外部數據存貯器相接,兩個CPU的某些輸出控制I/O口都通過另一組三態門(三態門3、4)輸出與外部輸出控制設備相接,兩組三態門的控制端都同時受仲裁切換電路控制,而仲裁切換電路的兩路輸出互為反邏輯,即只有一路輸出能使所控制的對應三態門(如三態門1、3)正常輸出,另一路輸出使所控制的對應三態門(如三態門2、4)處于高阻狀態,從而不影響主CPU正常讀寫數據和向控制I/O口輸出數據。
圖1雙CPU控制系統原理框圖
表1 雙機仲裁切換邏輯真值表
|
3 雙機仲裁切換邏輯電路
在該雙CPU控制系統中,兩者互為熱備份,同時運行,一臺為主機,另一臺為備份機。在雙CPU都正常運行的情況下,系統默認CPU1為主機, CPU2為備份機。當主機出現故障時,要求系統能自動切換到備份機,使備份機提升成為主機,從而代替原主機從故障發生處連續運行并發出報警信號。同時要求能通過手動開關人為選定主機運行。設判別兩個CPU是否正常工作的信號分別為ST1、ST2,工作正常時它們的狀態為1,工作不正常時狀態為0。仲裁切換電路輸出為0的控制端控制工作正常的CPU的相應三態門組使能,仲裁切換電路輸出為1的控制端控制另一CPU的相應三態門組禁止輸出。自動或手動選擇主機的控制開關為S,當兩個CPU都工作正常時,可通過S開關自動選擇或指定主機(當S開關狀態為 1時為自動默認CPU1為主機,當S開關狀態為0時則強制CPU2為主機);當兩個CPU中任意一個工作不正常時,則此時與S開關的狀態無關,仲裁切換電路的輸出能確保只有與工作正常的CPU相連的三態門組的使能端為0,從而控制該正常CPU正常讀寫數據和輸出控制;當兩個CPU都不正常時,仲裁切換電路的兩個輸出都為1,兩個CPU都不能正常讀寫數據和輸出控制。這樣當兩個CPU中任何一個或全正常時就能保證只有一個CPU能正常讀寫數據和輸出控制,當兩個CPU都不正常時,則理所當然系統不能正常工作。按要求可得真值表如表1所示。
由真值表可得仲裁切換電路的兩路控制三態門的控制信號邏輯CTL1、CTL2分別為:
,
構成的仲裁切換電路如圖2所示。
4 CPU狀態監控電路
監控電路采用了具有電源監控電路和看門狗功能的微處理芯片MAX813L,該芯片它具有4個功能:
①看門狗計時器功能。當看門狗輸入信號在1.6s內無變化時,產生看門狗輸出;
②電壓監控功能。當掉電或電源監測電壓低于1.25V時,產生掉電輸出;
③電復位功能。當上電時自動產生脈寬200ms的復位信號;
④人工復位功能。當人工復位端輸入低電平時,產生復位信號輸出。
MAX813L采用DIP-8封裝,如圖3所示,引腳功能說明如下:
①MR:手工復位輸入端,可接人工復位按鈕,該端輸入低電平保持140ms以上,可產生復位(RST)信號;
②Vcc:+5v電源;
③GND:電源地;
④PFI:電源檢測輸入端;
⑤PFO:電源檢測輸出端,電源正常時,保持高電平;
⑥WDI:看門狗輸入端。俗稱“喂狗”信號,必須在1.6s內使該端輸入反向信號;
⑦RST:復位輸出端。高電平有效,可輸出200ms的正脈沖,當電源Vcc低于4.65v時,RST保持高電平;
⑧WDO:看門狗輸出端。正常工作時輸出高電平,當WDI信號在1.6s內不能及時送入并反向時,該端輸出低電平信號。
因AT89C51無看門狗功能,為了監測系統狀態,在本系統中主要利用的是MAX813L的看門狗計時器功能。其中看門狗輸入端WDI由CPU的P3.4提供,CPU在規定的時間內定時改變P3.4
的狀態,由看門狗輸出端WDO提供當前CPU的狀態信號至仲裁切換電路的STi(i =1或2)端,從而由仲裁切換電路自動或手動確定主機。圖4為用MAX813L為CPU1接的看門狗電路,當CPU1工作正常時能正常提供P3.4信號則WDO端ST1輸出高電平,D1亮D2滅;當CPU1工作不正常時不能正常提供P3.4信號則WDO端ST1輸出低電平,D2亮D1滅。
5 系統硬件電路
圖5為利用本文介紹的雙CPU的切換及控制系統組成的一種硬件電路。從圖中可知,系統每個CPU都可以通過RS232串行口與上位機通信,兩片 CPU彼此獨立運行,通過雙機仲裁切換邏輯電路共享外部16KB RAM和控制8路I/O口輸出。利用這種方法還可以通過增加三態門組成更大容量(最大64KB)的外部RAM和更多的輸出控制I/O口或擴展I/O口。
圖5 一種雙CPU的切換及控制系統的硬件電路
6 結束語
該雙CPU控制系統構思獨特,兩個CPU彼此獨立運行,但讀寫的都是同一塊外部RAM的數據,只是只有主CPU能實際讀寫數據,故不存在內存數據交換和共享問題,同時也只有主CPU能輸出控制外部設備,可廣泛應用于要求高可靠性控制的場合,作者將該項技術應用到自行研制的電腦樣板切割機上取得了較滿意的結果。
[參考文獻]
[1] 李耀民,鄔義杰.智能流量檢測系統高可靠性數據保護方法研究[J].機電工程,2002,19(5)
[2] 趙躍龍,王霜劍.51系列單片機雙CPU系統通信方法[J].單片機與嵌入式系統應用,2003,3
[3] 周建勇,何為民.多CPU單片機系統設計在社區安防系統中的應用[J].中國電子網
[4] 黃再銀,宗建華.閉路電視監控系統中解碼器的設計[J].中國有線電視,2002,8
[5] 何立民.單片機應用系統設計[M].北京:北京航空航天大學出版社. 1990.5
[6] 楊恢先,黃輝先等.單片機原理及應用[M].長沙:國防科技大學出版社. 2003.3
[7] 方曉,馬曉平. 基于雙CPU計算機的無人機回收系統冗余度設計[J].微計算機信息,2004,1,23-24
汽車防盜機相關文章:汽車防盜機原理
評論