AMBA低功耗接口(二)P_Channel
為了滿足復(fù)雜的power管理的需求,arm提供了P_Channel的低功耗接口,來滿足這樣的應(yīng)用場景。
一、P_Channel
P_Channel,提出了一個(gè)概念,叫power state transition,power狀態(tài)的切換。在P_Channel的應(yīng)用場景中,power的狀態(tài)有很多,這個(gè)是實(shí)現(xiàn)自己定義的。power的各個(gè)狀態(tài)之間,是可以切換的。
2個(gè)最基本的狀態(tài):
?lower-power狀態(tài):在這個(gè)狀態(tài)下,power消耗比較少,device處于低功耗狀態(tài)(具有部分功能)
?higher-power狀態(tài):在這個(gè)狀態(tài),power消耗比較大,device處于正常狀態(tài)(具有完整功能)
1、接口
以下是P_Channel接口。

分為device端和power控制端(下文簡稱PMU)。

PACCEPT和PDENY在握手中,只能有一個(gè)為高。PACCEPT表示接受請(qǐng)求,PDENY表示拒絕請(qǐng)求。
PACCEPT,PDENY,PREQ,PSTATE,必須是從寄存器直接輸出。
2、P_Channel接口握手狀態(tài)
對(duì)P_Channel的接口,arm也定義了一些握手狀態(tài)。不過狀態(tài),有加入了RESETn信號(hào)的影響。
?P_RESET:device處于reset狀態(tài)
?P_STABLE: device處于非reset狀態(tài),并且PMU沒有發(fā)送power狀態(tài)切換請(qǐng)求
?P_REQUEST:PMU向device發(fā)送power狀態(tài)切換請(qǐng)求
?P_ACCEPT:device接受PMU的power狀態(tài)切換請(qǐng)求
?P_DENIED:device拒絕PMU的power狀態(tài)切換請(qǐng)求
?P_COMPLETE:device接受PMU的power狀態(tài)切換請(qǐng)求后,PMU取消power狀態(tài)切換請(qǐng)求
?P_CONTINUE: device拒絕PMU的power狀態(tài)切換請(qǐng)求后,PMU取消power狀態(tài)切換請(qǐng)求
編碼:

以下是狀態(tài)轉(zhuǎn)移圖:

握手協(xié)議規(guī)則:
?PREQ只有在PACCEPT和PDENY都為低情況下,才可以從低變?yōu)楦?/p>
?PREQ要滿足以下的任意條件,才可以從高變?yōu)榈停?/p>
?PSTATE滿足以下的任意條件,才可以變化:
?PREQ,PACCEPT,PDENY都為低
?PREQ和PDENY為高,PACCEPT為低
?PACCEPT只有在PREQ為高,并且PDENY為低,才可以從低變?yōu)楦?/p>
?PACCETP只有在PREQ為低,并且PDENY為低,才可以從高變?yōu)榈?/p>
?PDENY只有在PREQ為高,并且PACCEPT為低,才可以從低變?yōu)楦?/p>
?PDENY只有在PREQ為低,并且PACCEPT為低,才可以從高變?yōu)榈?/p>
3、P_Channel的握手協(xié)議
握手協(xié)議,涉及到PREQ,PSTATE,PACCEPT,PENDY這4個(gè)信號(hào)。
3.1、device接受power狀態(tài)切換
下圖是該時(shí)序圖:

在T2時(shí)刻之前,P_Channel處于P_STATBLE狀態(tài)。
T2時(shí)刻,PMU拉高PREQ,將PSTATE置為STATE B。向device發(fā)送power狀態(tài)切換請(qǐng)求,請(qǐng)求將device切換到STATE B的power狀態(tài)。P_Channel進(jìn)入P_REQUEST狀態(tài)。
T3時(shí)刻,device將PACCEPT拉高,表示接受PMU的power狀態(tài)切換請(qǐng)求。P_Channel進(jìn)入P_ACCEPT狀態(tài)。
T4時(shí)刻,PMU接收device的PACCEPT響應(yīng),拉低PREQ,取消請(qǐng)求。P_Channel進(jìn)入P_COMPLETE狀態(tài)。
T5時(shí)刻,device將PACCEPT拉低,表示完成power狀態(tài)切換。P_Channel進(jìn)入P_STABLE狀態(tài)。
3.2、device拒絕power狀態(tài)切換
下圖是時(shí)序圖:

