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