PCIe板卡辅助信号解析

news2024/9/21 14:41:54

1.简介

PCIe Add-in卡借助PCIe插槽上的辅助信号,实现了很多系统级的功能,比如唤醒、复位、调试、热插拔等功能。具体的辅助信号有REFCLK-/REFCLK+、PERST#、WAKE#、SMBCLK、SMBDAT、JTAG、CLKREQ#及PRSNT1#和PRSNT2#等,具体的作用如下:

  1. REFCLK-/REFCLK+: 是一组低压差分信号,PCIe主板提供的REFCLK信号必须满足PCIe规范中的要求。
  2. PERST#: 信号用于复位PCIe设备,同时也指示了系统主电源的稳定时间。
  3. WAKE#: 信号用于给PCIe主机提供复位信号,由PCIe设备驱动,当PCIe主机接收到该信号后,需要向PCIe设备提供主电源和参考时钟,以激活PCIe链路。WAKE#信号也可以和OBFF机制配合使用,当PCIe主机需要调整设备的缓冲行为(如刷新或填充缓冲区)时,可以通过WAKE#信号通知PCIe设备。这样,设备能够在不需要发送或接收数据时进入更低功耗的状态,并在必要时迅速被唤醒以处理数据。
  4. CLKREQ#: 信号由PCIe设备驱动,用于向PCIe主机请求参考时钟,以便于PCIe接口发送和接收数据。 当PCIe设备处于L1 PM Substates状态时,CLKREQ#拉高,参考时钟被关闭,此时PCIe链路处于不活跃状态,PCIe主机或者PCIe设备拉低CLKREQ#后,PCIe设备将退出L1 PM Substates状态。
  5. SMBCLK#: 是SMBus接口的时钟信号。
  6. SMBDAT#: 是SMBus接口的数据信号。
  7. JTAG (TRST#, TCLK, TDI, TDO, and TMS) : 这些引脚用于支持IEEE Standard 1149.1规定的测试访问端口和边界扫描架构(JTAG)。对于PCIe设备来说是可选的。
  8. PRSNT1#和PRSNT2#: 是PCIe卡热插拔探测引脚。
    下面主要分析一下REFCLK-/REFCLK+、PERST#、WAKE#信号。

2.REFCLK-/REFCLK+

如下图所示,为了减少抖动和适配未来的制造工艺,参考时钟使用低电压摆幅和差分信号。每个时钟的标称单端摆幅为0V - 0.7V,时钟频率为100MHz ± 300PPM。

参考时钟
参考时钟在系统主板上的每个连接器之间点对点布线,且在系统主板上布线距离不超过15英寸(38.1厘米)。在接收端,数据和时钟的传输延迟误差必须小于12纳秒。参考时钟最大失配和通道最大长度的组合将导致约9-10纳秒的延迟误差。从时钟源到连接器之间,参考时钟REFCLK-和REFCLK+两根信号线的长度误差必须小于0.005英寸(0.0127厘米),并且需要适当地远离其他非时钟信号线,以避免过度串扰。

3.PERST#

PERST#信号用于指示电源是否在其规定的电压容许范围内并且稳定。在电源稳定后,它还会初始化PCIe设备的状态机和其他逻辑。

3.1.ACPI电源状态

PERST#信号动作通常伴随着系统电源变化,因此需要先介绍一下电源状态。ACPI规范定义了一系列的电源状态,以协调操作系统和硬件之间的电源管理。这些状态分为几个不同的类别,包括全局状态(G状态)、系统状态(S状态)、设备状态(D状态)和处理器状态(C状态)。 以下是一些常见的ACPI电源状态的表格概览:

类别状态描述
全局状态G0 (S0)工作状态,设备全功率运行
全局状态G1睡眠状态,包含多个子状态:S1、S2、S3、S4
全局状态G2 / S5关机状态,系统不工作但仍供电
全局状态G3机械关机,无任何供电
系统状态S0开机状态,系统完全运行
系统状态S1睡眠状态:处理器停止执行,较快唤醒
系统状态S2睡眠状态:处理器关闭,电源较少部分,唤醒较快
系统状态S3睡眠状态:标准睡眠模式,保存到 RAM
系统状态S4睡眠状态:休眠模式,保存到磁盘
系统状态S5关机状态,系统关闭,但电源仍然供给到某些部件
设备状态D0设备完全启动(ON)状态
设备状态D1, D2部分睡眠状态,供不同程度的电源,可能保持某些上下文
设备状态D3完全关闭(OFF)状态,但仍然供有待机电源
处理器状态C0处理器全速运行
处理器状态C1轻度休眠,处理器停止指令执行,快速恢复
处理器状态C2较深睡眠,电力优化关闭更多硬件部件,恢复较慢
处理器状态C3更深睡眠,可能关闭所有处理器缓存,恢复时间更长

3.2.Initial Power Up (G3 to S0)

下图描述了PCIe板卡从上电到稳定工作时,辅助信号、电源及PCIe链路的时序图。具体的流程如下(有些时间CEM规范做了明确定义,有些则没有,明确定义的时间本文将会写出具体时间):

  1. 如果系统和PCIe板卡支持3.3Vaux辅助电源,则需要先给3.3Vaux上电,此时PERST#可以一直保持低或者高。
  2. 3.3Vaux辅助电源稳定后,PCIe主机拉低PERST#,使PCIe设备处于复位状态。
  3. 3.3Vaux辅助电源稳定后,延时1,SMbus开始工作。若没有3.3Vaux辅助电源,则从3.3/12V主电源稳定后开始计时。
  4. 3.3/12V主电源稳定后,延时2(TPVPERL)拉高PERST#,TPVPERL为100毫秒,主电源稳定后参考时钟开始输出,参考时钟稳定需要时间3(TPERST-CLK ),TPERST-CLK为100微秒。因此PERST#拉低的时间至少为TPVPERL + TPERST-CLK = 100.1毫秒。
  5. 参考时钟稳定后,至少需要时间4,PCIe Link才能正常工作。
  6. 参考时钟稳定后,至少需要时间5,JTAG才能正常工作。

Initial_Power_Up
刚开始上电的时候,Link Control register(配置空间寄存器)的Active State Power Management Control(ASPM Control)位域的硬件状态必须设置为0,后续该位域只能由系统的BIOS或者操作系统更改,其他软件不能更改。

3.3.Power Management States (S0 to S3/S4 to S0)

如果系统要进入S3或者S4状态,则需要在PCIe插槽改变电源状态之前,将PCIe设备设置到D3hot状态,且PCIe链路为L2状态。随后,PCIe插槽的主电源和参考时钟将会关闭,直到被唤醒。由于主电源被切断,PCIe设备的状态将由D3hot转变为D3cold。PCIe设备处于D3cold状态时,3.3Vaux辅助电源还会继续供电。一旦唤醒事件到来,电源管理系统将恢复主电源和参考时钟。最后等到主电源和参考时钟稳定后,拉高PERST#。具体的流程如下:

  1. 系统在准备进入S3/S4状态之前,需要先使PCIe Link处于不活跃状态,即PCIe Link处于L2状态。
  2. PCIe Link处于不活跃状态起经过时间1,拉低PERST#,使PCIe设备进入复位状态。
  3. 拉低PERST#起经过时间2,系统开始切断主电源和参考时钟,主电源和参考时钟处于不稳定状态。
  4. 拉低PERST#起经过时间3,JTAG需要停止工作,处于不活跃状态。
  5. 唤醒时间到来,系统开始给主电源上电,然后输出参考时钟,经过时间4,PCIe设备恢复到正常工作状态。
  6. 系统从S0状态到S3/S4状态,再到S0状态,PERST#拉低的最短时间为5(TPERST),TPERST为100微秒。
    Power_Management_States
    PCIe设备从D3cold状态恢复,Link Control register(配置空间寄存器)的Active State Power Management Control(ASPM Control)位域的硬件状态必须设置为0,后续该位域只能由系统的BIOS或者操作系统更改,其他软件不能更改。

3.4.Power Down

如下图所示,考虑到容许误差,为了判断电源是否有效,CEM规范定义了两个阈值范围。3.3V和3.3Vaux电源阈值范围为2.5V-3.00V,12V电源阈值范围为9.7V-11.04V。当系统规定了3.3V、3.3Vaux、12V电源的阈值,如果电源电压低于该值,则说明电源处于不稳定状态,需要系统做下电处理。

Power_Down
PCIe设备掉电时,各个信号的时序图如下图所示。具体的流程如下:

  1. 在PCIe插槽主电源掉电之前,先要使PCIe Link处于不活跃状态,PCIe设备处于D3hot状态。
  2. PCIe Link处于不活跃状态起经过时间段1,拉低PERST#,使PCIe设备进入复位状态。
  3. 拉低PERST起经过时间段2,PCIe插槽控制主电源开始掉电。
  4. 拉低PERST起经过时间段3,参考时钟停止输出,同时JTAG也停止工作,时间段3大于时间段2。
  5. 时间段4(TFAIL)表示意外断电的情况下,PERST#拉低需要的时间。TFAIL的最大时间为500纳秒。
    Power_Down

4.WAKE#

TODO…

5.电压参数

电压参数

6.时间参数

时间参数

参考资料

  1. PCI Express® Card Electromechanical Specification Revision 4.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Facebook国内企业户、海外户、国内二不限户以及三不限户区别何在?

Facebook广告账户的类型和设置对于企业在不同市场中的广告活动至关重要。了解国内企业户、海外企业户,以及国内二不限户和三不限户的区别,可以帮助你更好地选择和管理广告账户。以下是对这些账户类型的详细解析。 一、Facebook海外企业广告账户 海外企业…

kettle的Javascript组件获取T-1天和T+1天

// 获取T-1的时间 var currentDate new Date(); currentDate.setDate(currentDate.getDate() - 1); var currentYear currentDate.getFullYear(); var currentMonth (0 (currentDate.getMonth() 1)).slice(-2); var currentDay (0 currentDate.getDate()).slice(-2); va…

每日OJ_牛客HJ52计算字符串的编辑距离(dp)

目录 牛客HJ52计算字符串的编辑距离(dp) 解析代码 牛客HJ52计算字符串的编辑距离(dp) 计算字符串的编辑距离_牛客题霸_牛客网 解析代码 计算字符串的编辑距离(也称为Levenshtein距离)是一个经典的动态规…

java SE--Lambda表达式和Stream流

一.Lambda表达式 1.Lambda表达式的简介 Lambda表达式是 jdk1.8 引入的一个新特性,它是函数式编程在Java中的一种体现。也是jdk1.8最值得学习的新特性,另一个就是流式编程。 1.Lambda表达式的引入简化了匿名内部类的语法,让代码更加简洁明了…

4.3.2 图像去畸变

4.3.2 图像去畸变 参考教程: 相机标定(4) 矫正畸变 undistort()和initUndistortRectifyMap()-CSDN博客 学习笔记 – opencv图像去畸变_opencv 畸变参数-CSDN博客 下面我们将演示图像去畸变的过程,在OpenCV中提供了一个函数cv:…

买新能源怕自燃?法院这判决我举双手赞成

文 | AUTO芯球 作者 | 雷慢 大快人心!终于有法院为新能源车主做主了, 你们看啊,某新能源车主开车半路自燃,报了保险, 保险公司赔了18万,转身又去告汽车公司, 汽车公司又被法院判决赔偿保险…

【软件逆向】第2课,软件逆向安全工程师之区分应用32位和64位,每天5分钟学习逆向吧!

目标学习使用StudyPE区分应用 在软件逆向中区分应用类型是关键性的一部分 ,只有区分类型后才能选择对应工具进行后续处理。 1.打开StudyPE工具。 2.将我们需要逆向的软件,拖拽到StudyPE中,查看应用信息。 以上用一款视觉AI软件举例&#…

UCOSIII信号量详解

目录 ​编辑 前言 一、信号量的类型 二、信号量的使用方法 2.1创建信号量 2.2请求信号量: 2.3释放信号量: 三、信号量的作用 四、注意事项 五、信号量的API函数 六、代码实现 6.1 创建信号量 6.2 使用信号量 前言 UCOSIII信号量是UCOSIII操作…

【Vue3】路由基础

【Vue3】路由基础 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本…

如何用Python求素数之和

计算两个正整数x&#xff0c;y(x<y&#xff0c;包括x&#xff0c;y)素数和。首先通过isPrime函数来判断一个数是否为素数&#xff0c;再使用primeSum函数来返回素数和。 以下为源码&#xff1a; def isPrime(n) :for i in range(2,n):if n % i 0:return 0breakelse:return…

在VB.net中,SortedList有什么方法与属性

标题 在VB.net中&#xff0c;SortedList有什么方法与属性 正文 在VB.NET中&#xff0c;SortedList 类是一个基于键值对的集合&#xff0c;它允许元素按照键的顺序进行排序&#xff0c;并可以通过键或索引来访问元素。SortedList 类是 System.Collections.Generic 命名空间中的一…

物流快递外卖管理平台系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设残哥 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目、 源…

python绘制蕨菜叶分形

一花一叶一世界,一草一木一浮生. 使用了四个不同的线性变换&#xff0c;根据概率选择其中一个变换并更新 x 和 y 坐标。然后将生成的绿色点绘制出来&#xff0c;形成一片蕨菜叶。 import numpy as np import matplotlib.pyplot as pltdef fern_fractal(num_points):# 初始化坐…

手把手教你接口性能测试之JMeter性能测试篇

一、Jmeter 简介 Jmeter是由Apache公司开发的一个纯Java开源项目&#xff0c;即可以用于做接口测试也可以用于做性能测试&#xff0c;具备高移植性和扩展性&#xff0c;可以实现跨平台运行&#xff0c;可以实现分布式负载。 采用多线程&#xff0c;允许通过多个线程并发取样或…

【c++】 C语言的输入与输出C++的IO流STL空间配置器

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.C语言的输入与输出 2.流是什么 3.CIO流 3.1 C标准IO流 3.2 C文件IO流 4.stringstream的简单介绍 5.什么是空间配置器 6.为什么需要…

RAG系统优化思路

图片来源&#xff1a;https://huggingface.co/learn/cookbook/zh-CN/rag_evaluation 该图展示了可以从哪些部分去优化RAG。 先摘录一些比较好的思路&#xff1a; https://zhuanlan.zhihu.com/p/681421145 https://www.zhihu.com/question/643138720/answer/3495870046 http…

Spring-data-redis

一、spring-data-redis 介绍 spring-data-jpa spring-data-jdbc spring-data-redis 说明&#xff1a; 在 SpringBoot2.x 之后&#xff0c;原来使用的jedis 被替换为了 lettuce jedis : 采用的直连&#xff0c;多个线程操作的话&#xff0c;是不安全的&#xff0c;如果想要…

vue前后端交互学习问题记录2

1.在使用定时任务时报如下错误&#xff1a;No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration. 看报错是ThreadContext未绑定Secur…

Java调用Python的简单运用

这里提供两种调用方法&#xff1a; 1、通过Jython来实现Java调用Python (目前只支持Python2) 2、通过ProcessBuilder来实现Java执行Python脚本&#xff08;既支持Python2也支持Python3&#xff09; 通过Jython来实现Java调用Python Jython目前只支持Python2 一、准备好Pytho…

如何高效记录并整理编程学习笔记

目录 1.概述 1.1. 选择合适的工具 1.2. 分类整理 1.3. 制定标准格式 1.4. 定期复习和更新 1.5. 利用图形和视觉辅助 1.6. 记录问题和解决过程 1.7. 使用版本控制 1.8. 与他人分享和讨论 2.笔记工具选择 2.1. 印象笔记 2.2. 语雀 2.3. 有道云笔记 2.4. 腾讯文档 …