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

PCIe 5.0 spec学习4.2----PCI-PM(part2)_第1张图片

PCIe 5.0 spec学习4.2----PCI-PM(part2)_第2张图片

PCIe 5.0 spec学习4.2----PCI-PM(part2)_第3张图片

如上,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

PCIe 5.0 spec学习4.2----PCI-PM(part2)_第4张图片 

上表中,

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。

你可能感兴趣的:(学习,javascript,开发语言)