PCIe 5.0 spec学习4.2----PCI-PM(part2)

6 D状态

D0

所有function必须支持D0。D0有两个不同的子状态,D0uninitialized和D0active。

D0uninitialized

当一个组件施放conventional reset后,该组件的所有function进入D0uninitialized状态。

当function完成FLR后,该funciton进入D0uninitialized状态。

D0active

配置完成后,function进入D0active状态,即PCIe功能完全运行状态。

spec里对“配置完成”的定义:A Function enters the D0active state whenever any single or combination of the Function's Memory Space Enable, I/O Space Enable, or Bus Master Enable bits have been Set.

D1/D2

D1/D2是可选支持状态。

非D0的所有状态都只能接收configuration和message类型的TLP。

D1/D2比较简单,主要信息见后文的图表。

D3

D3是必须支持的状态。

Function可以通过软件或通过物理移除其电源而转换到D3。在这个意义上,D3被指定成两种状态D3hot和D3cold,前者表示主电源在位,后者表示主电源移除。

D3hot的function可以以软件方式,即写入function的PMCSR寄存器,来转换到D0状态。这个D0可以是D0uninitialized也可以是D0active,取决于软件是否选择保留配置信息(PMCSR中的No_Soft_Reset bit置1表示保留,置0表示不保留)。

D3cold的function可以通过施加主电源并assert fundamental reset,来转换到D0uninitialized状态。

如上,spec的3个图表,对D状态的转换、延时以及跟L状态的关联,梳理得很清楚。

7 链路唤醒

从链路L2重新组建电源和时钟,称为唤醒。

因为L2下设备的主电源处于下电状态,唤醒机制的运作通常需要Vaux。

唤醒的整个需求和流程我总结如下:

  1. 软件需要把Vaux相关的寄存器配好,通常是使能Vaux的使用,并配置需要的电流
  2. 软件使能PMCSR寄存器中的PME_En
  3. 使用两种唤醒机制中的一种触发唤醒动作

唤醒机制有两种:Beacon和WAKE#

Beacon机制使用inband信令来实现唤醒功能,即在TX RX管脚上传递相对低频信号,通常速率在30k到500MHz。

WAKE#机制利用sideband信号来实现唤醒功能,WAKE#是一个OD信号,由请求唤醒的组件发起。

      4.发送PM_PME告诉主机是自己是唤醒源

8 PM系统Message及DLLP

 

上表中,

PM_Enter_L1和PM_Request_Ack用于协商进L1;

PM_Enter_L23和PM_Request_Ack用于协商进L2/L3 Ready;

PM_PME的功能上文介绍唤醒的部分已解释,用于唤醒完成后告诉RC唤醒源;

PME_Turn_Off和PME_TO_Ack用于UC向DC广播关闭PM_PME的发送,然后将链路置入L2/L3 Ready。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值