1.简介
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制。此时,用Q-Channel就不合适了,需要使用P-Channel。
2.Q-Channel
Q-Channel是从AXI的低功耗接口中演变过来,但是可以向后兼容。
Q-Channel通过独立于设备活动指示的握手机制来简化时钟域交叉。
2.1.接口
接口两侧分别为device端和power controller端(PMU)。device端是需要被电源控制的组件,比如core、外设等。PMU端,就是提供电源管理的组件。
在Q-Channel中,将device的power状态,分成了2种:
operational状态: device处于工作状态或上电状态
quiescent 状态:device处于静默状态或断电状态
接口信号说明如下:
信号 | 说明 | 补充 |
QACTIVE | 作为device向PMU的power请求的提示信号。 高为上电请求,低为提示信号但不一定接受断电。 | 独立信号,与握手机制无关。 |
QREQn | PMU向device发送power请求信号。 高为上电,低为断电。 | 请求状态有三种: 断电→上电 上电→保持 上电→断电 |
QACCEPTn | device对PMU的power请求的接受信号。 高为上电接受,低为断电接受。 | 高表示device已上电,低表示device可(已)断电。 |
QDENY | device对PMU的power请求的拒绝信号。 高为断电拒绝,低为上电拒绝。 | 高表示device处于busy状态,低表示device处于idle状态。 |
2.2.握手状态
对于Q-Channel的接口,定义了以下集中握手状态:
握手信号 | 握手状态 Interface State | 描述 Description | ||
QREQn | QACCEPTn | QDENY | ||
0 | 0 | 0 | Q_STOPPED | device已进入quiescent状态。 在此唯一状态下,PMU不保证接口管理的任何时钟或电源的可用性。 |
1 | 0 | 0 | Q_EXIT | PMU保证已供电,device等待被上电的状态。 当device上电后,置位QACCEPTn高以进入Q_RUN态。 |
1 | 1 | 0 | Q_RUN | device处于上电且正常运行状态。 |
0 | 1 | 0 | Q_REQUEST | device处于上电且正常运行状态。 但当device空闲(idle)时被要求进入quiescent状态。 |
0 | 1 | 1 | Q_DENIED | device拒绝PMU断电请求且保持上电且正常运行状态。 PMU必须拉高QREQn。 |
1 | 1 | 1 | Q_CONTINUE | PMU在Q_DENIED状态后,将QREQn拉高后的状态。device处于上电且正常运行状态。 |
x | 0 | 1 | Unused(illegal) | 不存在 |
下图是各个握手状态的切换:
握手信号规则如下:
•当QACCEPTn为高且QDENY为低时,QREQn只能从高转换为低。
•QREQn只能在以下任一情况下从低电平转换为高电平:
-QACCEPTn和QDENY均为低。
-QACCEPTn和QDENY均为高。
•当QREQn为低且QDENY为低时,QACCEPTn只能从高转换为低。
•当QREQn为高且QDENY为低时,QACCEPTn只能从低转换为高。
•当QREQn为高且QACCEPTn为高时,QDENY只能从高转换为低。
•当QREQn为低且QACCEPTn为高时,QDENY只能从低转换为高。
2.3.握手协议
2.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状态。
2.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状态。
2.4.复位操作
复位时,device必须:
同时驱动QACCEPTn和QDENY为LOW。
QACTIVE可重置LOW(低)或HIGH(高)。如果设备必须在退出复位时执行启动操作,则可以重置QACTIVE HIGH,否则建议将QACTIVE重置为LOW。
PMU可以通过以下任一方式解除设备复位:
QREQn LOW,接口处于Q_STOPPED状态。
QREQn HIGH,接口处于Q_EXIT状态,前提是满足时钟或电源保证。
当接口处于Q_STOPPED状态或控制器和设备同时复位时,控制器只能断言设备复位。这与在功率边界隔离所有信号LOW的建议一致。
2.5.QACTIVE
QACTIVE是提供给device向PMU发送power请求的信号,可以由多个来源的组合。如果为高,那么PMU要给自己上电,并且之后不能给自己断电。
QACTIVE和握手信号(QREQn,QACCEPTn,QDENY)是独立开的。
2.5.1.请求上电和请求断电
时序图如下:
T1时刻,device将QACTIVE拉高,向PMU发起退出断电请求。T2时刻,PMU将QREQn拉高,Q_Channel进入Q_EXIT状态。T3时刻,device拉高QACCEPTn,进入Q_RUN状态。
T4时刻,device将QACTIVE拉低,device向PMU发起进入断电请求。T5时刻,PMU将QREQn拉低,Q_Channel进入Q_REQUEST状态,在T6时刻,进入Q_STOPPED状态。
2.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进入断点状态。
2.6.接口的同步
一般来说,device和PMU的时钟是异步时钟。因此需要一些同步化。下图是同步化的框图:
Q-Channel实现指导:
被使用的所有信号,都需要进行同步;
只有当Q_Channel进入Q_STOPPED状态时,才可以将时钟和power给关掉;
为了保证握手信号的正确性,QREQn,QACCEPTn,QDENY需要使用寄存器直接输出;
QACTIVE使用寄存器直接输出,或者是相关寄存器输出的组合输出。ARM强烈建议组合输出,使用或门。