ARM定義了兩個低功耗接口(Low Power Interface),用于低功耗控制握手,分別是Q-Channel和P-Channel。其中的Q-Channel在以前講過,Q-Channel相對P-Channel而言簡單一些,只是控制開/關(guān)兩種狀態(tài),這在控制時鐘的握手時沒有任何問題,但是在控制電源的握手時就有點(diǎn)不夠用了。
對于一個復(fù)雜的設(shè)計,僅僅用開/關(guān)兩種狀態(tài)描述是不完備的,需要引入更多的電源狀態(tài),比如memory retention(一種低功耗技術(shù),為存儲單元提供一個較低供電電壓,以保留存儲陣列的數(shù)據(jù),但是存儲單元不接受外部的數(shù)據(jù)訪問)。
P-Channel提出了一個概念,叫電源狀態(tài)轉(zhuǎn)換(power state transition)。在P-Channel的應(yīng)用場景中,電源的狀態(tài)有很多,這個是可以是自己定義的。電源的各個狀態(tài)之間是可以切換的。
P-Channel的接口并不復(fù)雜:
- N-bit的PACTIVE,由設(shè)備端驅(qū)動,每個比特位可能由多個源信號組成;
- M-bit的PSTATE,由控制器端驅(qū)動,表示請求轉(zhuǎn)換到的電源狀態(tài);
- PREQ,由控制器端驅(qū)動,高電平表示請求轉(zhuǎn)換到電源狀態(tài)(電源狀態(tài)由PSTATE定義);
- PACCEPT,由設(shè)備端驅(qū)動,高電平表示設(shè)備接受制器發(fā)出的電源狀態(tài)轉(zhuǎn)換請求;
- PDENY,由設(shè)備端驅(qū)動,高電平表示設(shè)備拒絕控制器發(fā)出的電源狀態(tài)轉(zhuǎn)換請求;
其中N和M的值取決于具體的設(shè)計需要,P-Channel規(guī)范并沒有強(qiáng)制要求。
PREQ、PACCEPT和PDENY構(gòu)成一個握手接口(PACTIVE不在握手之中),用于管理和保證安全狀態(tài)轉(zhuǎn)換。P-Channel要求在一次握手轉(zhuǎn)換中,PACCEPT或PDENY中只有一個發(fā)生變化。也就是說,PACCEPT和PDENY在握手中,只能有一個為高。
來自設(shè)備的PACCEPT和PDENY信號,以及來自控制器的PREQ和PSTATE信號都必須由寄存器直接驅(qū)動。拒絕機(jī)制的目的是使設(shè)備能夠保持其當(dāng)前狀態(tài),同時通過該機(jī)制可以迅速完成握手。
握手信號狀態(tài)與PACTIVE位無關(guān)。PACTIVE位上的轉(zhuǎn)換不受PREQ、PACCEPT和PDENY上的值的限制。
握手規(guī)則如下:
- 當(dāng)PACCEPT和PDENY都為低電平時,PREQ才能從低電平轉(zhuǎn)換為高電平。
- PREQ只能在以下情況下,可以從高電平到低電平轉(zhuǎn)換:
-PACCEPT為高,PDENY為低。
-PACCEPT為低,PDENY為高。 - PSTATE只能在以下情況下轉(zhuǎn)換:
-PREQ、PACCEPT和PDENY都為低電平(控制器在發(fā)起請求前,提前改變PSTATE)。
-PREQ和PDENY為高電平,PACCEPT為低電平(設(shè)備拒絕請求,控制器需要將PSTATE返回請求前的值)。 - 僅當(dāng)PREQ高電平且PDENY低電平時,PACCEPT才可以從低轉(zhuǎn)換到高。
- 僅當(dāng)PREQ低電平且PDENY低電平時,PACCEPT才可以從高轉(zhuǎn)換到低。
- 僅當(dāng)PREQ高電平且PACCEPT低電平時,PDENY才可以從低轉(zhuǎn)換到高。
- 僅當(dāng)PREQ低電平且PACCEPT低電平時,PDENY才可以從高轉(zhuǎn)換為低。
下圖是控制器發(fā)出從A狀態(tài)到B狀態(tài)轉(zhuǎn)換請求,設(shè)備接受請求的握手流程:
- T0時刻,接口空閑,所有握手信號均為低電平。接口狀態(tài)為P_STABLE,設(shè)備保持當(dāng)前狀態(tài)。
- T1時刻,控制器想要發(fā)出請求,并且需要提前做一些準(zhǔn)備工作。接口狀態(tài)仍為P_STABLE。
- T2時刻,控制器設(shè)置PSTATE為目標(biāo)狀態(tài)B,同時將PREQ信號變?yōu)楦唠娖?,接口狀態(tài)變?yōu)镻_REQUEST。協(xié)議要求在設(shè)備檢測到PREQ時,PSTATE是穩(wěn)定的。
- T3時刻,設(shè)備通過將PACCEPT驅(qū)動成高電平來表示接受轉(zhuǎn)換,同時PDENY必須保持低電平(PACCEPT和PDENY在握手中,只能有一個為高)。接口狀態(tài)現(xiàn)在是P_ACCEPT。
- T4時刻,控制器端對PACCEPT高電平進(jìn)行采樣,并將PREQ設(shè)置為低電平,表示本次請求結(jié)束。接口狀態(tài)為P_COMPLETE。
- T5時刻,設(shè)備端監(jiān)測到PREQ變?yōu)榈碗娖?,將PACCEPT驅(qū)動為低電平。此時,一旦控制器檢測到PACCEPT為低電平,它就可以采取所需的任何轉(zhuǎn)換后操作(比如控制電源開關(guān))。本次握手全部完成,接口狀態(tài)回到P_STABLE。
下圖是控制器發(fā)出從A狀態(tài)到B狀態(tài)轉(zhuǎn)換請求,設(shè)備拒絕請求的握手流程:
- T0,T1,T2時刻的握手順序跟接受請求的流程一樣。
- T3時刻,設(shè)備端拒絕此次控制器發(fā)出的電源狀態(tài)轉(zhuǎn)換請求,驅(qū)動PDENY信號為高電平,同時必須保持PACCEPT信號為低電平。接口狀態(tài)為P_DENIED。
- T4時刻,控制請檢測到PDENY信號為高電平,知道設(shè)備拒絕了本次請求??刂破鞫蓑?qū)動PREQ信號為低電平,表示結(jié)束本次請求,同時恢復(fù)PSTATE信號為初始的A狀態(tài)。接口狀態(tài)為P_CONTINUE。
- T5時刻,設(shè)備端發(fā)現(xiàn)PREQ變成低電平,需要將PDENY信號驅(qū)動成低電平。一旦控制器發(fā)現(xiàn)PDENY變成低電平,它就可以采取所需的任何轉(zhuǎn)換后操作。本次握手流程全部完成,接口狀態(tài)恢復(fù)為P_STABLE。
對于設(shè)備端,在復(fù)位時,必須將PACCEPT和PDENY置為低電平,但對PACTIVE沒有要求。如果設(shè)備必須進(jìn)入特定電源狀態(tài)才能進(jìn)行啟動操作,則需要在設(shè)備復(fù)位時將PACTIVE位置為高位。如果不存在此類要求,ARM建議在設(shè)備復(fù)位時將所有PACTIVE置為低電平。
P-Channel的狀態(tài)為P_STABLE時,設(shè)備的復(fù)位信號才可以設(shè)置為有效。
當(dāng)設(shè)備的的復(fù)位被釋放后,設(shè)備要進(jìn)入初始化,此時控制器要設(shè)置PSTATE信號值,設(shè)備會采樣該信號值,從而完成正確的初始化流程。PSTATE要在復(fù)位信號無效后要保持穩(wěn)定。
設(shè)備要提供一個初始化時間(tinit),用來表示,復(fù)位之后,在所有可能的復(fù)位狀態(tài)下保證捕獲PSTATE值之前所需的設(shè)備時鐘周期數(shù)。PSTATE在這段時間內(nèi)必須保持穩(wěn)定。
以下是復(fù)位后,控制器等待tinit時間后,控制器再發(fā)起請求的握手流程。
下圖展示了控制器在復(fù)位解除前將PREQ置為高電平,然后等待P-Channel轉(zhuǎn)換完成后,再發(fā)出進(jìn)一步請求的情況。
下圖展示了控制器在復(fù)位解除后,使用相同的PSTATE值,并將PREQ設(shè)置為高的情況。
下圖展示了多狀態(tài)轉(zhuǎn)換的握手,從狀態(tài)A轉(zhuǎn)換到狀態(tài)B,然后再轉(zhuǎn)換到狀態(tài)C。
P-Channel的握手狀態(tài)和狀態(tài)轉(zhuǎn)換圖如下:
設(shè)備用PACTIVE向電源控制器提出要求,每個位代表不同的要求。PACTIVE位為高電平表示設(shè)備向控制器提出需求。如果PACTIVE為低電平,表示設(shè)備不再需要該需求。P-Channel握手獨(dú)立于PACTIVE,控制器可以不考慮PACTIVE而做出任何決策。但是,該設(shè)備可以拒絕任何不適當(dāng)?shù)恼埱?。換句話說,PACTIVE是獨(dú)立于握手協(xié)議的,PACTIVE可以是自定義實現(xiàn)的。
下圖展示了控制器根據(jù)設(shè)備的PACTIVE發(fā)出電源轉(zhuǎn)換請求的案例。本例子中:
- PACTIVE[2]: State C
- PACTIVE[1]: State B
- PACTIVE[0]: State A
為了控制器的正確設(shè)計,設(shè)備端必須提供足夠的信息,包括:
- 所有設(shè)備支持的電源狀態(tài),包括:PSTATE定義和編碼;PACTIVE每個比特位的分配;用于初始化狀態(tài),推薦的PACTIVE值;不再使用的PACTIVE位。
- 設(shè)備支持的電源狀態(tài)轉(zhuǎn)換,比如,如果控制器發(fā)起轉(zhuǎn)換請求,設(shè)備采取的任何操作;哪些設(shè)備電源狀態(tài)轉(zhuǎn)換可以被有條件地拒絕。
- 復(fù)位釋放后,用于初始化設(shè)備的PSTATE值
- 設(shè)備初始化時間tinit
P-Channel規(guī)范中,給出了一個例子。本例中,有兩個設(shè)備,三個電源域。Device 0位于power domain0,電源控制器使用PD0來控制。Device 1位于power domain1和power domain2,電源控制器使用PD1和PD2來分別控制。此例中,三個電源域是獨(dú)立的。
如果電源域不是彼此獨(dú)立的,而是由嵌套關(guān)系,如下圖所示。Device1內(nèi)部有3個電源域,分別為power domain 0,power domain 1,power domain 2,但是domain 0是domain 1和domain 2的父域,domain 1和domain 2是子域,也就是domain 0控制domain 1和domain 2。
電源控制器和device 1有3個P-Channel接口,但是都是在power domain 0中。這種情況下,電源控制與power domain 0的握手需要考慮子域的電源狀態(tài)。
-
控制器
+關(guān)注
關(guān)注
112文章
16104瀏覽量
177080 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119819 -
ARM芯片
+關(guān)注
關(guān)注
1文章
125瀏覽量
21420 -
電平轉(zhuǎn)換
+關(guān)注
關(guān)注
3文章
133瀏覽量
33824 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
491瀏覽量
27457
發(fā)布評論請先 登錄
相關(guān)推薦
評論