原文链接:https://blog.csdn.net/weixin_48180416/article/details/115576691

一. 前言

此篇介绍L1低功耗状态。下一篇介绍L1 Substate低功耗状态。

二. 进入L1状态

以下详细介绍下进入L1状态的过程,有两种方法:(1)PCI-PM(2)ASPM。

注:当EP和RC相连时,可以简单的理解Upstream Component=RC,Downstream Component=EP, Upstream Port (USP) =EP,Downstream Port (DSP) =RC

《PCI-PM方法》:

1) Upstream Component(RC)发送CfgWr写PMCSR的PowerState;

2) Downstream Component(EP)收到CfgWr后LTSSM状态机进入L1状态,并做一些进入Electrical idle前的准备工作;

3) DLLP包的交互 PM_Enter_L1 DLLP, PM_Request_Ack DLLP, 其中,Upstream Component收到DLLP后也会做一些进入Electrical idle前的准备工作;

4) 双方物理层进入Electrical idle状态,LTSSM进入L1状态。

《ASPM方法》:

方法一: 支持ASPM L0s,ASPM L1的情况下,链路空闲一段时间后先进入L0s,之后再空闲一段时间后再进入L1,由USP发起,软件只需要配置ASPM相关状态的使能;

方法二:支持ASPM L1,链路空闲一段时间后直接进入L1,由USP发起,软件只需要配置ASPM相关状态的使能;

方法三:支持ASPM L1,软件通过配置USP的寄存器直接发起DLLP,不需要超时后发起。

ASPM由USP发起,需要以下协商的过程:

1) USP通过上述三种方法中的一种发起,USP做一些进入Electrical idle前的准备工作;

2) DLLP包的交互: PM_Active_State_Request_L1 DLLP(USP->DSP), PM_Request_Ack DLLP(DSP->USP), 其中,RC收到DLLP后也会做一些进入Electrical idle前的准备工作;

另外,当RC拒绝进入L1时,发送PM_Active_State_Nak message(DSP->USP),双方进入L0s

3) 双方物理层进入Electrical idle状态,LTSSM进入L1状态。

三. 退出L1状态

以下详细介绍下退出L1状态的过程有很多方法,其中两种常见的方法:

(1)Configuration Request

(2)PME message

注意:DSP和USP任何一方都可以发起退出的操作,并且不需要协商。

方法一:DSP发起Configuration Request退出

1. Software发起CfgWr配置USP PMCSR PowerState为D0;

硬件具体过程:

DSP(RC)的上层会有pending TLP, 导致DSP PHY的PowerState改变,退出Electrical idle状态,同时发送TS1/TS2序列,LTSSM进入recovery状态;USP(EP)检测到退出Electrical idle状态,同样发送TS1/TS2序列,LTSSM进入recovery状态;

2. 双方重新link到L0状态,然后CfgWr成功配置到USP(EP)的PMCSR

方法二:USP发起PME Message退出

1. USP通过配置寄存器发起PME Message;

硬件具体过程:

USP(EP)的上层会有pending TLP, 导致USP(EP) PHY的PowerState改变,退出Electrical idle状态,同时发送TS1/TS2序列,LTSSM进入recovery状态;DSP(RC)检测到退出Electrical idle状态,同样发送TS1/TS2序列,LTSSM进入recovery状态;

2. 双方重新link到L0状态,然后PME Message成功发送给DSP(RC)

3. PME Message隐式路由到RC, RC收到后传递给Power Management Controller,然后通过中断通知软件;

4. 软件利用PME Message包里面的Requester ID发送CfgRd,清除PMCSR PME_Status配置PowerState为D0.

四. 物理层进入和退出L1的过程

L1状态下包含Transmitter Electrical Idle和Receiver Electrical Idle.

Transmitter进入Electrical Idle:

将发送端的差分电压(TXD+ TXD-)变为0,保持接近于Common mode电压,这样可以降低功耗;进入Electrical Idle前先发送EIOS,然后"tri-state output driver"(将TX driver的三态门设为输入)。

有两点需要清楚:

1. EIOS的格式:

答:见PCIe Spec 5.0 Table 4-10 Table 4-11

2. 为什么需要发EIOS?

答:Receiver通过EIOS可以预知接下来需要进入EI状态

3. 进入EI的时间上有什么要求?

答:在PCIe Spec中有以下规定:

1) Transmitter发送完EIOS后8ns内进入EI;

2) EI至少维持20ns

3) EI时差分peak电压为0-20mV

Transmitter退出Electrical Idle:

Gen1: 发送TS1/TS2,Receiver端直接检测电压;

Gen2: 先发送8b/10b Electrical Idle Exit Order Set(EIEOS), EIEOS为低频信号,目的为Receiver端检测到退出EI,再发送TS1/TS2;

