AMBA低功耗接口Q-channel和P-channel介紹


參考博文:https://www.pianshen.com/article/28741269430/和https://www.pianshen.com/article/47501269331/

Q_Channel

AMBA提供了,低功耗的接口。用於實現power控制功能。目前,AMBA里面,包含2種低功耗接口。

  • Q-Channel:實現簡單的power控制,如上電,下電。
  • P-Channel:實現復雜的power控制,如全上電,半上電,1/4上電等。

ARM引入這2種低功耗接口,是為了滿足不同的應用場景下,對power的控制。

在一些場景下,組件只有兩種power狀態,分別為power-up,power-down。因此對這種組件的power控制,只需要對其上電,斷電即可。用Q-Channel,即可實現。

而在另外的場景下,組件擁有多種power狀態,比如全上電,半上電,1/4上電等。因此對這種組件的power控制,就要復雜很多,不能簡單的對其上電,斷電即可,還需要額外的一些控制。此時,用Q-Channel,就不合適了,需要使用P-Channel。

比如在DynamlQ技術中,引入了L3 cache,並且每個core擁有自己的L1 cache,L2 cache,這樣,整個系統中,cache的容量就變大了,相應的,消耗在cache上的功耗,也增多了。此時,就需要復雜的對cache的power控制,來實現低功耗,比如對L3 cache,1/4上電,也就是只有1/4的L3 cache工作,其余的都斷電,以此來節省功耗。此時,就要用到P-Channel。

 

一、Q-Channel

Q-Channel是從AXI的低功耗接口中,演變過來。但是可以向后兼容。

1、接口

以下是Q-Channel的接口:

分為device端和power controller端(下文均簡稱為PMU)。device端,就是需要被電源控制的組件,比如core,外設等。PMU端,就是提供電源管理的組件。

在Q-Channel中,將device的power狀態,分成了2種,

  • operational狀態: device處於工作狀態,簡單理解為上電狀態,下文稱為上電狀態
  • quiescent狀態:device處於停止狀態,簡單理解為斷電狀態,下文稱為斷電狀態

接口如下:

信號

說明

QACTIVE

提供給device,向PMU發送power請求,更改自己的power狀態

為高,表示device需要PMU將自己置為上電狀態

為低,表示device需要PMU將自己置為斷點狀態

QREQn

power controller發送power請求信號

為高,表示上電

為低,表示斷電

QACCEPTn

為高,表示device接受外部power請求

QDENY

為高,表示device拒絕外部power請求

2、Q-Channel接口的握手狀態

ARM對Q-Channel的interface,定義了幾種握手狀態:

  • Q_RUN:      device處於上電狀態。
  • Q_REQUEST: device處於上電狀態,但是在idle狀態時,可以接收power request,進入斷電狀態。
  • Q_STOPPED: device進入了斷電狀態。
  • Q_EXIT: 等待被提供時鍾或者power的狀態。當device得到外部提供的時鍾或者power時,將QACCEPTn拉高,進入Q_RUN狀態。
  • Q_DENIED:     device拒絕外部power的請求,不進入斷電狀態,而保持上電狀態。
  • Q_CONTINUE: PMU在Q_DENIED狀態后,將QREQn拉高后的狀態。

    以下是編碼:

下圖是各個握手狀態的切換:

對於握手信號,有以下的規則:

  • QREQn只能在QACCEPTn為高並且QDENY為低時,才可以從高變為低。
  • QREQn滿足以下條件,才可以從低變為高
    • QACCEPTn和QDENY都為低
    • QACCEPTn和QDENY都為高
  • QACCEPTn只能在QREQn和QDENY都為低情況下,才可以從高變為低
  • QACCEPTn只能在QREQn和QDENY都為高情況下,才可以從低變為高
  • QDENY只能在QREQn和QACCEPTn都為高情況下,才可以從高變為低
  • QDENY只能在QREQn為低並且QACCEPTn為高情況下,才可以從低變為高

上面的這些原則,在設計Q-Channel時,需要遵守的。

