高 毅 韓振國
(中航工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710015)
一種采用FPGA實(shí)現(xiàn)的通用看門狗電路
高 毅 韓振國
(中航工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710015)
為了保障嵌入式系統(tǒng)的實(shí)時性,提高系統(tǒng)的可靠性,通常采用看門狗電路對系統(tǒng)運(yùn)行情況進(jìn)行監(jiān)控并在必要時對系統(tǒng)進(jìn)行復(fù)位。文章介紹了一種用FPGA實(shí)現(xiàn)的看門狗電路,其配置靈活、使用簡便,可以滿足多種系統(tǒng)要求。
看門狗;FPGA
嵌入式系統(tǒng)廣泛應(yīng)用于工業(yè)自動化、醫(yī)療儀表、航空航天等領(lǐng)域,其抗干擾能力是衡量系統(tǒng)性能的重要指標(biāo),特別是在對可靠性有嚴(yán)格要求的機(jī)載航空電子系統(tǒng)中,看門狗是保障系統(tǒng)穩(wěn)定運(yùn)行的重要手段,可以及時監(jiān)控嵌入式系統(tǒng)軟件是否在規(guī)定的時間內(nèi)執(zhí)行了規(guī)定的指令,如果發(fā)現(xiàn)進(jìn)入錯誤狀態(tài)可以及時發(fā)起中斷或復(fù)位。
看門狗是一種監(jiān)控系統(tǒng)的運(yùn)行狀況的手段,通過軟硬件結(jié)合的方式實(shí)現(xiàn)對系統(tǒng)運(yùn)行狀況的監(jiān)控。穩(wěn)定運(yùn)行的軟件會在執(zhí)行完特定指令后進(jìn)行喂狗,若在一定周期內(nèi)看門狗沒有收到來自軟件的喂狗信號, 則認(rèn)為系統(tǒng)故障,會進(jìn)入中斷處理程序或強(qiáng)制系統(tǒng)復(fù)位??撮T狗的工作流程見圖1,系統(tǒng)上電后根據(jù)不同的工作模式可以選擇使能看門狗的時機(jī),若看門狗被使能則計數(shù)器開始計數(shù),如果在設(shè)定的時間內(nèi)沒有及時喂狗則會發(fā)生看門狗超時??撮T狗主要由寄存器、計數(shù)器和狗叫模塊構(gòu)成;通過寄存器對看門狗進(jìn)行基本設(shè)置,計數(shù)器計算狗叫時間,狗叫模塊決定看門狗超時后發(fā)出的中斷或復(fù)位方式。
圖1 看門狗工作流程
用FPGA實(shí)現(xiàn)看門狗接線簡單、通用性好,可以根據(jù)系統(tǒng)需求進(jìn)行靈活配置,可以選擇將看門狗功能模塊掛接在不同的系統(tǒng)總線上;看門狗計時分辨率可配置;超時時間可配置;中斷模式可配置;狗叫輸出形式可配置。如圖2所示,F(xiàn)PGA實(shí)現(xiàn)的看門狗分三個功能模塊,總線接口模塊、看門狗核模塊和復(fù)位模塊,通過修改頂層文件,可以實(shí)現(xiàn)對看門狗功能的配置。
圖2 看門狗功能實(shí)現(xiàn)圖
總線接口模塊可以通過修改頂層文件實(shí)現(xiàn)將看門狗掛接在不同總線上。既可以選擇將看門狗功能模塊掛接在LBE或HLP等異步總線上,也可以掛接在PCI或PCIE等同步總線上,同時支持8位、16位或32位的數(shù)據(jù)訪問。同時總線接口模塊還完成地址信號、數(shù)據(jù)信號、讀寫控制信號等信號和看門狗時鐘的同步工作,保障讀寫信號的低電平有效時間大于兩個看門狗時鐘周期;保障寫信號下降沿之后的一個時鐘周期內(nèi)片選信號和地址信號已經(jīng)穩(wěn)定;保障片選信號讀信號地址信號穩(wěn)定后兩個時鐘周期輸出數(shù)據(jù)信號穩(wěn)定。
看門狗核實(shí)現(xiàn)看門狗的核心功能,內(nèi)置計時分辨率、超時時間、看門狗使能、喂狗等寄存器,只需修改寄存器值就可以實(shí)現(xiàn)不同的功能配置。
計時分辨率配置,F(xiàn)PGA邏輯中可以靈活選擇接入不同的看門狗時鐘,通過軟件配置分頻因子,設(shè)置需要的計時分辨率。例如:如果看門狗時鐘接入的是66MHz,分頻因子配置為66,那么計時分辨率為1us。
看門狗超時時間配置,配置看門狗超時寄存器可以設(shè)定看門狗超時時間,即多長時間內(nèi)沒有進(jìn)行軟件喂狗操即觸發(fā)看門狗叫。如果計時分辨率是1 us, 那么超時時間可以設(shè)置成1us~71.5min 的任意值;如果計時分辨率是50ns,那么超時時間可以設(shè)置成50ns~3.5min 的任意值。
使能看門狗,產(chǎn)品上電后可以通過向看門狗使能寄存器中寫“1”來使能看門狗。通過這種方式可以控制何時啟動看門狗工作,可以選擇上電即啟動看門狗也可以在某種模式下選擇過一段時間再使能看門狗。一旦看門狗使能則所有配置寄存器變成只讀模式以保障系統(tǒng)穩(wěn)定運(yùn)行。
看門狗叫方式配置,通過配置相應(yīng)的寄存器可以將看門狗中斷模式配置為電平模式或脈沖模式,脈沖寬度可調(diào)以滿足不同的系統(tǒng)需求??撮T狗復(fù)位信號也提供幾種配置方式:可以選擇狗叫后立即發(fā)出復(fù)位信號也可以選擇狗叫幾次再發(fā)出復(fù)位信號;發(fā)出的復(fù)位信號可以接入如圖2的復(fù)位模塊和軟件復(fù)位配合發(fā)出快速復(fù)位信號,也可以直接輸出到外部復(fù)位芯片的輸入端以產(chǎn)生較長的復(fù)位信號。
表1 通用看門狗寄存器
3.1電平式狗叫方式
根據(jù)某系統(tǒng)需求配置看門狗參數(shù)如下:看門狗時鐘使用100MHz;分頻系數(shù)配置為10,表示看門狗計數(shù)器的分辨率是為10 * 10ns = 100ns;設(shè)置超時計數(shù)器值配置為5,表示看門狗超時時間為5 * 100ns = 0.5us;使能看門狗,超時計數(shù)器(cur_timecnt)從5,4,3,… 開始遞減;脈沖寬度寄存器(cur_pulsetimecnt)填全0,即看門狗中斷為電平保持模式;喂狗一次(feed_dog_reg),看門狗超時計數(shù)器重新計數(shù)一次;超過0.5us不喂狗,即看門狗超時,看門狗中斷信號wdg_int_L出現(xiàn)持續(xù)低電平;喂狗后電平升高,看門狗計數(shù)器重新計數(shù)。狗叫次數(shù)上限(cur_dogbarkcnt)設(shè)置為3,即發(fā)生連續(xù)三次看門狗超時即發(fā)出復(fù)位信號wdg_ResetOut_L。
圖3 電平式狗叫仿真圖
3.2脈沖式狗叫方式
看門狗時鐘、分頻系數(shù)、超時計數(shù)器的配置與電平式狗叫方式配置為相同。脈沖寬度寄存器(cur_pulsetimecnt)填4,表示采用中斷脈沖模式,脈沖時間為: 4 * 100ns = 0.4us;喂狗一次(feed_dog_reg),超時計數(shù)器重新計數(shù)一次;超過0.5us不喂狗,看門狗中斷信號wdg_int_L出現(xiàn)持續(xù)0.4us的負(fù)脈沖,0.4us后脈沖自動撤銷。
圖4 脈沖式狗叫仿真圖
3.3看門狗驅(qū)動及測試
以FPGA實(shí)現(xiàn)的看門狗電路驅(qū)動程序編寫非常簡便,使能看門狗、禁止看門狗、喂狗、設(shè)置超時時間等函數(shù)都只用向相應(yīng)的寄存器地址賦值即可。
由于不同系統(tǒng)需求不同,這里只提供一個簡單通用測試方法:看門狗中斷處理函數(shù)只做中斷次數(shù)加1并打印中斷次數(shù);看門狗測試函數(shù)掛接并使能中斷服務(wù)程序后進(jìn)行喂狗、使能看門狗操作,延遲一段時間后檢查中斷次數(shù)是否大于1,若中斷次數(shù)大于1則認(rèn)為看門狗超時后能發(fā)出中斷信號,看門狗基本功能正常。
用FPGA實(shí)現(xiàn)看門狗電路配置靈活成本低廉可以滿足大部分系統(tǒng)的需求,能有效監(jiān)控系統(tǒng)程序運(yùn)行狀況在程序跑飛時及時保護(hù)中斷現(xiàn)場,在突發(fā)狀況下及時復(fù)位系統(tǒng)避免系統(tǒng)失控。經(jīng)過多個系統(tǒng)的應(yīng)用和完善這種看門狗實(shí)現(xiàn)方式性能穩(wěn)定可靠有良好的抗干擾效果,大大提高了系統(tǒng)可靠性。
[1] 王幸之.單片機(jī)應(yīng)用系統(tǒng)電磁干擾與抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,2006.
[2] 李廣弟,朱月秀.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001.
[3] 王路,王楠.軟硬件結(jié)合實(shí)現(xiàn)的“看門狗”技術(shù)[J].現(xiàn)代電子技術(shù),2006,(8):88-89.
A general watchdog circuit implemented by FPGA
Generally, watchdog is used to monitor operating status of an embedded system and reset it if necessary, for ensuring real-time and improving reliability. This paper introduces a watchdog implemented in FPGA, which can be configured flexibly and is easy to use, to meet the requirement of various systems.
Watchdog;FPGA
TM925
A
1008-1151(2015)11-0001-02
2015-10-11
高毅(1983-),女,中航工業(yè)西安航空計算技術(shù)研究所工程師,碩士,研究方向?yàn)楦咝阅軘?shù)據(jù)信號處理技術(shù)。