1
电子说
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和M的值取决于具体的设计需要,P-Channel规范并没有强制要求。
PREQ、PACCEPT和PDENY构成一个握手接口(PACTIVE不在握手之中),用于管理和保证安全状态转换。P-Channel要求在一次握手转换中,PACCEPT或PDENY中只有一个发生变化。也就是说,PACCEPT和PDENY在握手中,只能有一个为高。
来自设备的PACCEPT和PDENY信号,以及来自控制器的PREQ和PSTATE信号都必须由寄存器直接驱动。拒绝机制的目的是使设备能够保持其当前状态,同时通过该机制可以迅速完成握手。
握手信号状态与PACTIVE位无关。PACTIVE位上的转换不受PREQ、PACCEPT和PDENY上的值的限制。
握手规则如下:
下图是控制器发出从A状态到B状态转换请求,设备接受请求的握手流程:
下图是控制器发出从A状态到B状态转换请求,设备拒绝请求的握手流程:
对于设备端,在复位时,必须将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发出电源转换请求的案例。本例子中:
为了控制器的正确设计,设备端必须提供足够的信息,包括:
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的握手需要考虑子域的电源状态。
全部0条评论
快来发表一下你的评论吧 !