3、Q_Channel的握手協議

3.1、device接受PMU的power請求

以下是握手協議時序圖:

在T1,QREQn和QACCEPTn為高,Q_Channel進入Q_RUN狀態。

在T2,QREQn為低,PMU請求device進入斷電狀態,然后等待外設響應,此時Q_Channel進入Q_REQUEST狀態。

在T3,QACCEPTn為低,表示device接收PMU的請求,將自己進入斷電狀態。此時Q_Channel進入Q_STOPPED狀態。

在T4,QREQn為高,PMU請求device進入上電狀態,然后等待外設響應。此時Q_Channel進入Q_EXIT狀態。

在T5,QACCEPTn為高,表示device接收PMU的請求,將自己進入上電狀態。此時Q_Channel進入Q_RUN狀態。

3.2、device拒絕PMU的power請求

當外部PMU給device發送power請求,device可以拒絕該power請求。PMU收到device的拒絕響應后,應取消該power請求。

在T1,QREQn和QACCEPTn為高,Q_Channel進入Q_RUN狀態。

在T2,QREQn為低,PMU請求device進入斷電狀態,然后等待外設響應,此時Q_Channel進入Q_REQUEST狀態。

在T3,QDENY為高,表示device拒絕PMU的請求,自己保持上電狀態。此時Q_Channel進入Q_DENIED狀態。

在T4,PMU接收到device的拒絕響應,將QREQn拉高,PMU請求device進入上電狀態,然后等待外設響應。此時Q_Channel進入Q_CONTINUE狀態。

在T5,QDENY為低,表示device接收PMU的上電請求,將自己保持上電狀態。此時Q_Channel進入Q_RUN狀態。

4、device復位信號與Q_Channel的結合

復位信號,需要和Q_Channel的信號,進行組合。一般來說,復位信號,也會由PMU來控制。

組合分為以下2種情況。

4.1、RESETn復位無效時,QREQn為低

    T2時刻,RESETn為高,復位取消。

T3時刻,QREQn為高,PMU向device請求上電。Q_Channel進入Q_EXIT狀態。

T4時刻,QACCEPTn為高,device接受PMU的上電請求。Q_Channel進入Q_RUN狀態。

T5時刻,QREQn為低,PMU向device請求斷電,Q_Channel進入Q_REQUEST狀態。T6時刻,QACCEPTn為低,device接受PMU的斷電請求。Q_Channel進入Q_STOPPED。

T7時刻,將RESETn拉低。

4.2、RESETn復位有效時,QREQn為高

T2時刻,QREQn拉高,PMU向device請求上電。Q_Channel進入Q_EXIT狀態。

T3時刻,因為RESETn為低,復位有效,device將QACCEPTn保持為低,Q_Channel保持Q_EXIT狀態。

T4時刻,因為RESETn為高,復位無效。device將QACCEPTn拉低,響應PMU的上電請求。Q_Channel進入Q_RUN狀態。

T5時刻,QREQn拉低,PMU向device請求斷電,Q_Channel進入Q_REQUEST狀態。

T6時刻,device將QACCEPTn拉低,響應PMU的斷電請求。Q_Channel進入Q_STOPPED狀態。

T7時刻,RESETn拉低。

5、QACTIVE

QACTIVE,是提供給device,給PMU發送power請求的信號。可以由多個來源的組合。如果為高,那么PMU要給自己上電,並且之后,不能給自己斷電。

QACTIVE和握手信號(QREQn,QACCEPTn,QDENY)是獨立開的。

5.1、請求上電和請求下電

T1時刻,device將QACTIVE拉高,向PMU發起退出斷電請求。T2時刻,PMU將QREQn拉高,Q_Channel進入Q_EXIT狀態,T3時刻,進入Q_RUN狀態。

    T4時刻,device將QACTIVE拉低,device向PMU發起進入斷電請求。T5時刻,PMU將QREQn拉低,Q_Channel進入Q_REQUEST狀態,在T6時刻,進入Q_STOPPED狀態。

