基于CPLD的系統(tǒng)硬件看門(mén)狗設(shè)計(jì)
2.2 DSP上電過(guò)程及復(fù)位時(shí)序分析
DSP上電初始化時(shí)序如圖2所示。WDT是喂狗信號(hào)輸出,在定時(shí)器中斷或主循環(huán)中使其電平周期性取反;RST是上電復(fù)位信號(hào)。Trst是上電復(fù)位信號(hào)的脈寬,約為100 ms;Twork是從上電時(shí)到首次進(jìn)入定時(shí)器中斷程序的時(shí)間,約為130 ms。在主程序中首先使WDT輸出低電平,則從上電復(fù)位完成到WDT變?yōu)榈碗娖降臅r(shí)間A為DSP復(fù)位后自身的各項(xiàng)配置所占用的時(shí)間。在定時(shí)器中每次取反WDT信號(hào),則到WDT第一次變?yōu)楦唠娖降臅r(shí)間B為各軟件模塊及中斷初始化所占用的時(shí)間。A+B為系統(tǒng)初始化所用的時(shí)間,約為30ms。本文引用地址:http://m.butianyuan.cn/article/190434.htm
由此可見(jiàn),如果系統(tǒng)程序跑飛,則每次復(fù)位都要經(jīng)過(guò)A、B兩個(gè)過(guò)程,約30 ms的時(shí)間;那么在CPLD軟件的看門(mén)狗模塊中,每次在給出復(fù)位信號(hào)后都要等待DSP的初始化完成(約30 ms)后再開(kāi)始對(duì)喂狗信號(hào)監(jiān)測(cè)并計(jì)時(shí)。
選擇看門(mén)狗定時(shí)器溢出上限以5ms為例,從程序跑飛到重新正常運(yùn)行大約35 ms。設(shè)定控制系統(tǒng)給伺服發(fā)送控制指令信號(hào)的周期是20 ms,伺服機(jī)構(gòu)常態(tài)速度10°/s,最大速度是20°/s,20 ms的時(shí)間擺動(dòng)的角度是0.2°和0.4°,該角度是其控制姿態(tài)的最小步長(zhǎng),因此35 ms以?xún)?nèi)的熱復(fù)位時(shí)間最多丟失兩條指令,伺服機(jī)構(gòu)在可控范同之內(nèi)。此外,軟件代碼還有一定的優(yōu)化余量,初始化時(shí)間和看門(mén)狗定時(shí)器溢出上限還可進(jìn)一步減少。
2.3 看門(mén)狗設(shè)計(jì)要考慮的幾點(diǎn)問(wèn)題
①喂狗方式:可分為電平喂狗和邊沿喂狗,本設(shè)計(jì)采用后者。與電平喂狗相比較,邊沿喂狗在狀態(tài)機(jī)的設(shè)計(jì)中可以減少狀態(tài)數(shù)量,從而節(jié)省CPLD資源,且DSP的喂狗也很容易,只要取反WDT電平,就可被認(rèn)為已喂狗,簡(jiǎn)化軟件代碼。
②定時(shí)器溢出上限:根據(jù)具體需要靈活設(shè)定,這里暫定5 ms。
③輸出系統(tǒng)復(fù)位信號(hào)脈寬:這里只要超過(guò)DSP所需的512個(gè)時(shí)鐘周期即可,以30 MHz品振為例,時(shí)長(zhǎng)約為171μs。
④系統(tǒng)上電初始化時(shí)間:系統(tǒng)上電復(fù)位后DSP需要一斷時(shí)間初始化,而這段時(shí)間內(nèi)不能喂狗,所以CPLD不能檢測(cè)是否有喂狗信號(hào),否則會(huì)造成連續(xù)的錯(cuò)誤復(fù)位,使DSP無(wú)法正常工作,因此在CPLD代碼設(shè)計(jì)時(shí)需要越過(guò)初始化階段再去檢測(cè)喂狗信號(hào)。
⑤與主控芯片的摒手信號(hào):根據(jù)系統(tǒng)任務(wù)需求,可增加與主控芯片的握手信號(hào)。例如,當(dāng)主控芯片需要實(shí)現(xiàn)總線(xiàn)寫(xiě)程序功能時(shí),對(duì)DSP片內(nèi)的Flash進(jìn)行寫(xiě)操作,此時(shí)不能對(duì)DSP進(jìn)行復(fù)位,DSP也無(wú)法輸出喂狗信號(hào),這就需要在總線(xiàn)寫(xiě)程序之前通過(guò)總線(xiàn)與CPLD實(shí)現(xiàn)握手與應(yīng)答,關(guān)閉看門(mén)狗功能,程序?qū)懭胪瓿珊笙到y(tǒng)重新加電即可正常工作。為了簡(jiǎn)化功能描述,本設(shè)計(jì)術(shù)加入握手設(shè)計(jì)。
2.4 看門(mén)狗狀態(tài)機(jī)的設(shè)計(jì)
此設(shè)計(jì)采用Mealy型狀態(tài)機(jī),使用Verilog HDL語(yǔ)言編寫(xiě)代碼,信號(hào)、寄存器說(shuō)明如下所示:Count,時(shí)間計(jì)數(shù)器;NUM1,定時(shí)器溢出上限(5 ms);NUM2,輸出復(fù)位脈沖寬度(大丁171μs);NUM3,上電復(fù)位后等待DSP初始化的時(shí)間(30 ms);WDT_fiag,3位寬移位寄存器,接收喂狗信號(hào),比較首未位是否相等來(lái)判斷是否有喂狗信號(hào);SYS_RST,看門(mén)狗輸出的系統(tǒng)復(fù)位信號(hào);WAIT、IDLE、ADDING、ERROR、KEEPING,狀態(tài)機(jī)的5個(gè)狀態(tài);EN,看門(mén)狗功能使能信號(hào),高電平禁止,低電平使能。
評(píng)論