基于CPLD的系統(tǒng)硬件看門狗設(shè)計
2.2 DSP上電過程及復位時序分析
DSP上電初始化時序如圖2所示。WDT是喂狗信號輸出,在定時器中斷或主循環(huán)中使其電平周期性取反;RST是上電復位信號。Trst是上電復位信號的脈寬,約為100 ms;Twork是從上電時到首次進入定時器中斷程序的時間,約為130 ms。在主程序中首先使WDT輸出低電平,則從上電復位完成到WDT變?yōu)榈碗娖降臅r間A為DSP復位后自身的各項配置所占用的時間。在定時器中每次取反WDT信號,則到WDT第一次變?yōu)楦唠娖降臅r間B為各軟件模塊及中斷初始化所占用的時間。A+B為系統(tǒng)初始化所用的時間,約為30ms。本文引用地址:http://butianyuan.cn/article/190434.htm
由此可見,如果系統(tǒng)程序跑飛,則每次復位都要經(jīng)過A、B兩個過程,約30 ms的時間;那么在CPLD軟件的看門狗模塊中,每次在給出復位信號后都要等待DSP的初始化完成(約30 ms)后再開始對喂狗信號監(jiān)測并計時。
選擇看門狗定時器溢出上限以5ms為例,從程序跑飛到重新正常運行大約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)的熱復位時間最多丟失兩條指令,伺服機構(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)復位信號脈寬:這里只要超過DSP所需的512個時鐘周期即可,以30 MHz品振為例,時長約為171μs。
④系統(tǒng)上電初始化時間:系統(tǒng)上電復位后DSP需要一斷時間初始化,而這段時間內(nèi)不能喂狗,所以CPLD不能檢測是否有喂狗信號,否則會造成連續(xù)的錯誤復位,使DSP無法正常工作,因此在CPLD代碼設(shè)計時需要越過初始化階段再去檢測喂狗信號。
⑤與主控芯片的摒手信號:根據(jù)系統(tǒng)任務(wù)需求,可增加與主控芯片的握手信號。例如,當主控芯片需要實現(xiàn)總線寫程序功能時,對DSP片內(nèi)的Flash進行寫操作,此時不能對DSP進行復位,DSP也無法輸出喂狗信號,這就需要在總線寫程序之前通過總線與CPLD實現(xiàn)握手與應(yīng)答,關(guān)閉看門狗功能,程序?qū)懭胪瓿珊笙到y(tǒng)重新加電即可正常工作。為了簡化功能描述,本設(shè)計術(shù)加入握手設(shè)計。
2.4 看門狗狀態(tài)機的設(shè)計
此設(shè)計采用Mealy型狀態(tài)機,使用Verilog HDL語言編寫代碼,信號、寄存器說明如下所示:Count,時間計數(shù)器;NUM1,定時器溢出上限(5 ms);NUM2,輸出復位脈沖寬度(大丁171μs);NUM3,上電復位后等待DSP初始化的時間(30 ms);WDT_fiag,3位寬移位寄存器,接收喂狗信號,比較首未位是否相等來判斷是否有喂狗信號;SYS_RST,看門狗輸出的系統(tǒng)復位信號;WAIT、IDLE、ADDING、ERROR、KEEPING,狀態(tài)機的5個狀態(tài);EN,看門狗功能使能信號,高電平禁止,低電平使能。
評論