Zynq-7000系統(tǒng)看門狗定時器SWDT詳解
掃描二維碼
隨時隨地手機看文章
zynq中每個A9處理器都有自己的私有32位定時器以及32位看門狗定時器(AWDT),2個A9共享一個全局64位定時器(GTC)。系統(tǒng)級上,有一個24位的系統(tǒng)級看門狗定時器(SWDT)和兩個16位3重定時器/計數(shù)器(TTC)。
系統(tǒng)看門狗定時器(SWDT)用于表示一些災難性的系統(tǒng)故障,例如PS PLL故障。與AWDT不同,SWDT可以不使用外部設備或PL的時鐘,并向外部設備提供復位輸出設備或PL上。
特點簡介
可用的計時器/計數(shù)器的主要功能如下:
-
內部24位計數(shù)器
-
可選時鐘輸入,來自:
-
內部PS總線時鐘(CPU_1x)
-
內部時鐘(來自PL)
-
外部時鐘(來自MIO)
-
超時時,輸出以下一項或組合:
-
系統(tǒng)中斷(PS)
-
系統(tǒng)重置(PS,PL,MIO)
-
可編程超時時間:
- 超時范圍32,760至68,719,476,736個時鐘周期(在100 MHz時為330 μs至687.2s)
-
超時時可編程的輸出信號持續(xù)時間:
- 系統(tǒng)中斷脈沖4、8、16或32個時鐘周期(CPU_1x時鐘)
框圖
下圖顯示了SWDT的框圖
系統(tǒng)看門狗定時器框圖
從中我們看到
-
SLCR可編程寄存器(WDT_CLK_SEL,MIO控制)選擇時鐘輸入。
-
SWDT可編程寄存器設置CLKSEL和CRV的值。
-
信號重新啟動會使24位計數(shù)器重新加載CRV值,然后重新開始計數(shù)。
-
信號停止導致計數(shù)器在CPU調試期間停止(行為與AWDT相同)
功能說明
控制邏輯塊具有連接到系統(tǒng)互聯(lián)的APB接口,為了能夠寫入寄存器,在每次寫數(shù)據(jù)的時候,從APB接收到的密鑰字段必須與寄存器的密鑰匹配。
零模式寄存器在其內部24位計數(shù)器到達時控制SWDT的行為零,接收到零信號后,控制邏輯模塊將中斷輸出信號置為有效。如果同時設置了WDEN和IRQEN,則控制邏輯模塊會斷言IRQLN時鐘周期的中斷輸出信號,如果設置了WDEN,也會斷言復位輸出信號大約一個CPU_1x周期。然后,該24位計數(shù)器將保持為零,直到變?yōu)?時重新啟動。
計數(shù)器控制寄存器通過在以下位置設置重載值來設置超時時間swdt.CONTROL [CLKSET]和swdt.CONTROL [CRV]來控制預分頻器和24位計數(shù)器。
重新啟動寄存器用于重新啟動計數(shù)過程,匹配寫入該寄存器鍵使預分頻器和24位計數(shù)器來重新加載CRV信號中的值。
狀態(tài)寄存器顯示24位計數(shù)器是否達到零,無論WDEN位在零模式寄存器,如果24位計數(shù)器不為零,則始終遞減計數(shù)至零,并且 存在選定的時鐘源。一旦達到零,就將狀態(tài)寄存器的WDZ位置1,然后保持設置狀態(tài),直到重新啟動24位計數(shù)器。
預分頻器模塊對選定的時鐘輸入進行分頻,每次采樣CLKSEL信號時鐘上升沿。
內部24位計數(shù)器遞減計數(shù)為零,并保持為零,直到重新啟動為止,而計數(shù)器為零,零輸出信號為高。
中斷到PS中斷控制器
來自SWDT的脈沖長度(四個CPU_1x時鐘周期)足以使中斷控制器使用上升沿敏感度來捕獲中斷。
重啟
看門狗復位發(fā)送到PS復位子系統(tǒng)以引起非POR復位,如下圖所示,描述了各種復位的效果。MIO引腳或EMIOWDTRSTO的復位輸出為高電平有效。
需要注意的是:要為PS_POR_B和其他電路板復位產生信號脈沖,請將EMIOWDTRSTO信號從SWDT穿過PL路由到可外部鎖存的引腳,以產生有效的復位脈沖。或者,使用外部看門狗定時器設備,該設備由PS軟件通過GPIO輸出引腳進行管理。數(shù)據(jù)手冊中定義了PS_POR_B復位脈沖寬度要求。
SWDT時鐘輸入選項
以下代碼顯示了SoC如何選擇SWDT的時鐘源:
if slcr.WDT_CLK_SEL[0] is 0, use CPU_1X else if slcr.MIO_PIN_14[7:0] is 01100000, use MIO pin 14 else if slcr.MIO_PIN_26[7:0] is 01100000, use MIO pin 26 else if slcr.MIO_PIN_38[7:0] is 01100000, use MIO pin 38 else if slcr.MIO_PIN_50[7:0] is 01100000, use MIO pin 50 else if slcr.MIO_PIN_52[7:0] is 01100000, use MIO pin 52 else use EMIOWDTCLKI
重置SWDT的輸出選項
以下代碼顯示了SoC如何選擇SWDT的復位輸出引腳:
if slcr.MIO_PIN_15[7:0] is 01100000, use MIO pin 15 else if slcr.MIO_PIN_27[7:0] is 01100000, use MIO pin 27 else if slcr.MIO_PIN_39[7:0] is 01100000, use MIO pin 39 else if slcr.MIO_PIN_51[7:0] is 01100000, use MIO pin 51 else if slcr.MIO_PIN_53[7:0] is 01100000, use MIO pin 53 else use EMIOWDTRSTO