5.2、PMU不允許斷電

T1時刻,device將QACTIVE拉高,向PMU發起上電請求。T2時刻,PMU將QREQn拉高,Q_Channel進入Q_EXIT狀態,T3時刻,進入Q_RUN狀態。之后,device處於上電狀態。

T4時刻,PMU將QREQn拉低,PMU想讓device進入斷電狀態,但是QACTIVE為高,表示device要一直處於上電狀態。因此QACCEPTn持續保持高,Q_Channel一直維持在Q_REQUEST狀態。device維持在上電狀態。

T5時刻,因為之前QACTIVE拉低,device想進入斷電狀態,device將QACCEPTn拉低,響應PMU的斷電請求,然后Q_Channel進入Q_STOPPED狀態。device進入斷點狀態。

6、Q_Channel的實現

一般來說,device和PMU的時鍾是異步時鍾。因此,需要一些同步化。

下圖是同步化的框圖:

ARM提供了以下的一些實現指導:

  • 被使用的所有信號,都需要進行同步化
  • 只有當Q_Channel進入Q_STOPPED狀態是,才可以將時鍾和power給關掉
  • 為了保證握手信號的正確性,QREQn,QACCEPTn,QDENY需要使用寄存器直接輸出
  • QACTIVE使用寄存器直接輸出,或者是相關寄存器輸出的組合輸出。ARM強烈建議組合輸出,使用或門。

7、Q_Channel的向后兼容

Q_Channel是從AXI的低功耗結構,演化過來。但是Q_Channel也可以兼容AXI的低功耗接口。

如下圖,device使用AXI的低功耗接口,PMU使用Q_Channel。只需要按照如下的連接進行連接即可。

如下圖,device使用Q_Channel,PMU使用AXI的低功耗接口,只需要按照如下的連接進行連接即可。

 

P_Channel

為了滿足復雜的power管理的需求,arm提供了P_Channel的低功耗接口,來滿足這樣的應用場景。

 

一、P_Channel

P_Channel,提出了一個概念,叫power state transition,power狀態的切換。在P_Channel的應用場景中,power的狀態有很多,這個是實現自己定義的。power的各個狀態之間,是可以切換的。

2個最基本的狀態:

  • lower-power狀態:在這個狀態下,power消耗比較少,device處於低功耗狀態(具有部分功能)
  • higher-power狀態:在這個狀態,power消耗比較大,device處於正常狀態(具有完整功能)

1、接口

以下是P_Channel接口。

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

信號

說明

驅動端

PACTIVE [N-1:0]

提供wakeup功能

device

PSTATE [M-1:0]

需要切換的目的power狀態

PMU

PREQ

為高,表示power狀態切換請求

PMU

PACCEPT

為高,表示device接受power狀態切換請求

device

PDENY

為高,表示device拒絕power狀態切換請求

device

PACCEPT和PDENY在握手中,只能有一個為高。PACCEPT表示接受請求,PDENY表示拒絕請求。

PACCEPT,PDENY,PREQ,PSTATE,必須是從寄存器直接輸出。

2、P_Channel接口握手狀態    

對P_Channel的接口,arm也定義了一些握手狀態。不過狀態,有加入了RESETn信號的影響。

  • P_RESET: device處於reset狀態
  • P_STABLE: device處於非reset狀態,並且PMU沒有發送power狀態切換請求
  • P_REQUEST: PMU向device發送power狀態切換請求
  • P_ACCEPT: device接受PMU的power狀態切換請求
  • P_DENIED: device拒絕PMU的power狀態切換請求
  • P_COMPLETE: device接受PMU的power狀態切換請求后,PMU取消power狀態切換請求
  • P_CONTINUE: device拒絕PMU的power狀態切換請求后,PMU取消power狀態切換請求

編碼:

以下是狀態轉移圖:

