【ARM AMBA Q_Channel 详细介绍】

文章目录

    • [1.1 Q_Channel 概述](#1.1 Q_Channel 概述)
    • [1.2 Q-Channel](#1.2 Q-Channel)
      • [1.2.1 Q-Channel 接口](#1.2.1 Q-Channel 接口)
      • [1.2.2 Q-Channel 接口的握手状态](#1.2.2 Q-Channel 接口的握手状态)
      • [1.2.3 握手信号规则](#1.2.3 握手信号规则)
    • [1.3 P_Channel的握手协议](#1.3 P_Channel的握手协议)
      • [1.3.1 device 接受 PMU 的 power 请求](#1.3.1 device 接受 PMU 的 power 请求)
      • [1.3.2 device 拒绝 PMU 的 power 请求](#1.3.2 device 拒绝 PMU 的 power 请求)
    • [1.4 device 复位信号与 Q _Channel 的结合](#1.4 device 复位信号与 Q _Channel 的结合)
      • [1.4.1 RESETn 复位无效时 QREQn 为低](#1.4.1 RESETn 复位无效时 QREQn 为低)
      • [1.4.2 RESETn 复位有效时 QREQn为高](#1.4.2 RESETn 复位有效时 QREQn为高)
    • [1.5 QACTIVE](#1.5 QACTIVE)
      • [1.5.1 请求上电和请求下电](#1.5.1 请求上电和请求下电)
      • [1.5.2 PMU不允许断电](#1.5.2 PMU不允许断电)
    • [1.6 Q_Channel的实现](#1.6 Q_Channel的实现)
    • [1.7 Q_Channel的向后兼容](#1.7 Q_Channel的向后兼容)

转自:http://www.lujun.org.cn/?p=3634
如有侵权,联系删除

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 cache,L2 cache,这样,整个系统中,cache的容量就变大了,相应的,消耗在cache上的功耗,也增多了。此时,就需要复杂的对cache的power控制,来实现低功耗,比如对L3 cache,1/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代表低电平有效):

signals Description
QACTIVE 提供给device,向 power controller 发送power请求,更改自己的 power 状态 * 为高,表示 device 需要 PMU 将自己置为上电状态 * 为低,表示 device 需要 PMU 将自己置为断点状态
QREQn power 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,定义了几种握手状态:

State Description
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 拉高后的状态

以下是编码

下图是各个握手状态的切换

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 请求

以下是握手协议时序图:

  • 在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状 态。

1.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 状态。

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 和握手信号(QREQn,QACCEPTn,QDENY)是独立开的。

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给关掉;

  • 为了保证握手信号的正确性,QREQn,QACCEPTn,QDENY需要使用寄存器直接输出;

  • QACTIVE使用寄存器直接输出,或者是相关寄存器输出的组合输出。ARM强烈建议组合输出,使用或门。

1.7 Q_Channel的向后兼容

Q_Channel是从AXI的低功耗结构,演化过来。但是Q_Channel也可以兼容AXI的低功耗接口。

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

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

相关推荐
学传打活5 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活10 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16818 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心20 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u0103055271 个月前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055271 个月前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝1 个月前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u0103055271 个月前
Java图像处理实战指南
人工智能·1024程序员节
u0103055271 个月前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节