基于CPLD的系統(tǒng)硬件看門狗設(shè)計
引言
本文引用地址:http://m.butianyuan.cn/article/272797.htm在以單片機、DSP等處理器為核心的數(shù)字系統(tǒng)中,看門狗是不可缺少的一部分,特別是在對可靠性要求極高的系統(tǒng)中,如箭上伺服控制器,由于箭體內(nèi)強弱電交叉使用,或者地面測試環(huán)境復(fù)雜多變,會產(chǎn)生諸多干擾和輻射。它們的沖擊會使CPU在執(zhí)行指令時的地址碼或操作碼發(fā)生變化,甚至將操作數(shù)作為操作碼執(zhí)行,導(dǎo)致程序跑飛。為使系統(tǒng)在規(guī)定時間內(nèi)重新正常工作,一種有效的措施是采用硬件看門狗技術(shù)。
本設(shè)計的最初思路來源:實現(xiàn)高可靠性數(shù)字伺服控制器軟、硬件看門狗的雙冗余設(shè)計要求,目前缺少軍品級國產(chǎn)化硬件看門狗器件,在滿足系統(tǒng)要求的情況下減少元器件的種類。
1 看門狗技術(shù)的實現(xiàn)方式
看門狗實現(xiàn)方式可分為以下兩種:
硬件看門狗——采用一個獨立于CPU的定時器電路或芯片,如MAX706或TPS3823等,周期性地產(chǎn)生復(fù)位脈沖,而CPU必須及時“喂狗”(在復(fù)位脈沖發(fā)出前對此定時器進行清零處理),否則看門狗發(fā)揮作用,復(fù)位脈沖會使CPU重啟。
軟件看門狗——利用CPU內(nèi)部的定時器中斷替代看門狗定時器電路,在中斷程序中復(fù)位CPU,這同樣發(fā)揮了看門狗的作用。但由于CPU中斷存在優(yōu)先級、屏蔽以及中斷自身故障等原因,都可能導(dǎo)致軟件看門狗工作異常。軟件看門狗往往采用一些其他軟件設(shè)計措施提高其可靠性。
2 基于CPLD的硬件看門狗設(shè)計
2.1 硬件平臺
此設(shè)計基于箭上數(shù)字伺服控制器,以TI公司的TMS320F2812(下面簡稱為DSP)為控制核心,SM1032則用來實現(xiàn)對A/D、D/A和1553B總線的片選信號和邏輯控制信號譯碼,并在此基礎(chǔ)上增加了硬件看門狗功能。與其相關(guān)的電路連接如圖1所示,其中看門狗使能信號EN與DSP_JTAG電路相連,在DSP下載程序或在線仿真時可通過專用的JTAG工裝電纜禁止看門狗功能,防止看門狗的誤操作。
圖1 TMS3320F2812電路連接圖
本設(shè)計適用于以微控制器與FPGA或CPLD聯(lián)合使用的數(shù)字控制系統(tǒng)中。利用FPGA或CPLD的剩余資源設(shè)計看門狗模塊,相當于硬件看門狗的一種,其基本功能和特點有:當軟件跑飛且主控芯片內(nèi)部看門狗工作異常時,可為系統(tǒng)進行復(fù)位操作;可關(guān)閉主控芯片內(nèi)部的軟件看門狗,優(yōu)化軟件代碼;可節(jié)省專用的看門狗芯片,且在不同時序要求上靈活修改;可根據(jù)系統(tǒng)要求增加與主控芯片的握手信號。
2.2DSP上電過程及復(fù)位時序分析
DSP上電初始化時序如圖2所示。WDT是喂狗信號輸出,在定時器中斷或主循環(huán)中使其電平周期性取反;RST是上電復(fù)位信號。Trst是上電復(fù)位信號的脈寬,約為100 ms;Twork是從上電時到首次進入定時器中斷程序的時間,約為130 ms。在主程序中首先使WDT輸出低電平,則從上電復(fù)位完成到WDT變?yōu)榈碗娖降臅r間A為DSP復(fù)位后自身的各項配置所占用的時間。在定時器中每次取反WDT信號,則到WDT第一次變?yōu)楦唠娖降臅r間B為各軟件模塊及中斷初始化所占用的時間。A+B為系統(tǒng)初始化所用的時間,約為30 ms。
圖2 DSP上電初始化時序
由此可見,如果系統(tǒng)程序跑飛,則每次復(fù)位都要經(jīng)過A、B兩個過程,約30 ms的時間;那么在CPLD軟件的看門狗模塊中,每次在給出復(fù)位信號后都要等待DSP的初始化完成(約30 ms)后再開始對喂狗信號監(jiān)測并計時。
選擇看門狗定時器溢出上限以5 ms為例,從程序跑飛到重新正常運行大約35 ms。設(shè)定控制系統(tǒng)給伺服發(fā)送控制指令信號的周期是20 ms,伺服機構(gòu)常態(tài)速度10°/s,最大速度是20°/s,20 ms的時間擺動的角度是0.2°和0.4°,該角度是其控制姿態(tài)的最小步長,因此35 ms以內(nèi)的熱復(fù)位時間最多丟失兩條指令,伺服機構(gòu)在可控范圍之內(nèi)。此外,軟件代碼還有一定的優(yōu)化余量,初始化時間和看門狗定時器溢出上限還可進一步減少。
2.3 看門狗設(shè)計要考慮的幾點問題
?、?喂狗方式:可分為電平喂狗和邊沿喂狗,本設(shè)計采用后者。與電平喂狗相比較,邊沿喂狗在狀態(tài)機的設(shè)計中可以減少狀態(tài)數(shù)量,從而節(jié)省CPLD資源,且DSP的喂狗也很容易,只要取反WDT電平,就可被認為已喂狗,簡化軟件代碼。
?、?定時器溢出上限:根據(jù)具體需要靈活設(shè)定,這里暫定5 ms。
?、?輸出系統(tǒng)復(fù)位信號脈寬:這里只要超過DSP所需的512個時鐘周期即可,以30 MHz晶振為例,時長約為171 μs。
?、?系統(tǒng)上電初始化時間:系統(tǒng)上電復(fù)位后DSP需要一斷時間初始化,而這段時間內(nèi)不能喂狗,所以CPLD不能檢測是否有喂狗信號,否則會造成連續(xù)的錯誤復(fù)位,使DSP無法正常工作,因此在CPLD代碼設(shè)計時需要越過初始化階段再去檢測喂狗信號。
?、?與主控芯片的握手信號:根據(jù)系統(tǒng)任務(wù)需求,可增加與主控芯片的握手信號。例如,當主控芯片需要實現(xiàn)總線寫程序功能時,對DSP片內(nèi)的Flash進行寫操作,此時不能對DSP進行復(fù)位,DSP也無法輸出喂狗信號,這就需要在總線寫程序之前通過總線與CPLD實現(xiàn)握手與應(yīng)答,關(guān)閉看門狗功能,程序?qū)懭胪瓿珊笙到y(tǒng)重新加電即可正常工作。為了簡化功能描述,本設(shè)計未加入握手設(shè)計。
2.4 看門狗狀態(tài)機的設(shè)計
此設(shè)計采用Mealy型狀態(tài)機,使用Verilog HDL語言編寫代碼,信號、寄存器說明如下所示:Count,時間計數(shù)器;NUM1,定時器溢出上限(5 ms);NUM2,輸出復(fù)位脈沖寬度(大于171 μs);NUM3,上電復(fù)位后等待DSP初始化的時間(30 ms);WDT_flag,3位寬移位寄存器,接收喂狗信號,比較首末位是否相等來判斷是否有喂狗信號;SYS_RST,看門狗輸出的系統(tǒng)復(fù)位信號;WAIT、IDLE、ADDING、ERROR、KEEPING,狀態(tài)機的5個狀態(tài);EN,看門狗功能使能信號,高電平禁止,低電平使能。
圖3為狀態(tài)轉(zhuǎn)移圖。在任意狀態(tài)時如果EN使能信號被禁止,則狀態(tài)機進入IDLE狀態(tài)。在圖上不一一標出EN的條件轉(zhuǎn)移曲線。系統(tǒng)上電復(fù)位后進入WAIT狀態(tài),等待NUM3時間使DSP完成初始化;進入IDLE狀態(tài),如使能看門狗功能;進入ADDING狀態(tài)累加計時,如果在限定時間NUM1內(nèi)監(jiān)測到喂狗信號,表明程序運行正常,返回IDLE狀態(tài)等待下一次喂狗信號,如果超過NUM1未收到喂狗信號,認為程序已經(jīng)跑飛,進入EEROR狀態(tài);EEROR狀態(tài)中輸出復(fù)位信號并清零計數(shù)器;進入KEEPING狀態(tài),使低電平保持一段時間NUM2,這段時間超過DSP所需的復(fù)位時間即可;進入WAIT狀態(tài),復(fù)位后重新等待DSP完成初始化,循環(huán)往復(fù)。
圖3 狀態(tài)轉(zhuǎn)移圖
圖4 仿真波形1
3 基于CPLD的硬件看門狗的仿真與驗證
3.1 功能仿真
使用Modelsim軟件進行功能仿真,可以看出EN信號和WDT(喂狗信號)的變化對SYS_RST輸出的影響。編寫測試文件對EN使能、禁止,WDT信號喂狗間隔小于、大于定時器溢出上限,以及不喂狗等情況進行仿真。
仿真波形1如圖4所示。EN處于使能狀態(tài),WDT在限定時間內(nèi)有邊沿變化時,對應(yīng)的移位寄存器也發(fā)生變化,使WDT_flag[2]!=WDT_flag[0],喂狗成功,不會輸出復(fù)位信號;在SYS_RST第二個低電平處,對應(yīng)的WDT超過了限定時間沒有變化,故輸出復(fù)位信號。
仿真波形2如圖5所示。由仿真波形可看出,在EN高電平時,不會輸出喂狗信號,使能信號測試通過,喂狗信號在EN使能時如不能在限定時間內(nèi)喂狗,則輸出系統(tǒng)復(fù)位信號。由仿真波形看出功能得到實現(xiàn)。
3.2 硬件平臺驗證
圖5 仿真波形2
在伺服控制器上對基于CPLD的硬件看門狗功能進行驗證。DSP上電初始化完成后,先正常輸出喂狗信號一段時間,然后停止輸出喂狗信號,通過示波器捕獲CPLD輸出的系統(tǒng)復(fù)位信號,波形如圖6所示,光標1是系統(tǒng)復(fù)位信號SYS_RST波形,光標2是DSP輸出的喂狗信號WDT波形。從波形圖前半段可以看出,WDT正常喂狗時,SYS_RST保持高電平,當WDT保持高電平一段時間后SYS_RST輸出低電平,實現(xiàn)系統(tǒng)復(fù)位。復(fù)位后經(jīng)過一段時間的初始化過程后,WDT開始正常喂狗。
圖6 看門狗實現(xiàn)復(fù)位的波形圖
通過以上軟件的功能仿真和硬件平臺上的驗證,可以看出,基于FPGA/CPLD的系統(tǒng)外部硬件看門狗的功能得到實現(xiàn),與預(yù)期目標吻合。
結(jié)語
在數(shù)字伺服控制系統(tǒng)中,利用其中已包含的CPLD或FPGA電路設(shè)計硬件看門狗模塊,既可以滿足系統(tǒng)對硬件看門狗功能的需求,又可以節(jié)省專用的看門狗芯片,節(jié)省電路板的空間,提高了系統(tǒng)的可靠性,提高了可編程邏輯器件的資源利用率,并且可以針對不同的系統(tǒng)上電、復(fù)位等時序要求靈活配置時間參數(shù)。經(jīng)驗證,設(shè)計達到了看門狗電路的功能要求,能夠有效保證軟件的可靠性,亦可應(yīng)用于其他數(shù)字控制系統(tǒng)平臺。
塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理 晶振相關(guān)文章:晶振原理
評論