握手協議規則:

  • PREQ只有在PACCEPT和PDENY都為低情況下,才可以從低變為高
  • PREQ要滿足以下的任意條件,才可以從高變為低:
    • PACCETP是高,PDENY為低
    • PACCEPT為低,PDENY為高
  • PSTATE滿足以下的任意條件,才可以變化:
    • PREQ,PACCEPT,PDENY都為低
    • PREQ和PDENY為高,PACCEPT為低
  • PACCEPT只有在PREQ為高,並且PDENY為低,才可以從低變為高
  • PACCETP只有在PREQ為低,並且PDENY為低,才可以從高變為低
  • PDENY只有在PREQ為高,並且PACCEPT為低,才可以從低變為高
  • PDENY只有在PREQ為低,並且PACCEPT為低,才可以從高變為低

3、P_Channel的握手協議

握手協議,涉及到PREQ,PSTATE,PACCEPT,PENDY這4個信號。

3.1、device接受power狀態切換

下圖是該時序圖:

在T2時刻之前,P_Channel處於P_STATBLE狀態。

T2時刻,PMU拉高PREQ,將PSTATE置為STATE B。向device發送power狀態切換請求,請求將device切換到STATE B的power狀態。P_Channel進入P_REQUEST狀態。

T3時刻,device將PACCEPT拉高,表示接受PMU的power狀態切換請求。P_Channel進入P_ACCEPT狀態。

T4時刻,PMU接收device的PACCEPT響應,拉低PREQ,取消請求。P_Channel進入P_COMPLETE狀態。

T5時刻,device將PACCEPT拉低,表示完成power狀態切換。P_Channel進入P_STABLE狀態。

3.2、device拒絕power狀態切換

下圖是時序圖:

T2時刻以前,P_Channel處於P_STABLE狀態。

T2時刻,PMU將PREQ拉高,將PSTATE置為STATE B。向device發送power狀態切換請求,請求將device切換到STATE B的power狀態。P_Channel進入P_REQUEST狀態。

T3時刻,device將PDENY拉高,表示拒絕PMU的power切換請求。P_Channel進入P_DENIED狀態。

T4時刻,PMU接收到device的PDENY響應,將PREQ拉低,取消請求,並且把PSTATE置為STATE A。P_Channel進入P_CONTINUE狀態。

T5時刻,device將PDENY拉低,P_Channel進入P_STABLE狀態。

4、device的復位和初始化

device在復位時,必須將PACCEPT和PDENY置為低,但對PACTIVE沒有要求。

P_Channel的狀態為P_STABLE時,device的復位信號,才可以設置為有效。

當device的復位無效時,device要進入初始化,此時PMU要設置PSTATE信號值,device會在復位之后,采樣該信號值,從而采用合適的初始化流程。PSTATE要在復位信號無效后要保持穩定。

device,要提供一個初始化周期時間,tinit。用來表示,復位之后,PSTATE需要保持多久時間,供device初始化使用。PSTATE在tinit時間之內,必須要保持穩定。

以下是時序圖:

T1時刻之前,RESETn為低,復位有效,P_Channel處於P_RESET狀態。

T1時刻,RESETn為高,PMU將PSTATE置為STATE A。P_Channel進入P_STABLE狀態。

T2時刻,由於tinit的限制,PMU要將PSTATE一直保持在STATE A,以便device正確的初始化。device必須要在tinit時間內,采樣PSTATE。此后,PMU就可以發送power切換請求了。

T3時刻,PMU將PREQ置高,並且將PSTATE置為STATE B,發送power切換請求。P_Channel進入P_REQUEST狀態。

T4時刻,device將PACCEPT拉高,表示接受PMU的power狀態切換請求。P_Channel進入P_ACCEPT狀態。

T5時刻,PMU接收device的PACCEPT響應,拉低PREQ,取消請求。P_Channel進入P_COMPLETE狀態。

T6時刻,device將PACCEPT拉低,表示完成power狀態切換。P_Channel進入P_STABLE狀態。

T7時刻,P_Channel在P_STATBLE狀態,可以進行復位,外部拉低RESETn,P_Channel進入P_RESET狀態。

下圖,展示了,當復位時,PMU發送power切換情況的時序圖。

