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