T2時(shí)刻以前,P_Channel處于P_STABLE狀態(tài)。
T2時(shí)刻,PMU將PREQ拉高,將PSTATE置為STATE B。向device發(fā)送power狀態(tài)切換請(qǐng)求,請(qǐng)求將device切換到STATE B的power狀態(tài)。P_Channel進(jìn)入P_REQUEST狀態(tài)。
T3時(shí)刻,device將PDENY拉高,表示拒絕PMU的power切換請(qǐng)求。P_Channel進(jìn)入P_DENIED狀態(tài)。
T4時(shí)刻,PMU接收到device的PDENY響應(yīng),將PREQ拉低,取消請(qǐng)求,并且把PSTATE置為STATE A。P_Channel進(jìn)入P_CONTINUE狀態(tài)。
T5時(shí)刻,device將PDENY拉低,P_Channel進(jìn)入P_STABLE狀態(tài)。
4、device的復(fù)位和初始化
device在復(fù)位時(shí),必須將PACCEPT和PDENY置為低,但對(duì)PACTIVE沒有要求。
P_Channel的狀態(tài)為P_STABLE時(shí),device的復(fù)位信號(hào),才可以設(shè)置為有效。
當(dāng)device的復(fù)位無效時(shí),device要進(jìn)入初始化,此時(shí)PMU要設(shè)置PSTATE信號(hào)值,device會(huì)在復(fù)位之后,采樣該信號(hào)值,從而采用合適的初始化流程。
PSTATE要在復(fù)位信號(hào)無效后要保持穩(wěn)定。
device,要提供一個(gè)初始化周期時(shí)間,tinit。用來表示,復(fù)位之后,PSTATE需要保持多久時(shí)間,供device初始化使用。PSTATE在tinit時(shí)間之內(nèi),必須要保持穩(wěn)定。
以下是時(shí)序圖:

T1時(shí)刻之前,RESETn為低,復(fù)位有效,P_Channel處于P_RESET狀態(tài)。
T1時(shí)刻,RESETn為高,PMU將PSTATE置為STATE A。P_Channel進(jìn)入P_STABLE狀態(tài)。
T2時(shí)刻,由于tinit的限制,PMU要將PSTATE一直保持在STATE A,以便device正確的初始化。device必須要在tinit時(shí)間內(nèi),采樣PSTATE。此后,PMU就可以發(fā)送power切換請(qǐng)求了。
T3時(shí)刻,PMU將PREQ置高,并且將PSTATE置為STATE B,發(fā)送power切換請(qǐng)求。P_Channel進(jìn)入P_REQUEST狀態(tài)。
T4時(shí)刻,device將PACCEPT拉高,表示接受PMU的power狀態(tài)切換請(qǐng)求。P_Channel進(jìn)入P_ACCEPT狀態(tài)。
T5時(shí)刻,PMU接收device的PACCEPT響應(yīng),拉低PREQ,取消請(qǐng)求。P_Channel進(jìn)入P_COMPLETE狀態(tài)。
T6時(shí)刻,device將PACCEPT拉低,表示完成power狀態(tài)切換。P_Channel進(jìn)入P_STABLE狀態(tài)。
T7時(shí)刻,P_Channel在P_STATBLE狀態(tài),可以進(jìn)行復(fù)位,外部拉低RESETn,P_Channel進(jìn)入P_RESET狀態(tài)。
下圖,展示了,當(dāng)復(fù)位時(shí),PMU發(fā)送power切換情況的時(shí)序圖。

T1時(shí)刻,PMU將PREQ拉高,并置PSTATE為STATE A,但是復(fù)位信號(hào)有效,device不接收PMU請(qǐng)求。P_Channel保持為P_RESET狀態(tài)。
T2時(shí)刻,復(fù)位信號(hào)釋放,因?yàn)镻REQ為高,P_Channel進(jìn)入P_REQUEST狀態(tài)。device接收PMU的power切換請(qǐng)求。
之后的就和上面的分析原理是一樣的了。
下圖,展示了,復(fù)位后,PMU發(fā)送使device進(jìn)入STATE A的power狀態(tài)請(qǐng)求,當(dāng)該轉(zhuǎn)換完成后,PMU又繼續(xù)發(fā)送使device進(jìn)入STATE B的power狀態(tài)請(qǐng)求。

PMU在發(fā)送下一個(gè)power切換請(qǐng)求前,必須保證上一個(gè)power切換請(qǐng)求,傳輸完畢。
5、多個(gè)power狀態(tài)切換
利用P_Channel,PMU可以使device,來回切換不同的power狀態(tài)。

