提供信息门户网站搭建,软件生成器下载,网站后台系统,wordpress 数据图表化文章目录 1.1 Q_Channel 概述1.2 Q-Channel1.2.1 Q-Channel 接口1.2.2 Q-Channel 接口的握手状态1.2.3 握手信号规则 1.3 P_Channel的握手协议1.3.1 device 接受 PMU 的 power 请求1.3.2 device 拒绝 PMU 的 power 请求 1.4 device 复位信号与 Q _Channel 的结合1.4.1 RESETn 复… 文章目录 1.1 Q_Channel 概述1.2 Q-Channel1.2.1 Q-Channel 接口1.2.2 Q-Channel 接口的握手状态1.2.3 握手信号规则 1.3 P_Channel的握手协议1.3.1 device 接受 PMU 的 power 请求1.3.2 device 拒绝 PMU 的 power 请求 1.4 device 复位信号与 Q _Channel 的结合1.4.1 RESETn 复位无效时 QREQn 为低1.4.2 RESETn 复位有效时 QREQn为高 1.5 QACTIVE1.5.1 请求上电和请求下电1.5.2 PMU不允许断电 1.6 Q_Channel的实现1.7 Q_Channel的向后兼容 转自http://www.lujun.org.cn/?p3634 如有侵权联系删除 1.1 Q_Channel 概述
AMBA提供了低功耗的接口。用于实现power控制功能。目前AMBA里面包含2种低功耗接口。
Q-Channel实现简单的power控制如上电下电P-Channel实现复杂的power控制如全上电半上电1/4上电等。
ARM引入这2种低功耗接口是为了满足不同的应用场景下对power的控制。
在一些场景下组件只有两种 power状态分别为 power-uppower-down。因此对这种组件的power控制只需要对其上电断电即可。用Q-Channel即可实现。
而在另外的场景下组件拥有多种power状态比如全上电半上电1/4上电等。因此对这种组件的power控制就要复杂很多不能简单的对其上电断电即可还需要额外的一些控制。此时用Q-Channel就不合适了需要使用P-Channel。
比如在 DynamlQ 技术中引入了L3 cache并且每个core拥有自己的 L1 cacheL2 cache这样整个系统中cache的容量就变大了相应的消耗在cache上的功耗也增多了。此时就需要复杂的对cache的power控制来实现低功耗比如对L3 cache1/4上电也就是只有1/4的L3 cache工作其余的都断电以此来节省功耗。此时就要用到P-Channel。
1.2 Q-Channel
Q-Channel是从AXI的低功耗接口中演变过来。但是可以向后兼容。
1.2.1 Q-Channel 接口
以下是Q-Channel的接口 分为 Device 端和 Power Controller 端下文均简称为PMU。
Device 端就是需要被电源控制的组件比如 core外设等;PMU端就是提供电源管理的组件。
在 Q-Channel 中将 device 的 power状态分成了2 种:
operational 状态 device处于工作状态简单理解为上电状态下文称为上电状态quiescent状态device处于停止状态简单理解为断电状态下文称为断电状态
Q-channel 的接口信号很简单只有四根如下图所示n代表低电平有效
signalsDescriptionQACTIVE提供给device向 power controller 发送power请求更改自己的 power 状态为高表示 device 需要 PMU 将自己置为上电状态为低表示 device 需要 PMU 将自己置为断点状态QREQnpower controller 发送 power 请求信号为高表示上电为低表示断电QACCEPTn为高表示 device 接受外部 power 请求QDENY为高表示 device 拒绝外部 power 请求
设备端可以通过QACTIVE信号告诉控制器端自己的工作状态QACTIVE为0时表示设备处于静止状态。但是控制器端既可以根据QACTIVE 发出请求 QREQn也可以根据其它的条件发出请求。也就是说控制器并不完全依赖于 QACTIVE。所以我们可以看到 Q-channel 的握手协议其实不依赖 QACTIVE。
对于QACTIVE信号设备端需要有拉高QACTIVE信号的能力。再通俗一点当设备处于时钟关断或者电源关断的状态下需要有能力告诉控制器自己需要启动了。如果设备没有这种能力那就需要在系统级来做一些工作保证设备可以再运转。总之一句话做设计的时候一定要避免设备睡下就再也起不来这种情况。
1.2.2 Q-Channel 接口的握手状态
ARM 对 Q-Channel 的 interface定义了几种握手状态
StateDescriptionQ_RUNdevice 处于上电状态Q_REQUESTdevice 处于上电状态但是在 idle 状态时可以接收 power request进入断电状态Q_STOPPEDdevice 进入了断电状态Q_EXIT等待被提供时钟或者 power 的状态。当 device 得到外部提供的时钟或者 power 时将 QACCEPTn 拉高进入 Q_RUN 状态。Q_DENIEDdevice 拒绝外部 power 的请求不进入断电状态而保持上电状态Q_CONTINUEPMU 在 Q_DENIED 状态后将 QREQn 拉高后的状态
以下是编码 下图是各个握手状态的切换
1.2.3 握手信号规则
对于握手信号有以下的规则 QREQn 只能在 QACCEPTn 为高并且 QDENY 为低时才可以从高变为低 QREQn 满足以下条件才可以从低变为高 QACCEPTn 和 QDENY 都为低QACCEPTn 和 QDENY 都为高。 QACCEPTn 只能在 QREQn 和 QDENY 都为低情况下才可以从高变为低 QACCEPTn 只能在 QREQn 和 QDENY 都为高情况下才可以从低变为高 QDENY 只能在 QREQn 和 QACCEPTn 都为高情况下才可以从高变为低 QDENY 只能在 QREQn 为低并且 QACCEPTn 为高情况下才可以从低变为高。 上面的这些原则在设计P-Channel时需要遵守的 1.3 P_Channel的握手协议
1.3.1 device 接受 PMU 的 power 请求
以下是握手协议时序图
在T1QREQn 和 QACCEPTn 为高Q_Channel 进入 Q_RUN 状态;在T2QREQn 为低PMU 请求 device 进入断电状态然后等待外设响应此时 Q_Channel 进入Q_REQUEST 状态;在T3QACCEPTn 为低表示 device 接收 PMU 的请求将自己进入断电状态。此时 Q_Channel 进入Q_STOPPED 状态;在T4QREQn 为高PMU请求 device 进入上电状态然后等待外设响应。此时 Q_Channel 进入Q_EXIT 状态;在T5QACCEPTn 为高表示 device 接收 PMU 的请求将自己进入上电状态。此时Q_Channel进入Q_RUN状 态。
1.3.2 device 拒绝 PMU 的 power 请求
当外部 PMU 给 device 发送 power 请求device 可以拒绝该 power 请求。PMU 收到 device 的拒绝响应后应取消该 power 请求。
在T1QREQn 和 QACCEPTn 为高Q_Channel 进入 Q_RUN 状态在T2QREQn 为低PMU 请求 device 进入断电状态然后等待外设响应此时 Q_Channel 进入 Q_REQUEST 状态在T3QDENY 为高表示device拒绝PMU的请求自己保持上电状态。此时 Q_Channel 进入 Q_DENIED 状态在T4PMU 接收到 device 的拒绝响应将 QREQn 拉高PMU 请求 device 进入上电状态然后等待外设响应。此时Q_Channel进入 Q_CONTINUE 状态在T5QDENY 为低表示 device 接收 PMU 的上电请求将自己保持上电状态。此时 Q_Channel 进入 Q_RUN 状态。
1.4 device 复位信号与 Q _Channel 的结合
复位信号需要和 Q_Channel 的信号进行组合。一般来说复位信号也会由PMU来控制组合分为下节 2 种情况。
1.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拉低。
1.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拉低。
1.5 QACTIVE
QACTIVE是提供给device给PMU发送power请求的信号。可以由多个来源的组合。如果为高那么PMU要给自己上电并且之后不能给自己断电。
QACTIVE 和握手信号QREQnQACCEPTnQDENY是独立开的。
1.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状态。
1.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 进入断点状态。
1.6 Q_Channel的实现
一般来说device和PMU的时钟是异步时钟。因此需要一些同步化。
下图是同步化的框图 ARM 提供了以下的一些实现指导 被使用的所有信号都需要进行同步化; 只有当Q_Channel进入Q_STOPPED状态是才可以将时钟和power给关掉; 为了保证握手信号的正确性QREQnQACCEPTnQDENY需要使用寄存器直接输出; QACTIVE使用寄存器直接输出或者是相关寄存器输出的组合输出。ARM强烈建议组合输出使用或门。
1.7 Q_Channel的向后兼容
Q_Channel是从AXI的低功耗结构演化过来。但是Q_Channel也可以兼容AXI的低功耗接口。
如下图device使用AXI的低功耗接口PMU使用Q_Channel。只需要按照如下的连接进行连接即可。
如下图device使用Q_ChannelPMU使用AXI的低功耗接口只需要按照如下的连接进行连接即可。