T1時刻,PMU將PREQ拉高,並置PSTATE為STATE A,但是復位信號有效,device不接收PMU請求。P_Channel保持為P_RESET狀態。

T2時刻,復位信號釋放,因為PREQ為高,P_Channel進入P_REQUEST狀態。device接收PMU的power切換請求。

之后的就和上面的分析原理是一樣的了。

下圖,展示了,復位后,PMU發送使device進入STATE A的power狀態請求,當該轉換完成后,PMU又繼續發送使device進入STATE B的power狀態請求。

PMU在發送下一個power切換請求前,必須保證上一個power切換請求,傳輸完畢。

5、多個power狀態切換

利用P_Channel,PMU可以使device,來回切換不同的power狀態。

在T0,device處於STATE A狀態。

在T1到T4,通過P_Channel,使device進入STATE B狀態。在T4,P_Channel進入P_STABLE狀態。

在T5-T8,通過P_Channel,使device進入STATE C狀態。在T8,P_Channel進入P_STABLE狀態。

6、PACTIVE

PACTIVE,提供給device給PMU發送請求。PACTIVE的每一個bit,表示一種請求。bit為高,表示device發送請求給PMU,讓PMU處理,bit為低,表示device沒有發送請求給PMU處理。

PACTIVE和握手協議,是獨立開的。PACTIVE是設計自定義的,請求完全自己定義。當然,也可以不使用PACTIVE,如果不是用PACTIVE,需要將PACTIVE置為0。

以下是PACTIVE的例子:

PACTIVE有3個bit,每個bit,映射到一個power狀態,MSB具有高優先級。

  • PACTIVE[2]: STATE C
  • PACTIVE[1]:     STATE B
  • PACTIVE[0]: STATE A

T1時刻,device將PACTIVE設置為3'b011,表示device向PMU發送power切換請求,將自己切換為STATE B。

PMU接收到device的請求后,從T2到T5,向device發送power切換請求,並且切換到STATE B狀態。最后P_Channel進入P_STABLE狀態。

T6時刻,device將PACTIVE設置為3'b111,表示device向PMU發送power切換請求,將自己切換為STATE C。

PMU接收到device的請求后,從T7到T10,向device發送power切換請求,並且切換到STATE C狀態。最后P_Channel進入P_STABLE狀態。

7、對於device,需要提供的信息

為了PMU的設計的正確性,device需要向PMU提供以下的一些信息:

  • device支持的power狀態,包括以下:
    • PSTATE定義和編碼
    • PACTIVE每個bit代表的請求
    • 用於初始化power狀態,推薦的PACTIVE輸出
    • PACTIVE需要被忽略,或者一直置0的bit信息
  • power狀態的切換,包括以下:
    • power狀態切換之后的device行為
    • device拒絕power狀態切換的條件
  • 復位釋放后,用於初始化device的PSTATE的合理值
  • tinit值

8、實現

對於device和PMU來說,有各自的時鍾,因此他們的時鍾,是當成異步來進行處理的,所以需要同步化的操作。

下圖展示了,P_Channel的實現框圖:

對於PSTATE,PREQ,PACCETP,PDENY,需要從寄存器直接輸出,在接收端,需要使用同步器,對異步輸入信號進行同步化輸出。

對於PACTIVE,如果是多個來源的組合,ARM建議使用或門來實現。並且每個對PACTIVE貢獻的來源,必須是寄存器直接輸出。

 

9、P_Channel使用例子

以下是P_Channel使用的2個例子。

9.1、獨立的power domain使用P_Channel

device0處於power domain0,PMU使用PD0來控制。

device1處於power domain1和power domain2,PMU使用PD1和PD2來分別控制。

9.2、父子關系的power domain使用P_Channel

device1內部有3個power domain,分別為power domain0,power domain1,power domain2,但是domain0是domain1和domain2的父domain,也就是domain0控制domain1和domain2。

PMU和device1有3個P_Channel接口,但是都是在power domain0中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM