PCIE V3.0物理层协议学习笔记

news2025/1/25 8:57:43

一、说明

PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。

PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。

V3.0版本最大的变更是支持8Gbps的速率,以及为实现带宽翻倍使用了128b/132b的高效编码技术。同时,仍是支持2.5Gbps和5Gbps的传输速率(8b/10b编码)。

分层框图如下,本文主要讲的物理层Physical主要包括逻辑部分和电气部分,主要包括PLL电路、Buffer、阻抗匹配电路、驱动电路、串并转换或并串转换电路及均衡电路等;逻辑子模块的功能是负责数据链路层和电气子模块的交互,例如有多lane的情况下,将从数据链路层的数据拆分,并8b/10b编码给到电气子模块等:

数据结构如下:

传输性能分析:https://zhuanlan.zhihu.com/p/645335755?utm_id=0

二、电气要求

1.发送规范

1)测量环境

2.5Gbps速率可以直接用探头测试,需注意探针要距离TX管脚不超过200mils,且在AC耦合电容之前。环境如下:

5Gbps速率不能直接用探头点测(前端电容、引线长度导致的寄生参数等),需要用SMA直接接到示波器,环境如下:

另外,需要说明的是,以上两种速率也可以用通用的测试夹具进行测试,不过需要通过去嵌等手段去除夹具的影响。

对于8Gbps速率来说,则需要特制的测试板来实现测试目的,环境如下:

其中低抖动时钟源是为了测量抖动时排除外部干扰;Breakout Channel疏导通道是由于芯片管脚(特别是BGA封装)无法直接测试,也因此需要本通道尽量短(不超过6英寸),插损不能超过2dB,回损不能高于15dB(4G频率范围内);Replica Channel复制通道应尽量和疏导通道一样(走线长度、过孔、所在层数等),方便去嵌操作。

2)TX均衡

2.5Gbps和5Gbps两种速率仅支持去加重均衡技术,其中2.5Gbps只支持-3.5dB去加重,5Gbps支持-3.5dB和-6dB两种去加重规格。

8Gbps的TX均衡比较复杂,通过3抽头滤波器实现11中均衡组合(具体均衡实现方法参考:

mp.weixin.qq.com),具体如下:

其中全摆幅需要支持全部均衡,Reduced swing低摆幅仅需支持P1、P3、P4、P5、P6和P9即可。以上组合中的P0和P1也就是2.5G和5G的去加重,因此实现了兼容。

上表中的C就是指的抽头系数,通过不同系数来实现的不同均衡组合,也导致了信号波形的区别:

Vb就是指去加重电压,VC是指预充电压,Vd是指最大幅度电压,Va协议上也没有具体说明,个人认为是normal电压。

3)TX电器规范

协议明确规定了3种速率的TX参数,具体如下:

Symbol

2.5G

5G

8G

备注

UI

399.88~400.12ps

199.94~200.06ps

124.9625~125.0375ps

不包含扩频时钟SCC引入的抖动

VTX-DIFF-PP

0.8~1.2V

0.8~1.2V

全摆幅电压

V TX-DIFF-PP-LOW

0.4~1.2V

0.4~1.2V

reduce摆幅电压

V TX-DE-RATIO-3.5dB

3~4dB

3~4dB

参考Table 4-16

V TX-DE-RATIO-6dB

不支持

5.5~6.5dB

参考Table 4-16

V TX-CM-AC-PP

未规定

≤150mV

≤150mV

AC共模电压峰峰值

V TX-DC-CM

0~3.6V

0~3.6V

0~3.6V

DC共模电压峰峰值

Z TX-DIFF-DC

80~120Ω

≤120Ω

≤120Ω

L TX-SKEW

【500ps,2UI】

【500ps,4UI】

【500ps,6UI】

差分对间偏差

C TX

【75,265nF】

【75,265nF】

【176,265nF】

AC耦合电容

Symbol

8G

备注

V TX-FS-NO-EQ

0.8~1.3V

无TX均衡的全摆幅峰峰值电压

V TX-RS-NO-EQ

≤1.3V

无TX均衡的低摆幅峰峰值电压

V TX-EIEOS-FS

≥250mV

EIEOS期间全摆幅电压最小值

V TX-EIEOS-RS

≥232mV

EIEOS期间低摆幅电压最小值

2.RX规范

1)2.5G的电气规范

具体要求如下:

参数

要求

备注

UI

399.88~400.12ps

不包含SSC

差分电压峰峰值

0.175~1.2V

眼宽

≥0.4UI

单端匹配电阻

40~60Ω

差分匹配电阻

80~120Ω

差分对间偏差

≤20ns

5G是8ns,8G是6ns

2)5G的电气规范

5G的RX要求分2种情况,一是TX和RX共用100MHz参考时钟,另外一个是数据嵌入式时钟。

眼图模板如下:

共用参考时钟的参数如下:

数据嵌入式时钟的参数如下:

3)8G的RX测试

RX主要进行容限测试,测试环境如下:

主要原理是校准通道和疏导通道模拟实际走线,信号发生器模拟TX,首先调整在TP2P位置测得的压力眼图(有2种眼图,分别测试电压和抖动,具体如Table 4-22和4-23),然后切换到#2通道将信号发送给RX,然后测试BER误码率要求小于10的-12次方。

校准通道提供了3种,代表了真实情况遇到的最小到最大插损信道的情况:

针对最短校准通道和中间校准通道,RX只能使用一阶CTLE均衡;针对最长的校准通道,RX可以使用一阶CTLE均衡和1tap的DFE均衡。

其中CTLE均衡的传递函数:

Adc是指DC增益,协议规定可以在-6dB和-12dB之间以1dB的步长调节。曲线如下:

DFE均衡的框图如下:

4)参考时钟

参考时钟Refclk的频率是100MHz,其功能不是数据时钟同步,而是给内部控制器的时钟。主要有三种模式:

共享参考时钟的具体参数要求如下:

嵌入式参考时钟参数要求:

独立的参考时钟要求就是两个时钟都是±300ppm。

三种参考时钟对比:

类型

优点

缺点

备注

共享参考时钟

1)收发侧的时钟抖动jitter都是相同的,因此便于跟踪和计算

2)低功耗模式仍然可用,防止PLL偏移

时钟偏差要控制在12ns以内,对比较大的板卡或跨板等情况的实现有很大挑战

稳定性好,应用最广泛

独立参考时钟

独立提供时钟,完全不受PCB布局、走线长度的影响

现在没有方案可以确定对端参考时钟是否开启SSC,影响抖动计算

嵌入式参考时钟

实现简单

PCIE4.0取消了本方案

不推荐

三、S参数要求

协议规定了芯片内的差分回损SDD11,具体如下:

具体大小如下参数要求:

协议同样要求共模回损SCC11,具体如下:

具体大小如下参数要求(注意RX的参数和图对应不上,不确定是图仅画出了TX没有包含RX,还是参数写错了):

测试方法也是通过疏导通道的SMA头连接网分进行,不过测试结果通过去嵌来排除疏导通道的影响。

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

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

相关文章

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本:22.04.3 位数:64-bit 二…

其实解决问题的方法很简单

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步! 本例是一个动态数组的例子,实现数据的增加、删除、根据索引修改数值、获取数值。 dynamic_array.c #include "dy…

redis-stack部署概要

第一步,下载redis-stack 下载链接:Downloads - Redis 第二步,redis安装包解压缩 gzip -d redis-stack-server-7.2.0-v10.rhel8.x86_64.tar.gz tar -xvf redis-stack-server-7.2.0-v10.rhel8.x86_64.tar 第三步,编辑etc下的redis…

centos无法联网解决方案(9步完成

1.打开终端,输入 su - root 进入到管理员模式(-的前后都有空格哈) 切换后,显示的就是root... 2.. ,输入命令ip addr 2. 切换当前目录 cd /etc/sysconfig/network-scripts/ 3.输入命令,打开文件 vi /etc…

【C/C++】设计模式——工厂模式:简单工厂、工厂方法、抽象工厂

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

高通QCS6490开发(四):FV01 AI开发板系统烧录

本期主要介绍如何在FV01开发板上烧录镜像 所用硬件有&#xff1a; FV01开发板和type C线 操作步骤如下&#xff1a; 首先连接电源线开机&#xff0c;然后通过Type C线连接FV01开发板和PC&#xff0c;接线如下&#xff1a; 1&#xff09;将设备通过如下命令进入到EDL紧急下载…

C++ 计时器

文章目录 一、简介二、实现代码2.1 windows平台2.2 C标准库 三、实现效果 一、简介 有时候总是会用到一些计时的操作&#xff0c;这里也整理了一些代码&#xff0c;包括C标准库以及window自带的时间计算函数。 二、实现代码 2.1 windows平台 StopWatch.h #ifndef STOP_WATCH_H…

开源的图形化Windows软件安装升级方案:WingetUI

WingetUI&#xff1a;简化数字生活&#xff0c;WingetUI让软件管理轻松便捷- 精选真开源&#xff0c;释放新价值。 概览 WingetUI是在GitHub上开发的一个实用工具&#xff0c;专为Windows用户设计&#xff0c;旨在为常见的命令行包管理工具&#xff08;如Winget、Scoop、Pip、…

计算机毕业设计hadoop+hive+hbase学情分析 在线教育大数据 课程推荐系统 机器学习 深度学习 人工智能 大数据毕业设计 知识图谱

毕 业 设 计&#xff08;论 文&#xff09;开 题 报 告 1&#xff0e;结合毕业设计&#xff08;论文&#xff09;课题情况&#xff0c;根据所查阅的文献资料&#xff0c;每人撰写不少于1000字的文献综述&#xff1a; 一、研究背景和意义 “互联网”和大数据带来了网络教育的蓬…

API数据对接:本地缓存与日志记录的重要性

关键词&#xff1a;数据治理项目、API接口、数据中心、第三方系统、数据异常、本地缓存、日志记录、数据整合、多源异构数据、数据处理效率 阅读建议&#xff1a; 对于数据治理、API接口和系统集成领域的专业人士&#xff0c;本文深入剖析了本地缓存和日志记录在确保系统稳定性…

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…

系统架构师考试(一)

瀑布模型&#xff08;SDLC&#xff09; 特点&#xff1a; 1、严格区分阶段&#xff0c;每个阶段因果关系紧密相连 2、只适合需求明确的项目 需求分析之后会产出软件需求规格说明书SRS 但是这个模型失败概率到95%&#xff0c;有以下缺陷&#xff1a; 它只适合需求明确的项目…

Spring Boot | Spring Boot 中 自定义“用户退出控制“、获取“登录用户信息“

目录: 一、SpringBoot 中 自定义 "用户授权管理" ( 总体内容介绍 ) :二、 自定义 "用户退出控制" ( 通过 "HttpSecurity类" 的 logout( )方法来实现 "自定义用户用户登录控制" ) :1.基础项目文件准备2.实现 "自定义身份认证"…

Java入门基础学习笔记25——死循环和循环嵌套

死循环&#xff1a; 可以一直执行下去的一种循环&#xff0c;如果没有干预不会停下来。 死循环的写法&#xff1a; 例&#xff1a; package cn.ensource.loop;public class EndLessLoopDemo5 {public static void main(String[] args) {// 目标&#xff1b;掌握死循环的写法w…

GitHub配置SSH协议|什么是SSH

前言 之前用云服务器和GitHub的时候&#xff0c;因为比较懒一直没有配置过ssh。随着最近项目的迫在眉睫&#xff0c;通过Vs Code链接服务器和从GitHub白嫖代码的频率的大幅增加&#xff0c;拒绝接触新事物鼠鼠我只好转求ssh。此篇文章记录了我自己创建ssh密钥、配置ssh密钥的步…

什么是网络端口?为什么会有高危端口?

一、什么是网络端口&#xff1f; 网络技术中的端口默认指的是TCP/IP协议中的服务端口&#xff0c;一共有0-65535个端口&#xff0c;比如我们最常见的端口是80端口默认访问网站的端口就是80&#xff0c;你直接在浏览器打开&#xff0c;会发现浏览器默认把80去掉&#xff0c;就是…

python批量生成防伪识别二维码

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 二维码(QR Code)是一种矩阵条码技术,它使用黑白矩形图案来表示二进制数据,这些矩形图案可以被设备扫描并解读。二维码可以被用来存储

Spring数据访问全攻略:从JdbcTemplate到声明式事务

上文讲到 —— 航向数据之海&#xff1a;Spring的JPA与Hibernate秘籍 本文目录 四. JdbcTemplate的使用定义JdbcTemplate及其在Spring中的作用展示如何使用JdbcTemplate简化数据库操作1. 配置JdbcTemplate2. 使用JdbcTemplate查询数据3. 打印查询结果 五. Spring的事务管理介绍…

Linux进程(三) --- 状态和优先级

运行&#xff0c;阻塞&#xff0c;挂起 运行 (Running) 当一个进程处于运行状态时&#xff0c;它正在使用CPU执行指令。进程在以下两种情况下可能被认为是运行状态&#xff1a; 实际运行&#xff08;Running on CPU&#xff09;&#xff1a; 进程当前正在CPU上执行。可运行&…

ES6之数值的扩展

1. 数值的扩展 1.1. 二进制和八进制字面量表示:1.2. 数值判断方法: 1.2.1. Number.isFinite() 检查一个值是否为有限的数值。1.2.2. Number.isNaN() 更准确地检测NaN值。1.2.3. 传统的全局方法 isFinite() 和 isNaN() 的区别 1.3. 数值转换方法:1.4. 整数检查与精度: 1.4.1. Nu…