一、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為高情況下,才可以從低變為高
上面的這些原則,在設計P-Channel時,需要遵守的。
3、P_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的低功耗接口,隻需要按照如下的連接配接進行連接配接即可。