• 【ARM AMBA Q_Channel 详细介绍】



    请阅读【ARM AMBA 总线 文章专栏导读】


    转自: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代表低电平有效):

    signalsDescription
    QACTIVE提供给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,定义了几种握手状态:

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

    以下是握手协议时序图:
    在这里插入图片描述

    • 在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的低功耗接口,只需要按照如下的连接进行连接即可。
    在这里插入图片描述

  • 相关阅读:
    基于javaweb的身体健康管理系统
    Calico 网络故障排查 calico/node is not ready: BIRD is not ready(指定Calico匹配网桥规则)
    每日刷题记录 (十三)
    Python突破浏览器TLS/JA3 指纹
    【LeetCode题目详解】银联-02. 优惠活动系统(c++和python3)
    Linux引入中saltstack介绍与使用
    git remote 使用方法
    net-java-php-python-社会福利保障系统计算机毕业设计程序
    TLR8小分子抑制剂或将治愈自身免疫病 | MedChemExpress
    常见中间件漏洞复现之【Tomcat】!
  • 原文地址:https://blog.csdn.net/sinat_32960911/article/details/134016901