在T0,device處于STATE A狀態(tài)。
在T1到T4,通過P_Channel,使device進(jìn)入STATE B狀態(tài)。在T4,P_Channel進(jìn)入P_STABLE狀態(tài)。
在T5-T8,通過P_Channel,使device進(jìn)入STATE C狀態(tài)。在T8,P_Channel進(jìn)入P_STABLE狀態(tài)。
6、PACTIVE
PACTIVE,提供給device給PMU發(fā)送請(qǐng)求。PACTIVE的每一個(gè)bit,表示一種請(qǐng)求。bit為高,表示device發(fā)送請(qǐng)求給PMU,讓PMU處理,bit為低,表示device沒有發(fā)送請(qǐng)求給PMU處理。
PACTIVE和握手協(xié)議,是獨(dú)立開的。PACTIVE是設(shè)計(jì)自定義的,請(qǐng)求完全自己定義。當(dāng)然,也可以不使用PACTIVE,如果不是用PACTIVE,需要將PACTIVE置為0。
以下是PACTIVE的例子:

PACTIVE有3個(gè)bit,每個(gè)bit,映射到一個(gè)power狀態(tài),MSB具有高優(yōu)先級(jí)。
?PACTIVE[2]: STATE C
?PACTIVE[1]: STATE B
?PACTIVE[0]: STATE A
T1時(shí)刻,device將PACTIVE設(shè)置為3'b011,表示device向PMU發(fā)送power切換請(qǐng)求,將自己切換為STATE B。
PMU接收到device的請(qǐng)求后,從T2到T5,向device發(fā)送power切換請(qǐng)求,并且切換到STATE B狀態(tài)。最后P_Channel進(jìn)入P_STABLE狀態(tài)。
T6時(shí)刻,device將PACTIVE設(shè)置為3'b111,表示device向PMU發(fā)送power切換請(qǐng)求,將自己切換為STATE C。
PMU接收到device的請(qǐng)求后,從T7到T10,向device發(fā)送power切換請(qǐng)求,并且切換到STATE C狀態(tài)。最后P_Channel進(jìn)入P_STABLE狀態(tài)。
7、對(duì)于device,需要提供的信息
為了PMU的設(shè)計(jì)的正確性,device需要向PMU提供以下的一些信息:
?device支持的power狀態(tài),包括以下:
?PSTATE定義和編碼
?PACTIVE每個(gè)bit代表的請(qǐng)求
?用于初始化power狀態(tài),推薦的PACTIVE輸出
?PACTIVE需要被忽略,或者一直置0的bit信息
?power狀態(tài)的切換,包括以下:
?power狀態(tài)切換之后的device行為
?device拒絕power狀態(tài)切換的條件
?復(fù)位釋放后,用于初始化device的PSTATE的合理值
?tinit值
8、實(shí)現(xiàn)
對(duì)于device和PMU來說,有各自的時(shí)鐘,因此他們的時(shí)鐘,是當(dāng)成異步來進(jìn)行處理的,所以需要同步化的操作。
下圖展示了,P_Channel的實(shí)現(xiàn)框圖:
對(duì)于PSTATE,PREQ,PACCETP,PDENY,需要從寄存器直接輸出,在接收端,需要使用同步器,對(duì)異步輸入信號(hào)進(jìn)行同步化輸出。
對(duì)于PACTIVE,如果是多個(gè)來源的組合,ARM建議使用或門來實(shí)現(xiàn)。并且每個(gè)對(duì)PACTIVE貢獻(xiàn)的來源,必須是寄存器直接輸出。

9、P_Channel使用例子
以下是P_Channel使用的2個(gè)例子。
9.1、獨(dú)立的power domain使用P_Channel
device0處于power domain0,PMU使用PD0來控制。
device1處于power domain1和power domain2,PMU使用PD1和PD2來分別控制。

9.2、父子關(guān)系的power domain使用P_Channel
device1內(nèi)部有3個(gè)power domain,分別為power domain0,power domain1,power domain2,但是domain0是domain1和domain2的父domain,也就是domain0控制domain1和domain2。
PMU和device1有3個(gè)P_Channel接口,但是都是在power domain0中。


識(shí)別二維碼添加老師
領(lǐng)取IC學(xué)習(xí)資料
B站粉絲專享福利,報(bào)暗號(hào)“B站IC芯博士”即享專屬福利