Gen3及以上速率: 先发送128b/130b Electrical Idle Exit Order Set(EIEOS), EIEOS为低频信号,目的为:1) Receiver端检测到退出EI  2) Receiver端Recovery状态时建立block alignment,再发送TS1/TS2;

(EIEOS的格式:见PCIe Spec 5.0 Table 4-12)


Receiver进入Electrical Idle:

首先Receiver检测到EIOS后,关闭检测error的逻辑,防止接下来由于链路不可靠报错;

然后Transmitter进入EI后,Receiver根据速率的不同有以下两种方法检测到EI:

Gen1:直接检测电压小于阈值电压;

Gen2及以上: 检测“Inferring Electrical Idle”(隐含是EI的情况),L0状态下缺少Flow Control Update DLLP或SKP Order Set

Receiver退出Electrical Idle:

Gen1: Receiver端直接检测电压,大于65-175mV EI detect threshold;

Gen2及以上速率: Receiver检测到EIEOS退出EI,接收到TS1,用于接收端时钟恢复电路CDR重新同步,实现bit lock, symbol lock和block alignment

注: EI状态下Transmitter可以处于高阻抗模式或低阻抗模式(关闭或开启termination电路逻辑),接收端必须处于低阻抗模式。

个人理解,高阻抗低阻抗为下表的标准,摘自PCIe Spec Transmitter参数和Receiver参数:

PCI Express学习篇:Power Management(二)相关推荐

  1. PCI Express学习篇---Power Management(二)

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115576691 此篇介绍L1低功耗状态.下一篇介绍L ...

  2. PCI Express学习篇---Power Management(一)

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115576240 此篇为Power Managemen ...

  3. PCI Express学习篇:Power Management(一)

    https://blog.csdn.net/weixin_48180416/article/details/115576240 前言 此篇为Power Management概述.下一篇介绍L1低功耗状 ...

  4. PCI Express学习篇---PCIe Ordering Rule

    声明:此文章为原创,转载请注明 转自https://mp.csdn.net/editor/html/115790068 针对同一TC,PCIe有一套Ordering rules. Ordering r ...

  5. PCI Express学习篇---物理层电气特性(三)Transmitter Compliance Test

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/116082488 PHY Electrical Com ...

  6. PCI Express学习篇---物理层LTSSM(三) Recovery.Equalization详解

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/116564143 Link EQ的过程是首次进入8GT ...

  7. 鸟哥的linux私房菜-基础学习篇 读书笔记

    从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...

  8. 浅谈PCI Express体系结构(二)

    PCI总线的信号定义 PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备.这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号.控制信号.仲裁信号.中断信号等多种信号 ...

  9. 【PG054】7 Series Integrated Block for PCI Express IP核的学习

    PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054]7 Series Integrated ...

最新文章

  1. python外包_python怎么找外包
  2. 【组合数学】组合恒等式 ( 递推 组合恒等式 | 变下项求和 组合恒等式 简单和 | 变下项求和 组合恒等式 交错和 )
  3. SQLServer-sysobjects-type
  4. macos可以升级到指定版本吗_iOS14如期而至!重大更新的全新版本,值得升级吗?答案在这...
  5. egg前面加什么_国威说阀:阀门前面为什么加国标美标日标之类的?
  6. Spark SQL(七)之基于用户的相似度公式
  7. 多线程之任务: Task 基础, 多任务并行执行, 并行运算(Parallel)
  8. linux中的管道和重定向
  9. Wet Shark and Two Subsequences
  10. 2019计算机四级网络工程师大纲,计算机四级《网络工程师》考试大纲
  11. 漏扫工具:Docker一键安装AWVS和Nessus
  12. 将中文姓名转为拼音英文名的一种实现
  13. css 元素上下居中
  14. linux 查找pcre源码,pcre使用例子
  15. 用C语言实现小写金额转大写
  16. 移位加密字母C语言,替代密码和置换密码地C语言实现
  17. sc query mysql_SC 命令用法
  18. 使用scp传输文件 Host key verification failed.解决
  19. 紫光同创国产FPGA学习之器件情况
  20. 高频通信电子线路—经典七管半导体超外差式调幅(AM)收音机(恒兴HX-6B)电路深度剖析介绍(上)

热门文章

  1. 简历制作时风格以及排版格式注意哪些方面?
  2. tkinter的容器组件Frame讲解
  3. 在VirtualBox上使用Bosh部署Zookeeper集群
  4. SoftEther 1.0与PacketiX ××× 3.0的区别是什么?
  5. Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案
  6. Spoke to Spoke FlexVirtualPN
  7. 免费资源库_第二篇 文档(1)_数据分析
  8. 华为IMC培训——通信基础
  9. 【Oracle】where时间筛选
  10. Android 仿幕布APP 树形结构富文本笔记功能